diff --git a/InvenTree/InvenTree/helpers.py b/InvenTree/InvenTree/helpers.py
index a39775b785..a01edef106 100644
--- a/InvenTree/InvenTree/helpers.py
+++ b/InvenTree/InvenTree/helpers.py
@@ -475,7 +475,6 @@ def extract_serial_numbers(serials, expected_quantity, next_number: int):
continue
else:
errors.append(_("Invalid group: {g}").format(g=group))
- continue
# plus signals either
# 1: 'start+': expected number of serials, starting at start
@@ -500,7 +499,6 @@ def extract_serial_numbers(serials, expected_quantity, next_number: int):
# no case
else:
errors.append(_("Invalid group: {g}").format(g=group))
- continue
# Group should be a number
elif group:
diff --git a/InvenTree/locale/de/LC_MESSAGES/django.po b/InvenTree/locale/de/LC_MESSAGES/django.po
index 5561686714..640df9a958 100644
--- a/InvenTree/locale/de/LC_MESSAGES/django.po
+++ b/InvenTree/locale/de/LC_MESSAGES/django.po
@@ -3,8 +3,8 @@ msgid ""
msgstr ""
"Project-Id-Version: inventree\n"
"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2022-01-29 00:17+0000\n"
-"PO-Revision-Date: 2022-01-29 01:11\n"
+"POT-Creation-Date: 2022-02-18 20:36+0000\n"
+"PO-Revision-Date: 2022-02-19 14:45\n"
"Last-Translator: \n"
"Language-Team: German\n"
"Language: de_DE\n"
@@ -34,9 +34,9 @@ msgstr "Keine passende Aktion gefunden"
msgid "Enter date"
msgstr "Datum eingeben"
-#: InvenTree/forms.py:126 build/forms.py:48 build/forms.py:69 order/forms.py:24
-#: order/forms.py:35 order/forms.py:46 order/forms.py:57
-#: templates/account/email_confirm.html:20 templates/js/translated/forms.js:595
+#: InvenTree/forms.py:126 order/forms.py:24 order/forms.py:35 order/forms.py:46
+#: order/forms.py:57 templates/account/email_confirm.html:20
+#: templates/js/translated/forms.js:596
msgid "Confirm"
msgstr "Bestätigen"
@@ -86,7 +86,7 @@ msgid "Duplicate serial: {n}"
msgstr "Doppelte Seriennummer: {n}"
#: InvenTree/helpers.py:446 order/models.py:282 order/models.py:425
-#: stock/views.py:1231
+#: stock/views.py:1082
msgid "Invalid quantity provided"
msgstr "Keine gültige Menge"
@@ -119,133 +119,133 @@ msgstr "Keine Seriennummern gefunden"
msgid "Number of unique serial number ({s}) must match quantity ({q})"
msgstr "Anzahl der eindeutigen Seriennummern ({s}) muss mit der Anzahl ({q}) übereinstimmen"
-#: InvenTree/models.py:120
+#: InvenTree/models.py:176
msgid "Missing file"
msgstr "Fehlende Datei"
-#: InvenTree/models.py:121
+#: InvenTree/models.py:177
msgid "Missing external link"
msgstr "Fehlender externer Link"
-#: InvenTree/models.py:132 stock/models.py:1995
+#: InvenTree/models.py:188 stock/models.py:1995
#: templates/js/translated/attachment.js:119
msgid "Attachment"
msgstr "Anhang"
-#: InvenTree/models.py:133
+#: InvenTree/models.py:189
msgid "Select file to attach"
msgstr "Datei zum Anhängen auswählen"
-#: InvenTree/models.py:139 company/models.py:131 company/models.py:348
-#: company/models.py:564 order/models.py:127 part/models.py:830
+#: InvenTree/models.py:195 company/models.py:131 company/models.py:348
+#: company/models.py:564 order/models.py:127 part/models.py:860
#: report/templates/report/inventree_build_order_base.html:165
#: templates/js/translated/company.js:540
#: templates/js/translated/company.js:829 templates/js/translated/part.js:1324
msgid "Link"
msgstr "Link"
-#: InvenTree/models.py:140 build/models.py:332 part/models.py:831
+#: InvenTree/models.py:196 build/models.py:332 part/models.py:861
#: stock/models.py:529
msgid "Link to external URL"
msgstr "Link zu einer externen URL"
-#: InvenTree/models.py:143 templates/js/translated/attachment.js:163
+#: InvenTree/models.py:199 templates/js/translated/attachment.js:163
msgid "Comment"
msgstr "Kommentar"
-#: InvenTree/models.py:143
+#: InvenTree/models.py:199
msgid "File comment"
msgstr "Datei-Kommentar"
-#: InvenTree/models.py:149 InvenTree/models.py:150 common/models.py:1223
-#: common/models.py:1224 common/models.py:1452 common/models.py:1453
-#: part/models.py:2265 part/models.py:2285
+#: InvenTree/models.py:205 InvenTree/models.py:206 common/models.py:1235
+#: common/models.py:1236 common/models.py:1464 common/models.py:1465
+#: part/models.py:2301 part/models.py:2321
#: report/templates/report/inventree_test_report_base.html:96
-#: templates/js/translated/stock.js:2692
+#: templates/js/translated/stock.js:2816
msgid "User"
msgstr "Benutzer"
-#: InvenTree/models.py:153
+#: InvenTree/models.py:209
msgid "upload date"
msgstr "Hochladedatum"
-#: InvenTree/models.py:176
+#: InvenTree/models.py:232
msgid "Filename must not be empty"
msgstr "Dateiname darf nicht leer sein"
-#: InvenTree/models.py:199
+#: InvenTree/models.py:255
msgid "Invalid attachment directory"
msgstr "Ungültiges Verzeichnis für Anhang"
-#: InvenTree/models.py:209
+#: InvenTree/models.py:265
#, python-brace-format
msgid "Filename contains illegal character '{c}'"
msgstr "Dateiname enthält ungültiges Zeichen '{c}'"
-#: InvenTree/models.py:212
+#: InvenTree/models.py:268
msgid "Filename missing extension"
msgstr "Dateiendung fehlt"
-#: InvenTree/models.py:219
+#: InvenTree/models.py:275
msgid "Attachment with this filename already exists"
msgstr "Anhang mit diesem Dateinamen bereits vorhanden"
-#: InvenTree/models.py:226
+#: InvenTree/models.py:282
msgid "Error renaming file"
msgstr "Fehler beim Umbenennen"
-#: InvenTree/models.py:261
+#: InvenTree/models.py:317
msgid "Invalid choice"
msgstr "Ungültige Auswahl"
-#: InvenTree/models.py:277 InvenTree/models.py:278 common/models.py:1438
-#: company/models.py:415 label/models.py:112 part/models.py:774
-#: part/models.py:2449 plugin/models.py:40 report/models.py:181
+#: InvenTree/models.py:333 InvenTree/models.py:334 common/models.py:1450
+#: company/models.py:415 label/models.py:112 part/models.py:804
+#: part/models.py:2485 plugin/models.py:40 report/models.py:181
#: templates/InvenTree/settings/mixins/urls.html:13
#: templates/InvenTree/settings/plugin.html:48
#: templates/InvenTree/settings/plugin.html:125
#: templates/InvenTree/settings/plugin_settings.html:23
-#: templates/InvenTree/settings/settings.html:282
+#: templates/InvenTree/settings/settings.html:319
#: templates/js/translated/company.js:641 templates/js/translated/part.js:567
#: templates/js/translated/part.js:706 templates/js/translated/part.js:1631
-#: templates/js/translated/stock.js:2485
+#: templates/js/translated/stock.js:2609
msgid "Name"
msgstr "Name"
-#: InvenTree/models.py:284 build/models.py:209
+#: InvenTree/models.py:340 build/models.py:209
#: build/templates/build/detail.html:25 company/models.py:354
#: company/models.py:570 company/templates/company/company_base.html:68
#: company/templates/company/manufacturer_part.html:76
#: company/templates/company/supplier_part.html:73 label/models.py:119
-#: order/models.py:125 part/models.py:797 part/templates/part/category.html:74
+#: order/models.py:125 part/models.py:827 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:93
#: templates/InvenTree/settings/plugin_settings.html:33
-#: templates/js/translated/bom.js:339 templates/js/translated/bom.js:552
-#: templates/js/translated/build.js:1682 templates/js/translated/company.js:345
+#: templates/js/translated/bom.js:552 templates/js/translated/bom.js:765
+#: templates/js/translated/build.js:1920 templates/js/translated/company.js:345
#: templates/js/translated/company.js:551
#: templates/js/translated/company.js:840 templates/js/translated/order.js:836
#: templates/js/translated/order.js:1019 templates/js/translated/order.js:1258
#: templates/js/translated/part.js:626 templates/js/translated/part.js:999
#: templates/js/translated/part.js:1084 templates/js/translated/part.js:1254
#: templates/js/translated/part.js:1650 templates/js/translated/part.js:1719
-#: templates/js/translated/stock.js:1577 templates/js/translated/stock.js:2314
-#: templates/js/translated/stock.js:2497 templates/js/translated/stock.js:2542
+#: templates/js/translated/stock.js:1701 templates/js/translated/stock.js:2438
+#: templates/js/translated/stock.js:2621 templates/js/translated/stock.js:2666
msgid "Description"
msgstr "Beschreibung"
-#: InvenTree/models.py:285
+#: InvenTree/models.py:341
msgid "Description (optional)"
msgstr "Beschreibung (optional)"
-#: InvenTree/models.py:293
+#: InvenTree/models.py:349
msgid "parent"
msgstr "Eltern"
-#: InvenTree/serializers.py:65 part/models.py:2734
+#: InvenTree/serializers.py:65 part/models.py:2803
msgid "Must be a valid number"
msgstr "Muss eine gültige Nummer sein"
@@ -253,83 +253,127 @@ msgstr "Muss eine gültige Nummer sein"
msgid "Filename"
msgstr "Dateiname"
-#: InvenTree/settings.py:661
+#: InvenTree/serializers.py:334
+msgid "Invalid value"
+msgstr "Ungültiger Wert"
+
+#: InvenTree/serializers.py:355
+msgid "Data File"
+msgstr "Datendatei"
+
+#: InvenTree/serializers.py:356
+msgid "Select data file for upload"
+msgstr "Neue Datei zum Hochladen auswählen"
+
+#: InvenTree/serializers.py:380
+msgid "Unsupported file type"
+msgstr "Nicht unterstütztes Dateiformat"
+
+#: InvenTree/serializers.py:386
+msgid "File is too large"
+msgstr "Datei ist zu groß"
+
+#: InvenTree/serializers.py:407
+msgid "No columns found in file"
+msgstr "Keine Spalten in der Datei gefunden"
+
+#: InvenTree/serializers.py:410
+msgid "No data rows found in file"
+msgstr "Keine Datensätze in der Datei gefunden"
+
+#: InvenTree/serializers.py:533
+msgid "No data rows provided"
+msgstr "Keine Zeilen ausgewählt"
+
+#: InvenTree/serializers.py:536
+msgid "No data columns supplied"
+msgstr "Keine Spalten angegeben"
+
+#: InvenTree/serializers.py:623
+msgid "Missing required column"
+msgstr "Erforderliche Spalte fehlt"
+
+#: InvenTree/serializers.py:632
+msgid "Duplicate column"
+msgstr "Doppelte Spalte"
+
+#: InvenTree/settings.py:655
msgid "German"
msgstr "Deutsch"
-#: InvenTree/settings.py:662
+#: InvenTree/settings.py:656
msgid "Greek"
msgstr "Griechisch"
-#: InvenTree/settings.py:663
+#: InvenTree/settings.py:657
msgid "English"
msgstr "Englisch"
-#: InvenTree/settings.py:664
+#: InvenTree/settings.py:658
msgid "Spanish"
msgstr "Spanisch"
-#: InvenTree/settings.py:665
+#: InvenTree/settings.py:659
msgid "Spanish (Mexican)"
msgstr "Spanisch (Mexikanisch)"
-#: InvenTree/settings.py:666
+#: InvenTree/settings.py:660
msgid "French"
msgstr "Französisch"
-#: InvenTree/settings.py:667
+#: InvenTree/settings.py:661
msgid "Hebrew"
msgstr "Hebräisch"
-#: InvenTree/settings.py:668
+#: InvenTree/settings.py:662
msgid "Italian"
msgstr "Italienisch"
-#: InvenTree/settings.py:669
+#: InvenTree/settings.py:663
msgid "Japanese"
msgstr "Japanisch"
-#: InvenTree/settings.py:670
+#: InvenTree/settings.py:664
msgid "Korean"
msgstr "Koreanisch"
-#: InvenTree/settings.py:671
+#: InvenTree/settings.py:665
msgid "Dutch"
msgstr "Niederländisch"
-#: InvenTree/settings.py:672
+#: InvenTree/settings.py:666
msgid "Norwegian"
msgstr "Norwegisch"
-#: InvenTree/settings.py:673
+#: InvenTree/settings.py:667
msgid "Polish"
msgstr "Polnisch"
-#: InvenTree/settings.py:674
+#: InvenTree/settings.py:668
msgid "Portugese"
msgstr "Portugiesisch"
-#: InvenTree/settings.py:675
+#: InvenTree/settings.py:669
msgid "Russian"
msgstr "Russisch"
-#: InvenTree/settings.py:676
+#: InvenTree/settings.py:670
msgid "Swedish"
msgstr "Schwedisch"
-#: InvenTree/settings.py:677
+#: InvenTree/settings.py:671
msgid "Thai"
msgstr "Thailändisch"
-#: InvenTree/settings.py:678
+#: InvenTree/settings.py:672
msgid "Turkish"
msgstr "Türkisch"
-#: InvenTree/settings.py:679
+#: InvenTree/settings.py:673
msgid "Vietnamese"
msgstr "Vietnamesisch"
-#: InvenTree/settings.py:680
+#: InvenTree/settings.py:674
msgid "Chinese"
msgstr "Chinesisch"
@@ -346,7 +390,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:316 templates/js/translated/table_filters.js:313
+#: InvenTree/status_codes.py:316 templates/js/translated/table_filters.js:308
msgid "Pending"
msgstr "Ausstehend"
@@ -456,7 +500,7 @@ msgstr "Vom übergeordneten Element geteilt"
msgid "Split child item"
msgstr "Unterobjekt geteilt"
-#: InvenTree/status_codes.py:294 templates/js/translated/stock.js:2072
+#: InvenTree/status_codes.py:294 templates/js/translated/stock.js:2196
msgid "Merged stock items"
msgstr "Lagerartikel zusammengeführt"
@@ -484,41 +528,41 @@ msgstr "Gegen Bestellung empfangen"
msgid "Production"
msgstr "in Arbeit"
-#: InvenTree/validators.py:23
+#: InvenTree/validators.py:25
msgid "Not a valid currency code"
msgstr "Kein gültiger Währungscode"
-#: InvenTree/validators.py:51
+#: InvenTree/validators.py:53
msgid "Invalid character in part name"
msgstr "Ungültiger Buchstabe im Teilenamen"
-#: InvenTree/validators.py:64
+#: InvenTree/validators.py:66
#, python-brace-format
msgid "IPN must match regex pattern {pat}"
msgstr "IPN muss zu Regex-Muster {pat} passen"
-#: InvenTree/validators.py:78 InvenTree/validators.py:92
-#: InvenTree/validators.py:106
+#: InvenTree/validators.py:80 InvenTree/validators.py:94
+#: InvenTree/validators.py:108
#, python-brace-format
msgid "Reference must match pattern {pattern}"
msgstr "Referenz muss zu Regex-Muster {pattern} passen"
-#: InvenTree/validators.py:114
+#: InvenTree/validators.py:116
#, python-brace-format
msgid "Illegal character in name ({x})"
msgstr "Ungültiges Zeichen im Namen ({x})"
-#: InvenTree/validators.py:133 InvenTree/validators.py:149
+#: InvenTree/validators.py:137 InvenTree/validators.py:153
msgid "Overage value must not be negative"
msgstr "Überschuss-Wert darf nicht negativ sein"
-#: InvenTree/validators.py:151
+#: InvenTree/validators.py:155
msgid "Overage must not exceed 100%"
msgstr "Überschuss darf 100% nicht überschreiten"
-#: InvenTree/validators.py:158
-msgid "Overage must be an integer value or a percentage"
-msgstr "Überschuss muss eine Ganzzahl oder ein Prozentwert sein"
+#: InvenTree/validators.py:162
+msgid "Invalid value for overage"
+msgstr "Ungültiger Wert für Ausschuss"
#: InvenTree/views.py:538
msgid "Delete Item"
@@ -584,69 +628,11 @@ msgstr "Barcode-Hash entspricht bereits einem Lagerartikel"
msgid "Barcode associated with Stock Item"
msgstr "Barcode Lagerartikel zugeordnet"
-#: build/forms.py:36 build/models.py:1293
-#: build/templates/build/build_base.html:82
-#: build/templates/build/detail.html:35 common/models.py:1263
-#: company/forms.py:42 company/templates/company/supplier_part.html:251
-#: order/models.py:805 order/models.py:1229 order/serializers.py:816
-#: order/templates/order/order_wizard/match_parts.html:30
-#: order/templates/order/order_wizard/select_parts.html:34 part/forms.py:144
-#: part/forms.py:160 part/forms.py:176 part/models.py:2636
-#: part/templates/part/bom_upload/match_parts.html:31
-#: part/templates/part/detail.html:992 part/templates/part/detail.html:1078
-#: part/templates/part/part_pricing.html:16
-#: report/templates/report/inventree_build_order_base.html:114
-#: report/templates/report/inventree_po_report.html:91
-#: report/templates/report/inventree_so_report.html:91
-#: report/templates/report/inventree_test_report_base.html:81
-#: report/templates/report/inventree_test_report_base.html:139
-#: stock/forms.py:142 stock/serializers.py:293
-#: stock/templates/stock/item_base.html:181
-#: stock/templates/stock/item_base.html:262
-#: stock/templates/stock/item_base.html:270
-#: templates/js/translated/barcode.js:385 templates/js/translated/bom.js:567
-#: templates/js/translated/build.js:295 templates/js/translated/build.js:495
-#: templates/js/translated/build.js:689 templates/js/translated/build.js:699
-#: templates/js/translated/build.js:1075 templates/js/translated/build.js:1422
-#: templates/js/translated/model_renderers.js:99
-#: templates/js/translated/order.js:101 templates/js/translated/order.js:1056
-#: 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:906
-#: templates/js/translated/part.js:1862 templates/js/translated/part.js:1985
-#: templates/js/translated/part.js:2063 templates/js/translated/stock.js:391
-#: templates/js/translated/stock.js:588 templates/js/translated/stock.js:758
-#: templates/js/translated/stock.js:2677 templates/js/translated/stock.js:2779
-msgid "Quantity"
-msgstr "Anzahl"
-
-#: build/forms.py:37
-msgid "Enter quantity for build output"
-msgstr "Menge der Endprodukte angeben"
-
-#: build/forms.py:41 order/serializers.py:820 stock/forms.py:81
-#: stock/serializers.py:314 templates/js/translated/stock.js:238
-#: templates/js/translated/stock.js:392
-msgid "Serial Numbers"
-msgstr "Seriennummer"
-
-#: build/forms.py:43
-msgid "Enter serial numbers for build outputs"
-msgstr "Seriennummer für dieses Endprodukt eingeben"
-
-#: build/forms.py:49
-msgid "Confirm creation of build output"
-msgstr "Anlage von Endprodukt(en) bestätigen"
-
-#: build/forms.py:70
-msgid "Confirm deletion of build output"
-msgstr "Löschen des Endprodukt bestätigen"
-
-#: build/forms.py:89
+#: build/forms.py:20
msgid "Confirm cancel"
msgstr "Abbruch bestätigen"
-#: build/forms.py:89 build/views.py:65
+#: build/forms.py:20 build/views.py:62
msgid "Confirm build cancellation"
msgstr "Bauabbruch bestätigen"
@@ -657,7 +643,7 @@ msgstr "Ungültige Wahl für übergeordneten Bauauftrag"
#: build/models.py:139 build/templates/build/build_base.html:9
#: build/templates/build/build_base.html:27
#: report/templates/report/inventree_build_order_base.html:106
-#: templates/js/translated/build.js:457 templates/js/translated/stock.js:2290
+#: templates/js/translated/build.js:676 templates/js/translated/stock.js:2414
msgid "Build Order"
msgstr "Bauauftrag"
@@ -665,7 +651,7 @@ msgstr "Bauauftrag"
#: 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
+#: part/templates/part/part_sidebar.html:21 templates/InvenTree/index.html:221
#: templates/InvenTree/search.html:139
#: templates/InvenTree/settings/sidebar.html:43 users/models.py:44
msgid "Build Orders"
@@ -676,11 +662,11 @@ msgid "Build Order Reference"
msgstr "Bauauftragsreferenz"
#: build/models.py:201 order/models.py:213 order/models.py:541
-#: order/models.py:812 part/models.py:2645
-#: part/templates/part/bom_upload/match_parts.html:30
+#: order/models.py:812 part/models.py:2714
+#: part/templates/part/upload_bom.html:54
#: report/templates/report/inventree_po_report.html:92
#: report/templates/report/inventree_so_report.html:92
-#: templates/js/translated/bom.js:559 templates/js/translated/build.js:1179
+#: templates/js/translated/bom.js:772 templates/js/translated/build.js:1401
#: templates/js/translated/order.js:1050 templates/js/translated/order.js:2144
msgid "Reference"
msgstr "Referenz"
@@ -689,7 +675,7 @@ msgstr "Referenz"
msgid "Brief description of the build"
msgstr "Kurze Beschreibung des Baus"
-#: build/models.py:221 build/templates/build/build_base.html:164
+#: build/models.py:221 build/templates/build/build_base.html:169
#: build/templates/build/detail.html:88
msgid "Parent Build"
msgstr "Eltern-Bauauftrag"
@@ -702,30 +688,31 @@ msgstr "Bauauftrag, zu dem dieser Bauauftrag zugwiesen ist"
#: build/templates/build/detail.html:30 company/models.py:705
#: order/models.py:876 order/models.py:950
#: order/templates/order/order_wizard/select_parts.html:32 part/models.py:359
-#: part/models.py:2211 part/models.py:2227 part/models.py:2246
-#: part/models.py:2263 part/models.py:2365 part/models.py:2487
-#: part/models.py:2620 part/models.py:2927 part/serializers.py:658
-#: part/templates/part/part_app_base.html:8
+#: part/models.py:2247 part/models.py:2263 part/models.py:2282
+#: part/models.py:2299 part/models.py:2401 part/models.py:2523
+#: part/models.py:2613 part/models.py:2689 part/models.py:2996
+#: part/serializers.py:666 part/templates/part/part_app_base.html:8
#: part/templates/part/part_pricing.html:12
#: part/templates/part/set_category.html:13
+#: part/templates/part/upload_bom.html:52
#: 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: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:338
-#: templates/js/translated/bom.js:517 templates/js/translated/build.js:680
-#: templates/js/translated/build.js:1048 templates/js/translated/build.js:1419
-#: templates/js/translated/build.js:1687 templates/js/translated/company.js:492
+#: templates/js/translated/barcode.js:383 templates/js/translated/bom.js:551
+#: templates/js/translated/bom.js:730 templates/js/translated/build.js:902
+#: templates/js/translated/build.js:1270 templates/js/translated/build.js:1655
+#: templates/js/translated/build.js:1925 templates/js/translated/company.js:492
#: templates/js/translated/company.js:749 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:984
#: templates/js/translated/part.js:1065 templates/js/translated/part.js:1232
-#: templates/js/translated/stock.js:562 templates/js/translated/stock.js:727
-#: templates/js/translated/stock.js:934 templates/js/translated/stock.js:1534
-#: templates/js/translated/stock.js:2767
+#: templates/js/translated/stock.js:563 templates/js/translated/stock.js:728
+#: templates/js/translated/stock.js:935 templates/js/translated/stock.js:1658
+#: templates/js/translated/stock.js:2891 templates/js/translated/stock.js:2990
msgid "Part"
msgstr "Teil"
@@ -741,7 +728,7 @@ msgstr "Auftrag Referenz"
msgid "SalesOrder to which this build is allocated"
msgstr "Bestellung, die diesem Bauauftrag zugewiesen ist"
-#: build/models.py:249 templates/js/translated/build.js:1407
+#: build/models.py:249 templates/js/translated/build.js:1643
#: templates/js/translated/order.js:1564
msgid "Source Location"
msgstr "Quell-Lagerort"
@@ -782,15 +769,15 @@ msgstr "Bauauftrags-Status"
msgid "Build status code"
msgstr "Bau-Statuscode"
-#: build/models.py:287 stock/models.py:533
+#: build/models.py:287 build/serializers.py:218 stock/models.py:533
msgid "Batch Code"
msgstr "Losnummer"
-#: build/models.py:291
+#: build/models.py:291 build/serializers.py:219
msgid "Batch code for this build output"
msgstr "Losnummer für dieses Endprodukt"
-#: build/models.py:294 order/models.py:129 part/models.py:969
+#: build/models.py:294 order/models.py:129 part/models.py:999
#: part/templates/part/part_base.html:313 templates/js/translated/order.js:1271
msgid "Creation Date"
msgstr "Erstelldatum"
@@ -804,7 +791,7 @@ msgid "Target date for build completion. Build will be overdue after this date."
msgstr "Zieldatum für Bauauftrag-Fertigstellung."
#: build/models.py:302 order/models.py:255
-#: templates/js/translated/build.js:1758
+#: templates/js/translated/build.js:1996
msgid "Completion Date"
msgstr "Fertigstellungsdatum"
@@ -812,7 +799,7 @@ msgstr "Fertigstellungsdatum"
msgid "completed by"
msgstr "Fertiggestellt von"
-#: build/models.py:316 templates/js/translated/build.js:1729
+#: build/models.py:316 templates/js/translated/build.js:1967
msgid "Issued by"
msgstr "Aufgegeben von"
@@ -820,12 +807,12 @@ msgstr "Aufgegeben von"
msgid "User who issued this build order"
msgstr "Nutzer der diesen Bauauftrag erstellt hat"
-#: build/models.py:325 build/templates/build/build_base.html:185
+#: build/models.py:325 build/templates/build/build_base.html:190
#: build/templates/build/detail.html:116 order/models.py:143
#: order/templates/order/order_base.html:170
-#: order/templates/order/sales_order_base.html:182 part/models.py:973
+#: order/templates/order/sales_order_base.html:182 part/models.py:1003
#: report/templates/report/inventree_build_order_base.html:159
-#: templates/js/translated/build.js:1741 templates/js/translated/order.js:864
+#: templates/js/translated/build.js:1979 templates/js/translated/order.js:864
msgid "Responsible"
msgstr "Verantwortlicher Benutzer"
@@ -837,26 +824,26 @@ msgstr "Nutzer der für diesen Bauauftrag zuständig ist"
#: company/templates/company/manufacturer_part.html:102
#: company/templates/company/supplier_part.html:126
#: part/templates/part/part_base.html:354 stock/models.py:527
-#: stock/templates/stock/item_base.html:373
+#: stock/templates/stock/item_base.html:375
msgid "External Link"
msgstr "Externer Link"
-#: build/models.py:336 build/serializers.py:201
+#: build/models.py:336 build/serializers.py:380
#: build/templates/build/sidebar.html:21 company/models.py:142
#: company/models.py:577 company/templates/company/sidebar.html:25
#: order/models.py:147 order/models.py:814 order/models.py:1071
#: order/templates/order/po_sidebar.html:11
-#: order/templates/order/so_sidebar.html:17 part/models.py:958
-#: part/templates/part/detail.html:137 part/templates/part/part_sidebar.html:54
+#: order/templates/order/so_sidebar.html:17 part/models.py:988
+#: part/templates/part/detail.html:140 part/templates/part/part_sidebar.html:57
#: report/templates/report/inventree_build_order_base.html:173
-#: stock/forms.py:140 stock/forms.py:190 stock/forms.py:224 stock/models.py:599
+#: stock/forms.py:137 stock/forms.py:171 stock/models.py:599
#: stock/models.py:1895 stock/models.py:2001 stock/serializers.py:332
-#: stock/serializers.py:640 stock/serializers.py:738 stock/serializers.py:870
+#: stock/serializers.py:697 stock/serializers.py:795 stock/serializers.py:927
#: stock/templates/stock/stock_sidebar.html:25
-#: templates/js/translated/barcode.js:58 templates/js/translated/bom.js:723
+#: templates/js/translated/barcode.js:58 templates/js/translated/bom.js:936
#: templates/js/translated/company.js:845 templates/js/translated/order.js:1149
#: templates/js/translated/order.js:1445 templates/js/translated/order.js:2280
-#: templates/js/translated/stock.js:1317 templates/js/translated/stock.js:1803
+#: templates/js/translated/stock.js:1345 templates/js/translated/stock.js:1927
msgid "Notes"
msgstr "Notizen"
@@ -864,208 +851,284 @@ msgstr "Notizen"
msgid "Extra build notes"
msgstr "Extranotizen für den Bauauftrag"
-#: build/models.py:717
+#: build/models.py:756
msgid "No build output specified"
msgstr "kein Endprodukt angegeben"
-#: build/models.py:720
+#: build/models.py:759
msgid "Build output is already completed"
msgstr "Endprodukt bereits hergstellt"
-#: build/models.py:723
+#: build/models.py:762
msgid "Build output does not match Build Order"
msgstr "Endprodukt stimmt nicht mit dem Bauauftrag überein"
-#: build/models.py:1115
+#: build/models.py:1154
msgid "Build item must specify a build output, as master part is marked as trackable"
msgstr "Bauauftragsposition muss ein Endprodukt festlegen, da der übergeordnete Teil verfolgbar ist"
-#: build/models.py:1124
+#: build/models.py:1163
#, python-brace-format
msgid "Allocated quantity ({q}) must not execed available stock quantity ({a})"
msgstr "Zugewiesene Menge ({q}) darf nicht verfügbare Menge ({a}) übersteigen"
-#: build/models.py:1134
+#: build/models.py:1173
msgid "Stock item is over-allocated"
msgstr "BestandObjekt ist zu oft zugewiesen"
-#: build/models.py:1140 order/models.py:1189
+#: build/models.py:1179 order/models.py:1189
msgid "Allocation quantity must be greater than zero"
msgstr "Reserviermenge muss größer null sein"
-#: build/models.py:1146
+#: build/models.py:1185
msgid "Quantity must be 1 for serialized stock"
msgstr "Anzahl muss 1 für Objekte mit Seriennummer sein"
-#: build/models.py:1203
+#: build/models.py:1242
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:1263 stock/templates/stock/item_base.html:345
-#: templates/InvenTree/search.html:137 templates/js/translated/build.js:1660
+#: build/models.py:1302 stock/templates/stock/item_base.html:347
+#: templates/InvenTree/search.html:137 templates/js/translated/build.js:1898
#: templates/navbar.html:35
msgid "Build"
msgstr "Bauauftrag"
-#: build/models.py:1264
+#: build/models.py:1303
msgid "Build to allocate parts"
msgstr "Bauauftrag starten um Teile zuzuweisen"
-#: build/models.py:1280 build/serializers.py:388 order/serializers.py:696
-#: order/serializers.py:714 stock/serializers.py:578 stock/serializers.py:696
-#: stock/templates/stock/item_base.html:9
+#: build/models.py:1319 build/serializers.py:570 order/serializers.py:696
+#: order/serializers.py:714 stock/serializers.py:404 stock/serializers.py:635
+#: stock/serializers.py:753 stock/templates/stock/item_base.html:9
#: stock/templates/stock/item_base.html:23
-#: stock/templates/stock/item_base.html:367
-#: templates/js/translated/build.js:468 templates/js/translated/build.js:473
-#: templates/js/translated/build.js:1421 templates/js/translated/build.js:1803
+#: stock/templates/stock/item_base.html:369
+#: templates/js/translated/build.js:687 templates/js/translated/build.js:692
+#: templates/js/translated/build.js:1657 templates/js/translated/build.js:2041
#: 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:563 templates/js/translated/stock.js:728
-#: templates/js/translated/stock.js:2628
+#: templates/js/translated/stock.js:564 templates/js/translated/stock.js:729
+#: templates/js/translated/stock.js:2752
msgid "Stock Item"
msgstr "Lagerartikel"
-#: build/models.py:1281
+#: build/models.py:1320
msgid "Source stock item"
msgstr "Quell-Lagerartikel"
-#: build/models.py:1294
+#: build/models.py:1332 build/serializers.py:188
+#: build/templates/build/build_base.html:82
+#: build/templates/build/detail.html:35 common/models.py:1275
+#: company/forms.py:42 company/templates/company/supplier_part.html:251
+#: order/models.py:805 order/models.py:1229 order/serializers.py:816
+#: order/templates/order/order_wizard/match_parts.html:30
+#: order/templates/order/order_wizard/select_parts.html:34 part/forms.py:144
+#: part/forms.py:160 part/forms.py:176 part/models.py:2705
+#: part/templates/part/detail.html:995 part/templates/part/detail.html:1081
+#: part/templates/part/part_pricing.html:16
+#: part/templates/part/upload_bom.html:53
+#: report/templates/report/inventree_build_order_base.html:114
+#: report/templates/report/inventree_po_report.html:91
+#: report/templates/report/inventree_so_report.html:91
+#: report/templates/report/inventree_test_report_base.html:81
+#: report/templates/report/inventree_test_report_base.html:139
+#: stock/forms.py:139 stock/serializers.py:293
+#: stock/templates/stock/item_base.html:183
+#: stock/templates/stock/item_base.html:264
+#: stock/templates/stock/item_base.html:272
+#: templates/js/translated/barcode.js:385 templates/js/translated/bom.js:780
+#: templates/js/translated/build.js:375 templates/js/translated/build.js:523
+#: templates/js/translated/build.js:714 templates/js/translated/build.js:911
+#: templates/js/translated/build.js:921 templates/js/translated/build.js:1297
+#: templates/js/translated/build.js:1658
+#: templates/js/translated/model_renderers.js:99
+#: templates/js/translated/order.js:101 templates/js/translated/order.js:1056
+#: 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:906
+#: templates/js/translated/part.js:1862 templates/js/translated/part.js:1985
+#: templates/js/translated/part.js:2063 templates/js/translated/stock.js:392
+#: templates/js/translated/stock.js:589 templates/js/translated/stock.js:759
+#: templates/js/translated/stock.js:2801 templates/js/translated/stock.js:2903
+msgid "Quantity"
+msgstr "Anzahl"
+
+#: build/models.py:1333
msgid "Stock quantity to allocate to build"
msgstr "Anzahl an Lagerartikel dem Bauauftrag zuweisen"
-#: build/models.py:1302
+#: build/models.py:1341
msgid "Install into"
msgstr "Installiere in"
-#: build/models.py:1303
+#: build/models.py:1342
msgid "Destination stock item"
msgstr "Ziel-Lagerartikel"
-#: build/serializers.py:137 build/serializers.py:417
+#: build/serializers.py:138 build/serializers.py:599
msgid "Build Output"
msgstr "Endprodukt"
-#: build/serializers.py:146
+#: build/serializers.py:150
msgid "Build output does not match the parent build"
msgstr "Endprodukt stimmt nicht mit übergeordnetem Bauauftrag überein"
-#: build/serializers.py:150
+#: build/serializers.py:154
msgid "Output part does not match BuildOrder part"
msgstr "Endprodukt entspricht nicht dem Teil des Bauauftrags"
-#: build/serializers.py:154
+#: build/serializers.py:158
msgid "This build output has already been completed"
msgstr "Dieses Endprodukt wurde bereits fertiggestellt"
-#: build/serializers.py:158
+#: build/serializers.py:164
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:731
-#: stock/serializers.py:972 stock/templates/stock/item_base.html:313
-#: templates/js/translated/barcode.js:384
-#: templates/js/translated/barcode.js:557 templates/js/translated/build.js:480
-#: templates/js/translated/build.js:1087 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:179 templates/js/translated/stock.js:564
-#: templates/js/translated/stock.js:729 templates/js/translated/stock.js:936
-#: templates/js/translated/stock.js:1684 templates/js/translated/stock.js:2569
-msgid "Location"
-msgstr "Lagerort"
+#: build/serializers.py:189
+msgid "Enter quantity for build output"
+msgstr "Menge der Endprodukte angeben"
-#: build/serializers.py:191
-msgid "Location for completed build outputs"
-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:557
-#: order/serializers.py:247 stock/templates/stock/item_base.html:187
-#: templates/js/translated/barcode.js:140 templates/js/translated/build.js:1716
-#: templates/js/translated/order.js:591 templates/js/translated/order.js:840
-#: templates/js/translated/order.js:1263 templates/js/translated/stock.js:1659
-#: templates/js/translated/stock.js:2646 templates/js/translated/stock.js:2795
-msgid "Status"
-msgstr "Status"
-
-#: build/serializers.py:213
-msgid "A list of build outputs must be provided"
-msgstr "Eine Liste von Endprodukten muss angegeben werden"
-
-#: build/serializers.py:249
-msgid "Accept Unallocated"
-msgstr ""
-
-#: build/serializers.py:250
-msgid "Accept that stock items have not been fully allocated to this build order"
-msgstr ""
-
-#: build/serializers.py:260 templates/js/translated/build.js:149
-msgid "Required stock has not been fully allocated"
-msgstr "Benötigter Bestand wurde nicht vollständig zugewiesen"
-
-#: build/serializers.py:265
-msgid "Accept Incomplete"
-msgstr ""
-
-#: build/serializers.py:266
-msgid "Accept that the required number of build outputs have not been completed"
-msgstr ""
-
-#: build/serializers.py:276 templates/js/translated/build.js:153
-msgid "Required build quantity has not been completed"
-msgstr "Benötigte Teil-Anzahl wurde noch nicht fertiggestellt"
-
-#: build/serializers.py:285
-msgid "Build order has incomplete outputs"
-msgstr ""
-
-#: build/serializers.py:313 build/serializers.py:362 part/models.py:2760
-#: part/models.py:2919
-msgid "BOM Item"
-msgstr "Stücklisten-Position"
-
-#: build/serializers.py:323
-msgid "Build output"
-msgstr "Endprodukt"
-
-#: build/serializers.py:332
-msgid "Build output must point to the same build"
-msgstr "Endprodukt muss auf den gleichen Bauauftrag verweisen"
-
-#: build/serializers.py:379
-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:394 stock/serializers.py:585
-msgid "Item must be in stock"
-msgstr "Teil muss auf Lager sein"
-
-#: build/serializers.py:408 order/models.py:280 order/serializers.py:240
+#: build/serializers.py:201 build/serializers.py:590 order/models.py:280
+#: order/serializers.py:240 part/serializers.py:471 part/serializers.py:827
#: stock/models.py:367 stock/models.py:1105 stock/serializers.py:305
msgid "Quantity must be greater than zero"
msgstr "Anzahl muss größer Null sein"
-#: build/serializers.py:450 order/serializers.py:747
+#: build/serializers.py:208
+msgid "Integer quantity required for trackable parts"
+msgstr ""
+
+#: build/serializers.py:211
+msgid "Integer quantity required, as the bill of materials contains trackable parts"
+msgstr ""
+
+#: build/serializers.py:225 order/serializers.py:820 stock/forms.py:78
+#: stock/serializers.py:314 templates/js/translated/stock.js:239
+#: templates/js/translated/stock.js:393
+msgid "Serial Numbers"
+msgstr "Seriennummer"
+
+#: build/serializers.py:226
+msgid "Enter serial numbers for build outputs"
+msgstr "Seriennummer für dieses Endprodukt eingeben"
+
+#: build/serializers.py:239
+msgid "Auto Allocate Serial Numbers"
+msgstr ""
+
+#: build/serializers.py:240
+msgid "Automatically allocate required items with matching serial numbers"
+msgstr ""
+
+#: build/serializers.py:274 stock/api.py:551
+msgid "The following serial numbers already exist"
+msgstr ""
+
+#: build/serializers.py:327 build/serializers.py:392
+msgid "A list of build outputs must be provided"
+msgstr "Eine Liste von Endprodukten muss angegeben werden"
+
+#: build/serializers.py:369 order/serializers.py:226 order/serializers.py:294
+#: stock/forms.py:169 stock/serializers.py:325 stock/serializers.py:788
+#: stock/serializers.py:1029 stock/templates/stock/item_base.html:315
+#: templates/js/translated/barcode.js:384
+#: templates/js/translated/barcode.js:557 templates/js/translated/build.js:699
+#: templates/js/translated/build.js:1309 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:179 templates/js/translated/stock.js:565
+#: templates/js/translated/stock.js:730 templates/js/translated/stock.js:937
+#: templates/js/translated/stock.js:1808 templates/js/translated/stock.js:2693
+msgid "Location"
+msgstr "Lagerort"
+
+#: build/serializers.py:370
+msgid "Location for completed build outputs"
+msgstr "Lagerort für fertige Endprodukte"
+
+#: build/serializers.py:376 build/templates/build/build_base.html:142
+#: build/templates/build/detail.html:63 order/models.py:557
+#: order/serializers.py:247 stock/templates/stock/item_base.html:189
+#: templates/js/translated/barcode.js:140 templates/js/translated/build.js:1954
+#: templates/js/translated/order.js:591 templates/js/translated/order.js:840
+#: templates/js/translated/order.js:1263 templates/js/translated/stock.js:1783
+#: templates/js/translated/stock.js:2770 templates/js/translated/stock.js:2919
+msgid "Status"
+msgstr "Status"
+
+#: build/serializers.py:428
+msgid "Accept Unallocated"
+msgstr ""
+
+#: build/serializers.py:429
+msgid "Accept that stock items have not been fully allocated to this build order"
+msgstr "Akzeptieren, dass Lagerartikel diesem Bauauftrag nicht vollständig zugewiesen wurden"
+
+#: build/serializers.py:439 templates/js/translated/build.js:150
+msgid "Required stock has not been fully allocated"
+msgstr "Benötigter Bestand wurde nicht vollständig zugewiesen"
+
+#: build/serializers.py:444
+msgid "Accept Incomplete"
+msgstr ""
+
+#: build/serializers.py:445
+msgid "Accept that the required number of build outputs have not been completed"
+msgstr "Akzeptieren, dass die erforderliche Anzahl der Bauaufträge nicht abgeschlossen ist"
+
+#: build/serializers.py:455 templates/js/translated/build.js:154
+msgid "Required build quantity has not been completed"
+msgstr "Benötigte Teil-Anzahl wurde noch nicht fertiggestellt"
+
+#: build/serializers.py:464
+msgid "Build order has incomplete outputs"
+msgstr "Bauauftrag hat unvollständige Aufbauten"
+
+#: build/serializers.py:467 build/templates/build/build_base.html:95
+msgid "No build outputs have been created for this build order"
+msgstr ""
+
+#: build/serializers.py:495 build/serializers.py:544 part/models.py:2829
+#: part/models.py:2988
+msgid "BOM Item"
+msgstr "Stücklisten-Position"
+
+#: build/serializers.py:505
+msgid "Build output"
+msgstr "Endprodukt"
+
+#: build/serializers.py:514
+msgid "Build output must point to the same build"
+msgstr "Endprodukt muss auf den gleichen Bauauftrag verweisen"
+
+#: build/serializers.py:561
+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:576 stock/serializers.py:642
+msgid "Item must be in stock"
+msgstr "Teil muss auf Lager sein"
+
+#: build/serializers.py:632 order/serializers.py:747
#, python-brace-format
msgid "Available quantity ({q}) exceeded"
msgstr "Verfügbare Menge ({q}) überschritten"
-#: build/serializers.py:456
+#: build/serializers.py:638
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:463
+#: build/serializers.py:645
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:491 order/serializers.py:990
+#: build/serializers.py:673 order/serializers.py:990
msgid "Allocation items must be provided"
msgstr "Zuweisungen müssen angegeben werden"
-#: build/tasks.py:92
+#: build/tasks.py:98
msgid "Stock required for build order"
msgstr "Bestand für Bauauftrag erforderlich"
@@ -1088,7 +1151,7 @@ msgid "Edit Build"
msgstr "Bauauftrag bearbeiten"
#: build/templates/build/build_base.html:56
-#: build/templates/build/build_base.html:215 build/views.py:56
+#: build/templates/build/build_base.html:220 build/views.py:53
msgid "Cancel Build"
msgstr "Bauauftrag abbrechen"
@@ -1105,110 +1168,90 @@ msgstr "Bauauftrag fertigstellen"
msgid "Build Description"
msgstr "Baubeschreibung"
-#: build/templates/build/build_base.html:96
+#: build/templates/build/build_base.html:101
#, 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:103
+#: build/templates/build/build_base.html:108
#, 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:110
+#: build/templates/build/build_base.html:115
msgid "Build Order is ready to mark as completed"
msgstr "Bauauftrag ist bereit abgeschlossen zu werden"
-#: build/templates/build/build_base.html:115
+#: build/templates/build/build_base.html:120
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:120
+#: build/templates/build/build_base.html:125
msgid "Required build quantity has not yet been completed"
msgstr "Benötigte Teil-Anzahl wurde noch nicht fertiggestellt"
-#: build/templates/build/build_base.html:125
+#: build/templates/build/build_base.html:130
msgid "Stock has not been fully allocated to this Build Order"
msgstr "Bestand wurde Bauauftrag noch nicht vollständig zugewiesen"
-#: build/templates/build/build_base.html:146
+#: build/templates/build/build_base.html:151
#: build/templates/build/detail.html:132
#: order/templates/order/order_base.html:156
#: order/templates/order/sales_order_base.html:163
#: report/templates/report/inventree_build_order_base.html:126
-#: templates/js/translated/build.js:1753 templates/js/translated/order.js:854
+#: templates/js/translated/build.js:1991 templates/js/translated/order.js:854
#: templates/js/translated/order.js:1276
msgid "Target Date"
msgstr "Zieldatum"
-#: build/templates/build/build_base.html:151
+#: build/templates/build/build_base.html:156
#, python-format
msgid "This build was due on %(target)s"
msgstr "Bauauftrag war fällig am %(target)s"
-#: build/templates/build/build_base.html:151
-#: build/templates/build/build_base.html:196
+#: build/templates/build/build_base.html:156
+#: build/templates/build/build_base.html:201
#: order/templates/order/order_base.html:98
#: order/templates/order/sales_order_base.html:93
-#: templates/js/translated/table_filters.js:299
-#: templates/js/translated/table_filters.js:340
-#: templates/js/translated/table_filters.js:361
+#: templates/js/translated/table_filters.js:294
+#: templates/js/translated/table_filters.js:335
+#: templates/js/translated/table_filters.js:356
msgid "Overdue"
msgstr "Überfällig"
-#: build/templates/build/build_base.html:158
+#: build/templates/build/build_base.html:163
#: build/templates/build/detail.html:68 build/templates/build/detail.html:143
#: order/templates/order/sales_order_base.html:170
-#: templates/js/translated/build.js:1702
-#: templates/js/translated/table_filters.js:370
+#: templates/js/translated/build.js:1940
+#: templates/js/translated/table_filters.js:365
msgid "Completed"
msgstr "Fertig"
-#: build/templates/build/build_base.html:171
+#: build/templates/build/build_base.html:176
#: build/templates/build/detail.html:95 order/models.py:947
#: order/models.py:1043 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:307
-#: templates/js/translated/order.js:1218 templates/js/translated/stock.js:2304
+#: stock/templates/stock/item_base.html:309
+#: templates/js/translated/order.js:1218 templates/js/translated/stock.js:2428
msgid "Sales Order"
msgstr "Auftrag"
-#: build/templates/build/build_base.html:178
+#: build/templates/build/build_base.html:183
#: build/templates/build/detail.html:109
#: report/templates/report/inventree_build_order_base.html:153
msgid "Issued By"
msgstr "Aufgegeben von"
-#: build/templates/build/build_base.html:223
+#: build/templates/build/build_base.html:228
msgid "Incomplete Outputs"
msgstr "Unfertige Endprodukte"
-#: build/templates/build/build_base.html:224
+#: build/templates/build/build_base.html:229
msgid "Build Order cannot be completed as incomplete build outputs remain"
msgstr "Bauauftrag kann nicht abgeschlossen werden, da es noch unvollständige Endprodukte gibt"
-#: build/templates/build/build_output_create.html:7
-msgid "The Bill of Materials contains trackable parts"
-msgstr "Die Stückliste enthält verfolgbare Teile"
-
-#: build/templates/build/build_output_create.html:8
-msgid "Build outputs must be generated individually."
-msgstr "Endprodukte müssen individuell angelegt werden."
-
-#: build/templates/build/build_output_create.html:9
-msgid "Multiple build outputs will be created based on the quantity specified."
-msgstr "Mehrere Endprodukte werden anhand der gegebenen Anzahl angelegt werden."
-
-#: build/templates/build/build_output_create.html:15
-msgid "Trackable parts can have serial numbers specified"
-msgstr "Nachverfolgbare Teile können Seriennummern haben"
-
-#: build/templates/build/build_output_create.html:16
-msgid "Enter serial numbers to generate multiple single build outputs"
-msgstr "Seriennummeren für mehrere einzelne Endprodukte angeben"
-
#: build/templates/build/cancel.html:5
msgid "Are you sure you wish to cancel this build?"
msgstr "Sind Sie sicher, dass sie diesen Bauauftrag abbrechen möchten?"
@@ -1225,7 +1268,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:898 stock/forms.py:136
+#: build/templates/build/detail.html:50 order/models.py:898 stock/forms.py:133
#: templates/js/translated/order.js:592 templates/js/translated/order.js:1138
msgid "Destination"
msgstr "Ziel-Lager"
@@ -1234,13 +1277,13 @@ msgstr "Ziel-Lager"
msgid "Destination location not specified"
msgstr "Ziel-Lagerort nicht angegeben"
-#: build/templates/build/detail.html:74 templates/js/translated/build.js:707
+#: build/templates/build/detail.html:74 templates/js/translated/build.js:929
msgid "Allocated Parts"
msgstr "Zugewiesene Teile"
#: build/templates/build/detail.html:81
-#: stock/templates/stock/item_base.html:331
-#: templates/js/translated/stock.js:1673 templates/js/translated/stock.js:2802
+#: stock/templates/stock/item_base.html:333
+#: templates/js/translated/stock.js:1797 templates/js/translated/stock.js:2926
#: templates/js/translated/table_filters.js:151
#: templates/js/translated/table_filters.js:238
msgid "Batch"
@@ -1249,7 +1292,7 @@ msgstr "Losnummer"
#: build/templates/build/detail.html:127
#: order/templates/order/order_base.html:143
#: order/templates/order/sales_order_base.html:157
-#: templates/js/translated/build.js:1724
+#: templates/js/translated/build.js:1962
msgid "Created"
msgstr "Erstellt"
@@ -1269,7 +1312,7 @@ msgstr "Unter-Bauaufträge"
msgid "Allocate Stock to Build"
msgstr "Bestand Bauauftrag zuweisen"
-#: build/templates/build/detail.html:177 templates/js/translated/build.js:1262
+#: build/templates/build/detail.html:177 templates/js/translated/build.js:1484
msgid "Unallocate stock"
msgstr "Bestandszuordnung aufheben"
@@ -1329,52 +1372,60 @@ msgid "Output Actions"
msgstr "Endproduktaktionen"
#: build/templates/build/detail.html:250
-msgid "Complete selected items"
-msgstr "Ausgewählte Positionen abschließen"
+msgid "Complete selected build outputs"
+msgstr ""
#: build/templates/build/detail.html:251
msgid "Complete outputs"
msgstr "Endprodukte fertigstellen"
-#: build/templates/build/detail.html:266
+#: build/templates/build/detail.html:253
+msgid "Delete selected build outputs"
+msgstr ""
+
+#: build/templates/build/detail.html:254
+msgid "Delete outputs"
+msgstr ""
+
+#: build/templates/build/detail.html:270
msgid "Completed Build Outputs"
msgstr "Fertiggestellte Endprodukte"
-#: build/templates/build/detail.html:278 build/templates/build/sidebar.html:19
+#: build/templates/build/detail.html:282 build/templates/build/sidebar.html:19
#: order/templates/order/po_sidebar.html:9
#: order/templates/order/purchase_order_detail.html:60
#: order/templates/order/sales_order_detail.html:107
-#: order/templates/order/so_sidebar.html:15 part/templates/part/detail.html:213
-#: part/templates/part/part_sidebar.html:52 stock/templates/stock/item.html:112
+#: order/templates/order/so_sidebar.html:15 part/templates/part/detail.html:216
+#: part/templates/part/part_sidebar.html:55 stock/templates/stock/item.html:112
#: stock/templates/stock/stock_sidebar.html:23
msgid "Attachments"
msgstr "Anhänge"
-#: build/templates/build/detail.html:294
+#: build/templates/build/detail.html:298
msgid "Build Notes"
msgstr "Bauauftrags-Notizen"
-#: build/templates/build/detail.html:298 build/templates/build/detail.html:453
+#: build/templates/build/detail.html:302 build/templates/build/detail.html:478
#: company/templates/company/detail.html:188
#: company/templates/company/detail.html:215
#: order/templates/order/purchase_order_detail.html:80
#: order/templates/order/purchase_order_detail.html:108
#: order/templates/order/sales_order_detail.html:127
#: order/templates/order/sales_order_detail.html:186
-#: part/templates/part/detail.html:141 stock/templates/stock/item.html:132
-#: stock/templates/stock/item.html:235
+#: part/templates/part/detail.html:144 stock/templates/stock/item.html:132
+#: stock/templates/stock/item.html:230
msgid "Edit Notes"
msgstr "Anmerkungen bearbeiten"
-#: build/templates/build/detail.html:477
+#: build/templates/build/detail.html:502
msgid "Allocation Complete"
msgstr "Zuordnung abgeschlossen"
-#: build/templates/build/detail.html:478
+#: build/templates/build/detail.html:503
msgid "All untracked stock items have been allocated"
msgstr "Alle nicht verfolgten Lagerartikel wurden zugewiesen"
-#: build/templates/build/index.html:18 part/templates/part/detail.html:320
+#: build/templates/build/index.html:18 part/templates/part/detail.html:323
msgid "New Build Order"
msgstr "Neuer Bauauftrag"
@@ -1406,51 +1457,11 @@ msgstr "Ausstehende Einträge"
msgid "Completed Items"
msgstr "Abgeschlossene Elemente"
-#: build/views.py:76
+#: build/views.py:73
msgid "Build was cancelled"
msgstr "Bauauftrag wurde abgebrochen"
-#: build/views.py:88
-msgid "Create Build Output"
-msgstr "Endprodukt anlegen"
-
-#: build/views.py:106
-msgid "Maximum output quantity is "
-msgstr "Maximale Endproduktmenge ist "
-
-#: build/views.py:122 stock/serializers.py:363 stock/views.py:1257
-msgid "Serial numbers already exist"
-msgstr "Seriennummern existieren bereits"
-
-#: build/views.py:131
-msgid "Serial numbers required for trackable build output"
-msgstr "Seriennummern für verfolgbare Endprodukte benötigt"
-
-#: build/views.py:197
-msgid "Delete Build Output"
-msgstr "Endprodukt entfernen"
-
-#: build/views.py:218
-msgid "Confirm unallocation of build stock"
-msgstr "Entfernung von Bestands-Zuordnung bestätigen"
-
-#: build/views.py:219 stock/views.py:352
-msgid "Check the confirmation box"
-msgstr "Bestätigungsbox bestätigen"
-
-#: build/views.py:231
-msgid "Build output does not match build"
-msgstr "Endprodukt stimmt nicht mit Bauauftrag überein"
-
-#: build/views.py:233
-msgid "Build output must be specified"
-msgstr "Endprodukt muss angegeben sein"
-
-#: build/views.py:245
-msgid "Build output deleted"
-msgstr "Endprodukt gelöscht"
-
-#: build/views.py:286
+#: build/views.py:114
msgid "Delete Build Order"
msgstr "Bauauftrag löschen"
@@ -1639,9 +1650,9 @@ msgstr "Kategorie-Parametervorlage kopieren"
msgid "Copy category parameter templates when creating a part"
msgstr "Kategorie-Parameter Vorlagen kopieren wenn ein Teil angelegt wird"
-#: common/models.py:705 part/models.py:2489 report/models.py:187
+#: common/models.py:705 part/models.py:2525 report/models.py:187
#: templates/js/translated/table_filters.js:38
-#: templates/js/translated/table_filters.js:422
+#: templates/js/translated/table_filters.js:417
msgid "Template"
msgstr "Vorlage"
@@ -1649,9 +1660,9 @@ msgstr "Vorlage"
msgid "Parts are templates by default"
msgstr "Teile sind standardmäßig Vorlagen"
-#: common/models.py:712 part/models.py:921 templates/js/translated/bom.js:1082
+#: common/models.py:712 part/models.py:951 templates/js/translated/bom.js:1300
#: templates/js/translated/table_filters.js:168
-#: templates/js/translated/table_filters.js:434
+#: templates/js/translated/table_filters.js:429
msgid "Assembly"
msgstr "Baugruppe"
@@ -1659,8 +1670,8 @@ msgstr "Baugruppe"
msgid "Parts can be assembled from other components by default"
msgstr "Teile können standardmäßig aus anderen Teilen angefertigt werden"
-#: common/models.py:719 part/models.py:927
-#: templates/js/translated/table_filters.js:438
+#: common/models.py:719 part/models.py:957
+#: templates/js/translated/table_filters.js:433
msgid "Component"
msgstr "Komponente"
@@ -1668,7 +1679,7 @@ msgstr "Komponente"
msgid "Parts can be used as sub-components by default"
msgstr "Teile können standardmäßig in Baugruppen benutzt werden"
-#: common/models.py:726 part/models.py:938
+#: common/models.py:726 part/models.py:968
msgid "Purchaseable"
msgstr "Kaufbar"
@@ -1676,8 +1687,8 @@ msgstr "Kaufbar"
msgid "Parts are purchaseable by default"
msgstr "Artikel sind grundsätzlich kaufbar"
-#: common/models.py:733 part/models.py:943
-#: templates/js/translated/table_filters.js:446
+#: common/models.py:733 part/models.py:973
+#: templates/js/translated/table_filters.js:441
msgid "Salable"
msgstr "Verkäuflich"
@@ -1685,10 +1696,10 @@ msgstr "Verkäuflich"
msgid "Parts are salable by default"
msgstr "Artikel sind grundsätzlich verkaufbar"
-#: common/models.py:740 part/models.py:933
+#: common/models.py:740 part/models.py:963
#: templates/js/translated/table_filters.js:46
#: templates/js/translated/table_filters.js:100
-#: templates/js/translated/table_filters.js:450
+#: templates/js/translated/table_filters.js:445
msgid "Trackable"
msgstr "Nachverfolgbar"
@@ -1696,7 +1707,7 @@ msgstr "Nachverfolgbar"
msgid "Parts are trackable by default"
msgstr "Artikel sind grundsätzlich verfolgbar"
-#: common/models.py:747 part/models.py:953
+#: common/models.py:747 part/models.py:983
#: part/templates/part/part_base.html:147
#: templates/js/translated/table_filters.js:42
msgid "Virtual"
@@ -1730,589 +1741,595 @@ msgstr "Preis in Stückliste anzeigen"
msgid "Include pricing information in BOM tables"
msgstr "Preisinformationen in Stücklisten Tabellen einbeziehen"
-#: common/models.py:780
+#: common/models.py:785
+msgid "Show Price History"
+msgstr "Preisverlauf anzeigen"
+
+#: common/models.py:786
+msgid "Display historical pricing for Part"
+msgstr "Historische Preise für Teil anzeigen"
+
+#: common/models.py:792
msgid "Show related parts"
msgstr "Verwandte Teile anzeigen"
-#: common/models.py:781
+#: common/models.py:793
msgid "Display related parts for a part"
msgstr "Verwandte Teile eines Teils anzeigen"
-#: common/models.py:787
+#: common/models.py:799
msgid "Create initial stock"
msgstr "Ausgangsbestand erstellen"
-#: common/models.py:788
+#: common/models.py:800
msgid "Create initial stock on part creation"
msgstr "Ausgangsbestand beim Erstellen von Teilen erstellen"
-#: common/models.py:794
+#: common/models.py:806
msgid "Internal Prices"
msgstr "Interne Preise"
-#: common/models.py:795
+#: common/models.py:807
msgid "Enable internal prices for parts"
msgstr "Interne Preise für Teile aktivieren"
-#: common/models.py:801
+#: common/models.py:813
msgid "Internal Price as BOM-Price"
msgstr "Interner Preis als Stückliste-Preis"
-#: common/models.py:802
+#: common/models.py:814
msgid "Use the internal price (if set) in BOM-price calculations"
msgstr "Interner Preis (falls vorhanden) in Stücklisten-Preisberechnungen verwenden"
-#: common/models.py:808
+#: common/models.py:820
msgid "Part Name Display Format"
msgstr "Anzeigeformat für Teilenamen"
-#: common/models.py:809
+#: common/models.py:821
msgid "Format to display the part name"
msgstr "Format für den Namen eines Teiles"
-#: common/models.py:816
+#: common/models.py:828
msgid "Enable Reports"
msgstr "Berichte aktivieren"
-#: common/models.py:817
+#: common/models.py:829
msgid "Enable generation of reports"
msgstr "Berichterstellung aktivieren"
-#: common/models.py:823 templates/stats.html:25
+#: common/models.py:835 templates/stats.html:25
msgid "Debug Mode"
msgstr "Entwickler-Modus"
-#: common/models.py:824
+#: common/models.py:836
msgid "Generate reports in debug mode (HTML output)"
msgstr "Berichte im Entwickler-Modus generieren (als HTML)"
-#: common/models.py:830
+#: common/models.py:842
msgid "Page Size"
msgstr "Seitengröße"
-#: common/models.py:831
+#: common/models.py:843
msgid "Default page size for PDF reports"
msgstr "Standardseitenformat für PDF-Bericht"
-#: common/models.py:841
+#: common/models.py:853
msgid "Test Reports"
msgstr "Test-Berichte"
-#: common/models.py:842
+#: common/models.py:854
msgid "Enable generation of test reports"
msgstr "Erstellung von Test-Berichten aktivieren"
-#: common/models.py:848
+#: common/models.py:860
msgid "Stock Expiry"
msgstr "Bestands-Ablauf"
-#: common/models.py:849
+#: common/models.py:861
msgid "Enable stock expiry functionality"
msgstr "Ablaufen von Bestand ermöglichen"
-#: common/models.py:855
+#: common/models.py:867
msgid "Sell Expired Stock"
msgstr "Abgelaufenen Bestand verkaufen"
-#: common/models.py:856
+#: common/models.py:868
msgid "Allow sale of expired stock"
msgstr "Verkauf von abgelaufenem Bestand erlaubt"
-#: common/models.py:862
+#: common/models.py:874
msgid "Stock Stale Time"
msgstr "Bestands-Stehzeit"
-#: common/models.py:863
+#: common/models.py:875
msgid "Number of days stock items are considered stale before expiring"
msgstr "Anzahl an Tagen, an denen Bestand als abgestanden markiert wird, bevor sie ablaufen"
-#: common/models.py:865
+#: common/models.py:877
msgid "days"
msgstr "Tage"
-#: common/models.py:870
+#: common/models.py:882
msgid "Build Expired Stock"
msgstr "Abgelaufenen Bestand verbauen"
-#: common/models.py:871
+#: common/models.py:883
msgid "Allow building with expired stock"
msgstr "Verbauen von abgelaufenen Bestand erlaubt"
-#: common/models.py:877
+#: common/models.py:889
msgid "Stock Ownership Control"
msgstr "Bestands-Eigentümerkontrolle"
-#: common/models.py:878
+#: common/models.py:890
msgid "Enable ownership control over stock locations and items"
msgstr "Eigentümerkontrolle für Lagerorte und Teile aktivieren"
-#: common/models.py:884
+#: common/models.py:896
msgid "Build Order Reference Prefix"
msgstr "Bauauftrag-Referenz Präfix"
-#: common/models.py:885
+#: common/models.py:897
msgid "Prefix value for build order reference"
msgstr "Präfix für Bauauftrag-Referenz"
-#: common/models.py:890
+#: common/models.py:902
msgid "Build Order Reference Regex"
msgstr "Bauauftrag-Referenz RegEx"
-#: common/models.py:891
+#: common/models.py:903
msgid "Regular expression pattern for matching build order reference"
msgstr "RegEx Muster für die Zuordnung von Bauauftrag-Referenzen"
-#: common/models.py:895
+#: common/models.py:907
msgid "Sales Order Reference Prefix"
msgstr "Auftrags-Referenz Präfix"
-#: common/models.py:896
+#: common/models.py:908
msgid "Prefix value for sales order reference"
msgstr "Präfix für Auftrags-Referenz"
-#: common/models.py:901
+#: common/models.py:913
msgid "Purchase Order Reference Prefix"
msgstr "Bestellungs-Referenz Präfix"
-#: common/models.py:902
+#: common/models.py:914
msgid "Prefix value for purchase order reference"
msgstr "Präfix für Bestellungs-Referenz"
-#: common/models.py:908
+#: common/models.py:920
msgid "Enable password forgot"
msgstr "Passwort vergessen aktivieren"
-#: common/models.py:909
+#: common/models.py:921
msgid "Enable password forgot function on the login pages"
msgstr "Passwort-vergessen-Funktion auf den Anmeldeseiten aktivieren"
-#: common/models.py:914
+#: common/models.py:926
msgid "Enable registration"
msgstr "Anmeldung erlauben"
-#: common/models.py:915
+#: common/models.py:927
msgid "Enable self-registration for users on the login pages"
msgstr "Selbstregistrierung für Benutzer auf den Anmeldeseiten aktivieren"
-#: common/models.py:920
+#: common/models.py:932
msgid "Enable SSO"
msgstr "SSO aktivieren"
-#: common/models.py:921
+#: common/models.py:933
msgid "Enable SSO on the login pages"
msgstr "SSO auf den Anmeldeseiten aktivieren"
-#: common/models.py:926
+#: common/models.py:938
msgid "Email required"
msgstr "Email-Adresse erforderlich"
-#: common/models.py:927
+#: common/models.py:939
msgid "Require user to supply mail on signup"
msgstr "Benutzer müssen bei der Registrierung eine E-Mail angeben"
-#: common/models.py:932
+#: common/models.py:944
msgid "Auto-fill SSO users"
msgstr "SSO-Benutzer automatisch ausfüllen"
-#: common/models.py:933
+#: common/models.py:945
msgid "Automatically fill out user-details from SSO account-data"
msgstr "Benutzer-Details automatisch aus SSO-Konto ausfüllen"
-#: common/models.py:938
+#: common/models.py:950
msgid "Mail twice"
msgstr "E-Mail zweimal"
-#: common/models.py:939
+#: common/models.py:951
msgid "On signup ask users twice for their mail"
msgstr "Bei der Registrierung den Benutzer zweimal nach der E-Mail-Adresse fragen"
-#: common/models.py:944
+#: common/models.py:956
msgid "Password twice"
msgstr "Passwort zweimal"
-#: common/models.py:945
+#: common/models.py:957
msgid "On signup ask users twice for their password"
msgstr "Bei der Registrierung den Benutzer zweimal nach dem Passwort fragen"
-#: common/models.py:950
+#: common/models.py:962
msgid "Group on signup"
msgstr "Gruppe bei Registrierung"
-#: common/models.py:951
+#: common/models.py:963
msgid "Group to which new users are assigned on registration"
msgstr "Gruppe der neue Benutzer bei der Registrierung zugewiesen werden"
-#: common/models.py:956
+#: common/models.py:968
msgid "Enforce MFA"
msgstr "MFA erzwingen"
-#: common/models.py:957
+#: common/models.py:969
msgid "Users must use multifactor security."
msgstr "Benutzer müssen Multifaktor-Authentifizierung verwenden."
-#: common/models.py:964
+#: common/models.py:976
msgid "Enable URL integration"
msgstr "URL-Integration aktivieren"
-#: common/models.py:965
+#: common/models.py:977
msgid "Enable plugins to add URL routes"
-msgstr ""
+msgstr "Plugins zum Hinzufügen von URLs aktivieren"
-#: common/models.py:971
+#: common/models.py:983
msgid "Enable navigation integration"
msgstr ""
-#: common/models.py:972
+#: common/models.py:984
msgid "Enable plugins to integrate into navigation"
-msgstr ""
+msgstr "Plugins zur Integration in die Navigation aktivieren"
-#: common/models.py:978
+#: common/models.py:990
msgid "Enable app integration"
-msgstr ""
+msgstr "App-Integration aktivieren"
-#: common/models.py:979
+#: common/models.py:991
msgid "Enable plugins to add apps"
-msgstr ""
+msgstr "Plugins zum Hinzufügen von Apps aktivieren"
-#: common/models.py:985
+#: common/models.py:997
msgid "Enable schedule integration"
-msgstr ""
+msgstr "Terminplan-Integration aktivieren"
-#: common/models.py:986
+#: common/models.py:998
msgid "Enable plugins to run scheduled tasks"
msgstr ""
-#: common/models.py:992
+#: common/models.py:1004
msgid "Enable event integration"
msgstr ""
-#: common/models.py:993
+#: common/models.py:1005
msgid "Enable plugins to respond to internal events"
msgstr ""
-#: common/models.py:1008 common/models.py:1216
+#: common/models.py:1020 common/models.py:1228
msgid "Settings key (must be unique - case insensitive"
msgstr "Einstellungs-Schlüssel (muss einzigartig sein, Groß-/ Kleinschreibung wird nicht beachtet)"
-#: common/models.py:1039
+#: common/models.py:1051
msgid "Show subscribed parts"
msgstr "Abonnierte Teile anzeigen"
-#: common/models.py:1040
+#: common/models.py:1052
msgid "Show subscribed parts on the homepage"
msgstr "Zeige abonnierte Teile auf der Startseite"
-#: common/models.py:1045
+#: common/models.py:1057
msgid "Show subscribed categories"
msgstr "Abonnierte Kategorien anzeigen"
-#: common/models.py:1046
+#: common/models.py:1058
msgid "Show subscribed part categories on the homepage"
msgstr "Zeige abonnierte Teilkategorien auf der Startseite"
-#: common/models.py:1051
+#: common/models.py:1063
msgid "Show latest parts"
msgstr "Neueste Teile anzeigen"
-#: common/models.py:1052
+#: common/models.py:1064
msgid "Show latest parts on the homepage"
msgstr "Zeige neueste Teile auf der Startseite"
-#: common/models.py:1057
+#: common/models.py:1069
msgid "Recent Part Count"
msgstr "Aktuelle Teile-Stände"
-#: common/models.py:1058
+#: common/models.py:1070
msgid "Number of recent parts to display on index page"
msgstr "Anzahl der neusten Teile auf der Startseite"
-#: common/models.py:1064
+#: common/models.py:1076
msgid "Show unvalidated BOMs"
msgstr "Nicht validierte Stücklisten anzeigen"
-#: common/models.py:1065
+#: common/models.py:1077
msgid "Show BOMs that await validation on the homepage"
msgstr "Zeige Stücklisten, die noch nicht validiert sind, auf der Startseite"
-#: common/models.py:1070
+#: common/models.py:1082
msgid "Show recent stock changes"
msgstr "Neueste Bestandänderungen anzeigen"
-#: common/models.py:1071
+#: common/models.py:1083
msgid "Show recently changed stock items on the homepage"
msgstr "Zeige zuletzt geänderte Lagerbestände auf der Startseite"
-#: common/models.py:1076
+#: common/models.py:1088
msgid "Recent Stock Count"
msgstr "aktueller Bestand"
-#: common/models.py:1077
+#: common/models.py:1089
msgid "Number of recent stock items to display on index page"
msgstr "Anzahl des geänderten Bestands auf der Startseite"
-#: common/models.py:1082
+#: common/models.py:1094
msgid "Show low stock"
msgstr "Niedrigen Bestand anzeigen"
-#: common/models.py:1083
+#: common/models.py:1095
msgid "Show low stock items on the homepage"
msgstr "Zeige geringen Bestand auf der Startseite"
-#: common/models.py:1088
+#: common/models.py:1100
msgid "Show depleted stock"
msgstr "Lerren Bestand anzeigen"
-#: common/models.py:1089
+#: common/models.py:1101
msgid "Show depleted stock items on the homepage"
msgstr "Zeige aufgebrauchte Lagerartikel auf der Startseite"
-#: common/models.py:1094
+#: common/models.py:1106
msgid "Show needed stock"
msgstr "Benötigten Bestand anzeigen"
-#: common/models.py:1095
+#: common/models.py:1107
msgid "Show stock items needed for builds on the homepage"
msgstr "Zeige Bestand für Bauaufträge auf der Startseite"
-#: common/models.py:1100
+#: common/models.py:1112
msgid "Show expired stock"
msgstr "Abgelaufenen Bestand anzeigen"
-#: common/models.py:1101
+#: common/models.py:1113
msgid "Show expired stock items on the homepage"
msgstr "Zeige abgelaufene Lagerbestände auf der Startseite"
-#: common/models.py:1106
+#: common/models.py:1118
msgid "Show stale stock"
msgstr "Alten Bestand anzeigen"
-#: common/models.py:1107
+#: common/models.py:1119
msgid "Show stale stock items on the homepage"
msgstr "Zeige überfällige Lagerartikel auf der Startseite"
-#: common/models.py:1112
+#: common/models.py:1124
msgid "Show pending builds"
msgstr "Ausstehende Bauaufträge anzeigen"
-#: common/models.py:1113
+#: common/models.py:1125
msgid "Show pending builds on the homepage"
msgstr "Zeige ausstehende Bauaufträge auf der Startseite"
-#: common/models.py:1118
+#: common/models.py:1130
msgid "Show overdue builds"
msgstr "Zeige überfällige Bauaufträge"
-#: common/models.py:1119
+#: common/models.py:1131
msgid "Show overdue builds on the homepage"
msgstr "Zeige überfällige Bauaufträge auf der Startseite"
-#: common/models.py:1124
+#: common/models.py:1136
msgid "Show outstanding POs"
msgstr "Ausstehende POs anzeigen"
-#: common/models.py:1125
+#: common/models.py:1137
msgid "Show outstanding POs on the homepage"
msgstr "Zeige ausstehende POs auf der Startseite"
-#: common/models.py:1130
+#: common/models.py:1142
msgid "Show overdue POs"
msgstr "Überfällige POs anzeigen"
-#: common/models.py:1131
+#: common/models.py:1143
msgid "Show overdue POs on the homepage"
msgstr "Zeige überfällige POs auf der Startseite"
-#: common/models.py:1136
+#: common/models.py:1148
msgid "Show outstanding SOs"
msgstr "Ausstehende SOs anzeigen"
-#: common/models.py:1137
+#: common/models.py:1149
msgid "Show outstanding SOs on the homepage"
msgstr "Zeige ausstehende SOs auf der Startseite"
-#: common/models.py:1142
+#: common/models.py:1154
msgid "Show overdue SOs"
msgstr "Überfällige SOs anzeigen"
-#: common/models.py:1143
+#: common/models.py:1155
msgid "Show overdue SOs on the homepage"
msgstr "Zeige überfällige SOs auf der Startseite"
-#: common/models.py:1149
+#: common/models.py:1161
msgid "Inline label display"
msgstr "Label inline anzeigen"
-#: common/models.py:1150
+#: common/models.py:1162
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:1156
+#: common/models.py:1168
msgid "Inline report display"
msgstr "Berichte inline anzeigen"
-#: common/models.py:1157
+#: common/models.py:1169
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:1163
+#: common/models.py:1175
msgid "Search Preview Results"
msgstr "Anzahl Suchergebnisse"
-#: common/models.py:1164
+#: common/models.py:1176
msgid "Number of results to show in search preview window"
msgstr "Anzahl der Ergebnisse, die in der Vorschau angezeigt werden sollen"
-#: common/models.py:1170
+#: common/models.py:1182
msgid "Search Show Stock"
msgstr "Suche Bestand anzeigen"
-#: common/models.py:1171
+#: common/models.py:1183
msgid "Display stock levels in search preview window"
msgstr "Bestand in Suchvorschau anzeigen"
-#: common/models.py:1177
+#: common/models.py:1189
msgid "Hide Inactive Parts"
msgstr "Inaktive Teile ausblenden"
-#: common/models.py:1178
+#: common/models.py:1190
msgid "Hide inactive parts in search preview window"
msgstr "Inaktive Teile in der Suchvorschau ausblenden"
-#: common/models.py:1184
+#: common/models.py:1196
msgid "Show Quantity in Forms"
msgstr "zeige Bestand in Eingabemasken"
-#: common/models.py:1185
+#: common/models.py:1197
msgid "Display available part quantity in some forms"
msgstr "Zeige den verfügbaren Bestand in einigen Eingabemasken"
-#: common/models.py:1191
+#: common/models.py:1203
msgid "Escape Key Closes Forms"
msgstr "Esc-Taste schließt Formulare"
-#: common/models.py:1192
+#: common/models.py:1204
msgid "Use the escape key to close modal forms"
msgstr "Benutze die Esc-Taste, um Formulare zu schließen"
-#: common/models.py:1198
+#: common/models.py:1210
msgid "Fixed Navbar"
msgstr "Fixierter Navigationsleiste"
-#: common/models.py:1199
+#: common/models.py:1211
msgid "InvenTree navbar position is fixed to the top of the screen"
msgstr "Position der InvenTree Navigationsleiste am oberen Bildschirmrand fixieren"
-#: common/models.py:1264 company/forms.py:43
+#: common/models.py:1276 company/forms.py:43
msgid "Price break quantity"
msgstr "Preisstaffelungs Anzahl"
-#: common/models.py:1271 company/serializers.py:264
+#: common/models.py:1283 company/serializers.py:264
#: company/templates/company/supplier_part.html:256
#: templates/js/translated/part.js:915 templates/js/translated/part.js:1867
msgid "Price"
msgstr "Preis"
-#: common/models.py:1272
+#: common/models.py:1284
msgid "Unit price at specified quantity"
msgstr "Stückpreis für die angegebene Anzahl"
-#: common/models.py:1429 common/models.py:1568
+#: common/models.py:1441 common/models.py:1580
msgid "Endpoint"
msgstr "Endpunkt"
-#: common/models.py:1430
+#: common/models.py:1442
msgid "Endpoint at which this webhook is received"
msgstr "Endpunkt, an dem dieser Webhook empfangen wird"
-#: common/models.py:1439
+#: common/models.py:1451
msgid "Name for this webhook"
msgstr "Name für diesen Webhook"
-#: common/models.py:1444 part/models.py:948 plugin/models.py:46
+#: common/models.py:1456 part/models.py:978 plugin/models.py:46
#: templates/js/translated/table_filters.js:34
#: templates/js/translated/table_filters.js:96
-#: templates/js/translated/table_filters.js:295
-#: templates/js/translated/table_filters.js:417
+#: templates/js/translated/table_filters.js:290
+#: templates/js/translated/table_filters.js:412
msgid "Active"
msgstr "Aktiv"
-#: common/models.py:1445
+#: common/models.py:1457
msgid "Is this webhook active"
msgstr "Ist dieser Webhook aktiv"
-#: common/models.py:1459
+#: common/models.py:1471
msgid "Token"
msgstr "Token"
-#: common/models.py:1460
+#: common/models.py:1472
msgid "Token for access"
msgstr "Token für Zugang"
-#: common/models.py:1467
+#: common/models.py:1479
msgid "Secret"
-msgstr ""
+msgstr "Secret"
-#: common/models.py:1468
+#: common/models.py:1480
msgid "Shared secret for HMAC"
-msgstr ""
+msgstr "Shared Secret für HMAC"
-#: common/models.py:1535
+#: common/models.py:1547
msgid "Message ID"
-msgstr ""
+msgstr "Nachrichten-ID"
-#: common/models.py:1536
+#: common/models.py:1548
msgid "Unique identifier for this message"
msgstr "Eindeutige Kennung für diese Nachricht"
-#: common/models.py:1544
+#: common/models.py:1556
msgid "Host"
msgstr "Host"
-#: common/models.py:1545
+#: common/models.py:1557
msgid "Host from which this message was received"
msgstr "Host von dem diese Nachricht empfangen wurde"
-#: common/models.py:1552
+#: common/models.py:1564
msgid "Header"
msgstr "Header"
-#: common/models.py:1553
+#: common/models.py:1565
msgid "Header of this message"
msgstr "Header dieser Nachricht"
-#: common/models.py:1559
+#: common/models.py:1571
msgid "Body"
msgstr "Body"
-#: common/models.py:1560
+#: common/models.py:1572
msgid "Body of this message"
msgstr "Body dieser Nachricht"
-#: common/models.py:1569
+#: common/models.py:1581
msgid "Endpoint on which this message was received"
msgstr "Endpunkt, über den diese Nachricht empfangen wurde"
-#: common/models.py:1574
+#: common/models.py:1586
msgid "Worked on"
-msgstr ""
+msgstr "Bearbeitet"
-#: common/models.py:1575
+#: common/models.py:1587
msgid "Was the work on this message finished?"
-msgstr ""
+msgstr "Wurde die Arbeit an dieser Nachricht abgeschlossen?"
#: common/views.py:93 order/templates/order/order_wizard/po_upload.html:49
#: order/templates/order/purchase_order_detail.html:24 order/views.py:243
-#: part/templates/part/bom_upload/upload_file.html:52
-#: part/templates/part/import_wizard/part_upload.html:47 part/views.py:213
-#: part/views.py:773
+#: part/templates/part/import_wizard/part_upload.html:47 part/views.py:210
+#: templates/patterns/wizard/upload.html:35
msgid "Upload File"
msgstr "Datei hochgeladen"
-#: common/views.py:94 order/templates/order/order_wizard/match_fields.html:52
-#: order/views.py:244 part/templates/part/bom_upload/match_fields.html:52
+#: common/views.py:94 order/views.py:244
#: part/templates/part/import_wizard/ajax_match_fields.html:45
-#: part/templates/part/import_wizard/match_fields.html:52 part/views.py:214
-#: part/views.py:774
+#: part/templates/part/import_wizard/match_fields.html:52 part/views.py:211
+#: templates/patterns/wizard/match_fields.html:51
msgid "Match Fields"
msgstr "Übereinstimmende Felder"
@@ -2328,15 +2345,13 @@ msgstr "Felder zuteilen fehlgeschlagen"
msgid "Parts imported"
msgstr "Teile importiert"
-#: common/views.py:517 order/templates/order/order_wizard/match_fields.html:27
-#: order/templates/order/order_wizard/match_parts.html:19
+#: common/views.py:517 order/templates/order/order_wizard/match_parts.html:19
#: order/templates/order/order_wizard/po_upload.html:47
-#: part/templates/part/bom_upload/match_fields.html:27
-#: part/templates/part/bom_upload/match_parts.html:19
-#: part/templates/part/bom_upload/upload_file.html:50
#: part/templates/part/import_wizard/match_fields.html:27
#: part/templates/part/import_wizard/match_references.html:19
#: part/templates/part/import_wizard/part_upload.html:45
+#: templates/patterns/wizard/match_fields.html:26
+#: templates/patterns/wizard/upload.html:33
msgid "Previous Step"
msgstr "Vorheriger Schritt"
@@ -2404,7 +2419,7 @@ msgstr "Anlaufstelle"
msgid "Link to external company information"
msgstr "Link auf externe Firmeninformation"
-#: company/models.py:139 part/models.py:840
+#: company/models.py:139 part/models.py:870
msgid "Image"
msgstr "Bild"
@@ -2442,7 +2457,7 @@ 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:471
-#: stock/templates/stock/item_base.html:142 templates/js/translated/bom.js:328
+#: stock/templates/stock/item_base.html:144 templates/js/translated/bom.js:541
msgid "Base Part"
msgstr "Basisteil"
@@ -2453,11 +2468,11 @@ 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:380
+#: stock/templates/stock/item_base.html:382
#: templates/js/translated/company.js:333
#: templates/js/translated/company.js:517
#: templates/js/translated/company.js:800 templates/js/translated/part.js:234
-#: templates/js/translated/table_filters.js:389
+#: templates/js/translated/table_filters.js:384
msgid "Manufacturer"
msgstr "Hersteller"
@@ -2488,7 +2503,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:390
+#: stock/templates/stock/item_base.html:392
msgid "Manufacturer Part"
msgstr "Herstellerteil"
@@ -2499,7 +2514,7 @@ msgstr "Parametername"
#: company/models.py:422
#: report/templates/report/inventree_test_report_base.html:95
#: stock/models.py:1988 templates/js/translated/company.js:647
-#: templates/js/translated/part.js:715 templates/js/translated/stock.js:1304
+#: templates/js/translated/part.js:715 templates/js/translated/stock.js:1332
msgid "Value"
msgstr "Wert"
@@ -2507,9 +2522,9 @@ msgstr "Wert"
msgid "Parameter value"
msgstr "Parameterwert"
-#: company/models.py:429 part/models.py:915 part/models.py:2457
+#: company/models.py:429 part/models.py:945 part/models.py:2493
#: part/templates/part/part_base.html:288
-#: templates/InvenTree/settings/settings.html:287
+#: templates/InvenTree/settings/settings.html:324
#: templates/js/translated/company.js:653 templates/js/translated/part.js:721
msgid "Units"
msgstr "Einheiten"
@@ -2526,11 +2541,11 @@ msgstr "Verlinktes Herstellerteil muss dasselbe Basisteil referenzieren"
#: company/templates/company/supplier_part.html:87 order/models.py:227
#: order/templates/order/order_base.html:112
#: order/templates/order/order_wizard/select_pos.html:30 part/bom.py:237
-#: part/bom.py:265 stock/templates/stock/item_base.html:397
+#: part/bom.py:265 stock/templates/stock/item_base.html:399
#: templates/js/translated/company.js:337
#: templates/js/translated/company.js:774 templates/js/translated/order.js:823
#: templates/js/translated/part.js:215 templates/js/translated/part.js:863
-#: templates/js/translated/table_filters.js:393
+#: templates/js/translated/table_filters.js:388
msgid "Supplier"
msgstr "Zulieferer"
@@ -2561,22 +2576,23 @@ msgid "Supplier part description"
msgstr "Zuliefererbeschreibung des Teils"
#: company/models.py:576 company/templates/company/supplier_part.html:119
-#: part/models.py:2648 report/templates/report/inventree_po_report.html:93
-#: report/templates/report/inventree_so_report.html:93
+#: part/models.py:2717 part/templates/part/upload_bom.html:59
+#: report/templates/report/inventree_po_report.html:93
+#: report/templates/report/inventree_so_report.html:93 stock/serializers.py:409
msgid "Note"
msgstr "Notiz"
-#: company/models.py:580 part/models.py:1781
+#: company/models.py:580 part/models.py:1817
msgid "base cost"
msgstr "Basiskosten"
-#: company/models.py:580 part/models.py:1781
+#: company/models.py:580 part/models.py:1817
msgid "Minimum charge (e.g. stocking fee)"
msgstr "Mindestpreis"
#: company/models.py:582 company/templates/company/supplier_part.html:112
-#: stock/models.py:495 stock/templates/stock/item_base.html:338
-#: templates/js/translated/company.js:850 templates/js/translated/stock.js:1799
+#: stock/models.py:495 stock/templates/stock/item_base.html:340
+#: templates/js/translated/company.js:850 templates/js/translated/stock.js:1923
msgid "Packaging"
msgstr "Verpackungen"
@@ -2584,7 +2600,7 @@ msgstr "Verpackungen"
msgid "Part packaging"
msgstr "Teile-Verpackungen"
-#: company/models.py:584 part/models.py:1783
+#: company/models.py:584 part/models.py:1819
msgid "multiple"
msgstr "Vielfache"
@@ -2645,11 +2661,11 @@ msgstr "Bild von URL herunterladen"
#: company/templates/company/company_base.html:83 order/models.py:552
#: order/templates/order/sales_order_base.html:115 stock/models.py:514
-#: stock/models.py:515 stock/serializers.py:626
-#: stock/templates/stock/item_base.html:290
+#: stock/models.py:515 stock/serializers.py:683
+#: stock/templates/stock/item_base.html:292
#: templates/js/translated/company.js:329 templates/js/translated/order.js:1240
-#: templates/js/translated/stock.js:2610
-#: templates/js/translated/table_filters.js:397
+#: templates/js/translated/stock.js:2734
+#: templates/js/translated/table_filters.js:392
msgid "Customer"
msgstr "Kunde"
@@ -2679,7 +2695,7 @@ msgstr "Neues Zuliefererteil anlegen"
#: company/templates/company/detail.html:20
#: company/templates/company/manufacturer_part.html:118
-#: part/templates/part/detail.html:353
+#: part/templates/part/detail.html:356
msgid "New Supplier Part"
msgstr "Neues Zuliefererteil"
@@ -2687,8 +2703,8 @@ msgstr "Neues Zuliefererteil"
#: company/templates/company/detail.html:79
#: company/templates/company/manufacturer_part.html:127
#: company/templates/company/manufacturer_part.html:156
-#: part/templates/part/category.html:171 part/templates/part/detail.html:362
-#: part/templates/part/detail.html:391
+#: part/templates/part/category.html:171 part/templates/part/detail.html:365
+#: part/templates/part/detail.html:394
msgid "Options"
msgstr "Optionen"
@@ -2716,7 +2732,7 @@ msgstr "Herstellerteile"
msgid "Create new manufacturer part"
msgstr "Neues Herstellerteil anlegen"
-#: company/templates/company/detail.html:67 part/templates/part/detail.html:381
+#: company/templates/company/detail.html:67 part/templates/part/detail.html:384
msgid "New Manufacturer Part"
msgstr "Neues Herstellerteil"
@@ -2730,7 +2746,7 @@ msgstr "Zulieferer-Bestand"
#: order/templates/order/order_base.html:13
#: order/templates/order/purchase_orders.html:8
#: order/templates/order/purchase_orders.html:12
-#: part/templates/part/detail.html:85 part/templates/part/part_sidebar.html:37
+#: part/templates/part/detail.html:85 part/templates/part/part_sidebar.html:40
#: templates/InvenTree/index.html:252 templates/InvenTree/search.html:197
#: templates/InvenTree/settings/sidebar.html:45 templates/navbar.html:47
#: users/models.py:45
@@ -2752,7 +2768,7 @@ msgstr "Neue Bestellung"
#: order/templates/order/sales_order_base.html:13
#: order/templates/order/sales_orders.html:8
#: order/templates/order/sales_orders.html:15
-#: part/templates/part/detail.html:108 part/templates/part/part_sidebar.html:41
+#: part/templates/part/detail.html:108 part/templates/part/part_sidebar.html:44
#: templates/InvenTree/index.html:283 templates/InvenTree/search.html:217
#: templates/InvenTree/settings/sidebar.html:47 templates/navbar.html:58
#: users/models.py:46
@@ -2770,7 +2786,7 @@ msgid "New Sales Order"
msgstr "Neuer Auftrag"
#: company/templates/company/detail.html:168
-#: templates/js/translated/build.js:1059
+#: templates/js/translated/build.js:1281
msgid "Assigned Stock"
msgstr "Zugeordneter Bestand"
@@ -2780,13 +2796,13 @@ msgstr "Firmenbemerkungen"
#: company/templates/company/detail.html:384
#: company/templates/company/manufacturer_part.html:215
-#: part/templates/part/detail.html:435
+#: part/templates/part/detail.html:438
msgid "Delete Supplier Parts?"
msgstr "Zuliefererteil entfernen?"
#: company/templates/company/detail.html:385
#: company/templates/company/manufacturer_part.html:216
-#: part/templates/part/detail.html:436
+#: part/templates/part/detail.html:439
msgid "All selected supplier parts will be deleted"
msgstr "Alle ausgewählten Zulieferteile werden gelöscht"
@@ -2824,36 +2840,36 @@ 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:35 part/templates/part/prices.html:163
+#: part/templates/part/part_sidebar.html:38 part/templates/part/prices.html:163
#: templates/InvenTree/search.html:188 templates/navbar.html:45
msgid "Suppliers"
msgstr "Zulieferer"
#: company/templates/company/manufacturer_part.html:129
-#: part/templates/part/detail.html:364
+#: part/templates/part/detail.html:367
msgid "Delete supplier parts"
msgstr "Zuliefererteil entfernen"
#: company/templates/company/manufacturer_part.html:129
#: company/templates/company/manufacturer_part.html:158
#: company/templates/company/manufacturer_part.html:254
-#: part/templates/part/detail.html:364 part/templates/part/detail.html:393
+#: part/templates/part/detail.html:367 part/templates/part/detail.html:396
#: templates/js/translated/company.js:426 templates/js/translated/helpers.js:31
-#: users/models.py:212
+#: users/models.py:217
msgid "Delete"
msgstr "Löschen"
#: company/templates/company/manufacturer_part.html:143
#: company/templates/company/manufacturer_part_sidebar.html:5
#: part/templates/part/category_sidebar.html:17
-#: part/templates/part/detail.html:187 part/templates/part/part_sidebar.html:8
+#: part/templates/part/detail.html:190 part/templates/part/part_sidebar.html:9
msgid "Parameters"
msgstr "Parameter"
#: company/templates/company/manufacturer_part.html:147
-#: part/templates/part/detail.html:192
+#: part/templates/part/detail.html:195
#: templates/InvenTree/settings/category.html:12
-#: templates/InvenTree/settings/part.html:65
+#: templates/InvenTree/settings/part.html:66
msgid "New Parameter"
msgstr "Neuer Parameter"
@@ -2862,7 +2878,7 @@ msgid "Delete parameters"
msgstr "Parameter löschen"
#: company/templates/company/manufacturer_part.html:191
-#: part/templates/part/detail.html:892
+#: part/templates/part/detail.html:895
msgid "Add Parameter"
msgstr "Parameter hinzufügen"
@@ -2892,8 +2908,8 @@ msgstr "Zugewiesene Lagerartikel"
#: company/templates/company/supplier_part.html:7
#: company/templates/company/supplier_part.html:24 stock/models.py:479
-#: stock/templates/stock/item_base.html:402
-#: templates/js/translated/company.js:790 templates/js/translated/stock.js:1756
+#: stock/templates/stock/item_base.html:404
+#: templates/js/translated/company.js:790 templates/js/translated/stock.js:1880
msgid "Supplier Part"
msgstr "Zuliefererteil"
@@ -2919,7 +2935,7 @@ msgstr "Neuen Lagerartikel hinzufügen"
#: company/templates/company/supplier_part.html:142
#: part/templates/part/detail.html:25 stock/templates/stock/location.html:167
-#: templates/js/translated/stock.js:368
+#: templates/js/translated/stock.js:369
msgid "New Stock Item"
msgstr "Neuer Lagerartikel"
@@ -2940,7 +2956,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:1628
+#: part/templates/part/prices.html:271 part/views.py:1319
msgid "Add Price Break"
msgstr "Preisstaffel hinzufügen"
@@ -2948,11 +2964,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:1690
+#: company/templates/company/supplier_part.html:224 part/views.py:1381
msgid "Delete Price Break"
msgstr "Preisstaffel löschen"
-#: company/templates/company/supplier_part.html:238 part/views.py:1676
+#: company/templates/company/supplier_part.html:238 part/views.py:1367
msgid "Edit Price Break"
msgstr "Preisstaffel bearbeiten"
@@ -2965,15 +2981,15 @@ msgid "Delete price break"
msgstr "Preisstaffel löschen"
#: company/templates/company/supplier_part_navbar.html:15
-#: part/templates/part/part_sidebar.html:14
+#: part/templates/part/part_sidebar.html:15
#: 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:150
#: templates/InvenTree/settings/sidebar.html:41
-#: templates/js/translated/bom.js:340 templates/js/translated/part.js:495
+#: templates/js/translated/bom.js:553 templates/js/translated/part.js:495
#: templates/js/translated/part.js:630 templates/js/translated/part.js:1125
-#: templates/js/translated/part.js:1286 templates/js/translated/stock.js:935
-#: templates/js/translated/stock.js:1588 templates/navbar.html:28
+#: templates/js/translated/part.js:1286 templates/js/translated/stock.js:936
+#: templates/js/translated/stock.js:1712 templates/navbar.html:28
msgid "Stock"
msgstr "Bestand"
@@ -2987,7 +3003,7 @@ msgid "Supplier Part Pricing"
msgstr "Zuliefererteil Bepreisung"
#: company/templates/company/supplier_part_navbar.html:29
-#: part/templates/part/part_sidebar.html:28
+#: part/templates/part/part_sidebar.html:30
msgid "Pricing"
msgstr "Bepreisung"
@@ -2996,7 +3012,7 @@ msgstr "Bepreisung"
#: stock/templates/stock/location.html:151
#: stock/templates/stock/location.html:163
#: stock/templates/stock/location_sidebar.html:7
-#: templates/InvenTree/search.html:152 templates/js/translated/stock.js:2509
+#: templates/InvenTree/search.html:152 templates/js/translated/stock.js:2633
#: templates/stats.html:105 templates/stats.html:114 users/models.py:43
msgid "Stock Items"
msgstr "Lagerartikel"
@@ -3026,20 +3042,20 @@ msgstr "Firmen"
msgid "New Company"
msgstr "Neue Firma"
-#: company/views.py:129 part/views.py:593
+#: company/views.py:129 part/views.py:591
msgid "Download Image"
msgstr "Bild herunterladen"
-#: company/views.py:158 part/views.py:625
+#: company/views.py:158 part/views.py:623
msgid "Image size exceeds maximum allowable size for download"
msgstr "Bildgröße überschreitet maximal-erlaubte Größe für Downloads"
-#: company/views.py:165 part/views.py:632
+#: company/views.py:165 part/views.py:630
#, python-brace-format
msgid "Invalid response: {code}"
msgstr "Ungültige Antwort {code}"
-#: company/views.py:174 part/views.py:641
+#: company/views.py:174 part/views.py:639
msgid "Supplied URL is not a valid image file"
msgstr "Angegebene URL ist kein gültiges Bild"
@@ -3253,19 +3269,19 @@ msgstr "Position - Notizen"
#: order/models.py:842
msgid "Supplier part must match supplier"
-msgstr ""
+msgstr "Lieferantenteil muss mit Lieferant übereinstimmen"
#: order/models.py:855 order/models.py:946 order/models.py:1042
-#: templates/js/translated/order.js:1820 templates/js/translated/stock.js:2271
+#: templates/js/translated/order.js:1820 templates/js/translated/stock.js:2395
msgid "Order"
msgstr "Bestellung"
#: order/models.py:856 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:352
+#: stock/templates/stock/item_base.html:354
#: templates/js/translated/order.js:801 templates/js/translated/part.js:838
-#: templates/js/translated/stock.js:1733 templates/js/translated/stock.js:2591
+#: templates/js/translated/stock.js:1857 templates/js/translated/stock.js:2715
msgid "Purchase Order"
msgstr "Bestellung"
@@ -3276,7 +3292,7 @@ msgstr "Zuliefererteil"
#: order/models.py:884 order/templates/order/order_base.html:163
#: templates/js/translated/order.js:589 templates/js/translated/order.js:1118
#: templates/js/translated/part.js:910 templates/js/translated/part.js:937
-#: templates/js/translated/table_filters.js:317
+#: templates/js/translated/table_filters.js:312
msgid "Received"
msgstr "Empfangen"
@@ -3285,8 +3301,8 @@ msgid "Number of items received"
msgstr "Empfangene Objekt-Anzahl"
#: order/models.py:892 part/templates/part/prices.html:176 stock/models.py:608
-#: stock/serializers.py:170 stock/templates/stock/item_base.html:359
-#: templates/js/translated/stock.js:1787
+#: stock/serializers.py:170 stock/templates/stock/item_base.html:361
+#: templates/js/translated/stock.js:1911
msgid "Purchase Price"
msgstr "Preis"
@@ -3530,7 +3546,7 @@ msgstr "Bestellungsbeschreibung"
#: order/templates/order/order_base.html:94
#: order/templates/order/sales_order_base.html:89
-#: templates/js/translated/stock.js:2327
+#: templates/js/translated/stock.js:2451
msgid "Order Status"
msgstr "Bestellstatus"
@@ -3574,73 +3590,20 @@ msgstr "Fertigstellen dieser Bestellung bedeutet, dass sie und ihre Positionen n
msgid "After placing this purchase order, line items will no longer be editable."
msgstr "Nachdem diese Bestellung plaziert ist können die Positionen nicht länger bearbeitbar ist."
-#: order/templates/order/order_wizard/match_fields.html:9
-#: part/templates/part/bom_upload/match_fields.html:9
-#: part/templates/part/import_wizard/ajax_match_fields.html:9
-#: part/templates/part/import_wizard/match_fields.html:9
-msgid "Missing selections for the following required columns"
-msgstr "Es fehlt eine Auswahl für die folgende benötigte Spalte"
-
-#: order/templates/order/order_wizard/match_fields.html:20
-#: part/templates/part/bom_upload/match_fields.html:20
-#: part/templates/part/import_wizard/ajax_match_fields.html:20
-#: part/templates/part/import_wizard/match_fields.html:20
-msgid "Duplicate selections found, see below. Fix them then retry submitting."
-msgstr "Doppelte Auswahlen gefunden, siehe unten. Reparieren und erneut versuchen."
-
-#: order/templates/order/order_wizard/match_fields.html:29
-#: order/templates/order/order_wizard/match_parts.html:21
-#: part/templates/part/bom_upload/match_fields.html:29
-#: part/templates/part/bom_upload/match_parts.html:21
-#: part/templates/part/import_wizard/match_fields.html:29
-#: part/templates/part/import_wizard/match_references.html:21
-msgid "Submit Selections"
-msgstr "Auswahl übertragen"
-
-#: order/templates/order/order_wizard/match_fields.html:35
-#: part/templates/part/bom_upload/match_fields.html:35
-#: part/templates/part/import_wizard/ajax_match_fields.html:28
-#: part/templates/part/import_wizard/match_fields.html:35
-msgid "File Fields"
-msgstr "Datei-Felder"
-
-#: order/templates/order/order_wizard/match_fields.html:42
-#: part/templates/part/bom_upload/match_fields.html:42
-#: part/templates/part/import_wizard/ajax_match_fields.html:35
-#: part/templates/part/import_wizard/match_fields.html:42
-msgid "Remove column"
-msgstr "Spalte entfernen"
-
-#: order/templates/order/order_wizard/match_fields.html:60
-#: part/templates/part/bom_upload/match_fields.html:60
-#: part/templates/part/import_wizard/ajax_match_fields.html:53
-#: part/templates/part/import_wizard/match_fields.html:60
-msgid "Duplicate selection"
-msgstr "Auswahl duplizieren"
-
-#: order/templates/order/order_wizard/match_fields.html:71
-#: order/templates/order/order_wizard/match_parts.html:52
-#: part/templates/part/bom_upload/match_fields.html:71
-#: part/templates/part/bom_upload/match_parts.html:53
-#: part/templates/part/import_wizard/ajax_match_fields.html:64
-#: part/templates/part/import_wizard/ajax_match_references.html:42
-#: part/templates/part/import_wizard/match_fields.html:71
-#: part/templates/part/import_wizard/match_references.html:49
-#: templates/js/translated/build.js:300 templates/js/translated/build.js:1311
-#: templates/js/translated/order.js:537 templates/js/translated/order.js:1488
-#: templates/js/translated/stock.js:601 templates/js/translated/stock.js:769
-msgid "Remove row"
-msgstr "Zeile entfernen"
-
#: order/templates/order/order_wizard/match_parts.html:12
-#: part/templates/part/bom_upload/match_parts.html:12
#: part/templates/part/import_wizard/ajax_match_references.html:12
#: part/templates/part/import_wizard/match_references.html:12
msgid "Errors exist in the submitted data"
msgstr "Fehler in den übermittelten Daten"
+#: order/templates/order/order_wizard/match_parts.html:21
+#: part/templates/part/import_wizard/match_fields.html:29
+#: part/templates/part/import_wizard/match_references.html:21
+#: templates/patterns/wizard/match_fields.html:28
+msgid "Submit Selections"
+msgstr "Auswahl übertragen"
+
#: order/templates/order/order_wizard/match_parts.html:28
-#: part/templates/part/bom_upload/match_parts.html:28
#: part/templates/part/import_wizard/ajax_match_references.html:21
#: part/templates/part/import_wizard/match_references.html:28
msgid "Row"
@@ -3650,6 +3613,19 @@ msgstr "Zeile"
msgid "Select Supplier Part"
msgstr "Zulieferer-Teil auswählen"
+#: order/templates/order/order_wizard/match_parts.html:52
+#: part/templates/part/import_wizard/ajax_match_fields.html:64
+#: part/templates/part/import_wizard/ajax_match_references.html:42
+#: part/templates/part/import_wizard/match_fields.html:71
+#: part/templates/part/import_wizard/match_references.html:49
+#: templates/js/translated/bom.js:76 templates/js/translated/build.js:380
+#: templates/js/translated/build.js:528 templates/js/translated/build.js:1547
+#: templates/js/translated/order.js:537 templates/js/translated/order.js:1488
+#: templates/js/translated/stock.js:602 templates/js/translated/stock.js:770
+#: templates/patterns/wizard/match_fields.html:70
+msgid "Remove row"
+msgstr "Zeile entfernen"
+
#: order/templates/order/order_wizard/po_upload.html:8
msgid "Return to Orders"
msgstr "Zurück zu Bestellungen"
@@ -3659,9 +3635,9 @@ msgid "Upload File for Purchase Order"
msgstr "Datei zur Bestellung hochladen"
#: order/templates/order/order_wizard/po_upload.html:25
-#: part/templates/part/bom_upload/upload_file.html:21
#: part/templates/part/import_wizard/ajax_part_upload.html:10
#: part/templates/part/import_wizard/part_upload.html:23
+#: templates/patterns/wizard/upload.html:11
#, python-format
msgid "Step %(step)s of %(count)s"
msgstr "Schritt %(step)s von %(count)s"
@@ -3819,7 +3795,7 @@ msgid "Pending Shipments"
msgstr "Ausstehende Sendungen"
#: order/templates/order/sales_order_detail.html:48
-#: templates/js/translated/bom.js:732 templates/js/translated/build.js:1243
+#: templates/js/translated/bom.js:945 templates/js/translated/build.js:1465
msgid "Actions"
msgstr "Aktionen"
@@ -3896,11 +3872,11 @@ msgstr "{part} Stückpreis auf {price} und Menge auf {qty} aktualisiert"
#: part/api.py:499
msgid "Valid"
-msgstr ""
+msgstr "Gültig"
#: part/api.py:500
msgid "Validate entire Bill of Materials"
-msgstr ""
+msgstr "Gesamte Stückliste validieren"
#: part/api.py:505
msgid "This option must be selected"
@@ -3922,7 +3898,7 @@ msgstr "Standort für anfänglichen Bestand angeben"
msgid "This field is required"
msgstr "Dieses Feld ist erforderlich"
-#: part/bom.py:125 part/models.py:83 part/models.py:849
+#: part/bom.py:125 part/models.py:83 part/models.py:879
#: part/templates/part/category.html:108 part/templates/part/part_base.html:338
msgid "Default Location"
msgstr "Standard-Lagerort"
@@ -3968,7 +3944,7 @@ msgstr "Standard Stichwörter"
msgid "Default keywords for parts in this category"
msgstr "Standard-Stichworte für Teile dieser Kategorie"
-#: part/models.py:97 part/models.py:2533 part/templates/part/category.html:15
+#: part/models.py:97 part/models.py:2569 part/templates/part/category.html:15
#: part/templates/part/part_app_base.html:10
msgid "Part Category"
msgstr "Teil-Kategorie"
@@ -3994,408 +3970,478 @@ msgstr "Teile"
msgid "Invalid choice for parent part"
msgstr "Ungültige Auswahl für übergeordnetes Teil"
-#: part/models.py:502 part/models.py:514
+#: part/models.py:532 part/models.py:544
#, python-brace-format
msgid "Part '{p1}' is used in BOM for '{p2}' (recursive)"
msgstr "Teil '{p1}' wird in Stückliste für Teil '{p2}' benutzt (rekursiv)"
-#: part/models.py:644
+#: part/models.py:674
msgid "Next available serial numbers are"
msgstr "Nächste verfügbare Seriennummern wären"
-#: part/models.py:648
+#: part/models.py:678
msgid "Next available serial number is"
msgstr "Nächste verfügbare Seriennummer ist"
-#: part/models.py:653
+#: part/models.py:683
msgid "Most recent serial number is"
msgstr "Die neuste Seriennummer ist"
-#: part/models.py:748
+#: part/models.py:778
msgid "Duplicate IPN not allowed in part settings"
msgstr "Doppelte IPN in den Teil-Einstellungen nicht erlaubt"
-#: part/models.py:773
+#: part/models.py:803 part/models.py:2622
msgid "Part name"
msgstr "Name des Teils"
-#: part/models.py:780
+#: part/models.py:810
msgid "Is Template"
msgstr "Ist eine Vorlage"
-#: part/models.py:781
+#: part/models.py:811
msgid "Is this part a template part?"
msgstr "Ist dieses Teil eine Vorlage?"
-#: part/models.py:791
+#: part/models.py:821
msgid "Is this part a variant of another part?"
msgstr "Ist dieses Teil eine Variante eines anderen Teils?"
-#: part/models.py:792
+#: part/models.py:822
msgid "Variant Of"
msgstr "Variante von"
-#: part/models.py:798
+#: part/models.py:828
msgid "Part description"
msgstr "Beschreibung des Teils"
-#: part/models.py:803 part/templates/part/category.html:86
+#: part/models.py:833 part/templates/part/category.html:86
#: part/templates/part/part_base.html:302
msgid "Keywords"
msgstr "Schlüsselwörter"
-#: part/models.py:804
+#: part/models.py:834
msgid "Part keywords to improve visibility in search results"
msgstr "Schlüsselworte um die Sichtbarkeit in Suchergebnissen zu verbessern"
-#: part/models.py:811 part/models.py:2283 part/models.py:2532
+#: part/models.py:841 part/models.py:2319 part/models.py:2568
#: part/templates/part/part_base.html:265
#: part/templates/part/set_category.html:15
-#: templates/InvenTree/settings/settings.html:186
+#: templates/InvenTree/settings/settings.html:223
#: templates/js/translated/part.js:1268
msgid "Category"
msgstr "Kategorie"
-#: part/models.py:812
+#: part/models.py:842
msgid "Part category"
msgstr "Teile-Kategorie"
-#: part/models.py:817 part/templates/part/part_base.html:274
+#: part/models.py:847 part/templates/part/part_base.html:274
#: templates/js/translated/part.js:618 templates/js/translated/part.js:1221
-#: templates/js/translated/stock.js:1560
+#: templates/js/translated/stock.js:1684
msgid "IPN"
msgstr "IPN (Interne Produktnummer)"
-#: part/models.py:818
+#: part/models.py:848
msgid "Internal Part Number"
msgstr "Interne Teilenummer"
-#: part/models.py:824
+#: part/models.py:854
msgid "Part revision or version number"
msgstr "Revisions- oder Versionsnummer"
-#: part/models.py:825 part/templates/part/part_base.html:281
+#: part/models.py:855 part/templates/part/part_base.html:281
#: report/models.py:200 templates/js/translated/part.js:622
msgid "Revision"
msgstr "Revision"
-#: part/models.py:847
+#: part/models.py:877
msgid "Where is this item normally stored?"
msgstr "Wo wird dieses Teil normalerweise gelagert?"
-#: part/models.py:894 part/templates/part/part_base.html:347
+#: part/models.py:924 part/templates/part/part_base.html:347
msgid "Default Supplier"
msgstr "Standard Zulieferer"
-#: part/models.py:895
+#: part/models.py:925
msgid "Default supplier part"
msgstr "Standard Zuliefererteil"
-#: part/models.py:902
+#: part/models.py:932
msgid "Default Expiry"
msgstr "Standard Ablaufzeit"
-#: part/models.py:903
+#: part/models.py:933
msgid "Expiry time (in days) for stock items of this part"
msgstr "Ablauf-Zeit (in Tagen) für Bestand dieses Teils"
-#: part/models.py:908 part/templates/part/part_base.html:196
+#: part/models.py:938 part/templates/part/part_base.html:196
msgid "Minimum Stock"
msgstr "Minimaler Bestand"
-#: part/models.py:909
+#: part/models.py:939
msgid "Minimum allowed stock level"
msgstr "Minimal zulässiger Bestand"
-#: part/models.py:916
+#: part/models.py:946
msgid "Stock keeping units for this part"
msgstr "Stock Keeping Units (SKU) für dieses Teil"
-#: part/models.py:922
+#: part/models.py:952
msgid "Can this part be built from other parts?"
msgstr "Kann dieses Teil aus anderen Teilen angefertigt werden?"
-#: part/models.py:928
+#: part/models.py:958
msgid "Can this part be used to build other parts?"
msgstr "Kann dieses Teil zum Bauauftrag von anderen genutzt werden?"
-#: part/models.py:934
+#: part/models.py:964
msgid "Does this part have tracking for unique items?"
msgstr "Hat dieses Teil Tracking für einzelne Objekte?"
-#: part/models.py:939
+#: part/models.py:969
msgid "Can this part be purchased from external suppliers?"
msgstr "Kann dieses Teil von externen Zulieferern gekauft werden?"
-#: part/models.py:944
+#: part/models.py:974
msgid "Can this part be sold to customers?"
msgstr "Kann dieses Teil an Kunden verkauft werden?"
-#: part/models.py:949
+#: part/models.py:979
msgid "Is this part active?"
msgstr "Ist dieses Teil aktiv?"
-#: part/models.py:954
+#: part/models.py:984
msgid "Is this a virtual part, such as a software product or license?"
msgstr "Ist dieses Teil virtuell, wie zum Beispiel eine Software oder Lizenz?"
-#: part/models.py:959
+#: part/models.py:989
msgid "Part notes - supports Markdown formatting"
msgstr "Bemerkungen - unterstüzt Markdown-Formatierung"
-#: part/models.py:962
+#: part/models.py:992
msgid "BOM checksum"
msgstr "Prüfsumme der Stückliste"
-#: part/models.py:962
+#: part/models.py:992
msgid "Stored BOM checksum"
msgstr "Prüfsumme der Stückliste gespeichert"
-#: part/models.py:965
+#: part/models.py:995
msgid "BOM checked by"
msgstr "Stückliste kontrolliert von"
-#: part/models.py:967
+#: part/models.py:997
msgid "BOM checked date"
msgstr "BOM Kontrolldatum"
-#: part/models.py:971
+#: part/models.py:1001
msgid "Creation User"
msgstr "Erstellungs-Nutzer"
-#: part/models.py:1783
+#: part/models.py:1819
msgid "Sell multiple"
msgstr "Mehrere verkaufen"
-#: part/models.py:2333
+#: part/models.py:2369
msgid "Test templates can only be created for trackable parts"
msgstr "Test-Vorlagen können nur für verfolgbare Teile angelegt werden"
-#: part/models.py:2350
+#: part/models.py:2386
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:2370 templates/js/translated/part.js:1714
-#: templates/js/translated/stock.js:1284
+#: part/models.py:2406 templates/js/translated/part.js:1714
+#: templates/js/translated/stock.js:1312
msgid "Test Name"
msgstr "Test-Name"
-#: part/models.py:2371
+#: part/models.py:2407
msgid "Enter a name for the test"
msgstr "Namen für diesen Test eingeben"
-#: part/models.py:2376
+#: part/models.py:2412
msgid "Test Description"
msgstr "Test-Beschreibung"
-#: part/models.py:2377
+#: part/models.py:2413
msgid "Enter description for this test"
msgstr "Beschreibung für diesen Test eingeben"
-#: part/models.py:2382 templates/js/translated/part.js:1723
-#: templates/js/translated/table_filters.js:281
+#: part/models.py:2418 templates/js/translated/part.js:1723
+#: templates/js/translated/table_filters.js:276
msgid "Required"
msgstr "Benötigt"
-#: part/models.py:2383
+#: part/models.py:2419
msgid "Is this test required to pass?"
msgstr "Muss dieser Test erfolgreich sein?"
-#: part/models.py:2388 templates/js/translated/part.js:1731
+#: part/models.py:2424 templates/js/translated/part.js:1731
msgid "Requires Value"
msgstr "Erfordert Wert"
-#: part/models.py:2389
+#: part/models.py:2425
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:2394 templates/js/translated/part.js:1738
+#: part/models.py:2430 templates/js/translated/part.js:1738
msgid "Requires Attachment"
msgstr "Anhang muss eingegeben werden"
-#: part/models.py:2395
+#: part/models.py:2431
msgid "Does this test require a file attachment when adding a test result?"
msgstr "Muss für diesen Test ein Anhang für das Test-Ergebnis hinzugefügt werden?"
-#: part/models.py:2406
+#: part/models.py:2442
#, python-brace-format
msgid "Illegal character in template name ({c})"
msgstr "Ungültiges Zeichen im Vorlagename ({c})"
-#: part/models.py:2442
+#: part/models.py:2478
msgid "Parameter template name must be unique"
msgstr "Vorlagen-Name des Parameters muss eindeutig sein"
-#: part/models.py:2450
+#: part/models.py:2486
msgid "Parameter Name"
msgstr "Name des Parameters"
-#: part/models.py:2457
+#: part/models.py:2493
msgid "Parameter Units"
msgstr "Einheit des Parameters"
-#: part/models.py:2487
+#: part/models.py:2523
msgid "Parent Part"
msgstr "Ausgangsteil"
-#: part/models.py:2489 part/models.py:2538 part/models.py:2539
-#: templates/InvenTree/settings/settings.html:181
+#: part/models.py:2525 part/models.py:2574 part/models.py:2575
+#: templates/InvenTree/settings/settings.html:218
msgid "Parameter Template"
msgstr "Parameter Vorlage"
-#: part/models.py:2491
+#: part/models.py:2527
msgid "Data"
msgstr "Wert"
-#: part/models.py:2491
+#: part/models.py:2527
msgid "Parameter Value"
msgstr "Parameter Wert"
-#: part/models.py:2543 templates/InvenTree/settings/settings.html:190
+#: part/models.py:2579 templates/InvenTree/settings/settings.html:227
msgid "Default Value"
msgstr "Standard-Wert"
-#: part/models.py:2544
+#: part/models.py:2580
msgid "Default Parameter Value"
msgstr "Standard Parameter Wert"
+#: part/models.py:2614
+msgid "Part ID or part name"
+msgstr "Teilnummer oder Teilname"
+
+#: part/models.py:2617 templates/js/translated/model_renderers.js:182
+msgid "Part ID"
+msgstr "Teil-ID"
+
+#: part/models.py:2618
+msgid "Unique part ID value"
+msgstr "Eindeutige Teil-ID"
+
#: part/models.py:2621
+msgid "Part Name"
+msgstr "Name des Teils"
+
+#: part/models.py:2625
+msgid "Part IPN"
+msgstr "Teil-ID"
+
+#: part/models.py:2626
+msgid "Part IPN value"
+msgstr "IPN-Wert des Teils"
+
+#: part/models.py:2629
+msgid "Level"
+msgstr "Stufe"
+
+#: part/models.py:2630
+msgid "BOM level"
+msgstr "Stücklistenebene"
+
+#: part/models.py:2690
msgid "Select parent part"
msgstr "Ausgangsteil auswählen"
-#: part/models.py:2629
+#: part/models.py:2698
msgid "Sub part"
msgstr "Untergeordnetes Teil"
-#: part/models.py:2630
+#: part/models.py:2699
msgid "Select part to be used in BOM"
msgstr "Teil für die Nutzung in der Stückliste auswählen"
-#: part/models.py:2636
+#: part/models.py:2705
msgid "BOM quantity for this BOM item"
msgstr "Stücklisten-Anzahl für dieses Stücklisten-Teil"
-#: part/models.py:2638 templates/js/translated/bom.js:578
-#: templates/js/translated/bom.js:652
+#: part/models.py:2707 part/templates/part/upload_bom.html:58
+#: templates/js/translated/bom.js:791 templates/js/translated/bom.js:865
#: templates/js/translated/table_filters.js:92
msgid "Optional"
msgstr "Optional"
-#: part/models.py:2638
+#: part/models.py:2707
msgid "This BOM item is optional"
msgstr "Diese Stücklisten-Position ist optional"
-#: part/models.py:2641
+#: part/models.py:2710 part/templates/part/upload_bom.html:55
msgid "Overage"
msgstr "Überschuss"
-#: part/models.py:2642
+#: part/models.py:2711
msgid "Estimated build wastage quantity (absolute or percentage)"
msgstr "Geschätzter Ausschuss (absolut oder prozentual)"
-#: part/models.py:2645
+#: part/models.py:2714
msgid "BOM item reference"
msgstr "Referenz der Postion auf der Stückliste"
-#: part/models.py:2648
+#: part/models.py:2717
msgid "BOM item notes"
msgstr "Notizen zur Stücklisten-Position"
-#: part/models.py:2650
+#: part/models.py:2719
msgid "Checksum"
msgstr "Prüfsumme"
-#: part/models.py:2650
+#: part/models.py:2719
msgid "BOM line checksum"
msgstr "Prüfsumme der Stückliste"
-#: part/models.py:2654 templates/js/translated/bom.js:669
+#: part/models.py:2723 part/templates/part/upload_bom.html:57
+#: templates/js/translated/bom.js:882
#: templates/js/translated/table_filters.js:68
#: templates/js/translated/table_filters.js:88
msgid "Inherited"
msgstr "Geerbt"
-#: part/models.py:2655
+#: part/models.py:2724
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:2660 templates/js/translated/bom.js:661
+#: part/models.py:2729 part/templates/part/upload_bom.html:56
+#: templates/js/translated/bom.js:874
msgid "Allow Variants"
msgstr "Varianten zulassen"
-#: part/models.py:2661
+#: part/models.py:2730
msgid "Stock items for variant parts can be used for this BOM item"
msgstr "Bestand von Varianten kann für diese Stücklisten-Position verwendet werden"
-#: part/models.py:2746 stock/models.py:357
+#: part/models.py:2815 stock/models.py:357
msgid "Quantity must be integer value for trackable parts"
msgstr "Menge muss eine Ganzzahl sein"
-#: part/models.py:2755 part/models.py:2757
+#: part/models.py:2824 part/models.py:2826
msgid "Sub part must be specified"
msgstr "Zuliefererteil muss festgelegt sein"
-#: part/models.py:2886
+#: part/models.py:2955
msgid "BOM Item Substitute"
msgstr "Stücklisten Ersatzteile"
-#: part/models.py:2908
+#: part/models.py:2977
msgid "Substitute part cannot be the same as the master part"
msgstr "Ersatzteil kann nicht identisch mit dem Hauptteil sein"
-#: part/models.py:2920
+#: part/models.py:2989
msgid "Parent BOM item"
msgstr "Übergeordnete Stücklisten Position"
-#: part/models.py:2928
+#: part/models.py:2997
msgid "Substitute part"
msgstr "Ersatzteil"
-#: part/models.py:2939
+#: part/models.py:3008
msgid "Part 1"
msgstr "Teil 1"
-#: part/models.py:2943
+#: part/models.py:3012
msgid "Part 2"
msgstr "Teil 2"
-#: part/models.py:2943
+#: part/models.py:3012
msgid "Select Related Part"
msgstr "verknüpftes Teil auswählen"
-#: part/models.py:2975
+#: part/models.py:3044
msgid "Error creating relationship: check that the part is not related to itself and that the relationship is unique"
msgstr "Fehler bei Verwandschaft: Ist das Teil mit sich selbst verwandt oder ist das die Verwandtschaft nicht eindeutig?"
-#: part/serializers.py:659
+#: part/serializers.py:667
msgid "Select part to copy BOM from"
-msgstr ""
+msgstr "Bauteil auswählen, von dem Stückliste kopiert wird"
-#: part/serializers.py:670
+#: part/serializers.py:678
msgid "Remove Existing Data"
msgstr "Bestehende Daten entfernen"
-#: part/serializers.py:671
+#: part/serializers.py:679
msgid "Remove existing BOM items before copying"
-msgstr ""
+msgstr "Bestehende Stücklisten-Positionen vor dem Kopieren entfernen"
-#: part/serializers.py:676
+#: part/serializers.py:684
msgid "Include Inherited"
msgstr "Vererbtes einschließen"
-#: part/serializers.py:677
+#: part/serializers.py:685
msgid "Include BOM items which are inherited from templated parts"
msgstr ""
-#: part/serializers.py:682
+#: part/serializers.py:690
msgid "Skip Invalid Rows"
msgstr "Ungültige Zeilen überspringen"
-#: part/serializers.py:683
+#: part/serializers.py:691
msgid "Enable this option to skip invalid rows"
msgstr "Aktiviere diese Option, um ungültige Zeilen zu überspringen"
-#: part/tasks.py:53
+#: part/serializers.py:734
+msgid "Clear Existing BOM"
+msgstr "Bestehende Stückliste löschen"
+
+#: part/serializers.py:735
+msgid "Delete existing BOM items before uploading"
+msgstr ""
+
+#: part/serializers.py:762
+msgid "No part column specified"
+msgstr ""
+
+#: part/serializers.py:806
+msgid "Multiple matching parts found"
+msgstr "Mehrere übereinstimmende Teile gefunden"
+
+#: part/serializers.py:809
+msgid "No matching part found"
+msgstr "Keine passenden Teile gefunden"
+
+#: part/serializers.py:812
+msgid "Part is not designated as a component"
+msgstr "Teil ist nicht als Komponente angelegt"
+
+#: part/serializers.py:821
+msgid "Quantity not provided"
+msgstr "Menge nicht angegeben"
+
+#: part/serializers.py:829
+msgid "Invalid quantity"
+msgstr "Ungültige Menge"
+
+#: part/serializers.py:848
+msgid "At least one BOM item is required"
+msgstr ""
+
+#: part/tasks.py:58
msgid "Low stock notification"
msgstr "Benachrichtigungen über geringen Bestand"
@@ -4418,7 +4464,7 @@ msgstr "Die Stückliste für %(part)s wurde zuletzt von %(checker)s am
msgid "The BOM for %(part)s has not been validated."
msgstr "Die Stückliste für %(part)s wurde noch nicht kontrolliert."
-#: part/templates/part/bom.html:30 part/templates/part/detail.html:270
+#: part/templates/part/bom.html:30 part/templates/part/detail.html:273
msgid "BOM actions"
msgstr "Stücklisten-Aktionen"
@@ -4426,34 +4472,6 @@ msgstr "Stücklisten-Aktionen"
msgid "Delete Items"
msgstr "Einträge löschen"
-#: part/templates/part/bom_upload/match_parts.html:29
-msgid "Select Part"
-msgstr "Teil auswählen"
-
-#: part/templates/part/bom_upload/upload_file.html:8
-msgid "Return to BOM"
-msgstr "Zurück zur Stückliste"
-
-#: part/templates/part/bom_upload/upload_file.html:13
-msgid "Upload Bill of Materials"
-msgstr "Stückliste hochladen"
-
-#: part/templates/part/bom_upload/upload_file.html:33
-msgid "Requirements for BOM upload"
-msgstr "Anforderungen für Stückliste-Datei"
-
-#: part/templates/part/bom_upload/upload_file.html:35
-msgid "The BOM file must contain the required named columns as provided in the "
-msgstr "Die Stückliste-Datei muss die aufgeführten Spalten enthalten; siehe"
-
-#: part/templates/part/bom_upload/upload_file.html:35
-msgid "BOM Upload Template"
-msgstr "Vorlage für Stückliste"
-
-#: part/templates/part/bom_upload/upload_file.html:36
-msgid "Each part must already exist in the database"
-msgstr "Jedes Teil muss bereits in der Datenbank bestehen"
-
#: 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"
@@ -4519,7 +4537,7 @@ msgstr "Exportieren"
msgid "Create new part"
msgstr "Neues Teil anlegen"
-#: part/templates/part/category.html:161 templates/js/translated/bom.js:152
+#: part/templates/part/category.html:161 templates/js/translated/bom.js:365
msgid "New Part"
msgstr "Neues Teil"
@@ -4639,138 +4657,168 @@ msgstr "Test Vorlage hinzufügen"
msgid "Sales Order Allocations"
msgstr "Verkaufsauftragszuweisungen"
-#: part/templates/part/detail.html:159
+#: part/templates/part/detail.html:162
msgid "Part Variants"
msgstr "Teil Varianten"
-#: part/templates/part/detail.html:163
+#: part/templates/part/detail.html:166
msgid "Create new variant"
msgstr "Neue Variante anlegen"
-#: part/templates/part/detail.html:164
+#: part/templates/part/detail.html:167
msgid "New Variant"
msgstr "neue Variante anlegen"
-#: part/templates/part/detail.html:191
+#: part/templates/part/detail.html:194
msgid "Add new parameter"
msgstr "Parameter hinzufügen"
-#: part/templates/part/detail.html:228 part/templates/part/part_sidebar.html:49
+#: part/templates/part/detail.html:231 part/templates/part/part_sidebar.html:52
msgid "Related Parts"
msgstr "Verknüpfte Teile"
-#: part/templates/part/detail.html:232 part/templates/part/detail.html:233
+#: part/templates/part/detail.html:235 part/templates/part/detail.html:236
msgid "Add Related"
msgstr "Verknüpftes Teil hinzufügen"
-#: part/templates/part/detail.html:253 part/templates/part/part_sidebar.html:17
+#: part/templates/part/detail.html:256 part/templates/part/part_sidebar.html:18
msgid "Bill of Materials"
msgstr "Stückliste"
-#: part/templates/part/detail.html:258
+#: part/templates/part/detail.html:261
msgid "Export actions"
msgstr "Export-Aktionen"
-#: part/templates/part/detail.html:262 templates/js/translated/bom.js:70
+#: part/templates/part/detail.html:265 templates/js/translated/bom.js:283
msgid "Export BOM"
msgstr "Stückliste exportieren"
-#: part/templates/part/detail.html:264
+#: part/templates/part/detail.html:267
msgid "Print BOM Report"
msgstr "Stücklisten-Bericht drucken"
-#: part/templates/part/detail.html:274
+#: part/templates/part/detail.html:277
msgid "Upload BOM"
msgstr "Stückliste hochladen"
-#: part/templates/part/detail.html:276 templates/js/translated/part.js:272
+#: part/templates/part/detail.html:279 templates/js/translated/part.js:272
msgid "Copy BOM"
msgstr "Stückliste kopieren"
-#: part/templates/part/detail.html:278
+#: part/templates/part/detail.html:281
msgid "Validate BOM"
msgstr "Stückliste überprüfen"
-#: part/templates/part/detail.html:283
+#: part/templates/part/detail.html:286
msgid "New BOM Item"
msgstr "Neue Stücklisten-Position"
-#: part/templates/part/detail.html:284
+#: part/templates/part/detail.html:287
msgid "Add BOM Item"
msgstr "Stücklisten-Position hinzufügen"
-#: part/templates/part/detail.html:297
+#: part/templates/part/detail.html:300
msgid "Assemblies"
msgstr "Baugruppen"
-#: part/templates/part/detail.html:314
+#: part/templates/part/detail.html:317
msgid "Part Builds"
msgstr "Gefertigte Teile"
-#: part/templates/part/detail.html:339
+#: part/templates/part/detail.html:342
msgid "Build Order Allocations"
msgstr "Bauauftragszuweisungen"
-#: part/templates/part/detail.html:349
+#: part/templates/part/detail.html:352
msgid "Part Suppliers"
msgstr "Zulieferer"
-#: part/templates/part/detail.html:377
+#: part/templates/part/detail.html:380
msgid "Part Manufacturers"
msgstr "Teil-Hersteller"
-#: part/templates/part/detail.html:393
+#: part/templates/part/detail.html:396
msgid "Delete manufacturer parts"
msgstr "Herstellerteile löschen"
-#: part/templates/part/detail.html:575
+#: part/templates/part/detail.html:578
msgid "Delete selected BOM items?"
msgstr "Ausgewählte Stücklistenpositionen löschen?"
-#: part/templates/part/detail.html:576
+#: part/templates/part/detail.html:579
msgid "All selected BOM items will be deleted"
msgstr "Alle ausgewählte Stücklistenpositionen werden gelöscht"
-#: part/templates/part/detail.html:625
+#: part/templates/part/detail.html:628
msgid "Create BOM Item"
msgstr "Stücklisten-Position anlegen"
-#: part/templates/part/detail.html:682
+#: part/templates/part/detail.html:685
msgid "Related Part"
msgstr "verknüpftes Teil"
-#: part/templates/part/detail.html:690
+#: part/templates/part/detail.html:693
msgid "Add Related Part"
msgstr "verknüpftes Teil hinzufügen"
-#: part/templates/part/detail.html:785
+#: part/templates/part/detail.html:788
msgid "Add Test Result Template"
msgstr "Testergebnis-Vorlage hinzufügen"
-#: part/templates/part/detail.html:842
+#: part/templates/part/detail.html:845
msgid "Edit Part Notes"
msgstr "Teilenotizen bearbeiten"
-#: part/templates/part/detail.html:955
+#: part/templates/part/detail.html:958
#, python-format
msgid "Purchase Unit Price - %(currency)s"
msgstr "Stückpreis Einkauf - %(currency)s"
-#: part/templates/part/detail.html:967
+#: part/templates/part/detail.html:970
#, python-format
msgid "Unit Price-Cost Difference - %(currency)s"
msgstr "Stückpreis Differenz - %(currency)s"
-#: part/templates/part/detail.html:979
+#: part/templates/part/detail.html:982
#, python-format
msgid "Supplier Unit Cost - %(currency)s"
msgstr "Stückpreis Zulieferer - %(currency)s"
-#: part/templates/part/detail.html:1068
+#: part/templates/part/detail.html:1071
#, python-format
msgid "Unit Price - %(currency)s"
msgstr "Stückpreis - %(currency)s"
+#: part/templates/part/import_wizard/ajax_match_fields.html:9
+#: part/templates/part/import_wizard/match_fields.html:9
+#: templates/patterns/wizard/match_fields.html:8
+msgid "Missing selections for the following required columns"
+msgstr "Es fehlt eine Auswahl für die folgende benötigte Spalte"
+
+#: part/templates/part/import_wizard/ajax_match_fields.html:20
+#: part/templates/part/import_wizard/match_fields.html:20
+#: templates/patterns/wizard/match_fields.html:19
+msgid "Duplicate selections found, see below. Fix them then retry submitting."
+msgstr "Doppelte Auswahlen gefunden, siehe unten. Reparieren und erneut versuchen."
+
+#: part/templates/part/import_wizard/ajax_match_fields.html:28
+#: part/templates/part/import_wizard/match_fields.html:35
+#: templates/patterns/wizard/match_fields.html:34
+msgid "File Fields"
+msgstr "Datei-Felder"
+
+#: part/templates/part/import_wizard/ajax_match_fields.html:35
+#: part/templates/part/import_wizard/match_fields.html:42
+#: templates/patterns/wizard/match_fields.html:41
+msgid "Remove column"
+msgstr "Spalte entfernen"
+
+#: part/templates/part/import_wizard/ajax_match_fields.html:53
+#: part/templates/part/import_wizard/match_fields.html:60
+#: templates/patterns/wizard/match_fields.html:59
+msgid "Duplicate selection"
+msgstr "Auswahl duplizieren"
+
#: part/templates/part/import_wizard/ajax_part_upload.html:29
#: part/templates/part/import_wizard/part_upload.html:53
msgid "Unsuffitient privileges."
@@ -4819,7 +4867,7 @@ msgid "Show pricing information"
msgstr "Kosteninformationen ansehen"
#: part/templates/part/part_base.html:56
-#: stock/templates/stock/item_base.html:110
+#: stock/templates/stock/item_base.html:112
#: stock/templates/stock/location.html:44
msgid "Stock actions"
msgstr "Bestands-Aktionen"
@@ -4912,7 +4960,7 @@ 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:690
+#: part/templates/part/part_base.html:239 templates/js/translated/bom.js:903
msgid "Can Build"
msgstr "Herstellbar"
@@ -4930,7 +4978,7 @@ msgid "Latest Serial Number"
msgstr "letzte Seriennummer"
#: part/templates/part/part_base.html:328
-#: stock/templates/stock/item_base.html:166
+#: stock/templates/stock/item_base.html:168
msgid "Search for serial number"
msgstr "Nach Seriennummer suchen"
@@ -4969,7 +5017,7 @@ msgid "Total Cost"
msgstr "Gesamtkosten"
#: part/templates/part/part_pricing.html:40 part/templates/part/prices.html:40
-#: templates/js/translated/bom.js:644
+#: templates/js/translated/bom.js:857
msgid "No supplier pricing available"
msgstr "Keine Zulieferer-Preise verfügbar"
@@ -5003,20 +5051,20 @@ msgstr "Interner Preis"
msgid "No pricing information is available for this part."
msgstr "Keine Preise für dieses Teil verfügbar"
-#: part/templates/part/part_sidebar.html:11
+#: part/templates/part/part_sidebar.html:12
msgid "Variants"
msgstr "Varianten"
-#: part/templates/part/part_sidebar.html:25
+#: part/templates/part/part_sidebar.html:26
msgid "Used In"
msgstr "Benutzt in"
-#: part/templates/part/part_sidebar.html:31
+#: part/templates/part/part_sidebar.html:34
#: stock/templates/stock/stock_sidebar.html:8
msgid "Allocations"
msgstr ""
-#: part/templates/part/part_sidebar.html:45
+#: part/templates/part/part_sidebar.html:48
msgid "Test Templates"
msgstr "Testvorlagen"
@@ -5091,7 +5139,7 @@ msgstr "Verkaufspreis anzeigen"
msgid "Calculation parameters"
msgstr "Berechnungsparameter"
-#: part/templates/part/prices.html:155 templates/js/translated/bom.js:638
+#: part/templates/part/prices.html:155 templates/js/translated/bom.js:851
msgid "Supplier Cost"
msgstr "Zuliefererkosten"
@@ -5113,7 +5161,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:1699
+#: part/templates/part/prices.html:215 part/views.py:1390
msgid "Add Internal Price Break"
msgstr "Interne Preisspanne hinzufügen"
@@ -5133,7 +5181,7 @@ 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:600
+#: part/templates/part/stock_count.html:7 templates/js/translated/bom.js:813
#: templates/js/translated/part.js:497 templates/js/translated/part.js:1122
#: templates/js/translated/part.js:1309
msgid "No Stock"
@@ -5143,6 +5191,43 @@ msgstr "Kein Bestand"
msgid "Low Stock"
msgstr "niedriger Bestand"
+#: part/templates/part/upload_bom.html:8
+msgid "Return to BOM"
+msgstr "Zurück zur Stückliste"
+
+#: part/templates/part/upload_bom.html:13
+msgid "Upload Bill of Materials"
+msgstr "Stückliste hochladen"
+
+#: part/templates/part/upload_bom.html:19
+msgid "BOM upload requirements"
+msgstr ""
+
+#: part/templates/part/upload_bom.html:23
+#: part/templates/part/upload_bom.html:90
+msgid "Upload BOM File"
+msgstr ""
+
+#: part/templates/part/upload_bom.html:29
+msgid "Submit BOM Data"
+msgstr ""
+
+#: part/templates/part/upload_bom.html:37
+msgid "Requirements for BOM upload"
+msgstr "Anforderungen für Stückliste-Datei"
+
+#: part/templates/part/upload_bom.html:39
+msgid "The BOM file must contain the required named columns as provided in the "
+msgstr "Die Stückliste-Datei muss die aufgeführten Spalten enthalten; siehe"
+
+#: part/templates/part/upload_bom.html:39
+msgid "BOM Upload Template"
+msgstr "Vorlage für Stückliste"
+
+#: part/templates/part/upload_bom.html:40
+msgid "Each part must already exist in the database"
+msgstr "Jedes Teil muss bereits in der Datenbank bestehen"
+
#: part/templates/part/variant_part.html:9
msgid "Create new part variant"
msgstr "Neue Teilevariante anlegen"
@@ -5156,104 +5241,96 @@ msgstr "Neue Variante von Vorlage anlegen '%(full_name)s'."
msgid "Unknown database"
msgstr "Unbekannte Datenbank"
-#: part/views.py:93
+#: part/views.py:90
msgid "Set Part Category"
msgstr "Teil-Kategorie auswählen"
-#: part/views.py:143
+#: part/views.py:140
#, python-brace-format
msgid "Set category for {n} parts"
msgstr "Kategorie für {n} Teile setzen"
-#: part/views.py:215
+#: part/views.py:212
msgid "Match References"
msgstr "Referenzen zuteilen"
-#: part/views.py:511
+#: part/views.py:509
msgid "None"
msgstr "Kein(e)"
-#: part/views.py:570
+#: part/views.py:568
msgid "Part QR Code"
msgstr "Teil-QR-Code"
-#: part/views.py:672
+#: part/views.py:670
msgid "Select Part Image"
msgstr "Teilbild auswählen"
-#: part/views.py:698
+#: part/views.py:696
msgid "Updated part image"
msgstr "Teilbild aktualisiert"
-#: part/views.py:701
+#: part/views.py:699
msgid "Part image not found"
msgstr "Teilbild nicht gefunden"
-#: part/views.py:775
-msgid "Match Parts"
-msgstr "Teile zuordnen"
-
-#: part/views.py:1110
-msgid "Export Bill of Materials"
-msgstr "Stückliste exportieren"
-
-#: part/views.py:1159
+#: part/views.py:850
msgid "Confirm Part Deletion"
msgstr "Löschen des Teils bestätigen"
-#: part/views.py:1166
+#: part/views.py:857
msgid "Part was deleted"
msgstr "Teil wurde gelöscht"
-#: part/views.py:1175
+#: part/views.py:866
msgid "Part Pricing"
msgstr "Teilbepreisung"
-#: part/views.py:1324
+#: part/views.py:1015
msgid "Create Part Parameter Template"
msgstr "Teilparametervorlage anlegen"
-#: part/views.py:1334
+#: part/views.py:1025
msgid "Edit Part Parameter Template"
msgstr "Teilparametervorlage bearbeiten"
-#: part/views.py:1341
+#: part/views.py:1032
msgid "Delete Part Parameter Template"
msgstr "Teilparametervorlage löschen"
-#: part/views.py:1400 templates/js/translated/part.js:315
+#: part/views.py:1091 templates/js/translated/part.js:315
msgid "Edit Part Category"
msgstr "Teil-Kategorie bearbeiten"
-#: part/views.py:1438
+#: part/views.py:1129
msgid "Delete Part Category"
msgstr "Teil-Kategorie löschen"
-#: part/views.py:1444
+#: part/views.py:1135
msgid "Part category was deleted"
msgstr "Teil-Kategorie wurde gelöscht"
-#: part/views.py:1453
+#: part/views.py:1144
msgid "Create Category Parameter Template"
msgstr "Kategorieparametervorlage anlegen"
-#: part/views.py:1554
+#: part/views.py:1245
msgid "Edit Category Parameter Template"
msgstr "Kategorieparametervorlage bearbeiten"
-#: part/views.py:1610
+#: part/views.py:1301
msgid "Delete Category Parameter Template"
msgstr "Kategorieparametervorlage löschen"
-#: part/views.py:1632
+#: part/views.py:1323
msgid "Added new price break"
msgstr "neue Preisstaffel hinzufügt"
-#: part/views.py:1708
+#: part/views.py:1399
msgid "Edit Internal Price Break"
msgstr "Interne Preisspanne bearbeiten"
-#: part/views.py:1716
+#: part/views.py:1407
msgid "Delete Internal Price Break"
msgstr "Interne Preisspanne löschen"
@@ -5287,27 +5364,27 @@ msgstr ""
#: plugin/models.py:47
msgid "Is the plugin active"
-msgstr ""
+msgstr "Ist das Plugin aktiv"
#: plugin/models.py:199
msgid "Plugin"
-msgstr ""
+msgstr "Plugin"
#: plugin/samples/integration/sample.py:42
msgid "Enable PO"
-msgstr ""
+msgstr "Bestellungen aktivieren"
#: plugin/samples/integration/sample.py:43
msgid "Enable PO functionality in InvenTree interface"
-msgstr ""
+msgstr "Kauf-Funktionalität in InvenTree aktivieren"
#: plugin/samples/integration/sample.py:48
msgid "API Key"
-msgstr ""
+msgstr "API-Schlüssel"
#: plugin/samples/integration/sample.py:49
msgid "Key required for accessing external API"
-msgstr ""
+msgstr "Schlüssel für den Zugriff auf das externe API"
#: plugin/samples/integration/sample.py:52
msgid "Numerical"
@@ -5455,12 +5532,12 @@ msgid "Stock Item Test Report"
msgstr "Lagerartikel Test-Bericht"
#: report/templates/report/inventree_test_report_base.html:79
-#: stock/models.py:519 stock/templates/stock/item_base.html:156
-#: templates/js/translated/build.js:293 templates/js/translated/build.js:697
-#: templates/js/translated/build.js:1073
+#: stock/models.py:519 stock/templates/stock/item_base.html:158
+#: templates/js/translated/build.js:373 templates/js/translated/build.js:521
+#: templates/js/translated/build.js:919 templates/js/translated/build.js:1295
#: 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:423
+#: templates/js/translated/order.js:2034 templates/js/translated/stock.js:424
msgid "Serial Number"
msgstr "Seriennummer"
@@ -5481,7 +5558,7 @@ msgstr "Ergebnis"
#: report/templates/report/inventree_test_report_base.html:97
#: templates/InvenTree/settings/plugin.html:50
#: templates/InvenTree/settings/plugin_settings.html:38
-#: templates/js/translated/order.js:849 templates/js/translated/stock.js:2525
+#: templates/js/translated/order.js:849 templates/js/translated/stock.js:2649
msgid "Date"
msgstr "Datum"
@@ -5499,71 +5576,67 @@ msgid "Installed Items"
msgstr "Verbaute Objekte"
#: report/templates/report/inventree_test_report_base.html:137
-#: templates/js/translated/stock.js:586 templates/js/translated/stock.js:756
-#: templates/js/translated/stock.js:2785
+#: templates/js/translated/stock.js:587 templates/js/translated/stock.js:757
+#: templates/js/translated/stock.js:2909
msgid "Serial"
msgstr "Seriennummer"
-#: stock/api.py:476
+#: stock/api.py:501
msgid "Quantity is required"
msgstr "Menge ist erforderlich"
-#: stock/api.py:483
+#: stock/api.py:508
msgid "Valid part must be supplied"
msgstr ""
-#: stock/forms.py:77 stock/forms.py:251 stock/models.py:576
-#: stock/templates/stock/item_base.html:193
-#: templates/js/translated/stock.js:1709
+#: stock/api.py:535
+msgid "Serial numbers cannot be supplied for a non-trackable part"
+msgstr ""
+
+#: stock/forms.py:74 stock/forms.py:198 stock/models.py:576
+#: stock/templates/stock/item_base.html:195
+#: templates/js/translated/stock.js:1833
msgid "Expiry Date"
msgstr "Ablaufdatum"
-#: stock/forms.py:78 stock/forms.py:252
+#: stock/forms.py:75 stock/forms.py:199
msgid "Expiration date for this stock item"
msgstr "Ablaufdatum für diesen Lagerartikel"
-#: stock/forms.py:81
+#: stock/forms.py:78
msgid "Enter unique serial numbers (or leave blank)"
msgstr "Eindeutige Seriennummern eingeben (oder leer lassen)"
-#: stock/forms.py:136
+#: stock/forms.py:133
msgid "Destination for serialized stock (by default, will remain in current location)"
msgstr "Lagerort für serial"
-#: stock/forms.py:138
+#: stock/forms.py:135
msgid "Serial numbers"
msgstr "Seriennummern"
-#: stock/forms.py:138
+#: stock/forms.py:135
msgid "Unique serial numbers (must match quantity)"
msgstr "Anzahl der eindeutigen Seriennummern (muss mit der Anzahl übereinstimmen)"
-#: stock/forms.py:140 stock/forms.py:224
+#: stock/forms.py:137 stock/forms.py:171
msgid "Add transaction note (optional)"
msgstr " Transaktionsnotizen hinzufügen (optional)"
-#: stock/forms.py:180
-msgid "Stock item to install"
-msgstr "Lagerartikel für Einbau"
-
-#: stock/forms.py:210
-msgid "Must not exceed available quantity"
-msgstr "Anzahl darf die verfügbare Anzahl nicht überschreiten"
-
-#: stock/forms.py:222
+#: stock/forms.py:169
msgid "Destination location for uninstalled items"
msgstr "Ziel Lagerort für unverbaute Objekte"
-#: stock/forms.py:226
+#: stock/forms.py:173
msgid "Confirm uninstall"
msgstr "nicht mehr verbauen bestätigen"
-#: stock/forms.py:226
+#: stock/forms.py:173
msgid "Confirm removal of installed stock items"
msgstr "Entfernen der verbauten Lagerartikel bestätigen"
#: stock/models.py:62 stock/models.py:613
-#: stock/templates/stock/item_base.html:416
+#: stock/templates/stock/item_base.html:418
msgid "Owner"
msgstr "Besitzer"
@@ -5625,7 +5698,7 @@ msgstr "Wo wird dieses Teil normalerweise gelagert?"
msgid "Packaging this stock item is stored in"
msgstr "Die Verpackung dieses Lagerartikel ist gelagert in"
-#: stock/models.py:502 stock/templates/stock/item_base.html:298
+#: stock/models.py:502 stock/templates/stock/item_base.html:300
msgid "Installed In"
msgstr "verbaut in"
@@ -5735,7 +5808,7 @@ msgstr ""
msgid "Serialized stock cannot be merged"
msgstr ""
-#: stock/models.py:1214 stock/serializers.py:775
+#: stock/models.py:1214 stock/serializers.py:832
msgid "Duplicate stock items"
msgstr "Artikel duplizeren"
@@ -5771,7 +5844,7 @@ msgstr "Anhang muss für diesen Test hochgeladen werden"
msgid "Test name"
msgstr "Name des Tests"
-#: stock/models.py:1983 templates/js/translated/table_filters.js:271
+#: stock/models.py:1983
msgid "Test result"
msgstr "Testergebnis"
@@ -5808,7 +5881,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:732 stock/serializers.py:973
+#: stock/serializers.py:326 stock/serializers.py:789 stock/serializers.py:1030
msgid "Destination stock location"
msgstr "Ziel-Bestand"
@@ -5820,63 +5893,79 @@ msgstr "Optionales Notizfeld"
msgid "Serial numbers cannot be assigned to this part"
msgstr "Seriennummern können diesem Teil nicht zugewiesen werden"
-#: stock/serializers.py:589
+#: stock/serializers.py:363 stock/views.py:1108
+msgid "Serial numbers already exist"
+msgstr "Seriennummern existieren bereits"
+
+#: stock/serializers.py:405
+msgid "Select stock item to install"
+msgstr ""
+
+#: stock/serializers.py:421
+msgid "Stock item is unavailable"
+msgstr ""
+
+#: stock/serializers.py:428
+msgid "Selected part is not in the Bill of Materials"
+msgstr ""
+
+#: stock/serializers.py:646
msgid "Part must be salable"
msgstr ""
-#: stock/serializers.py:593
+#: stock/serializers.py:650
msgid "Item is allocated to a sales order"
msgstr "Artikel ist einem Kundenauftrag zugeordnet"
-#: stock/serializers.py:597
+#: stock/serializers.py:654
msgid "Item is allocated to a build order"
msgstr "Artikel ist einem Fertigungsauftrag zugeordnet"
-#: stock/serializers.py:627
+#: stock/serializers.py:684
msgid "Customer to assign stock items"
msgstr ""
-#: stock/serializers.py:633
+#: stock/serializers.py:690
msgid "Selected company is not a customer"
msgstr "Ausgewählte Firma ist kein Kunde"
-#: stock/serializers.py:641
+#: stock/serializers.py:698
msgid "Stock assignment notes"
msgstr ""
-#: stock/serializers.py:651 stock/serializers.py:881
+#: stock/serializers.py:708 stock/serializers.py:938
msgid "A list of stock items must be provided"
msgstr "Eine Liste der Lagerbestände muss angegeben werden"
-#: stock/serializers.py:739
+#: stock/serializers.py:796
msgid "Stock merging notes"
msgstr ""
-#: stock/serializers.py:744
+#: stock/serializers.py:801
msgid "Allow mismatched suppliers"
msgstr ""
-#: stock/serializers.py:745
+#: stock/serializers.py:802
msgid "Allow stock items with different supplier parts to be merged"
msgstr ""
-#: stock/serializers.py:750
+#: stock/serializers.py:807
msgid "Allow mismatched status"
msgstr ""
-#: stock/serializers.py:751
+#: stock/serializers.py:808
msgid "Allow stock items with different status codes to be merged"
msgstr ""
-#: stock/serializers.py:761
+#: stock/serializers.py:818
msgid "At least two stock items must be provided"
msgstr ""
-#: stock/serializers.py:843
+#: stock/serializers.py:900
msgid "StockItem primary key value"
msgstr "Primärschlüssel Lagerelement"
-#: stock/serializers.py:871
+#: stock/serializers.py:928
msgid "Stock transaction notes"
msgstr "Bestandsbewegungsnotizen"
@@ -5921,22 +6010,14 @@ msgstr "Testdaten hinzufügen"
msgid "Installed Stock Items"
msgstr "Installierte Lagerartikel"
-#: stock/templates/stock/item.html:154 stock/views.py:482
+#: stock/templates/stock/item.html:154 templates/js/translated/stock.js:3018
msgid "Install Stock Item"
msgstr "Lagerartikel installieren"
-#: stock/templates/stock/item.html:309 stock/templates/stock/item.html:334
+#: stock/templates/stock/item.html:304 templates/js/translated/stock.js:1480
msgid "Add Test Result"
msgstr "Testergebnis hinzufügen"
-#: stock/templates/stock/item.html:354
-msgid "Edit Test Result"
-msgstr "Testergebnis bearbeiten"
-
-#: stock/templates/stock/item.html:368
-msgid "Delete Test Result"
-msgstr "Testergebnis löschen"
-
#: stock/templates/stock/item_base.html:42
#: templates/js/translated/barcode.js:330
#: templates/js/translated/barcode.js:335
@@ -5997,129 +6078,129 @@ msgstr "Lagerartikel deinstallieren"
msgid "Uninstall"
msgstr "Deinstallieren"
-#: stock/templates/stock/item_base.html:101
+#: stock/templates/stock/item_base.html:102
msgid "Install stock item"
msgstr "Lagerartikel installieren"
-#: stock/templates/stock/item_base.html:101
+#: stock/templates/stock/item_base.html:102
msgid "Install"
msgstr "Installieren"
-#: stock/templates/stock/item_base.html:115
+#: stock/templates/stock/item_base.html:117
msgid "Convert to variant"
msgstr "in Variante ändern"
-#: stock/templates/stock/item_base.html:118
+#: stock/templates/stock/item_base.html:120
msgid "Duplicate stock item"
msgstr "Lagerartikel duplizieren"
-#: stock/templates/stock/item_base.html:120
+#: stock/templates/stock/item_base.html:122
msgid "Edit stock item"
msgstr "Lagerartikel bearbeiten"
-#: stock/templates/stock/item_base.html:123
+#: stock/templates/stock/item_base.html:125
msgid "Delete stock item"
msgstr "Lagerartikel löschen"
-#: stock/templates/stock/item_base.html:161
+#: stock/templates/stock/item_base.html:163
msgid "previous page"
msgstr "vorherige Seite"
-#: stock/templates/stock/item_base.html:161
+#: stock/templates/stock/item_base.html:163
msgid "Navigate to previous serial number"
msgstr "Zur vorherigen Seriennummer wechseln"
-#: stock/templates/stock/item_base.html:170
+#: stock/templates/stock/item_base.html:172
msgid "next page"
msgstr "nächste Seite"
-#: stock/templates/stock/item_base.html:170
+#: stock/templates/stock/item_base.html:172
msgid "Navigate to next serial number"
msgstr "Zur nächsten Seriennummer wechseln"
-#: stock/templates/stock/item_base.html:197
+#: stock/templates/stock/item_base.html:199
#, 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:197
+#: stock/templates/stock/item_base.html:199
#: templates/js/translated/table_filters.js:252
msgid "Expired"
msgstr "abgelaufen"
-#: stock/templates/stock/item_base.html:199
+#: stock/templates/stock/item_base.html:201
#, 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:199
+#: stock/templates/stock/item_base.html:201
#: templates/js/translated/table_filters.js:258
msgid "Stale"
msgstr "überfällig"
-#: stock/templates/stock/item_base.html:206
-#: templates/js/translated/stock.js:1722
+#: stock/templates/stock/item_base.html:208
+#: templates/js/translated/stock.js:1846
msgid "Last Updated"
msgstr "Zuletzt aktualisiert"
-#: stock/templates/stock/item_base.html:211
+#: stock/templates/stock/item_base.html:213
msgid "Last Stocktake"
msgstr "Letzte Inventur"
-#: stock/templates/stock/item_base.html:215
+#: stock/templates/stock/item_base.html:217
msgid "No stocktake performed"
msgstr "Keine Inventur ausgeführt"
-#: stock/templates/stock/item_base.html:233
+#: stock/templates/stock/item_base.html:235
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:240
+#: stock/templates/stock/item_base.html:242
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:241
+#: stock/templates/stock/item_base.html:243
msgid "Edit the stock item from the build view."
msgstr "Ändern des Lagerartikel in der Bauauftrag-Ansicht."
-#: stock/templates/stock/item_base.html:254
+#: stock/templates/stock/item_base.html:256
msgid "This stock item has not passed all required tests"
msgstr "Dieser Lagerartikel hat nicht alle Tests bestanden"
-#: stock/templates/stock/item_base.html:262
+#: stock/templates/stock/item_base.html:264
msgid "This stock item is allocated to Sales Order"
msgstr ""
-#: stock/templates/stock/item_base.html:270
+#: stock/templates/stock/item_base.html:272
msgid "This stock item is allocated to Build Order"
msgstr ""
-#: stock/templates/stock/item_base.html:276
+#: stock/templates/stock/item_base.html:278
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:317
-#: templates/js/translated/build.js:1095
+#: stock/templates/stock/item_base.html:319
+#: templates/js/translated/build.js:1317
msgid "No location set"
msgstr "Kein Lagerort gesetzt"
-#: stock/templates/stock/item_base.html:324
+#: stock/templates/stock/item_base.html:326
msgid "Barcode Identifier"
msgstr "Barcode-Bezeichner"
-#: stock/templates/stock/item_base.html:366
+#: stock/templates/stock/item_base.html:368
msgid "Parent Item"
msgstr "Elternposition"
-#: stock/templates/stock/item_base.html:384
+#: stock/templates/stock/item_base.html:386
msgid "No manufacturer set"
msgstr "Kein Hersteller ausgewählt"
-#: stock/templates/stock/item_base.html:409
+#: stock/templates/stock/item_base.html:411
msgid "Tests"
msgstr "Tests"
-#: stock/templates/stock/item_base.html:499
+#: stock/templates/stock/item_base.html:492
msgid "Edit Stock Status"
msgstr "Bestandsstatus bearbeiten"
@@ -6132,39 +6213,6 @@ msgstr "Sind Sie sicher, dass Sie diesen Lagerartikel löschen wollen?"
msgid "This will remove %(qty)s units of %(full_name)s from stock."
msgstr "Damit werden %(qty)s Elemente vom Bestand von %(full_name)s entfernt."
-#: stock/templates/stock/item_install.html:8
-msgid "Install another Stock Item into this item."
-msgstr "Einen weiteren Lagerartikel in dieses Teil installiert."
-
-#: stock/templates/stock/item_install.html:11
-#: stock/templates/stock/item_install.html:24
-msgid "Stock items can only be installed if they meet the following criteria"
-msgstr "Lagerartikel können nur installiert werden wenn folgende Kriterien erfüllt werden"
-
-#: stock/templates/stock/item_install.html:14
-msgid "The Stock Item links to a Part which is in the BOM for this Stock Item"
-msgstr "Der Lagerartikel ist auf ein Teil verknüpft das in der Stückliste für diesen Lagerartikel ist"
-
-#: stock/templates/stock/item_install.html:15
-msgid "The Stock Item is currently in stock"
-msgstr "Dieser Lagerartikel ist aktuell vorhanden"
-
-#: stock/templates/stock/item_install.html:16
-msgid "The Stock Item is serialized and does not belong to another item"
-msgstr "Der Lagerartikel ist serialisiert und gehört nicht zu einem anderen Teil"
-
-#: stock/templates/stock/item_install.html:21
-msgid "Install this Stock Item in another stock item."
-msgstr "Diesen Lagerartikel in einem anderen Lagerartikel installieren."
-
-#: stock/templates/stock/item_install.html:27
-msgid "The part associated to this Stock Item belongs to another part's BOM"
-msgstr "Das diesem Lagerartikel zugeordnete Teil gehört zur Stückliste eines anderen Teils"
-
-#: stock/templates/stock/item_install.html:28
-msgid "This Stock Item is serialized and does not belong to another item"
-msgstr "Dieser Lagerartikel ist serialisiert und gehört nicht zu einem anderen Teil"
-
#: stock/templates/stock/item_serialize.html:5
msgid "Create serialized items from this stock item."
msgstr "Teile mit Seriennummern mit diesem BestandObjekt anlegen."
@@ -6249,7 +6297,7 @@ msgstr "Untergeordnete Objekte"
msgid "The following stock items will be uninstalled"
msgstr "Die folgenden Lagerartikel werden nicht mehr verbaut"
-#: stock/templates/stock/stockitem_convert.html:7 stock/views.py:879
+#: stock/templates/stock/stockitem_convert.html:7 stock/views.py:730
msgid "Convert Stock Item"
msgstr "Lagerartikel umwandeln"
@@ -6270,11 +6318,11 @@ msgstr "Diese Aktion kann nicht einfach rückgängig gemacht werden"
msgid "Are you sure you want to delete this stock tracking entry?"
msgstr "Sind Sie sicher, dass Sie diesen Lagerartikel-Verfolgungs-Eintrag löschen wollen?"
-#: stock/views.py:162 templates/js/translated/stock.js:139
+#: stock/views.py:162 templates/js/translated/stock.js:140
msgid "Edit Stock Location"
msgstr "Lagerartikel-Ort bearbeiten"
-#: stock/views.py:269 stock/views.py:858 stock/views.py:984 stock/views.py:1266
+#: stock/views.py:269 stock/views.py:709 stock/views.py:835 stock/views.py:1117
msgid "Owner is required (ownership control is enabled)"
msgstr "Eigentümer notwendig (Eigentümerkontrolle aktiv)"
@@ -6302,59 +6350,63 @@ msgstr "alle Testdaten löschen"
msgid "Confirm test data deletion"
msgstr "Löschen Testdaten bestätigen"
+#: stock/views.py:352
+msgid "Check the confirmation box"
+msgstr "Bestätigungsbox bestätigen"
+
#: stock/views.py:456
msgid "Stock Item QR Code"
msgstr "Lagerartikel-QR-Code"
-#: stock/views.py:630
+#: stock/views.py:481
msgid "Uninstall Stock Items"
msgstr "Lagerartikel deinstallieren"
-#: stock/views.py:727 templates/js/translated/stock.js:1074
+#: stock/views.py:578 templates/js/translated/stock.js:1075
msgid "Confirm stock adjustment"
msgstr "Bestands-Anpassung bestätigen"
-#: stock/views.py:738
+#: stock/views.py:589
msgid "Uninstalled stock items"
msgstr "Lagerartikel deinstalliert"
-#: stock/views.py:760 templates/js/translated/stock.js:332
+#: stock/views.py:611 templates/js/translated/stock.js:333
msgid "Edit Stock Item"
msgstr "Lagerartikel bearbeiten"
-#: stock/views.py:910
+#: stock/views.py:761
msgid "Create new Stock Location"
msgstr "Neuen Lagerort erstellen"
-#: stock/views.py:1011
+#: stock/views.py:862
msgid "Create new Stock Item"
msgstr "Neuen Lagerartikel hinzufügen"
-#: stock/views.py:1153 templates/js/translated/stock.js:312
+#: stock/views.py:1004 templates/js/translated/stock.js:313
msgid "Duplicate Stock Item"
msgstr "Bestand duplizieren"
-#: stock/views.py:1235
+#: stock/views.py:1086
msgid "Quantity cannot be negative"
msgstr "Anzahl kann nicht negativ sein"
-#: stock/views.py:1335
+#: stock/views.py:1186
msgid "Delete Stock Location"
msgstr "Bestand-Lagerort löschen"
-#: stock/views.py:1348
+#: stock/views.py:1199
msgid "Delete Stock Item"
msgstr "Lagerartikel löschen"
-#: stock/views.py:1359
+#: stock/views.py:1210
msgid "Delete Stock Tracking Entry"
msgstr "Bestand-Tracking-Eintrag löschen"
-#: stock/views.py:1366
+#: stock/views.py:1217
msgid "Edit Stock Tracking Entry"
msgstr "Bestand-Verfolgungs-Eintrag bearbeiten"
-#: stock/views.py:1375
+#: stock/views.py:1226
msgid "Add Stock Tracking Entry"
msgstr "Bestand-Verfolgungs-Eintrag hinzufügen"
@@ -6519,7 +6571,7 @@ msgstr "URLs"
#: templates/InvenTree/settings/mixins/urls.html:8
#, python-format
msgid "The Base-URL for this plugin is %(base)s."
-msgstr "Die Basis-URL für dieses Plugin ist %(base)s."
+msgstr ""
#: templates/InvenTree/settings/mixins/urls.html:23
msgid "Open in new tab"
@@ -6529,15 +6581,15 @@ msgstr "In neuem Tab öffnen"
msgid "Part Settings"
msgstr "Teil-Einstellungen"
-#: templates/InvenTree/settings/part.html:43
+#: templates/InvenTree/settings/part.html:44
msgid "Part Import"
msgstr "Teileimport"
-#: templates/InvenTree/settings/part.html:47
+#: templates/InvenTree/settings/part.html:48
msgid "Import Part"
msgstr "Teil importieren"
-#: templates/InvenTree/settings/part.html:61
+#: templates/InvenTree/settings/part.html:62
msgid "Part Parameter Templates"
msgstr "Teil-Parametervorlage"
@@ -6566,7 +6618,7 @@ msgstr "Admin"
#: templates/InvenTree/settings/plugin.html:49
#: templates/InvenTree/settings/plugin_settings.html:28
msgid "Author"
-msgstr ""
+msgstr "Autor"
#: templates/InvenTree/settings/plugin.html:51
#: templates/InvenTree/settings/plugin_settings.html:43
@@ -6579,15 +6631,15 @@ msgstr "Inaktive Plugins"
#: templates/InvenTree/settings/plugin.html:115
msgid "Plugin Error Stack"
-msgstr ""
+msgstr "Plugin-Fehlerstapel"
#: templates/InvenTree/settings/plugin.html:124
msgid "Stage"
-msgstr ""
+msgstr "Stufe"
#: templates/InvenTree/settings/plugin.html:126
msgid "Message"
-msgstr ""
+msgstr "Meldung"
#: templates/InvenTree/settings/plugin_settings.html:10
#, python-format
@@ -6608,11 +6660,11 @@ msgstr "Lizenz"
#: templates/InvenTree/settings/plugin_settings.html:71
msgid "The code information is pulled from the latest git commit for this plugin. It might not reflect official version numbers or information but the actual code running."
-msgstr ""
+msgstr "Die Code-Informationen werden vom neuesten Git Commit für dieses Plugin eingelesen. Es spiegelt möglicherweise nicht die offiziellen Versionsnummern oder Informationen wider, sondern den tatsächlich laufenden Code."
#: templates/InvenTree/settings/plugin_settings.html:77
msgid "Package information"
-msgstr ""
+msgstr "Paketinformationen"
#: templates/InvenTree/settings/plugin_settings.html:83
msgid "Installation method"
@@ -6650,11 +6702,11 @@ msgstr "Commit-Nachricht"
#: templates/InvenTree/settings/plugin_settings.html:117
msgid "Sign Status"
-msgstr ""
+msgstr "Signaturstatus"
#: templates/InvenTree/settings/plugin_settings.html:122
msgid "Sign Key"
-msgstr ""
+msgstr "Signatur Schlüssel"
#: templates/InvenTree/settings/po.html:7
msgid "Purchase Order Settings"
@@ -6665,45 +6717,45 @@ msgstr "Bestellungs-Einstellungen"
msgid "Report Settings"
msgstr "Berichts-Einstellungen"
-#: templates/InvenTree/settings/setting.html:30
+#: templates/InvenTree/settings/setting.html:33
msgid "No value set"
msgstr "Kein Wert angegeben"
-#: templates/InvenTree/settings/setting.html:41
+#: templates/InvenTree/settings/setting.html:38
msgid "Edit setting"
msgstr "Einstellungen ändern"
-#: templates/InvenTree/settings/settings.html:78
+#: templates/InvenTree/settings/settings.html:115
msgid "Edit Plugin Setting"
-msgstr ""
+msgstr "Plugin-Einstellungen bearbeiten"
-#: templates/InvenTree/settings/settings.html:80
+#: templates/InvenTree/settings/settings.html:117
msgid "Edit Global Setting"
msgstr "Allgemeine Einstellungen bearbeiten"
-#: templates/InvenTree/settings/settings.html:82
+#: templates/InvenTree/settings/settings.html:119
msgid "Edit User Setting"
msgstr "Benutzereinstellungen bearbeiten"
-#: templates/InvenTree/settings/settings.html:171
+#: templates/InvenTree/settings/settings.html:208
msgid "No category parameter templates found"
msgstr "Keine Kategorie-Parametervorlagen gefunden"
-#: templates/InvenTree/settings/settings.html:193
-#: templates/InvenTree/settings/settings.html:292
+#: templates/InvenTree/settings/settings.html:230
+#: templates/InvenTree/settings/settings.html:329
msgid "Edit Template"
msgstr "Vorlage bearbeiten"
-#: templates/InvenTree/settings/settings.html:194
-#: templates/InvenTree/settings/settings.html:293
+#: templates/InvenTree/settings/settings.html:231
+#: templates/InvenTree/settings/settings.html:330
msgid "Delete Template"
msgstr "Vorlage löschen"
-#: templates/InvenTree/settings/settings.html:272
+#: templates/InvenTree/settings/settings.html:309
msgid "No part parameter templates found"
msgstr "Keine Teilparametervorlagen gefunden"
-#: templates/InvenTree/settings/settings.html:276
+#: templates/InvenTree/settings/settings.html:313
msgid "ID"
msgstr "ID"
@@ -6843,7 +6895,7 @@ msgstr "Sie können sich mit einem der folgenden Drittanbieterkonten bei Ihrem K
#: templates/InvenTree/settings/user.html:157
msgid "You currently have no social network accounts connected to this account."
-msgstr ""
+msgstr "Du hast zurzeit keine sozialen Netzwerke mit diesem Konto verbunden."
#: templates/InvenTree/settings/user.html:162
msgid "Add a 3rd Party Account"
@@ -6851,35 +6903,35 @@ msgstr "Drittanbieter-Konto hinzufügen"
#: templates/InvenTree/settings/user.html:172
msgid "Multifactor"
-msgstr ""
+msgstr "Multifaktor"
#: templates/InvenTree/settings/user.html:177
msgid "You have these factors available:"
-msgstr ""
+msgstr "Sie haben folgende Faktoren zur Verfügung:"
#: templates/InvenTree/settings/user.html:187
msgid "TOTP"
-msgstr ""
+msgstr "TOTP"
#: templates/InvenTree/settings/user.html:193
msgid "Static"
-msgstr ""
+msgstr "Statisch"
#: templates/InvenTree/settings/user.html:202
msgid "You currently do not have any factors set up."
-msgstr ""
+msgstr "Sie haben derzeit keine Faktoren eingerichtet."
#: templates/InvenTree/settings/user.html:209
msgid "Change factors"
-msgstr ""
+msgstr "Faktoren ändern"
#: templates/InvenTree/settings/user.html:210
msgid "Setup multifactor"
-msgstr ""
+msgstr "Multifaktor einrichten"
#: templates/InvenTree/settings/user.html:212
msgid "Remove multifactor"
-msgstr ""
+msgstr "Multifaktor entfernen"
#: templates/InvenTree/settings/user.html:220
msgid "Active Sessions"
@@ -6983,7 +7035,7 @@ msgstr "Hilf bei der Übersetzung!"
#: 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."
-msgstr "Die Übersetzung von InvenTree wird von Nutzern mit Crowdin betrieben. Wir ermutigen zur und freuen uns über jeden Mithilfe!"
+msgstr ""
#: templates/InvenTree/settings/user_homepage.html:9
msgid "Home Page Settings"
@@ -6998,10 +7050,11 @@ msgid "InvenTree Version Information"
msgstr "InvenTree-Versionsinformationen"
#: templates/about.html:11 templates/about.html:105
-#: templates/js/translated/bom.js:407 templates/js/translated/modals.js:53
-#: templates/js/translated/modals.js:584 templates/js/translated/modals.js:678
-#: templates/js/translated/modals.js:983 templates/modals.html:15
-#: templates/modals.html:27 templates/modals.html:39 templates/modals.html:50
+#: templates/js/translated/bom.js:132 templates/js/translated/bom.js:620
+#: templates/js/translated/modals.js:53 templates/js/translated/modals.js:584
+#: templates/js/translated/modals.js:678 templates/js/translated/modals.js:986
+#: templates/modals.html:15 templates/modals.html:27 templates/modals.html:39
+#: templates/modals.html:50
msgid "Close"
msgstr "Schliessen"
@@ -7069,12 +7122,12 @@ msgstr "E-Mail-Adresse bestätigen"
#: templates/account/email_confirm.html:16
#, python-format
msgid "Please confirm that %(email)s is an email address for user %(user_display)s."
-msgstr "Bitte bestätigen Sie, dass %(email)s eine E-Mail Adresse für den Benutzer %(user_display)s ist."
+msgstr ""
#: templates/account/email_confirm.html:27
#, python-format
msgid "This email confirmation link expired or is invalid. Please issue a new email confirmation request."
-msgstr "Dieser E-Mail Bestätigungslink ist abgelaufen oder ungültig. Bitte fordern Sie eine neue E-Mail Bestätigung an."
+msgstr ""
#: templates/account/login.html:6 templates/account/login.html:16
#: templates/account/login.html:39
@@ -7086,13 +7139,13 @@ msgstr "Einloggen"
msgid "Please sign in with one\n"
"of your existing third party accounts or sign up\n"
"for a account and sign in below:"
-msgstr "Bitte melden Sie sich mit einem Ihrer bestehenden Drittkonten an oder registrieren Sie sich für ein Konto und melden Sie sich unten an:"
+msgstr ""
#: templates/account/login.html:25
#, python-format
msgid "If you have not created an account yet, then please\n"
"sign up first."
-msgstr "Wenn Sie noch kein Konto erstellt haben, dann bitteregistrieren Sie sich zuerst."
+msgstr ""
#: templates/account/login.html:42
msgid "Forgot Password?"
@@ -7147,7 +7200,7 @@ msgstr "Ungültiger Schlüssel"
#: templates/account/password_reset_from_key.html:11
#, python-format
msgid "The password reset link was invalid, possibly because it has already been used. Please request a new password reset."
-msgstr "Der Link zum Zurücksetzen des Kennworts war ungültig, da er bereits verwendet wurde. Bitte fordern Sie eine neue Passwortwiederherstellung an."
+msgstr ""
#: templates/account/password_reset_from_key.html:18
msgid "Change password"
@@ -7164,7 +7217,7 @@ msgstr "Anmelden"
#: templates/account/signup.html:13
#, python-format
msgid "Already have an account? Then please sign in."
-msgstr "Haben Sie bereits ein Konto? Dann melden Sie sich bitte an."
+msgstr ""
#: templates/account/signup.html:27
msgid "Or use a SSO-provider for signup"
@@ -7176,11 +7229,11 @@ msgstr "Im Administrationsbereich anzeigen"
#: templates/allauth_2fa/authenticate.html:5
msgid "Two-Factor Authentication"
-msgstr ""
+msgstr "Zwei-Faktor-Authentifizierung"
#: templates/allauth_2fa/authenticate.html:12
msgid "Authenticate"
-msgstr ""
+msgstr "Authentifizieren"
#: templates/allauth_2fa/backup_tokens.html:6
msgid "Two-Factor Authentication Backup Tokens"
@@ -7277,14 +7330,14 @@ 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:1117
+#: templates/js/translated/bom.js:1335
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:591 templates/js/translated/build.js:1189
-#: templates/js/translated/build.js:1810
+#: templates/js/translated/bom.js:804 templates/js/translated/build.js:1411
+#: templates/js/translated/build.js:2048
#: templates/js/translated/table_filters.js:178
msgid "Available"
msgstr "Verfügbar"
@@ -7327,11 +7380,11 @@ msgstr "Der angegebene Server muss erreichbar sein"
msgid "Remote image must not exceed maximum allowable file size"
msgstr "Das Bild darf nicht größer als die maximal-erlaubte Größe sein"
-#: templates/js/translated/api.js:185 templates/js/translated/modals.js:1053
+#: templates/js/translated/api.js:185 templates/js/translated/modals.js:1056
msgid "No Response"
msgstr "Keine Antwort"
-#: templates/js/translated/api.js:186 templates/js/translated/modals.js:1054
+#: templates/js/translated/api.js:186 templates/js/translated/modals.js:1057
msgid "No response from the InvenTree server"
msgstr "keine Antwort vom InvenTree Server"
@@ -7343,27 +7396,27 @@ msgstr "Fehler 400: Fehlerhafte Anfrage"
msgid "API request returned error code 400"
msgstr "Fehler-Code 400 zurückgegeben"
-#: templates/js/translated/api.js:197 templates/js/translated/modals.js:1063
+#: templates/js/translated/api.js:197 templates/js/translated/modals.js:1066
msgid "Error 401: Not Authenticated"
msgstr "Fehler 401: Nicht Angemeldet"
-#: templates/js/translated/api.js:198 templates/js/translated/modals.js:1064
+#: templates/js/translated/api.js:198 templates/js/translated/modals.js:1067
msgid "Authentication credentials not supplied"
msgstr "Authentication Kredentials nicht angegeben"
-#: templates/js/translated/api.js:202 templates/js/translated/modals.js:1068
+#: templates/js/translated/api.js:202 templates/js/translated/modals.js:1071
msgid "Error 403: Permission Denied"
msgstr "Fehler 403: keine Berechtigung"
-#: templates/js/translated/api.js:203 templates/js/translated/modals.js:1069
+#: templates/js/translated/api.js:203 templates/js/translated/modals.js:1072
msgid "You do not have the required permissions to access this function"
msgstr "Fehlende Berechtigung für diese Aktion"
-#: templates/js/translated/api.js:207 templates/js/translated/modals.js:1073
+#: templates/js/translated/api.js:207 templates/js/translated/modals.js:1076
msgid "Error 404: Resource Not Found"
msgstr "Fehler 404: Ressource nicht gefunden"
-#: templates/js/translated/api.js:208 templates/js/translated/modals.js:1074
+#: templates/js/translated/api.js:208 templates/js/translated/modals.js:1077
msgid "The requested resource could not be located on the server"
msgstr "Die angefragte Ressource kann auf diesem Server nicht gefunden werden"
@@ -7375,11 +7428,11 @@ msgstr "Fehler 405: Methode nicht erlaubt"
msgid "HTTP method not allowed at URL"
msgstr ""
-#: templates/js/translated/api.js:217 templates/js/translated/modals.js:1078
+#: templates/js/translated/api.js:217 templates/js/translated/modals.js:1081
msgid "Error 408: Timeout"
msgstr "Fehler 408: Zeitüberschreitung"
-#: templates/js/translated/api.js:218 templates/js/translated/modals.js:1079
+#: templates/js/translated/api.js:218 templates/js/translated/modals.js:1082
msgid "Connection timeout while requesting data from server"
msgstr "Verbindungszeitüberschreitung bei der Datenanforderung"
@@ -7448,7 +7501,7 @@ msgid "Unknown response from server"
msgstr "Unbekannte Antwort von Server erhalten"
#: templates/js/translated/barcode.js:140
-#: templates/js/translated/modals.js:1043
+#: templates/js/translated/modals.js:1046
msgid "Invalid server response"
msgstr "Ungültige Antwort von Server"
@@ -7476,7 +7529,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:1026
+#: templates/js/translated/barcode.js:397 templates/js/translated/stock.js:1027
msgid "Remove stock item"
msgstr "Lagerartikel entfernen"
@@ -7518,327 +7571,369 @@ msgstr "In Lagerorten buchen"
msgid "Barcode does not match a valid location"
msgstr "Barcode entspricht keinem Lagerort"
-#: templates/js/translated/bom.js:36
+#: templates/js/translated/bom.js:75
+msgid "Display row data"
+msgstr ""
+
+#: templates/js/translated/bom.js:131
+msgid "Row Data"
+msgstr ""
+
+#: templates/js/translated/bom.js:249
msgid "Download BOM Template"
msgstr "Vorlage einer Stückliste herunterladen"
-#: templates/js/translated/bom.js:39 templates/js/translated/bom.js:73
-#: templates/js/translated/order.js:369 templates/js/translated/stock.js:518
+#: templates/js/translated/bom.js:252 templates/js/translated/bom.js:286
+#: templates/js/translated/order.js:369 templates/js/translated/stock.js:519
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:519
+#: templates/js/translated/bom.js:253 templates/js/translated/bom.js:287
+#: templates/js/translated/order.js:370 templates/js/translated/stock.js:520
msgid "Select file format"
msgstr "Dateiformat auswählen"
-#: templates/js/translated/bom.js:81
+#: templates/js/translated/bom.js:294
msgid "Cascading"
msgstr "Kaskadierend"
-#: templates/js/translated/bom.js:82
+#: templates/js/translated/bom.js:295
msgid "Download cascading / multi-level BOM"
msgstr "Kaskadierende Stückliste herunterladen"
-#: templates/js/translated/bom.js:87
+#: templates/js/translated/bom.js:300
msgid "Levels"
msgstr "Ebenen"
-#: templates/js/translated/bom.js:88
+#: templates/js/translated/bom.js:301
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
+#: templates/js/translated/bom.js:307
msgid "Include Parameter Data"
msgstr "Parameter-Daten einschließen"
-#: templates/js/translated/bom.js:95
+#: templates/js/translated/bom.js:308
msgid "Include part parameter data in exported BOM"
msgstr ""
-#: templates/js/translated/bom.js:100
+#: templates/js/translated/bom.js:313
msgid "Include Stock Data"
msgstr "Bestand einschließen"
-#: templates/js/translated/bom.js:101
+#: templates/js/translated/bom.js:314
msgid "Include part stock data in exported BOM"
msgstr "Teil-Bestand in Stückliste-Export einschließen"
-#: templates/js/translated/bom.js:106
+#: templates/js/translated/bom.js:319
msgid "Include Manufacturer Data"
msgstr "Herstellerdaten einschließen"
-#: templates/js/translated/bom.js:107
+#: templates/js/translated/bom.js:320
msgid "Include part manufacturer data in exported BOM"
msgstr "Teil-Herstellerdaten in Stückliste-Export einschließen"
-#: templates/js/translated/bom.js:112
+#: templates/js/translated/bom.js:325
msgid "Include Supplier Data"
msgstr "Zulieferer einschließen"
-#: templates/js/translated/bom.js:113
+#: templates/js/translated/bom.js:326
msgid "Include part supplier data in exported BOM"
msgstr "Zulieferer-Daten in Stückliste-Export einschließen"
-#: templates/js/translated/bom.js:296
+#: templates/js/translated/bom.js:509
msgid "Remove substitute part"
msgstr "Ersatzteil entfernen"
-#: templates/js/translated/bom.js:352
+#: templates/js/translated/bom.js:565
msgid "Select and add a new substitute part using the input below"
msgstr ""
-#: templates/js/translated/bom.js:363
+#: templates/js/translated/bom.js:576
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:369
+#: templates/js/translated/bom.js:582
msgid "Remove Substitute Part"
msgstr "Ersatzteil entfernen"
-#: templates/js/translated/bom.js:408
+#: templates/js/translated/bom.js:621
msgid "Add Substitute"
msgstr "Ersatzteil hinzufügen"
-#: templates/js/translated/bom.js:409
+#: templates/js/translated/bom.js:622
msgid "Edit BOM Item Substitutes"
msgstr "Stücklisten Ersatzteile bearbeiten"
-#: templates/js/translated/bom.js:528
+#: templates/js/translated/bom.js:741
msgid "Substitutes Available"
msgstr "Ersatzteile verfügbar"
-#: templates/js/translated/bom.js:532 templates/js/translated/build.js:1171
+#: templates/js/translated/bom.js:745 templates/js/translated/build.js:1393
msgid "Variant stock allowed"
msgstr "Varianten erlaubt"
-#: templates/js/translated/bom.js:537
+#: templates/js/translated/bom.js:750
msgid "Open subassembly"
msgstr "Unterbaugruppe öffnen"
-#: templates/js/translated/bom.js:609
+#: templates/js/translated/bom.js:822
msgid "Substitutes"
msgstr "Ersatzteile"
-#: templates/js/translated/bom.js:624
+#: templates/js/translated/bom.js:837
msgid "Purchase Price Range"
msgstr "Kaufpreisspanne"
-#: templates/js/translated/bom.js:631
+#: templates/js/translated/bom.js:844
msgid "Purchase Price Average"
msgstr "Durchschnittlicher Kaufpreis"
-#: templates/js/translated/bom.js:680 templates/js/translated/bom.js:769
+#: templates/js/translated/bom.js:893 templates/js/translated/bom.js:982
msgid "View BOM"
msgstr "Stückliste anzeigen"
-#: templates/js/translated/bom.js:740
+#: templates/js/translated/bom.js:953
msgid "Validate BOM Item"
msgstr "Stücklisten-Position kontrollieren"
-#: templates/js/translated/bom.js:742
+#: templates/js/translated/bom.js:955
msgid "This line has been validated"
msgstr "Diese Position wurde kontrolliert"
-#: templates/js/translated/bom.js:744
+#: templates/js/translated/bom.js:957
msgid "Edit substitute parts"
msgstr "Ersatzteile bearbeiten"
-#: templates/js/translated/bom.js:746 templates/js/translated/bom.js:920
+#: templates/js/translated/bom.js:959 templates/js/translated/bom.js:1138
msgid "Edit BOM Item"
msgstr "Stücklisten-Position bearbeiten"
-#: templates/js/translated/bom.js:748 templates/js/translated/bom.js:903
+#: templates/js/translated/bom.js:961 templates/js/translated/bom.js:1121
msgid "Delete BOM Item"
msgstr "Stücklisten-Position löschen"
-#: templates/js/translated/bom.js:842 templates/js/translated/build.js:915
+#: templates/js/translated/bom.js:1060 templates/js/translated/build.js:1137
msgid "No BOM items found"
msgstr "Keine Stücklisten-Position(en) gefunden"
-#: templates/js/translated/bom.js:898
+#: templates/js/translated/bom.js:1116
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:1100 templates/js/translated/build.js:1155
+#: templates/js/translated/bom.js:1318 templates/js/translated/build.js:1377
msgid "Required Part"
msgstr "benötigtes Teil"
-#: templates/js/translated/bom.js:1122
+#: templates/js/translated/bom.js:1340
msgid "Inherited from parent BOM"
msgstr "Geerbt von übergeordneter Stückliste"
-#: templates/js/translated/build.js:84
+#: templates/js/translated/build.js:85
msgid "Edit Build Order"
msgstr "Bauauftrag bearbeiten"
-#: templates/js/translated/build.js:118
+#: templates/js/translated/build.js:119
msgid "Create Build Order"
msgstr "Bauauftrag erstellen"
-#: templates/js/translated/build.js:139
+#: templates/js/translated/build.js:140
msgid "Build order is ready to be completed"
msgstr ""
-#: templates/js/translated/build.js:144
+#: templates/js/translated/build.js:145
msgid "Build Order is incomplete"
msgstr "Bauauftrag ist unvollständig"
-#: templates/js/translated/build.js:172
+#: templates/js/translated/build.js:173
msgid "Complete Build Order"
msgstr "Bauauftrag fertigstellen"
-#: templates/js/translated/build.js:193
+#: templates/js/translated/build.js:214 templates/js/translated/stock.js:93
+#: templates/js/translated/stock.js:182
+msgid "Next available serial number"
+msgstr "Nächste verfügbare Seriennummer"
+
+#: templates/js/translated/build.js:216 templates/js/translated/stock.js:95
+#: templates/js/translated/stock.js:184
+msgid "Latest serial number"
+msgstr "Letzte Seriennummer"
+
+#: templates/js/translated/build.js:225
+msgid "The Bill of Materials contains trackable parts"
+msgstr "Die Stückliste enthält verfolgbare Teile"
+
+#: templates/js/translated/build.js:226
+msgid "Build outputs must be generated individually"
+msgstr ""
+
+#: templates/js/translated/build.js:234
+msgid "Trackable parts can have serial numbers specified"
+msgstr "Nachverfolgbare Teile können Seriennummern haben"
+
+#: templates/js/translated/build.js:235
+msgid "Enter serial numbers to generate multiple single build outputs"
+msgstr "Seriennummeren für mehrere einzelne Endprodukte angeben"
+
+#: templates/js/translated/build.js:242
+msgid "Create Build Output"
+msgstr "Endprodukt anlegen"
+
+#: templates/js/translated/build.js:273
msgid "Allocate stock items to this build output"
msgstr "Lagerartikel zu diesem Endprodukt zuweisen"
-#: templates/js/translated/build.js:204
+#: templates/js/translated/build.js:284
msgid "Unallocate stock from build output"
msgstr "Bestand von Endpordukt zurücknehmen"
-#: templates/js/translated/build.js:213
+#: templates/js/translated/build.js:293
msgid "Complete build output"
msgstr "Endprodukt fertigstellen"
-#: templates/js/translated/build.js:221
+#: templates/js/translated/build.js:301
msgid "Delete build output"
msgstr "Endprodukt entfernen"
-#: templates/js/translated/build.js:244
+#: templates/js/translated/build.js:324
msgid "Are you sure you wish to unallocate stock items from this build?"
msgstr "Sind Sie sicher, dass sie alle Lagerartikel von diesem Bauauftrag entfernen möchten?"
-#: templates/js/translated/build.js:262
+#: templates/js/translated/build.js:342
msgid "Unallocate Stock Items"
msgstr "Lagerartikel zurücknehmen"
-#: templates/js/translated/build.js:280
+#: templates/js/translated/build.js:360 templates/js/translated/build.js:508
msgid "Select Build Outputs"
msgstr "Endprodukte auswählen"
-#: templates/js/translated/build.js:281
+#: templates/js/translated/build.js:361 templates/js/translated/build.js:509
msgid "At least one build output must be selected"
msgstr "Mindestens ein Endprodukt muss ausgewählt werden"
-#: templates/js/translated/build.js:335
+#: templates/js/translated/build.js:415 templates/js/translated/build.js:563
msgid "Output"
msgstr "Endprodukt"
-#: templates/js/translated/build.js:351
+#: templates/js/translated/build.js:431
msgid "Complete Build Outputs"
msgstr "Endprodukte fertigstellen"
-#: templates/js/translated/build.js:446
+#: templates/js/translated/build.js:576
+msgid "Delete Build Outputs"
+msgstr ""
+
+#: templates/js/translated/build.js:665
msgid "No build order allocations found"
msgstr "Keine Allokationen für Bauauftrag gefunden"
-#: templates/js/translated/build.js:484 templates/js/translated/order.js:1848
+#: templates/js/translated/build.js:703 templates/js/translated/order.js:1848
msgid "Location not specified"
msgstr "Standort nicht angegeben"
-#: templates/js/translated/build.js:663
+#: templates/js/translated/build.js:885
msgid "No active build outputs found"
msgstr "Keine aktiven Endprodukte gefunden"
-#: templates/js/translated/build.js:1112 templates/js/translated/build.js:1821
+#: templates/js/translated/build.js:1334 templates/js/translated/build.js:2059
#: templates/js/translated/order.js:1982
msgid "Edit stock allocation"
msgstr "Bestands-Zuordnung bearbeiten"
-#: templates/js/translated/build.js:1114 templates/js/translated/build.js:1822
+#: templates/js/translated/build.js:1336 templates/js/translated/build.js:2060
#: templates/js/translated/order.js:1983
msgid "Delete stock allocation"
msgstr "Bestands-Zuordnung löschen"
-#: templates/js/translated/build.js:1132
+#: templates/js/translated/build.js:1354
msgid "Edit Allocation"
msgstr "Zuordnung bearbeiten"
-#: templates/js/translated/build.js:1142
+#: templates/js/translated/build.js:1364
msgid "Remove Allocation"
msgstr "Zuordnung entfernen"
-#: templates/js/translated/build.js:1167
+#: templates/js/translated/build.js:1389
msgid "Substitute parts available"
msgstr "Ersatzteile verfügbar"
-#: templates/js/translated/build.js:1184
+#: templates/js/translated/build.js:1406
msgid "Quantity Per"
msgstr "Anzahl pro"
-#: templates/js/translated/build.js:1194 templates/js/translated/build.js:1420
-#: templates/js/translated/build.js:1817 templates/js/translated/order.js:2227
+#: templates/js/translated/build.js:1416 templates/js/translated/build.js:1656
+#: templates/js/translated/build.js:2055 templates/js/translated/order.js:2227
msgid "Allocated"
msgstr "Zugeordnet"
-#: templates/js/translated/build.js:1250 templates/js/translated/order.js:2307
+#: templates/js/translated/build.js:1472 templates/js/translated/order.js:2307
msgid "Build stock"
msgstr "Bestand bauen"
-#: templates/js/translated/build.js:1254 templates/stock_table.html:53
+#: templates/js/translated/build.js:1476 templates/stock_table.html:53
msgid "Order stock"
msgstr "Bestand bestellen"
-#: templates/js/translated/build.js:1257 templates/js/translated/order.js:2300
+#: templates/js/translated/build.js:1479 templates/js/translated/order.js:2300
msgid "Allocate stock"
msgstr "Bestand zuweisen"
-#: templates/js/translated/build.js:1322 templates/js/translated/order.js:1499
+#: templates/js/translated/build.js:1558 templates/js/translated/order.js:1499
msgid "Specify stock allocation quantity"
msgstr "Anzahl für Bestandszuordnung eingeben"
-#: templates/js/translated/build.js:1393 templates/js/translated/label.js:134
+#: templates/js/translated/build.js:1629 templates/js/translated/label.js:134
#: templates/js/translated/order.js:1550 templates/js/translated/report.js:225
msgid "Select Parts"
msgstr "Teile auswählen"
-#: templates/js/translated/build.js:1394 templates/js/translated/order.js:1551
+#: templates/js/translated/build.js:1630 templates/js/translated/order.js:1551
msgid "You must select at least one part to allocate"
msgstr "Sie müssen mindestens ein Teil auswählen"
-#: templates/js/translated/build.js:1408 templates/js/translated/order.js:1565
+#: templates/js/translated/build.js:1644 templates/js/translated/order.js:1565
msgid "Select source location (leave blank to take from all locations)"
msgstr "Wählen Sie den Quellort aus (leer lassen um von allen Standorten zu nehmen)"
-#: templates/js/translated/build.js:1437 templates/js/translated/order.js:1600
+#: templates/js/translated/build.js:1673 templates/js/translated/order.js:1600
msgid "Confirm stock allocation"
msgstr "Bestandszuordnung bestätigen"
-#: templates/js/translated/build.js:1438
+#: templates/js/translated/build.js:1674
msgid "Allocate Stock Items to Build Order"
msgstr "Lagerartikel für Bauauftrag zuweisen"
-#: templates/js/translated/build.js:1449 templates/js/translated/order.js:1613
+#: templates/js/translated/build.js:1685 templates/js/translated/order.js:1613
msgid "No matching stock locations"
msgstr "Keine passenden Lagerstandorte"
-#: templates/js/translated/build.js:1519 templates/js/translated/order.js:1690
+#: templates/js/translated/build.js:1757 templates/js/translated/order.js:1690
msgid "No matching stock items"
msgstr "Keine passenden Lagerbestände"
-#: templates/js/translated/build.js:1637
+#: templates/js/translated/build.js:1875
msgid "No builds matching query"
msgstr "Keine Bauaufträge passen zur Anfrage"
-#: templates/js/translated/build.js:1654 templates/js/translated/part.js:1213
-#: templates/js/translated/part.js:1624 templates/js/translated/stock.js:1520
-#: templates/js/translated/stock.js:2479
+#: templates/js/translated/build.js:1892 templates/js/translated/part.js:1213
+#: templates/js/translated/part.js:1624 templates/js/translated/stock.js:1644
+#: templates/js/translated/stock.js:2603
msgid "Select"
msgstr "Auswählen"
-#: templates/js/translated/build.js:1674
+#: templates/js/translated/build.js:1912
msgid "Build order is overdue"
msgstr "Bauauftrag ist überfällig"
-#: templates/js/translated/build.js:1735 templates/js/translated/stock.js:2698
+#: templates/js/translated/build.js:1973 templates/js/translated/stock.js:2822
msgid "No user information"
msgstr "Keine Benutzerinformation"
-#: templates/js/translated/build.js:1747
+#: templates/js/translated/build.js:1985
msgid "No information"
msgstr "Keine Information"
-#: templates/js/translated/build.js:1798
+#: templates/js/translated/build.js:2036
msgid "No parts allocated for"
msgstr "Keine Teile zugeordnet zu"
@@ -7968,48 +8063,60 @@ msgstr "Filter entfernen"
msgid "Create filter"
msgstr "Filter anlegen"
-#: templates/js/translated/forms.js:350 templates/js/translated/forms.js:365
-#: templates/js/translated/forms.js:379 templates/js/translated/forms.js:393
+#: templates/js/translated/forms.js:351 templates/js/translated/forms.js:366
+#: templates/js/translated/forms.js:380 templates/js/translated/forms.js:394
msgid "Action Prohibited"
msgstr "Aktion verboten"
-#: templates/js/translated/forms.js:352
+#: templates/js/translated/forms.js:353
msgid "Create operation not allowed"
msgstr "Erstellvorgang nicht erlaubt"
-#: templates/js/translated/forms.js:367
+#: templates/js/translated/forms.js:368
msgid "Update operation not allowed"
msgstr "Updatevorgang nicht erlaubt"
-#: templates/js/translated/forms.js:381
+#: templates/js/translated/forms.js:382
msgid "Delete operation not allowed"
msgstr "Löschvorgang nicht erlaubt"
-#: templates/js/translated/forms.js:395
+#: templates/js/translated/forms.js:396
msgid "View operation not allowed"
msgstr "Anzeigevorgang nicht erlaubt"
-#: templates/js/translated/forms.js:680
+#: templates/js/translated/forms.js:681
msgid "Enter a valid number"
msgstr "Gib eine gültige Nummer ein"
-#: templates/js/translated/forms.js:1082 templates/modals.html:19
+#: templates/js/translated/forms.js:1129 templates/modals.html:19
#: templates/modals.html:43
msgid "Form errors exist"
msgstr "Fehler in Formular"
-#: templates/js/translated/forms.js:1487
+#: templates/js/translated/forms.js:1558
msgid "No results found"
msgstr "Keine Ergebnisse gefunden"
-#: templates/js/translated/forms.js:1691
+#: templates/js/translated/forms.js:1768
msgid "Searching"
msgstr "Suche"
-#: templates/js/translated/forms.js:1930
+#: templates/js/translated/forms.js:2013
msgid "Clear input"
msgstr "Eingabe leeren"
+#: templates/js/translated/forms.js:2479
+msgid "File Column"
+msgstr ""
+
+#: templates/js/translated/forms.js:2479
+msgid "Field Name"
+msgstr ""
+
+#: templates/js/translated/forms.js:2491
+msgid "Select Columns"
+msgstr ""
+
#: templates/js/translated/helpers.js:19
msgid "YES"
msgstr "JA"
@@ -8019,7 +8126,7 @@ msgid "NO"
msgstr "NEIN"
#: templates/js/translated/label.js:29 templates/js/translated/report.js:118
-#: templates/js/translated/stock.js:1050
+#: templates/js/translated/stock.js:1051
msgid "Select Stock Items"
msgstr "Lagerartikel auswählen"
@@ -8074,7 +8181,7 @@ msgid "Cancel"
msgstr "Abbrechen"
#: templates/js/translated/modals.js:77 templates/js/translated/modals.js:119
-#: templates/js/translated/modals.js:677 templates/js/translated/modals.js:982
+#: templates/js/translated/modals.js:677 templates/js/translated/modals.js:985
#: templates/modals.html:28 templates/modals.html:51
msgid "Submit"
msgstr "Abschicken"
@@ -8099,31 +8206,31 @@ msgstr "Akzeptieren"
msgid "Loading Data"
msgstr "Lade Daten"
-#: templates/js/translated/modals.js:934
+#: templates/js/translated/modals.js:937
msgid "Invalid response from server"
msgstr "ungültige Antwort vom Server"
-#: templates/js/translated/modals.js:934
+#: templates/js/translated/modals.js:937
msgid "Form data missing from server response"
msgstr "Formulardaten fehlen bei Serverantwort"
-#: templates/js/translated/modals.js:946
+#: templates/js/translated/modals.js:949
msgid "Error posting form data"
msgstr "Formulardaten fehlerhaft"
-#: templates/js/translated/modals.js:1043
+#: templates/js/translated/modals.js:1046
msgid "JSON response missing form data"
msgstr "JSON Antwort enthält keine Formulardaten"
-#: templates/js/translated/modals.js:1058
+#: templates/js/translated/modals.js:1061
msgid "Error 400: Bad Request"
msgstr "Fehler 400: Ungültige Anfrage"
-#: templates/js/translated/modals.js:1059
+#: templates/js/translated/modals.js:1062
msgid "Server returned error code 400"
msgstr "Fehler 400 von Server erhalten"
-#: templates/js/translated/modals.js:1082
+#: templates/js/translated/modals.js:1085
msgid "Error requesting form data"
msgstr "Fehler bei Formulardaten-Anfrage"
@@ -8143,10 +8250,6 @@ msgstr "Standort-ID"
msgid "Build ID"
msgstr "Bauauftrag-ID"
-#: templates/js/translated/model_renderers.js:182
-msgid "Part ID"
-msgstr "Teil-ID"
-
#: templates/js/translated/model_renderers.js:249
#: templates/js/translated/model_renderers.js:270
msgid "Order ID"
@@ -8212,7 +8315,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:2131
+#: templates/js/translated/order.js:520 templates/js/translated/stock.js:2255
msgid "Stock Status"
msgstr "Status"
@@ -8346,7 +8449,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:1436
+#: templates/js/translated/stock.js:1560
msgid "Shipped to customer"
msgstr "an Kunde versand"
@@ -8547,12 +8650,12 @@ msgid "No category"
msgstr "Keine Kategorie"
#: templates/js/translated/part.js:1296
-#: templates/js/translated/table_filters.js:430
+#: templates/js/translated/table_filters.js:425
msgid "Low stock"
msgstr "Bestand niedrig"
#: templates/js/translated/part.js:1387 templates/js/translated/part.js:1559
-#: templates/js/translated/stock.js:2440
+#: templates/js/translated/stock.js:2564
msgid "Display as list"
msgstr "Listenansicht"
@@ -8560,7 +8663,7 @@ msgstr "Listenansicht"
msgid "Display as grid"
msgstr "Rasteransicht"
-#: templates/js/translated/part.js:1578 templates/js/translated/stock.js:2459
+#: templates/js/translated/part.js:1578 templates/js/translated/stock.js:2583
msgid "Display as tree"
msgstr "Baumansicht"
@@ -8568,7 +8671,7 @@ msgstr "Baumansicht"
msgid "Subscribed category"
msgstr "Abonnierte Kategorie"
-#: templates/js/translated/part.js:1656 templates/js/translated/stock.js:2503
+#: templates/js/translated/part.js:1656 templates/js/translated/stock.js:2627
msgid "Path"
msgstr "Pfad"
@@ -8576,11 +8679,12 @@ msgstr "Pfad"
msgid "No test templates matching query"
msgstr "Keine zur Anfrage passenden Testvorlagen"
-#: templates/js/translated/part.js:1751 templates/js/translated/stock.js:1242
+#: templates/js/translated/part.js:1751 templates/js/translated/stock.js:1271
msgid "Edit test result"
msgstr "Testergebnis bearbeiten"
-#: templates/js/translated/part.js:1752 templates/js/translated/stock.js:1243
+#: templates/js/translated/part.js:1752 templates/js/translated/stock.js:1272
+#: templates/js/translated/stock.js:1518
msgid "Delete test result"
msgstr "Testergebnis löschen"
@@ -8689,347 +8793,375 @@ 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:74
+#: templates/js/translated/stock.js:75
msgid "Serialize Stock Item"
msgstr "Lagerartikel serialisieren"
-#: templates/js/translated/stock.js:92 templates/js/translated/stock.js:181
-msgid "Next available serial number"
-msgstr "Nächste verfügbare Seriennummer"
-
-#: templates/js/translated/stock.js:94 templates/js/translated/stock.js:183
-msgid "Latest serial number"
-msgstr "Letzte Seriennummer"
-
-#: templates/js/translated/stock.js:102
+#: templates/js/translated/stock.js:103
msgid "Confirm Stock Serialization"
msgstr "Lager-Serialisierung bestätigen"
-#: templates/js/translated/stock.js:111
+#: templates/js/translated/stock.js:112
msgid "Parent stock location"
msgstr "Übergeordneter Lagerort"
-#: templates/js/translated/stock.js:154
+#: templates/js/translated/stock.js:155
msgid "New Stock Location"
msgstr "Neuer Lagerstandort"
-#: templates/js/translated/stock.js:194
+#: templates/js/translated/stock.js:195
msgid "This part cannot be serialized"
msgstr "Dieser Teil kann nicht serialisiert werden"
-#: templates/js/translated/stock.js:233
+#: templates/js/translated/stock.js:234
msgid "Enter initial quantity for this stock item"
msgstr "Ausgangsmenge für diesen Lagerartikel eingeben"
-#: templates/js/translated/stock.js:239
+#: templates/js/translated/stock.js:240
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:382
+#: templates/js/translated/stock.js:383
msgid "Created new stock item"
msgstr "Neuer Lagerartikel erstellt"
-#: templates/js/translated/stock.js:395
+#: templates/js/translated/stock.js:396
msgid "Created multiple stock items"
msgstr "Mehrere Lagerartikel erstellt"
-#: templates/js/translated/stock.js:420
+#: templates/js/translated/stock.js:421
msgid "Find Serial Number"
msgstr "Seriennummer finden"
-#: templates/js/translated/stock.js:424 templates/js/translated/stock.js:425
+#: templates/js/translated/stock.js:425 templates/js/translated/stock.js:426
msgid "Enter serial number"
msgstr "Seriennummer eingeben"
-#: templates/js/translated/stock.js:441
+#: templates/js/translated/stock.js:442
msgid "Enter a serial number"
msgstr "Eine Seriennummer eingeben"
-#: templates/js/translated/stock.js:461
+#: templates/js/translated/stock.js:462
msgid "No matching serial number"
msgstr "Keine passende Seriennummer"
-#: templates/js/translated/stock.js:470
+#: templates/js/translated/stock.js:471
msgid "More than one matching result found"
msgstr "Mehrere Ergebnisse gefunden"
-#: templates/js/translated/stock.js:515
+#: templates/js/translated/stock.js:516
msgid "Export Stock"
msgstr "Bestand exportieren"
-#: templates/js/translated/stock.js:526
+#: templates/js/translated/stock.js:527
msgid "Include Sublocations"
msgstr "Einschließlich Unterstandorte"
-#: templates/js/translated/stock.js:527
+#: templates/js/translated/stock.js:528
msgid "Include stock items in sublocations"
msgstr "Lagerartikel in untergeordneten Lagerorten einschließen"
-#: templates/js/translated/stock.js:636
+#: templates/js/translated/stock.js:637
msgid "Confirm stock assignment"
msgstr ""
-#: templates/js/translated/stock.js:637
+#: templates/js/translated/stock.js:638
msgid "Assign Stock to Customer"
msgstr ""
-#: templates/js/translated/stock.js:714
+#: templates/js/translated/stock.js:715
msgid "Warning: Merge operation cannot be reversed"
msgstr "Achtung: Das Zusammenführen kann nicht rückgängig gemacht werden"
-#: templates/js/translated/stock.js:715
+#: templates/js/translated/stock.js:716
msgid "Some information will be lost when merging stock items"
msgstr "Einige Informationen gehen verloren, wenn Artikel zusammengeführt werden"
-#: templates/js/translated/stock.js:717
+#: templates/js/translated/stock.js:718
msgid "Stock transaction history will be deleted for merged items"
msgstr ""
-#: templates/js/translated/stock.js:718
+#: templates/js/translated/stock.js:719
msgid "Supplier part information will be deleted for merged items"
msgstr ""
-#: templates/js/translated/stock.js:804
+#: templates/js/translated/stock.js:805
msgid "Confirm stock item merge"
msgstr "Zusammenführung der Artikel bestätigen"
-#: templates/js/translated/stock.js:805
+#: templates/js/translated/stock.js:806
msgid "Merge Stock Items"
msgstr "Artikel zusammenführen"
-#: templates/js/translated/stock.js:900
+#: templates/js/translated/stock.js:901
msgid "Transfer Stock"
msgstr "Bestand verschieben"
-#: templates/js/translated/stock.js:901
+#: templates/js/translated/stock.js:902
msgid "Move"
msgstr "Verschieben"
-#: templates/js/translated/stock.js:907
+#: templates/js/translated/stock.js:908
msgid "Count Stock"
msgstr "Bestand zählen"
-#: templates/js/translated/stock.js:908
+#: templates/js/translated/stock.js:909
msgid "Count"
msgstr "Anzahl"
-#: templates/js/translated/stock.js:912
+#: templates/js/translated/stock.js:913
msgid "Remove Stock"
msgstr "Bestand entfernen"
-#: templates/js/translated/stock.js:913
+#: templates/js/translated/stock.js:914
msgid "Take"
msgstr "Entfernen"
-#: templates/js/translated/stock.js:917
+#: templates/js/translated/stock.js:918
msgid "Add Stock"
msgstr "Bestand hinzufügen"
-#: templates/js/translated/stock.js:918 users/models.py:208
+#: templates/js/translated/stock.js:919 users/models.py:213
msgid "Add"
msgstr "Hinzufügen"
-#: templates/js/translated/stock.js:922 templates/stock_table.html:58
+#: templates/js/translated/stock.js:923 templates/stock_table.html:58
msgid "Delete Stock"
msgstr "Bestand löschen"
-#: templates/js/translated/stock.js:1011
+#: templates/js/translated/stock.js:1012
msgid "Quantity cannot be adjusted for serialized stock"
msgstr "Menge von serialisiertem Bestand kann nicht bearbeitet werden"
-#: templates/js/translated/stock.js:1011
+#: templates/js/translated/stock.js:1012
msgid "Specify stock quantity"
msgstr "Bestandsanzahl angeben"
-#: templates/js/translated/stock.js:1051
+#: templates/js/translated/stock.js:1052
msgid "You must select at least one available stock item"
msgstr "Sie müssen mindestens einen Lagerartikel auswählen"
-#: templates/js/translated/stock.js:1209
+#: templates/js/translated/stock.js:1210
msgid "PASS"
msgstr "ERFOLGREICH"
-#: templates/js/translated/stock.js:1211
+#: templates/js/translated/stock.js:1212
msgid "FAIL"
msgstr "FEHLGESCHLAGEN"
-#: templates/js/translated/stock.js:1216
+#: templates/js/translated/stock.js:1217
msgid "NO RESULT"
msgstr "KEIN ERGEBNIS"
-#: templates/js/translated/stock.js:1238
+#: templates/js/translated/stock.js:1264
+msgid "Pass test"
+msgstr ""
+
+#: templates/js/translated/stock.js:1267
msgid "Add test result"
msgstr "Testergebnis hinzufügen"
-#: templates/js/translated/stock.js:1264
+#: templates/js/translated/stock.js:1293
msgid "No test results found"
msgstr "Keine Testergebnisse gefunden"
-#: templates/js/translated/stock.js:1321
+#: templates/js/translated/stock.js:1349
msgid "Test Date"
msgstr "Testdatum"
-#: templates/js/translated/stock.js:1428
+#: templates/js/translated/stock.js:1501
+msgid "Edit Test Result"
+msgstr "Testergebnis bearbeiten"
+
+#: templates/js/translated/stock.js:1523
+msgid "Delete Test Result"
+msgstr "Testergebnis löschen"
+
+#: templates/js/translated/stock.js:1552
msgid "In production"
msgstr "In Arbeit"
-#: templates/js/translated/stock.js:1432
+#: templates/js/translated/stock.js:1556
msgid "Installed in Stock Item"
msgstr "In Lagerartikel installiert"
-#: templates/js/translated/stock.js:1440
+#: templates/js/translated/stock.js:1564
msgid "Assigned to Sales Order"
msgstr "Auftrag zugewiesen"
-#: templates/js/translated/stock.js:1446
+#: templates/js/translated/stock.js:1570
msgid "No stock location set"
msgstr "Kein Lagerort gesetzt"
-#: templates/js/translated/stock.js:1604
+#: templates/js/translated/stock.js:1728
msgid "Stock item is in production"
msgstr "Lagerartikel wird produziert"
-#: templates/js/translated/stock.js:1609
+#: templates/js/translated/stock.js:1733
msgid "Stock item assigned to sales order"
msgstr "Lagerartikel wurde Auftrag zugewiesen"
-#: templates/js/translated/stock.js:1612
+#: templates/js/translated/stock.js:1736
msgid "Stock item assigned to customer"
msgstr "Lagerartikel wurde Kunden zugewiesen"
-#: templates/js/translated/stock.js:1616
+#: templates/js/translated/stock.js:1740
msgid "Stock item has expired"
msgstr "Lagerartikel ist abgelaufen"
-#: templates/js/translated/stock.js:1618
+#: templates/js/translated/stock.js:1742
msgid "Stock item will expire soon"
msgstr "Lagerartikel läuft demnächst ab"
-#: templates/js/translated/stock.js:1624
+#: templates/js/translated/stock.js:1748
msgid "Serialized stock item has been allocated"
msgstr "Serialisierter Lagerartikel wurde zugewiesen"
-#: templates/js/translated/stock.js:1626
+#: templates/js/translated/stock.js:1750
msgid "Stock item has been fully allocated"
msgstr "Lagerartikel wurde vollständig zugewiesen"
-#: templates/js/translated/stock.js:1628
+#: templates/js/translated/stock.js:1752
msgid "Stock item has been partially allocated"
msgstr "Lagerartikel wurde teilweise zugewiesen"
-#: templates/js/translated/stock.js:1633
+#: templates/js/translated/stock.js:1757
msgid "Stock item has been installed in another item"
msgstr "Lagerartikel in anderem Element verbaut"
-#: templates/js/translated/stock.js:1640
+#: templates/js/translated/stock.js:1764
msgid "Stock item has been rejected"
msgstr "Lagerartikel abgewiesen"
-#: templates/js/translated/stock.js:1642
+#: templates/js/translated/stock.js:1766
msgid "Stock item is lost"
msgstr "Lagerartikel verloren"
-#: templates/js/translated/stock.js:1644
+#: templates/js/translated/stock.js:1768
msgid "Stock item is destroyed"
msgstr "Lagerartikel zerstört"
-#: templates/js/translated/stock.js:1648
+#: templates/js/translated/stock.js:1772
#: templates/js/translated/table_filters.js:188
msgid "Depleted"
msgstr "gelöscht"
-#: templates/js/translated/stock.js:1698
+#: templates/js/translated/stock.js:1822
msgid "Stocktake"
msgstr "Inventur"
-#: templates/js/translated/stock.js:1771
+#: templates/js/translated/stock.js:1895
msgid "Supplier part not specified"
msgstr "Zuliefererteil nicht angegeben"
-#: templates/js/translated/stock.js:1809
+#: templates/js/translated/stock.js:1933
msgid "No stock items matching query"
msgstr "Keine zur Anfrage passenden Lagerartikel"
-#: templates/js/translated/stock.js:1830 templates/js/translated/stock.js:1878
+#: templates/js/translated/stock.js:1954 templates/js/translated/stock.js:2002
msgid "items"
msgstr "Teile"
-#: templates/js/translated/stock.js:1918
+#: templates/js/translated/stock.js:2042
msgid "batches"
msgstr "lose"
-#: templates/js/translated/stock.js:1945
+#: templates/js/translated/stock.js:2069
msgid "locations"
msgstr "Lagerorte"
-#: templates/js/translated/stock.js:1947
+#: templates/js/translated/stock.js:2071
msgid "Undefined location"
msgstr "unbekannter Lagerort"
-#: templates/js/translated/stock.js:2146
+#: templates/js/translated/stock.js:2270
msgid "Set Stock Status"
msgstr "Status setzen"
-#: templates/js/translated/stock.js:2160
+#: templates/js/translated/stock.js:2284
msgid "Select Status Code"
msgstr "Status Code setzen"
-#: templates/js/translated/stock.js:2161
+#: templates/js/translated/stock.js:2285
msgid "Status code must be selected"
msgstr "Status Code muss ausgewählt werden"
-#: templates/js/translated/stock.js:2340
+#: templates/js/translated/stock.js:2464
msgid "Allocated Quantity"
msgstr ""
-#: templates/js/translated/stock.js:2535
+#: templates/js/translated/stock.js:2659
msgid "Invalid date"
msgstr "Ungültiges Datum"
-#: templates/js/translated/stock.js:2557
+#: templates/js/translated/stock.js:2681
msgid "Details"
msgstr "Details"
-#: templates/js/translated/stock.js:2582
+#: templates/js/translated/stock.js:2706
msgid "Location no longer exists"
msgstr "Standort nicht mehr vorhanden"
-#: templates/js/translated/stock.js:2601
+#: templates/js/translated/stock.js:2725
msgid "Purchase order no longer exists"
msgstr "Bestellung existiert nicht mehr"
-#: templates/js/translated/stock.js:2620
+#: templates/js/translated/stock.js:2744
msgid "Customer no longer exists"
msgstr "Kunde existiert nicht mehr"
-#: templates/js/translated/stock.js:2638
+#: templates/js/translated/stock.js:2762
msgid "Stock item no longer exists"
msgstr "Lagerartikel existiert nicht mehr"
-#: templates/js/translated/stock.js:2661
+#: templates/js/translated/stock.js:2785
msgid "Added"
msgstr "Hinzugefügt"
-#: templates/js/translated/stock.js:2669
+#: templates/js/translated/stock.js:2793
msgid "Removed"
msgstr "Entfernt"
-#: templates/js/translated/stock.js:2710
+#: templates/js/translated/stock.js:2834
msgid "Edit tracking entry"
msgstr "Tracking-Eintrag bearbeiten"
-#: templates/js/translated/stock.js:2711
+#: templates/js/translated/stock.js:2835
msgid "Delete tracking entry"
msgstr "Tracking-Eintrag löschen"
-#: templates/js/translated/stock.js:2762
+#: templates/js/translated/stock.js:2886
msgid "No installed items"
msgstr "Keine installierten Elemente"
-#: templates/js/translated/stock.js:2813
+#: templates/js/translated/stock.js:2937
msgid "Uninstall Stock Item"
msgstr "Lagerartikel entfernen"
+#: templates/js/translated/stock.js:2973
+msgid "Install another stock item into this item"
+msgstr ""
+
+#: templates/js/translated/stock.js:2974
+msgid "Stock items can only be installed if they meet the following criteria"
+msgstr "Lagerartikel können nur installiert werden wenn folgende Kriterien erfüllt werden"
+
+#: templates/js/translated/stock.js:2976
+msgid "The Stock Item links to a Part which is the BOM for this Stock Item"
+msgstr ""
+
+#: templates/js/translated/stock.js:2977
+msgid "The Stock Item is currently available in stock"
+msgstr ""
+
+#: templates/js/translated/stock.js:2978
+msgid "The Stock Item is serialized and does not belong to another item"
+msgstr "Der Lagerartikel ist serialisiert und gehört nicht zu einem anderen Teil"
+
+#: templates/js/translated/stock.js:2991
+msgid "Select part to install"
+msgstr ""
+
#: templates/js/translated/table_filters.js:56
msgid "Trackable Part"
msgstr "Nachverfolgbares Teil"
@@ -9057,12 +9189,12 @@ msgstr "Lagerorte einschließen"
#: templates/js/translated/table_filters.js:121
#: templates/js/translated/table_filters.js:122
-#: templates/js/translated/table_filters.js:407
+#: templates/js/translated/table_filters.js:402
msgid "Include subcategories"
msgstr "Unterkategorien einschließen"
#: templates/js/translated/table_filters.js:126
-#: templates/js/translated/table_filters.js:442
+#: templates/js/translated/table_filters.js:437
msgid "Subscribed"
msgstr "Abonniert"
@@ -9104,7 +9236,7 @@ msgid "Batch code"
msgstr "Losnummer"
#: templates/js/translated/table_filters.js:163
-#: templates/js/translated/table_filters.js:379
+#: templates/js/translated/table_filters.js:374
msgid "Active parts"
msgstr "Aktive Teile"
@@ -9189,47 +9321,47 @@ msgstr "Zeige abgelaufene Lagerartikel"
msgid "Show stock which is close to expiring"
msgstr "Bestand, der bald ablaufen, anzeigen"
-#: templates/js/translated/table_filters.js:290
+#: templates/js/translated/table_filters.js:285
msgid "Build status"
msgstr "Bauauftrags-Status"
-#: templates/js/translated/table_filters.js:303
-#: templates/js/translated/table_filters.js:344
+#: templates/js/translated/table_filters.js:298
+#: templates/js/translated/table_filters.js:339
msgid "Assigned to me"
msgstr "Mir zugewiesen"
-#: templates/js/translated/table_filters.js:320
-#: templates/js/translated/table_filters.js:331
-#: templates/js/translated/table_filters.js:352
+#: templates/js/translated/table_filters.js:315
+#: templates/js/translated/table_filters.js:326
+#: templates/js/translated/table_filters.js:347
msgid "Order status"
msgstr "Bestellstatus"
-#: templates/js/translated/table_filters.js:336
-#: templates/js/translated/table_filters.js:357
+#: templates/js/translated/table_filters.js:331
+#: templates/js/translated/table_filters.js:352
msgid "Outstanding"
msgstr "ausstehend"
-#: templates/js/translated/table_filters.js:408
+#: templates/js/translated/table_filters.js:403
msgid "Include parts in subcategories"
msgstr "Teile in Unterkategorien einschließen"
-#: templates/js/translated/table_filters.js:412
+#: templates/js/translated/table_filters.js:407
msgid "Has IPN"
msgstr "Hat IPN"
-#: templates/js/translated/table_filters.js:413
+#: templates/js/translated/table_filters.js:408
msgid "Part has internal part number"
msgstr "Teil hat Interne Teilenummer"
-#: templates/js/translated/table_filters.js:418
+#: templates/js/translated/table_filters.js:413
msgid "Show active parts"
msgstr "Aktive Teile anzeigen"
-#: templates/js/translated/table_filters.js:426
+#: templates/js/translated/table_filters.js:421
msgid "Stock available"
msgstr "verfügbarer Bestand"
-#: templates/js/translated/table_filters.js:454
+#: templates/js/translated/table_filters.js:449
msgid "Purchasable"
msgstr "Käuflich"
@@ -9482,35 +9614,35 @@ msgstr "Berechtigungen"
msgid "Important dates"
msgstr "wichtige Daten"
-#: users/models.py:195
+#: users/models.py:200
msgid "Permission set"
msgstr "Berechtigung geändert"
-#: users/models.py:203
+#: users/models.py:208
msgid "Group"
msgstr "Gruppe"
-#: users/models.py:206
+#: users/models.py:211
msgid "View"
msgstr "Ansicht"
-#: users/models.py:206
+#: users/models.py:211
msgid "Permission to view items"
msgstr "Berechtigung Einträge anzuzeigen"
-#: users/models.py:208
+#: users/models.py:213
msgid "Permission to add items"
msgstr "Berechtigung Einträge zu erstellen"
-#: users/models.py:210
+#: users/models.py:215
msgid "Change"
msgstr "Ändern"
-#: users/models.py:210
+#: users/models.py:215
msgid "Permissions to edit items"
msgstr "Berechtigungen Einträge zu ändern"
-#: users/models.py:212
+#: users/models.py:217
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 8caeacf059..51ac59a646 100644
--- a/InvenTree/locale/el/LC_MESSAGES/django.po
+++ b/InvenTree/locale/el/LC_MESSAGES/django.po
@@ -3,8 +3,8 @@ msgid ""
msgstr ""
"Project-Id-Version: inventree\n"
"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2022-01-29 00:17+0000\n"
-"PO-Revision-Date: 2022-01-29 01:11\n"
+"POT-Creation-Date: 2022-02-18 20:36+0000\n"
+"PO-Revision-Date: 2022-02-18 20:38\n"
"Last-Translator: \n"
"Language-Team: Greek\n"
"Language: el_GR\n"
@@ -34,9 +34,9 @@ msgstr ""
msgid "Enter date"
msgstr ""
-#: InvenTree/forms.py:126 build/forms.py:48 build/forms.py:69 order/forms.py:24
-#: order/forms.py:35 order/forms.py:46 order/forms.py:57
-#: templates/account/email_confirm.html:20 templates/js/translated/forms.js:595
+#: InvenTree/forms.py:126 order/forms.py:24 order/forms.py:35 order/forms.py:46
+#: order/forms.py:57 templates/account/email_confirm.html:20
+#: templates/js/translated/forms.js:596
msgid "Confirm"
msgstr ""
@@ -86,7 +86,7 @@ msgid "Duplicate serial: {n}"
msgstr ""
#: InvenTree/helpers.py:446 order/models.py:282 order/models.py:425
-#: stock/views.py:1231
+#: stock/views.py:1082
msgid "Invalid quantity provided"
msgstr ""
@@ -119,133 +119,133 @@ msgstr ""
msgid "Number of unique serial number ({s}) must match quantity ({q})"
msgstr ""
-#: InvenTree/models.py:120
+#: InvenTree/models.py:176
msgid "Missing file"
msgstr ""
-#: InvenTree/models.py:121
+#: InvenTree/models.py:177
msgid "Missing external link"
msgstr ""
-#: InvenTree/models.py:132 stock/models.py:1995
+#: InvenTree/models.py:188 stock/models.py:1995
#: templates/js/translated/attachment.js:119
msgid "Attachment"
msgstr ""
-#: InvenTree/models.py:133
+#: InvenTree/models.py:189
msgid "Select file to attach"
msgstr ""
-#: InvenTree/models.py:139 company/models.py:131 company/models.py:348
-#: company/models.py:564 order/models.py:127 part/models.py:830
+#: InvenTree/models.py:195 company/models.py:131 company/models.py:348
+#: company/models.py:564 order/models.py:127 part/models.py:860
#: report/templates/report/inventree_build_order_base.html:165
#: templates/js/translated/company.js:540
#: templates/js/translated/company.js:829 templates/js/translated/part.js:1324
msgid "Link"
msgstr ""
-#: InvenTree/models.py:140 build/models.py:332 part/models.py:831
+#: InvenTree/models.py:196 build/models.py:332 part/models.py:861
#: stock/models.py:529
msgid "Link to external URL"
msgstr ""
-#: InvenTree/models.py:143 templates/js/translated/attachment.js:163
+#: InvenTree/models.py:199 templates/js/translated/attachment.js:163
msgid "Comment"
msgstr ""
-#: InvenTree/models.py:143
+#: InvenTree/models.py:199
msgid "File comment"
msgstr ""
-#: InvenTree/models.py:149 InvenTree/models.py:150 common/models.py:1223
-#: common/models.py:1224 common/models.py:1452 common/models.py:1453
-#: part/models.py:2265 part/models.py:2285
+#: InvenTree/models.py:205 InvenTree/models.py:206 common/models.py:1235
+#: common/models.py:1236 common/models.py:1464 common/models.py:1465
+#: part/models.py:2301 part/models.py:2321
#: report/templates/report/inventree_test_report_base.html:96
-#: templates/js/translated/stock.js:2692
+#: templates/js/translated/stock.js:2816
msgid "User"
msgstr ""
-#: InvenTree/models.py:153
+#: InvenTree/models.py:209
msgid "upload date"
msgstr ""
-#: InvenTree/models.py:176
+#: InvenTree/models.py:232
msgid "Filename must not be empty"
msgstr ""
-#: InvenTree/models.py:199
+#: InvenTree/models.py:255
msgid "Invalid attachment directory"
msgstr ""
-#: InvenTree/models.py:209
+#: InvenTree/models.py:265
#, python-brace-format
msgid "Filename contains illegal character '{c}'"
msgstr ""
-#: InvenTree/models.py:212
+#: InvenTree/models.py:268
msgid "Filename missing extension"
msgstr ""
-#: InvenTree/models.py:219
+#: InvenTree/models.py:275
msgid "Attachment with this filename already exists"
msgstr ""
-#: InvenTree/models.py:226
+#: InvenTree/models.py:282
msgid "Error renaming file"
msgstr ""
-#: InvenTree/models.py:261
+#: InvenTree/models.py:317
msgid "Invalid choice"
msgstr ""
-#: InvenTree/models.py:277 InvenTree/models.py:278 common/models.py:1438
-#: company/models.py:415 label/models.py:112 part/models.py:774
-#: part/models.py:2449 plugin/models.py:40 report/models.py:181
+#: InvenTree/models.py:333 InvenTree/models.py:334 common/models.py:1450
+#: company/models.py:415 label/models.py:112 part/models.py:804
+#: part/models.py:2485 plugin/models.py:40 report/models.py:181
#: templates/InvenTree/settings/mixins/urls.html:13
#: templates/InvenTree/settings/plugin.html:48
#: templates/InvenTree/settings/plugin.html:125
#: templates/InvenTree/settings/plugin_settings.html:23
-#: templates/InvenTree/settings/settings.html:282
+#: templates/InvenTree/settings/settings.html:319
#: templates/js/translated/company.js:641 templates/js/translated/part.js:567
#: templates/js/translated/part.js:706 templates/js/translated/part.js:1631
-#: templates/js/translated/stock.js:2485
+#: templates/js/translated/stock.js:2609
msgid "Name"
msgstr ""
-#: InvenTree/models.py:284 build/models.py:209
+#: InvenTree/models.py:340 build/models.py:209
#: build/templates/build/detail.html:25 company/models.py:354
#: company/models.py:570 company/templates/company/company_base.html:68
#: company/templates/company/manufacturer_part.html:76
#: company/templates/company/supplier_part.html:73 label/models.py:119
-#: order/models.py:125 part/models.py:797 part/templates/part/category.html:74
+#: order/models.py:125 part/models.py:827 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:93
#: templates/InvenTree/settings/plugin_settings.html:33
-#: templates/js/translated/bom.js:339 templates/js/translated/bom.js:552
-#: templates/js/translated/build.js:1682 templates/js/translated/company.js:345
+#: templates/js/translated/bom.js:552 templates/js/translated/bom.js:765
+#: templates/js/translated/build.js:1920 templates/js/translated/company.js:345
#: templates/js/translated/company.js:551
#: templates/js/translated/company.js:840 templates/js/translated/order.js:836
#: templates/js/translated/order.js:1019 templates/js/translated/order.js:1258
#: templates/js/translated/part.js:626 templates/js/translated/part.js:999
#: templates/js/translated/part.js:1084 templates/js/translated/part.js:1254
#: templates/js/translated/part.js:1650 templates/js/translated/part.js:1719
-#: templates/js/translated/stock.js:1577 templates/js/translated/stock.js:2314
-#: templates/js/translated/stock.js:2497 templates/js/translated/stock.js:2542
+#: templates/js/translated/stock.js:1701 templates/js/translated/stock.js:2438
+#: templates/js/translated/stock.js:2621 templates/js/translated/stock.js:2666
msgid "Description"
msgstr ""
-#: InvenTree/models.py:285
+#: InvenTree/models.py:341
msgid "Description (optional)"
msgstr ""
-#: InvenTree/models.py:293
+#: InvenTree/models.py:349
msgid "parent"
msgstr ""
-#: InvenTree/serializers.py:65 part/models.py:2734
+#: InvenTree/serializers.py:65 part/models.py:2803
msgid "Must be a valid number"
msgstr ""
@@ -253,83 +253,127 @@ msgstr ""
msgid "Filename"
msgstr ""
-#: InvenTree/settings.py:661
+#: InvenTree/serializers.py:334
+msgid "Invalid value"
+msgstr ""
+
+#: InvenTree/serializers.py:355
+msgid "Data File"
+msgstr ""
+
+#: InvenTree/serializers.py:356
+msgid "Select data file for upload"
+msgstr ""
+
+#: InvenTree/serializers.py:380
+msgid "Unsupported file type"
+msgstr ""
+
+#: InvenTree/serializers.py:386
+msgid "File is too large"
+msgstr ""
+
+#: InvenTree/serializers.py:407
+msgid "No columns found in file"
+msgstr ""
+
+#: InvenTree/serializers.py:410
+msgid "No data rows found in file"
+msgstr ""
+
+#: InvenTree/serializers.py:533
+msgid "No data rows provided"
+msgstr ""
+
+#: InvenTree/serializers.py:536
+msgid "No data columns supplied"
+msgstr ""
+
+#: InvenTree/serializers.py:623
+msgid "Missing required column"
+msgstr ""
+
+#: InvenTree/serializers.py:632
+msgid "Duplicate column"
+msgstr ""
+
+#: InvenTree/settings.py:655
msgid "German"
msgstr ""
-#: InvenTree/settings.py:662
+#: InvenTree/settings.py:656
msgid "Greek"
msgstr ""
-#: InvenTree/settings.py:663
+#: InvenTree/settings.py:657
msgid "English"
msgstr ""
-#: InvenTree/settings.py:664
+#: InvenTree/settings.py:658
msgid "Spanish"
msgstr ""
-#: InvenTree/settings.py:665
+#: InvenTree/settings.py:659
msgid "Spanish (Mexican)"
msgstr ""
-#: InvenTree/settings.py:666
+#: InvenTree/settings.py:660
msgid "French"
msgstr ""
-#: InvenTree/settings.py:667
+#: InvenTree/settings.py:661
msgid "Hebrew"
msgstr ""
-#: InvenTree/settings.py:668
+#: InvenTree/settings.py:662
msgid "Italian"
msgstr ""
-#: InvenTree/settings.py:669
+#: InvenTree/settings.py:663
msgid "Japanese"
msgstr ""
-#: InvenTree/settings.py:670
+#: InvenTree/settings.py:664
msgid "Korean"
msgstr ""
-#: InvenTree/settings.py:671
+#: InvenTree/settings.py:665
msgid "Dutch"
msgstr ""
-#: InvenTree/settings.py:672
+#: InvenTree/settings.py:666
msgid "Norwegian"
msgstr ""
-#: InvenTree/settings.py:673
+#: InvenTree/settings.py:667
msgid "Polish"
msgstr ""
-#: InvenTree/settings.py:674
+#: InvenTree/settings.py:668
msgid "Portugese"
msgstr ""
-#: InvenTree/settings.py:675
+#: InvenTree/settings.py:669
msgid "Russian"
msgstr ""
-#: InvenTree/settings.py:676
+#: InvenTree/settings.py:670
msgid "Swedish"
msgstr ""
-#: InvenTree/settings.py:677
+#: InvenTree/settings.py:671
msgid "Thai"
msgstr ""
-#: InvenTree/settings.py:678
+#: InvenTree/settings.py:672
msgid "Turkish"
msgstr ""
-#: InvenTree/settings.py:679
+#: InvenTree/settings.py:673
msgid "Vietnamese"
msgstr ""
-#: InvenTree/settings.py:680
+#: InvenTree/settings.py:674
msgid "Chinese"
msgstr ""
@@ -346,7 +390,7 @@ msgid "InvenTree system health checks failed"
msgstr ""
#: InvenTree/status_codes.py:101 InvenTree/status_codes.py:142
-#: InvenTree/status_codes.py:316 templates/js/translated/table_filters.js:313
+#: InvenTree/status_codes.py:316 templates/js/translated/table_filters.js:308
msgid "Pending"
msgstr ""
@@ -456,7 +500,7 @@ msgstr ""
msgid "Split child item"
msgstr ""
-#: InvenTree/status_codes.py:294 templates/js/translated/stock.js:2072
+#: InvenTree/status_codes.py:294 templates/js/translated/stock.js:2196
msgid "Merged stock items"
msgstr ""
@@ -484,40 +528,40 @@ msgstr ""
msgid "Production"
msgstr ""
-#: InvenTree/validators.py:23
+#: InvenTree/validators.py:25
msgid "Not a valid currency code"
msgstr ""
-#: InvenTree/validators.py:51
+#: InvenTree/validators.py:53
msgid "Invalid character in part name"
msgstr ""
-#: InvenTree/validators.py:64
+#: InvenTree/validators.py:66
#, python-brace-format
msgid "IPN must match regex pattern {pat}"
msgstr ""
-#: InvenTree/validators.py:78 InvenTree/validators.py:92
-#: InvenTree/validators.py:106
+#: InvenTree/validators.py:80 InvenTree/validators.py:94
+#: InvenTree/validators.py:108
#, python-brace-format
msgid "Reference must match pattern {pattern}"
msgstr ""
-#: InvenTree/validators.py:114
+#: InvenTree/validators.py:116
#, python-brace-format
msgid "Illegal character in name ({x})"
msgstr ""
-#: InvenTree/validators.py:133 InvenTree/validators.py:149
+#: InvenTree/validators.py:137 InvenTree/validators.py:153
msgid "Overage value must not be negative"
msgstr ""
-#: InvenTree/validators.py:151
+#: InvenTree/validators.py:155
msgid "Overage must not exceed 100%"
msgstr ""
-#: InvenTree/validators.py:158
-msgid "Overage must be an integer value or a percentage"
+#: InvenTree/validators.py:162
+msgid "Invalid value for overage"
msgstr ""
#: InvenTree/views.py:538
@@ -584,69 +628,11 @@ msgstr ""
msgid "Barcode associated with Stock Item"
msgstr ""
-#: build/forms.py:36 build/models.py:1293
-#: build/templates/build/build_base.html:82
-#: build/templates/build/detail.html:35 common/models.py:1263
-#: company/forms.py:42 company/templates/company/supplier_part.html:251
-#: order/models.py:805 order/models.py:1229 order/serializers.py:816
-#: order/templates/order/order_wizard/match_parts.html:30
-#: order/templates/order/order_wizard/select_parts.html:34 part/forms.py:144
-#: part/forms.py:160 part/forms.py:176 part/models.py:2636
-#: part/templates/part/bom_upload/match_parts.html:31
-#: part/templates/part/detail.html:992 part/templates/part/detail.html:1078
-#: part/templates/part/part_pricing.html:16
-#: report/templates/report/inventree_build_order_base.html:114
-#: report/templates/report/inventree_po_report.html:91
-#: report/templates/report/inventree_so_report.html:91
-#: report/templates/report/inventree_test_report_base.html:81
-#: report/templates/report/inventree_test_report_base.html:139
-#: stock/forms.py:142 stock/serializers.py:293
-#: stock/templates/stock/item_base.html:181
-#: stock/templates/stock/item_base.html:262
-#: stock/templates/stock/item_base.html:270
-#: templates/js/translated/barcode.js:385 templates/js/translated/bom.js:567
-#: templates/js/translated/build.js:295 templates/js/translated/build.js:495
-#: templates/js/translated/build.js:689 templates/js/translated/build.js:699
-#: templates/js/translated/build.js:1075 templates/js/translated/build.js:1422
-#: templates/js/translated/model_renderers.js:99
-#: templates/js/translated/order.js:101 templates/js/translated/order.js:1056
-#: 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:906
-#: templates/js/translated/part.js:1862 templates/js/translated/part.js:1985
-#: templates/js/translated/part.js:2063 templates/js/translated/stock.js:391
-#: templates/js/translated/stock.js:588 templates/js/translated/stock.js:758
-#: templates/js/translated/stock.js:2677 templates/js/translated/stock.js:2779
-msgid "Quantity"
-msgstr ""
-
-#: build/forms.py:37
-msgid "Enter quantity for build output"
-msgstr ""
-
-#: build/forms.py:41 order/serializers.py:820 stock/forms.py:81
-#: stock/serializers.py:314 templates/js/translated/stock.js:238
-#: templates/js/translated/stock.js:392
-msgid "Serial Numbers"
-msgstr ""
-
-#: build/forms.py:43
-msgid "Enter serial numbers for build outputs"
-msgstr ""
-
-#: build/forms.py:49
-msgid "Confirm creation of build output"
-msgstr ""
-
-#: build/forms.py:70
-msgid "Confirm deletion of build output"
-msgstr ""
-
-#: build/forms.py:89
+#: build/forms.py:20
msgid "Confirm cancel"
msgstr ""
-#: build/forms.py:89 build/views.py:65
+#: build/forms.py:20 build/views.py:62
msgid "Confirm build cancellation"
msgstr ""
@@ -657,7 +643,7 @@ msgstr ""
#: build/models.py:139 build/templates/build/build_base.html:9
#: build/templates/build/build_base.html:27
#: report/templates/report/inventree_build_order_base.html:106
-#: templates/js/translated/build.js:457 templates/js/translated/stock.js:2290
+#: templates/js/translated/build.js:676 templates/js/translated/stock.js:2414
msgid "Build Order"
msgstr ""
@@ -665,7 +651,7 @@ msgstr ""
#: 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
+#: part/templates/part/part_sidebar.html:21 templates/InvenTree/index.html:221
#: templates/InvenTree/search.html:139
#: templates/InvenTree/settings/sidebar.html:43 users/models.py:44
msgid "Build Orders"
@@ -676,11 +662,11 @@ msgid "Build Order Reference"
msgstr ""
#: build/models.py:201 order/models.py:213 order/models.py:541
-#: order/models.py:812 part/models.py:2645
-#: part/templates/part/bom_upload/match_parts.html:30
+#: order/models.py:812 part/models.py:2714
+#: part/templates/part/upload_bom.html:54
#: report/templates/report/inventree_po_report.html:92
#: report/templates/report/inventree_so_report.html:92
-#: templates/js/translated/bom.js:559 templates/js/translated/build.js:1179
+#: templates/js/translated/bom.js:772 templates/js/translated/build.js:1401
#: templates/js/translated/order.js:1050 templates/js/translated/order.js:2144
msgid "Reference"
msgstr ""
@@ -689,7 +675,7 @@ msgstr ""
msgid "Brief description of the build"
msgstr ""
-#: build/models.py:221 build/templates/build/build_base.html:164
+#: build/models.py:221 build/templates/build/build_base.html:169
#: build/templates/build/detail.html:88
msgid "Parent Build"
msgstr ""
@@ -702,30 +688,31 @@ msgstr ""
#: build/templates/build/detail.html:30 company/models.py:705
#: order/models.py:876 order/models.py:950
#: order/templates/order/order_wizard/select_parts.html:32 part/models.py:359
-#: part/models.py:2211 part/models.py:2227 part/models.py:2246
-#: part/models.py:2263 part/models.py:2365 part/models.py:2487
-#: part/models.py:2620 part/models.py:2927 part/serializers.py:658
-#: part/templates/part/part_app_base.html:8
+#: part/models.py:2247 part/models.py:2263 part/models.py:2282
+#: part/models.py:2299 part/models.py:2401 part/models.py:2523
+#: part/models.py:2613 part/models.py:2689 part/models.py:2996
+#: part/serializers.py:666 part/templates/part/part_app_base.html:8
#: part/templates/part/part_pricing.html:12
#: part/templates/part/set_category.html:13
+#: part/templates/part/upload_bom.html:52
#: 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: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:338
-#: templates/js/translated/bom.js:517 templates/js/translated/build.js:680
-#: templates/js/translated/build.js:1048 templates/js/translated/build.js:1419
-#: templates/js/translated/build.js:1687 templates/js/translated/company.js:492
+#: templates/js/translated/barcode.js:383 templates/js/translated/bom.js:551
+#: templates/js/translated/bom.js:730 templates/js/translated/build.js:902
+#: templates/js/translated/build.js:1270 templates/js/translated/build.js:1655
+#: templates/js/translated/build.js:1925 templates/js/translated/company.js:492
#: templates/js/translated/company.js:749 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:984
#: templates/js/translated/part.js:1065 templates/js/translated/part.js:1232
-#: templates/js/translated/stock.js:562 templates/js/translated/stock.js:727
-#: templates/js/translated/stock.js:934 templates/js/translated/stock.js:1534
-#: templates/js/translated/stock.js:2767
+#: templates/js/translated/stock.js:563 templates/js/translated/stock.js:728
+#: templates/js/translated/stock.js:935 templates/js/translated/stock.js:1658
+#: templates/js/translated/stock.js:2891 templates/js/translated/stock.js:2990
msgid "Part"
msgstr ""
@@ -741,7 +728,7 @@ msgstr ""
msgid "SalesOrder to which this build is allocated"
msgstr ""
-#: build/models.py:249 templates/js/translated/build.js:1407
+#: build/models.py:249 templates/js/translated/build.js:1643
#: templates/js/translated/order.js:1564
msgid "Source Location"
msgstr ""
@@ -782,15 +769,15 @@ msgstr ""
msgid "Build status code"
msgstr ""
-#: build/models.py:287 stock/models.py:533
+#: build/models.py:287 build/serializers.py:218 stock/models.py:533
msgid "Batch Code"
msgstr ""
-#: build/models.py:291
+#: build/models.py:291 build/serializers.py:219
msgid "Batch code for this build output"
msgstr ""
-#: build/models.py:294 order/models.py:129 part/models.py:969
+#: build/models.py:294 order/models.py:129 part/models.py:999
#: part/templates/part/part_base.html:313 templates/js/translated/order.js:1271
msgid "Creation Date"
msgstr ""
@@ -804,7 +791,7 @@ msgid "Target date for build completion. Build will be overdue after this date."
msgstr ""
#: build/models.py:302 order/models.py:255
-#: templates/js/translated/build.js:1758
+#: templates/js/translated/build.js:1996
msgid "Completion Date"
msgstr ""
@@ -812,7 +799,7 @@ msgstr ""
msgid "completed by"
msgstr ""
-#: build/models.py:316 templates/js/translated/build.js:1729
+#: build/models.py:316 templates/js/translated/build.js:1967
msgid "Issued by"
msgstr ""
@@ -820,12 +807,12 @@ msgstr ""
msgid "User who issued this build order"
msgstr ""
-#: build/models.py:325 build/templates/build/build_base.html:185
+#: build/models.py:325 build/templates/build/build_base.html:190
#: build/templates/build/detail.html:116 order/models.py:143
#: order/templates/order/order_base.html:170
-#: order/templates/order/sales_order_base.html:182 part/models.py:973
+#: order/templates/order/sales_order_base.html:182 part/models.py:1003
#: report/templates/report/inventree_build_order_base.html:159
-#: templates/js/translated/build.js:1741 templates/js/translated/order.js:864
+#: templates/js/translated/build.js:1979 templates/js/translated/order.js:864
msgid "Responsible"
msgstr ""
@@ -837,26 +824,26 @@ msgstr ""
#: company/templates/company/manufacturer_part.html:102
#: company/templates/company/supplier_part.html:126
#: part/templates/part/part_base.html:354 stock/models.py:527
-#: stock/templates/stock/item_base.html:373
+#: stock/templates/stock/item_base.html:375
msgid "External Link"
msgstr ""
-#: build/models.py:336 build/serializers.py:201
+#: build/models.py:336 build/serializers.py:380
#: build/templates/build/sidebar.html:21 company/models.py:142
#: company/models.py:577 company/templates/company/sidebar.html:25
#: order/models.py:147 order/models.py:814 order/models.py:1071
#: order/templates/order/po_sidebar.html:11
-#: order/templates/order/so_sidebar.html:17 part/models.py:958
-#: part/templates/part/detail.html:137 part/templates/part/part_sidebar.html:54
+#: order/templates/order/so_sidebar.html:17 part/models.py:988
+#: part/templates/part/detail.html:140 part/templates/part/part_sidebar.html:57
#: report/templates/report/inventree_build_order_base.html:173
-#: stock/forms.py:140 stock/forms.py:190 stock/forms.py:224 stock/models.py:599
+#: stock/forms.py:137 stock/forms.py:171 stock/models.py:599
#: stock/models.py:1895 stock/models.py:2001 stock/serializers.py:332
-#: stock/serializers.py:640 stock/serializers.py:738 stock/serializers.py:870
+#: stock/serializers.py:697 stock/serializers.py:795 stock/serializers.py:927
#: stock/templates/stock/stock_sidebar.html:25
-#: templates/js/translated/barcode.js:58 templates/js/translated/bom.js:723
+#: templates/js/translated/barcode.js:58 templates/js/translated/bom.js:936
#: templates/js/translated/company.js:845 templates/js/translated/order.js:1149
#: templates/js/translated/order.js:1445 templates/js/translated/order.js:2280
-#: templates/js/translated/stock.js:1317 templates/js/translated/stock.js:1803
+#: templates/js/translated/stock.js:1345 templates/js/translated/stock.js:1927
msgid "Notes"
msgstr ""
@@ -864,208 +851,284 @@ msgstr ""
msgid "Extra build notes"
msgstr ""
-#: build/models.py:717
+#: build/models.py:756
msgid "No build output specified"
msgstr ""
-#: build/models.py:720
+#: build/models.py:759
msgid "Build output is already completed"
msgstr ""
-#: build/models.py:723
+#: build/models.py:762
msgid "Build output does not match Build Order"
msgstr ""
-#: build/models.py:1115
+#: build/models.py:1154
msgid "Build item must specify a build output, as master part is marked as trackable"
msgstr ""
-#: build/models.py:1124
+#: build/models.py:1163
#, python-brace-format
msgid "Allocated quantity ({q}) must not execed available stock quantity ({a})"
msgstr ""
-#: build/models.py:1134
+#: build/models.py:1173
msgid "Stock item is over-allocated"
msgstr ""
-#: build/models.py:1140 order/models.py:1189
+#: build/models.py:1179 order/models.py:1189
msgid "Allocation quantity must be greater than zero"
msgstr ""
-#: build/models.py:1146
+#: build/models.py:1185
msgid "Quantity must be 1 for serialized stock"
msgstr ""
-#: build/models.py:1203
+#: build/models.py:1242
msgid "Selected stock item not found in BOM"
msgstr ""
-#: build/models.py:1263 stock/templates/stock/item_base.html:345
-#: templates/InvenTree/search.html:137 templates/js/translated/build.js:1660
+#: build/models.py:1302 stock/templates/stock/item_base.html:347
+#: templates/InvenTree/search.html:137 templates/js/translated/build.js:1898
#: templates/navbar.html:35
msgid "Build"
msgstr ""
-#: build/models.py:1264
+#: build/models.py:1303
msgid "Build to allocate parts"
msgstr ""
-#: build/models.py:1280 build/serializers.py:388 order/serializers.py:696
-#: order/serializers.py:714 stock/serializers.py:578 stock/serializers.py:696
-#: stock/templates/stock/item_base.html:9
+#: build/models.py:1319 build/serializers.py:570 order/serializers.py:696
+#: order/serializers.py:714 stock/serializers.py:404 stock/serializers.py:635
+#: stock/serializers.py:753 stock/templates/stock/item_base.html:9
#: stock/templates/stock/item_base.html:23
-#: stock/templates/stock/item_base.html:367
-#: templates/js/translated/build.js:468 templates/js/translated/build.js:473
-#: templates/js/translated/build.js:1421 templates/js/translated/build.js:1803
+#: stock/templates/stock/item_base.html:369
+#: templates/js/translated/build.js:687 templates/js/translated/build.js:692
+#: templates/js/translated/build.js:1657 templates/js/translated/build.js:2041
#: 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:563 templates/js/translated/stock.js:728
-#: templates/js/translated/stock.js:2628
+#: templates/js/translated/stock.js:564 templates/js/translated/stock.js:729
+#: templates/js/translated/stock.js:2752
msgid "Stock Item"
msgstr ""
-#: build/models.py:1281
+#: build/models.py:1320
msgid "Source stock item"
msgstr ""
-#: build/models.py:1294
+#: build/models.py:1332 build/serializers.py:188
+#: build/templates/build/build_base.html:82
+#: build/templates/build/detail.html:35 common/models.py:1275
+#: company/forms.py:42 company/templates/company/supplier_part.html:251
+#: order/models.py:805 order/models.py:1229 order/serializers.py:816
+#: order/templates/order/order_wizard/match_parts.html:30
+#: order/templates/order/order_wizard/select_parts.html:34 part/forms.py:144
+#: part/forms.py:160 part/forms.py:176 part/models.py:2705
+#: part/templates/part/detail.html:995 part/templates/part/detail.html:1081
+#: part/templates/part/part_pricing.html:16
+#: part/templates/part/upload_bom.html:53
+#: report/templates/report/inventree_build_order_base.html:114
+#: report/templates/report/inventree_po_report.html:91
+#: report/templates/report/inventree_so_report.html:91
+#: report/templates/report/inventree_test_report_base.html:81
+#: report/templates/report/inventree_test_report_base.html:139
+#: stock/forms.py:139 stock/serializers.py:293
+#: stock/templates/stock/item_base.html:183
+#: stock/templates/stock/item_base.html:264
+#: stock/templates/stock/item_base.html:272
+#: templates/js/translated/barcode.js:385 templates/js/translated/bom.js:780
+#: templates/js/translated/build.js:375 templates/js/translated/build.js:523
+#: templates/js/translated/build.js:714 templates/js/translated/build.js:911
+#: templates/js/translated/build.js:921 templates/js/translated/build.js:1297
+#: templates/js/translated/build.js:1658
+#: templates/js/translated/model_renderers.js:99
+#: templates/js/translated/order.js:101 templates/js/translated/order.js:1056
+#: 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:906
+#: templates/js/translated/part.js:1862 templates/js/translated/part.js:1985
+#: templates/js/translated/part.js:2063 templates/js/translated/stock.js:392
+#: templates/js/translated/stock.js:589 templates/js/translated/stock.js:759
+#: templates/js/translated/stock.js:2801 templates/js/translated/stock.js:2903
+msgid "Quantity"
+msgstr ""
+
+#: build/models.py:1333
msgid "Stock quantity to allocate to build"
msgstr ""
-#: build/models.py:1302
+#: build/models.py:1341
msgid "Install into"
msgstr ""
-#: build/models.py:1303
+#: build/models.py:1342
msgid "Destination stock item"
msgstr ""
-#: build/serializers.py:137 build/serializers.py:417
+#: build/serializers.py:138 build/serializers.py:599
msgid "Build Output"
msgstr ""
-#: build/serializers.py:146
+#: build/serializers.py:150
msgid "Build output does not match the parent build"
msgstr ""
-#: build/serializers.py:150
+#: build/serializers.py:154
msgid "Output part does not match BuildOrder part"
msgstr ""
-#: build/serializers.py:154
+#: build/serializers.py:158
msgid "This build output has already been completed"
msgstr ""
-#: build/serializers.py:158
+#: build/serializers.py:164
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:731
-#: stock/serializers.py:972 stock/templates/stock/item_base.html:313
-#: templates/js/translated/barcode.js:384
-#: templates/js/translated/barcode.js:557 templates/js/translated/build.js:480
-#: templates/js/translated/build.js:1087 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:179 templates/js/translated/stock.js:564
-#: templates/js/translated/stock.js:729 templates/js/translated/stock.js:936
-#: templates/js/translated/stock.js:1684 templates/js/translated/stock.js:2569
-msgid "Location"
+#: build/serializers.py:189
+msgid "Enter quantity for build output"
msgstr ""
-#: build/serializers.py:191
-msgid "Location for completed build outputs"
-msgstr ""
-
-#: build/serializers.py:197 build/templates/build/build_base.html:137
-#: build/templates/build/detail.html:63 order/models.py:557
-#: order/serializers.py:247 stock/templates/stock/item_base.html:187
-#: templates/js/translated/barcode.js:140 templates/js/translated/build.js:1716
-#: templates/js/translated/order.js:591 templates/js/translated/order.js:840
-#: templates/js/translated/order.js:1263 templates/js/translated/stock.js:1659
-#: templates/js/translated/stock.js:2646 templates/js/translated/stock.js:2795
-msgid "Status"
-msgstr ""
-
-#: build/serializers.py:213
-msgid "A list of build outputs must be provided"
-msgstr ""
-
-#: build/serializers.py:249
-msgid "Accept Unallocated"
-msgstr ""
-
-#: build/serializers.py:250
-msgid "Accept that stock items have not been fully allocated to this build order"
-msgstr ""
-
-#: build/serializers.py:260 templates/js/translated/build.js:149
-msgid "Required stock has not been fully allocated"
-msgstr ""
-
-#: build/serializers.py:265
-msgid "Accept Incomplete"
-msgstr ""
-
-#: build/serializers.py:266
-msgid "Accept that the required number of build outputs have not been completed"
-msgstr ""
-
-#: build/serializers.py:276 templates/js/translated/build.js:153
-msgid "Required build quantity has not been completed"
-msgstr ""
-
-#: build/serializers.py:285
-msgid "Build order has incomplete outputs"
-msgstr ""
-
-#: build/serializers.py:313 build/serializers.py:362 part/models.py:2760
-#: part/models.py:2919
-msgid "BOM Item"
-msgstr ""
-
-#: build/serializers.py:323
-msgid "Build output"
-msgstr ""
-
-#: build/serializers.py:332
-msgid "Build output must point to the same build"
-msgstr ""
-
-#: build/serializers.py:379
-msgid "bom_item.part must point to the same part as the build order"
-msgstr ""
-
-#: build/serializers.py:394 stock/serializers.py:585
-msgid "Item must be in stock"
-msgstr ""
-
-#: build/serializers.py:408 order/models.py:280 order/serializers.py:240
+#: build/serializers.py:201 build/serializers.py:590 order/models.py:280
+#: order/serializers.py:240 part/serializers.py:471 part/serializers.py:827
#: stock/models.py:367 stock/models.py:1105 stock/serializers.py:305
msgid "Quantity must be greater than zero"
msgstr ""
-#: build/serializers.py:450 order/serializers.py:747
+#: build/serializers.py:208
+msgid "Integer quantity required for trackable parts"
+msgstr ""
+
+#: build/serializers.py:211
+msgid "Integer quantity required, as the bill of materials contains trackable parts"
+msgstr ""
+
+#: build/serializers.py:225 order/serializers.py:820 stock/forms.py:78
+#: stock/serializers.py:314 templates/js/translated/stock.js:239
+#: templates/js/translated/stock.js:393
+msgid "Serial Numbers"
+msgstr ""
+
+#: build/serializers.py:226
+msgid "Enter serial numbers for build outputs"
+msgstr ""
+
+#: build/serializers.py:239
+msgid "Auto Allocate Serial Numbers"
+msgstr ""
+
+#: build/serializers.py:240
+msgid "Automatically allocate required items with matching serial numbers"
+msgstr ""
+
+#: build/serializers.py:274 stock/api.py:551
+msgid "The following serial numbers already exist"
+msgstr ""
+
+#: build/serializers.py:327 build/serializers.py:392
+msgid "A list of build outputs must be provided"
+msgstr ""
+
+#: build/serializers.py:369 order/serializers.py:226 order/serializers.py:294
+#: stock/forms.py:169 stock/serializers.py:325 stock/serializers.py:788
+#: stock/serializers.py:1029 stock/templates/stock/item_base.html:315
+#: templates/js/translated/barcode.js:384
+#: templates/js/translated/barcode.js:557 templates/js/translated/build.js:699
+#: templates/js/translated/build.js:1309 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:179 templates/js/translated/stock.js:565
+#: templates/js/translated/stock.js:730 templates/js/translated/stock.js:937
+#: templates/js/translated/stock.js:1808 templates/js/translated/stock.js:2693
+msgid "Location"
+msgstr ""
+
+#: build/serializers.py:370
+msgid "Location for completed build outputs"
+msgstr ""
+
+#: build/serializers.py:376 build/templates/build/build_base.html:142
+#: build/templates/build/detail.html:63 order/models.py:557
+#: order/serializers.py:247 stock/templates/stock/item_base.html:189
+#: templates/js/translated/barcode.js:140 templates/js/translated/build.js:1954
+#: templates/js/translated/order.js:591 templates/js/translated/order.js:840
+#: templates/js/translated/order.js:1263 templates/js/translated/stock.js:1783
+#: templates/js/translated/stock.js:2770 templates/js/translated/stock.js:2919
+msgid "Status"
+msgstr ""
+
+#: build/serializers.py:428
+msgid "Accept Unallocated"
+msgstr ""
+
+#: build/serializers.py:429
+msgid "Accept that stock items have not been fully allocated to this build order"
+msgstr ""
+
+#: build/serializers.py:439 templates/js/translated/build.js:150
+msgid "Required stock has not been fully allocated"
+msgstr ""
+
+#: build/serializers.py:444
+msgid "Accept Incomplete"
+msgstr ""
+
+#: build/serializers.py:445
+msgid "Accept that the required number of build outputs have not been completed"
+msgstr ""
+
+#: build/serializers.py:455 templates/js/translated/build.js:154
+msgid "Required build quantity has not been completed"
+msgstr ""
+
+#: build/serializers.py:464
+msgid "Build order has incomplete outputs"
+msgstr ""
+
+#: build/serializers.py:467 build/templates/build/build_base.html:95
+msgid "No build outputs have been created for this build order"
+msgstr ""
+
+#: build/serializers.py:495 build/serializers.py:544 part/models.py:2829
+#: part/models.py:2988
+msgid "BOM Item"
+msgstr ""
+
+#: build/serializers.py:505
+msgid "Build output"
+msgstr ""
+
+#: build/serializers.py:514
+msgid "Build output must point to the same build"
+msgstr ""
+
+#: build/serializers.py:561
+msgid "bom_item.part must point to the same part as the build order"
+msgstr ""
+
+#: build/serializers.py:576 stock/serializers.py:642
+msgid "Item must be in stock"
+msgstr ""
+
+#: build/serializers.py:632 order/serializers.py:747
#, python-brace-format
msgid "Available quantity ({q}) exceeded"
msgstr ""
-#: build/serializers.py:456
+#: build/serializers.py:638
msgid "Build output must be specified for allocation of tracked parts"
msgstr ""
-#: build/serializers.py:463
+#: build/serializers.py:645
msgid "Build output cannot be specified for allocation of untracked parts"
msgstr ""
-#: build/serializers.py:491 order/serializers.py:990
+#: build/serializers.py:673 order/serializers.py:990
msgid "Allocation items must be provided"
msgstr ""
-#: build/tasks.py:92
+#: build/tasks.py:98
msgid "Stock required for build order"
msgstr ""
@@ -1088,7 +1151,7 @@ msgid "Edit Build"
msgstr ""
#: build/templates/build/build_base.html:56
-#: build/templates/build/build_base.html:215 build/views.py:56
+#: build/templates/build/build_base.html:220 build/views.py:53
msgid "Cancel Build"
msgstr ""
@@ -1105,110 +1168,90 @@ msgstr ""
msgid "Build Description"
msgstr ""
-#: build/templates/build/build_base.html:96
+#: build/templates/build/build_base.html:101
#, python-format
msgid "This Build Order is allocated to Sales Order %(link)s"
msgstr ""
-#: build/templates/build/build_base.html:103
+#: build/templates/build/build_base.html:108
#, python-format
msgid "This Build Order is a child of Build Order %(link)s"
msgstr ""
-#: build/templates/build/build_base.html:110
+#: build/templates/build/build_base.html:115
msgid "Build Order is ready to mark as completed"
msgstr ""
-#: build/templates/build/build_base.html:115
+#: build/templates/build/build_base.html:120
msgid "Build Order cannot be completed as outstanding outputs remain"
msgstr ""
-#: build/templates/build/build_base.html:120
+#: build/templates/build/build_base.html:125
msgid "Required build quantity has not yet been completed"
msgstr ""
-#: build/templates/build/build_base.html:125
+#: build/templates/build/build_base.html:130
msgid "Stock has not been fully allocated to this Build Order"
msgstr ""
-#: build/templates/build/build_base.html:146
+#: build/templates/build/build_base.html:151
#: build/templates/build/detail.html:132
#: order/templates/order/order_base.html:156
#: order/templates/order/sales_order_base.html:163
#: report/templates/report/inventree_build_order_base.html:126
-#: templates/js/translated/build.js:1753 templates/js/translated/order.js:854
+#: templates/js/translated/build.js:1991 templates/js/translated/order.js:854
#: templates/js/translated/order.js:1276
msgid "Target Date"
msgstr ""
-#: build/templates/build/build_base.html:151
+#: build/templates/build/build_base.html:156
#, python-format
msgid "This build was due on %(target)s"
msgstr ""
-#: build/templates/build/build_base.html:151
-#: build/templates/build/build_base.html:196
+#: build/templates/build/build_base.html:156
+#: build/templates/build/build_base.html:201
#: order/templates/order/order_base.html:98
#: order/templates/order/sales_order_base.html:93
-#: templates/js/translated/table_filters.js:299
-#: templates/js/translated/table_filters.js:340
-#: templates/js/translated/table_filters.js:361
+#: templates/js/translated/table_filters.js:294
+#: templates/js/translated/table_filters.js:335
+#: templates/js/translated/table_filters.js:356
msgid "Overdue"
msgstr ""
-#: build/templates/build/build_base.html:158
+#: build/templates/build/build_base.html:163
#: build/templates/build/detail.html:68 build/templates/build/detail.html:143
#: order/templates/order/sales_order_base.html:170
-#: templates/js/translated/build.js:1702
-#: templates/js/translated/table_filters.js:370
+#: templates/js/translated/build.js:1940
+#: templates/js/translated/table_filters.js:365
msgid "Completed"
msgstr ""
-#: build/templates/build/build_base.html:171
+#: build/templates/build/build_base.html:176
#: build/templates/build/detail.html:95 order/models.py:947
#: order/models.py:1043 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:307
-#: templates/js/translated/order.js:1218 templates/js/translated/stock.js:2304
+#: stock/templates/stock/item_base.html:309
+#: templates/js/translated/order.js:1218 templates/js/translated/stock.js:2428
msgid "Sales Order"
msgstr ""
-#: build/templates/build/build_base.html:178
+#: build/templates/build/build_base.html:183
#: build/templates/build/detail.html:109
#: report/templates/report/inventree_build_order_base.html:153
msgid "Issued By"
msgstr ""
-#: build/templates/build/build_base.html:223
+#: build/templates/build/build_base.html:228
msgid "Incomplete Outputs"
msgstr ""
-#: build/templates/build/build_base.html:224
+#: build/templates/build/build_base.html:229
msgid "Build Order cannot be completed as incomplete build outputs remain"
msgstr ""
-#: build/templates/build/build_output_create.html:7
-msgid "The Bill of Materials contains trackable parts"
-msgstr ""
-
-#: build/templates/build/build_output_create.html:8
-msgid "Build outputs must be generated individually."
-msgstr ""
-
-#: build/templates/build/build_output_create.html:9
-msgid "Multiple build outputs will be created based on the quantity specified."
-msgstr ""
-
-#: build/templates/build/build_output_create.html:15
-msgid "Trackable parts can have serial numbers specified"
-msgstr ""
-
-#: build/templates/build/build_output_create.html:16
-msgid "Enter serial numbers to generate multiple single build outputs"
-msgstr ""
-
#: build/templates/build/cancel.html:5
msgid "Are you sure you wish to cancel this build?"
msgstr ""
@@ -1225,7 +1268,7 @@ msgstr ""
msgid "Stock can be taken from any available location."
msgstr ""
-#: build/templates/build/detail.html:50 order/models.py:898 stock/forms.py:136
+#: build/templates/build/detail.html:50 order/models.py:898 stock/forms.py:133
#: templates/js/translated/order.js:592 templates/js/translated/order.js:1138
msgid "Destination"
msgstr ""
@@ -1234,13 +1277,13 @@ msgstr ""
msgid "Destination location not specified"
msgstr ""
-#: build/templates/build/detail.html:74 templates/js/translated/build.js:707
+#: build/templates/build/detail.html:74 templates/js/translated/build.js:929
msgid "Allocated Parts"
msgstr ""
#: build/templates/build/detail.html:81
-#: stock/templates/stock/item_base.html:331
-#: templates/js/translated/stock.js:1673 templates/js/translated/stock.js:2802
+#: stock/templates/stock/item_base.html:333
+#: templates/js/translated/stock.js:1797 templates/js/translated/stock.js:2926
#: templates/js/translated/table_filters.js:151
#: templates/js/translated/table_filters.js:238
msgid "Batch"
@@ -1249,7 +1292,7 @@ msgstr ""
#: build/templates/build/detail.html:127
#: order/templates/order/order_base.html:143
#: order/templates/order/sales_order_base.html:157
-#: templates/js/translated/build.js:1724
+#: templates/js/translated/build.js:1962
msgid "Created"
msgstr ""
@@ -1269,7 +1312,7 @@ msgstr ""
msgid "Allocate Stock to Build"
msgstr ""
-#: build/templates/build/detail.html:177 templates/js/translated/build.js:1262
+#: build/templates/build/detail.html:177 templates/js/translated/build.js:1484
msgid "Unallocate stock"
msgstr ""
@@ -1329,52 +1372,60 @@ msgid "Output Actions"
msgstr ""
#: build/templates/build/detail.html:250
-msgid "Complete selected items"
+msgid "Complete selected build outputs"
msgstr ""
#: build/templates/build/detail.html:251
msgid "Complete outputs"
msgstr ""
-#: build/templates/build/detail.html:266
+#: build/templates/build/detail.html:253
+msgid "Delete selected build outputs"
+msgstr ""
+
+#: build/templates/build/detail.html:254
+msgid "Delete outputs"
+msgstr ""
+
+#: build/templates/build/detail.html:270
msgid "Completed Build Outputs"
msgstr ""
-#: build/templates/build/detail.html:278 build/templates/build/sidebar.html:19
+#: build/templates/build/detail.html:282 build/templates/build/sidebar.html:19
#: order/templates/order/po_sidebar.html:9
#: order/templates/order/purchase_order_detail.html:60
#: order/templates/order/sales_order_detail.html:107
-#: order/templates/order/so_sidebar.html:15 part/templates/part/detail.html:213
-#: part/templates/part/part_sidebar.html:52 stock/templates/stock/item.html:112
+#: order/templates/order/so_sidebar.html:15 part/templates/part/detail.html:216
+#: part/templates/part/part_sidebar.html:55 stock/templates/stock/item.html:112
#: stock/templates/stock/stock_sidebar.html:23
msgid "Attachments"
msgstr ""
-#: build/templates/build/detail.html:294
+#: build/templates/build/detail.html:298
msgid "Build Notes"
msgstr ""
-#: build/templates/build/detail.html:298 build/templates/build/detail.html:453
+#: build/templates/build/detail.html:302 build/templates/build/detail.html:478
#: company/templates/company/detail.html:188
#: company/templates/company/detail.html:215
#: order/templates/order/purchase_order_detail.html:80
#: order/templates/order/purchase_order_detail.html:108
#: order/templates/order/sales_order_detail.html:127
#: order/templates/order/sales_order_detail.html:186
-#: part/templates/part/detail.html:141 stock/templates/stock/item.html:132
-#: stock/templates/stock/item.html:235
+#: part/templates/part/detail.html:144 stock/templates/stock/item.html:132
+#: stock/templates/stock/item.html:230
msgid "Edit Notes"
msgstr ""
-#: build/templates/build/detail.html:477
+#: build/templates/build/detail.html:502
msgid "Allocation Complete"
msgstr ""
-#: build/templates/build/detail.html:478
+#: build/templates/build/detail.html:503
msgid "All untracked stock items have been allocated"
msgstr ""
-#: build/templates/build/index.html:18 part/templates/part/detail.html:320
+#: build/templates/build/index.html:18 part/templates/part/detail.html:323
msgid "New Build Order"
msgstr ""
@@ -1406,51 +1457,11 @@ msgstr ""
msgid "Completed Items"
msgstr ""
-#: build/views.py:76
+#: build/views.py:73
msgid "Build was cancelled"
msgstr ""
-#: build/views.py:88
-msgid "Create Build Output"
-msgstr ""
-
-#: build/views.py:106
-msgid "Maximum output quantity is "
-msgstr ""
-
-#: build/views.py:122 stock/serializers.py:363 stock/views.py:1257
-msgid "Serial numbers already exist"
-msgstr ""
-
-#: build/views.py:131
-msgid "Serial numbers required for trackable build output"
-msgstr ""
-
-#: build/views.py:197
-msgid "Delete Build Output"
-msgstr ""
-
-#: build/views.py:218
-msgid "Confirm unallocation of build stock"
-msgstr ""
-
-#: build/views.py:219 stock/views.py:352
-msgid "Check the confirmation box"
-msgstr ""
-
-#: build/views.py:231
-msgid "Build output does not match build"
-msgstr ""
-
-#: build/views.py:233
-msgid "Build output must be specified"
-msgstr ""
-
-#: build/views.py:245
-msgid "Build output deleted"
-msgstr ""
-
-#: build/views.py:286
+#: build/views.py:114
msgid "Delete Build Order"
msgstr ""
@@ -1639,9 +1650,9 @@ msgstr ""
msgid "Copy category parameter templates when creating a part"
msgstr ""
-#: common/models.py:705 part/models.py:2489 report/models.py:187
+#: common/models.py:705 part/models.py:2525 report/models.py:187
#: templates/js/translated/table_filters.js:38
-#: templates/js/translated/table_filters.js:422
+#: templates/js/translated/table_filters.js:417
msgid "Template"
msgstr ""
@@ -1649,9 +1660,9 @@ msgstr ""
msgid "Parts are templates by default"
msgstr ""
-#: common/models.py:712 part/models.py:921 templates/js/translated/bom.js:1082
+#: common/models.py:712 part/models.py:951 templates/js/translated/bom.js:1300
#: templates/js/translated/table_filters.js:168
-#: templates/js/translated/table_filters.js:434
+#: templates/js/translated/table_filters.js:429
msgid "Assembly"
msgstr ""
@@ -1659,8 +1670,8 @@ msgstr ""
msgid "Parts can be assembled from other components by default"
msgstr ""
-#: common/models.py:719 part/models.py:927
-#: templates/js/translated/table_filters.js:438
+#: common/models.py:719 part/models.py:957
+#: templates/js/translated/table_filters.js:433
msgid "Component"
msgstr ""
@@ -1668,7 +1679,7 @@ msgstr ""
msgid "Parts can be used as sub-components by default"
msgstr ""
-#: common/models.py:726 part/models.py:938
+#: common/models.py:726 part/models.py:968
msgid "Purchaseable"
msgstr ""
@@ -1676,8 +1687,8 @@ msgstr ""
msgid "Parts are purchaseable by default"
msgstr ""
-#: common/models.py:733 part/models.py:943
-#: templates/js/translated/table_filters.js:446
+#: common/models.py:733 part/models.py:973
+#: templates/js/translated/table_filters.js:441
msgid "Salable"
msgstr ""
@@ -1685,10 +1696,10 @@ msgstr ""
msgid "Parts are salable by default"
msgstr ""
-#: common/models.py:740 part/models.py:933
+#: common/models.py:740 part/models.py:963
#: templates/js/translated/table_filters.js:46
#: templates/js/translated/table_filters.js:100
-#: templates/js/translated/table_filters.js:450
+#: templates/js/translated/table_filters.js:445
msgid "Trackable"
msgstr ""
@@ -1696,7 +1707,7 @@ msgstr ""
msgid "Parts are trackable by default"
msgstr ""
-#: common/models.py:747 part/models.py:953
+#: common/models.py:747 part/models.py:983
#: part/templates/part/part_base.html:147
#: templates/js/translated/table_filters.js:42
msgid "Virtual"
@@ -1730,589 +1741,595 @@ msgstr ""
msgid "Include pricing information in BOM tables"
msgstr ""
-#: common/models.py:780
+#: common/models.py:785
+msgid "Show Price History"
+msgstr ""
+
+#: common/models.py:786
+msgid "Display historical pricing for Part"
+msgstr ""
+
+#: common/models.py:792
msgid "Show related parts"
msgstr ""
-#: common/models.py:781
+#: common/models.py:793
msgid "Display related parts for a part"
msgstr ""
-#: common/models.py:787
+#: common/models.py:799
msgid "Create initial stock"
msgstr ""
-#: common/models.py:788
+#: common/models.py:800
msgid "Create initial stock on part creation"
msgstr ""
-#: common/models.py:794
+#: common/models.py:806
msgid "Internal Prices"
msgstr ""
-#: common/models.py:795
+#: common/models.py:807
msgid "Enable internal prices for parts"
msgstr ""
-#: common/models.py:801
+#: common/models.py:813
msgid "Internal Price as BOM-Price"
msgstr ""
-#: common/models.py:802
+#: common/models.py:814
msgid "Use the internal price (if set) in BOM-price calculations"
msgstr ""
-#: common/models.py:808
+#: common/models.py:820
msgid "Part Name Display Format"
msgstr ""
-#: common/models.py:809
+#: common/models.py:821
msgid "Format to display the part name"
msgstr ""
-#: common/models.py:816
+#: common/models.py:828
msgid "Enable Reports"
msgstr ""
-#: common/models.py:817
+#: common/models.py:829
msgid "Enable generation of reports"
msgstr ""
-#: common/models.py:823 templates/stats.html:25
+#: common/models.py:835 templates/stats.html:25
msgid "Debug Mode"
msgstr ""
-#: common/models.py:824
+#: common/models.py:836
msgid "Generate reports in debug mode (HTML output)"
msgstr ""
-#: common/models.py:830
+#: common/models.py:842
msgid "Page Size"
msgstr ""
-#: common/models.py:831
+#: common/models.py:843
msgid "Default page size for PDF reports"
msgstr ""
-#: common/models.py:841
+#: common/models.py:853
msgid "Test Reports"
msgstr ""
-#: common/models.py:842
+#: common/models.py:854
msgid "Enable generation of test reports"
msgstr ""
-#: common/models.py:848
+#: common/models.py:860
msgid "Stock Expiry"
msgstr ""
-#: common/models.py:849
+#: common/models.py:861
msgid "Enable stock expiry functionality"
msgstr ""
-#: common/models.py:855
+#: common/models.py:867
msgid "Sell Expired Stock"
msgstr ""
-#: common/models.py:856
+#: common/models.py:868
msgid "Allow sale of expired stock"
msgstr ""
-#: common/models.py:862
+#: common/models.py:874
msgid "Stock Stale Time"
msgstr ""
-#: common/models.py:863
+#: common/models.py:875
msgid "Number of days stock items are considered stale before expiring"
msgstr ""
-#: common/models.py:865
+#: common/models.py:877
msgid "days"
msgstr ""
-#: common/models.py:870
+#: common/models.py:882
msgid "Build Expired Stock"
msgstr ""
-#: common/models.py:871
+#: common/models.py:883
msgid "Allow building with expired stock"
msgstr ""
-#: common/models.py:877
+#: common/models.py:889
msgid "Stock Ownership Control"
msgstr ""
-#: common/models.py:878
+#: common/models.py:890
msgid "Enable ownership control over stock locations and items"
msgstr ""
-#: common/models.py:884
+#: common/models.py:896
msgid "Build Order Reference Prefix"
msgstr ""
-#: common/models.py:885
+#: common/models.py:897
msgid "Prefix value for build order reference"
msgstr ""
-#: common/models.py:890
+#: common/models.py:902
msgid "Build Order Reference Regex"
msgstr ""
-#: common/models.py:891
+#: common/models.py:903
msgid "Regular expression pattern for matching build order reference"
msgstr ""
-#: common/models.py:895
+#: common/models.py:907
msgid "Sales Order Reference Prefix"
msgstr ""
-#: common/models.py:896
+#: common/models.py:908
msgid "Prefix value for sales order reference"
msgstr ""
-#: common/models.py:901
+#: common/models.py:913
msgid "Purchase Order Reference Prefix"
msgstr ""
-#: common/models.py:902
+#: common/models.py:914
msgid "Prefix value for purchase order reference"
msgstr ""
-#: common/models.py:908
+#: common/models.py:920
msgid "Enable password forgot"
msgstr ""
-#: common/models.py:909
+#: common/models.py:921
msgid "Enable password forgot function on the login pages"
msgstr ""
-#: common/models.py:914
+#: common/models.py:926
msgid "Enable registration"
msgstr ""
-#: common/models.py:915
+#: common/models.py:927
msgid "Enable self-registration for users on the login pages"
msgstr ""
-#: common/models.py:920
+#: common/models.py:932
msgid "Enable SSO"
msgstr ""
-#: common/models.py:921
+#: common/models.py:933
msgid "Enable SSO on the login pages"
msgstr ""
-#: common/models.py:926
+#: common/models.py:938
msgid "Email required"
msgstr ""
-#: common/models.py:927
+#: common/models.py:939
msgid "Require user to supply mail on signup"
msgstr ""
-#: common/models.py:932
+#: common/models.py:944
msgid "Auto-fill SSO users"
msgstr ""
-#: common/models.py:933
+#: common/models.py:945
msgid "Automatically fill out user-details from SSO account-data"
msgstr ""
-#: common/models.py:938
+#: common/models.py:950
msgid "Mail twice"
msgstr ""
-#: common/models.py:939
+#: common/models.py:951
msgid "On signup ask users twice for their mail"
msgstr ""
-#: common/models.py:944
+#: common/models.py:956
msgid "Password twice"
msgstr ""
-#: common/models.py:945
+#: common/models.py:957
msgid "On signup ask users twice for their password"
msgstr ""
-#: common/models.py:950
+#: common/models.py:962
msgid "Group on signup"
msgstr ""
-#: common/models.py:951
+#: common/models.py:963
msgid "Group to which new users are assigned on registration"
msgstr ""
-#: common/models.py:956
+#: common/models.py:968
msgid "Enforce MFA"
msgstr ""
-#: common/models.py:957
+#: common/models.py:969
msgid "Users must use multifactor security."
msgstr ""
-#: common/models.py:964
+#: common/models.py:976
msgid "Enable URL integration"
msgstr ""
-#: common/models.py:965
+#: common/models.py:977
msgid "Enable plugins to add URL routes"
msgstr ""
-#: common/models.py:971
+#: common/models.py:983
msgid "Enable navigation integration"
msgstr ""
-#: common/models.py:972
+#: common/models.py:984
msgid "Enable plugins to integrate into navigation"
msgstr ""
-#: common/models.py:978
+#: common/models.py:990
msgid "Enable app integration"
msgstr ""
-#: common/models.py:979
+#: common/models.py:991
msgid "Enable plugins to add apps"
msgstr ""
-#: common/models.py:985
+#: common/models.py:997
msgid "Enable schedule integration"
msgstr ""
-#: common/models.py:986
+#: common/models.py:998
msgid "Enable plugins to run scheduled tasks"
msgstr ""
-#: common/models.py:992
+#: common/models.py:1004
msgid "Enable event integration"
msgstr ""
-#: common/models.py:993
+#: common/models.py:1005
msgid "Enable plugins to respond to internal events"
msgstr ""
-#: common/models.py:1008 common/models.py:1216
+#: common/models.py:1020 common/models.py:1228
msgid "Settings key (must be unique - case insensitive"
msgstr ""
-#: common/models.py:1039
+#: common/models.py:1051
msgid "Show subscribed parts"
msgstr ""
-#: common/models.py:1040
+#: common/models.py:1052
msgid "Show subscribed parts on the homepage"
msgstr ""
-#: common/models.py:1045
+#: common/models.py:1057
msgid "Show subscribed categories"
msgstr ""
-#: common/models.py:1046
+#: common/models.py:1058
msgid "Show subscribed part categories on the homepage"
msgstr ""
-#: common/models.py:1051
+#: common/models.py:1063
msgid "Show latest parts"
msgstr ""
-#: common/models.py:1052
+#: common/models.py:1064
msgid "Show latest parts on the homepage"
msgstr ""
-#: common/models.py:1057
+#: common/models.py:1069
msgid "Recent Part Count"
msgstr ""
-#: common/models.py:1058
+#: common/models.py:1070
msgid "Number of recent parts to display on index page"
msgstr ""
-#: common/models.py:1064
+#: common/models.py:1076
msgid "Show unvalidated BOMs"
msgstr ""
-#: common/models.py:1065
+#: common/models.py:1077
msgid "Show BOMs that await validation on the homepage"
msgstr ""
-#: common/models.py:1070
+#: common/models.py:1082
msgid "Show recent stock changes"
msgstr ""
-#: common/models.py:1071
+#: common/models.py:1083
msgid "Show recently changed stock items on the homepage"
msgstr ""
-#: common/models.py:1076
+#: common/models.py:1088
msgid "Recent Stock Count"
msgstr ""
-#: common/models.py:1077
+#: common/models.py:1089
msgid "Number of recent stock items to display on index page"
msgstr ""
-#: common/models.py:1082
+#: common/models.py:1094
msgid "Show low stock"
msgstr ""
-#: common/models.py:1083
+#: common/models.py:1095
msgid "Show low stock items on the homepage"
msgstr ""
-#: common/models.py:1088
+#: common/models.py:1100
msgid "Show depleted stock"
msgstr ""
-#: common/models.py:1089
+#: common/models.py:1101
msgid "Show depleted stock items on the homepage"
msgstr ""
-#: common/models.py:1094
+#: common/models.py:1106
msgid "Show needed stock"
msgstr ""
-#: common/models.py:1095
+#: common/models.py:1107
msgid "Show stock items needed for builds on the homepage"
msgstr ""
-#: common/models.py:1100
+#: common/models.py:1112
msgid "Show expired stock"
msgstr ""
-#: common/models.py:1101
+#: common/models.py:1113
msgid "Show expired stock items on the homepage"
msgstr ""
-#: common/models.py:1106
+#: common/models.py:1118
msgid "Show stale stock"
msgstr ""
-#: common/models.py:1107
+#: common/models.py:1119
msgid "Show stale stock items on the homepage"
msgstr ""
-#: common/models.py:1112
+#: common/models.py:1124
msgid "Show pending builds"
msgstr ""
-#: common/models.py:1113
+#: common/models.py:1125
msgid "Show pending builds on the homepage"
msgstr ""
-#: common/models.py:1118
+#: common/models.py:1130
msgid "Show overdue builds"
msgstr ""
-#: common/models.py:1119
+#: common/models.py:1131
msgid "Show overdue builds on the homepage"
msgstr ""
-#: common/models.py:1124
+#: common/models.py:1136
msgid "Show outstanding POs"
msgstr ""
-#: common/models.py:1125
+#: common/models.py:1137
msgid "Show outstanding POs on the homepage"
msgstr ""
-#: common/models.py:1130
+#: common/models.py:1142
msgid "Show overdue POs"
msgstr ""
-#: common/models.py:1131
+#: common/models.py:1143
msgid "Show overdue POs on the homepage"
msgstr ""
-#: common/models.py:1136
+#: common/models.py:1148
msgid "Show outstanding SOs"
msgstr ""
-#: common/models.py:1137
+#: common/models.py:1149
msgid "Show outstanding SOs on the homepage"
msgstr ""
-#: common/models.py:1142
+#: common/models.py:1154
msgid "Show overdue SOs"
msgstr ""
-#: common/models.py:1143
+#: common/models.py:1155
msgid "Show overdue SOs on the homepage"
msgstr ""
-#: common/models.py:1149
+#: common/models.py:1161
msgid "Inline label display"
msgstr ""
-#: common/models.py:1150
+#: common/models.py:1162
msgid "Display PDF labels in the browser, instead of downloading as a file"
msgstr ""
-#: common/models.py:1156
+#: common/models.py:1168
msgid "Inline report display"
msgstr ""
-#: common/models.py:1157
+#: common/models.py:1169
msgid "Display PDF reports in the browser, instead of downloading as a file"
msgstr ""
-#: common/models.py:1163
+#: common/models.py:1175
msgid "Search Preview Results"
msgstr ""
-#: common/models.py:1164
+#: common/models.py:1176
msgid "Number of results to show in search preview window"
msgstr ""
-#: common/models.py:1170
+#: common/models.py:1182
msgid "Search Show Stock"
msgstr ""
-#: common/models.py:1171
+#: common/models.py:1183
msgid "Display stock levels in search preview window"
msgstr ""
-#: common/models.py:1177
+#: common/models.py:1189
msgid "Hide Inactive Parts"
msgstr ""
-#: common/models.py:1178
+#: common/models.py:1190
msgid "Hide inactive parts in search preview window"
msgstr ""
-#: common/models.py:1184
+#: common/models.py:1196
msgid "Show Quantity in Forms"
msgstr ""
-#: common/models.py:1185
+#: common/models.py:1197
msgid "Display available part quantity in some forms"
msgstr ""
-#: common/models.py:1191
+#: common/models.py:1203
msgid "Escape Key Closes Forms"
msgstr ""
-#: common/models.py:1192
+#: common/models.py:1204
msgid "Use the escape key to close modal forms"
msgstr ""
-#: common/models.py:1198
+#: common/models.py:1210
msgid "Fixed Navbar"
msgstr ""
-#: common/models.py:1199
+#: common/models.py:1211
msgid "InvenTree navbar position is fixed to the top of the screen"
msgstr ""
-#: common/models.py:1264 company/forms.py:43
+#: common/models.py:1276 company/forms.py:43
msgid "Price break quantity"
msgstr ""
-#: common/models.py:1271 company/serializers.py:264
+#: common/models.py:1283 company/serializers.py:264
#: company/templates/company/supplier_part.html:256
#: templates/js/translated/part.js:915 templates/js/translated/part.js:1867
msgid "Price"
msgstr ""
-#: common/models.py:1272
+#: common/models.py:1284
msgid "Unit price at specified quantity"
msgstr ""
-#: common/models.py:1429 common/models.py:1568
+#: common/models.py:1441 common/models.py:1580
msgid "Endpoint"
msgstr ""
-#: common/models.py:1430
+#: common/models.py:1442
msgid "Endpoint at which this webhook is received"
msgstr ""
-#: common/models.py:1439
+#: common/models.py:1451
msgid "Name for this webhook"
msgstr ""
-#: common/models.py:1444 part/models.py:948 plugin/models.py:46
+#: common/models.py:1456 part/models.py:978 plugin/models.py:46
#: templates/js/translated/table_filters.js:34
#: templates/js/translated/table_filters.js:96
-#: templates/js/translated/table_filters.js:295
-#: templates/js/translated/table_filters.js:417
+#: templates/js/translated/table_filters.js:290
+#: templates/js/translated/table_filters.js:412
msgid "Active"
msgstr ""
-#: common/models.py:1445
+#: common/models.py:1457
msgid "Is this webhook active"
msgstr ""
-#: common/models.py:1459
+#: common/models.py:1471
msgid "Token"
msgstr ""
-#: common/models.py:1460
+#: common/models.py:1472
msgid "Token for access"
msgstr ""
-#: common/models.py:1467
+#: common/models.py:1479
msgid "Secret"
msgstr ""
-#: common/models.py:1468
+#: common/models.py:1480
msgid "Shared secret for HMAC"
msgstr ""
-#: common/models.py:1535
+#: common/models.py:1547
msgid "Message ID"
msgstr ""
-#: common/models.py:1536
+#: common/models.py:1548
msgid "Unique identifier for this message"
msgstr ""
-#: common/models.py:1544
+#: common/models.py:1556
msgid "Host"
msgstr ""
-#: common/models.py:1545
+#: common/models.py:1557
msgid "Host from which this message was received"
msgstr ""
-#: common/models.py:1552
+#: common/models.py:1564
msgid "Header"
msgstr ""
-#: common/models.py:1553
+#: common/models.py:1565
msgid "Header of this message"
msgstr ""
-#: common/models.py:1559
+#: common/models.py:1571
msgid "Body"
msgstr ""
-#: common/models.py:1560
+#: common/models.py:1572
msgid "Body of this message"
msgstr ""
-#: common/models.py:1569
+#: common/models.py:1581
msgid "Endpoint on which this message was received"
msgstr ""
-#: common/models.py:1574
+#: common/models.py:1586
msgid "Worked on"
msgstr ""
-#: common/models.py:1575
+#: common/models.py:1587
msgid "Was the work on this message finished?"
msgstr ""
#: common/views.py:93 order/templates/order/order_wizard/po_upload.html:49
#: order/templates/order/purchase_order_detail.html:24 order/views.py:243
-#: part/templates/part/bom_upload/upload_file.html:52
-#: part/templates/part/import_wizard/part_upload.html:47 part/views.py:213
-#: part/views.py:773
+#: part/templates/part/import_wizard/part_upload.html:47 part/views.py:210
+#: templates/patterns/wizard/upload.html:35
msgid "Upload File"
msgstr ""
-#: common/views.py:94 order/templates/order/order_wizard/match_fields.html:52
-#: order/views.py:244 part/templates/part/bom_upload/match_fields.html:52
+#: common/views.py:94 order/views.py:244
#: part/templates/part/import_wizard/ajax_match_fields.html:45
-#: part/templates/part/import_wizard/match_fields.html:52 part/views.py:214
-#: part/views.py:774
+#: part/templates/part/import_wizard/match_fields.html:52 part/views.py:211
+#: templates/patterns/wizard/match_fields.html:51
msgid "Match Fields"
msgstr ""
@@ -2328,15 +2345,13 @@ msgstr ""
msgid "Parts imported"
msgstr ""
-#: common/views.py:517 order/templates/order/order_wizard/match_fields.html:27
-#: order/templates/order/order_wizard/match_parts.html:19
+#: common/views.py:517 order/templates/order/order_wizard/match_parts.html:19
#: order/templates/order/order_wizard/po_upload.html:47
-#: part/templates/part/bom_upload/match_fields.html:27
-#: part/templates/part/bom_upload/match_parts.html:19
-#: part/templates/part/bom_upload/upload_file.html:50
#: part/templates/part/import_wizard/match_fields.html:27
#: part/templates/part/import_wizard/match_references.html:19
#: part/templates/part/import_wizard/part_upload.html:45
+#: templates/patterns/wizard/match_fields.html:26
+#: templates/patterns/wizard/upload.html:33
msgid "Previous Step"
msgstr ""
@@ -2404,7 +2419,7 @@ msgstr ""
msgid "Link to external company information"
msgstr ""
-#: company/models.py:139 part/models.py:840
+#: company/models.py:139 part/models.py:870
msgid "Image"
msgstr ""
@@ -2442,7 +2457,7 @@ msgid "Default currency used for this company"
msgstr ""
#: company/models.py:320 company/models.py:535 stock/models.py:471
-#: stock/templates/stock/item_base.html:142 templates/js/translated/bom.js:328
+#: stock/templates/stock/item_base.html:144 templates/js/translated/bom.js:541
msgid "Base Part"
msgstr ""
@@ -2453,11 +2468,11 @@ 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:380
+#: stock/templates/stock/item_base.html:382
#: templates/js/translated/company.js:333
#: templates/js/translated/company.js:517
#: templates/js/translated/company.js:800 templates/js/translated/part.js:234
-#: templates/js/translated/table_filters.js:389
+#: templates/js/translated/table_filters.js:384
msgid "Manufacturer"
msgstr ""
@@ -2488,7 +2503,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:390
+#: stock/templates/stock/item_base.html:392
msgid "Manufacturer Part"
msgstr ""
@@ -2499,7 +2514,7 @@ msgstr ""
#: company/models.py:422
#: report/templates/report/inventree_test_report_base.html:95
#: stock/models.py:1988 templates/js/translated/company.js:647
-#: templates/js/translated/part.js:715 templates/js/translated/stock.js:1304
+#: templates/js/translated/part.js:715 templates/js/translated/stock.js:1332
msgid "Value"
msgstr ""
@@ -2507,9 +2522,9 @@ msgstr ""
msgid "Parameter value"
msgstr ""
-#: company/models.py:429 part/models.py:915 part/models.py:2457
+#: company/models.py:429 part/models.py:945 part/models.py:2493
#: part/templates/part/part_base.html:288
-#: templates/InvenTree/settings/settings.html:287
+#: templates/InvenTree/settings/settings.html:324
#: templates/js/translated/company.js:653 templates/js/translated/part.js:721
msgid "Units"
msgstr ""
@@ -2526,11 +2541,11 @@ msgstr ""
#: company/templates/company/supplier_part.html:87 order/models.py:227
#: order/templates/order/order_base.html:112
#: order/templates/order/order_wizard/select_pos.html:30 part/bom.py:237
-#: part/bom.py:265 stock/templates/stock/item_base.html:397
+#: part/bom.py:265 stock/templates/stock/item_base.html:399
#: templates/js/translated/company.js:337
#: templates/js/translated/company.js:774 templates/js/translated/order.js:823
#: templates/js/translated/part.js:215 templates/js/translated/part.js:863
-#: templates/js/translated/table_filters.js:393
+#: templates/js/translated/table_filters.js:388
msgid "Supplier"
msgstr ""
@@ -2561,22 +2576,23 @@ msgid "Supplier part description"
msgstr ""
#: company/models.py:576 company/templates/company/supplier_part.html:119
-#: part/models.py:2648 report/templates/report/inventree_po_report.html:93
-#: report/templates/report/inventree_so_report.html:93
+#: part/models.py:2717 part/templates/part/upload_bom.html:59
+#: report/templates/report/inventree_po_report.html:93
+#: report/templates/report/inventree_so_report.html:93 stock/serializers.py:409
msgid "Note"
msgstr ""
-#: company/models.py:580 part/models.py:1781
+#: company/models.py:580 part/models.py:1817
msgid "base cost"
msgstr ""
-#: company/models.py:580 part/models.py:1781
+#: company/models.py:580 part/models.py:1817
msgid "Minimum charge (e.g. stocking fee)"
msgstr ""
#: company/models.py:582 company/templates/company/supplier_part.html:112
-#: stock/models.py:495 stock/templates/stock/item_base.html:338
-#: templates/js/translated/company.js:850 templates/js/translated/stock.js:1799
+#: stock/models.py:495 stock/templates/stock/item_base.html:340
+#: templates/js/translated/company.js:850 templates/js/translated/stock.js:1923
msgid "Packaging"
msgstr ""
@@ -2584,7 +2600,7 @@ msgstr ""
msgid "Part packaging"
msgstr ""
-#: company/models.py:584 part/models.py:1783
+#: company/models.py:584 part/models.py:1819
msgid "multiple"
msgstr ""
@@ -2645,11 +2661,11 @@ msgstr ""
#: company/templates/company/company_base.html:83 order/models.py:552
#: order/templates/order/sales_order_base.html:115 stock/models.py:514
-#: stock/models.py:515 stock/serializers.py:626
-#: stock/templates/stock/item_base.html:290
+#: stock/models.py:515 stock/serializers.py:683
+#: stock/templates/stock/item_base.html:292
#: templates/js/translated/company.js:329 templates/js/translated/order.js:1240
-#: templates/js/translated/stock.js:2610
-#: templates/js/translated/table_filters.js:397
+#: templates/js/translated/stock.js:2734
+#: templates/js/translated/table_filters.js:392
msgid "Customer"
msgstr ""
@@ -2679,7 +2695,7 @@ msgstr ""
#: company/templates/company/detail.html:20
#: company/templates/company/manufacturer_part.html:118
-#: part/templates/part/detail.html:353
+#: part/templates/part/detail.html:356
msgid "New Supplier Part"
msgstr ""
@@ -2687,8 +2703,8 @@ msgstr ""
#: company/templates/company/detail.html:79
#: company/templates/company/manufacturer_part.html:127
#: company/templates/company/manufacturer_part.html:156
-#: part/templates/part/category.html:171 part/templates/part/detail.html:362
-#: part/templates/part/detail.html:391
+#: part/templates/part/category.html:171 part/templates/part/detail.html:365
+#: part/templates/part/detail.html:394
msgid "Options"
msgstr ""
@@ -2716,7 +2732,7 @@ msgstr ""
msgid "Create new manufacturer part"
msgstr ""
-#: company/templates/company/detail.html:67 part/templates/part/detail.html:381
+#: company/templates/company/detail.html:67 part/templates/part/detail.html:384
msgid "New Manufacturer Part"
msgstr ""
@@ -2730,7 +2746,7 @@ msgstr ""
#: order/templates/order/order_base.html:13
#: order/templates/order/purchase_orders.html:8
#: order/templates/order/purchase_orders.html:12
-#: part/templates/part/detail.html:85 part/templates/part/part_sidebar.html:37
+#: part/templates/part/detail.html:85 part/templates/part/part_sidebar.html:40
#: templates/InvenTree/index.html:252 templates/InvenTree/search.html:197
#: templates/InvenTree/settings/sidebar.html:45 templates/navbar.html:47
#: users/models.py:45
@@ -2752,7 +2768,7 @@ msgstr ""
#: order/templates/order/sales_order_base.html:13
#: order/templates/order/sales_orders.html:8
#: order/templates/order/sales_orders.html:15
-#: part/templates/part/detail.html:108 part/templates/part/part_sidebar.html:41
+#: part/templates/part/detail.html:108 part/templates/part/part_sidebar.html:44
#: templates/InvenTree/index.html:283 templates/InvenTree/search.html:217
#: templates/InvenTree/settings/sidebar.html:47 templates/navbar.html:58
#: users/models.py:46
@@ -2770,7 +2786,7 @@ msgid "New Sales Order"
msgstr ""
#: company/templates/company/detail.html:168
-#: templates/js/translated/build.js:1059
+#: templates/js/translated/build.js:1281
msgid "Assigned Stock"
msgstr ""
@@ -2780,13 +2796,13 @@ msgstr ""
#: company/templates/company/detail.html:384
#: company/templates/company/manufacturer_part.html:215
-#: part/templates/part/detail.html:435
+#: part/templates/part/detail.html:438
msgid "Delete Supplier Parts?"
msgstr ""
#: company/templates/company/detail.html:385
#: company/templates/company/manufacturer_part.html:216
-#: part/templates/part/detail.html:436
+#: part/templates/part/detail.html:439
msgid "All selected supplier parts will be deleted"
msgstr ""
@@ -2824,36 +2840,36 @@ 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:35 part/templates/part/prices.html:163
+#: part/templates/part/part_sidebar.html:38 part/templates/part/prices.html:163
#: templates/InvenTree/search.html:188 templates/navbar.html:45
msgid "Suppliers"
msgstr ""
#: company/templates/company/manufacturer_part.html:129
-#: part/templates/part/detail.html:364
+#: part/templates/part/detail.html:367
msgid "Delete supplier parts"
msgstr ""
#: company/templates/company/manufacturer_part.html:129
#: company/templates/company/manufacturer_part.html:158
#: company/templates/company/manufacturer_part.html:254
-#: part/templates/part/detail.html:364 part/templates/part/detail.html:393
+#: part/templates/part/detail.html:367 part/templates/part/detail.html:396
#: templates/js/translated/company.js:426 templates/js/translated/helpers.js:31
-#: users/models.py:212
+#: users/models.py:217
msgid "Delete"
msgstr ""
#: company/templates/company/manufacturer_part.html:143
#: company/templates/company/manufacturer_part_sidebar.html:5
#: part/templates/part/category_sidebar.html:17
-#: part/templates/part/detail.html:187 part/templates/part/part_sidebar.html:8
+#: part/templates/part/detail.html:190 part/templates/part/part_sidebar.html:9
msgid "Parameters"
msgstr ""
#: company/templates/company/manufacturer_part.html:147
-#: part/templates/part/detail.html:192
+#: part/templates/part/detail.html:195
#: templates/InvenTree/settings/category.html:12
-#: templates/InvenTree/settings/part.html:65
+#: templates/InvenTree/settings/part.html:66
msgid "New Parameter"
msgstr ""
@@ -2862,7 +2878,7 @@ msgid "Delete parameters"
msgstr ""
#: company/templates/company/manufacturer_part.html:191
-#: part/templates/part/detail.html:892
+#: part/templates/part/detail.html:895
msgid "Add Parameter"
msgstr ""
@@ -2892,8 +2908,8 @@ msgstr ""
#: company/templates/company/supplier_part.html:7
#: company/templates/company/supplier_part.html:24 stock/models.py:479
-#: stock/templates/stock/item_base.html:402
-#: templates/js/translated/company.js:790 templates/js/translated/stock.js:1756
+#: stock/templates/stock/item_base.html:404
+#: templates/js/translated/company.js:790 templates/js/translated/stock.js:1880
msgid "Supplier Part"
msgstr ""
@@ -2919,7 +2935,7 @@ msgstr ""
#: company/templates/company/supplier_part.html:142
#: part/templates/part/detail.html:25 stock/templates/stock/location.html:167
-#: templates/js/translated/stock.js:368
+#: templates/js/translated/stock.js:369
msgid "New Stock Item"
msgstr ""
@@ -2940,7 +2956,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:1628
+#: part/templates/part/prices.html:271 part/views.py:1319
msgid "Add Price Break"
msgstr ""
@@ -2948,11 +2964,11 @@ msgstr ""
msgid "No price break information found"
msgstr ""
-#: company/templates/company/supplier_part.html:224 part/views.py:1690
+#: company/templates/company/supplier_part.html:224 part/views.py:1381
msgid "Delete Price Break"
msgstr ""
-#: company/templates/company/supplier_part.html:238 part/views.py:1676
+#: company/templates/company/supplier_part.html:238 part/views.py:1367
msgid "Edit Price Break"
msgstr ""
@@ -2965,15 +2981,15 @@ msgid "Delete price break"
msgstr ""
#: company/templates/company/supplier_part_navbar.html:15
-#: part/templates/part/part_sidebar.html:14
+#: part/templates/part/part_sidebar.html:15
#: 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:150
#: templates/InvenTree/settings/sidebar.html:41
-#: templates/js/translated/bom.js:340 templates/js/translated/part.js:495
+#: templates/js/translated/bom.js:553 templates/js/translated/part.js:495
#: templates/js/translated/part.js:630 templates/js/translated/part.js:1125
-#: templates/js/translated/part.js:1286 templates/js/translated/stock.js:935
-#: templates/js/translated/stock.js:1588 templates/navbar.html:28
+#: templates/js/translated/part.js:1286 templates/js/translated/stock.js:936
+#: templates/js/translated/stock.js:1712 templates/navbar.html:28
msgid "Stock"
msgstr ""
@@ -2987,7 +3003,7 @@ msgid "Supplier Part Pricing"
msgstr ""
#: company/templates/company/supplier_part_navbar.html:29
-#: part/templates/part/part_sidebar.html:28
+#: part/templates/part/part_sidebar.html:30
msgid "Pricing"
msgstr ""
@@ -2996,7 +3012,7 @@ msgstr ""
#: stock/templates/stock/location.html:151
#: stock/templates/stock/location.html:163
#: stock/templates/stock/location_sidebar.html:7
-#: templates/InvenTree/search.html:152 templates/js/translated/stock.js:2509
+#: templates/InvenTree/search.html:152 templates/js/translated/stock.js:2633
#: templates/stats.html:105 templates/stats.html:114 users/models.py:43
msgid "Stock Items"
msgstr ""
@@ -3026,20 +3042,20 @@ msgstr ""
msgid "New Company"
msgstr ""
-#: company/views.py:129 part/views.py:593
+#: company/views.py:129 part/views.py:591
msgid "Download Image"
msgstr ""
-#: company/views.py:158 part/views.py:625
+#: company/views.py:158 part/views.py:623
msgid "Image size exceeds maximum allowable size for download"
msgstr ""
-#: company/views.py:165 part/views.py:632
+#: company/views.py:165 part/views.py:630
#, python-brace-format
msgid "Invalid response: {code}"
msgstr ""
-#: company/views.py:174 part/views.py:641
+#: company/views.py:174 part/views.py:639
msgid "Supplied URL is not a valid image file"
msgstr ""
@@ -3256,16 +3272,16 @@ msgid "Supplier part must match supplier"
msgstr ""
#: order/models.py:855 order/models.py:946 order/models.py:1042
-#: templates/js/translated/order.js:1820 templates/js/translated/stock.js:2271
+#: templates/js/translated/order.js:1820 templates/js/translated/stock.js:2395
msgid "Order"
msgstr ""
#: order/models.py:856 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:352
+#: stock/templates/stock/item_base.html:354
#: templates/js/translated/order.js:801 templates/js/translated/part.js:838
-#: templates/js/translated/stock.js:1733 templates/js/translated/stock.js:2591
+#: templates/js/translated/stock.js:1857 templates/js/translated/stock.js:2715
msgid "Purchase Order"
msgstr ""
@@ -3276,7 +3292,7 @@ msgstr ""
#: order/models.py:884 order/templates/order/order_base.html:163
#: templates/js/translated/order.js:589 templates/js/translated/order.js:1118
#: templates/js/translated/part.js:910 templates/js/translated/part.js:937
-#: templates/js/translated/table_filters.js:317
+#: templates/js/translated/table_filters.js:312
msgid "Received"
msgstr ""
@@ -3285,8 +3301,8 @@ msgid "Number of items received"
msgstr ""
#: order/models.py:892 part/templates/part/prices.html:176 stock/models.py:608
-#: stock/serializers.py:170 stock/templates/stock/item_base.html:359
-#: templates/js/translated/stock.js:1787
+#: stock/serializers.py:170 stock/templates/stock/item_base.html:361
+#: templates/js/translated/stock.js:1911
msgid "Purchase Price"
msgstr ""
@@ -3530,7 +3546,7 @@ msgstr ""
#: order/templates/order/order_base.html:94
#: order/templates/order/sales_order_base.html:89
-#: templates/js/translated/stock.js:2327
+#: templates/js/translated/stock.js:2451
msgid "Order Status"
msgstr ""
@@ -3574,73 +3590,20 @@ msgstr ""
msgid "After placing this purchase order, line items will no longer be editable."
msgstr ""
-#: order/templates/order/order_wizard/match_fields.html:9
-#: part/templates/part/bom_upload/match_fields.html:9
-#: part/templates/part/import_wizard/ajax_match_fields.html:9
-#: part/templates/part/import_wizard/match_fields.html:9
-msgid "Missing selections for the following required columns"
-msgstr ""
-
-#: order/templates/order/order_wizard/match_fields.html:20
-#: part/templates/part/bom_upload/match_fields.html:20
-#: part/templates/part/import_wizard/ajax_match_fields.html:20
-#: part/templates/part/import_wizard/match_fields.html:20
-msgid "Duplicate selections found, see below. Fix them then retry submitting."
-msgstr ""
-
-#: order/templates/order/order_wizard/match_fields.html:29
-#: order/templates/order/order_wizard/match_parts.html:21
-#: part/templates/part/bom_upload/match_fields.html:29
-#: part/templates/part/bom_upload/match_parts.html:21
-#: part/templates/part/import_wizard/match_fields.html:29
-#: part/templates/part/import_wizard/match_references.html:21
-msgid "Submit Selections"
-msgstr ""
-
-#: order/templates/order/order_wizard/match_fields.html:35
-#: part/templates/part/bom_upload/match_fields.html:35
-#: part/templates/part/import_wizard/ajax_match_fields.html:28
-#: part/templates/part/import_wizard/match_fields.html:35
-msgid "File Fields"
-msgstr ""
-
-#: order/templates/order/order_wizard/match_fields.html:42
-#: part/templates/part/bom_upload/match_fields.html:42
-#: part/templates/part/import_wizard/ajax_match_fields.html:35
-#: part/templates/part/import_wizard/match_fields.html:42
-msgid "Remove column"
-msgstr ""
-
-#: order/templates/order/order_wizard/match_fields.html:60
-#: part/templates/part/bom_upload/match_fields.html:60
-#: part/templates/part/import_wizard/ajax_match_fields.html:53
-#: part/templates/part/import_wizard/match_fields.html:60
-msgid "Duplicate selection"
-msgstr ""
-
-#: order/templates/order/order_wizard/match_fields.html:71
-#: order/templates/order/order_wizard/match_parts.html:52
-#: part/templates/part/bom_upload/match_fields.html:71
-#: part/templates/part/bom_upload/match_parts.html:53
-#: part/templates/part/import_wizard/ajax_match_fields.html:64
-#: part/templates/part/import_wizard/ajax_match_references.html:42
-#: part/templates/part/import_wizard/match_fields.html:71
-#: part/templates/part/import_wizard/match_references.html:49
-#: templates/js/translated/build.js:300 templates/js/translated/build.js:1311
-#: templates/js/translated/order.js:537 templates/js/translated/order.js:1488
-#: templates/js/translated/stock.js:601 templates/js/translated/stock.js:769
-msgid "Remove row"
-msgstr ""
-
#: order/templates/order/order_wizard/match_parts.html:12
-#: part/templates/part/bom_upload/match_parts.html:12
#: part/templates/part/import_wizard/ajax_match_references.html:12
#: part/templates/part/import_wizard/match_references.html:12
msgid "Errors exist in the submitted data"
msgstr ""
+#: order/templates/order/order_wizard/match_parts.html:21
+#: part/templates/part/import_wizard/match_fields.html:29
+#: part/templates/part/import_wizard/match_references.html:21
+#: templates/patterns/wizard/match_fields.html:28
+msgid "Submit Selections"
+msgstr ""
+
#: order/templates/order/order_wizard/match_parts.html:28
-#: part/templates/part/bom_upload/match_parts.html:28
#: part/templates/part/import_wizard/ajax_match_references.html:21
#: part/templates/part/import_wizard/match_references.html:28
msgid "Row"
@@ -3650,6 +3613,19 @@ msgstr ""
msgid "Select Supplier Part"
msgstr ""
+#: order/templates/order/order_wizard/match_parts.html:52
+#: part/templates/part/import_wizard/ajax_match_fields.html:64
+#: part/templates/part/import_wizard/ajax_match_references.html:42
+#: part/templates/part/import_wizard/match_fields.html:71
+#: part/templates/part/import_wizard/match_references.html:49
+#: templates/js/translated/bom.js:76 templates/js/translated/build.js:380
+#: templates/js/translated/build.js:528 templates/js/translated/build.js:1547
+#: templates/js/translated/order.js:537 templates/js/translated/order.js:1488
+#: templates/js/translated/stock.js:602 templates/js/translated/stock.js:770
+#: templates/patterns/wizard/match_fields.html:70
+msgid "Remove row"
+msgstr ""
+
#: order/templates/order/order_wizard/po_upload.html:8
msgid "Return to Orders"
msgstr ""
@@ -3659,9 +3635,9 @@ msgid "Upload File for Purchase Order"
msgstr ""
#: order/templates/order/order_wizard/po_upload.html:25
-#: part/templates/part/bom_upload/upload_file.html:21
#: part/templates/part/import_wizard/ajax_part_upload.html:10
#: part/templates/part/import_wizard/part_upload.html:23
+#: templates/patterns/wizard/upload.html:11
#, python-format
msgid "Step %(step)s of %(count)s"
msgstr ""
@@ -3819,7 +3795,7 @@ msgid "Pending Shipments"
msgstr ""
#: order/templates/order/sales_order_detail.html:48
-#: templates/js/translated/bom.js:732 templates/js/translated/build.js:1243
+#: templates/js/translated/bom.js:945 templates/js/translated/build.js:1465
msgid "Actions"
msgstr ""
@@ -3922,7 +3898,7 @@ msgstr ""
msgid "This field is required"
msgstr ""
-#: part/bom.py:125 part/models.py:83 part/models.py:849
+#: part/bom.py:125 part/models.py:83 part/models.py:879
#: part/templates/part/category.html:108 part/templates/part/part_base.html:338
msgid "Default Location"
msgstr ""
@@ -3968,7 +3944,7 @@ msgstr ""
msgid "Default keywords for parts in this category"
msgstr ""
-#: part/models.py:97 part/models.py:2533 part/templates/part/category.html:15
+#: part/models.py:97 part/models.py:2569 part/templates/part/category.html:15
#: part/templates/part/part_app_base.html:10
msgid "Part Category"
msgstr ""
@@ -3994,408 +3970,478 @@ msgstr ""
msgid "Invalid choice for parent part"
msgstr ""
-#: part/models.py:502 part/models.py:514
+#: part/models.py:532 part/models.py:544
#, python-brace-format
msgid "Part '{p1}' is used in BOM for '{p2}' (recursive)"
msgstr ""
-#: part/models.py:644
+#: part/models.py:674
msgid "Next available serial numbers are"
msgstr ""
-#: part/models.py:648
+#: part/models.py:678
msgid "Next available serial number is"
msgstr ""
-#: part/models.py:653
+#: part/models.py:683
msgid "Most recent serial number is"
msgstr ""
-#: part/models.py:748
+#: part/models.py:778
msgid "Duplicate IPN not allowed in part settings"
msgstr ""
-#: part/models.py:773
+#: part/models.py:803 part/models.py:2622
msgid "Part name"
msgstr ""
-#: part/models.py:780
+#: part/models.py:810
msgid "Is Template"
msgstr ""
-#: part/models.py:781
+#: part/models.py:811
msgid "Is this part a template part?"
msgstr ""
-#: part/models.py:791
+#: part/models.py:821
msgid "Is this part a variant of another part?"
msgstr ""
-#: part/models.py:792
+#: part/models.py:822
msgid "Variant Of"
msgstr ""
-#: part/models.py:798
+#: part/models.py:828
msgid "Part description"
msgstr ""
-#: part/models.py:803 part/templates/part/category.html:86
+#: part/models.py:833 part/templates/part/category.html:86
#: part/templates/part/part_base.html:302
msgid "Keywords"
msgstr ""
-#: part/models.py:804
+#: part/models.py:834
msgid "Part keywords to improve visibility in search results"
msgstr ""
-#: part/models.py:811 part/models.py:2283 part/models.py:2532
+#: part/models.py:841 part/models.py:2319 part/models.py:2568
#: part/templates/part/part_base.html:265
#: part/templates/part/set_category.html:15
-#: templates/InvenTree/settings/settings.html:186
+#: templates/InvenTree/settings/settings.html:223
#: templates/js/translated/part.js:1268
msgid "Category"
msgstr ""
-#: part/models.py:812
+#: part/models.py:842
msgid "Part category"
msgstr ""
-#: part/models.py:817 part/templates/part/part_base.html:274
+#: part/models.py:847 part/templates/part/part_base.html:274
#: templates/js/translated/part.js:618 templates/js/translated/part.js:1221
-#: templates/js/translated/stock.js:1560
+#: templates/js/translated/stock.js:1684
msgid "IPN"
msgstr ""
-#: part/models.py:818
+#: part/models.py:848
msgid "Internal Part Number"
msgstr ""
-#: part/models.py:824
+#: part/models.py:854
msgid "Part revision or version number"
msgstr ""
-#: part/models.py:825 part/templates/part/part_base.html:281
+#: part/models.py:855 part/templates/part/part_base.html:281
#: report/models.py:200 templates/js/translated/part.js:622
msgid "Revision"
msgstr ""
-#: part/models.py:847
+#: part/models.py:877
msgid "Where is this item normally stored?"
msgstr ""
-#: part/models.py:894 part/templates/part/part_base.html:347
+#: part/models.py:924 part/templates/part/part_base.html:347
msgid "Default Supplier"
msgstr ""
-#: part/models.py:895
+#: part/models.py:925
msgid "Default supplier part"
msgstr ""
-#: part/models.py:902
+#: part/models.py:932
msgid "Default Expiry"
msgstr ""
-#: part/models.py:903
+#: part/models.py:933
msgid "Expiry time (in days) for stock items of this part"
msgstr ""
-#: part/models.py:908 part/templates/part/part_base.html:196
+#: part/models.py:938 part/templates/part/part_base.html:196
msgid "Minimum Stock"
msgstr ""
-#: part/models.py:909
+#: part/models.py:939
msgid "Minimum allowed stock level"
msgstr ""
-#: part/models.py:916
+#: part/models.py:946
msgid "Stock keeping units for this part"
msgstr ""
-#: part/models.py:922
+#: part/models.py:952
msgid "Can this part be built from other parts?"
msgstr ""
-#: part/models.py:928
+#: part/models.py:958
msgid "Can this part be used to build other parts?"
msgstr ""
-#: part/models.py:934
+#: part/models.py:964
msgid "Does this part have tracking for unique items?"
msgstr ""
-#: part/models.py:939
+#: part/models.py:969
msgid "Can this part be purchased from external suppliers?"
msgstr ""
-#: part/models.py:944
+#: part/models.py:974
msgid "Can this part be sold to customers?"
msgstr ""
-#: part/models.py:949
+#: part/models.py:979
msgid "Is this part active?"
msgstr ""
-#: part/models.py:954
+#: part/models.py:984
msgid "Is this a virtual part, such as a software product or license?"
msgstr ""
-#: part/models.py:959
+#: part/models.py:989
msgid "Part notes - supports Markdown formatting"
msgstr ""
-#: part/models.py:962
+#: part/models.py:992
msgid "BOM checksum"
msgstr ""
-#: part/models.py:962
+#: part/models.py:992
msgid "Stored BOM checksum"
msgstr ""
-#: part/models.py:965
+#: part/models.py:995
msgid "BOM checked by"
msgstr ""
-#: part/models.py:967
+#: part/models.py:997
msgid "BOM checked date"
msgstr ""
-#: part/models.py:971
+#: part/models.py:1001
msgid "Creation User"
msgstr ""
-#: part/models.py:1783
+#: part/models.py:1819
msgid "Sell multiple"
msgstr ""
-#: part/models.py:2333
+#: part/models.py:2369
msgid "Test templates can only be created for trackable parts"
msgstr ""
-#: part/models.py:2350
+#: part/models.py:2386
msgid "Test with this name already exists for this part"
msgstr ""
-#: part/models.py:2370 templates/js/translated/part.js:1714
-#: templates/js/translated/stock.js:1284
+#: part/models.py:2406 templates/js/translated/part.js:1714
+#: templates/js/translated/stock.js:1312
msgid "Test Name"
msgstr ""
-#: part/models.py:2371
+#: part/models.py:2407
msgid "Enter a name for the test"
msgstr ""
-#: part/models.py:2376
+#: part/models.py:2412
msgid "Test Description"
msgstr ""
-#: part/models.py:2377
+#: part/models.py:2413
msgid "Enter description for this test"
msgstr ""
-#: part/models.py:2382 templates/js/translated/part.js:1723
-#: templates/js/translated/table_filters.js:281
+#: part/models.py:2418 templates/js/translated/part.js:1723
+#: templates/js/translated/table_filters.js:276
msgid "Required"
msgstr ""
-#: part/models.py:2383
+#: part/models.py:2419
msgid "Is this test required to pass?"
msgstr ""
-#: part/models.py:2388 templates/js/translated/part.js:1731
+#: part/models.py:2424 templates/js/translated/part.js:1731
msgid "Requires Value"
msgstr ""
-#: part/models.py:2389
+#: part/models.py:2425
msgid "Does this test require a value when adding a test result?"
msgstr ""
-#: part/models.py:2394 templates/js/translated/part.js:1738
+#: part/models.py:2430 templates/js/translated/part.js:1738
msgid "Requires Attachment"
msgstr ""
-#: part/models.py:2395
+#: part/models.py:2431
msgid "Does this test require a file attachment when adding a test result?"
msgstr ""
-#: part/models.py:2406
+#: part/models.py:2442
#, python-brace-format
msgid "Illegal character in template name ({c})"
msgstr ""
-#: part/models.py:2442
+#: part/models.py:2478
msgid "Parameter template name must be unique"
msgstr ""
-#: part/models.py:2450
+#: part/models.py:2486
msgid "Parameter Name"
msgstr ""
-#: part/models.py:2457
+#: part/models.py:2493
msgid "Parameter Units"
msgstr ""
-#: part/models.py:2487
+#: part/models.py:2523
msgid "Parent Part"
msgstr ""
-#: part/models.py:2489 part/models.py:2538 part/models.py:2539
-#: templates/InvenTree/settings/settings.html:181
+#: part/models.py:2525 part/models.py:2574 part/models.py:2575
+#: templates/InvenTree/settings/settings.html:218
msgid "Parameter Template"
msgstr ""
-#: part/models.py:2491
+#: part/models.py:2527
msgid "Data"
msgstr ""
-#: part/models.py:2491
+#: part/models.py:2527
msgid "Parameter Value"
msgstr ""
-#: part/models.py:2543 templates/InvenTree/settings/settings.html:190
+#: part/models.py:2579 templates/InvenTree/settings/settings.html:227
msgid "Default Value"
msgstr ""
-#: part/models.py:2544
+#: part/models.py:2580
msgid "Default Parameter Value"
msgstr ""
+#: part/models.py:2614
+msgid "Part ID or part name"
+msgstr ""
+
+#: part/models.py:2617 templates/js/translated/model_renderers.js:182
+msgid "Part ID"
+msgstr ""
+
+#: part/models.py:2618
+msgid "Unique part ID value"
+msgstr ""
+
#: part/models.py:2621
-msgid "Select parent part"
+msgid "Part Name"
+msgstr ""
+
+#: part/models.py:2625
+msgid "Part IPN"
+msgstr ""
+
+#: part/models.py:2626
+msgid "Part IPN value"
msgstr ""
#: part/models.py:2629
-msgid "Sub part"
+msgid "Level"
msgstr ""
#: part/models.py:2630
+msgid "BOM level"
+msgstr ""
+
+#: part/models.py:2690
+msgid "Select parent part"
+msgstr ""
+
+#: part/models.py:2698
+msgid "Sub part"
+msgstr ""
+
+#: part/models.py:2699
msgid "Select part to be used in BOM"
msgstr ""
-#: part/models.py:2636
+#: part/models.py:2705
msgid "BOM quantity for this BOM item"
msgstr ""
-#: part/models.py:2638 templates/js/translated/bom.js:578
-#: templates/js/translated/bom.js:652
+#: part/models.py:2707 part/templates/part/upload_bom.html:58
+#: templates/js/translated/bom.js:791 templates/js/translated/bom.js:865
#: templates/js/translated/table_filters.js:92
msgid "Optional"
msgstr ""
-#: part/models.py:2638
+#: part/models.py:2707
msgid "This BOM item is optional"
msgstr ""
-#: part/models.py:2641
+#: part/models.py:2710 part/templates/part/upload_bom.html:55
msgid "Overage"
msgstr ""
-#: part/models.py:2642
+#: part/models.py:2711
msgid "Estimated build wastage quantity (absolute or percentage)"
msgstr ""
-#: part/models.py:2645
+#: part/models.py:2714
msgid "BOM item reference"
msgstr ""
-#: part/models.py:2648
+#: part/models.py:2717
msgid "BOM item notes"
msgstr ""
-#: part/models.py:2650
+#: part/models.py:2719
msgid "Checksum"
msgstr ""
-#: part/models.py:2650
+#: part/models.py:2719
msgid "BOM line checksum"
msgstr ""
-#: part/models.py:2654 templates/js/translated/bom.js:669
+#: part/models.py:2723 part/templates/part/upload_bom.html:57
+#: templates/js/translated/bom.js:882
#: templates/js/translated/table_filters.js:68
#: templates/js/translated/table_filters.js:88
msgid "Inherited"
msgstr ""
-#: part/models.py:2655
+#: part/models.py:2724
msgid "This BOM item is inherited by BOMs for variant parts"
msgstr ""
-#: part/models.py:2660 templates/js/translated/bom.js:661
+#: part/models.py:2729 part/templates/part/upload_bom.html:56
+#: templates/js/translated/bom.js:874
msgid "Allow Variants"
msgstr ""
-#: part/models.py:2661
+#: part/models.py:2730
msgid "Stock items for variant parts can be used for this BOM item"
msgstr ""
-#: part/models.py:2746 stock/models.py:357
+#: part/models.py:2815 stock/models.py:357
msgid "Quantity must be integer value for trackable parts"
msgstr ""
-#: part/models.py:2755 part/models.py:2757
+#: part/models.py:2824 part/models.py:2826
msgid "Sub part must be specified"
msgstr ""
-#: part/models.py:2886
+#: part/models.py:2955
msgid "BOM Item Substitute"
msgstr ""
-#: part/models.py:2908
+#: part/models.py:2977
msgid "Substitute part cannot be the same as the master part"
msgstr ""
-#: part/models.py:2920
+#: part/models.py:2989
msgid "Parent BOM item"
msgstr ""
-#: part/models.py:2928
+#: part/models.py:2997
msgid "Substitute part"
msgstr ""
-#: part/models.py:2939
+#: part/models.py:3008
msgid "Part 1"
msgstr ""
-#: part/models.py:2943
+#: part/models.py:3012
msgid "Part 2"
msgstr ""
-#: part/models.py:2943
+#: part/models.py:3012
msgid "Select Related Part"
msgstr ""
-#: part/models.py:2975
+#: part/models.py:3044
msgid "Error creating relationship: check that the part is not related to itself and that the relationship is unique"
msgstr ""
-#: part/serializers.py:659
+#: part/serializers.py:667
msgid "Select part to copy BOM from"
msgstr ""
-#: part/serializers.py:670
+#: part/serializers.py:678
msgid "Remove Existing Data"
msgstr ""
-#: part/serializers.py:671
+#: part/serializers.py:679
msgid "Remove existing BOM items before copying"
msgstr ""
-#: part/serializers.py:676
+#: part/serializers.py:684
msgid "Include Inherited"
msgstr ""
-#: part/serializers.py:677
+#: part/serializers.py:685
msgid "Include BOM items which are inherited from templated parts"
msgstr ""
-#: part/serializers.py:682
+#: part/serializers.py:690
msgid "Skip Invalid Rows"
msgstr ""
-#: part/serializers.py:683
+#: part/serializers.py:691
msgid "Enable this option to skip invalid rows"
msgstr ""
-#: part/tasks.py:53
+#: part/serializers.py:734
+msgid "Clear Existing BOM"
+msgstr ""
+
+#: part/serializers.py:735
+msgid "Delete existing BOM items before uploading"
+msgstr ""
+
+#: part/serializers.py:762
+msgid "No part column specified"
+msgstr ""
+
+#: part/serializers.py:806
+msgid "Multiple matching parts found"
+msgstr ""
+
+#: part/serializers.py:809
+msgid "No matching part found"
+msgstr ""
+
+#: part/serializers.py:812
+msgid "Part is not designated as a component"
+msgstr ""
+
+#: part/serializers.py:821
+msgid "Quantity not provided"
+msgstr ""
+
+#: part/serializers.py:829
+msgid "Invalid quantity"
+msgstr ""
+
+#: part/serializers.py:848
+msgid "At least one BOM item is required"
+msgstr ""
+
+#: part/tasks.py:58
msgid "Low stock notification"
msgstr ""
@@ -4418,7 +4464,7 @@ msgstr ""
msgid "The BOM for %(part)s has not been validated."
msgstr ""
-#: part/templates/part/bom.html:30 part/templates/part/detail.html:270
+#: part/templates/part/bom.html:30 part/templates/part/detail.html:273
msgid "BOM actions"
msgstr ""
@@ -4426,34 +4472,6 @@ msgstr ""
msgid "Delete Items"
msgstr ""
-#: part/templates/part/bom_upload/match_parts.html:29
-msgid "Select Part"
-msgstr ""
-
-#: part/templates/part/bom_upload/upload_file.html:8
-msgid "Return to BOM"
-msgstr ""
-
-#: part/templates/part/bom_upload/upload_file.html:13
-msgid "Upload Bill of Materials"
-msgstr ""
-
-#: part/templates/part/bom_upload/upload_file.html:33
-msgid "Requirements for BOM upload"
-msgstr ""
-
-#: part/templates/part/bom_upload/upload_file.html:35
-msgid "The BOM file must contain the required named columns as provided in the "
-msgstr ""
-
-#: part/templates/part/bom_upload/upload_file.html:35
-msgid "BOM Upload Template"
-msgstr ""
-
-#: part/templates/part/bom_upload/upload_file.html:36
-msgid "Each part must already exist in the database"
-msgstr ""
-
#: part/templates/part/category.html:28 part/templates/part/category.html:32
msgid "You are subscribed to notifications for this category"
msgstr ""
@@ -4519,7 +4537,7 @@ msgstr ""
msgid "Create new part"
msgstr ""
-#: part/templates/part/category.html:161 templates/js/translated/bom.js:152
+#: part/templates/part/category.html:161 templates/js/translated/bom.js:365
msgid "New Part"
msgstr ""
@@ -4639,138 +4657,168 @@ msgstr ""
msgid "Sales Order Allocations"
msgstr ""
-#: part/templates/part/detail.html:159
+#: part/templates/part/detail.html:162
msgid "Part Variants"
msgstr ""
-#: part/templates/part/detail.html:163
+#: part/templates/part/detail.html:166
msgid "Create new variant"
msgstr ""
-#: part/templates/part/detail.html:164
+#: part/templates/part/detail.html:167
msgid "New Variant"
msgstr ""
-#: part/templates/part/detail.html:191
+#: part/templates/part/detail.html:194
msgid "Add new parameter"
msgstr ""
-#: part/templates/part/detail.html:228 part/templates/part/part_sidebar.html:49
+#: part/templates/part/detail.html:231 part/templates/part/part_sidebar.html:52
msgid "Related Parts"
msgstr ""
-#: part/templates/part/detail.html:232 part/templates/part/detail.html:233
+#: part/templates/part/detail.html:235 part/templates/part/detail.html:236
msgid "Add Related"
msgstr ""
-#: part/templates/part/detail.html:253 part/templates/part/part_sidebar.html:17
+#: part/templates/part/detail.html:256 part/templates/part/part_sidebar.html:18
msgid "Bill of Materials"
msgstr ""
-#: part/templates/part/detail.html:258
+#: part/templates/part/detail.html:261
msgid "Export actions"
msgstr ""
-#: part/templates/part/detail.html:262 templates/js/translated/bom.js:70
+#: part/templates/part/detail.html:265 templates/js/translated/bom.js:283
msgid "Export BOM"
msgstr ""
-#: part/templates/part/detail.html:264
+#: part/templates/part/detail.html:267
msgid "Print BOM Report"
msgstr ""
-#: part/templates/part/detail.html:274
+#: part/templates/part/detail.html:277
msgid "Upload BOM"
msgstr ""
-#: part/templates/part/detail.html:276 templates/js/translated/part.js:272
+#: part/templates/part/detail.html:279 templates/js/translated/part.js:272
msgid "Copy BOM"
msgstr ""
-#: part/templates/part/detail.html:278
+#: part/templates/part/detail.html:281
msgid "Validate BOM"
msgstr ""
-#: part/templates/part/detail.html:283
+#: part/templates/part/detail.html:286
msgid "New BOM Item"
msgstr ""
-#: part/templates/part/detail.html:284
+#: part/templates/part/detail.html:287
msgid "Add BOM Item"
msgstr ""
-#: part/templates/part/detail.html:297
+#: part/templates/part/detail.html:300
msgid "Assemblies"
msgstr ""
-#: part/templates/part/detail.html:314
+#: part/templates/part/detail.html:317
msgid "Part Builds"
msgstr ""
-#: part/templates/part/detail.html:339
+#: part/templates/part/detail.html:342
msgid "Build Order Allocations"
msgstr ""
-#: part/templates/part/detail.html:349
+#: part/templates/part/detail.html:352
msgid "Part Suppliers"
msgstr ""
-#: part/templates/part/detail.html:377
+#: part/templates/part/detail.html:380
msgid "Part Manufacturers"
msgstr ""
-#: part/templates/part/detail.html:393
+#: part/templates/part/detail.html:396
msgid "Delete manufacturer parts"
msgstr ""
-#: part/templates/part/detail.html:575
+#: part/templates/part/detail.html:578
msgid "Delete selected BOM items?"
msgstr ""
-#: part/templates/part/detail.html:576
+#: part/templates/part/detail.html:579
msgid "All selected BOM items will be deleted"
msgstr ""
-#: part/templates/part/detail.html:625
+#: part/templates/part/detail.html:628
msgid "Create BOM Item"
msgstr ""
-#: part/templates/part/detail.html:682
+#: part/templates/part/detail.html:685
msgid "Related Part"
msgstr ""
-#: part/templates/part/detail.html:690
+#: part/templates/part/detail.html:693
msgid "Add Related Part"
msgstr ""
-#: part/templates/part/detail.html:785
+#: part/templates/part/detail.html:788
msgid "Add Test Result Template"
msgstr ""
-#: part/templates/part/detail.html:842
+#: part/templates/part/detail.html:845
msgid "Edit Part Notes"
msgstr ""
-#: part/templates/part/detail.html:955
+#: part/templates/part/detail.html:958
#, python-format
msgid "Purchase Unit Price - %(currency)s"
msgstr ""
-#: part/templates/part/detail.html:967
+#: part/templates/part/detail.html:970
#, python-format
msgid "Unit Price-Cost Difference - %(currency)s"
msgstr ""
-#: part/templates/part/detail.html:979
+#: part/templates/part/detail.html:982
#, python-format
msgid "Supplier Unit Cost - %(currency)s"
msgstr ""
-#: part/templates/part/detail.html:1068
+#: part/templates/part/detail.html:1071
#, python-format
msgid "Unit Price - %(currency)s"
msgstr ""
+#: part/templates/part/import_wizard/ajax_match_fields.html:9
+#: part/templates/part/import_wizard/match_fields.html:9
+#: templates/patterns/wizard/match_fields.html:8
+msgid "Missing selections for the following required columns"
+msgstr ""
+
+#: part/templates/part/import_wizard/ajax_match_fields.html:20
+#: part/templates/part/import_wizard/match_fields.html:20
+#: templates/patterns/wizard/match_fields.html:19
+msgid "Duplicate selections found, see below. Fix them then retry submitting."
+msgstr ""
+
+#: part/templates/part/import_wizard/ajax_match_fields.html:28
+#: part/templates/part/import_wizard/match_fields.html:35
+#: templates/patterns/wizard/match_fields.html:34
+msgid "File Fields"
+msgstr ""
+
+#: part/templates/part/import_wizard/ajax_match_fields.html:35
+#: part/templates/part/import_wizard/match_fields.html:42
+#: templates/patterns/wizard/match_fields.html:41
+msgid "Remove column"
+msgstr ""
+
+#: part/templates/part/import_wizard/ajax_match_fields.html:53
+#: part/templates/part/import_wizard/match_fields.html:60
+#: templates/patterns/wizard/match_fields.html:59
+msgid "Duplicate selection"
+msgstr ""
+
#: part/templates/part/import_wizard/ajax_part_upload.html:29
#: part/templates/part/import_wizard/part_upload.html:53
msgid "Unsuffitient privileges."
@@ -4819,7 +4867,7 @@ msgid "Show pricing information"
msgstr ""
#: part/templates/part/part_base.html:56
-#: stock/templates/stock/item_base.html:110
+#: stock/templates/stock/item_base.html:112
#: stock/templates/stock/location.html:44
msgid "Stock actions"
msgstr ""
@@ -4912,7 +4960,7 @@ msgstr ""
msgid "Allocated to Orders"
msgstr ""
-#: part/templates/part/part_base.html:239 templates/js/translated/bom.js:690
+#: part/templates/part/part_base.html:239 templates/js/translated/bom.js:903
msgid "Can Build"
msgstr ""
@@ -4930,7 +4978,7 @@ msgid "Latest Serial Number"
msgstr ""
#: part/templates/part/part_base.html:328
-#: stock/templates/stock/item_base.html:166
+#: stock/templates/stock/item_base.html:168
msgid "Search for serial number"
msgstr ""
@@ -4969,7 +5017,7 @@ msgid "Total Cost"
msgstr ""
#: part/templates/part/part_pricing.html:40 part/templates/part/prices.html:40
-#: templates/js/translated/bom.js:644
+#: templates/js/translated/bom.js:857
msgid "No supplier pricing available"
msgstr ""
@@ -5003,20 +5051,20 @@ msgstr ""
msgid "No pricing information is available for this part."
msgstr ""
-#: part/templates/part/part_sidebar.html:11
+#: part/templates/part/part_sidebar.html:12
msgid "Variants"
msgstr ""
-#: part/templates/part/part_sidebar.html:25
+#: part/templates/part/part_sidebar.html:26
msgid "Used In"
msgstr ""
-#: part/templates/part/part_sidebar.html:31
+#: part/templates/part/part_sidebar.html:34
#: stock/templates/stock/stock_sidebar.html:8
msgid "Allocations"
msgstr ""
-#: part/templates/part/part_sidebar.html:45
+#: part/templates/part/part_sidebar.html:48
msgid "Test Templates"
msgstr ""
@@ -5089,7 +5137,7 @@ msgstr ""
msgid "Calculation parameters"
msgstr ""
-#: part/templates/part/prices.html:155 templates/js/translated/bom.js:638
+#: part/templates/part/prices.html:155 templates/js/translated/bom.js:851
msgid "Supplier Cost"
msgstr ""
@@ -5111,7 +5159,7 @@ msgstr ""
msgid "Internal Cost"
msgstr ""
-#: part/templates/part/prices.html:215 part/views.py:1699
+#: part/templates/part/prices.html:215 part/views.py:1390
msgid "Add Internal Price Break"
msgstr ""
@@ -5131,7 +5179,7 @@ msgstr ""
msgid "Set category for the following parts"
msgstr ""
-#: part/templates/part/stock_count.html:7 templates/js/translated/bom.js:600
+#: part/templates/part/stock_count.html:7 templates/js/translated/bom.js:813
#: templates/js/translated/part.js:497 templates/js/translated/part.js:1122
#: templates/js/translated/part.js:1309
msgid "No Stock"
@@ -5141,6 +5189,43 @@ msgstr ""
msgid "Low Stock"
msgstr ""
+#: part/templates/part/upload_bom.html:8
+msgid "Return to BOM"
+msgstr ""
+
+#: part/templates/part/upload_bom.html:13
+msgid "Upload Bill of Materials"
+msgstr ""
+
+#: part/templates/part/upload_bom.html:19
+msgid "BOM upload requirements"
+msgstr ""
+
+#: part/templates/part/upload_bom.html:23
+#: part/templates/part/upload_bom.html:90
+msgid "Upload BOM File"
+msgstr ""
+
+#: part/templates/part/upload_bom.html:29
+msgid "Submit BOM Data"
+msgstr ""
+
+#: part/templates/part/upload_bom.html:37
+msgid "Requirements for BOM upload"
+msgstr ""
+
+#: part/templates/part/upload_bom.html:39
+msgid "The BOM file must contain the required named columns as provided in the "
+msgstr ""
+
+#: part/templates/part/upload_bom.html:39
+msgid "BOM Upload Template"
+msgstr ""
+
+#: part/templates/part/upload_bom.html:40
+msgid "Each part must already exist in the database"
+msgstr ""
+
#: part/templates/part/variant_part.html:9
msgid "Create new part variant"
msgstr ""
@@ -5154,104 +5239,96 @@ msgstr ""
msgid "Unknown database"
msgstr ""
-#: part/views.py:93
+#: part/views.py:90
msgid "Set Part Category"
msgstr ""
-#: part/views.py:143
+#: part/views.py:140
#, python-brace-format
msgid "Set category for {n} parts"
msgstr ""
-#: part/views.py:215
+#: part/views.py:212
msgid "Match References"
msgstr ""
-#: part/views.py:511
+#: part/views.py:509
msgid "None"
msgstr ""
-#: part/views.py:570
+#: part/views.py:568
msgid "Part QR Code"
msgstr ""
-#: part/views.py:672
+#: part/views.py:670
msgid "Select Part Image"
msgstr ""
-#: part/views.py:698
+#: part/views.py:696
msgid "Updated part image"
msgstr ""
-#: part/views.py:701
+#: part/views.py:699
msgid "Part image not found"
msgstr ""
-#: part/views.py:775
-msgid "Match Parts"
-msgstr ""
-
-#: part/views.py:1110
-msgid "Export Bill of Materials"
-msgstr ""
-
-#: part/views.py:1159
+#: part/views.py:850
msgid "Confirm Part Deletion"
msgstr ""
-#: part/views.py:1166
+#: part/views.py:857
msgid "Part was deleted"
msgstr ""
-#: part/views.py:1175
+#: part/views.py:866
msgid "Part Pricing"
msgstr ""
-#: part/views.py:1324
+#: part/views.py:1015
msgid "Create Part Parameter Template"
msgstr ""
-#: part/views.py:1334
+#: part/views.py:1025
msgid "Edit Part Parameter Template"
msgstr ""
-#: part/views.py:1341
+#: part/views.py:1032
msgid "Delete Part Parameter Template"
msgstr ""
-#: part/views.py:1400 templates/js/translated/part.js:315
+#: part/views.py:1091 templates/js/translated/part.js:315
msgid "Edit Part Category"
msgstr ""
-#: part/views.py:1438
+#: part/views.py:1129
msgid "Delete Part Category"
msgstr ""
-#: part/views.py:1444
+#: part/views.py:1135
msgid "Part category was deleted"
msgstr ""
-#: part/views.py:1453
+#: part/views.py:1144
msgid "Create Category Parameter Template"
msgstr ""
-#: part/views.py:1554
+#: part/views.py:1245
msgid "Edit Category Parameter Template"
msgstr ""
-#: part/views.py:1610
+#: part/views.py:1301
msgid "Delete Category Parameter Template"
msgstr ""
-#: part/views.py:1632
+#: part/views.py:1323
msgid "Added new price break"
msgstr ""
-#: part/views.py:1708
+#: part/views.py:1399
msgid "Edit Internal Price Break"
msgstr ""
-#: part/views.py:1716
+#: part/views.py:1407
msgid "Delete Internal Price Break"
msgstr ""
@@ -5453,12 +5530,12 @@ msgid "Stock Item Test Report"
msgstr ""
#: report/templates/report/inventree_test_report_base.html:79
-#: stock/models.py:519 stock/templates/stock/item_base.html:156
-#: templates/js/translated/build.js:293 templates/js/translated/build.js:697
-#: templates/js/translated/build.js:1073
+#: stock/models.py:519 stock/templates/stock/item_base.html:158
+#: templates/js/translated/build.js:373 templates/js/translated/build.js:521
+#: templates/js/translated/build.js:919 templates/js/translated/build.js:1295
#: 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:423
+#: templates/js/translated/order.js:2034 templates/js/translated/stock.js:424
msgid "Serial Number"
msgstr ""
@@ -5479,7 +5556,7 @@ msgstr ""
#: report/templates/report/inventree_test_report_base.html:97
#: templates/InvenTree/settings/plugin.html:50
#: templates/InvenTree/settings/plugin_settings.html:38
-#: templates/js/translated/order.js:849 templates/js/translated/stock.js:2525
+#: templates/js/translated/order.js:849 templates/js/translated/stock.js:2649
msgid "Date"
msgstr ""
@@ -5497,71 +5574,67 @@ msgid "Installed Items"
msgstr ""
#: report/templates/report/inventree_test_report_base.html:137
-#: templates/js/translated/stock.js:586 templates/js/translated/stock.js:756
-#: templates/js/translated/stock.js:2785
+#: templates/js/translated/stock.js:587 templates/js/translated/stock.js:757
+#: templates/js/translated/stock.js:2909
msgid "Serial"
msgstr ""
-#: stock/api.py:476
+#: stock/api.py:501
msgid "Quantity is required"
msgstr ""
-#: stock/api.py:483
+#: stock/api.py:508
msgid "Valid part must be supplied"
msgstr ""
-#: stock/forms.py:77 stock/forms.py:251 stock/models.py:576
-#: stock/templates/stock/item_base.html:193
-#: templates/js/translated/stock.js:1709
+#: stock/api.py:535
+msgid "Serial numbers cannot be supplied for a non-trackable part"
+msgstr ""
+
+#: stock/forms.py:74 stock/forms.py:198 stock/models.py:576
+#: stock/templates/stock/item_base.html:195
+#: templates/js/translated/stock.js:1833
msgid "Expiry Date"
msgstr ""
-#: stock/forms.py:78 stock/forms.py:252
+#: stock/forms.py:75 stock/forms.py:199
msgid "Expiration date for this stock item"
msgstr ""
-#: stock/forms.py:81
+#: stock/forms.py:78
msgid "Enter unique serial numbers (or leave blank)"
msgstr ""
-#: stock/forms.py:136
+#: stock/forms.py:133
msgid "Destination for serialized stock (by default, will remain in current location)"
msgstr ""
-#: stock/forms.py:138
+#: stock/forms.py:135
msgid "Serial numbers"
msgstr ""
-#: stock/forms.py:138
+#: stock/forms.py:135
msgid "Unique serial numbers (must match quantity)"
msgstr ""
-#: stock/forms.py:140 stock/forms.py:224
+#: stock/forms.py:137 stock/forms.py:171
msgid "Add transaction note (optional)"
msgstr ""
-#: stock/forms.py:180
-msgid "Stock item to install"
-msgstr ""
-
-#: stock/forms.py:210
-msgid "Must not exceed available quantity"
-msgstr ""
-
-#: stock/forms.py:222
+#: stock/forms.py:169
msgid "Destination location for uninstalled items"
msgstr ""
-#: stock/forms.py:226
+#: stock/forms.py:173
msgid "Confirm uninstall"
msgstr ""
-#: stock/forms.py:226
+#: stock/forms.py:173
msgid "Confirm removal of installed stock items"
msgstr ""
#: stock/models.py:62 stock/models.py:613
-#: stock/templates/stock/item_base.html:416
+#: stock/templates/stock/item_base.html:418
msgid "Owner"
msgstr ""
@@ -5623,7 +5696,7 @@ msgstr ""
msgid "Packaging this stock item is stored in"
msgstr ""
-#: stock/models.py:502 stock/templates/stock/item_base.html:298
+#: stock/models.py:502 stock/templates/stock/item_base.html:300
msgid "Installed In"
msgstr ""
@@ -5733,7 +5806,7 @@ msgstr ""
msgid "Serialized stock cannot be merged"
msgstr ""
-#: stock/models.py:1214 stock/serializers.py:775
+#: stock/models.py:1214 stock/serializers.py:832
msgid "Duplicate stock items"
msgstr ""
@@ -5769,7 +5842,7 @@ msgstr ""
msgid "Test name"
msgstr ""
-#: stock/models.py:1983 templates/js/translated/table_filters.js:271
+#: stock/models.py:1983
msgid "Test result"
msgstr ""
@@ -5806,7 +5879,7 @@ msgstr ""
msgid "Enter serial numbers for new items"
msgstr ""
-#: stock/serializers.py:326 stock/serializers.py:732 stock/serializers.py:973
+#: stock/serializers.py:326 stock/serializers.py:789 stock/serializers.py:1030
msgid "Destination stock location"
msgstr ""
@@ -5818,63 +5891,79 @@ msgstr ""
msgid "Serial numbers cannot be assigned to this part"
msgstr ""
-#: stock/serializers.py:589
+#: stock/serializers.py:363 stock/views.py:1108
+msgid "Serial numbers already exist"
+msgstr ""
+
+#: stock/serializers.py:405
+msgid "Select stock item to install"
+msgstr ""
+
+#: stock/serializers.py:421
+msgid "Stock item is unavailable"
+msgstr ""
+
+#: stock/serializers.py:428
+msgid "Selected part is not in the Bill of Materials"
+msgstr ""
+
+#: stock/serializers.py:646
msgid "Part must be salable"
msgstr ""
-#: stock/serializers.py:593
+#: stock/serializers.py:650
msgid "Item is allocated to a sales order"
msgstr ""
-#: stock/serializers.py:597
+#: stock/serializers.py:654
msgid "Item is allocated to a build order"
msgstr ""
-#: stock/serializers.py:627
+#: stock/serializers.py:684
msgid "Customer to assign stock items"
msgstr ""
-#: stock/serializers.py:633
+#: stock/serializers.py:690
msgid "Selected company is not a customer"
msgstr ""
-#: stock/serializers.py:641
+#: stock/serializers.py:698
msgid "Stock assignment notes"
msgstr ""
-#: stock/serializers.py:651 stock/serializers.py:881
+#: stock/serializers.py:708 stock/serializers.py:938
msgid "A list of stock items must be provided"
msgstr ""
-#: stock/serializers.py:739
+#: stock/serializers.py:796
msgid "Stock merging notes"
msgstr ""
-#: stock/serializers.py:744
+#: stock/serializers.py:801
msgid "Allow mismatched suppliers"
msgstr ""
-#: stock/serializers.py:745
+#: stock/serializers.py:802
msgid "Allow stock items with different supplier parts to be merged"
msgstr ""
-#: stock/serializers.py:750
+#: stock/serializers.py:807
msgid "Allow mismatched status"
msgstr ""
-#: stock/serializers.py:751
+#: stock/serializers.py:808
msgid "Allow stock items with different status codes to be merged"
msgstr ""
-#: stock/serializers.py:761
+#: stock/serializers.py:818
msgid "At least two stock items must be provided"
msgstr ""
-#: stock/serializers.py:843
+#: stock/serializers.py:900
msgid "StockItem primary key value"
msgstr ""
-#: stock/serializers.py:871
+#: stock/serializers.py:928
msgid "Stock transaction notes"
msgstr ""
@@ -5919,22 +6008,14 @@ msgstr ""
msgid "Installed Stock Items"
msgstr ""
-#: stock/templates/stock/item.html:154 stock/views.py:482
+#: stock/templates/stock/item.html:154 templates/js/translated/stock.js:3018
msgid "Install Stock Item"
msgstr ""
-#: stock/templates/stock/item.html:309 stock/templates/stock/item.html:334
+#: stock/templates/stock/item.html:304 templates/js/translated/stock.js:1480
msgid "Add Test Result"
msgstr ""
-#: stock/templates/stock/item.html:354
-msgid "Edit Test Result"
-msgstr ""
-
-#: stock/templates/stock/item.html:368
-msgid "Delete Test Result"
-msgstr ""
-
#: stock/templates/stock/item_base.html:42
#: templates/js/translated/barcode.js:330
#: templates/js/translated/barcode.js:335
@@ -5995,129 +6076,129 @@ msgstr ""
msgid "Uninstall"
msgstr ""
-#: stock/templates/stock/item_base.html:101
+#: stock/templates/stock/item_base.html:102
msgid "Install stock item"
msgstr ""
-#: stock/templates/stock/item_base.html:101
+#: stock/templates/stock/item_base.html:102
msgid "Install"
msgstr ""
-#: stock/templates/stock/item_base.html:115
+#: stock/templates/stock/item_base.html:117
msgid "Convert to variant"
msgstr ""
-#: stock/templates/stock/item_base.html:118
+#: stock/templates/stock/item_base.html:120
msgid "Duplicate stock item"
msgstr ""
-#: stock/templates/stock/item_base.html:120
+#: stock/templates/stock/item_base.html:122
msgid "Edit stock item"
msgstr ""
-#: stock/templates/stock/item_base.html:123
+#: stock/templates/stock/item_base.html:125
msgid "Delete stock item"
msgstr ""
-#: stock/templates/stock/item_base.html:161
+#: stock/templates/stock/item_base.html:163
msgid "previous page"
msgstr ""
-#: stock/templates/stock/item_base.html:161
+#: stock/templates/stock/item_base.html:163
msgid "Navigate to previous serial number"
msgstr ""
-#: stock/templates/stock/item_base.html:170
+#: stock/templates/stock/item_base.html:172
msgid "next page"
msgstr ""
-#: stock/templates/stock/item_base.html:170
+#: stock/templates/stock/item_base.html:172
msgid "Navigate to next serial number"
msgstr ""
-#: stock/templates/stock/item_base.html:197
+#: stock/templates/stock/item_base.html:199
#, python-format
msgid "This StockItem expired on %(item.expiry_date)s"
msgstr ""
-#: stock/templates/stock/item_base.html:197
+#: stock/templates/stock/item_base.html:199
#: templates/js/translated/table_filters.js:252
msgid "Expired"
msgstr ""
-#: stock/templates/stock/item_base.html:199
+#: stock/templates/stock/item_base.html:201
#, python-format
msgid "This StockItem expires on %(item.expiry_date)s"
msgstr ""
-#: stock/templates/stock/item_base.html:199
+#: stock/templates/stock/item_base.html:201
#: templates/js/translated/table_filters.js:258
msgid "Stale"
msgstr ""
-#: stock/templates/stock/item_base.html:206
-#: templates/js/translated/stock.js:1722
+#: stock/templates/stock/item_base.html:208
+#: templates/js/translated/stock.js:1846
msgid "Last Updated"
msgstr ""
-#: stock/templates/stock/item_base.html:211
+#: stock/templates/stock/item_base.html:213
msgid "Last Stocktake"
msgstr ""
-#: stock/templates/stock/item_base.html:215
+#: stock/templates/stock/item_base.html:217
msgid "No stocktake performed"
msgstr ""
-#: stock/templates/stock/item_base.html:233
+#: stock/templates/stock/item_base.html:235
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:240
+#: stock/templates/stock/item_base.html:242
msgid "This stock item is in production and cannot be edited."
msgstr ""
-#: stock/templates/stock/item_base.html:241
+#: stock/templates/stock/item_base.html:243
msgid "Edit the stock item from the build view."
msgstr ""
-#: stock/templates/stock/item_base.html:254
+#: stock/templates/stock/item_base.html:256
msgid "This stock item has not passed all required tests"
msgstr ""
-#: stock/templates/stock/item_base.html:262
+#: stock/templates/stock/item_base.html:264
msgid "This stock item is allocated to Sales Order"
msgstr ""
-#: stock/templates/stock/item_base.html:270
+#: stock/templates/stock/item_base.html:272
msgid "This stock item is allocated to Build Order"
msgstr ""
-#: stock/templates/stock/item_base.html:276
+#: stock/templates/stock/item_base.html:278
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:317
-#: templates/js/translated/build.js:1095
+#: stock/templates/stock/item_base.html:319
+#: templates/js/translated/build.js:1317
msgid "No location set"
msgstr ""
-#: stock/templates/stock/item_base.html:324
+#: stock/templates/stock/item_base.html:326
msgid "Barcode Identifier"
msgstr ""
-#: stock/templates/stock/item_base.html:366
+#: stock/templates/stock/item_base.html:368
msgid "Parent Item"
msgstr ""
-#: stock/templates/stock/item_base.html:384
+#: stock/templates/stock/item_base.html:386
msgid "No manufacturer set"
msgstr ""
-#: stock/templates/stock/item_base.html:409
+#: stock/templates/stock/item_base.html:411
msgid "Tests"
msgstr ""
-#: stock/templates/stock/item_base.html:499
+#: stock/templates/stock/item_base.html:492
msgid "Edit Stock Status"
msgstr ""
@@ -6130,39 +6211,6 @@ msgstr ""
msgid "This will remove %(qty)s units of %(full_name)s from stock."
msgstr ""
-#: stock/templates/stock/item_install.html:8
-msgid "Install another Stock Item into this item."
-msgstr ""
-
-#: stock/templates/stock/item_install.html:11
-#: stock/templates/stock/item_install.html:24
-msgid "Stock items can only be installed if they meet the following criteria"
-msgstr ""
-
-#: stock/templates/stock/item_install.html:14
-msgid "The Stock Item links to a Part which is in the BOM for this Stock Item"
-msgstr ""
-
-#: stock/templates/stock/item_install.html:15
-msgid "The Stock Item is currently in stock"
-msgstr ""
-
-#: stock/templates/stock/item_install.html:16
-msgid "The Stock Item is serialized and does not belong to another item"
-msgstr ""
-
-#: stock/templates/stock/item_install.html:21
-msgid "Install this Stock Item in another stock item."
-msgstr ""
-
-#: stock/templates/stock/item_install.html:27
-msgid "The part associated to this Stock Item belongs to another part's BOM"
-msgstr ""
-
-#: stock/templates/stock/item_install.html:28
-msgid "This Stock Item is serialized and does not belong to another item"
-msgstr ""
-
#: stock/templates/stock/item_serialize.html:5
msgid "Create serialized items from this stock item."
msgstr ""
@@ -6247,7 +6295,7 @@ msgstr ""
msgid "The following stock items will be uninstalled"
msgstr ""
-#: stock/templates/stock/stockitem_convert.html:7 stock/views.py:879
+#: stock/templates/stock/stockitem_convert.html:7 stock/views.py:730
msgid "Convert Stock Item"
msgstr ""
@@ -6268,11 +6316,11 @@ msgstr ""
msgid "Are you sure you want to delete this stock tracking entry?"
msgstr ""
-#: stock/views.py:162 templates/js/translated/stock.js:139
+#: stock/views.py:162 templates/js/translated/stock.js:140
msgid "Edit Stock Location"
msgstr ""
-#: stock/views.py:269 stock/views.py:858 stock/views.py:984 stock/views.py:1266
+#: stock/views.py:269 stock/views.py:709 stock/views.py:835 stock/views.py:1117
msgid "Owner is required (ownership control is enabled)"
msgstr ""
@@ -6300,59 +6348,63 @@ msgstr ""
msgid "Confirm test data deletion"
msgstr ""
+#: stock/views.py:352
+msgid "Check the confirmation box"
+msgstr ""
+
#: stock/views.py:456
msgid "Stock Item QR Code"
msgstr ""
-#: stock/views.py:630
+#: stock/views.py:481
msgid "Uninstall Stock Items"
msgstr ""
-#: stock/views.py:727 templates/js/translated/stock.js:1074
+#: stock/views.py:578 templates/js/translated/stock.js:1075
msgid "Confirm stock adjustment"
msgstr ""
-#: stock/views.py:738
+#: stock/views.py:589
msgid "Uninstalled stock items"
msgstr ""
-#: stock/views.py:760 templates/js/translated/stock.js:332
+#: stock/views.py:611 templates/js/translated/stock.js:333
msgid "Edit Stock Item"
msgstr ""
-#: stock/views.py:910
+#: stock/views.py:761
msgid "Create new Stock Location"
msgstr ""
-#: stock/views.py:1011
+#: stock/views.py:862
msgid "Create new Stock Item"
msgstr ""
-#: stock/views.py:1153 templates/js/translated/stock.js:312
+#: stock/views.py:1004 templates/js/translated/stock.js:313
msgid "Duplicate Stock Item"
msgstr ""
-#: stock/views.py:1235
+#: stock/views.py:1086
msgid "Quantity cannot be negative"
msgstr ""
-#: stock/views.py:1335
+#: stock/views.py:1186
msgid "Delete Stock Location"
msgstr ""
-#: stock/views.py:1348
+#: stock/views.py:1199
msgid "Delete Stock Item"
msgstr ""
-#: stock/views.py:1359
+#: stock/views.py:1210
msgid "Delete Stock Tracking Entry"
msgstr ""
-#: stock/views.py:1366
+#: stock/views.py:1217
msgid "Edit Stock Tracking Entry"
msgstr ""
-#: stock/views.py:1375
+#: stock/views.py:1226
msgid "Add Stock Tracking Entry"
msgstr ""
@@ -6527,15 +6579,15 @@ msgstr ""
msgid "Part Settings"
msgstr ""
-#: templates/InvenTree/settings/part.html:43
+#: templates/InvenTree/settings/part.html:44
msgid "Part Import"
msgstr ""
-#: templates/InvenTree/settings/part.html:47
+#: templates/InvenTree/settings/part.html:48
msgid "Import Part"
msgstr ""
-#: templates/InvenTree/settings/part.html:61
+#: templates/InvenTree/settings/part.html:62
msgid "Part Parameter Templates"
msgstr ""
@@ -6663,45 +6715,45 @@ msgstr ""
msgid "Report Settings"
msgstr ""
-#: templates/InvenTree/settings/setting.html:30
+#: templates/InvenTree/settings/setting.html:33
msgid "No value set"
msgstr ""
-#: templates/InvenTree/settings/setting.html:41
+#: templates/InvenTree/settings/setting.html:38
msgid "Edit setting"
msgstr ""
-#: templates/InvenTree/settings/settings.html:78
+#: templates/InvenTree/settings/settings.html:115
msgid "Edit Plugin Setting"
msgstr ""
-#: templates/InvenTree/settings/settings.html:80
+#: templates/InvenTree/settings/settings.html:117
msgid "Edit Global Setting"
msgstr ""
-#: templates/InvenTree/settings/settings.html:82
+#: templates/InvenTree/settings/settings.html:119
msgid "Edit User Setting"
msgstr ""
-#: templates/InvenTree/settings/settings.html:171
+#: templates/InvenTree/settings/settings.html:208
msgid "No category parameter templates found"
msgstr ""
-#: templates/InvenTree/settings/settings.html:193
-#: templates/InvenTree/settings/settings.html:292
+#: templates/InvenTree/settings/settings.html:230
+#: templates/InvenTree/settings/settings.html:329
msgid "Edit Template"
msgstr ""
-#: templates/InvenTree/settings/settings.html:194
-#: templates/InvenTree/settings/settings.html:293
+#: templates/InvenTree/settings/settings.html:231
+#: templates/InvenTree/settings/settings.html:330
msgid "Delete Template"
msgstr ""
-#: templates/InvenTree/settings/settings.html:272
+#: templates/InvenTree/settings/settings.html:309
msgid "No part parameter templates found"
msgstr ""
-#: templates/InvenTree/settings/settings.html:276
+#: templates/InvenTree/settings/settings.html:313
msgid "ID"
msgstr ""
@@ -6996,10 +7048,11 @@ msgid "InvenTree Version Information"
msgstr ""
#: templates/about.html:11 templates/about.html:105
-#: templates/js/translated/bom.js:407 templates/js/translated/modals.js:53
-#: templates/js/translated/modals.js:584 templates/js/translated/modals.js:678
-#: templates/js/translated/modals.js:983 templates/modals.html:15
-#: templates/modals.html:27 templates/modals.html:39 templates/modals.html:50
+#: templates/js/translated/bom.js:132 templates/js/translated/bom.js:620
+#: templates/js/translated/modals.js:53 templates/js/translated/modals.js:584
+#: templates/js/translated/modals.js:678 templates/js/translated/modals.js:986
+#: templates/modals.html:15 templates/modals.html:27 templates/modals.html:39
+#: templates/modals.html:50
msgid "Close"
msgstr ""
@@ -7275,14 +7328,14 @@ msgid "The following parts are low on required stock"
msgstr ""
#: templates/email/build_order_required_stock.html:18
-#: templates/js/translated/bom.js:1117
+#: templates/js/translated/bom.js:1335
msgid "Required Quantity"
msgstr ""
#: templates/email/build_order_required_stock.html:19
#: templates/email/low_stock_notification.html:18
-#: templates/js/translated/bom.js:591 templates/js/translated/build.js:1189
-#: templates/js/translated/build.js:1810
+#: templates/js/translated/bom.js:804 templates/js/translated/build.js:1411
+#: templates/js/translated/build.js:2048
#: templates/js/translated/table_filters.js:178
msgid "Available"
msgstr ""
@@ -7325,11 +7378,11 @@ msgstr ""
msgid "Remote image must not exceed maximum allowable file size"
msgstr ""
-#: templates/js/translated/api.js:185 templates/js/translated/modals.js:1053
+#: templates/js/translated/api.js:185 templates/js/translated/modals.js:1056
msgid "No Response"
msgstr ""
-#: templates/js/translated/api.js:186 templates/js/translated/modals.js:1054
+#: templates/js/translated/api.js:186 templates/js/translated/modals.js:1057
msgid "No response from the InvenTree server"
msgstr ""
@@ -7341,27 +7394,27 @@ msgstr ""
msgid "API request returned error code 400"
msgstr ""
-#: templates/js/translated/api.js:197 templates/js/translated/modals.js:1063
+#: templates/js/translated/api.js:197 templates/js/translated/modals.js:1066
msgid "Error 401: Not Authenticated"
msgstr ""
-#: templates/js/translated/api.js:198 templates/js/translated/modals.js:1064
+#: templates/js/translated/api.js:198 templates/js/translated/modals.js:1067
msgid "Authentication credentials not supplied"
msgstr ""
-#: templates/js/translated/api.js:202 templates/js/translated/modals.js:1068
+#: templates/js/translated/api.js:202 templates/js/translated/modals.js:1071
msgid "Error 403: Permission Denied"
msgstr ""
-#: templates/js/translated/api.js:203 templates/js/translated/modals.js:1069
+#: templates/js/translated/api.js:203 templates/js/translated/modals.js:1072
msgid "You do not have the required permissions to access this function"
msgstr ""
-#: templates/js/translated/api.js:207 templates/js/translated/modals.js:1073
+#: templates/js/translated/api.js:207 templates/js/translated/modals.js:1076
msgid "Error 404: Resource Not Found"
msgstr ""
-#: templates/js/translated/api.js:208 templates/js/translated/modals.js:1074
+#: templates/js/translated/api.js:208 templates/js/translated/modals.js:1077
msgid "The requested resource could not be located on the server"
msgstr ""
@@ -7373,11 +7426,11 @@ msgstr ""
msgid "HTTP method not allowed at URL"
msgstr ""
-#: templates/js/translated/api.js:217 templates/js/translated/modals.js:1078
+#: templates/js/translated/api.js:217 templates/js/translated/modals.js:1081
msgid "Error 408: Timeout"
msgstr ""
-#: templates/js/translated/api.js:218 templates/js/translated/modals.js:1079
+#: templates/js/translated/api.js:218 templates/js/translated/modals.js:1082
msgid "Connection timeout while requesting data from server"
msgstr ""
@@ -7446,7 +7499,7 @@ msgid "Unknown response from server"
msgstr ""
#: templates/js/translated/barcode.js:140
-#: templates/js/translated/modals.js:1043
+#: templates/js/translated/modals.js:1046
msgid "Invalid server response"
msgstr ""
@@ -7474,7 +7527,7 @@ msgstr ""
msgid "Unlink"
msgstr ""
-#: templates/js/translated/barcode.js:397 templates/js/translated/stock.js:1026
+#: templates/js/translated/barcode.js:397 templates/js/translated/stock.js:1027
msgid "Remove stock item"
msgstr ""
@@ -7516,327 +7569,369 @@ msgstr ""
msgid "Barcode does not match a valid location"
msgstr ""
-#: templates/js/translated/bom.js:36
+#: templates/js/translated/bom.js:75
+msgid "Display row data"
+msgstr ""
+
+#: templates/js/translated/bom.js:131
+msgid "Row Data"
+msgstr ""
+
+#: templates/js/translated/bom.js:249
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:518
+#: templates/js/translated/bom.js:252 templates/js/translated/bom.js:286
+#: templates/js/translated/order.js:369 templates/js/translated/stock.js:519
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:519
+#: templates/js/translated/bom.js:253 templates/js/translated/bom.js:287
+#: templates/js/translated/order.js:370 templates/js/translated/stock.js:520
msgid "Select file format"
msgstr ""
-#: templates/js/translated/bom.js:81
+#: templates/js/translated/bom.js:294
msgid "Cascading"
msgstr ""
-#: templates/js/translated/bom.js:82
+#: templates/js/translated/bom.js:295
msgid "Download cascading / multi-level BOM"
msgstr ""
-#: templates/js/translated/bom.js:87
+#: templates/js/translated/bom.js:300
msgid "Levels"
msgstr ""
-#: templates/js/translated/bom.js:88
+#: templates/js/translated/bom.js:301
msgid "Select maximum number of BOM levels to export (0 = all levels)"
msgstr ""
-#: templates/js/translated/bom.js:94
+#: templates/js/translated/bom.js:307
msgid "Include Parameter Data"
msgstr ""
-#: templates/js/translated/bom.js:95
+#: templates/js/translated/bom.js:308
msgid "Include part parameter data in exported BOM"
msgstr ""
-#: templates/js/translated/bom.js:100
+#: templates/js/translated/bom.js:313
msgid "Include Stock Data"
msgstr ""
-#: templates/js/translated/bom.js:101
+#: templates/js/translated/bom.js:314
msgid "Include part stock data in exported BOM"
msgstr ""
-#: templates/js/translated/bom.js:106
+#: templates/js/translated/bom.js:319
msgid "Include Manufacturer Data"
msgstr ""
-#: templates/js/translated/bom.js:107
+#: templates/js/translated/bom.js:320
msgid "Include part manufacturer data in exported BOM"
msgstr ""
-#: templates/js/translated/bom.js:112
+#: templates/js/translated/bom.js:325
msgid "Include Supplier Data"
msgstr ""
-#: templates/js/translated/bom.js:113
+#: templates/js/translated/bom.js:326
msgid "Include part supplier data in exported BOM"
msgstr ""
-#: templates/js/translated/bom.js:296
+#: templates/js/translated/bom.js:509
msgid "Remove substitute part"
msgstr ""
-#: templates/js/translated/bom.js:352
+#: templates/js/translated/bom.js:565
msgid "Select and add a new substitute part using the input below"
msgstr ""
-#: templates/js/translated/bom.js:363
+#: templates/js/translated/bom.js:576
msgid "Are you sure you wish to remove this substitute part link?"
msgstr ""
-#: templates/js/translated/bom.js:369
+#: templates/js/translated/bom.js:582
msgid "Remove Substitute Part"
msgstr ""
-#: templates/js/translated/bom.js:408
+#: templates/js/translated/bom.js:621
msgid "Add Substitute"
msgstr ""
-#: templates/js/translated/bom.js:409
+#: templates/js/translated/bom.js:622
msgid "Edit BOM Item Substitutes"
msgstr ""
-#: templates/js/translated/bom.js:528
+#: templates/js/translated/bom.js:741
msgid "Substitutes Available"
msgstr ""
-#: templates/js/translated/bom.js:532 templates/js/translated/build.js:1171
+#: templates/js/translated/bom.js:745 templates/js/translated/build.js:1393
msgid "Variant stock allowed"
msgstr ""
-#: templates/js/translated/bom.js:537
+#: templates/js/translated/bom.js:750
msgid "Open subassembly"
msgstr ""
-#: templates/js/translated/bom.js:609
+#: templates/js/translated/bom.js:822
msgid "Substitutes"
msgstr ""
-#: templates/js/translated/bom.js:624
+#: templates/js/translated/bom.js:837
msgid "Purchase Price Range"
msgstr ""
-#: templates/js/translated/bom.js:631
+#: templates/js/translated/bom.js:844
msgid "Purchase Price Average"
msgstr ""
-#: templates/js/translated/bom.js:680 templates/js/translated/bom.js:769
+#: templates/js/translated/bom.js:893 templates/js/translated/bom.js:982
msgid "View BOM"
msgstr ""
-#: templates/js/translated/bom.js:740
+#: templates/js/translated/bom.js:953
msgid "Validate BOM Item"
msgstr ""
-#: templates/js/translated/bom.js:742
+#: templates/js/translated/bom.js:955
msgid "This line has been validated"
msgstr ""
-#: templates/js/translated/bom.js:744
+#: templates/js/translated/bom.js:957
msgid "Edit substitute parts"
msgstr ""
-#: templates/js/translated/bom.js:746 templates/js/translated/bom.js:920
+#: templates/js/translated/bom.js:959 templates/js/translated/bom.js:1138
msgid "Edit BOM Item"
msgstr ""
-#: templates/js/translated/bom.js:748 templates/js/translated/bom.js:903
+#: templates/js/translated/bom.js:961 templates/js/translated/bom.js:1121
msgid "Delete BOM Item"
msgstr ""
-#: templates/js/translated/bom.js:842 templates/js/translated/build.js:915
+#: templates/js/translated/bom.js:1060 templates/js/translated/build.js:1137
msgid "No BOM items found"
msgstr ""
-#: templates/js/translated/bom.js:898
+#: templates/js/translated/bom.js:1116
msgid "Are you sure you want to delete this BOM item?"
msgstr ""
-#: templates/js/translated/bom.js:1100 templates/js/translated/build.js:1155
+#: templates/js/translated/bom.js:1318 templates/js/translated/build.js:1377
msgid "Required Part"
msgstr ""
-#: templates/js/translated/bom.js:1122
+#: templates/js/translated/bom.js:1340
msgid "Inherited from parent BOM"
msgstr ""
-#: templates/js/translated/build.js:84
+#: templates/js/translated/build.js:85
msgid "Edit Build Order"
msgstr ""
-#: templates/js/translated/build.js:118
+#: templates/js/translated/build.js:119
msgid "Create Build Order"
msgstr ""
-#: templates/js/translated/build.js:139
+#: templates/js/translated/build.js:140
msgid "Build order is ready to be completed"
msgstr ""
-#: templates/js/translated/build.js:144
+#: templates/js/translated/build.js:145
msgid "Build Order is incomplete"
msgstr ""
-#: templates/js/translated/build.js:172
+#: templates/js/translated/build.js:173
msgid "Complete Build Order"
msgstr ""
-#: templates/js/translated/build.js:193
+#: templates/js/translated/build.js:214 templates/js/translated/stock.js:93
+#: templates/js/translated/stock.js:182
+msgid "Next available serial number"
+msgstr ""
+
+#: templates/js/translated/build.js:216 templates/js/translated/stock.js:95
+#: templates/js/translated/stock.js:184
+msgid "Latest serial number"
+msgstr ""
+
+#: templates/js/translated/build.js:225
+msgid "The Bill of Materials contains trackable parts"
+msgstr ""
+
+#: templates/js/translated/build.js:226
+msgid "Build outputs must be generated individually"
+msgstr ""
+
+#: templates/js/translated/build.js:234
+msgid "Trackable parts can have serial numbers specified"
+msgstr ""
+
+#: templates/js/translated/build.js:235
+msgid "Enter serial numbers to generate multiple single build outputs"
+msgstr ""
+
+#: templates/js/translated/build.js:242
+msgid "Create Build Output"
+msgstr ""
+
+#: templates/js/translated/build.js:273
msgid "Allocate stock items to this build output"
msgstr ""
-#: templates/js/translated/build.js:204
+#: templates/js/translated/build.js:284
msgid "Unallocate stock from build output"
msgstr ""
-#: templates/js/translated/build.js:213
+#: templates/js/translated/build.js:293
msgid "Complete build output"
msgstr ""
-#: templates/js/translated/build.js:221
+#: templates/js/translated/build.js:301
msgid "Delete build output"
msgstr ""
-#: templates/js/translated/build.js:244
+#: templates/js/translated/build.js:324
msgid "Are you sure you wish to unallocate stock items from this build?"
msgstr ""
-#: templates/js/translated/build.js:262
+#: templates/js/translated/build.js:342
msgid "Unallocate Stock Items"
msgstr ""
-#: templates/js/translated/build.js:280
+#: templates/js/translated/build.js:360 templates/js/translated/build.js:508
msgid "Select Build Outputs"
msgstr ""
-#: templates/js/translated/build.js:281
+#: templates/js/translated/build.js:361 templates/js/translated/build.js:509
msgid "At least one build output must be selected"
msgstr ""
-#: templates/js/translated/build.js:335
+#: templates/js/translated/build.js:415 templates/js/translated/build.js:563
msgid "Output"
msgstr ""
-#: templates/js/translated/build.js:351
+#: templates/js/translated/build.js:431
msgid "Complete Build Outputs"
msgstr ""
-#: templates/js/translated/build.js:446
+#: templates/js/translated/build.js:576
+msgid "Delete Build Outputs"
+msgstr ""
+
+#: templates/js/translated/build.js:665
msgid "No build order allocations found"
msgstr ""
-#: templates/js/translated/build.js:484 templates/js/translated/order.js:1848
+#: templates/js/translated/build.js:703 templates/js/translated/order.js:1848
msgid "Location not specified"
msgstr ""
-#: templates/js/translated/build.js:663
+#: templates/js/translated/build.js:885
msgid "No active build outputs found"
msgstr ""
-#: templates/js/translated/build.js:1112 templates/js/translated/build.js:1821
+#: templates/js/translated/build.js:1334 templates/js/translated/build.js:2059
#: templates/js/translated/order.js:1982
msgid "Edit stock allocation"
msgstr ""
-#: templates/js/translated/build.js:1114 templates/js/translated/build.js:1822
+#: templates/js/translated/build.js:1336 templates/js/translated/build.js:2060
#: templates/js/translated/order.js:1983
msgid "Delete stock allocation"
msgstr ""
-#: templates/js/translated/build.js:1132
+#: templates/js/translated/build.js:1354
msgid "Edit Allocation"
msgstr ""
-#: templates/js/translated/build.js:1142
+#: templates/js/translated/build.js:1364
msgid "Remove Allocation"
msgstr ""
-#: templates/js/translated/build.js:1167
+#: templates/js/translated/build.js:1389
msgid "Substitute parts available"
msgstr ""
-#: templates/js/translated/build.js:1184
+#: templates/js/translated/build.js:1406
msgid "Quantity Per"
msgstr ""
-#: templates/js/translated/build.js:1194 templates/js/translated/build.js:1420
-#: templates/js/translated/build.js:1817 templates/js/translated/order.js:2227
+#: templates/js/translated/build.js:1416 templates/js/translated/build.js:1656
+#: templates/js/translated/build.js:2055 templates/js/translated/order.js:2227
msgid "Allocated"
msgstr ""
-#: templates/js/translated/build.js:1250 templates/js/translated/order.js:2307
+#: templates/js/translated/build.js:1472 templates/js/translated/order.js:2307
msgid "Build stock"
msgstr ""
-#: templates/js/translated/build.js:1254 templates/stock_table.html:53
+#: templates/js/translated/build.js:1476 templates/stock_table.html:53
msgid "Order stock"
msgstr ""
-#: templates/js/translated/build.js:1257 templates/js/translated/order.js:2300
+#: templates/js/translated/build.js:1479 templates/js/translated/order.js:2300
msgid "Allocate stock"
msgstr ""
-#: templates/js/translated/build.js:1322 templates/js/translated/order.js:1499
+#: templates/js/translated/build.js:1558 templates/js/translated/order.js:1499
msgid "Specify stock allocation quantity"
msgstr ""
-#: templates/js/translated/build.js:1393 templates/js/translated/label.js:134
+#: templates/js/translated/build.js:1629 templates/js/translated/label.js:134
#: templates/js/translated/order.js:1550 templates/js/translated/report.js:225
msgid "Select Parts"
msgstr ""
-#: templates/js/translated/build.js:1394 templates/js/translated/order.js:1551
+#: templates/js/translated/build.js:1630 templates/js/translated/order.js:1551
msgid "You must select at least one part to allocate"
msgstr ""
-#: templates/js/translated/build.js:1408 templates/js/translated/order.js:1565
+#: templates/js/translated/build.js:1644 templates/js/translated/order.js:1565
msgid "Select source location (leave blank to take from all locations)"
msgstr ""
-#: templates/js/translated/build.js:1437 templates/js/translated/order.js:1600
+#: templates/js/translated/build.js:1673 templates/js/translated/order.js:1600
msgid "Confirm stock allocation"
msgstr ""
-#: templates/js/translated/build.js:1438
+#: templates/js/translated/build.js:1674
msgid "Allocate Stock Items to Build Order"
msgstr ""
-#: templates/js/translated/build.js:1449 templates/js/translated/order.js:1613
+#: templates/js/translated/build.js:1685 templates/js/translated/order.js:1613
msgid "No matching stock locations"
msgstr ""
-#: templates/js/translated/build.js:1519 templates/js/translated/order.js:1690
+#: templates/js/translated/build.js:1757 templates/js/translated/order.js:1690
msgid "No matching stock items"
msgstr ""
-#: templates/js/translated/build.js:1637
+#: templates/js/translated/build.js:1875
msgid "No builds matching query"
msgstr ""
-#: templates/js/translated/build.js:1654 templates/js/translated/part.js:1213
-#: templates/js/translated/part.js:1624 templates/js/translated/stock.js:1520
-#: templates/js/translated/stock.js:2479
+#: templates/js/translated/build.js:1892 templates/js/translated/part.js:1213
+#: templates/js/translated/part.js:1624 templates/js/translated/stock.js:1644
+#: templates/js/translated/stock.js:2603
msgid "Select"
msgstr ""
-#: templates/js/translated/build.js:1674
+#: templates/js/translated/build.js:1912
msgid "Build order is overdue"
msgstr ""
-#: templates/js/translated/build.js:1735 templates/js/translated/stock.js:2698
+#: templates/js/translated/build.js:1973 templates/js/translated/stock.js:2822
msgid "No user information"
msgstr ""
-#: templates/js/translated/build.js:1747
+#: templates/js/translated/build.js:1985
msgid "No information"
msgstr ""
-#: templates/js/translated/build.js:1798
+#: templates/js/translated/build.js:2036
msgid "No parts allocated for"
msgstr ""
@@ -7966,48 +8061,60 @@ msgstr ""
msgid "Create filter"
msgstr ""
-#: templates/js/translated/forms.js:350 templates/js/translated/forms.js:365
-#: templates/js/translated/forms.js:379 templates/js/translated/forms.js:393
+#: templates/js/translated/forms.js:351 templates/js/translated/forms.js:366
+#: templates/js/translated/forms.js:380 templates/js/translated/forms.js:394
msgid "Action Prohibited"
msgstr ""
-#: templates/js/translated/forms.js:352
+#: templates/js/translated/forms.js:353
msgid "Create operation not allowed"
msgstr ""
-#: templates/js/translated/forms.js:367
+#: templates/js/translated/forms.js:368
msgid "Update operation not allowed"
msgstr ""
-#: templates/js/translated/forms.js:381
+#: templates/js/translated/forms.js:382
msgid "Delete operation not allowed"
msgstr ""
-#: templates/js/translated/forms.js:395
+#: templates/js/translated/forms.js:396
msgid "View operation not allowed"
msgstr ""
-#: templates/js/translated/forms.js:680
+#: templates/js/translated/forms.js:681
msgid "Enter a valid number"
msgstr ""
-#: templates/js/translated/forms.js:1082 templates/modals.html:19
+#: templates/js/translated/forms.js:1129 templates/modals.html:19
#: templates/modals.html:43
msgid "Form errors exist"
msgstr ""
-#: templates/js/translated/forms.js:1487
+#: templates/js/translated/forms.js:1558
msgid "No results found"
msgstr ""
-#: templates/js/translated/forms.js:1691
+#: templates/js/translated/forms.js:1768
msgid "Searching"
msgstr ""
-#: templates/js/translated/forms.js:1930
+#: templates/js/translated/forms.js:2013
msgid "Clear input"
msgstr ""
+#: templates/js/translated/forms.js:2479
+msgid "File Column"
+msgstr ""
+
+#: templates/js/translated/forms.js:2479
+msgid "Field Name"
+msgstr ""
+
+#: templates/js/translated/forms.js:2491
+msgid "Select Columns"
+msgstr ""
+
#: templates/js/translated/helpers.js:19
msgid "YES"
msgstr ""
@@ -8017,7 +8124,7 @@ msgid "NO"
msgstr ""
#: templates/js/translated/label.js:29 templates/js/translated/report.js:118
-#: templates/js/translated/stock.js:1050
+#: templates/js/translated/stock.js:1051
msgid "Select Stock Items"
msgstr ""
@@ -8072,7 +8179,7 @@ msgid "Cancel"
msgstr ""
#: templates/js/translated/modals.js:77 templates/js/translated/modals.js:119
-#: templates/js/translated/modals.js:677 templates/js/translated/modals.js:982
+#: templates/js/translated/modals.js:677 templates/js/translated/modals.js:985
#: templates/modals.html:28 templates/modals.html:51
msgid "Submit"
msgstr ""
@@ -8097,31 +8204,31 @@ msgstr ""
msgid "Loading Data"
msgstr ""
-#: templates/js/translated/modals.js:934
+#: templates/js/translated/modals.js:937
msgid "Invalid response from server"
msgstr ""
-#: templates/js/translated/modals.js:934
+#: templates/js/translated/modals.js:937
msgid "Form data missing from server response"
msgstr ""
-#: templates/js/translated/modals.js:946
+#: templates/js/translated/modals.js:949
msgid "Error posting form data"
msgstr ""
-#: templates/js/translated/modals.js:1043
+#: templates/js/translated/modals.js:1046
msgid "JSON response missing form data"
msgstr ""
-#: templates/js/translated/modals.js:1058
+#: templates/js/translated/modals.js:1061
msgid "Error 400: Bad Request"
msgstr ""
-#: templates/js/translated/modals.js:1059
+#: templates/js/translated/modals.js:1062
msgid "Server returned error code 400"
msgstr ""
-#: templates/js/translated/modals.js:1082
+#: templates/js/translated/modals.js:1085
msgid "Error requesting form data"
msgstr ""
@@ -8141,10 +8248,6 @@ msgstr ""
msgid "Build ID"
msgstr ""
-#: templates/js/translated/model_renderers.js:182
-msgid "Part ID"
-msgstr ""
-
#: templates/js/translated/model_renderers.js:249
#: templates/js/translated/model_renderers.js:270
msgid "Order ID"
@@ -8210,7 +8313,7 @@ msgstr ""
msgid "Quantity to receive"
msgstr ""
-#: templates/js/translated/order.js:520 templates/js/translated/stock.js:2131
+#: templates/js/translated/order.js:520 templates/js/translated/stock.js:2255
msgid "Stock Status"
msgstr ""
@@ -8344,7 +8447,7 @@ msgid "Delete Stock Allocation"
msgstr ""
#: templates/js/translated/order.js:1959 templates/js/translated/order.js:2048
-#: templates/js/translated/stock.js:1436
+#: templates/js/translated/stock.js:1560
msgid "Shipped to customer"
msgstr ""
@@ -8545,12 +8648,12 @@ msgid "No category"
msgstr ""
#: templates/js/translated/part.js:1296
-#: templates/js/translated/table_filters.js:430
+#: templates/js/translated/table_filters.js:425
msgid "Low stock"
msgstr ""
#: templates/js/translated/part.js:1387 templates/js/translated/part.js:1559
-#: templates/js/translated/stock.js:2440
+#: templates/js/translated/stock.js:2564
msgid "Display as list"
msgstr ""
@@ -8558,7 +8661,7 @@ msgstr ""
msgid "Display as grid"
msgstr ""
-#: templates/js/translated/part.js:1578 templates/js/translated/stock.js:2459
+#: templates/js/translated/part.js:1578 templates/js/translated/stock.js:2583
msgid "Display as tree"
msgstr ""
@@ -8566,7 +8669,7 @@ msgstr ""
msgid "Subscribed category"
msgstr ""
-#: templates/js/translated/part.js:1656 templates/js/translated/stock.js:2503
+#: templates/js/translated/part.js:1656 templates/js/translated/stock.js:2627
msgid "Path"
msgstr ""
@@ -8574,11 +8677,12 @@ msgstr ""
msgid "No test templates matching query"
msgstr ""
-#: templates/js/translated/part.js:1751 templates/js/translated/stock.js:1242
+#: templates/js/translated/part.js:1751 templates/js/translated/stock.js:1271
msgid "Edit test result"
msgstr ""
-#: templates/js/translated/part.js:1752 templates/js/translated/stock.js:1243
+#: templates/js/translated/part.js:1752 templates/js/translated/stock.js:1272
+#: templates/js/translated/stock.js:1518
msgid "Delete test result"
msgstr ""
@@ -8687,347 +8791,375 @@ msgstr ""
msgid "Sales Order(s) must be selected before printing report"
msgstr ""
-#: templates/js/translated/stock.js:74
+#: templates/js/translated/stock.js:75
msgid "Serialize Stock Item"
msgstr ""
-#: templates/js/translated/stock.js:92 templates/js/translated/stock.js:181
-msgid "Next available serial number"
-msgstr ""
-
-#: templates/js/translated/stock.js:94 templates/js/translated/stock.js:183
-msgid "Latest serial number"
-msgstr ""
-
-#: templates/js/translated/stock.js:102
+#: templates/js/translated/stock.js:103
msgid "Confirm Stock Serialization"
msgstr ""
-#: templates/js/translated/stock.js:111
+#: templates/js/translated/stock.js:112
msgid "Parent stock location"
msgstr ""
-#: templates/js/translated/stock.js:154
+#: templates/js/translated/stock.js:155
msgid "New Stock Location"
msgstr ""
-#: templates/js/translated/stock.js:194
+#: templates/js/translated/stock.js:195
msgid "This part cannot be serialized"
msgstr ""
-#: templates/js/translated/stock.js:233
+#: templates/js/translated/stock.js:234
msgid "Enter initial quantity for this stock item"
msgstr ""
-#: templates/js/translated/stock.js:239
+#: templates/js/translated/stock.js:240
msgid "Enter serial numbers for new stock (or leave blank)"
msgstr ""
-#: templates/js/translated/stock.js:382
+#: templates/js/translated/stock.js:383
msgid "Created new stock item"
msgstr ""
-#: templates/js/translated/stock.js:395
+#: templates/js/translated/stock.js:396
msgid "Created multiple stock items"
msgstr ""
-#: templates/js/translated/stock.js:420
+#: templates/js/translated/stock.js:421
msgid "Find Serial Number"
msgstr ""
-#: templates/js/translated/stock.js:424 templates/js/translated/stock.js:425
+#: templates/js/translated/stock.js:425 templates/js/translated/stock.js:426
msgid "Enter serial number"
msgstr ""
-#: templates/js/translated/stock.js:441
+#: templates/js/translated/stock.js:442
msgid "Enter a serial number"
msgstr ""
-#: templates/js/translated/stock.js:461
+#: templates/js/translated/stock.js:462
msgid "No matching serial number"
msgstr ""
-#: templates/js/translated/stock.js:470
+#: templates/js/translated/stock.js:471
msgid "More than one matching result found"
msgstr ""
-#: templates/js/translated/stock.js:515
+#: templates/js/translated/stock.js:516
msgid "Export Stock"
msgstr ""
-#: templates/js/translated/stock.js:526
+#: templates/js/translated/stock.js:527
msgid "Include Sublocations"
msgstr ""
-#: templates/js/translated/stock.js:527
+#: templates/js/translated/stock.js:528
msgid "Include stock items in sublocations"
msgstr ""
-#: templates/js/translated/stock.js:636
+#: templates/js/translated/stock.js:637
msgid "Confirm stock assignment"
msgstr ""
-#: templates/js/translated/stock.js:637
+#: templates/js/translated/stock.js:638
msgid "Assign Stock to Customer"
msgstr ""
-#: templates/js/translated/stock.js:714
+#: templates/js/translated/stock.js:715
msgid "Warning: Merge operation cannot be reversed"
msgstr ""
-#: templates/js/translated/stock.js:715
+#: templates/js/translated/stock.js:716
msgid "Some information will be lost when merging stock items"
msgstr ""
-#: templates/js/translated/stock.js:717
+#: templates/js/translated/stock.js:718
msgid "Stock transaction history will be deleted for merged items"
msgstr ""
-#: templates/js/translated/stock.js:718
+#: templates/js/translated/stock.js:719
msgid "Supplier part information will be deleted for merged items"
msgstr ""
-#: templates/js/translated/stock.js:804
+#: templates/js/translated/stock.js:805
msgid "Confirm stock item merge"
msgstr ""
-#: templates/js/translated/stock.js:805
+#: templates/js/translated/stock.js:806
msgid "Merge Stock Items"
msgstr ""
-#: templates/js/translated/stock.js:900
+#: templates/js/translated/stock.js:901
msgid "Transfer Stock"
msgstr ""
-#: templates/js/translated/stock.js:901
+#: templates/js/translated/stock.js:902
msgid "Move"
msgstr ""
-#: templates/js/translated/stock.js:907
+#: templates/js/translated/stock.js:908
msgid "Count Stock"
msgstr ""
-#: templates/js/translated/stock.js:908
+#: templates/js/translated/stock.js:909
msgid "Count"
msgstr ""
-#: templates/js/translated/stock.js:912
+#: templates/js/translated/stock.js:913
msgid "Remove Stock"
msgstr ""
-#: templates/js/translated/stock.js:913
+#: templates/js/translated/stock.js:914
msgid "Take"
msgstr ""
-#: templates/js/translated/stock.js:917
+#: templates/js/translated/stock.js:918
msgid "Add Stock"
msgstr ""
-#: templates/js/translated/stock.js:918 users/models.py:208
+#: templates/js/translated/stock.js:919 users/models.py:213
msgid "Add"
msgstr ""
-#: templates/js/translated/stock.js:922 templates/stock_table.html:58
+#: templates/js/translated/stock.js:923 templates/stock_table.html:58
msgid "Delete Stock"
msgstr ""
-#: templates/js/translated/stock.js:1011
+#: templates/js/translated/stock.js:1012
msgid "Quantity cannot be adjusted for serialized stock"
msgstr ""
-#: templates/js/translated/stock.js:1011
+#: templates/js/translated/stock.js:1012
msgid "Specify stock quantity"
msgstr ""
-#: templates/js/translated/stock.js:1051
+#: templates/js/translated/stock.js:1052
msgid "You must select at least one available stock item"
msgstr ""
-#: templates/js/translated/stock.js:1209
+#: templates/js/translated/stock.js:1210
msgid "PASS"
msgstr ""
-#: templates/js/translated/stock.js:1211
+#: templates/js/translated/stock.js:1212
msgid "FAIL"
msgstr ""
-#: templates/js/translated/stock.js:1216
+#: templates/js/translated/stock.js:1217
msgid "NO RESULT"
msgstr ""
-#: templates/js/translated/stock.js:1238
+#: templates/js/translated/stock.js:1264
+msgid "Pass test"
+msgstr ""
+
+#: templates/js/translated/stock.js:1267
msgid "Add test result"
msgstr ""
-#: templates/js/translated/stock.js:1264
+#: templates/js/translated/stock.js:1293
msgid "No test results found"
msgstr ""
-#: templates/js/translated/stock.js:1321
+#: templates/js/translated/stock.js:1349
msgid "Test Date"
msgstr ""
-#: templates/js/translated/stock.js:1428
+#: templates/js/translated/stock.js:1501
+msgid "Edit Test Result"
+msgstr ""
+
+#: templates/js/translated/stock.js:1523
+msgid "Delete Test Result"
+msgstr ""
+
+#: templates/js/translated/stock.js:1552
msgid "In production"
msgstr ""
-#: templates/js/translated/stock.js:1432
+#: templates/js/translated/stock.js:1556
msgid "Installed in Stock Item"
msgstr ""
-#: templates/js/translated/stock.js:1440
+#: templates/js/translated/stock.js:1564
msgid "Assigned to Sales Order"
msgstr ""
-#: templates/js/translated/stock.js:1446
+#: templates/js/translated/stock.js:1570
msgid "No stock location set"
msgstr ""
-#: templates/js/translated/stock.js:1604
+#: templates/js/translated/stock.js:1728
msgid "Stock item is in production"
msgstr ""
-#: templates/js/translated/stock.js:1609
+#: templates/js/translated/stock.js:1733
msgid "Stock item assigned to sales order"
msgstr ""
-#: templates/js/translated/stock.js:1612
+#: templates/js/translated/stock.js:1736
msgid "Stock item assigned to customer"
msgstr ""
-#: templates/js/translated/stock.js:1616
+#: templates/js/translated/stock.js:1740
msgid "Stock item has expired"
msgstr ""
-#: templates/js/translated/stock.js:1618
+#: templates/js/translated/stock.js:1742
msgid "Stock item will expire soon"
msgstr ""
-#: templates/js/translated/stock.js:1624
+#: templates/js/translated/stock.js:1748
msgid "Serialized stock item has been allocated"
msgstr ""
-#: templates/js/translated/stock.js:1626
+#: templates/js/translated/stock.js:1750
msgid "Stock item has been fully allocated"
msgstr ""
-#: templates/js/translated/stock.js:1628
+#: templates/js/translated/stock.js:1752
msgid "Stock item has been partially allocated"
msgstr ""
-#: templates/js/translated/stock.js:1633
+#: templates/js/translated/stock.js:1757
msgid "Stock item has been installed in another item"
msgstr ""
-#: templates/js/translated/stock.js:1640
+#: templates/js/translated/stock.js:1764
msgid "Stock item has been rejected"
msgstr ""
-#: templates/js/translated/stock.js:1642
+#: templates/js/translated/stock.js:1766
msgid "Stock item is lost"
msgstr ""
-#: templates/js/translated/stock.js:1644
+#: templates/js/translated/stock.js:1768
msgid "Stock item is destroyed"
msgstr ""
-#: templates/js/translated/stock.js:1648
+#: templates/js/translated/stock.js:1772
#: templates/js/translated/table_filters.js:188
msgid "Depleted"
msgstr ""
-#: templates/js/translated/stock.js:1698
+#: templates/js/translated/stock.js:1822
msgid "Stocktake"
msgstr ""
-#: templates/js/translated/stock.js:1771
+#: templates/js/translated/stock.js:1895
msgid "Supplier part not specified"
msgstr ""
-#: templates/js/translated/stock.js:1809
+#: templates/js/translated/stock.js:1933
msgid "No stock items matching query"
msgstr ""
-#: templates/js/translated/stock.js:1830 templates/js/translated/stock.js:1878
+#: templates/js/translated/stock.js:1954 templates/js/translated/stock.js:2002
msgid "items"
msgstr ""
-#: templates/js/translated/stock.js:1918
+#: templates/js/translated/stock.js:2042
msgid "batches"
msgstr ""
-#: templates/js/translated/stock.js:1945
+#: templates/js/translated/stock.js:2069
msgid "locations"
msgstr ""
-#: templates/js/translated/stock.js:1947
+#: templates/js/translated/stock.js:2071
msgid "Undefined location"
msgstr ""
-#: templates/js/translated/stock.js:2146
+#: templates/js/translated/stock.js:2270
msgid "Set Stock Status"
msgstr ""
-#: templates/js/translated/stock.js:2160
+#: templates/js/translated/stock.js:2284
msgid "Select Status Code"
msgstr ""
-#: templates/js/translated/stock.js:2161
+#: templates/js/translated/stock.js:2285
msgid "Status code must be selected"
msgstr ""
-#: templates/js/translated/stock.js:2340
+#: templates/js/translated/stock.js:2464
msgid "Allocated Quantity"
msgstr ""
-#: templates/js/translated/stock.js:2535
+#: templates/js/translated/stock.js:2659
msgid "Invalid date"
msgstr ""
-#: templates/js/translated/stock.js:2557
+#: templates/js/translated/stock.js:2681
msgid "Details"
msgstr ""
-#: templates/js/translated/stock.js:2582
+#: templates/js/translated/stock.js:2706
msgid "Location no longer exists"
msgstr ""
-#: templates/js/translated/stock.js:2601
+#: templates/js/translated/stock.js:2725
msgid "Purchase order no longer exists"
msgstr ""
-#: templates/js/translated/stock.js:2620
+#: templates/js/translated/stock.js:2744
msgid "Customer no longer exists"
msgstr ""
-#: templates/js/translated/stock.js:2638
+#: templates/js/translated/stock.js:2762
msgid "Stock item no longer exists"
msgstr ""
-#: templates/js/translated/stock.js:2661
+#: templates/js/translated/stock.js:2785
msgid "Added"
msgstr ""
-#: templates/js/translated/stock.js:2669
+#: templates/js/translated/stock.js:2793
msgid "Removed"
msgstr ""
-#: templates/js/translated/stock.js:2710
+#: templates/js/translated/stock.js:2834
msgid "Edit tracking entry"
msgstr ""
-#: templates/js/translated/stock.js:2711
+#: templates/js/translated/stock.js:2835
msgid "Delete tracking entry"
msgstr ""
-#: templates/js/translated/stock.js:2762
+#: templates/js/translated/stock.js:2886
msgid "No installed items"
msgstr ""
-#: templates/js/translated/stock.js:2813
+#: templates/js/translated/stock.js:2937
msgid "Uninstall Stock Item"
msgstr ""
+#: templates/js/translated/stock.js:2973
+msgid "Install another stock item into this item"
+msgstr ""
+
+#: templates/js/translated/stock.js:2974
+msgid "Stock items can only be installed if they meet the following criteria"
+msgstr ""
+
+#: templates/js/translated/stock.js:2976
+msgid "The Stock Item links to a Part which is the BOM for this Stock Item"
+msgstr ""
+
+#: templates/js/translated/stock.js:2977
+msgid "The Stock Item is currently available in stock"
+msgstr ""
+
+#: templates/js/translated/stock.js:2978
+msgid "The Stock Item is serialized and does not belong to another item"
+msgstr ""
+
+#: templates/js/translated/stock.js:2991
+msgid "Select part to install"
+msgstr ""
+
#: templates/js/translated/table_filters.js:56
msgid "Trackable Part"
msgstr ""
@@ -9055,12 +9187,12 @@ msgstr ""
#: templates/js/translated/table_filters.js:121
#: templates/js/translated/table_filters.js:122
-#: templates/js/translated/table_filters.js:407
+#: templates/js/translated/table_filters.js:402
msgid "Include subcategories"
msgstr ""
#: templates/js/translated/table_filters.js:126
-#: templates/js/translated/table_filters.js:442
+#: templates/js/translated/table_filters.js:437
msgid "Subscribed"
msgstr ""
@@ -9102,7 +9234,7 @@ msgid "Batch code"
msgstr ""
#: templates/js/translated/table_filters.js:163
-#: templates/js/translated/table_filters.js:379
+#: templates/js/translated/table_filters.js:374
msgid "Active parts"
msgstr ""
@@ -9187,47 +9319,47 @@ msgstr ""
msgid "Show stock which is close to expiring"
msgstr ""
-#: templates/js/translated/table_filters.js:290
+#: templates/js/translated/table_filters.js:285
msgid "Build status"
msgstr ""
-#: templates/js/translated/table_filters.js:303
-#: templates/js/translated/table_filters.js:344
+#: templates/js/translated/table_filters.js:298
+#: templates/js/translated/table_filters.js:339
msgid "Assigned to me"
msgstr ""
-#: templates/js/translated/table_filters.js:320
-#: templates/js/translated/table_filters.js:331
-#: templates/js/translated/table_filters.js:352
+#: templates/js/translated/table_filters.js:315
+#: templates/js/translated/table_filters.js:326
+#: templates/js/translated/table_filters.js:347
msgid "Order status"
msgstr ""
-#: templates/js/translated/table_filters.js:336
-#: templates/js/translated/table_filters.js:357
+#: templates/js/translated/table_filters.js:331
+#: templates/js/translated/table_filters.js:352
msgid "Outstanding"
msgstr ""
-#: templates/js/translated/table_filters.js:408
+#: templates/js/translated/table_filters.js:403
msgid "Include parts in subcategories"
msgstr ""
-#: templates/js/translated/table_filters.js:412
+#: templates/js/translated/table_filters.js:407
msgid "Has IPN"
msgstr ""
-#: templates/js/translated/table_filters.js:413
+#: templates/js/translated/table_filters.js:408
msgid "Part has internal part number"
msgstr ""
-#: templates/js/translated/table_filters.js:418
+#: templates/js/translated/table_filters.js:413
msgid "Show active parts"
msgstr ""
-#: templates/js/translated/table_filters.js:426
+#: templates/js/translated/table_filters.js:421
msgid "Stock available"
msgstr ""
-#: templates/js/translated/table_filters.js:454
+#: templates/js/translated/table_filters.js:449
msgid "Purchasable"
msgstr ""
@@ -9480,35 +9612,35 @@ msgstr ""
msgid "Important dates"
msgstr ""
-#: users/models.py:195
+#: users/models.py:200
msgid "Permission set"
msgstr ""
-#: users/models.py:203
+#: users/models.py:208
msgid "Group"
msgstr ""
-#: users/models.py:206
+#: users/models.py:211
msgid "View"
msgstr ""
-#: users/models.py:206
+#: users/models.py:211
msgid "Permission to view items"
msgstr ""
-#: users/models.py:208
+#: users/models.py:213
msgid "Permission to add items"
msgstr ""
-#: users/models.py:210
+#: users/models.py:215
msgid "Change"
msgstr ""
-#: users/models.py:210
+#: users/models.py:215
msgid "Permissions to edit items"
msgstr ""
-#: users/models.py:212
+#: users/models.py:217
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 50f451f696..d7ac9a9b72 100644
--- a/InvenTree/locale/es/LC_MESSAGES/django.po
+++ b/InvenTree/locale/es/LC_MESSAGES/django.po
@@ -3,8 +3,8 @@ msgid ""
msgstr ""
"Project-Id-Version: inventree\n"
"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2022-01-29 00:17+0000\n"
-"PO-Revision-Date: 2022-01-29 01:11\n"
+"POT-Creation-Date: 2022-02-18 20:36+0000\n"
+"PO-Revision-Date: 2022-02-18 20:38\n"
"Last-Translator: \n"
"Language-Team: Spanish, Mexico\n"
"Language: es_MX\n"
@@ -34,9 +34,9 @@ msgstr "No se encontró ninguna acción coincidente"
msgid "Enter date"
msgstr "Ingrese fecha"
-#: InvenTree/forms.py:126 build/forms.py:48 build/forms.py:69 order/forms.py:24
-#: order/forms.py:35 order/forms.py:46 order/forms.py:57
-#: templates/account/email_confirm.html:20 templates/js/translated/forms.js:595
+#: InvenTree/forms.py:126 order/forms.py:24 order/forms.py:35 order/forms.py:46
+#: order/forms.py:57 templates/account/email_confirm.html:20
+#: templates/js/translated/forms.js:596
msgid "Confirm"
msgstr "Confirmar"
@@ -86,7 +86,7 @@ msgid "Duplicate serial: {n}"
msgstr "Duplicar serie: {n}"
#: InvenTree/helpers.py:446 order/models.py:282 order/models.py:425
-#: stock/views.py:1231
+#: stock/views.py:1082
msgid "Invalid quantity provided"
msgstr "Cantidad proporcionada no válida"
@@ -119,133 +119,133 @@ msgstr "No se encontraron números de serie"
msgid "Number of unique serial number ({s}) must match quantity ({q})"
msgstr "Número único de número de serie ({s}) debe coincidir con la cantidad ({q})"
-#: InvenTree/models.py:120
+#: InvenTree/models.py:176
msgid "Missing file"
msgstr "Falta archivo"
-#: InvenTree/models.py:121
+#: InvenTree/models.py:177
msgid "Missing external link"
msgstr "Falta enlace externo"
-#: InvenTree/models.py:132 stock/models.py:1995
+#: InvenTree/models.py:188 stock/models.py:1995
#: templates/js/translated/attachment.js:119
msgid "Attachment"
msgstr "Adjunto"
-#: InvenTree/models.py:133
+#: InvenTree/models.py:189
msgid "Select file to attach"
msgstr "Seleccionar archivo a adjuntar"
-#: InvenTree/models.py:139 company/models.py:131 company/models.py:348
-#: company/models.py:564 order/models.py:127 part/models.py:830
+#: InvenTree/models.py:195 company/models.py:131 company/models.py:348
+#: company/models.py:564 order/models.py:127 part/models.py:860
#: report/templates/report/inventree_build_order_base.html:165
#: templates/js/translated/company.js:540
#: templates/js/translated/company.js:829 templates/js/translated/part.js:1324
msgid "Link"
msgstr "Enlace"
-#: InvenTree/models.py:140 build/models.py:332 part/models.py:831
+#: InvenTree/models.py:196 build/models.py:332 part/models.py:861
#: stock/models.py:529
msgid "Link to external URL"
msgstr "Enlace a URL externa"
-#: InvenTree/models.py:143 templates/js/translated/attachment.js:163
+#: InvenTree/models.py:199 templates/js/translated/attachment.js:163
msgid "Comment"
msgstr "Comentario"
-#: InvenTree/models.py:143
+#: InvenTree/models.py:199
msgid "File comment"
msgstr "Comentario de archivo"
-#: InvenTree/models.py:149 InvenTree/models.py:150 common/models.py:1223
-#: common/models.py:1224 common/models.py:1452 common/models.py:1453
-#: part/models.py:2265 part/models.py:2285
+#: InvenTree/models.py:205 InvenTree/models.py:206 common/models.py:1235
+#: common/models.py:1236 common/models.py:1464 common/models.py:1465
+#: part/models.py:2301 part/models.py:2321
#: report/templates/report/inventree_test_report_base.html:96
-#: templates/js/translated/stock.js:2692
+#: templates/js/translated/stock.js:2816
msgid "User"
msgstr "Usuario"
-#: InvenTree/models.py:153
+#: InvenTree/models.py:209
msgid "upload date"
msgstr "fecha de subida"
-#: InvenTree/models.py:176
+#: InvenTree/models.py:232
msgid "Filename must not be empty"
msgstr "El nombre del archivo no debe estar vacío"
-#: InvenTree/models.py:199
+#: InvenTree/models.py:255
msgid "Invalid attachment directory"
msgstr "Directorio adjunto inválido"
-#: InvenTree/models.py:209
+#: InvenTree/models.py:265
#, python-brace-format
msgid "Filename contains illegal character '{c}'"
msgstr "El nombre de archivo contiene caracteres no válidos '{c}'"
-#: InvenTree/models.py:212
+#: InvenTree/models.py:268
msgid "Filename missing extension"
msgstr "Falta extensión del nombre de archivo"
-#: InvenTree/models.py:219
+#: InvenTree/models.py:275
msgid "Attachment with this filename already exists"
msgstr "Ya existe un adjunto con este nombre de archivo"
-#: InvenTree/models.py:226
+#: InvenTree/models.py:282
msgid "Error renaming file"
msgstr "Error renombrando archivo"
-#: InvenTree/models.py:261
+#: InvenTree/models.py:317
msgid "Invalid choice"
msgstr "Elección no válida"
-#: InvenTree/models.py:277 InvenTree/models.py:278 common/models.py:1438
-#: company/models.py:415 label/models.py:112 part/models.py:774
-#: part/models.py:2449 plugin/models.py:40 report/models.py:181
+#: InvenTree/models.py:333 InvenTree/models.py:334 common/models.py:1450
+#: company/models.py:415 label/models.py:112 part/models.py:804
+#: part/models.py:2485 plugin/models.py:40 report/models.py:181
#: templates/InvenTree/settings/mixins/urls.html:13
#: templates/InvenTree/settings/plugin.html:48
#: templates/InvenTree/settings/plugin.html:125
#: templates/InvenTree/settings/plugin_settings.html:23
-#: templates/InvenTree/settings/settings.html:282
+#: templates/InvenTree/settings/settings.html:319
#: templates/js/translated/company.js:641 templates/js/translated/part.js:567
#: templates/js/translated/part.js:706 templates/js/translated/part.js:1631
-#: templates/js/translated/stock.js:2485
+#: templates/js/translated/stock.js:2609
msgid "Name"
msgstr "Nombre"
-#: InvenTree/models.py:284 build/models.py:209
+#: InvenTree/models.py:340 build/models.py:209
#: build/templates/build/detail.html:25 company/models.py:354
#: company/models.py:570 company/templates/company/company_base.html:68
#: company/templates/company/manufacturer_part.html:76
#: company/templates/company/supplier_part.html:73 label/models.py:119
-#: order/models.py:125 part/models.py:797 part/templates/part/category.html:74
+#: order/models.py:125 part/models.py:827 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:93
#: templates/InvenTree/settings/plugin_settings.html:33
-#: templates/js/translated/bom.js:339 templates/js/translated/bom.js:552
-#: templates/js/translated/build.js:1682 templates/js/translated/company.js:345
+#: templates/js/translated/bom.js:552 templates/js/translated/bom.js:765
+#: templates/js/translated/build.js:1920 templates/js/translated/company.js:345
#: templates/js/translated/company.js:551
#: templates/js/translated/company.js:840 templates/js/translated/order.js:836
#: templates/js/translated/order.js:1019 templates/js/translated/order.js:1258
#: templates/js/translated/part.js:626 templates/js/translated/part.js:999
#: templates/js/translated/part.js:1084 templates/js/translated/part.js:1254
#: templates/js/translated/part.js:1650 templates/js/translated/part.js:1719
-#: templates/js/translated/stock.js:1577 templates/js/translated/stock.js:2314
-#: templates/js/translated/stock.js:2497 templates/js/translated/stock.js:2542
+#: templates/js/translated/stock.js:1701 templates/js/translated/stock.js:2438
+#: templates/js/translated/stock.js:2621 templates/js/translated/stock.js:2666
msgid "Description"
msgstr "Descripción"
-#: InvenTree/models.py:285
+#: InvenTree/models.py:341
msgid "Description (optional)"
msgstr "Descripción (opcional)"
-#: InvenTree/models.py:293
+#: InvenTree/models.py:349
msgid "parent"
msgstr "principal"
-#: InvenTree/serializers.py:65 part/models.py:2734
+#: InvenTree/serializers.py:65 part/models.py:2803
msgid "Must be a valid number"
msgstr "Debe ser un número válido"
@@ -253,83 +253,127 @@ msgstr "Debe ser un número válido"
msgid "Filename"
msgstr "Nombre de archivo"
-#: InvenTree/settings.py:661
+#: InvenTree/serializers.py:334
+msgid "Invalid value"
+msgstr ""
+
+#: InvenTree/serializers.py:355
+msgid "Data File"
+msgstr ""
+
+#: InvenTree/serializers.py:356
+msgid "Select data file for upload"
+msgstr ""
+
+#: InvenTree/serializers.py:380
+msgid "Unsupported file type"
+msgstr ""
+
+#: InvenTree/serializers.py:386
+msgid "File is too large"
+msgstr ""
+
+#: InvenTree/serializers.py:407
+msgid "No columns found in file"
+msgstr ""
+
+#: InvenTree/serializers.py:410
+msgid "No data rows found in file"
+msgstr ""
+
+#: InvenTree/serializers.py:533
+msgid "No data rows provided"
+msgstr ""
+
+#: InvenTree/serializers.py:536
+msgid "No data columns supplied"
+msgstr ""
+
+#: InvenTree/serializers.py:623
+msgid "Missing required column"
+msgstr ""
+
+#: InvenTree/serializers.py:632
+msgid "Duplicate column"
+msgstr ""
+
+#: InvenTree/settings.py:655
msgid "German"
msgstr "Alemán"
-#: InvenTree/settings.py:662
+#: InvenTree/settings.py:656
msgid "Greek"
msgstr "Griego"
-#: InvenTree/settings.py:663
+#: InvenTree/settings.py:657
msgid "English"
msgstr "Inglés"
-#: InvenTree/settings.py:664
+#: InvenTree/settings.py:658
msgid "Spanish"
msgstr "Español"
-#: InvenTree/settings.py:665
+#: InvenTree/settings.py:659
msgid "Spanish (Mexican)"
msgstr "Español (México)"
-#: InvenTree/settings.py:666
+#: InvenTree/settings.py:660
msgid "French"
msgstr "Francés"
-#: InvenTree/settings.py:667
+#: InvenTree/settings.py:661
msgid "Hebrew"
msgstr "Hebreo"
-#: InvenTree/settings.py:668
+#: InvenTree/settings.py:662
msgid "Italian"
msgstr "Italiano"
-#: InvenTree/settings.py:669
+#: InvenTree/settings.py:663
msgid "Japanese"
msgstr "Japonés"
-#: InvenTree/settings.py:670
+#: InvenTree/settings.py:664
msgid "Korean"
msgstr "Coreano"
-#: InvenTree/settings.py:671
+#: InvenTree/settings.py:665
msgid "Dutch"
msgstr "Holandés"
-#: InvenTree/settings.py:672
+#: InvenTree/settings.py:666
msgid "Norwegian"
msgstr "Noruego"
-#: InvenTree/settings.py:673
+#: InvenTree/settings.py:667
msgid "Polish"
msgstr "Polaco"
-#: InvenTree/settings.py:674
+#: InvenTree/settings.py:668
msgid "Portugese"
msgstr "Portugués"
-#: InvenTree/settings.py:675
+#: InvenTree/settings.py:669
msgid "Russian"
msgstr "Ruso"
-#: InvenTree/settings.py:676
+#: InvenTree/settings.py:670
msgid "Swedish"
msgstr "Sueco"
-#: InvenTree/settings.py:677
+#: InvenTree/settings.py:671
msgid "Thai"
msgstr "Tailandés"
-#: InvenTree/settings.py:678
+#: InvenTree/settings.py:672
msgid "Turkish"
msgstr "Turco"
-#: InvenTree/settings.py:679
+#: InvenTree/settings.py:673
msgid "Vietnamese"
msgstr "Vietnamita"
-#: InvenTree/settings.py:680
+#: InvenTree/settings.py:674
msgid "Chinese"
msgstr "Chino"
@@ -346,7 +390,7 @@ msgid "InvenTree system health checks failed"
msgstr "Las comprobaciones de estado del sistema InvenTree fallaron"
#: InvenTree/status_codes.py:101 InvenTree/status_codes.py:142
-#: InvenTree/status_codes.py:316 templates/js/translated/table_filters.js:313
+#: InvenTree/status_codes.py:316 templates/js/translated/table_filters.js:308
msgid "Pending"
msgstr "Pendiente"
@@ -456,7 +500,7 @@ msgstr "Separar del artículo principal"
msgid "Split child item"
msgstr ""
-#: InvenTree/status_codes.py:294 templates/js/translated/stock.js:2072
+#: InvenTree/status_codes.py:294 templates/js/translated/stock.js:2196
msgid "Merged stock items"
msgstr "Artículos de stock combinados"
@@ -484,41 +528,41 @@ msgstr "Recibido contra la orden de compra"
msgid "Production"
msgstr ""
-#: InvenTree/validators.py:23
+#: InvenTree/validators.py:25
msgid "Not a valid currency code"
msgstr "No es un código de moneda válido"
-#: InvenTree/validators.py:51
+#: InvenTree/validators.py:53
msgid "Invalid character in part name"
msgstr "Carácter inválido en el nombre del artículo"
-#: InvenTree/validators.py:64
+#: InvenTree/validators.py:66
#, python-brace-format
msgid "IPN must match regex pattern {pat}"
msgstr "El IPN debe coincidir con la expresión regular {pat}"
-#: InvenTree/validators.py:78 InvenTree/validators.py:92
-#: InvenTree/validators.py:106
+#: InvenTree/validators.py:80 InvenTree/validators.py:94
+#: InvenTree/validators.py:108
#, python-brace-format
msgid "Reference must match pattern {pattern}"
msgstr "La referencia debe coincidir con la expresión regular {pattern}"
-#: InvenTree/validators.py:114
+#: InvenTree/validators.py:116
#, python-brace-format
msgid "Illegal character in name ({x})"
msgstr "Carácter ilegal en el nombre ({x})"
-#: InvenTree/validators.py:133 InvenTree/validators.py:149
+#: InvenTree/validators.py:137 InvenTree/validators.py:153
msgid "Overage value must not be negative"
msgstr "El valor excedente no debe ser negativo"
-#: InvenTree/validators.py:151
+#: InvenTree/validators.py:155
msgid "Overage must not exceed 100%"
msgstr "El excedente no debe superar el 100%"
-#: InvenTree/validators.py:158
-msgid "Overage must be an integer value or a percentage"
-msgstr "El excedente debe ser un valor entero o un porcentaje"
+#: InvenTree/validators.py:162
+msgid "Invalid value for overage"
+msgstr ""
#: InvenTree/views.py:538
msgid "Delete Item"
@@ -584,69 +628,11 @@ msgstr "La comprobación (hash) del código de barras ya corresponde a un Elemen
msgid "Barcode associated with Stock Item"
msgstr "Código de barras asignado al Elemento del Stock"
-#: build/forms.py:36 build/models.py:1293
-#: build/templates/build/build_base.html:82
-#: build/templates/build/detail.html:35 common/models.py:1263
-#: company/forms.py:42 company/templates/company/supplier_part.html:251
-#: order/models.py:805 order/models.py:1229 order/serializers.py:816
-#: order/templates/order/order_wizard/match_parts.html:30
-#: order/templates/order/order_wizard/select_parts.html:34 part/forms.py:144
-#: part/forms.py:160 part/forms.py:176 part/models.py:2636
-#: part/templates/part/bom_upload/match_parts.html:31
-#: part/templates/part/detail.html:992 part/templates/part/detail.html:1078
-#: part/templates/part/part_pricing.html:16
-#: report/templates/report/inventree_build_order_base.html:114
-#: report/templates/report/inventree_po_report.html:91
-#: report/templates/report/inventree_so_report.html:91
-#: report/templates/report/inventree_test_report_base.html:81
-#: report/templates/report/inventree_test_report_base.html:139
-#: stock/forms.py:142 stock/serializers.py:293
-#: stock/templates/stock/item_base.html:181
-#: stock/templates/stock/item_base.html:262
-#: stock/templates/stock/item_base.html:270
-#: templates/js/translated/barcode.js:385 templates/js/translated/bom.js:567
-#: templates/js/translated/build.js:295 templates/js/translated/build.js:495
-#: templates/js/translated/build.js:689 templates/js/translated/build.js:699
-#: templates/js/translated/build.js:1075 templates/js/translated/build.js:1422
-#: templates/js/translated/model_renderers.js:99
-#: templates/js/translated/order.js:101 templates/js/translated/order.js:1056
-#: 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:906
-#: templates/js/translated/part.js:1862 templates/js/translated/part.js:1985
-#: templates/js/translated/part.js:2063 templates/js/translated/stock.js:391
-#: templates/js/translated/stock.js:588 templates/js/translated/stock.js:758
-#: templates/js/translated/stock.js:2677 templates/js/translated/stock.js:2779
-msgid "Quantity"
-msgstr "Cantidad"
-
-#: build/forms.py:37
-msgid "Enter quantity for build output"
-msgstr ""
-
-#: build/forms.py:41 order/serializers.py:820 stock/forms.py:81
-#: stock/serializers.py:314 templates/js/translated/stock.js:238
-#: templates/js/translated/stock.js:392
-msgid "Serial Numbers"
-msgstr "Números de serie"
-
-#: build/forms.py:43
-msgid "Enter serial numbers for build outputs"
-msgstr ""
-
-#: build/forms.py:49
-msgid "Confirm creation of build output"
-msgstr ""
-
-#: build/forms.py:70
-msgid "Confirm deletion of build output"
-msgstr ""
-
-#: build/forms.py:89
+#: build/forms.py:20
msgid "Confirm cancel"
msgstr "¿Deseas cancelar?"
-#: build/forms.py:89 build/views.py:65
+#: build/forms.py:20 build/views.py:62
msgid "Confirm build cancellation"
msgstr ""
@@ -657,7 +643,7 @@ msgstr "Opción no válida para el armado principal"
#: build/models.py:139 build/templates/build/build_base.html:9
#: build/templates/build/build_base.html:27
#: report/templates/report/inventree_build_order_base.html:106
-#: templates/js/translated/build.js:457 templates/js/translated/stock.js:2290
+#: templates/js/translated/build.js:676 templates/js/translated/stock.js:2414
msgid "Build Order"
msgstr "Orden de Producción"
@@ -665,7 +651,7 @@ msgstr "Orden de Producción"
#: 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
+#: part/templates/part/part_sidebar.html:21 templates/InvenTree/index.html:221
#: templates/InvenTree/search.html:139
#: templates/InvenTree/settings/sidebar.html:43 users/models.py:44
msgid "Build Orders"
@@ -676,11 +662,11 @@ msgid "Build Order Reference"
msgstr "Referencia de Orden de Producción"
#: build/models.py:201 order/models.py:213 order/models.py:541
-#: order/models.py:812 part/models.py:2645
-#: part/templates/part/bom_upload/match_parts.html:30
+#: order/models.py:812 part/models.py:2714
+#: part/templates/part/upload_bom.html:54
#: report/templates/report/inventree_po_report.html:92
#: report/templates/report/inventree_so_report.html:92
-#: templates/js/translated/bom.js:559 templates/js/translated/build.js:1179
+#: templates/js/translated/bom.js:772 templates/js/translated/build.js:1401
#: templates/js/translated/order.js:1050 templates/js/translated/order.js:2144
msgid "Reference"
msgstr "Referencia"
@@ -689,7 +675,7 @@ msgstr "Referencia"
msgid "Brief description of the build"
msgstr "Breve descripción de la producción"
-#: build/models.py:221 build/templates/build/build_base.html:164
+#: build/models.py:221 build/templates/build/build_base.html:169
#: build/templates/build/detail.html:88
msgid "Parent Build"
msgstr "Armado Principal"
@@ -702,30 +688,31 @@ msgstr "Orden de Producción a la cual esta producción pertenece"
#: build/templates/build/detail.html:30 company/models.py:705
#: order/models.py:876 order/models.py:950
#: order/templates/order/order_wizard/select_parts.html:32 part/models.py:359
-#: part/models.py:2211 part/models.py:2227 part/models.py:2246
-#: part/models.py:2263 part/models.py:2365 part/models.py:2487
-#: part/models.py:2620 part/models.py:2927 part/serializers.py:658
-#: part/templates/part/part_app_base.html:8
+#: part/models.py:2247 part/models.py:2263 part/models.py:2282
+#: part/models.py:2299 part/models.py:2401 part/models.py:2523
+#: part/models.py:2613 part/models.py:2689 part/models.py:2996
+#: part/serializers.py:666 part/templates/part/part_app_base.html:8
#: part/templates/part/part_pricing.html:12
#: part/templates/part/set_category.html:13
+#: part/templates/part/upload_bom.html:52
#: 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: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:338
-#: templates/js/translated/bom.js:517 templates/js/translated/build.js:680
-#: templates/js/translated/build.js:1048 templates/js/translated/build.js:1419
-#: templates/js/translated/build.js:1687 templates/js/translated/company.js:492
+#: templates/js/translated/barcode.js:383 templates/js/translated/bom.js:551
+#: templates/js/translated/bom.js:730 templates/js/translated/build.js:902
+#: templates/js/translated/build.js:1270 templates/js/translated/build.js:1655
+#: templates/js/translated/build.js:1925 templates/js/translated/company.js:492
#: templates/js/translated/company.js:749 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:984
#: templates/js/translated/part.js:1065 templates/js/translated/part.js:1232
-#: templates/js/translated/stock.js:562 templates/js/translated/stock.js:727
-#: templates/js/translated/stock.js:934 templates/js/translated/stock.js:1534
-#: templates/js/translated/stock.js:2767
+#: templates/js/translated/stock.js:563 templates/js/translated/stock.js:728
+#: templates/js/translated/stock.js:935 templates/js/translated/stock.js:1658
+#: templates/js/translated/stock.js:2891 templates/js/translated/stock.js:2990
msgid "Part"
msgstr "Parte"
@@ -741,7 +728,7 @@ msgstr "Referencia de Orden de Venta"
msgid "SalesOrder to which this build is allocated"
msgstr "Ordenes de Venta a la cual esta producción pertenece"
-#: build/models.py:249 templates/js/translated/build.js:1407
+#: build/models.py:249 templates/js/translated/build.js:1643
#: templates/js/translated/order.js:1564
msgid "Source Location"
msgstr "Ubicación de origen"
@@ -782,15 +769,15 @@ msgstr ""
msgid "Build status code"
msgstr ""
-#: build/models.py:287 stock/models.py:533
+#: build/models.py:287 build/serializers.py:218 stock/models.py:533
msgid "Batch Code"
msgstr "Numero de lote"
-#: build/models.py:291
+#: build/models.py:291 build/serializers.py:219
msgid "Batch code for this build output"
msgstr ""
-#: build/models.py:294 order/models.py:129 part/models.py:969
+#: build/models.py:294 order/models.py:129 part/models.py:999
#: part/templates/part/part_base.html:313 templates/js/translated/order.js:1271
msgid "Creation Date"
msgstr "Fecha de Creación"
@@ -804,7 +791,7 @@ msgid "Target date for build completion. Build will be overdue after this date."
msgstr ""
#: build/models.py:302 order/models.py:255
-#: templates/js/translated/build.js:1758
+#: templates/js/translated/build.js:1996
msgid "Completion Date"
msgstr "Fecha de finalización"
@@ -812,7 +799,7 @@ msgstr "Fecha de finalización"
msgid "completed by"
msgstr "terminado por"
-#: build/models.py:316 templates/js/translated/build.js:1729
+#: build/models.py:316 templates/js/translated/build.js:1967
msgid "Issued by"
msgstr "Emitido por"
@@ -820,12 +807,12 @@ msgstr "Emitido por"
msgid "User who issued this build order"
msgstr "El usuario que emitió esta orden"
-#: build/models.py:325 build/templates/build/build_base.html:185
+#: build/models.py:325 build/templates/build/build_base.html:190
#: build/templates/build/detail.html:116 order/models.py:143
#: order/templates/order/order_base.html:170
-#: order/templates/order/sales_order_base.html:182 part/models.py:973
+#: order/templates/order/sales_order_base.html:182 part/models.py:1003
#: report/templates/report/inventree_build_order_base.html:159
-#: templates/js/translated/build.js:1741 templates/js/translated/order.js:864
+#: templates/js/translated/build.js:1979 templates/js/translated/order.js:864
msgid "Responsible"
msgstr "Responsable"
@@ -837,26 +824,26 @@ msgstr ""
#: company/templates/company/manufacturer_part.html:102
#: company/templates/company/supplier_part.html:126
#: part/templates/part/part_base.html:354 stock/models.py:527
-#: stock/templates/stock/item_base.html:373
+#: stock/templates/stock/item_base.html:375
msgid "External Link"
msgstr "Link externo"
-#: build/models.py:336 build/serializers.py:201
+#: build/models.py:336 build/serializers.py:380
#: build/templates/build/sidebar.html:21 company/models.py:142
#: company/models.py:577 company/templates/company/sidebar.html:25
#: order/models.py:147 order/models.py:814 order/models.py:1071
#: order/templates/order/po_sidebar.html:11
-#: order/templates/order/so_sidebar.html:17 part/models.py:958
-#: part/templates/part/detail.html:137 part/templates/part/part_sidebar.html:54
+#: order/templates/order/so_sidebar.html:17 part/models.py:988
+#: part/templates/part/detail.html:140 part/templates/part/part_sidebar.html:57
#: report/templates/report/inventree_build_order_base.html:173
-#: stock/forms.py:140 stock/forms.py:190 stock/forms.py:224 stock/models.py:599
+#: stock/forms.py:137 stock/forms.py:171 stock/models.py:599
#: stock/models.py:1895 stock/models.py:2001 stock/serializers.py:332
-#: stock/serializers.py:640 stock/serializers.py:738 stock/serializers.py:870
+#: stock/serializers.py:697 stock/serializers.py:795 stock/serializers.py:927
#: stock/templates/stock/stock_sidebar.html:25
-#: templates/js/translated/barcode.js:58 templates/js/translated/bom.js:723
+#: templates/js/translated/barcode.js:58 templates/js/translated/bom.js:936
#: templates/js/translated/company.js:845 templates/js/translated/order.js:1149
#: templates/js/translated/order.js:1445 templates/js/translated/order.js:2280
-#: templates/js/translated/stock.js:1317 templates/js/translated/stock.js:1803
+#: templates/js/translated/stock.js:1345 templates/js/translated/stock.js:1927
msgid "Notes"
msgstr "Notas"
@@ -864,208 +851,284 @@ msgstr "Notas"
msgid "Extra build notes"
msgstr ""
-#: build/models.py:717
+#: build/models.py:756
msgid "No build output specified"
msgstr ""
-#: build/models.py:720
+#: build/models.py:759
msgid "Build output is already completed"
msgstr ""
-#: build/models.py:723
+#: build/models.py:762
msgid "Build output does not match Build Order"
msgstr ""
-#: build/models.py:1115
+#: build/models.py:1154
msgid "Build item must specify a build output, as master part is marked as trackable"
msgstr ""
-#: build/models.py:1124
+#: build/models.py:1163
#, python-brace-format
msgid "Allocated quantity ({q}) must not execed available stock quantity ({a})"
msgstr ""
-#: build/models.py:1134
+#: build/models.py:1173
msgid "Stock item is over-allocated"
msgstr "Artículo de stock sobreasignado"
-#: build/models.py:1140 order/models.py:1189
+#: build/models.py:1179 order/models.py:1189
msgid "Allocation quantity must be greater than zero"
msgstr "Cantidad asignada debe ser mayor que cero"
-#: build/models.py:1146
+#: build/models.py:1185
msgid "Quantity must be 1 for serialized stock"
msgstr "La cantidad debe ser 1 para el stock serializado"
-#: build/models.py:1203
+#: build/models.py:1242
msgid "Selected stock item not found in BOM"
msgstr "Artículo de stock seleccionado no encontrado en BOM"
-#: build/models.py:1263 stock/templates/stock/item_base.html:345
-#: templates/InvenTree/search.html:137 templates/js/translated/build.js:1660
+#: build/models.py:1302 stock/templates/stock/item_base.html:347
+#: templates/InvenTree/search.html:137 templates/js/translated/build.js:1898
#: templates/navbar.html:35
msgid "Build"
msgstr ""
-#: build/models.py:1264
+#: build/models.py:1303
msgid "Build to allocate parts"
msgstr ""
-#: build/models.py:1280 build/serializers.py:388 order/serializers.py:696
-#: order/serializers.py:714 stock/serializers.py:578 stock/serializers.py:696
-#: stock/templates/stock/item_base.html:9
+#: build/models.py:1319 build/serializers.py:570 order/serializers.py:696
+#: order/serializers.py:714 stock/serializers.py:404 stock/serializers.py:635
+#: stock/serializers.py:753 stock/templates/stock/item_base.html:9
#: stock/templates/stock/item_base.html:23
-#: stock/templates/stock/item_base.html:367
-#: templates/js/translated/build.js:468 templates/js/translated/build.js:473
-#: templates/js/translated/build.js:1421 templates/js/translated/build.js:1803
+#: stock/templates/stock/item_base.html:369
+#: templates/js/translated/build.js:687 templates/js/translated/build.js:692
+#: templates/js/translated/build.js:1657 templates/js/translated/build.js:2041
#: 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:563 templates/js/translated/stock.js:728
-#: templates/js/translated/stock.js:2628
+#: templates/js/translated/stock.js:564 templates/js/translated/stock.js:729
+#: templates/js/translated/stock.js:2752
msgid "Stock Item"
msgstr "Artículo de stock"
-#: build/models.py:1281
+#: build/models.py:1320
msgid "Source stock item"
msgstr "Producto original de stock"
-#: build/models.py:1294
+#: build/models.py:1332 build/serializers.py:188
+#: build/templates/build/build_base.html:82
+#: build/templates/build/detail.html:35 common/models.py:1275
+#: company/forms.py:42 company/templates/company/supplier_part.html:251
+#: order/models.py:805 order/models.py:1229 order/serializers.py:816
+#: order/templates/order/order_wizard/match_parts.html:30
+#: order/templates/order/order_wizard/select_parts.html:34 part/forms.py:144
+#: part/forms.py:160 part/forms.py:176 part/models.py:2705
+#: part/templates/part/detail.html:995 part/templates/part/detail.html:1081
+#: part/templates/part/part_pricing.html:16
+#: part/templates/part/upload_bom.html:53
+#: report/templates/report/inventree_build_order_base.html:114
+#: report/templates/report/inventree_po_report.html:91
+#: report/templates/report/inventree_so_report.html:91
+#: report/templates/report/inventree_test_report_base.html:81
+#: report/templates/report/inventree_test_report_base.html:139
+#: stock/forms.py:139 stock/serializers.py:293
+#: stock/templates/stock/item_base.html:183
+#: stock/templates/stock/item_base.html:264
+#: stock/templates/stock/item_base.html:272
+#: templates/js/translated/barcode.js:385 templates/js/translated/bom.js:780
+#: templates/js/translated/build.js:375 templates/js/translated/build.js:523
+#: templates/js/translated/build.js:714 templates/js/translated/build.js:911
+#: templates/js/translated/build.js:921 templates/js/translated/build.js:1297
+#: templates/js/translated/build.js:1658
+#: templates/js/translated/model_renderers.js:99
+#: templates/js/translated/order.js:101 templates/js/translated/order.js:1056
+#: 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:906
+#: templates/js/translated/part.js:1862 templates/js/translated/part.js:1985
+#: templates/js/translated/part.js:2063 templates/js/translated/stock.js:392
+#: templates/js/translated/stock.js:589 templates/js/translated/stock.js:759
+#: templates/js/translated/stock.js:2801 templates/js/translated/stock.js:2903
+msgid "Quantity"
+msgstr "Cantidad"
+
+#: build/models.py:1333
msgid "Stock quantity to allocate to build"
msgstr ""
-#: build/models.py:1302
+#: build/models.py:1341
msgid "Install into"
msgstr "Instalar en"
-#: build/models.py:1303
+#: build/models.py:1342
msgid "Destination stock item"
msgstr "Artículo de stock de destino"
-#: build/serializers.py:137 build/serializers.py:417
+#: build/serializers.py:138 build/serializers.py:599
msgid "Build Output"
msgstr ""
-#: build/serializers.py:146
+#: build/serializers.py:150
msgid "Build output does not match the parent build"
msgstr "Salida de armado no coincide con armado principal"
-#: build/serializers.py:150
+#: build/serializers.py:154
msgid "Output part does not match BuildOrder part"
msgstr ""
-#: build/serializers.py:154
+#: build/serializers.py:158
msgid "This build output has already been completed"
msgstr ""
-#: build/serializers.py:158
+#: build/serializers.py:164
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:731
-#: stock/serializers.py:972 stock/templates/stock/item_base.html:313
-#: templates/js/translated/barcode.js:384
-#: templates/js/translated/barcode.js:557 templates/js/translated/build.js:480
-#: templates/js/translated/build.js:1087 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:179 templates/js/translated/stock.js:564
-#: templates/js/translated/stock.js:729 templates/js/translated/stock.js:936
-#: templates/js/translated/stock.js:1684 templates/js/translated/stock.js:2569
-msgid "Location"
-msgstr "Ubicación"
-
-#: build/serializers.py:191
-msgid "Location for completed build outputs"
+#: build/serializers.py:189
+msgid "Enter quantity for build output"
msgstr ""
-#: build/serializers.py:197 build/templates/build/build_base.html:137
-#: build/templates/build/detail.html:63 order/models.py:557
-#: order/serializers.py:247 stock/templates/stock/item_base.html:187
-#: templates/js/translated/barcode.js:140 templates/js/translated/build.js:1716
-#: templates/js/translated/order.js:591 templates/js/translated/order.js:840
-#: templates/js/translated/order.js:1263 templates/js/translated/stock.js:1659
-#: templates/js/translated/stock.js:2646 templates/js/translated/stock.js:2795
-msgid "Status"
-msgstr "Estado"
-
-#: build/serializers.py:213
-msgid "A list of build outputs must be provided"
-msgstr ""
-
-#: build/serializers.py:249
-msgid "Accept Unallocated"
-msgstr ""
-
-#: build/serializers.py:250
-msgid "Accept that stock items have not been fully allocated to this build order"
-msgstr ""
-
-#: build/serializers.py:260 templates/js/translated/build.js:149
-msgid "Required stock has not been fully allocated"
-msgstr ""
-
-#: build/serializers.py:265
-msgid "Accept Incomplete"
-msgstr ""
-
-#: build/serializers.py:266
-msgid "Accept that the required number of build outputs have not been completed"
-msgstr ""
-
-#: build/serializers.py:276 templates/js/translated/build.js:153
-msgid "Required build quantity has not been completed"
-msgstr ""
-
-#: build/serializers.py:285
-msgid "Build order has incomplete outputs"
-msgstr ""
-
-#: build/serializers.py:313 build/serializers.py:362 part/models.py:2760
-#: part/models.py:2919
-msgid "BOM Item"
-msgstr ""
-
-#: build/serializers.py:323
-msgid "Build output"
-msgstr ""
-
-#: build/serializers.py:332
-msgid "Build output must point to the same build"
-msgstr ""
-
-#: build/serializers.py:379
-msgid "bom_item.part must point to the same part as the build order"
-msgstr ""
-
-#: build/serializers.py:394 stock/serializers.py:585
-msgid "Item must be in stock"
-msgstr ""
-
-#: build/serializers.py:408 order/models.py:280 order/serializers.py:240
+#: build/serializers.py:201 build/serializers.py:590 order/models.py:280
+#: order/serializers.py:240 part/serializers.py:471 part/serializers.py:827
#: stock/models.py:367 stock/models.py:1105 stock/serializers.py:305
msgid "Quantity must be greater than zero"
msgstr ""
-#: build/serializers.py:450 order/serializers.py:747
+#: build/serializers.py:208
+msgid "Integer quantity required for trackable parts"
+msgstr ""
+
+#: build/serializers.py:211
+msgid "Integer quantity required, as the bill of materials contains trackable parts"
+msgstr ""
+
+#: build/serializers.py:225 order/serializers.py:820 stock/forms.py:78
+#: stock/serializers.py:314 templates/js/translated/stock.js:239
+#: templates/js/translated/stock.js:393
+msgid "Serial Numbers"
+msgstr "Números de serie"
+
+#: build/serializers.py:226
+msgid "Enter serial numbers for build outputs"
+msgstr ""
+
+#: build/serializers.py:239
+msgid "Auto Allocate Serial Numbers"
+msgstr ""
+
+#: build/serializers.py:240
+msgid "Automatically allocate required items with matching serial numbers"
+msgstr ""
+
+#: build/serializers.py:274 stock/api.py:551
+msgid "The following serial numbers already exist"
+msgstr ""
+
+#: build/serializers.py:327 build/serializers.py:392
+msgid "A list of build outputs must be provided"
+msgstr ""
+
+#: build/serializers.py:369 order/serializers.py:226 order/serializers.py:294
+#: stock/forms.py:169 stock/serializers.py:325 stock/serializers.py:788
+#: stock/serializers.py:1029 stock/templates/stock/item_base.html:315
+#: templates/js/translated/barcode.js:384
+#: templates/js/translated/barcode.js:557 templates/js/translated/build.js:699
+#: templates/js/translated/build.js:1309 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:179 templates/js/translated/stock.js:565
+#: templates/js/translated/stock.js:730 templates/js/translated/stock.js:937
+#: templates/js/translated/stock.js:1808 templates/js/translated/stock.js:2693
+msgid "Location"
+msgstr "Ubicación"
+
+#: build/serializers.py:370
+msgid "Location for completed build outputs"
+msgstr ""
+
+#: build/serializers.py:376 build/templates/build/build_base.html:142
+#: build/templates/build/detail.html:63 order/models.py:557
+#: order/serializers.py:247 stock/templates/stock/item_base.html:189
+#: templates/js/translated/barcode.js:140 templates/js/translated/build.js:1954
+#: templates/js/translated/order.js:591 templates/js/translated/order.js:840
+#: templates/js/translated/order.js:1263 templates/js/translated/stock.js:1783
+#: templates/js/translated/stock.js:2770 templates/js/translated/stock.js:2919
+msgid "Status"
+msgstr "Estado"
+
+#: build/serializers.py:428
+msgid "Accept Unallocated"
+msgstr ""
+
+#: build/serializers.py:429
+msgid "Accept that stock items have not been fully allocated to this build order"
+msgstr ""
+
+#: build/serializers.py:439 templates/js/translated/build.js:150
+msgid "Required stock has not been fully allocated"
+msgstr ""
+
+#: build/serializers.py:444
+msgid "Accept Incomplete"
+msgstr ""
+
+#: build/serializers.py:445
+msgid "Accept that the required number of build outputs have not been completed"
+msgstr ""
+
+#: build/serializers.py:455 templates/js/translated/build.js:154
+msgid "Required build quantity has not been completed"
+msgstr ""
+
+#: build/serializers.py:464
+msgid "Build order has incomplete outputs"
+msgstr ""
+
+#: build/serializers.py:467 build/templates/build/build_base.html:95
+msgid "No build outputs have been created for this build order"
+msgstr ""
+
+#: build/serializers.py:495 build/serializers.py:544 part/models.py:2829
+#: part/models.py:2988
+msgid "BOM Item"
+msgstr ""
+
+#: build/serializers.py:505
+msgid "Build output"
+msgstr ""
+
+#: build/serializers.py:514
+msgid "Build output must point to the same build"
+msgstr ""
+
+#: build/serializers.py:561
+msgid "bom_item.part must point to the same part as the build order"
+msgstr ""
+
+#: build/serializers.py:576 stock/serializers.py:642
+msgid "Item must be in stock"
+msgstr ""
+
+#: build/serializers.py:632 order/serializers.py:747
#, python-brace-format
msgid "Available quantity ({q}) exceeded"
msgstr ""
-#: build/serializers.py:456
+#: build/serializers.py:638
msgid "Build output must be specified for allocation of tracked parts"
msgstr ""
-#: build/serializers.py:463
+#: build/serializers.py:645
msgid "Build output cannot be specified for allocation of untracked parts"
msgstr ""
-#: build/serializers.py:491 order/serializers.py:990
+#: build/serializers.py:673 order/serializers.py:990
msgid "Allocation items must be provided"
msgstr "Debe proporcionar adjudicación de artículos"
-#: build/tasks.py:92
+#: build/tasks.py:98
msgid "Stock required for build order"
msgstr ""
@@ -1088,7 +1151,7 @@ msgid "Edit Build"
msgstr ""
#: build/templates/build/build_base.html:56
-#: build/templates/build/build_base.html:215 build/views.py:56
+#: build/templates/build/build_base.html:220 build/views.py:53
msgid "Cancel Build"
msgstr ""
@@ -1105,110 +1168,90 @@ msgstr ""
msgid "Build Description"
msgstr ""
-#: build/templates/build/build_base.html:96
+#: build/templates/build/build_base.html:101
#, python-format
msgid "This Build Order is allocated to Sales Order %(link)s"
msgstr ""
-#: build/templates/build/build_base.html:103
+#: build/templates/build/build_base.html:108
#, python-format
msgid "This Build Order is a child of Build Order %(link)s"
msgstr ""
-#: build/templates/build/build_base.html:110
+#: build/templates/build/build_base.html:115
msgid "Build Order is ready to mark as completed"
msgstr ""
-#: build/templates/build/build_base.html:115
+#: build/templates/build/build_base.html:120
msgid "Build Order cannot be completed as outstanding outputs remain"
msgstr ""
-#: build/templates/build/build_base.html:120
+#: build/templates/build/build_base.html:125
msgid "Required build quantity has not yet been completed"
msgstr ""
-#: build/templates/build/build_base.html:125
+#: build/templates/build/build_base.html:130
msgid "Stock has not been fully allocated to this Build Order"
msgstr ""
-#: build/templates/build/build_base.html:146
+#: build/templates/build/build_base.html:151
#: build/templates/build/detail.html:132
#: order/templates/order/order_base.html:156
#: order/templates/order/sales_order_base.html:163
#: report/templates/report/inventree_build_order_base.html:126
-#: templates/js/translated/build.js:1753 templates/js/translated/order.js:854
+#: templates/js/translated/build.js:1991 templates/js/translated/order.js:854
#: templates/js/translated/order.js:1276
msgid "Target Date"
msgstr ""
-#: build/templates/build/build_base.html:151
+#: build/templates/build/build_base.html:156
#, python-format
msgid "This build was due on %(target)s"
msgstr ""
-#: build/templates/build/build_base.html:151
-#: build/templates/build/build_base.html:196
+#: build/templates/build/build_base.html:156
+#: build/templates/build/build_base.html:201
#: order/templates/order/order_base.html:98
#: order/templates/order/sales_order_base.html:93
-#: templates/js/translated/table_filters.js:299
-#: templates/js/translated/table_filters.js:340
-#: templates/js/translated/table_filters.js:361
+#: templates/js/translated/table_filters.js:294
+#: templates/js/translated/table_filters.js:335
+#: templates/js/translated/table_filters.js:356
msgid "Overdue"
msgstr "Vencido"
-#: build/templates/build/build_base.html:158
+#: build/templates/build/build_base.html:163
#: build/templates/build/detail.html:68 build/templates/build/detail.html:143
#: order/templates/order/sales_order_base.html:170
-#: templates/js/translated/build.js:1702
-#: templates/js/translated/table_filters.js:370
+#: templates/js/translated/build.js:1940
+#: templates/js/translated/table_filters.js:365
msgid "Completed"
msgstr "Completado"
-#: build/templates/build/build_base.html:171
+#: build/templates/build/build_base.html:176
#: build/templates/build/detail.html:95 order/models.py:947
#: order/models.py:1043 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:307
-#: templates/js/translated/order.js:1218 templates/js/translated/stock.js:2304
+#: stock/templates/stock/item_base.html:309
+#: templates/js/translated/order.js:1218 templates/js/translated/stock.js:2428
msgid "Sales Order"
msgstr "Orden de Venta"
-#: build/templates/build/build_base.html:178
+#: build/templates/build/build_base.html:183
#: build/templates/build/detail.html:109
#: report/templates/report/inventree_build_order_base.html:153
msgid "Issued By"
msgstr "Emitido por"
-#: build/templates/build/build_base.html:223
+#: build/templates/build/build_base.html:228
msgid "Incomplete Outputs"
msgstr "Salidas incompletas"
-#: build/templates/build/build_base.html:224
+#: build/templates/build/build_base.html:229
msgid "Build Order cannot be completed as incomplete build outputs remain"
msgstr ""
-#: build/templates/build/build_output_create.html:7
-msgid "The Bill of Materials contains trackable parts"
-msgstr ""
-
-#: build/templates/build/build_output_create.html:8
-msgid "Build outputs must be generated individually."
-msgstr ""
-
-#: build/templates/build/build_output_create.html:9
-msgid "Multiple build outputs will be created based on the quantity specified."
-msgstr ""
-
-#: build/templates/build/build_output_create.html:15
-msgid "Trackable parts can have serial numbers specified"
-msgstr ""
-
-#: build/templates/build/build_output_create.html:16
-msgid "Enter serial numbers to generate multiple single build outputs"
-msgstr ""
-
#: build/templates/build/cancel.html:5
msgid "Are you sure you wish to cancel this build?"
msgstr ""
@@ -1225,7 +1268,7 @@ msgstr ""
msgid "Stock can be taken from any available location."
msgstr ""
-#: build/templates/build/detail.html:50 order/models.py:898 stock/forms.py:136
+#: build/templates/build/detail.html:50 order/models.py:898 stock/forms.py:133
#: templates/js/translated/order.js:592 templates/js/translated/order.js:1138
msgid "Destination"
msgstr "Destinación"
@@ -1234,13 +1277,13 @@ msgstr "Destinación"
msgid "Destination location not specified"
msgstr ""
-#: build/templates/build/detail.html:74 templates/js/translated/build.js:707
+#: build/templates/build/detail.html:74 templates/js/translated/build.js:929
msgid "Allocated Parts"
msgstr "Partes asignadas"
#: build/templates/build/detail.html:81
-#: stock/templates/stock/item_base.html:331
-#: templates/js/translated/stock.js:1673 templates/js/translated/stock.js:2802
+#: stock/templates/stock/item_base.html:333
+#: templates/js/translated/stock.js:1797 templates/js/translated/stock.js:2926
#: templates/js/translated/table_filters.js:151
#: templates/js/translated/table_filters.js:238
msgid "Batch"
@@ -1249,7 +1292,7 @@ msgstr "Lote"
#: build/templates/build/detail.html:127
#: order/templates/order/order_base.html:143
#: order/templates/order/sales_order_base.html:157
-#: templates/js/translated/build.js:1724
+#: templates/js/translated/build.js:1962
msgid "Created"
msgstr ""
@@ -1269,7 +1312,7 @@ msgstr ""
msgid "Allocate Stock to Build"
msgstr ""
-#: build/templates/build/detail.html:177 templates/js/translated/build.js:1262
+#: build/templates/build/detail.html:177 templates/js/translated/build.js:1484
msgid "Unallocate stock"
msgstr "Desasignar stock"
@@ -1329,52 +1372,60 @@ msgid "Output Actions"
msgstr ""
#: build/templates/build/detail.html:250
-msgid "Complete selected items"
-msgstr "Completar elementos seleccionados"
+msgid "Complete selected build outputs"
+msgstr ""
#: build/templates/build/detail.html:251
msgid "Complete outputs"
msgstr ""
-#: build/templates/build/detail.html:266
+#: build/templates/build/detail.html:253
+msgid "Delete selected build outputs"
+msgstr ""
+
+#: build/templates/build/detail.html:254
+msgid "Delete outputs"
+msgstr ""
+
+#: build/templates/build/detail.html:270
msgid "Completed Build Outputs"
msgstr ""
-#: build/templates/build/detail.html:278 build/templates/build/sidebar.html:19
+#: build/templates/build/detail.html:282 build/templates/build/sidebar.html:19
#: order/templates/order/po_sidebar.html:9
#: order/templates/order/purchase_order_detail.html:60
#: order/templates/order/sales_order_detail.html:107
-#: order/templates/order/so_sidebar.html:15 part/templates/part/detail.html:213
-#: part/templates/part/part_sidebar.html:52 stock/templates/stock/item.html:112
+#: order/templates/order/so_sidebar.html:15 part/templates/part/detail.html:216
+#: part/templates/part/part_sidebar.html:55 stock/templates/stock/item.html:112
#: stock/templates/stock/stock_sidebar.html:23
msgid "Attachments"
msgstr "Adjuntos"
-#: build/templates/build/detail.html:294
+#: build/templates/build/detail.html:298
msgid "Build Notes"
msgstr ""
-#: build/templates/build/detail.html:298 build/templates/build/detail.html:453
+#: build/templates/build/detail.html:302 build/templates/build/detail.html:478
#: company/templates/company/detail.html:188
#: company/templates/company/detail.html:215
#: order/templates/order/purchase_order_detail.html:80
#: order/templates/order/purchase_order_detail.html:108
#: order/templates/order/sales_order_detail.html:127
#: order/templates/order/sales_order_detail.html:186
-#: part/templates/part/detail.html:141 stock/templates/stock/item.html:132
-#: stock/templates/stock/item.html:235
+#: part/templates/part/detail.html:144 stock/templates/stock/item.html:132
+#: stock/templates/stock/item.html:230
msgid "Edit Notes"
msgstr ""
-#: build/templates/build/detail.html:477
+#: build/templates/build/detail.html:502
msgid "Allocation Complete"
msgstr ""
-#: build/templates/build/detail.html:478
+#: build/templates/build/detail.html:503
msgid "All untracked stock items have been allocated"
msgstr "Todos los artículos de stock no rastreados han sido asignados"
-#: build/templates/build/index.html:18 part/templates/part/detail.html:320
+#: build/templates/build/index.html:18 part/templates/part/detail.html:323
msgid "New Build Order"
msgstr ""
@@ -1406,51 +1457,11 @@ msgstr "Artículos Pendientes"
msgid "Completed Items"
msgstr "Artículos Completados"
-#: build/views.py:76
+#: build/views.py:73
msgid "Build was cancelled"
msgstr ""
-#: build/views.py:88
-msgid "Create Build Output"
-msgstr ""
-
-#: build/views.py:106
-msgid "Maximum output quantity is "
-msgstr ""
-
-#: build/views.py:122 stock/serializers.py:363 stock/views.py:1257
-msgid "Serial numbers already exist"
-msgstr ""
-
-#: build/views.py:131
-msgid "Serial numbers required for trackable build output"
-msgstr ""
-
-#: build/views.py:197
-msgid "Delete Build Output"
-msgstr ""
-
-#: build/views.py:218
-msgid "Confirm unallocation of build stock"
-msgstr ""
-
-#: build/views.py:219 stock/views.py:352
-msgid "Check the confirmation box"
-msgstr ""
-
-#: build/views.py:231
-msgid "Build output does not match build"
-msgstr ""
-
-#: build/views.py:233
-msgid "Build output must be specified"
-msgstr ""
-
-#: build/views.py:245
-msgid "Build output deleted"
-msgstr ""
-
-#: build/views.py:286
+#: build/views.py:114
msgid "Delete Build Order"
msgstr ""
@@ -1639,9 +1650,9 @@ msgstr ""
msgid "Copy category parameter templates when creating a part"
msgstr ""
-#: common/models.py:705 part/models.py:2489 report/models.py:187
+#: common/models.py:705 part/models.py:2525 report/models.py:187
#: templates/js/translated/table_filters.js:38
-#: templates/js/translated/table_filters.js:422
+#: templates/js/translated/table_filters.js:417
msgid "Template"
msgstr ""
@@ -1649,9 +1660,9 @@ msgstr ""
msgid "Parts are templates by default"
msgstr ""
-#: common/models.py:712 part/models.py:921 templates/js/translated/bom.js:1082
+#: common/models.py:712 part/models.py:951 templates/js/translated/bom.js:1300
#: templates/js/translated/table_filters.js:168
-#: templates/js/translated/table_filters.js:434
+#: templates/js/translated/table_filters.js:429
msgid "Assembly"
msgstr ""
@@ -1659,8 +1670,8 @@ msgstr ""
msgid "Parts can be assembled from other components by default"
msgstr ""
-#: common/models.py:719 part/models.py:927
-#: templates/js/translated/table_filters.js:438
+#: common/models.py:719 part/models.py:957
+#: templates/js/translated/table_filters.js:433
msgid "Component"
msgstr ""
@@ -1668,7 +1679,7 @@ msgstr ""
msgid "Parts can be used as sub-components by default"
msgstr ""
-#: common/models.py:726 part/models.py:938
+#: common/models.py:726 part/models.py:968
msgid "Purchaseable"
msgstr ""
@@ -1676,8 +1687,8 @@ msgstr ""
msgid "Parts are purchaseable by default"
msgstr ""
-#: common/models.py:733 part/models.py:943
-#: templates/js/translated/table_filters.js:446
+#: common/models.py:733 part/models.py:973
+#: templates/js/translated/table_filters.js:441
msgid "Salable"
msgstr ""
@@ -1685,10 +1696,10 @@ msgstr ""
msgid "Parts are salable by default"
msgstr ""
-#: common/models.py:740 part/models.py:933
+#: common/models.py:740 part/models.py:963
#: templates/js/translated/table_filters.js:46
#: templates/js/translated/table_filters.js:100
-#: templates/js/translated/table_filters.js:450
+#: templates/js/translated/table_filters.js:445
msgid "Trackable"
msgstr ""
@@ -1696,7 +1707,7 @@ msgstr ""
msgid "Parts are trackable by default"
msgstr ""
-#: common/models.py:747 part/models.py:953
+#: common/models.py:747 part/models.py:983
#: part/templates/part/part_base.html:147
#: templates/js/translated/table_filters.js:42
msgid "Virtual"
@@ -1730,589 +1741,595 @@ msgstr ""
msgid "Include pricing information in BOM tables"
msgstr ""
-#: common/models.py:780
+#: common/models.py:785
+msgid "Show Price History"
+msgstr ""
+
+#: common/models.py:786
+msgid "Display historical pricing for Part"
+msgstr ""
+
+#: common/models.py:792
msgid "Show related parts"
msgstr ""
-#: common/models.py:781
+#: common/models.py:793
msgid "Display related parts for a part"
msgstr ""
-#: common/models.py:787
+#: common/models.py:799
msgid "Create initial stock"
msgstr ""
-#: common/models.py:788
+#: common/models.py:800
msgid "Create initial stock on part creation"
msgstr ""
-#: common/models.py:794
+#: common/models.py:806
msgid "Internal Prices"
msgstr ""
-#: common/models.py:795
+#: common/models.py:807
msgid "Enable internal prices for parts"
msgstr ""
-#: common/models.py:801
+#: common/models.py:813
msgid "Internal Price as BOM-Price"
msgstr ""
-#: common/models.py:802
+#: common/models.py:814
msgid "Use the internal price (if set) in BOM-price calculations"
msgstr ""
-#: common/models.py:808
+#: common/models.py:820
msgid "Part Name Display Format"
msgstr ""
-#: common/models.py:809
+#: common/models.py:821
msgid "Format to display the part name"
msgstr ""
-#: common/models.py:816
+#: common/models.py:828
msgid "Enable Reports"
msgstr ""
-#: common/models.py:817
+#: common/models.py:829
msgid "Enable generation of reports"
msgstr ""
-#: common/models.py:823 templates/stats.html:25
+#: common/models.py:835 templates/stats.html:25
msgid "Debug Mode"
msgstr ""
-#: common/models.py:824
+#: common/models.py:836
msgid "Generate reports in debug mode (HTML output)"
msgstr ""
-#: common/models.py:830
+#: common/models.py:842
msgid "Page Size"
msgstr ""
-#: common/models.py:831
+#: common/models.py:843
msgid "Default page size for PDF reports"
msgstr ""
-#: common/models.py:841
+#: common/models.py:853
msgid "Test Reports"
msgstr ""
-#: common/models.py:842
+#: common/models.py:854
msgid "Enable generation of test reports"
msgstr ""
-#: common/models.py:848
+#: common/models.py:860
msgid "Stock Expiry"
msgstr ""
-#: common/models.py:849
+#: common/models.py:861
msgid "Enable stock expiry functionality"
msgstr ""
-#: common/models.py:855
+#: common/models.py:867
msgid "Sell Expired Stock"
msgstr ""
-#: common/models.py:856
+#: common/models.py:868
msgid "Allow sale of expired stock"
msgstr ""
-#: common/models.py:862
+#: common/models.py:874
msgid "Stock Stale Time"
msgstr ""
-#: common/models.py:863
+#: common/models.py:875
msgid "Number of days stock items are considered stale before expiring"
msgstr "Número de días en que artículos de stock se consideran obsoletos antes de caducar"
-#: common/models.py:865
+#: common/models.py:877
msgid "days"
msgstr ""
-#: common/models.py:870
+#: common/models.py:882
msgid "Build Expired Stock"
msgstr ""
-#: common/models.py:871
+#: common/models.py:883
msgid "Allow building with expired stock"
msgstr ""
-#: common/models.py:877
+#: common/models.py:889
msgid "Stock Ownership Control"
msgstr ""
-#: common/models.py:878
+#: common/models.py:890
msgid "Enable ownership control over stock locations and items"
msgstr "Habilitar control de propiedad sobre ubicaciones de stock y artículos"
-#: common/models.py:884
+#: common/models.py:896
msgid "Build Order Reference Prefix"
msgstr ""
-#: common/models.py:885
+#: common/models.py:897
msgid "Prefix value for build order reference"
msgstr ""
-#: common/models.py:890
+#: common/models.py:902
msgid "Build Order Reference Regex"
msgstr ""
-#: common/models.py:891
+#: common/models.py:903
msgid "Regular expression pattern for matching build order reference"
msgstr ""
-#: common/models.py:895
+#: common/models.py:907
msgid "Sales Order Reference Prefix"
msgstr ""
-#: common/models.py:896
+#: common/models.py:908
msgid "Prefix value for sales order reference"
msgstr ""
-#: common/models.py:901
+#: common/models.py:913
msgid "Purchase Order Reference Prefix"
msgstr ""
-#: common/models.py:902
+#: common/models.py:914
msgid "Prefix value for purchase order reference"
msgstr ""
-#: common/models.py:908
+#: common/models.py:920
msgid "Enable password forgot"
msgstr ""
-#: common/models.py:909
+#: common/models.py:921
msgid "Enable password forgot function on the login pages"
msgstr ""
-#: common/models.py:914
+#: common/models.py:926
msgid "Enable registration"
msgstr ""
-#: common/models.py:915
+#: common/models.py:927
msgid "Enable self-registration for users on the login pages"
msgstr ""
-#: common/models.py:920
+#: common/models.py:932
msgid "Enable SSO"
msgstr ""
-#: common/models.py:921
+#: common/models.py:933
msgid "Enable SSO on the login pages"
msgstr ""
-#: common/models.py:926
+#: common/models.py:938
msgid "Email required"
msgstr ""
-#: common/models.py:927
+#: common/models.py:939
msgid "Require user to supply mail on signup"
msgstr ""
-#: common/models.py:932
+#: common/models.py:944
msgid "Auto-fill SSO users"
msgstr ""
-#: common/models.py:933
+#: common/models.py:945
msgid "Automatically fill out user-details from SSO account-data"
msgstr ""
-#: common/models.py:938
+#: common/models.py:950
msgid "Mail twice"
msgstr ""
-#: common/models.py:939
+#: common/models.py:951
msgid "On signup ask users twice for their mail"
msgstr ""
-#: common/models.py:944
+#: common/models.py:956
msgid "Password twice"
msgstr ""
-#: common/models.py:945
+#: common/models.py:957
msgid "On signup ask users twice for their password"
msgstr ""
-#: common/models.py:950
+#: common/models.py:962
msgid "Group on signup"
msgstr ""
-#: common/models.py:951
+#: common/models.py:963
msgid "Group to which new users are assigned on registration"
msgstr ""
-#: common/models.py:956
+#: common/models.py:968
msgid "Enforce MFA"
msgstr ""
-#: common/models.py:957
+#: common/models.py:969
msgid "Users must use multifactor security."
msgstr ""
-#: common/models.py:964
+#: common/models.py:976
msgid "Enable URL integration"
msgstr ""
-#: common/models.py:965
+#: common/models.py:977
msgid "Enable plugins to add URL routes"
msgstr ""
-#: common/models.py:971
+#: common/models.py:983
msgid "Enable navigation integration"
msgstr ""
-#: common/models.py:972
+#: common/models.py:984
msgid "Enable plugins to integrate into navigation"
msgstr ""
-#: common/models.py:978
+#: common/models.py:990
msgid "Enable app integration"
msgstr ""
-#: common/models.py:979
+#: common/models.py:991
msgid "Enable plugins to add apps"
msgstr ""
-#: common/models.py:985
+#: common/models.py:997
msgid "Enable schedule integration"
msgstr ""
-#: common/models.py:986
+#: common/models.py:998
msgid "Enable plugins to run scheduled tasks"
msgstr ""
-#: common/models.py:992
+#: common/models.py:1004
msgid "Enable event integration"
msgstr ""
-#: common/models.py:993
+#: common/models.py:1005
msgid "Enable plugins to respond to internal events"
msgstr ""
-#: common/models.py:1008 common/models.py:1216
+#: common/models.py:1020 common/models.py:1228
msgid "Settings key (must be unique - case insensitive"
msgstr ""
-#: common/models.py:1039
+#: common/models.py:1051
msgid "Show subscribed parts"
msgstr ""
-#: common/models.py:1040
+#: common/models.py:1052
msgid "Show subscribed parts on the homepage"
msgstr ""
-#: common/models.py:1045
+#: common/models.py:1057
msgid "Show subscribed categories"
msgstr ""
-#: common/models.py:1046
+#: common/models.py:1058
msgid "Show subscribed part categories on the homepage"
msgstr ""
-#: common/models.py:1051
+#: common/models.py:1063
msgid "Show latest parts"
msgstr ""
-#: common/models.py:1052
+#: common/models.py:1064
msgid "Show latest parts on the homepage"
msgstr ""
-#: common/models.py:1057
+#: common/models.py:1069
msgid "Recent Part Count"
msgstr ""
-#: common/models.py:1058
+#: common/models.py:1070
msgid "Number of recent parts to display on index page"
msgstr ""
-#: common/models.py:1064
+#: common/models.py:1076
msgid "Show unvalidated BOMs"
msgstr ""
-#: common/models.py:1065
+#: common/models.py:1077
msgid "Show BOMs that await validation on the homepage"
msgstr ""
-#: common/models.py:1070
+#: common/models.py:1082
msgid "Show recent stock changes"
msgstr ""
-#: common/models.py:1071
+#: common/models.py:1083
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:1076
+#: common/models.py:1088
msgid "Recent Stock Count"
msgstr ""
-#: common/models.py:1077
+#: common/models.py:1089
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:1082
+#: common/models.py:1094
msgid "Show low stock"
msgstr ""
-#: common/models.py:1083
+#: common/models.py:1095
msgid "Show low stock items on the homepage"
msgstr "Mostrar artículos de stock bajo en la página de inicio"
-#: common/models.py:1088
+#: common/models.py:1100
msgid "Show depleted stock"
msgstr ""
-#: common/models.py:1089
+#: common/models.py:1101
msgid "Show depleted stock items on the homepage"
msgstr "Mostrar artículos agotados en la página de inicio"
-#: common/models.py:1094
+#: common/models.py:1106
msgid "Show needed stock"
msgstr ""
-#: common/models.py:1095
+#: common/models.py:1107
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:1100
+#: common/models.py:1112
msgid "Show expired stock"
msgstr ""
-#: common/models.py:1101
+#: common/models.py:1113
msgid "Show expired stock items on the homepage"
msgstr "Mostrar artículos de stock caducados en la página de inicio"
-#: common/models.py:1106
+#: common/models.py:1118
msgid "Show stale stock"
msgstr ""
-#: common/models.py:1107
+#: common/models.py:1119
msgid "Show stale stock items on the homepage"
msgstr "Mostrar elementos de stock obsoletos en la página de inicio"
-#: common/models.py:1112
+#: common/models.py:1124
msgid "Show pending builds"
msgstr ""
-#: common/models.py:1113
+#: common/models.py:1125
msgid "Show pending builds on the homepage"
msgstr ""
-#: common/models.py:1118
+#: common/models.py:1130
msgid "Show overdue builds"
msgstr ""
-#: common/models.py:1119
+#: common/models.py:1131
msgid "Show overdue builds on the homepage"
msgstr ""
-#: common/models.py:1124
+#: common/models.py:1136
msgid "Show outstanding POs"
msgstr ""
-#: common/models.py:1125
+#: common/models.py:1137
msgid "Show outstanding POs on the homepage"
msgstr ""
-#: common/models.py:1130
+#: common/models.py:1142
msgid "Show overdue POs"
msgstr ""
-#: common/models.py:1131
+#: common/models.py:1143
msgid "Show overdue POs on the homepage"
msgstr ""
-#: common/models.py:1136
+#: common/models.py:1148
msgid "Show outstanding SOs"
msgstr ""
-#: common/models.py:1137
+#: common/models.py:1149
msgid "Show outstanding SOs on the homepage"
msgstr ""
-#: common/models.py:1142
+#: common/models.py:1154
msgid "Show overdue SOs"
msgstr ""
-#: common/models.py:1143
+#: common/models.py:1155
msgid "Show overdue SOs on the homepage"
msgstr ""
-#: common/models.py:1149
+#: common/models.py:1161
msgid "Inline label display"
msgstr ""
-#: common/models.py:1150
+#: common/models.py:1162
msgid "Display PDF labels in the browser, instead of downloading as a file"
msgstr ""
-#: common/models.py:1156
+#: common/models.py:1168
msgid "Inline report display"
msgstr ""
-#: common/models.py:1157
+#: common/models.py:1169
msgid "Display PDF reports in the browser, instead of downloading as a file"
msgstr ""
-#: common/models.py:1163
+#: common/models.py:1175
msgid "Search Preview Results"
msgstr ""
-#: common/models.py:1164
+#: common/models.py:1176
msgid "Number of results to show in search preview window"
msgstr ""
-#: common/models.py:1170
+#: common/models.py:1182
msgid "Search Show Stock"
msgstr ""
-#: common/models.py:1171
+#: common/models.py:1183
msgid "Display stock levels in search preview window"
msgstr ""
-#: common/models.py:1177
+#: common/models.py:1189
msgid "Hide Inactive Parts"
msgstr ""
-#: common/models.py:1178
+#: common/models.py:1190
msgid "Hide inactive parts in search preview window"
msgstr ""
-#: common/models.py:1184
+#: common/models.py:1196
msgid "Show Quantity in Forms"
msgstr ""
-#: common/models.py:1185
+#: common/models.py:1197
msgid "Display available part quantity in some forms"
msgstr ""
-#: common/models.py:1191
+#: common/models.py:1203
msgid "Escape Key Closes Forms"
msgstr ""
-#: common/models.py:1192
+#: common/models.py:1204
msgid "Use the escape key to close modal forms"
msgstr ""
-#: common/models.py:1198
+#: common/models.py:1210
msgid "Fixed Navbar"
msgstr ""
-#: common/models.py:1199
+#: common/models.py:1211
msgid "InvenTree navbar position is fixed to the top of the screen"
msgstr ""
-#: common/models.py:1264 company/forms.py:43
+#: common/models.py:1276 company/forms.py:43
msgid "Price break quantity"
msgstr ""
-#: common/models.py:1271 company/serializers.py:264
+#: common/models.py:1283 company/serializers.py:264
#: company/templates/company/supplier_part.html:256
#: templates/js/translated/part.js:915 templates/js/translated/part.js:1867
msgid "Price"
msgstr ""
-#: common/models.py:1272
+#: common/models.py:1284
msgid "Unit price at specified quantity"
msgstr ""
-#: common/models.py:1429 common/models.py:1568
+#: common/models.py:1441 common/models.py:1580
msgid "Endpoint"
msgstr ""
-#: common/models.py:1430
+#: common/models.py:1442
msgid "Endpoint at which this webhook is received"
msgstr ""
-#: common/models.py:1439
+#: common/models.py:1451
msgid "Name for this webhook"
msgstr ""
-#: common/models.py:1444 part/models.py:948 plugin/models.py:46
+#: common/models.py:1456 part/models.py:978 plugin/models.py:46
#: templates/js/translated/table_filters.js:34
#: templates/js/translated/table_filters.js:96
-#: templates/js/translated/table_filters.js:295
-#: templates/js/translated/table_filters.js:417
+#: templates/js/translated/table_filters.js:290
+#: templates/js/translated/table_filters.js:412
msgid "Active"
msgstr ""
-#: common/models.py:1445
+#: common/models.py:1457
msgid "Is this webhook active"
msgstr ""
-#: common/models.py:1459
+#: common/models.py:1471
msgid "Token"
msgstr ""
-#: common/models.py:1460
+#: common/models.py:1472
msgid "Token for access"
msgstr ""
-#: common/models.py:1467
+#: common/models.py:1479
msgid "Secret"
msgstr ""
-#: common/models.py:1468
+#: common/models.py:1480
msgid "Shared secret for HMAC"
msgstr ""
-#: common/models.py:1535
+#: common/models.py:1547
msgid "Message ID"
msgstr ""
-#: common/models.py:1536
+#: common/models.py:1548
msgid "Unique identifier for this message"
msgstr ""
-#: common/models.py:1544
+#: common/models.py:1556
msgid "Host"
msgstr ""
-#: common/models.py:1545
+#: common/models.py:1557
msgid "Host from which this message was received"
msgstr ""
-#: common/models.py:1552
+#: common/models.py:1564
msgid "Header"
msgstr ""
-#: common/models.py:1553
+#: common/models.py:1565
msgid "Header of this message"
msgstr ""
-#: common/models.py:1559
+#: common/models.py:1571
msgid "Body"
msgstr ""
-#: common/models.py:1560
+#: common/models.py:1572
msgid "Body of this message"
msgstr ""
-#: common/models.py:1569
+#: common/models.py:1581
msgid "Endpoint on which this message was received"
msgstr ""
-#: common/models.py:1574
+#: common/models.py:1586
msgid "Worked on"
msgstr ""
-#: common/models.py:1575
+#: common/models.py:1587
msgid "Was the work on this message finished?"
msgstr ""
#: common/views.py:93 order/templates/order/order_wizard/po_upload.html:49
#: order/templates/order/purchase_order_detail.html:24 order/views.py:243
-#: part/templates/part/bom_upload/upload_file.html:52
-#: part/templates/part/import_wizard/part_upload.html:47 part/views.py:213
-#: part/views.py:773
+#: part/templates/part/import_wizard/part_upload.html:47 part/views.py:210
+#: templates/patterns/wizard/upload.html:35
msgid "Upload File"
msgstr ""
-#: common/views.py:94 order/templates/order/order_wizard/match_fields.html:52
-#: order/views.py:244 part/templates/part/bom_upload/match_fields.html:52
+#: common/views.py:94 order/views.py:244
#: part/templates/part/import_wizard/ajax_match_fields.html:45
-#: part/templates/part/import_wizard/match_fields.html:52 part/views.py:214
-#: part/views.py:774
+#: part/templates/part/import_wizard/match_fields.html:52 part/views.py:211
+#: templates/patterns/wizard/match_fields.html:51
msgid "Match Fields"
msgstr ""
@@ -2328,15 +2345,13 @@ msgstr ""
msgid "Parts imported"
msgstr ""
-#: common/views.py:517 order/templates/order/order_wizard/match_fields.html:27
-#: order/templates/order/order_wizard/match_parts.html:19
+#: common/views.py:517 order/templates/order/order_wizard/match_parts.html:19
#: order/templates/order/order_wizard/po_upload.html:47
-#: part/templates/part/bom_upload/match_fields.html:27
-#: part/templates/part/bom_upload/match_parts.html:19
-#: part/templates/part/bom_upload/upload_file.html:50
#: part/templates/part/import_wizard/match_fields.html:27
#: part/templates/part/import_wizard/match_references.html:19
#: part/templates/part/import_wizard/part_upload.html:45
+#: templates/patterns/wizard/match_fields.html:26
+#: templates/patterns/wizard/upload.html:33
msgid "Previous Step"
msgstr ""
@@ -2404,7 +2419,7 @@ msgstr ""
msgid "Link to external company information"
msgstr ""
-#: company/models.py:139 part/models.py:840
+#: company/models.py:139 part/models.py:870
msgid "Image"
msgstr ""
@@ -2442,7 +2457,7 @@ msgid "Default currency used for this company"
msgstr ""
#: company/models.py:320 company/models.py:535 stock/models.py:471
-#: stock/templates/stock/item_base.html:142 templates/js/translated/bom.js:328
+#: stock/templates/stock/item_base.html:144 templates/js/translated/bom.js:541
msgid "Base Part"
msgstr ""
@@ -2453,11 +2468,11 @@ 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:380
+#: stock/templates/stock/item_base.html:382
#: templates/js/translated/company.js:333
#: templates/js/translated/company.js:517
#: templates/js/translated/company.js:800 templates/js/translated/part.js:234
-#: templates/js/translated/table_filters.js:389
+#: templates/js/translated/table_filters.js:384
msgid "Manufacturer"
msgstr ""
@@ -2488,7 +2503,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:390
+#: stock/templates/stock/item_base.html:392
msgid "Manufacturer Part"
msgstr ""
@@ -2499,7 +2514,7 @@ msgstr ""
#: company/models.py:422
#: report/templates/report/inventree_test_report_base.html:95
#: stock/models.py:1988 templates/js/translated/company.js:647
-#: templates/js/translated/part.js:715 templates/js/translated/stock.js:1304
+#: templates/js/translated/part.js:715 templates/js/translated/stock.js:1332
msgid "Value"
msgstr ""
@@ -2507,9 +2522,9 @@ msgstr ""
msgid "Parameter value"
msgstr ""
-#: company/models.py:429 part/models.py:915 part/models.py:2457
+#: company/models.py:429 part/models.py:945 part/models.py:2493
#: part/templates/part/part_base.html:288
-#: templates/InvenTree/settings/settings.html:287
+#: templates/InvenTree/settings/settings.html:324
#: templates/js/translated/company.js:653 templates/js/translated/part.js:721
msgid "Units"
msgstr ""
@@ -2526,11 +2541,11 @@ msgstr ""
#: company/templates/company/supplier_part.html:87 order/models.py:227
#: order/templates/order/order_base.html:112
#: order/templates/order/order_wizard/select_pos.html:30 part/bom.py:237
-#: part/bom.py:265 stock/templates/stock/item_base.html:397
+#: part/bom.py:265 stock/templates/stock/item_base.html:399
#: templates/js/translated/company.js:337
#: templates/js/translated/company.js:774 templates/js/translated/order.js:823
#: templates/js/translated/part.js:215 templates/js/translated/part.js:863
-#: templates/js/translated/table_filters.js:393
+#: templates/js/translated/table_filters.js:388
msgid "Supplier"
msgstr ""
@@ -2561,22 +2576,23 @@ msgid "Supplier part description"
msgstr ""
#: company/models.py:576 company/templates/company/supplier_part.html:119
-#: part/models.py:2648 report/templates/report/inventree_po_report.html:93
-#: report/templates/report/inventree_so_report.html:93
+#: part/models.py:2717 part/templates/part/upload_bom.html:59
+#: report/templates/report/inventree_po_report.html:93
+#: report/templates/report/inventree_so_report.html:93 stock/serializers.py:409
msgid "Note"
msgstr ""
-#: company/models.py:580 part/models.py:1781
+#: company/models.py:580 part/models.py:1817
msgid "base cost"
msgstr ""
-#: company/models.py:580 part/models.py:1781
+#: company/models.py:580 part/models.py:1817
msgid "Minimum charge (e.g. stocking fee)"
msgstr ""
#: company/models.py:582 company/templates/company/supplier_part.html:112
-#: stock/models.py:495 stock/templates/stock/item_base.html:338
-#: templates/js/translated/company.js:850 templates/js/translated/stock.js:1799
+#: stock/models.py:495 stock/templates/stock/item_base.html:340
+#: templates/js/translated/company.js:850 templates/js/translated/stock.js:1923
msgid "Packaging"
msgstr ""
@@ -2584,7 +2600,7 @@ msgstr ""
msgid "Part packaging"
msgstr ""
-#: company/models.py:584 part/models.py:1783
+#: company/models.py:584 part/models.py:1819
msgid "multiple"
msgstr ""
@@ -2645,11 +2661,11 @@ msgstr ""
#: company/templates/company/company_base.html:83 order/models.py:552
#: order/templates/order/sales_order_base.html:115 stock/models.py:514
-#: stock/models.py:515 stock/serializers.py:626
-#: stock/templates/stock/item_base.html:290
+#: stock/models.py:515 stock/serializers.py:683
+#: stock/templates/stock/item_base.html:292
#: templates/js/translated/company.js:329 templates/js/translated/order.js:1240
-#: templates/js/translated/stock.js:2610
-#: templates/js/translated/table_filters.js:397
+#: templates/js/translated/stock.js:2734
+#: templates/js/translated/table_filters.js:392
msgid "Customer"
msgstr ""
@@ -2679,7 +2695,7 @@ msgstr ""
#: company/templates/company/detail.html:20
#: company/templates/company/manufacturer_part.html:118
-#: part/templates/part/detail.html:353
+#: part/templates/part/detail.html:356
msgid "New Supplier Part"
msgstr ""
@@ -2687,8 +2703,8 @@ msgstr ""
#: company/templates/company/detail.html:79
#: company/templates/company/manufacturer_part.html:127
#: company/templates/company/manufacturer_part.html:156
-#: part/templates/part/category.html:171 part/templates/part/detail.html:362
-#: part/templates/part/detail.html:391
+#: part/templates/part/category.html:171 part/templates/part/detail.html:365
+#: part/templates/part/detail.html:394
msgid "Options"
msgstr ""
@@ -2716,7 +2732,7 @@ msgstr ""
msgid "Create new manufacturer part"
msgstr ""
-#: company/templates/company/detail.html:67 part/templates/part/detail.html:381
+#: company/templates/company/detail.html:67 part/templates/part/detail.html:384
msgid "New Manufacturer Part"
msgstr ""
@@ -2730,7 +2746,7 @@ msgstr ""
#: order/templates/order/order_base.html:13
#: order/templates/order/purchase_orders.html:8
#: order/templates/order/purchase_orders.html:12
-#: part/templates/part/detail.html:85 part/templates/part/part_sidebar.html:37
+#: part/templates/part/detail.html:85 part/templates/part/part_sidebar.html:40
#: templates/InvenTree/index.html:252 templates/InvenTree/search.html:197
#: templates/InvenTree/settings/sidebar.html:45 templates/navbar.html:47
#: users/models.py:45
@@ -2752,7 +2768,7 @@ msgstr ""
#: order/templates/order/sales_order_base.html:13
#: order/templates/order/sales_orders.html:8
#: order/templates/order/sales_orders.html:15
-#: part/templates/part/detail.html:108 part/templates/part/part_sidebar.html:41
+#: part/templates/part/detail.html:108 part/templates/part/part_sidebar.html:44
#: templates/InvenTree/index.html:283 templates/InvenTree/search.html:217
#: templates/InvenTree/settings/sidebar.html:47 templates/navbar.html:58
#: users/models.py:46
@@ -2770,7 +2786,7 @@ msgid "New Sales Order"
msgstr ""
#: company/templates/company/detail.html:168
-#: templates/js/translated/build.js:1059
+#: templates/js/translated/build.js:1281
msgid "Assigned Stock"
msgstr ""
@@ -2780,13 +2796,13 @@ msgstr ""
#: company/templates/company/detail.html:384
#: company/templates/company/manufacturer_part.html:215
-#: part/templates/part/detail.html:435
+#: part/templates/part/detail.html:438
msgid "Delete Supplier Parts?"
msgstr ""
#: company/templates/company/detail.html:385
#: company/templates/company/manufacturer_part.html:216
-#: part/templates/part/detail.html:436
+#: part/templates/part/detail.html:439
msgid "All selected supplier parts will be deleted"
msgstr ""
@@ -2824,36 +2840,36 @@ 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:35 part/templates/part/prices.html:163
+#: part/templates/part/part_sidebar.html:38 part/templates/part/prices.html:163
#: templates/InvenTree/search.html:188 templates/navbar.html:45
msgid "Suppliers"
msgstr ""
#: company/templates/company/manufacturer_part.html:129
-#: part/templates/part/detail.html:364
+#: part/templates/part/detail.html:367
msgid "Delete supplier parts"
msgstr ""
#: company/templates/company/manufacturer_part.html:129
#: company/templates/company/manufacturer_part.html:158
#: company/templates/company/manufacturer_part.html:254
-#: part/templates/part/detail.html:364 part/templates/part/detail.html:393
+#: part/templates/part/detail.html:367 part/templates/part/detail.html:396
#: templates/js/translated/company.js:426 templates/js/translated/helpers.js:31
-#: users/models.py:212
+#: users/models.py:217
msgid "Delete"
msgstr ""
#: company/templates/company/manufacturer_part.html:143
#: company/templates/company/manufacturer_part_sidebar.html:5
#: part/templates/part/category_sidebar.html:17
-#: part/templates/part/detail.html:187 part/templates/part/part_sidebar.html:8
+#: part/templates/part/detail.html:190 part/templates/part/part_sidebar.html:9
msgid "Parameters"
msgstr ""
#: company/templates/company/manufacturer_part.html:147
-#: part/templates/part/detail.html:192
+#: part/templates/part/detail.html:195
#: templates/InvenTree/settings/category.html:12
-#: templates/InvenTree/settings/part.html:65
+#: templates/InvenTree/settings/part.html:66
msgid "New Parameter"
msgstr ""
@@ -2862,7 +2878,7 @@ msgid "Delete parameters"
msgstr ""
#: company/templates/company/manufacturer_part.html:191
-#: part/templates/part/detail.html:892
+#: part/templates/part/detail.html:895
msgid "Add Parameter"
msgstr ""
@@ -2892,8 +2908,8 @@ msgstr "Artículos de Stock Asignados"
#: company/templates/company/supplier_part.html:7
#: company/templates/company/supplier_part.html:24 stock/models.py:479
-#: stock/templates/stock/item_base.html:402
-#: templates/js/translated/company.js:790 templates/js/translated/stock.js:1756
+#: stock/templates/stock/item_base.html:404
+#: templates/js/translated/company.js:790 templates/js/translated/stock.js:1880
msgid "Supplier Part"
msgstr ""
@@ -2919,7 +2935,7 @@ msgstr ""
#: company/templates/company/supplier_part.html:142
#: part/templates/part/detail.html:25 stock/templates/stock/location.html:167
-#: templates/js/translated/stock.js:368
+#: templates/js/translated/stock.js:369
msgid "New Stock Item"
msgstr ""
@@ -2940,7 +2956,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:1628
+#: part/templates/part/prices.html:271 part/views.py:1319
msgid "Add Price Break"
msgstr ""
@@ -2948,11 +2964,11 @@ msgstr ""
msgid "No price break information found"
msgstr ""
-#: company/templates/company/supplier_part.html:224 part/views.py:1690
+#: company/templates/company/supplier_part.html:224 part/views.py:1381
msgid "Delete Price Break"
msgstr ""
-#: company/templates/company/supplier_part.html:238 part/views.py:1676
+#: company/templates/company/supplier_part.html:238 part/views.py:1367
msgid "Edit Price Break"
msgstr ""
@@ -2965,15 +2981,15 @@ msgid "Delete price break"
msgstr ""
#: company/templates/company/supplier_part_navbar.html:15
-#: part/templates/part/part_sidebar.html:14
+#: part/templates/part/part_sidebar.html:15
#: 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:150
#: templates/InvenTree/settings/sidebar.html:41
-#: templates/js/translated/bom.js:340 templates/js/translated/part.js:495
+#: templates/js/translated/bom.js:553 templates/js/translated/part.js:495
#: templates/js/translated/part.js:630 templates/js/translated/part.js:1125
-#: templates/js/translated/part.js:1286 templates/js/translated/stock.js:935
-#: templates/js/translated/stock.js:1588 templates/navbar.html:28
+#: templates/js/translated/part.js:1286 templates/js/translated/stock.js:936
+#: templates/js/translated/stock.js:1712 templates/navbar.html:28
msgid "Stock"
msgstr ""
@@ -2987,7 +3003,7 @@ msgid "Supplier Part Pricing"
msgstr ""
#: company/templates/company/supplier_part_navbar.html:29
-#: part/templates/part/part_sidebar.html:28
+#: part/templates/part/part_sidebar.html:30
msgid "Pricing"
msgstr ""
@@ -2996,7 +3012,7 @@ msgstr ""
#: stock/templates/stock/location.html:151
#: stock/templates/stock/location.html:163
#: stock/templates/stock/location_sidebar.html:7
-#: templates/InvenTree/search.html:152 templates/js/translated/stock.js:2509
+#: templates/InvenTree/search.html:152 templates/js/translated/stock.js:2633
#: templates/stats.html:105 templates/stats.html:114 users/models.py:43
msgid "Stock Items"
msgstr "Artículos de Stock"
@@ -3026,20 +3042,20 @@ msgstr ""
msgid "New Company"
msgstr ""
-#: company/views.py:129 part/views.py:593
+#: company/views.py:129 part/views.py:591
msgid "Download Image"
msgstr ""
-#: company/views.py:158 part/views.py:625
+#: company/views.py:158 part/views.py:623
msgid "Image size exceeds maximum allowable size for download"
msgstr ""
-#: company/views.py:165 part/views.py:632
+#: company/views.py:165 part/views.py:630
#, python-brace-format
msgid "Invalid response: {code}"
msgstr ""
-#: company/views.py:174 part/views.py:641
+#: company/views.py:174 part/views.py:639
msgid "Supplied URL is not a valid image file"
msgstr ""
@@ -3256,16 +3272,16 @@ msgid "Supplier part must match supplier"
msgstr ""
#: order/models.py:855 order/models.py:946 order/models.py:1042
-#: templates/js/translated/order.js:1820 templates/js/translated/stock.js:2271
+#: templates/js/translated/order.js:1820 templates/js/translated/stock.js:2395
msgid "Order"
msgstr ""
#: order/models.py:856 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:352
+#: stock/templates/stock/item_base.html:354
#: templates/js/translated/order.js:801 templates/js/translated/part.js:838
-#: templates/js/translated/stock.js:1733 templates/js/translated/stock.js:2591
+#: templates/js/translated/stock.js:1857 templates/js/translated/stock.js:2715
msgid "Purchase Order"
msgstr ""
@@ -3276,7 +3292,7 @@ msgstr ""
#: order/models.py:884 order/templates/order/order_base.html:163
#: templates/js/translated/order.js:589 templates/js/translated/order.js:1118
#: templates/js/translated/part.js:910 templates/js/translated/part.js:937
-#: templates/js/translated/table_filters.js:317
+#: templates/js/translated/table_filters.js:312
msgid "Received"
msgstr ""
@@ -3285,8 +3301,8 @@ msgid "Number of items received"
msgstr "Número de artículos recibidos"
#: order/models.py:892 part/templates/part/prices.html:176 stock/models.py:608
-#: stock/serializers.py:170 stock/templates/stock/item_base.html:359
-#: templates/js/translated/stock.js:1787
+#: stock/serializers.py:170 stock/templates/stock/item_base.html:361
+#: templates/js/translated/stock.js:1911
msgid "Purchase Price"
msgstr ""
@@ -3530,7 +3546,7 @@ msgstr ""
#: order/templates/order/order_base.html:94
#: order/templates/order/sales_order_base.html:89
-#: templates/js/translated/stock.js:2327
+#: templates/js/translated/stock.js:2451
msgid "Order Status"
msgstr ""
@@ -3574,73 +3590,20 @@ msgstr "Completar este pedido significa que los artículos de orden y línea ya
msgid "After placing this purchase order, line items will no longer be editable."
msgstr "Después de realizar esta orden de compra, los artículos de línea ya no serán editables."
-#: order/templates/order/order_wizard/match_fields.html:9
-#: part/templates/part/bom_upload/match_fields.html:9
-#: part/templates/part/import_wizard/ajax_match_fields.html:9
-#: part/templates/part/import_wizard/match_fields.html:9
-msgid "Missing selections for the following required columns"
-msgstr ""
-
-#: order/templates/order/order_wizard/match_fields.html:20
-#: part/templates/part/bom_upload/match_fields.html:20
-#: part/templates/part/import_wizard/ajax_match_fields.html:20
-#: part/templates/part/import_wizard/match_fields.html:20
-msgid "Duplicate selections found, see below. Fix them then retry submitting."
-msgstr ""
-
-#: order/templates/order/order_wizard/match_fields.html:29
-#: order/templates/order/order_wizard/match_parts.html:21
-#: part/templates/part/bom_upload/match_fields.html:29
-#: part/templates/part/bom_upload/match_parts.html:21
-#: part/templates/part/import_wizard/match_fields.html:29
-#: part/templates/part/import_wizard/match_references.html:21
-msgid "Submit Selections"
-msgstr ""
-
-#: order/templates/order/order_wizard/match_fields.html:35
-#: part/templates/part/bom_upload/match_fields.html:35
-#: part/templates/part/import_wizard/ajax_match_fields.html:28
-#: part/templates/part/import_wizard/match_fields.html:35
-msgid "File Fields"
-msgstr ""
-
-#: order/templates/order/order_wizard/match_fields.html:42
-#: part/templates/part/bom_upload/match_fields.html:42
-#: part/templates/part/import_wizard/ajax_match_fields.html:35
-#: part/templates/part/import_wizard/match_fields.html:42
-msgid "Remove column"
-msgstr ""
-
-#: order/templates/order/order_wizard/match_fields.html:60
-#: part/templates/part/bom_upload/match_fields.html:60
-#: part/templates/part/import_wizard/ajax_match_fields.html:53
-#: part/templates/part/import_wizard/match_fields.html:60
-msgid "Duplicate selection"
-msgstr ""
-
-#: order/templates/order/order_wizard/match_fields.html:71
-#: order/templates/order/order_wizard/match_parts.html:52
-#: part/templates/part/bom_upload/match_fields.html:71
-#: part/templates/part/bom_upload/match_parts.html:53
-#: part/templates/part/import_wizard/ajax_match_fields.html:64
-#: part/templates/part/import_wizard/ajax_match_references.html:42
-#: part/templates/part/import_wizard/match_fields.html:71
-#: part/templates/part/import_wizard/match_references.html:49
-#: templates/js/translated/build.js:300 templates/js/translated/build.js:1311
-#: templates/js/translated/order.js:537 templates/js/translated/order.js:1488
-#: templates/js/translated/stock.js:601 templates/js/translated/stock.js:769
-msgid "Remove row"
-msgstr ""
-
#: order/templates/order/order_wizard/match_parts.html:12
-#: part/templates/part/bom_upload/match_parts.html:12
#: part/templates/part/import_wizard/ajax_match_references.html:12
#: part/templates/part/import_wizard/match_references.html:12
msgid "Errors exist in the submitted data"
msgstr ""
+#: order/templates/order/order_wizard/match_parts.html:21
+#: part/templates/part/import_wizard/match_fields.html:29
+#: part/templates/part/import_wizard/match_references.html:21
+#: templates/patterns/wizard/match_fields.html:28
+msgid "Submit Selections"
+msgstr ""
+
#: order/templates/order/order_wizard/match_parts.html:28
-#: part/templates/part/bom_upload/match_parts.html:28
#: part/templates/part/import_wizard/ajax_match_references.html:21
#: part/templates/part/import_wizard/match_references.html:28
msgid "Row"
@@ -3650,6 +3613,19 @@ msgstr ""
msgid "Select Supplier Part"
msgstr ""
+#: order/templates/order/order_wizard/match_parts.html:52
+#: part/templates/part/import_wizard/ajax_match_fields.html:64
+#: part/templates/part/import_wizard/ajax_match_references.html:42
+#: part/templates/part/import_wizard/match_fields.html:71
+#: part/templates/part/import_wizard/match_references.html:49
+#: templates/js/translated/bom.js:76 templates/js/translated/build.js:380
+#: templates/js/translated/build.js:528 templates/js/translated/build.js:1547
+#: templates/js/translated/order.js:537 templates/js/translated/order.js:1488
+#: templates/js/translated/stock.js:602 templates/js/translated/stock.js:770
+#: templates/patterns/wizard/match_fields.html:70
+msgid "Remove row"
+msgstr ""
+
#: order/templates/order/order_wizard/po_upload.html:8
msgid "Return to Orders"
msgstr ""
@@ -3659,9 +3635,9 @@ msgid "Upload File for Purchase Order"
msgstr ""
#: order/templates/order/order_wizard/po_upload.html:25
-#: part/templates/part/bom_upload/upload_file.html:21
#: part/templates/part/import_wizard/ajax_part_upload.html:10
#: part/templates/part/import_wizard/part_upload.html:23
+#: templates/patterns/wizard/upload.html:11
#, python-format
msgid "Step %(step)s of %(count)s"
msgstr ""
@@ -3819,7 +3795,7 @@ msgid "Pending Shipments"
msgstr ""
#: order/templates/order/sales_order_detail.html:48
-#: templates/js/translated/bom.js:732 templates/js/translated/build.js:1243
+#: templates/js/translated/bom.js:945 templates/js/translated/build.js:1465
msgid "Actions"
msgstr ""
@@ -3922,7 +3898,7 @@ msgstr ""
msgid "This field is required"
msgstr ""
-#: part/bom.py:125 part/models.py:83 part/models.py:849
+#: part/bom.py:125 part/models.py:83 part/models.py:879
#: part/templates/part/category.html:108 part/templates/part/part_base.html:338
msgid "Default Location"
msgstr ""
@@ -3968,7 +3944,7 @@ msgstr ""
msgid "Default keywords for parts in this category"
msgstr ""
-#: part/models.py:97 part/models.py:2533 part/templates/part/category.html:15
+#: part/models.py:97 part/models.py:2569 part/templates/part/category.html:15
#: part/templates/part/part_app_base.html:10
msgid "Part Category"
msgstr ""
@@ -3994,408 +3970,478 @@ msgstr ""
msgid "Invalid choice for parent part"
msgstr "Parte inválida para parte principal"
-#: part/models.py:502 part/models.py:514
+#: part/models.py:532 part/models.py:544
#, python-brace-format
msgid "Part '{p1}' is used in BOM for '{p2}' (recursive)"
msgstr ""
-#: part/models.py:644
+#: part/models.py:674
msgid "Next available serial numbers are"
msgstr ""
-#: part/models.py:648
+#: part/models.py:678
msgid "Next available serial number is"
msgstr ""
-#: part/models.py:653
+#: part/models.py:683
msgid "Most recent serial number is"
msgstr ""
-#: part/models.py:748
+#: part/models.py:778
msgid "Duplicate IPN not allowed in part settings"
msgstr ""
-#: part/models.py:773
+#: part/models.py:803 part/models.py:2622
msgid "Part name"
msgstr ""
-#: part/models.py:780
+#: part/models.py:810
msgid "Is Template"
msgstr ""
-#: part/models.py:781
+#: part/models.py:811
msgid "Is this part a template part?"
msgstr ""
-#: part/models.py:791
+#: part/models.py:821
msgid "Is this part a variant of another part?"
msgstr ""
-#: part/models.py:792
+#: part/models.py:822
msgid "Variant Of"
msgstr ""
-#: part/models.py:798
+#: part/models.py:828
msgid "Part description"
msgstr ""
-#: part/models.py:803 part/templates/part/category.html:86
+#: part/models.py:833 part/templates/part/category.html:86
#: part/templates/part/part_base.html:302
msgid "Keywords"
msgstr ""
-#: part/models.py:804
+#: part/models.py:834
msgid "Part keywords to improve visibility in search results"
msgstr ""
-#: part/models.py:811 part/models.py:2283 part/models.py:2532
+#: part/models.py:841 part/models.py:2319 part/models.py:2568
#: part/templates/part/part_base.html:265
#: part/templates/part/set_category.html:15
-#: templates/InvenTree/settings/settings.html:186
+#: templates/InvenTree/settings/settings.html:223
#: templates/js/translated/part.js:1268
msgid "Category"
msgstr ""
-#: part/models.py:812
+#: part/models.py:842
msgid "Part category"
msgstr ""
-#: part/models.py:817 part/templates/part/part_base.html:274
+#: part/models.py:847 part/templates/part/part_base.html:274
#: templates/js/translated/part.js:618 templates/js/translated/part.js:1221
-#: templates/js/translated/stock.js:1560
+#: templates/js/translated/stock.js:1684
msgid "IPN"
msgstr ""
-#: part/models.py:818
+#: part/models.py:848
msgid "Internal Part Number"
msgstr ""
-#: part/models.py:824
+#: part/models.py:854
msgid "Part revision or version number"
msgstr ""
-#: part/models.py:825 part/templates/part/part_base.html:281
+#: part/models.py:855 part/templates/part/part_base.html:281
#: report/models.py:200 templates/js/translated/part.js:622
msgid "Revision"
msgstr ""
-#: part/models.py:847
+#: part/models.py:877
msgid "Where is this item normally stored?"
msgstr ""
-#: part/models.py:894 part/templates/part/part_base.html:347
+#: part/models.py:924 part/templates/part/part_base.html:347
msgid "Default Supplier"
msgstr ""
-#: part/models.py:895
+#: part/models.py:925
msgid "Default supplier part"
msgstr ""
-#: part/models.py:902
+#: part/models.py:932
msgid "Default Expiry"
msgstr ""
-#: part/models.py:903
+#: part/models.py:933
msgid "Expiry time (in days) for stock items of this part"
msgstr "Tiempo de expiración (en días) para los artículos de stock de esta parte"
-#: part/models.py:908 part/templates/part/part_base.html:196
+#: part/models.py:938 part/templates/part/part_base.html:196
msgid "Minimum Stock"
msgstr ""
-#: part/models.py:909
+#: part/models.py:939
msgid "Minimum allowed stock level"
msgstr ""
-#: part/models.py:916
+#: part/models.py:946
msgid "Stock keeping units for this part"
msgstr ""
-#: part/models.py:922
+#: part/models.py:952
msgid "Can this part be built from other parts?"
msgstr ""
-#: part/models.py:928
+#: part/models.py:958
msgid "Can this part be used to build other parts?"
msgstr ""
-#: part/models.py:934
+#: part/models.py:964
msgid "Does this part have tracking for unique items?"
msgstr ""
-#: part/models.py:939
+#: part/models.py:969
msgid "Can this part be purchased from external suppliers?"
msgstr ""
-#: part/models.py:944
+#: part/models.py:974
msgid "Can this part be sold to customers?"
msgstr ""
-#: part/models.py:949
+#: part/models.py:979
msgid "Is this part active?"
msgstr ""
-#: part/models.py:954
+#: part/models.py:984
msgid "Is this a virtual part, such as a software product or license?"
msgstr ""
-#: part/models.py:959
+#: part/models.py:989
msgid "Part notes - supports Markdown formatting"
msgstr ""
-#: part/models.py:962
+#: part/models.py:992
msgid "BOM checksum"
msgstr ""
-#: part/models.py:962
+#: part/models.py:992
msgid "Stored BOM checksum"
msgstr ""
-#: part/models.py:965
+#: part/models.py:995
msgid "BOM checked by"
msgstr ""
-#: part/models.py:967
+#: part/models.py:997
msgid "BOM checked date"
msgstr ""
-#: part/models.py:971
+#: part/models.py:1001
msgid "Creation User"
msgstr ""
-#: part/models.py:1783
+#: part/models.py:1819
msgid "Sell multiple"
msgstr ""
-#: part/models.py:2333
+#: part/models.py:2369
msgid "Test templates can only be created for trackable parts"
msgstr ""
-#: part/models.py:2350
+#: part/models.py:2386
msgid "Test with this name already exists for this part"
msgstr ""
-#: part/models.py:2370 templates/js/translated/part.js:1714
-#: templates/js/translated/stock.js:1284
+#: part/models.py:2406 templates/js/translated/part.js:1714
+#: templates/js/translated/stock.js:1312
msgid "Test Name"
msgstr ""
-#: part/models.py:2371
+#: part/models.py:2407
msgid "Enter a name for the test"
msgstr ""
-#: part/models.py:2376
+#: part/models.py:2412
msgid "Test Description"
msgstr ""
-#: part/models.py:2377
+#: part/models.py:2413
msgid "Enter description for this test"
msgstr ""
-#: part/models.py:2382 templates/js/translated/part.js:1723
-#: templates/js/translated/table_filters.js:281
+#: part/models.py:2418 templates/js/translated/part.js:1723
+#: templates/js/translated/table_filters.js:276
msgid "Required"
msgstr ""
-#: part/models.py:2383
+#: part/models.py:2419
msgid "Is this test required to pass?"
msgstr ""
-#: part/models.py:2388 templates/js/translated/part.js:1731
+#: part/models.py:2424 templates/js/translated/part.js:1731
msgid "Requires Value"
msgstr ""
-#: part/models.py:2389
+#: part/models.py:2425
msgid "Does this test require a value when adding a test result?"
msgstr ""
-#: part/models.py:2394 templates/js/translated/part.js:1738
+#: part/models.py:2430 templates/js/translated/part.js:1738
msgid "Requires Attachment"
msgstr ""
-#: part/models.py:2395
+#: part/models.py:2431
msgid "Does this test require a file attachment when adding a test result?"
msgstr ""
-#: part/models.py:2406
+#: part/models.py:2442
#, python-brace-format
msgid "Illegal character in template name ({c})"
msgstr ""
-#: part/models.py:2442
+#: part/models.py:2478
msgid "Parameter template name must be unique"
msgstr ""
-#: part/models.py:2450
+#: part/models.py:2486
msgid "Parameter Name"
msgstr ""
-#: part/models.py:2457
+#: part/models.py:2493
msgid "Parameter Units"
msgstr ""
-#: part/models.py:2487
+#: part/models.py:2523
msgid "Parent Part"
msgstr "Parte principal"
-#: part/models.py:2489 part/models.py:2538 part/models.py:2539
-#: templates/InvenTree/settings/settings.html:181
+#: part/models.py:2525 part/models.py:2574 part/models.py:2575
+#: templates/InvenTree/settings/settings.html:218
msgid "Parameter Template"
msgstr ""
-#: part/models.py:2491
+#: part/models.py:2527
msgid "Data"
msgstr ""
-#: part/models.py:2491
+#: part/models.py:2527
msgid "Parameter Value"
msgstr ""
-#: part/models.py:2543 templates/InvenTree/settings/settings.html:190
+#: part/models.py:2579 templates/InvenTree/settings/settings.html:227
msgid "Default Value"
msgstr ""
-#: part/models.py:2544
+#: part/models.py:2580
msgid "Default Parameter Value"
msgstr ""
+#: part/models.py:2614
+msgid "Part ID or part name"
+msgstr ""
+
+#: part/models.py:2617 templates/js/translated/model_renderers.js:182
+msgid "Part ID"
+msgstr ""
+
+#: part/models.py:2618
+msgid "Unique part ID value"
+msgstr ""
+
#: part/models.py:2621
-msgid "Select parent part"
-msgstr "Seleccionar parte principal"
+msgid "Part Name"
+msgstr ""
+
+#: part/models.py:2625
+msgid "Part IPN"
+msgstr ""
+
+#: part/models.py:2626
+msgid "Part IPN value"
+msgstr ""
#: part/models.py:2629
-msgid "Sub part"
+msgid "Level"
msgstr ""
#: part/models.py:2630
+msgid "BOM level"
+msgstr ""
+
+#: part/models.py:2690
+msgid "Select parent part"
+msgstr "Seleccionar parte principal"
+
+#: part/models.py:2698
+msgid "Sub part"
+msgstr ""
+
+#: part/models.py:2699
msgid "Select part to be used in BOM"
msgstr ""
-#: part/models.py:2636
+#: part/models.py:2705
msgid "BOM quantity for this BOM item"
msgstr ""
-#: part/models.py:2638 templates/js/translated/bom.js:578
-#: templates/js/translated/bom.js:652
+#: part/models.py:2707 part/templates/part/upload_bom.html:58
+#: templates/js/translated/bom.js:791 templates/js/translated/bom.js:865
#: templates/js/translated/table_filters.js:92
msgid "Optional"
msgstr ""
-#: part/models.py:2638
+#: part/models.py:2707
msgid "This BOM item is optional"
msgstr ""
-#: part/models.py:2641
+#: part/models.py:2710 part/templates/part/upload_bom.html:55
msgid "Overage"
msgstr ""
-#: part/models.py:2642
+#: part/models.py:2711
msgid "Estimated build wastage quantity (absolute or percentage)"
msgstr ""
-#: part/models.py:2645
+#: part/models.py:2714
msgid "BOM item reference"
msgstr ""
-#: part/models.py:2648
+#: part/models.py:2717
msgid "BOM item notes"
msgstr ""
-#: part/models.py:2650
+#: part/models.py:2719
msgid "Checksum"
msgstr ""
-#: part/models.py:2650
+#: part/models.py:2719
msgid "BOM line checksum"
msgstr ""
-#: part/models.py:2654 templates/js/translated/bom.js:669
+#: part/models.py:2723 part/templates/part/upload_bom.html:57
+#: templates/js/translated/bom.js:882
#: templates/js/translated/table_filters.js:68
#: templates/js/translated/table_filters.js:88
msgid "Inherited"
msgstr ""
-#: part/models.py:2655
+#: part/models.py:2724
msgid "This BOM item is inherited by BOMs for variant parts"
msgstr ""
-#: part/models.py:2660 templates/js/translated/bom.js:661
+#: part/models.py:2729 part/templates/part/upload_bom.html:56
+#: templates/js/translated/bom.js:874
msgid "Allow Variants"
msgstr ""
-#: part/models.py:2661
+#: part/models.py:2730
msgid "Stock items for variant parts can be used for this BOM item"
msgstr ""
-#: part/models.py:2746 stock/models.py:357
+#: part/models.py:2815 stock/models.py:357
msgid "Quantity must be integer value for trackable parts"
msgstr ""
-#: part/models.py:2755 part/models.py:2757
+#: part/models.py:2824 part/models.py:2826
msgid "Sub part must be specified"
msgstr ""
-#: part/models.py:2886
+#: part/models.py:2955
msgid "BOM Item Substitute"
msgstr ""
-#: part/models.py:2908
+#: part/models.py:2977
msgid "Substitute part cannot be the same as the master part"
msgstr ""
-#: part/models.py:2920
+#: part/models.py:2989
msgid "Parent BOM item"
msgstr "Artículo BOM principal"
-#: part/models.py:2928
+#: part/models.py:2997
msgid "Substitute part"
msgstr ""
-#: part/models.py:2939
+#: part/models.py:3008
msgid "Part 1"
msgstr ""
-#: part/models.py:2943
+#: part/models.py:3012
msgid "Part 2"
msgstr ""
-#: part/models.py:2943
+#: part/models.py:3012
msgid "Select Related Part"
msgstr ""
-#: part/models.py:2975
+#: part/models.py:3044
msgid "Error creating relationship: check that the part is not related to itself and that the relationship is unique"
msgstr ""
-#: part/serializers.py:659
+#: part/serializers.py:667
msgid "Select part to copy BOM from"
msgstr ""
-#: part/serializers.py:670
+#: part/serializers.py:678
msgid "Remove Existing Data"
msgstr ""
-#: part/serializers.py:671
+#: part/serializers.py:679
msgid "Remove existing BOM items before copying"
msgstr ""
-#: part/serializers.py:676
+#: part/serializers.py:684
msgid "Include Inherited"
msgstr ""
-#: part/serializers.py:677
+#: part/serializers.py:685
msgid "Include BOM items which are inherited from templated parts"
msgstr ""
-#: part/serializers.py:682
+#: part/serializers.py:690
msgid "Skip Invalid Rows"
msgstr ""
-#: part/serializers.py:683
+#: part/serializers.py:691
msgid "Enable this option to skip invalid rows"
msgstr ""
-#: part/tasks.py:53
+#: part/serializers.py:734
+msgid "Clear Existing BOM"
+msgstr ""
+
+#: part/serializers.py:735
+msgid "Delete existing BOM items before uploading"
+msgstr ""
+
+#: part/serializers.py:762
+msgid "No part column specified"
+msgstr ""
+
+#: part/serializers.py:806
+msgid "Multiple matching parts found"
+msgstr ""
+
+#: part/serializers.py:809
+msgid "No matching part found"
+msgstr ""
+
+#: part/serializers.py:812
+msgid "Part is not designated as a component"
+msgstr ""
+
+#: part/serializers.py:821
+msgid "Quantity not provided"
+msgstr ""
+
+#: part/serializers.py:829
+msgid "Invalid quantity"
+msgstr ""
+
+#: part/serializers.py:848
+msgid "At least one BOM item is required"
+msgstr ""
+
+#: part/tasks.py:58
msgid "Low stock notification"
msgstr ""
@@ -4418,7 +4464,7 @@ msgstr ""
msgid "The BOM for %(part)s has not been validated."
msgstr ""
-#: part/templates/part/bom.html:30 part/templates/part/detail.html:270
+#: part/templates/part/bom.html:30 part/templates/part/detail.html:273
msgid "BOM actions"
msgstr ""
@@ -4426,34 +4472,6 @@ msgstr ""
msgid "Delete Items"
msgstr ""
-#: part/templates/part/bom_upload/match_parts.html:29
-msgid "Select Part"
-msgstr ""
-
-#: part/templates/part/bom_upload/upload_file.html:8
-msgid "Return to BOM"
-msgstr ""
-
-#: part/templates/part/bom_upload/upload_file.html:13
-msgid "Upload Bill of Materials"
-msgstr ""
-
-#: part/templates/part/bom_upload/upload_file.html:33
-msgid "Requirements for BOM upload"
-msgstr ""
-
-#: part/templates/part/bom_upload/upload_file.html:35
-msgid "The BOM file must contain the required named columns as provided in the "
-msgstr ""
-
-#: part/templates/part/bom_upload/upload_file.html:35
-msgid "BOM Upload Template"
-msgstr ""
-
-#: part/templates/part/bom_upload/upload_file.html:36
-msgid "Each part must already exist in the database"
-msgstr ""
-
#: part/templates/part/category.html:28 part/templates/part/category.html:32
msgid "You are subscribed to notifications for this category"
msgstr ""
@@ -4519,7 +4537,7 @@ msgstr ""
msgid "Create new part"
msgstr ""
-#: part/templates/part/category.html:161 templates/js/translated/bom.js:152
+#: part/templates/part/category.html:161 templates/js/translated/bom.js:365
msgid "New Part"
msgstr ""
@@ -4639,138 +4657,168 @@ msgstr ""
msgid "Sales Order Allocations"
msgstr ""
-#: part/templates/part/detail.html:159
+#: part/templates/part/detail.html:162
msgid "Part Variants"
msgstr ""
-#: part/templates/part/detail.html:163
+#: part/templates/part/detail.html:166
msgid "Create new variant"
msgstr ""
-#: part/templates/part/detail.html:164
+#: part/templates/part/detail.html:167
msgid "New Variant"
msgstr ""
-#: part/templates/part/detail.html:191
+#: part/templates/part/detail.html:194
msgid "Add new parameter"
msgstr ""
-#: part/templates/part/detail.html:228 part/templates/part/part_sidebar.html:49
+#: part/templates/part/detail.html:231 part/templates/part/part_sidebar.html:52
msgid "Related Parts"
msgstr ""
-#: part/templates/part/detail.html:232 part/templates/part/detail.html:233
+#: part/templates/part/detail.html:235 part/templates/part/detail.html:236
msgid "Add Related"
msgstr ""
-#: part/templates/part/detail.html:253 part/templates/part/part_sidebar.html:17
+#: part/templates/part/detail.html:256 part/templates/part/part_sidebar.html:18
msgid "Bill of Materials"
msgstr ""
-#: part/templates/part/detail.html:258
+#: part/templates/part/detail.html:261
msgid "Export actions"
msgstr ""
-#: part/templates/part/detail.html:262 templates/js/translated/bom.js:70
+#: part/templates/part/detail.html:265 templates/js/translated/bom.js:283
msgid "Export BOM"
msgstr ""
-#: part/templates/part/detail.html:264
+#: part/templates/part/detail.html:267
msgid "Print BOM Report"
msgstr ""
-#: part/templates/part/detail.html:274
+#: part/templates/part/detail.html:277
msgid "Upload BOM"
msgstr ""
-#: part/templates/part/detail.html:276 templates/js/translated/part.js:272
+#: part/templates/part/detail.html:279 templates/js/translated/part.js:272
msgid "Copy BOM"
msgstr ""
-#: part/templates/part/detail.html:278
+#: part/templates/part/detail.html:281
msgid "Validate BOM"
msgstr ""
-#: part/templates/part/detail.html:283
+#: part/templates/part/detail.html:286
msgid "New BOM Item"
msgstr ""
-#: part/templates/part/detail.html:284
+#: part/templates/part/detail.html:287
msgid "Add BOM Item"
msgstr ""
-#: part/templates/part/detail.html:297
+#: part/templates/part/detail.html:300
msgid "Assemblies"
msgstr ""
-#: part/templates/part/detail.html:314
+#: part/templates/part/detail.html:317
msgid "Part Builds"
msgstr ""
-#: part/templates/part/detail.html:339
+#: part/templates/part/detail.html:342
msgid "Build Order Allocations"
msgstr ""
-#: part/templates/part/detail.html:349
+#: part/templates/part/detail.html:352
msgid "Part Suppliers"
msgstr ""
-#: part/templates/part/detail.html:377
+#: part/templates/part/detail.html:380
msgid "Part Manufacturers"
msgstr ""
-#: part/templates/part/detail.html:393
+#: part/templates/part/detail.html:396
msgid "Delete manufacturer parts"
msgstr ""
-#: part/templates/part/detail.html:575
+#: part/templates/part/detail.html:578
msgid "Delete selected BOM items?"
msgstr ""
-#: part/templates/part/detail.html:576
+#: part/templates/part/detail.html:579
msgid "All selected BOM items will be deleted"
msgstr ""
-#: part/templates/part/detail.html:625
+#: part/templates/part/detail.html:628
msgid "Create BOM Item"
msgstr ""
-#: part/templates/part/detail.html:682
+#: part/templates/part/detail.html:685
msgid "Related Part"
msgstr ""
-#: part/templates/part/detail.html:690
+#: part/templates/part/detail.html:693
msgid "Add Related Part"
msgstr ""
-#: part/templates/part/detail.html:785
+#: part/templates/part/detail.html:788
msgid "Add Test Result Template"
msgstr ""
-#: part/templates/part/detail.html:842
+#: part/templates/part/detail.html:845
msgid "Edit Part Notes"
msgstr ""
-#: part/templates/part/detail.html:955
+#: part/templates/part/detail.html:958
#, python-format
msgid "Purchase Unit Price - %(currency)s"
msgstr ""
-#: part/templates/part/detail.html:967
+#: part/templates/part/detail.html:970
#, python-format
msgid "Unit Price-Cost Difference - %(currency)s"
msgstr ""
-#: part/templates/part/detail.html:979
+#: part/templates/part/detail.html:982
#, python-format
msgid "Supplier Unit Cost - %(currency)s"
msgstr ""
-#: part/templates/part/detail.html:1068
+#: part/templates/part/detail.html:1071
#, python-format
msgid "Unit Price - %(currency)s"
msgstr ""
+#: part/templates/part/import_wizard/ajax_match_fields.html:9
+#: part/templates/part/import_wizard/match_fields.html:9
+#: templates/patterns/wizard/match_fields.html:8
+msgid "Missing selections for the following required columns"
+msgstr ""
+
+#: part/templates/part/import_wizard/ajax_match_fields.html:20
+#: part/templates/part/import_wizard/match_fields.html:20
+#: templates/patterns/wizard/match_fields.html:19
+msgid "Duplicate selections found, see below. Fix them then retry submitting."
+msgstr ""
+
+#: part/templates/part/import_wizard/ajax_match_fields.html:28
+#: part/templates/part/import_wizard/match_fields.html:35
+#: templates/patterns/wizard/match_fields.html:34
+msgid "File Fields"
+msgstr ""
+
+#: part/templates/part/import_wizard/ajax_match_fields.html:35
+#: part/templates/part/import_wizard/match_fields.html:42
+#: templates/patterns/wizard/match_fields.html:41
+msgid "Remove column"
+msgstr ""
+
+#: part/templates/part/import_wizard/ajax_match_fields.html:53
+#: part/templates/part/import_wizard/match_fields.html:60
+#: templates/patterns/wizard/match_fields.html:59
+msgid "Duplicate selection"
+msgstr ""
+
#: part/templates/part/import_wizard/ajax_part_upload.html:29
#: part/templates/part/import_wizard/part_upload.html:53
msgid "Unsuffitient privileges."
@@ -4819,7 +4867,7 @@ msgid "Show pricing information"
msgstr ""
#: part/templates/part/part_base.html:56
-#: stock/templates/stock/item_base.html:110
+#: stock/templates/stock/item_base.html:112
#: stock/templates/stock/location.html:44
msgid "Stock actions"
msgstr ""
@@ -4912,7 +4960,7 @@ msgstr ""
msgid "Allocated to Orders"
msgstr ""
-#: part/templates/part/part_base.html:239 templates/js/translated/bom.js:690
+#: part/templates/part/part_base.html:239 templates/js/translated/bom.js:903
msgid "Can Build"
msgstr ""
@@ -4930,7 +4978,7 @@ msgid "Latest Serial Number"
msgstr ""
#: part/templates/part/part_base.html:328
-#: stock/templates/stock/item_base.html:166
+#: stock/templates/stock/item_base.html:168
msgid "Search for serial number"
msgstr ""
@@ -4969,7 +5017,7 @@ msgid "Total Cost"
msgstr ""
#: part/templates/part/part_pricing.html:40 part/templates/part/prices.html:40
-#: templates/js/translated/bom.js:644
+#: templates/js/translated/bom.js:857
msgid "No supplier pricing available"
msgstr ""
@@ -5003,20 +5051,20 @@ msgstr ""
msgid "No pricing information is available for this part."
msgstr ""
-#: part/templates/part/part_sidebar.html:11
+#: part/templates/part/part_sidebar.html:12
msgid "Variants"
msgstr ""
-#: part/templates/part/part_sidebar.html:25
+#: part/templates/part/part_sidebar.html:26
msgid "Used In"
msgstr ""
-#: part/templates/part/part_sidebar.html:31
+#: part/templates/part/part_sidebar.html:34
#: stock/templates/stock/stock_sidebar.html:8
msgid "Allocations"
msgstr ""
-#: part/templates/part/part_sidebar.html:45
+#: part/templates/part/part_sidebar.html:48
msgid "Test Templates"
msgstr ""
@@ -5089,7 +5137,7 @@ msgstr ""
msgid "Calculation parameters"
msgstr ""
-#: part/templates/part/prices.html:155 templates/js/translated/bom.js:638
+#: part/templates/part/prices.html:155 templates/js/translated/bom.js:851
msgid "Supplier Cost"
msgstr ""
@@ -5111,7 +5159,7 @@ msgstr ""
msgid "Internal Cost"
msgstr ""
-#: part/templates/part/prices.html:215 part/views.py:1699
+#: part/templates/part/prices.html:215 part/views.py:1390
msgid "Add Internal Price Break"
msgstr ""
@@ -5131,7 +5179,7 @@ msgstr ""
msgid "Set category for the following parts"
msgstr ""
-#: part/templates/part/stock_count.html:7 templates/js/translated/bom.js:600
+#: part/templates/part/stock_count.html:7 templates/js/translated/bom.js:813
#: templates/js/translated/part.js:497 templates/js/translated/part.js:1122
#: templates/js/translated/part.js:1309
msgid "No Stock"
@@ -5141,6 +5189,43 @@ msgstr ""
msgid "Low Stock"
msgstr ""
+#: part/templates/part/upload_bom.html:8
+msgid "Return to BOM"
+msgstr ""
+
+#: part/templates/part/upload_bom.html:13
+msgid "Upload Bill of Materials"
+msgstr ""
+
+#: part/templates/part/upload_bom.html:19
+msgid "BOM upload requirements"
+msgstr ""
+
+#: part/templates/part/upload_bom.html:23
+#: part/templates/part/upload_bom.html:90
+msgid "Upload BOM File"
+msgstr ""
+
+#: part/templates/part/upload_bom.html:29
+msgid "Submit BOM Data"
+msgstr ""
+
+#: part/templates/part/upload_bom.html:37
+msgid "Requirements for BOM upload"
+msgstr ""
+
+#: part/templates/part/upload_bom.html:39
+msgid "The BOM file must contain the required named columns as provided in the "
+msgstr ""
+
+#: part/templates/part/upload_bom.html:39
+msgid "BOM Upload Template"
+msgstr ""
+
+#: part/templates/part/upload_bom.html:40
+msgid "Each part must already exist in the database"
+msgstr ""
+
#: part/templates/part/variant_part.html:9
msgid "Create new part variant"
msgstr ""
@@ -5154,104 +5239,96 @@ msgstr ""
msgid "Unknown database"
msgstr ""
-#: part/views.py:93
+#: part/views.py:90
msgid "Set Part Category"
msgstr ""
-#: part/views.py:143
+#: part/views.py:140
#, python-brace-format
msgid "Set category for {n} parts"
msgstr ""
-#: part/views.py:215
+#: part/views.py:212
msgid "Match References"
msgstr ""
-#: part/views.py:511
+#: part/views.py:509
msgid "None"
msgstr ""
-#: part/views.py:570
+#: part/views.py:568
msgid "Part QR Code"
msgstr ""
-#: part/views.py:672
+#: part/views.py:670
msgid "Select Part Image"
msgstr ""
-#: part/views.py:698
+#: part/views.py:696
msgid "Updated part image"
msgstr ""
-#: part/views.py:701
+#: part/views.py:699
msgid "Part image not found"
msgstr ""
-#: part/views.py:775
-msgid "Match Parts"
-msgstr ""
-
-#: part/views.py:1110
-msgid "Export Bill of Materials"
-msgstr ""
-
-#: part/views.py:1159
+#: part/views.py:850
msgid "Confirm Part Deletion"
msgstr ""
-#: part/views.py:1166
+#: part/views.py:857
msgid "Part was deleted"
msgstr ""
-#: part/views.py:1175
+#: part/views.py:866
msgid "Part Pricing"
msgstr ""
-#: part/views.py:1324
+#: part/views.py:1015
msgid "Create Part Parameter Template"
msgstr ""
-#: part/views.py:1334
+#: part/views.py:1025
msgid "Edit Part Parameter Template"
msgstr ""
-#: part/views.py:1341
+#: part/views.py:1032
msgid "Delete Part Parameter Template"
msgstr ""
-#: part/views.py:1400 templates/js/translated/part.js:315
+#: part/views.py:1091 templates/js/translated/part.js:315
msgid "Edit Part Category"
msgstr ""
-#: part/views.py:1438
+#: part/views.py:1129
msgid "Delete Part Category"
msgstr ""
-#: part/views.py:1444
+#: part/views.py:1135
msgid "Part category was deleted"
msgstr ""
-#: part/views.py:1453
+#: part/views.py:1144
msgid "Create Category Parameter Template"
msgstr ""
-#: part/views.py:1554
+#: part/views.py:1245
msgid "Edit Category Parameter Template"
msgstr ""
-#: part/views.py:1610
+#: part/views.py:1301
msgid "Delete Category Parameter Template"
msgstr ""
-#: part/views.py:1632
+#: part/views.py:1323
msgid "Added new price break"
msgstr ""
-#: part/views.py:1708
+#: part/views.py:1399
msgid "Edit Internal Price Break"
msgstr ""
-#: part/views.py:1716
+#: part/views.py:1407
msgid "Delete Internal Price Break"
msgstr ""
@@ -5453,12 +5530,12 @@ msgid "Stock Item Test Report"
msgstr ""
#: report/templates/report/inventree_test_report_base.html:79
-#: stock/models.py:519 stock/templates/stock/item_base.html:156
-#: templates/js/translated/build.js:293 templates/js/translated/build.js:697
-#: templates/js/translated/build.js:1073
+#: stock/models.py:519 stock/templates/stock/item_base.html:158
+#: templates/js/translated/build.js:373 templates/js/translated/build.js:521
+#: templates/js/translated/build.js:919 templates/js/translated/build.js:1295
#: 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:423
+#: templates/js/translated/order.js:2034 templates/js/translated/stock.js:424
msgid "Serial Number"
msgstr ""
@@ -5479,7 +5556,7 @@ msgstr ""
#: report/templates/report/inventree_test_report_base.html:97
#: templates/InvenTree/settings/plugin.html:50
#: templates/InvenTree/settings/plugin_settings.html:38
-#: templates/js/translated/order.js:849 templates/js/translated/stock.js:2525
+#: templates/js/translated/order.js:849 templates/js/translated/stock.js:2649
msgid "Date"
msgstr ""
@@ -5497,71 +5574,67 @@ msgid "Installed Items"
msgstr ""
#: report/templates/report/inventree_test_report_base.html:137
-#: templates/js/translated/stock.js:586 templates/js/translated/stock.js:756
-#: templates/js/translated/stock.js:2785
+#: templates/js/translated/stock.js:587 templates/js/translated/stock.js:757
+#: templates/js/translated/stock.js:2909
msgid "Serial"
msgstr ""
-#: stock/api.py:476
+#: stock/api.py:501
msgid "Quantity is required"
msgstr ""
-#: stock/api.py:483
+#: stock/api.py:508
msgid "Valid part must be supplied"
msgstr ""
-#: stock/forms.py:77 stock/forms.py:251 stock/models.py:576
-#: stock/templates/stock/item_base.html:193
-#: templates/js/translated/stock.js:1709
+#: stock/api.py:535
+msgid "Serial numbers cannot be supplied for a non-trackable part"
+msgstr ""
+
+#: stock/forms.py:74 stock/forms.py:198 stock/models.py:576
+#: stock/templates/stock/item_base.html:195
+#: templates/js/translated/stock.js:1833
msgid "Expiry Date"
msgstr ""
-#: stock/forms.py:78 stock/forms.py:252
+#: stock/forms.py:75 stock/forms.py:199
msgid "Expiration date for this stock item"
msgstr ""
-#: stock/forms.py:81
+#: stock/forms.py:78
msgid "Enter unique serial numbers (or leave blank)"
msgstr ""
-#: stock/forms.py:136
+#: stock/forms.py:133
msgid "Destination for serialized stock (by default, will remain in current location)"
msgstr ""
-#: stock/forms.py:138
+#: stock/forms.py:135
msgid "Serial numbers"
msgstr ""
-#: stock/forms.py:138
+#: stock/forms.py:135
msgid "Unique serial numbers (must match quantity)"
msgstr ""
-#: stock/forms.py:140 stock/forms.py:224
+#: stock/forms.py:137 stock/forms.py:171
msgid "Add transaction note (optional)"
msgstr ""
-#: stock/forms.py:180
-msgid "Stock item to install"
-msgstr ""
-
-#: stock/forms.py:210
-msgid "Must not exceed available quantity"
-msgstr ""
-
-#: stock/forms.py:222
+#: stock/forms.py:169
msgid "Destination location for uninstalled items"
msgstr ""
-#: stock/forms.py:226
+#: stock/forms.py:173
msgid "Confirm uninstall"
msgstr ""
-#: stock/forms.py:226
+#: stock/forms.py:173
msgid "Confirm removal of installed stock items"
msgstr ""
#: stock/models.py:62 stock/models.py:613
-#: stock/templates/stock/item_base.html:416
+#: stock/templates/stock/item_base.html:418
msgid "Owner"
msgstr ""
@@ -5623,7 +5696,7 @@ msgstr ""
msgid "Packaging this stock item is stored in"
msgstr ""
-#: stock/models.py:502 stock/templates/stock/item_base.html:298
+#: stock/models.py:502 stock/templates/stock/item_base.html:300
msgid "Installed In"
msgstr ""
@@ -5733,7 +5806,7 @@ msgstr ""
msgid "Serialized stock cannot be merged"
msgstr ""
-#: stock/models.py:1214 stock/serializers.py:775
+#: stock/models.py:1214 stock/serializers.py:832
msgid "Duplicate stock items"
msgstr ""
@@ -5769,7 +5842,7 @@ msgstr ""
msgid "Test name"
msgstr ""
-#: stock/models.py:1983 templates/js/translated/table_filters.js:271
+#: stock/models.py:1983
msgid "Test result"
msgstr ""
@@ -5806,7 +5879,7 @@ msgstr ""
msgid "Enter serial numbers for new items"
msgstr ""
-#: stock/serializers.py:326 stock/serializers.py:732 stock/serializers.py:973
+#: stock/serializers.py:326 stock/serializers.py:789 stock/serializers.py:1030
msgid "Destination stock location"
msgstr ""
@@ -5818,63 +5891,79 @@ msgstr ""
msgid "Serial numbers cannot be assigned to this part"
msgstr ""
-#: stock/serializers.py:589
+#: stock/serializers.py:363 stock/views.py:1108
+msgid "Serial numbers already exist"
+msgstr ""
+
+#: stock/serializers.py:405
+msgid "Select stock item to install"
+msgstr ""
+
+#: stock/serializers.py:421
+msgid "Stock item is unavailable"
+msgstr ""
+
+#: stock/serializers.py:428
+msgid "Selected part is not in the Bill of Materials"
+msgstr ""
+
+#: stock/serializers.py:646
msgid "Part must be salable"
msgstr ""
-#: stock/serializers.py:593
+#: stock/serializers.py:650
msgid "Item is allocated to a sales order"
msgstr ""
-#: stock/serializers.py:597
+#: stock/serializers.py:654
msgid "Item is allocated to a build order"
msgstr ""
-#: stock/serializers.py:627
+#: stock/serializers.py:684
msgid "Customer to assign stock items"
msgstr ""
-#: stock/serializers.py:633
+#: stock/serializers.py:690
msgid "Selected company is not a customer"
msgstr ""
-#: stock/serializers.py:641
+#: stock/serializers.py:698
msgid "Stock assignment notes"
msgstr ""
-#: stock/serializers.py:651 stock/serializers.py:881
+#: stock/serializers.py:708 stock/serializers.py:938
msgid "A list of stock items must be provided"
msgstr ""
-#: stock/serializers.py:739
+#: stock/serializers.py:796
msgid "Stock merging notes"
msgstr ""
-#: stock/serializers.py:744
+#: stock/serializers.py:801
msgid "Allow mismatched suppliers"
msgstr ""
-#: stock/serializers.py:745
+#: stock/serializers.py:802
msgid "Allow stock items with different supplier parts to be merged"
msgstr ""
-#: stock/serializers.py:750
+#: stock/serializers.py:807
msgid "Allow mismatched status"
msgstr ""
-#: stock/serializers.py:751
+#: stock/serializers.py:808
msgid "Allow stock items with different status codes to be merged"
msgstr ""
-#: stock/serializers.py:761
+#: stock/serializers.py:818
msgid "At least two stock items must be provided"
msgstr ""
-#: stock/serializers.py:843
+#: stock/serializers.py:900
msgid "StockItem primary key value"
msgstr ""
-#: stock/serializers.py:871
+#: stock/serializers.py:928
msgid "Stock transaction notes"
msgstr ""
@@ -5919,22 +6008,14 @@ msgstr ""
msgid "Installed Stock Items"
msgstr ""
-#: stock/templates/stock/item.html:154 stock/views.py:482
+#: stock/templates/stock/item.html:154 templates/js/translated/stock.js:3018
msgid "Install Stock Item"
msgstr ""
-#: stock/templates/stock/item.html:309 stock/templates/stock/item.html:334
+#: stock/templates/stock/item.html:304 templates/js/translated/stock.js:1480
msgid "Add Test Result"
msgstr ""
-#: stock/templates/stock/item.html:354
-msgid "Edit Test Result"
-msgstr ""
-
-#: stock/templates/stock/item.html:368
-msgid "Delete Test Result"
-msgstr ""
-
#: stock/templates/stock/item_base.html:42
#: templates/js/translated/barcode.js:330
#: templates/js/translated/barcode.js:335
@@ -5995,129 +6076,129 @@ msgstr ""
msgid "Uninstall"
msgstr ""
-#: stock/templates/stock/item_base.html:101
+#: stock/templates/stock/item_base.html:102
msgid "Install stock item"
msgstr ""
-#: stock/templates/stock/item_base.html:101
+#: stock/templates/stock/item_base.html:102
msgid "Install"
msgstr ""
-#: stock/templates/stock/item_base.html:115
+#: stock/templates/stock/item_base.html:117
msgid "Convert to variant"
msgstr ""
-#: stock/templates/stock/item_base.html:118
+#: stock/templates/stock/item_base.html:120
msgid "Duplicate stock item"
msgstr ""
-#: stock/templates/stock/item_base.html:120
+#: stock/templates/stock/item_base.html:122
msgid "Edit stock item"
msgstr ""
-#: stock/templates/stock/item_base.html:123
+#: stock/templates/stock/item_base.html:125
msgid "Delete stock item"
msgstr ""
-#: stock/templates/stock/item_base.html:161
+#: stock/templates/stock/item_base.html:163
msgid "previous page"
msgstr ""
-#: stock/templates/stock/item_base.html:161
+#: stock/templates/stock/item_base.html:163
msgid "Navigate to previous serial number"
msgstr ""
-#: stock/templates/stock/item_base.html:170
+#: stock/templates/stock/item_base.html:172
msgid "next page"
msgstr ""
-#: stock/templates/stock/item_base.html:170
+#: stock/templates/stock/item_base.html:172
msgid "Navigate to next serial number"
msgstr ""
-#: stock/templates/stock/item_base.html:197
+#: stock/templates/stock/item_base.html:199
#, python-format
msgid "This StockItem expired on %(item.expiry_date)s"
msgstr ""
-#: stock/templates/stock/item_base.html:197
+#: stock/templates/stock/item_base.html:199
#: templates/js/translated/table_filters.js:252
msgid "Expired"
msgstr ""
-#: stock/templates/stock/item_base.html:199
+#: stock/templates/stock/item_base.html:201
#, python-format
msgid "This StockItem expires on %(item.expiry_date)s"
msgstr ""
-#: stock/templates/stock/item_base.html:199
+#: stock/templates/stock/item_base.html:201
#: templates/js/translated/table_filters.js:258
msgid "Stale"
msgstr ""
-#: stock/templates/stock/item_base.html:206
-#: templates/js/translated/stock.js:1722
+#: stock/templates/stock/item_base.html:208
+#: templates/js/translated/stock.js:1846
msgid "Last Updated"
msgstr ""
-#: stock/templates/stock/item_base.html:211
+#: stock/templates/stock/item_base.html:213
msgid "Last Stocktake"
msgstr "Último Inventario"
-#: stock/templates/stock/item_base.html:215
+#: stock/templates/stock/item_base.html:217
msgid "No stocktake performed"
msgstr "Ningún inventario realizado"
-#: stock/templates/stock/item_base.html:233
+#: stock/templates/stock/item_base.html:235
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:240
+#: stock/templates/stock/item_base.html:242
msgid "This stock item is in production and cannot be edited."
msgstr ""
-#: stock/templates/stock/item_base.html:241
+#: stock/templates/stock/item_base.html:243
msgid "Edit the stock item from the build view."
msgstr ""
-#: stock/templates/stock/item_base.html:254
+#: stock/templates/stock/item_base.html:256
msgid "This stock item has not passed all required tests"
msgstr ""
-#: stock/templates/stock/item_base.html:262
+#: stock/templates/stock/item_base.html:264
msgid "This stock item is allocated to Sales Order"
msgstr ""
-#: stock/templates/stock/item_base.html:270
+#: stock/templates/stock/item_base.html:272
msgid "This stock item is allocated to Build Order"
msgstr ""
-#: stock/templates/stock/item_base.html:276
+#: stock/templates/stock/item_base.html:278
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:317
-#: templates/js/translated/build.js:1095
+#: stock/templates/stock/item_base.html:319
+#: templates/js/translated/build.js:1317
msgid "No location set"
msgstr ""
-#: stock/templates/stock/item_base.html:324
+#: stock/templates/stock/item_base.html:326
msgid "Barcode Identifier"
msgstr ""
-#: stock/templates/stock/item_base.html:366
+#: stock/templates/stock/item_base.html:368
msgid "Parent Item"
msgstr "Artículo principal"
-#: stock/templates/stock/item_base.html:384
+#: stock/templates/stock/item_base.html:386
msgid "No manufacturer set"
msgstr ""
-#: stock/templates/stock/item_base.html:409
+#: stock/templates/stock/item_base.html:411
msgid "Tests"
msgstr ""
-#: stock/templates/stock/item_base.html:499
+#: stock/templates/stock/item_base.html:492
msgid "Edit Stock Status"
msgstr ""
@@ -6130,39 +6211,6 @@ msgstr ""
msgid "This will remove %(qty)s units of %(full_name)s from stock."
msgstr ""
-#: stock/templates/stock/item_install.html:8
-msgid "Install another Stock Item into this item."
-msgstr ""
-
-#: stock/templates/stock/item_install.html:11
-#: stock/templates/stock/item_install.html:24
-msgid "Stock items can only be installed if they meet the following criteria"
-msgstr ""
-
-#: stock/templates/stock/item_install.html:14
-msgid "The Stock Item links to a Part which is in the BOM for this Stock Item"
-msgstr ""
-
-#: stock/templates/stock/item_install.html:15
-msgid "The Stock Item is currently in stock"
-msgstr ""
-
-#: stock/templates/stock/item_install.html:16
-msgid "The Stock Item is serialized and does not belong to another item"
-msgstr ""
-
-#: stock/templates/stock/item_install.html:21
-msgid "Install this Stock Item in another stock item."
-msgstr ""
-
-#: stock/templates/stock/item_install.html:27
-msgid "The part associated to this Stock Item belongs to another part's BOM"
-msgstr ""
-
-#: stock/templates/stock/item_install.html:28
-msgid "This Stock Item is serialized and does not belong to another item"
-msgstr ""
-
#: stock/templates/stock/item_serialize.html:5
msgid "Create serialized items from this stock item."
msgstr ""
@@ -6247,7 +6295,7 @@ msgstr ""
msgid "The following stock items will be uninstalled"
msgstr ""
-#: stock/templates/stock/stockitem_convert.html:7 stock/views.py:879
+#: stock/templates/stock/stockitem_convert.html:7 stock/views.py:730
msgid "Convert Stock Item"
msgstr ""
@@ -6268,11 +6316,11 @@ msgstr ""
msgid "Are you sure you want to delete this stock tracking entry?"
msgstr ""
-#: stock/views.py:162 templates/js/translated/stock.js:139
+#: stock/views.py:162 templates/js/translated/stock.js:140
msgid "Edit Stock Location"
msgstr ""
-#: stock/views.py:269 stock/views.py:858 stock/views.py:984 stock/views.py:1266
+#: stock/views.py:269 stock/views.py:709 stock/views.py:835 stock/views.py:1117
msgid "Owner is required (ownership control is enabled)"
msgstr ""
@@ -6300,59 +6348,63 @@ msgstr ""
msgid "Confirm test data deletion"
msgstr ""
+#: stock/views.py:352
+msgid "Check the confirmation box"
+msgstr ""
+
#: stock/views.py:456
msgid "Stock Item QR Code"
msgstr ""
-#: stock/views.py:630
+#: stock/views.py:481
msgid "Uninstall Stock Items"
msgstr ""
-#: stock/views.py:727 templates/js/translated/stock.js:1074
+#: stock/views.py:578 templates/js/translated/stock.js:1075
msgid "Confirm stock adjustment"
msgstr ""
-#: stock/views.py:738
+#: stock/views.py:589
msgid "Uninstalled stock items"
msgstr ""
-#: stock/views.py:760 templates/js/translated/stock.js:332
+#: stock/views.py:611 templates/js/translated/stock.js:333
msgid "Edit Stock Item"
msgstr ""
-#: stock/views.py:910
+#: stock/views.py:761
msgid "Create new Stock Location"
msgstr ""
-#: stock/views.py:1011
+#: stock/views.py:862
msgid "Create new Stock Item"
msgstr ""
-#: stock/views.py:1153 templates/js/translated/stock.js:312
+#: stock/views.py:1004 templates/js/translated/stock.js:313
msgid "Duplicate Stock Item"
msgstr ""
-#: stock/views.py:1235
+#: stock/views.py:1086
msgid "Quantity cannot be negative"
msgstr ""
-#: stock/views.py:1335
+#: stock/views.py:1186
msgid "Delete Stock Location"
msgstr ""
-#: stock/views.py:1348
+#: stock/views.py:1199
msgid "Delete Stock Item"
msgstr ""
-#: stock/views.py:1359
+#: stock/views.py:1210
msgid "Delete Stock Tracking Entry"
msgstr ""
-#: stock/views.py:1366
+#: stock/views.py:1217
msgid "Edit Stock Tracking Entry"
msgstr ""
-#: stock/views.py:1375
+#: stock/views.py:1226
msgid "Add Stock Tracking Entry"
msgstr ""
@@ -6527,15 +6579,15 @@ msgstr ""
msgid "Part Settings"
msgstr ""
-#: templates/InvenTree/settings/part.html:43
+#: templates/InvenTree/settings/part.html:44
msgid "Part Import"
msgstr ""
-#: templates/InvenTree/settings/part.html:47
+#: templates/InvenTree/settings/part.html:48
msgid "Import Part"
msgstr ""
-#: templates/InvenTree/settings/part.html:61
+#: templates/InvenTree/settings/part.html:62
msgid "Part Parameter Templates"
msgstr ""
@@ -6663,45 +6715,45 @@ msgstr ""
msgid "Report Settings"
msgstr ""
-#: templates/InvenTree/settings/setting.html:30
+#: templates/InvenTree/settings/setting.html:33
msgid "No value set"
msgstr ""
-#: templates/InvenTree/settings/setting.html:41
+#: templates/InvenTree/settings/setting.html:38
msgid "Edit setting"
msgstr ""
-#: templates/InvenTree/settings/settings.html:78
+#: templates/InvenTree/settings/settings.html:115
msgid "Edit Plugin Setting"
msgstr ""
-#: templates/InvenTree/settings/settings.html:80
+#: templates/InvenTree/settings/settings.html:117
msgid "Edit Global Setting"
msgstr ""
-#: templates/InvenTree/settings/settings.html:82
+#: templates/InvenTree/settings/settings.html:119
msgid "Edit User Setting"
msgstr ""
-#: templates/InvenTree/settings/settings.html:171
+#: templates/InvenTree/settings/settings.html:208
msgid "No category parameter templates found"
msgstr ""
-#: templates/InvenTree/settings/settings.html:193
-#: templates/InvenTree/settings/settings.html:292
+#: templates/InvenTree/settings/settings.html:230
+#: templates/InvenTree/settings/settings.html:329
msgid "Edit Template"
msgstr ""
-#: templates/InvenTree/settings/settings.html:194
-#: templates/InvenTree/settings/settings.html:293
+#: templates/InvenTree/settings/settings.html:231
+#: templates/InvenTree/settings/settings.html:330
msgid "Delete Template"
msgstr ""
-#: templates/InvenTree/settings/settings.html:272
+#: templates/InvenTree/settings/settings.html:309
msgid "No part parameter templates found"
msgstr ""
-#: templates/InvenTree/settings/settings.html:276
+#: templates/InvenTree/settings/settings.html:313
msgid "ID"
msgstr ""
@@ -6996,10 +7048,11 @@ msgid "InvenTree Version Information"
msgstr ""
#: templates/about.html:11 templates/about.html:105
-#: templates/js/translated/bom.js:407 templates/js/translated/modals.js:53
-#: templates/js/translated/modals.js:584 templates/js/translated/modals.js:678
-#: templates/js/translated/modals.js:983 templates/modals.html:15
-#: templates/modals.html:27 templates/modals.html:39 templates/modals.html:50
+#: templates/js/translated/bom.js:132 templates/js/translated/bom.js:620
+#: templates/js/translated/modals.js:53 templates/js/translated/modals.js:584
+#: templates/js/translated/modals.js:678 templates/js/translated/modals.js:986
+#: templates/modals.html:15 templates/modals.html:27 templates/modals.html:39
+#: templates/modals.html:50
msgid "Close"
msgstr ""
@@ -7275,14 +7328,14 @@ msgid "The following parts are low on required stock"
msgstr ""
#: templates/email/build_order_required_stock.html:18
-#: templates/js/translated/bom.js:1117
+#: templates/js/translated/bom.js:1335
msgid "Required Quantity"
msgstr ""
#: templates/email/build_order_required_stock.html:19
#: templates/email/low_stock_notification.html:18
-#: templates/js/translated/bom.js:591 templates/js/translated/build.js:1189
-#: templates/js/translated/build.js:1810
+#: templates/js/translated/bom.js:804 templates/js/translated/build.js:1411
+#: templates/js/translated/build.js:2048
#: templates/js/translated/table_filters.js:178
msgid "Available"
msgstr ""
@@ -7325,11 +7378,11 @@ msgstr ""
msgid "Remote image must not exceed maximum allowable file size"
msgstr ""
-#: templates/js/translated/api.js:185 templates/js/translated/modals.js:1053
+#: templates/js/translated/api.js:185 templates/js/translated/modals.js:1056
msgid "No Response"
msgstr ""
-#: templates/js/translated/api.js:186 templates/js/translated/modals.js:1054
+#: templates/js/translated/api.js:186 templates/js/translated/modals.js:1057
msgid "No response from the InvenTree server"
msgstr ""
@@ -7341,27 +7394,27 @@ msgstr ""
msgid "API request returned error code 400"
msgstr ""
-#: templates/js/translated/api.js:197 templates/js/translated/modals.js:1063
+#: templates/js/translated/api.js:197 templates/js/translated/modals.js:1066
msgid "Error 401: Not Authenticated"
msgstr ""
-#: templates/js/translated/api.js:198 templates/js/translated/modals.js:1064
+#: templates/js/translated/api.js:198 templates/js/translated/modals.js:1067
msgid "Authentication credentials not supplied"
msgstr ""
-#: templates/js/translated/api.js:202 templates/js/translated/modals.js:1068
+#: templates/js/translated/api.js:202 templates/js/translated/modals.js:1071
msgid "Error 403: Permission Denied"
msgstr ""
-#: templates/js/translated/api.js:203 templates/js/translated/modals.js:1069
+#: templates/js/translated/api.js:203 templates/js/translated/modals.js:1072
msgid "You do not have the required permissions to access this function"
msgstr ""
-#: templates/js/translated/api.js:207 templates/js/translated/modals.js:1073
+#: templates/js/translated/api.js:207 templates/js/translated/modals.js:1076
msgid "Error 404: Resource Not Found"
msgstr ""
-#: templates/js/translated/api.js:208 templates/js/translated/modals.js:1074
+#: templates/js/translated/api.js:208 templates/js/translated/modals.js:1077
msgid "The requested resource could not be located on the server"
msgstr ""
@@ -7373,11 +7426,11 @@ msgstr ""
msgid "HTTP method not allowed at URL"
msgstr ""
-#: templates/js/translated/api.js:217 templates/js/translated/modals.js:1078
+#: templates/js/translated/api.js:217 templates/js/translated/modals.js:1081
msgid "Error 408: Timeout"
msgstr ""
-#: templates/js/translated/api.js:218 templates/js/translated/modals.js:1079
+#: templates/js/translated/api.js:218 templates/js/translated/modals.js:1082
msgid "Connection timeout while requesting data from server"
msgstr ""
@@ -7446,7 +7499,7 @@ msgid "Unknown response from server"
msgstr ""
#: templates/js/translated/barcode.js:140
-#: templates/js/translated/modals.js:1043
+#: templates/js/translated/modals.js:1046
msgid "Invalid server response"
msgstr ""
@@ -7474,7 +7527,7 @@ msgstr ""
msgid "Unlink"
msgstr ""
-#: templates/js/translated/barcode.js:397 templates/js/translated/stock.js:1026
+#: templates/js/translated/barcode.js:397 templates/js/translated/stock.js:1027
msgid "Remove stock item"
msgstr ""
@@ -7516,327 +7569,369 @@ msgstr ""
msgid "Barcode does not match a valid location"
msgstr ""
-#: templates/js/translated/bom.js:36
+#: templates/js/translated/bom.js:75
+msgid "Display row data"
+msgstr ""
+
+#: templates/js/translated/bom.js:131
+msgid "Row Data"
+msgstr ""
+
+#: templates/js/translated/bom.js:249
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:518
+#: templates/js/translated/bom.js:252 templates/js/translated/bom.js:286
+#: templates/js/translated/order.js:369 templates/js/translated/stock.js:519
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:519
+#: templates/js/translated/bom.js:253 templates/js/translated/bom.js:287
+#: templates/js/translated/order.js:370 templates/js/translated/stock.js:520
msgid "Select file format"
msgstr ""
-#: templates/js/translated/bom.js:81
+#: templates/js/translated/bom.js:294
msgid "Cascading"
msgstr ""
-#: templates/js/translated/bom.js:82
+#: templates/js/translated/bom.js:295
msgid "Download cascading / multi-level BOM"
msgstr ""
-#: templates/js/translated/bom.js:87
+#: templates/js/translated/bom.js:300
msgid "Levels"
msgstr ""
-#: templates/js/translated/bom.js:88
+#: templates/js/translated/bom.js:301
msgid "Select maximum number of BOM levels to export (0 = all levels)"
msgstr ""
-#: templates/js/translated/bom.js:94
+#: templates/js/translated/bom.js:307
msgid "Include Parameter Data"
msgstr ""
-#: templates/js/translated/bom.js:95
+#: templates/js/translated/bom.js:308
msgid "Include part parameter data in exported BOM"
msgstr ""
-#: templates/js/translated/bom.js:100
+#: templates/js/translated/bom.js:313
msgid "Include Stock Data"
msgstr ""
-#: templates/js/translated/bom.js:101
+#: templates/js/translated/bom.js:314
msgid "Include part stock data in exported BOM"
msgstr ""
-#: templates/js/translated/bom.js:106
+#: templates/js/translated/bom.js:319
msgid "Include Manufacturer Data"
msgstr ""
-#: templates/js/translated/bom.js:107
+#: templates/js/translated/bom.js:320
msgid "Include part manufacturer data in exported BOM"
msgstr ""
-#: templates/js/translated/bom.js:112
+#: templates/js/translated/bom.js:325
msgid "Include Supplier Data"
msgstr ""
-#: templates/js/translated/bom.js:113
+#: templates/js/translated/bom.js:326
msgid "Include part supplier data in exported BOM"
msgstr ""
-#: templates/js/translated/bom.js:296
+#: templates/js/translated/bom.js:509
msgid "Remove substitute part"
msgstr ""
-#: templates/js/translated/bom.js:352
+#: templates/js/translated/bom.js:565
msgid "Select and add a new substitute part using the input below"
msgstr ""
-#: templates/js/translated/bom.js:363
+#: templates/js/translated/bom.js:576
msgid "Are you sure you wish to remove this substitute part link?"
msgstr ""
-#: templates/js/translated/bom.js:369
+#: templates/js/translated/bom.js:582
msgid "Remove Substitute Part"
msgstr ""
-#: templates/js/translated/bom.js:408
+#: templates/js/translated/bom.js:621
msgid "Add Substitute"
msgstr ""
-#: templates/js/translated/bom.js:409
+#: templates/js/translated/bom.js:622
msgid "Edit BOM Item Substitutes"
msgstr ""
-#: templates/js/translated/bom.js:528
+#: templates/js/translated/bom.js:741
msgid "Substitutes Available"
msgstr ""
-#: templates/js/translated/bom.js:532 templates/js/translated/build.js:1171
+#: templates/js/translated/bom.js:745 templates/js/translated/build.js:1393
msgid "Variant stock allowed"
msgstr ""
-#: templates/js/translated/bom.js:537
+#: templates/js/translated/bom.js:750
msgid "Open subassembly"
msgstr ""
-#: templates/js/translated/bom.js:609
+#: templates/js/translated/bom.js:822
msgid "Substitutes"
msgstr ""
-#: templates/js/translated/bom.js:624
+#: templates/js/translated/bom.js:837
msgid "Purchase Price Range"
msgstr ""
-#: templates/js/translated/bom.js:631
+#: templates/js/translated/bom.js:844
msgid "Purchase Price Average"
msgstr ""
-#: templates/js/translated/bom.js:680 templates/js/translated/bom.js:769
+#: templates/js/translated/bom.js:893 templates/js/translated/bom.js:982
msgid "View BOM"
msgstr ""
-#: templates/js/translated/bom.js:740
+#: templates/js/translated/bom.js:953
msgid "Validate BOM Item"
msgstr ""
-#: templates/js/translated/bom.js:742
+#: templates/js/translated/bom.js:955
msgid "This line has been validated"
msgstr ""
-#: templates/js/translated/bom.js:744
+#: templates/js/translated/bom.js:957
msgid "Edit substitute parts"
msgstr ""
-#: templates/js/translated/bom.js:746 templates/js/translated/bom.js:920
+#: templates/js/translated/bom.js:959 templates/js/translated/bom.js:1138
msgid "Edit BOM Item"
msgstr ""
-#: templates/js/translated/bom.js:748 templates/js/translated/bom.js:903
+#: templates/js/translated/bom.js:961 templates/js/translated/bom.js:1121
msgid "Delete BOM Item"
msgstr ""
-#: templates/js/translated/bom.js:842 templates/js/translated/build.js:915
+#: templates/js/translated/bom.js:1060 templates/js/translated/build.js:1137
msgid "No BOM items found"
msgstr ""
-#: templates/js/translated/bom.js:898
+#: templates/js/translated/bom.js:1116
msgid "Are you sure you want to delete this BOM item?"
msgstr ""
-#: templates/js/translated/bom.js:1100 templates/js/translated/build.js:1155
+#: templates/js/translated/bom.js:1318 templates/js/translated/build.js:1377
msgid "Required Part"
msgstr ""
-#: templates/js/translated/bom.js:1122
+#: templates/js/translated/bom.js:1340
msgid "Inherited from parent BOM"
msgstr "Heredado de BOM principal"
-#: templates/js/translated/build.js:84
+#: templates/js/translated/build.js:85
msgid "Edit Build Order"
msgstr ""
-#: templates/js/translated/build.js:118
+#: templates/js/translated/build.js:119
msgid "Create Build Order"
msgstr ""
-#: templates/js/translated/build.js:139
+#: templates/js/translated/build.js:140
msgid "Build order is ready to be completed"
msgstr ""
-#: templates/js/translated/build.js:144
+#: templates/js/translated/build.js:145
msgid "Build Order is incomplete"
msgstr ""
-#: templates/js/translated/build.js:172
+#: templates/js/translated/build.js:173
msgid "Complete Build Order"
msgstr ""
-#: templates/js/translated/build.js:193
+#: templates/js/translated/build.js:214 templates/js/translated/stock.js:93
+#: templates/js/translated/stock.js:182
+msgid "Next available serial number"
+msgstr ""
+
+#: templates/js/translated/build.js:216 templates/js/translated/stock.js:95
+#: templates/js/translated/stock.js:184
+msgid "Latest serial number"
+msgstr ""
+
+#: templates/js/translated/build.js:225
+msgid "The Bill of Materials contains trackable parts"
+msgstr ""
+
+#: templates/js/translated/build.js:226
+msgid "Build outputs must be generated individually"
+msgstr ""
+
+#: templates/js/translated/build.js:234
+msgid "Trackable parts can have serial numbers specified"
+msgstr ""
+
+#: templates/js/translated/build.js:235
+msgid "Enter serial numbers to generate multiple single build outputs"
+msgstr ""
+
+#: templates/js/translated/build.js:242
+msgid "Create Build Output"
+msgstr ""
+
+#: templates/js/translated/build.js:273
msgid "Allocate stock items to this build output"
msgstr ""
-#: templates/js/translated/build.js:204
+#: templates/js/translated/build.js:284
msgid "Unallocate stock from build output"
msgstr ""
-#: templates/js/translated/build.js:213
+#: templates/js/translated/build.js:293
msgid "Complete build output"
msgstr ""
-#: templates/js/translated/build.js:221
+#: templates/js/translated/build.js:301
msgid "Delete build output"
msgstr ""
-#: templates/js/translated/build.js:244
+#: templates/js/translated/build.js:324
msgid "Are you sure you wish to unallocate stock items from this build?"
msgstr ""
-#: templates/js/translated/build.js:262
+#: templates/js/translated/build.js:342
msgid "Unallocate Stock Items"
msgstr ""
-#: templates/js/translated/build.js:280
+#: templates/js/translated/build.js:360 templates/js/translated/build.js:508
msgid "Select Build Outputs"
msgstr ""
-#: templates/js/translated/build.js:281
+#: templates/js/translated/build.js:361 templates/js/translated/build.js:509
msgid "At least one build output must be selected"
msgstr ""
-#: templates/js/translated/build.js:335
+#: templates/js/translated/build.js:415 templates/js/translated/build.js:563
msgid "Output"
msgstr ""
-#: templates/js/translated/build.js:351
+#: templates/js/translated/build.js:431
msgid "Complete Build Outputs"
msgstr ""
-#: templates/js/translated/build.js:446
+#: templates/js/translated/build.js:576
+msgid "Delete Build Outputs"
+msgstr ""
+
+#: templates/js/translated/build.js:665
msgid "No build order allocations found"
msgstr ""
-#: templates/js/translated/build.js:484 templates/js/translated/order.js:1848
+#: templates/js/translated/build.js:703 templates/js/translated/order.js:1848
msgid "Location not specified"
msgstr ""
-#: templates/js/translated/build.js:663
+#: templates/js/translated/build.js:885
msgid "No active build outputs found"
msgstr ""
-#: templates/js/translated/build.js:1112 templates/js/translated/build.js:1821
+#: templates/js/translated/build.js:1334 templates/js/translated/build.js:2059
#: templates/js/translated/order.js:1982
msgid "Edit stock allocation"
msgstr ""
-#: templates/js/translated/build.js:1114 templates/js/translated/build.js:1822
+#: templates/js/translated/build.js:1336 templates/js/translated/build.js:2060
#: templates/js/translated/order.js:1983
msgid "Delete stock allocation"
msgstr ""
-#: templates/js/translated/build.js:1132
+#: templates/js/translated/build.js:1354
msgid "Edit Allocation"
msgstr ""
-#: templates/js/translated/build.js:1142
+#: templates/js/translated/build.js:1364
msgid "Remove Allocation"
msgstr ""
-#: templates/js/translated/build.js:1167
+#: templates/js/translated/build.js:1389
msgid "Substitute parts available"
msgstr ""
-#: templates/js/translated/build.js:1184
+#: templates/js/translated/build.js:1406
msgid "Quantity Per"
msgstr ""
-#: templates/js/translated/build.js:1194 templates/js/translated/build.js:1420
-#: templates/js/translated/build.js:1817 templates/js/translated/order.js:2227
+#: templates/js/translated/build.js:1416 templates/js/translated/build.js:1656
+#: templates/js/translated/build.js:2055 templates/js/translated/order.js:2227
msgid "Allocated"
msgstr ""
-#: templates/js/translated/build.js:1250 templates/js/translated/order.js:2307
+#: templates/js/translated/build.js:1472 templates/js/translated/order.js:2307
msgid "Build stock"
msgstr ""
-#: templates/js/translated/build.js:1254 templates/stock_table.html:53
+#: templates/js/translated/build.js:1476 templates/stock_table.html:53
msgid "Order stock"
msgstr ""
-#: templates/js/translated/build.js:1257 templates/js/translated/order.js:2300
+#: templates/js/translated/build.js:1479 templates/js/translated/order.js:2300
msgid "Allocate stock"
msgstr ""
-#: templates/js/translated/build.js:1322 templates/js/translated/order.js:1499
+#: templates/js/translated/build.js:1558 templates/js/translated/order.js:1499
msgid "Specify stock allocation quantity"
msgstr ""
-#: templates/js/translated/build.js:1393 templates/js/translated/label.js:134
+#: templates/js/translated/build.js:1629 templates/js/translated/label.js:134
#: templates/js/translated/order.js:1550 templates/js/translated/report.js:225
msgid "Select Parts"
msgstr ""
-#: templates/js/translated/build.js:1394 templates/js/translated/order.js:1551
+#: templates/js/translated/build.js:1630 templates/js/translated/order.js:1551
msgid "You must select at least one part to allocate"
msgstr ""
-#: templates/js/translated/build.js:1408 templates/js/translated/order.js:1565
+#: templates/js/translated/build.js:1644 templates/js/translated/order.js:1565
msgid "Select source location (leave blank to take from all locations)"
msgstr ""
-#: templates/js/translated/build.js:1437 templates/js/translated/order.js:1600
+#: templates/js/translated/build.js:1673 templates/js/translated/order.js:1600
msgid "Confirm stock allocation"
msgstr ""
-#: templates/js/translated/build.js:1438
+#: templates/js/translated/build.js:1674
msgid "Allocate Stock Items to Build Order"
msgstr ""
-#: templates/js/translated/build.js:1449 templates/js/translated/order.js:1613
+#: templates/js/translated/build.js:1685 templates/js/translated/order.js:1613
msgid "No matching stock locations"
msgstr ""
-#: templates/js/translated/build.js:1519 templates/js/translated/order.js:1690
+#: templates/js/translated/build.js:1757 templates/js/translated/order.js:1690
msgid "No matching stock items"
msgstr ""
-#: templates/js/translated/build.js:1637
+#: templates/js/translated/build.js:1875
msgid "No builds matching query"
msgstr ""
-#: templates/js/translated/build.js:1654 templates/js/translated/part.js:1213
-#: templates/js/translated/part.js:1624 templates/js/translated/stock.js:1520
-#: templates/js/translated/stock.js:2479
+#: templates/js/translated/build.js:1892 templates/js/translated/part.js:1213
+#: templates/js/translated/part.js:1624 templates/js/translated/stock.js:1644
+#: templates/js/translated/stock.js:2603
msgid "Select"
msgstr ""
-#: templates/js/translated/build.js:1674
+#: templates/js/translated/build.js:1912
msgid "Build order is overdue"
msgstr ""
-#: templates/js/translated/build.js:1735 templates/js/translated/stock.js:2698
+#: templates/js/translated/build.js:1973 templates/js/translated/stock.js:2822
msgid "No user information"
msgstr ""
-#: templates/js/translated/build.js:1747
+#: templates/js/translated/build.js:1985
msgid "No information"
msgstr ""
-#: templates/js/translated/build.js:1798
+#: templates/js/translated/build.js:2036
msgid "No parts allocated for"
msgstr ""
@@ -7966,48 +8061,60 @@ msgstr ""
msgid "Create filter"
msgstr ""
-#: templates/js/translated/forms.js:350 templates/js/translated/forms.js:365
-#: templates/js/translated/forms.js:379 templates/js/translated/forms.js:393
+#: templates/js/translated/forms.js:351 templates/js/translated/forms.js:366
+#: templates/js/translated/forms.js:380 templates/js/translated/forms.js:394
msgid "Action Prohibited"
msgstr ""
-#: templates/js/translated/forms.js:352
+#: templates/js/translated/forms.js:353
msgid "Create operation not allowed"
msgstr ""
-#: templates/js/translated/forms.js:367
+#: templates/js/translated/forms.js:368
msgid "Update operation not allowed"
msgstr ""
-#: templates/js/translated/forms.js:381
+#: templates/js/translated/forms.js:382
msgid "Delete operation not allowed"
msgstr ""
-#: templates/js/translated/forms.js:395
+#: templates/js/translated/forms.js:396
msgid "View operation not allowed"
msgstr ""
-#: templates/js/translated/forms.js:680
+#: templates/js/translated/forms.js:681
msgid "Enter a valid number"
msgstr ""
-#: templates/js/translated/forms.js:1082 templates/modals.html:19
+#: templates/js/translated/forms.js:1129 templates/modals.html:19
#: templates/modals.html:43
msgid "Form errors exist"
msgstr ""
-#: templates/js/translated/forms.js:1487
+#: templates/js/translated/forms.js:1558
msgid "No results found"
msgstr ""
-#: templates/js/translated/forms.js:1691
+#: templates/js/translated/forms.js:1768
msgid "Searching"
msgstr ""
-#: templates/js/translated/forms.js:1930
+#: templates/js/translated/forms.js:2013
msgid "Clear input"
msgstr ""
+#: templates/js/translated/forms.js:2479
+msgid "File Column"
+msgstr ""
+
+#: templates/js/translated/forms.js:2479
+msgid "Field Name"
+msgstr ""
+
+#: templates/js/translated/forms.js:2491
+msgid "Select Columns"
+msgstr ""
+
#: templates/js/translated/helpers.js:19
msgid "YES"
msgstr ""
@@ -8017,7 +8124,7 @@ msgid "NO"
msgstr ""
#: templates/js/translated/label.js:29 templates/js/translated/report.js:118
-#: templates/js/translated/stock.js:1050
+#: templates/js/translated/stock.js:1051
msgid "Select Stock Items"
msgstr ""
@@ -8072,7 +8179,7 @@ msgid "Cancel"
msgstr ""
#: templates/js/translated/modals.js:77 templates/js/translated/modals.js:119
-#: templates/js/translated/modals.js:677 templates/js/translated/modals.js:982
+#: templates/js/translated/modals.js:677 templates/js/translated/modals.js:985
#: templates/modals.html:28 templates/modals.html:51
msgid "Submit"
msgstr ""
@@ -8097,31 +8204,31 @@ msgstr ""
msgid "Loading Data"
msgstr ""
-#: templates/js/translated/modals.js:934
+#: templates/js/translated/modals.js:937
msgid "Invalid response from server"
msgstr ""
-#: templates/js/translated/modals.js:934
+#: templates/js/translated/modals.js:937
msgid "Form data missing from server response"
msgstr ""
-#: templates/js/translated/modals.js:946
+#: templates/js/translated/modals.js:949
msgid "Error posting form data"
msgstr ""
-#: templates/js/translated/modals.js:1043
+#: templates/js/translated/modals.js:1046
msgid "JSON response missing form data"
msgstr ""
-#: templates/js/translated/modals.js:1058
+#: templates/js/translated/modals.js:1061
msgid "Error 400: Bad Request"
msgstr ""
-#: templates/js/translated/modals.js:1059
+#: templates/js/translated/modals.js:1062
msgid "Server returned error code 400"
msgstr ""
-#: templates/js/translated/modals.js:1082
+#: templates/js/translated/modals.js:1085
msgid "Error requesting form data"
msgstr ""
@@ -8141,10 +8248,6 @@ msgstr ""
msgid "Build ID"
msgstr ""
-#: templates/js/translated/model_renderers.js:182
-msgid "Part ID"
-msgstr ""
-
#: templates/js/translated/model_renderers.js:249
#: templates/js/translated/model_renderers.js:270
msgid "Order ID"
@@ -8210,7 +8313,7 @@ msgstr ""
msgid "Quantity to receive"
msgstr ""
-#: templates/js/translated/order.js:520 templates/js/translated/stock.js:2131
+#: templates/js/translated/order.js:520 templates/js/translated/stock.js:2255
msgid "Stock Status"
msgstr ""
@@ -8344,7 +8447,7 @@ msgid "Delete Stock Allocation"
msgstr ""
#: templates/js/translated/order.js:1959 templates/js/translated/order.js:2048
-#: templates/js/translated/stock.js:1436
+#: templates/js/translated/stock.js:1560
msgid "Shipped to customer"
msgstr ""
@@ -8545,12 +8648,12 @@ msgid "No category"
msgstr ""
#: templates/js/translated/part.js:1296
-#: templates/js/translated/table_filters.js:430
+#: templates/js/translated/table_filters.js:425
msgid "Low stock"
msgstr ""
#: templates/js/translated/part.js:1387 templates/js/translated/part.js:1559
-#: templates/js/translated/stock.js:2440
+#: templates/js/translated/stock.js:2564
msgid "Display as list"
msgstr ""
@@ -8558,7 +8661,7 @@ msgstr ""
msgid "Display as grid"
msgstr ""
-#: templates/js/translated/part.js:1578 templates/js/translated/stock.js:2459
+#: templates/js/translated/part.js:1578 templates/js/translated/stock.js:2583
msgid "Display as tree"
msgstr ""
@@ -8566,7 +8669,7 @@ msgstr ""
msgid "Subscribed category"
msgstr ""
-#: templates/js/translated/part.js:1656 templates/js/translated/stock.js:2503
+#: templates/js/translated/part.js:1656 templates/js/translated/stock.js:2627
msgid "Path"
msgstr ""
@@ -8574,11 +8677,12 @@ msgstr ""
msgid "No test templates matching query"
msgstr ""
-#: templates/js/translated/part.js:1751 templates/js/translated/stock.js:1242
+#: templates/js/translated/part.js:1751 templates/js/translated/stock.js:1271
msgid "Edit test result"
msgstr ""
-#: templates/js/translated/part.js:1752 templates/js/translated/stock.js:1243
+#: templates/js/translated/part.js:1752 templates/js/translated/stock.js:1272
+#: templates/js/translated/stock.js:1518
msgid "Delete test result"
msgstr ""
@@ -8687,347 +8791,375 @@ msgstr ""
msgid "Sales Order(s) must be selected before printing report"
msgstr ""
-#: templates/js/translated/stock.js:74
+#: templates/js/translated/stock.js:75
msgid "Serialize Stock Item"
msgstr ""
-#: templates/js/translated/stock.js:92 templates/js/translated/stock.js:181
-msgid "Next available serial number"
-msgstr ""
-
-#: templates/js/translated/stock.js:94 templates/js/translated/stock.js:183
-msgid "Latest serial number"
-msgstr ""
-
-#: templates/js/translated/stock.js:102
+#: templates/js/translated/stock.js:103
msgid "Confirm Stock Serialization"
msgstr ""
-#: templates/js/translated/stock.js:111
+#: templates/js/translated/stock.js:112
msgid "Parent stock location"
msgstr "Ubicación del stock principal"
-#: templates/js/translated/stock.js:154
+#: templates/js/translated/stock.js:155
msgid "New Stock Location"
msgstr ""
-#: templates/js/translated/stock.js:194
+#: templates/js/translated/stock.js:195
msgid "This part cannot be serialized"
msgstr ""
-#: templates/js/translated/stock.js:233
+#: templates/js/translated/stock.js:234
msgid "Enter initial quantity for this stock item"
msgstr ""
-#: templates/js/translated/stock.js:239
+#: templates/js/translated/stock.js:240
msgid "Enter serial numbers for new stock (or leave blank)"
msgstr ""
-#: templates/js/translated/stock.js:382
+#: templates/js/translated/stock.js:383
msgid "Created new stock item"
msgstr ""
-#: templates/js/translated/stock.js:395
+#: templates/js/translated/stock.js:396
msgid "Created multiple stock items"
msgstr ""
-#: templates/js/translated/stock.js:420
+#: templates/js/translated/stock.js:421
msgid "Find Serial Number"
msgstr ""
-#: templates/js/translated/stock.js:424 templates/js/translated/stock.js:425
+#: templates/js/translated/stock.js:425 templates/js/translated/stock.js:426
msgid "Enter serial number"
msgstr ""
-#: templates/js/translated/stock.js:441
+#: templates/js/translated/stock.js:442
msgid "Enter a serial number"
msgstr ""
-#: templates/js/translated/stock.js:461
+#: templates/js/translated/stock.js:462
msgid "No matching serial number"
msgstr ""
-#: templates/js/translated/stock.js:470
+#: templates/js/translated/stock.js:471
msgid "More than one matching result found"
msgstr ""
-#: templates/js/translated/stock.js:515
+#: templates/js/translated/stock.js:516
msgid "Export Stock"
msgstr ""
-#: templates/js/translated/stock.js:526
+#: templates/js/translated/stock.js:527
msgid "Include Sublocations"
msgstr ""
-#: templates/js/translated/stock.js:527
+#: templates/js/translated/stock.js:528
msgid "Include stock items in sublocations"
msgstr ""
-#: templates/js/translated/stock.js:636
+#: templates/js/translated/stock.js:637
msgid "Confirm stock assignment"
msgstr ""
-#: templates/js/translated/stock.js:637
+#: templates/js/translated/stock.js:638
msgid "Assign Stock to Customer"
msgstr ""
-#: templates/js/translated/stock.js:714
+#: templates/js/translated/stock.js:715
msgid "Warning: Merge operation cannot be reversed"
msgstr ""
-#: templates/js/translated/stock.js:715
+#: templates/js/translated/stock.js:716
msgid "Some information will be lost when merging stock items"
msgstr ""
-#: templates/js/translated/stock.js:717
+#: templates/js/translated/stock.js:718
msgid "Stock transaction history will be deleted for merged items"
msgstr ""
-#: templates/js/translated/stock.js:718
+#: templates/js/translated/stock.js:719
msgid "Supplier part information will be deleted for merged items"
msgstr ""
-#: templates/js/translated/stock.js:804
+#: templates/js/translated/stock.js:805
msgid "Confirm stock item merge"
msgstr ""
-#: templates/js/translated/stock.js:805
+#: templates/js/translated/stock.js:806
msgid "Merge Stock Items"
msgstr ""
-#: templates/js/translated/stock.js:900
+#: templates/js/translated/stock.js:901
msgid "Transfer Stock"
msgstr ""
-#: templates/js/translated/stock.js:901
+#: templates/js/translated/stock.js:902
msgid "Move"
msgstr ""
-#: templates/js/translated/stock.js:907
+#: templates/js/translated/stock.js:908
msgid "Count Stock"
msgstr ""
-#: templates/js/translated/stock.js:908
+#: templates/js/translated/stock.js:909
msgid "Count"
msgstr ""
-#: templates/js/translated/stock.js:912
+#: templates/js/translated/stock.js:913
msgid "Remove Stock"
msgstr ""
-#: templates/js/translated/stock.js:913
+#: templates/js/translated/stock.js:914
msgid "Take"
msgstr ""
-#: templates/js/translated/stock.js:917
+#: templates/js/translated/stock.js:918
msgid "Add Stock"
msgstr ""
-#: templates/js/translated/stock.js:918 users/models.py:208
+#: templates/js/translated/stock.js:919 users/models.py:213
msgid "Add"
msgstr ""
-#: templates/js/translated/stock.js:922 templates/stock_table.html:58
+#: templates/js/translated/stock.js:923 templates/stock_table.html:58
msgid "Delete Stock"
msgstr ""
-#: templates/js/translated/stock.js:1011
+#: templates/js/translated/stock.js:1012
msgid "Quantity cannot be adjusted for serialized stock"
msgstr ""
-#: templates/js/translated/stock.js:1011
+#: templates/js/translated/stock.js:1012
msgid "Specify stock quantity"
msgstr ""
-#: templates/js/translated/stock.js:1051
+#: templates/js/translated/stock.js:1052
msgid "You must select at least one available stock item"
msgstr ""
-#: templates/js/translated/stock.js:1209
+#: templates/js/translated/stock.js:1210
msgid "PASS"
msgstr ""
-#: templates/js/translated/stock.js:1211
+#: templates/js/translated/stock.js:1212
msgid "FAIL"
msgstr ""
-#: templates/js/translated/stock.js:1216
+#: templates/js/translated/stock.js:1217
msgid "NO RESULT"
msgstr ""
-#: templates/js/translated/stock.js:1238
+#: templates/js/translated/stock.js:1264
+msgid "Pass test"
+msgstr ""
+
+#: templates/js/translated/stock.js:1267
msgid "Add test result"
msgstr ""
-#: templates/js/translated/stock.js:1264
+#: templates/js/translated/stock.js:1293
msgid "No test results found"
msgstr ""
-#: templates/js/translated/stock.js:1321
+#: templates/js/translated/stock.js:1349
msgid "Test Date"
msgstr ""
-#: templates/js/translated/stock.js:1428
+#: templates/js/translated/stock.js:1501
+msgid "Edit Test Result"
+msgstr ""
+
+#: templates/js/translated/stock.js:1523
+msgid "Delete Test Result"
+msgstr ""
+
+#: templates/js/translated/stock.js:1552
msgid "In production"
msgstr ""
-#: templates/js/translated/stock.js:1432
+#: templates/js/translated/stock.js:1556
msgid "Installed in Stock Item"
msgstr ""
-#: templates/js/translated/stock.js:1440
+#: templates/js/translated/stock.js:1564
msgid "Assigned to Sales Order"
msgstr ""
-#: templates/js/translated/stock.js:1446
+#: templates/js/translated/stock.js:1570
msgid "No stock location set"
msgstr ""
-#: templates/js/translated/stock.js:1604
+#: templates/js/translated/stock.js:1728
msgid "Stock item is in production"
msgstr ""
-#: templates/js/translated/stock.js:1609
+#: templates/js/translated/stock.js:1733
msgid "Stock item assigned to sales order"
msgstr ""
-#: templates/js/translated/stock.js:1612
+#: templates/js/translated/stock.js:1736
msgid "Stock item assigned to customer"
msgstr ""
-#: templates/js/translated/stock.js:1616
+#: templates/js/translated/stock.js:1740
msgid "Stock item has expired"
msgstr ""
-#: templates/js/translated/stock.js:1618
+#: templates/js/translated/stock.js:1742
msgid "Stock item will expire soon"
msgstr ""
-#: templates/js/translated/stock.js:1624
+#: templates/js/translated/stock.js:1748
msgid "Serialized stock item has been allocated"
msgstr ""
-#: templates/js/translated/stock.js:1626
+#: templates/js/translated/stock.js:1750
msgid "Stock item has been fully allocated"
msgstr ""
-#: templates/js/translated/stock.js:1628
+#: templates/js/translated/stock.js:1752
msgid "Stock item has been partially allocated"
msgstr ""
-#: templates/js/translated/stock.js:1633
+#: templates/js/translated/stock.js:1757
msgid "Stock item has been installed in another item"
msgstr ""
-#: templates/js/translated/stock.js:1640
+#: templates/js/translated/stock.js:1764
msgid "Stock item has been rejected"
msgstr ""
-#: templates/js/translated/stock.js:1642
+#: templates/js/translated/stock.js:1766
msgid "Stock item is lost"
msgstr ""
-#: templates/js/translated/stock.js:1644
+#: templates/js/translated/stock.js:1768
msgid "Stock item is destroyed"
msgstr ""
-#: templates/js/translated/stock.js:1648
+#: templates/js/translated/stock.js:1772
#: templates/js/translated/table_filters.js:188
msgid "Depleted"
msgstr ""
-#: templates/js/translated/stock.js:1698
+#: templates/js/translated/stock.js:1822
msgid "Stocktake"
msgstr "Inventario"
-#: templates/js/translated/stock.js:1771
+#: templates/js/translated/stock.js:1895
msgid "Supplier part not specified"
msgstr ""
-#: templates/js/translated/stock.js:1809
+#: templates/js/translated/stock.js:1933
msgid "No stock items matching query"
msgstr ""
-#: templates/js/translated/stock.js:1830 templates/js/translated/stock.js:1878
+#: templates/js/translated/stock.js:1954 templates/js/translated/stock.js:2002
msgid "items"
msgstr ""
-#: templates/js/translated/stock.js:1918
+#: templates/js/translated/stock.js:2042
msgid "batches"
msgstr ""
-#: templates/js/translated/stock.js:1945
+#: templates/js/translated/stock.js:2069
msgid "locations"
msgstr ""
-#: templates/js/translated/stock.js:1947
+#: templates/js/translated/stock.js:2071
msgid "Undefined location"
msgstr ""
-#: templates/js/translated/stock.js:2146
+#: templates/js/translated/stock.js:2270
msgid "Set Stock Status"
msgstr ""
-#: templates/js/translated/stock.js:2160
+#: templates/js/translated/stock.js:2284
msgid "Select Status Code"
msgstr ""
-#: templates/js/translated/stock.js:2161
+#: templates/js/translated/stock.js:2285
msgid "Status code must be selected"
msgstr ""
-#: templates/js/translated/stock.js:2340
+#: templates/js/translated/stock.js:2464
msgid "Allocated Quantity"
msgstr ""
-#: templates/js/translated/stock.js:2535
+#: templates/js/translated/stock.js:2659
msgid "Invalid date"
msgstr ""
-#: templates/js/translated/stock.js:2557
+#: templates/js/translated/stock.js:2681
msgid "Details"
msgstr ""
-#: templates/js/translated/stock.js:2582
+#: templates/js/translated/stock.js:2706
msgid "Location no longer exists"
msgstr ""
-#: templates/js/translated/stock.js:2601
+#: templates/js/translated/stock.js:2725
msgid "Purchase order no longer exists"
msgstr ""
-#: templates/js/translated/stock.js:2620
+#: templates/js/translated/stock.js:2744
msgid "Customer no longer exists"
msgstr ""
-#: templates/js/translated/stock.js:2638
+#: templates/js/translated/stock.js:2762
msgid "Stock item no longer exists"
msgstr ""
-#: templates/js/translated/stock.js:2661
+#: templates/js/translated/stock.js:2785
msgid "Added"
msgstr ""
-#: templates/js/translated/stock.js:2669
+#: templates/js/translated/stock.js:2793
msgid "Removed"
msgstr ""
-#: templates/js/translated/stock.js:2710
+#: templates/js/translated/stock.js:2834
msgid "Edit tracking entry"
msgstr ""
-#: templates/js/translated/stock.js:2711
+#: templates/js/translated/stock.js:2835
msgid "Delete tracking entry"
msgstr ""
-#: templates/js/translated/stock.js:2762
+#: templates/js/translated/stock.js:2886
msgid "No installed items"
msgstr ""
-#: templates/js/translated/stock.js:2813
+#: templates/js/translated/stock.js:2937
msgid "Uninstall Stock Item"
msgstr ""
+#: templates/js/translated/stock.js:2973
+msgid "Install another stock item into this item"
+msgstr ""
+
+#: templates/js/translated/stock.js:2974
+msgid "Stock items can only be installed if they meet the following criteria"
+msgstr ""
+
+#: templates/js/translated/stock.js:2976
+msgid "The Stock Item links to a Part which is the BOM for this Stock Item"
+msgstr ""
+
+#: templates/js/translated/stock.js:2977
+msgid "The Stock Item is currently available in stock"
+msgstr ""
+
+#: templates/js/translated/stock.js:2978
+msgid "The Stock Item is serialized and does not belong to another item"
+msgstr ""
+
+#: templates/js/translated/stock.js:2991
+msgid "Select part to install"
+msgstr ""
+
#: templates/js/translated/table_filters.js:56
msgid "Trackable Part"
msgstr ""
@@ -9055,12 +9187,12 @@ msgstr ""
#: templates/js/translated/table_filters.js:121
#: templates/js/translated/table_filters.js:122
-#: templates/js/translated/table_filters.js:407
+#: templates/js/translated/table_filters.js:402
msgid "Include subcategories"
msgstr ""
#: templates/js/translated/table_filters.js:126
-#: templates/js/translated/table_filters.js:442
+#: templates/js/translated/table_filters.js:437
msgid "Subscribed"
msgstr ""
@@ -9102,7 +9234,7 @@ msgid "Batch code"
msgstr ""
#: templates/js/translated/table_filters.js:163
-#: templates/js/translated/table_filters.js:379
+#: templates/js/translated/table_filters.js:374
msgid "Active parts"
msgstr ""
@@ -9187,47 +9319,47 @@ msgstr "Mostrar artículos de stock que han caducado"
msgid "Show stock which is close to expiring"
msgstr ""
-#: templates/js/translated/table_filters.js:290
+#: templates/js/translated/table_filters.js:285
msgid "Build status"
msgstr ""
-#: templates/js/translated/table_filters.js:303
-#: templates/js/translated/table_filters.js:344
+#: templates/js/translated/table_filters.js:298
+#: templates/js/translated/table_filters.js:339
msgid "Assigned to me"
msgstr ""
-#: templates/js/translated/table_filters.js:320
-#: templates/js/translated/table_filters.js:331
-#: templates/js/translated/table_filters.js:352
+#: templates/js/translated/table_filters.js:315
+#: templates/js/translated/table_filters.js:326
+#: templates/js/translated/table_filters.js:347
msgid "Order status"
msgstr ""
-#: templates/js/translated/table_filters.js:336
-#: templates/js/translated/table_filters.js:357
+#: templates/js/translated/table_filters.js:331
+#: templates/js/translated/table_filters.js:352
msgid "Outstanding"
msgstr ""
-#: templates/js/translated/table_filters.js:408
+#: templates/js/translated/table_filters.js:403
msgid "Include parts in subcategories"
msgstr ""
-#: templates/js/translated/table_filters.js:412
+#: templates/js/translated/table_filters.js:407
msgid "Has IPN"
msgstr ""
-#: templates/js/translated/table_filters.js:413
+#: templates/js/translated/table_filters.js:408
msgid "Part has internal part number"
msgstr ""
-#: templates/js/translated/table_filters.js:418
+#: templates/js/translated/table_filters.js:413
msgid "Show active parts"
msgstr ""
-#: templates/js/translated/table_filters.js:426
+#: templates/js/translated/table_filters.js:421
msgid "Stock available"
msgstr ""
-#: templates/js/translated/table_filters.js:454
+#: templates/js/translated/table_filters.js:449
msgid "Purchasable"
msgstr ""
@@ -9480,35 +9612,35 @@ msgstr ""
msgid "Important dates"
msgstr ""
-#: users/models.py:195
+#: users/models.py:200
msgid "Permission set"
msgstr ""
-#: users/models.py:203
+#: users/models.py:208
msgid "Group"
msgstr ""
-#: users/models.py:206
+#: users/models.py:211
msgid "View"
msgstr ""
-#: users/models.py:206
+#: users/models.py:211
msgid "Permission to view items"
msgstr "Permiso para ver artículos"
-#: users/models.py:208
+#: users/models.py:213
msgid "Permission to add items"
msgstr "Permiso para añadir artículos"
-#: users/models.py:210
+#: users/models.py:215
msgid "Change"
msgstr ""
-#: users/models.py:210
+#: users/models.py:215
msgid "Permissions to edit items"
msgstr "Permisos para editar artículos"
-#: users/models.py:212
+#: users/models.py:217
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 85b16f7fea..45d149fe65 100644
--- a/InvenTree/locale/fr/LC_MESSAGES/django.po
+++ b/InvenTree/locale/fr/LC_MESSAGES/django.po
@@ -3,8 +3,8 @@ msgid ""
msgstr ""
"Project-Id-Version: inventree\n"
"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2022-01-29 00:17+0000\n"
-"PO-Revision-Date: 2022-01-29 01:10\n"
+"POT-Creation-Date: 2022-02-18 20:36+0000\n"
+"PO-Revision-Date: 2022-02-18 20:38\n"
"Last-Translator: \n"
"Language-Team: French\n"
"Language: fr_FR\n"
@@ -34,9 +34,9 @@ msgstr "Aucune action correspondante trouvée"
msgid "Enter date"
msgstr "Entrer la date"
-#: InvenTree/forms.py:126 build/forms.py:48 build/forms.py:69 order/forms.py:24
-#: order/forms.py:35 order/forms.py:46 order/forms.py:57
-#: templates/account/email_confirm.html:20 templates/js/translated/forms.js:595
+#: InvenTree/forms.py:126 order/forms.py:24 order/forms.py:35 order/forms.py:46
+#: order/forms.py:57 templates/account/email_confirm.html:20
+#: templates/js/translated/forms.js:596
msgid "Confirm"
msgstr "Confirmer"
@@ -86,7 +86,7 @@ msgid "Duplicate serial: {n}"
msgstr "Dupliquer le numéro de série: {n}"
#: InvenTree/helpers.py:446 order/models.py:282 order/models.py:425
-#: stock/views.py:1231
+#: stock/views.py:1082
msgid "Invalid quantity provided"
msgstr "Quantité fournie invalide"
@@ -119,133 +119,133 @@ msgstr "Aucun numéro de série trouvé"
msgid "Number of unique serial number ({s}) must match quantity ({q})"
msgstr "Le nombre de numéros de série uniques ({s}) doit correspondre à la quantité ({q})"
-#: InvenTree/models.py:120
+#: InvenTree/models.py:176
msgid "Missing file"
msgstr "Fichier manquant"
-#: InvenTree/models.py:121
+#: InvenTree/models.py:177
msgid "Missing external link"
msgstr "Lien externe manquant"
-#: InvenTree/models.py:132 stock/models.py:1995
+#: InvenTree/models.py:188 stock/models.py:1995
#: templates/js/translated/attachment.js:119
msgid "Attachment"
msgstr "Pièce jointe"
-#: InvenTree/models.py:133
+#: InvenTree/models.py:189
msgid "Select file to attach"
msgstr "Sélectionnez un fichier à joindre"
-#: InvenTree/models.py:139 company/models.py:131 company/models.py:348
-#: company/models.py:564 order/models.py:127 part/models.py:830
+#: InvenTree/models.py:195 company/models.py:131 company/models.py:348
+#: company/models.py:564 order/models.py:127 part/models.py:860
#: report/templates/report/inventree_build_order_base.html:165
#: templates/js/translated/company.js:540
#: templates/js/translated/company.js:829 templates/js/translated/part.js:1324
msgid "Link"
msgstr "Lien"
-#: InvenTree/models.py:140 build/models.py:332 part/models.py:831
+#: InvenTree/models.py:196 build/models.py:332 part/models.py:861
#: stock/models.py:529
msgid "Link to external URL"
msgstr "Lien vers une url externe"
-#: InvenTree/models.py:143 templates/js/translated/attachment.js:163
+#: InvenTree/models.py:199 templates/js/translated/attachment.js:163
msgid "Comment"
msgstr "Commentaire"
-#: InvenTree/models.py:143
+#: InvenTree/models.py:199
msgid "File comment"
msgstr "Commentaire du fichier"
-#: InvenTree/models.py:149 InvenTree/models.py:150 common/models.py:1223
-#: common/models.py:1224 common/models.py:1452 common/models.py:1453
-#: part/models.py:2265 part/models.py:2285
+#: InvenTree/models.py:205 InvenTree/models.py:206 common/models.py:1235
+#: common/models.py:1236 common/models.py:1464 common/models.py:1465
+#: part/models.py:2301 part/models.py:2321
#: report/templates/report/inventree_test_report_base.html:96
-#: templates/js/translated/stock.js:2692
+#: templates/js/translated/stock.js:2816
msgid "User"
msgstr "Utilisateur"
-#: InvenTree/models.py:153
+#: InvenTree/models.py:209
msgid "upload date"
msgstr "date de chargement"
-#: InvenTree/models.py:176
+#: InvenTree/models.py:232
msgid "Filename must not be empty"
msgstr "Le nom de fichier ne doit pas être vide"
-#: InvenTree/models.py:199
+#: InvenTree/models.py:255
msgid "Invalid attachment directory"
msgstr "Répertoire de pièce jointe invalide"
-#: InvenTree/models.py:209
+#: InvenTree/models.py:265
#, python-brace-format
msgid "Filename contains illegal character '{c}'"
msgstr "Le nom de fichier contient le caractère illégal '{c}'"
-#: InvenTree/models.py:212
+#: InvenTree/models.py:268
msgid "Filename missing extension"
msgstr "Extension manquante du nom de fichier"
-#: InvenTree/models.py:219
+#: InvenTree/models.py:275
msgid "Attachment with this filename already exists"
msgstr "Une pièce jointe avec ce nom de fichier existe déjà"
-#: InvenTree/models.py:226
+#: InvenTree/models.py:282
msgid "Error renaming file"
msgstr "Erreur lors du renommage du fichier"
-#: InvenTree/models.py:261
+#: InvenTree/models.py:317
msgid "Invalid choice"
msgstr "Choix invalide"
-#: InvenTree/models.py:277 InvenTree/models.py:278 common/models.py:1438
-#: company/models.py:415 label/models.py:112 part/models.py:774
-#: part/models.py:2449 plugin/models.py:40 report/models.py:181
+#: InvenTree/models.py:333 InvenTree/models.py:334 common/models.py:1450
+#: company/models.py:415 label/models.py:112 part/models.py:804
+#: part/models.py:2485 plugin/models.py:40 report/models.py:181
#: templates/InvenTree/settings/mixins/urls.html:13
#: templates/InvenTree/settings/plugin.html:48
#: templates/InvenTree/settings/plugin.html:125
#: templates/InvenTree/settings/plugin_settings.html:23
-#: templates/InvenTree/settings/settings.html:282
+#: templates/InvenTree/settings/settings.html:319
#: templates/js/translated/company.js:641 templates/js/translated/part.js:567
#: templates/js/translated/part.js:706 templates/js/translated/part.js:1631
-#: templates/js/translated/stock.js:2485
+#: templates/js/translated/stock.js:2609
msgid "Name"
msgstr "Nom"
-#: InvenTree/models.py:284 build/models.py:209
+#: InvenTree/models.py:340 build/models.py:209
#: build/templates/build/detail.html:25 company/models.py:354
#: company/models.py:570 company/templates/company/company_base.html:68
#: company/templates/company/manufacturer_part.html:76
#: company/templates/company/supplier_part.html:73 label/models.py:119
-#: order/models.py:125 part/models.py:797 part/templates/part/category.html:74
+#: order/models.py:125 part/models.py:827 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:93
#: templates/InvenTree/settings/plugin_settings.html:33
-#: templates/js/translated/bom.js:339 templates/js/translated/bom.js:552
-#: templates/js/translated/build.js:1682 templates/js/translated/company.js:345
+#: templates/js/translated/bom.js:552 templates/js/translated/bom.js:765
+#: templates/js/translated/build.js:1920 templates/js/translated/company.js:345
#: templates/js/translated/company.js:551
#: templates/js/translated/company.js:840 templates/js/translated/order.js:836
#: templates/js/translated/order.js:1019 templates/js/translated/order.js:1258
#: templates/js/translated/part.js:626 templates/js/translated/part.js:999
#: templates/js/translated/part.js:1084 templates/js/translated/part.js:1254
#: templates/js/translated/part.js:1650 templates/js/translated/part.js:1719
-#: templates/js/translated/stock.js:1577 templates/js/translated/stock.js:2314
-#: templates/js/translated/stock.js:2497 templates/js/translated/stock.js:2542
+#: templates/js/translated/stock.js:1701 templates/js/translated/stock.js:2438
+#: templates/js/translated/stock.js:2621 templates/js/translated/stock.js:2666
msgid "Description"
msgstr "Description"
-#: InvenTree/models.py:285
+#: InvenTree/models.py:341
msgid "Description (optional)"
msgstr "Description (facultative)"
-#: InvenTree/models.py:293
+#: InvenTree/models.py:349
msgid "parent"
msgstr "parent"
-#: InvenTree/serializers.py:65 part/models.py:2734
+#: InvenTree/serializers.py:65 part/models.py:2803
msgid "Must be a valid number"
msgstr "Doit être un nombre valide"
@@ -253,83 +253,127 @@ msgstr "Doit être un nombre valide"
msgid "Filename"
msgstr "Nom du fichier"
-#: InvenTree/settings.py:661
+#: InvenTree/serializers.py:334
+msgid "Invalid value"
+msgstr "Valeur non valide"
+
+#: InvenTree/serializers.py:355
+msgid "Data File"
+msgstr ""
+
+#: InvenTree/serializers.py:356
+msgid "Select data file for upload"
+msgstr ""
+
+#: InvenTree/serializers.py:380
+msgid "Unsupported file type"
+msgstr ""
+
+#: InvenTree/serializers.py:386
+msgid "File is too large"
+msgstr ""
+
+#: InvenTree/serializers.py:407
+msgid "No columns found in file"
+msgstr ""
+
+#: InvenTree/serializers.py:410
+msgid "No data rows found in file"
+msgstr ""
+
+#: InvenTree/serializers.py:533
+msgid "No data rows provided"
+msgstr ""
+
+#: InvenTree/serializers.py:536
+msgid "No data columns supplied"
+msgstr ""
+
+#: InvenTree/serializers.py:623
+msgid "Missing required column"
+msgstr ""
+
+#: InvenTree/serializers.py:632
+msgid "Duplicate column"
+msgstr ""
+
+#: InvenTree/settings.py:655
msgid "German"
msgstr "Allemand"
-#: InvenTree/settings.py:662
+#: InvenTree/settings.py:656
msgid "Greek"
msgstr "Greek"
-#: InvenTree/settings.py:663
+#: InvenTree/settings.py:657
msgid "English"
msgstr "Anglais"
-#: InvenTree/settings.py:664
+#: InvenTree/settings.py:658
msgid "Spanish"
msgstr "Spanish"
-#: InvenTree/settings.py:665
+#: InvenTree/settings.py:659
msgid "Spanish (Mexican)"
msgstr "Espagnol (Mexique)"
-#: InvenTree/settings.py:666
+#: InvenTree/settings.py:660
msgid "French"
msgstr "Français"
-#: InvenTree/settings.py:667
+#: InvenTree/settings.py:661
msgid "Hebrew"
msgstr "Hebrew"
-#: InvenTree/settings.py:668
+#: InvenTree/settings.py:662
msgid "Italian"
msgstr "Italian"
-#: InvenTree/settings.py:669
+#: InvenTree/settings.py:663
msgid "Japanese"
msgstr "Japanese"
-#: InvenTree/settings.py:670
+#: InvenTree/settings.py:664
msgid "Korean"
msgstr "Korean"
-#: InvenTree/settings.py:671
+#: InvenTree/settings.py:665
msgid "Dutch"
msgstr "Dutch"
-#: InvenTree/settings.py:672
+#: InvenTree/settings.py:666
msgid "Norwegian"
msgstr "Norwegian"
-#: InvenTree/settings.py:673
+#: InvenTree/settings.py:667
msgid "Polish"
msgstr "Polonais"
-#: InvenTree/settings.py:674
+#: InvenTree/settings.py:668
msgid "Portugese"
msgstr "Portugais"
-#: InvenTree/settings.py:675
+#: InvenTree/settings.py:669
msgid "Russian"
msgstr "Russian"
-#: InvenTree/settings.py:676
+#: InvenTree/settings.py:670
msgid "Swedish"
msgstr "Swedish"
-#: InvenTree/settings.py:677
+#: InvenTree/settings.py:671
msgid "Thai"
msgstr "Thai"
-#: InvenTree/settings.py:678
+#: InvenTree/settings.py:672
msgid "Turkish"
msgstr "Turc"
-#: InvenTree/settings.py:679
+#: InvenTree/settings.py:673
msgid "Vietnamese"
msgstr "Vietnamese"
-#: InvenTree/settings.py:680
+#: InvenTree/settings.py:674
msgid "Chinese"
msgstr "Chinese"
@@ -346,7 +390,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:316 templates/js/translated/table_filters.js:313
+#: InvenTree/status_codes.py:316 templates/js/translated/table_filters.js:308
msgid "Pending"
msgstr "En attente"
@@ -456,7 +500,7 @@ msgstr "Séparer de l'élément parent"
msgid "Split child item"
msgstr "Fractionner l'élément enfant"
-#: InvenTree/status_codes.py:294 templates/js/translated/stock.js:2072
+#: InvenTree/status_codes.py:294 templates/js/translated/stock.js:2196
msgid "Merged stock items"
msgstr "Articles de stock fusionnés"
@@ -484,41 +528,41 @@ msgstr "Reçu contre bon de commande"
msgid "Production"
msgstr "Fabrication"
-#: InvenTree/validators.py:23
+#: InvenTree/validators.py:25
msgid "Not a valid currency code"
msgstr "Code de devise invalide"
-#: InvenTree/validators.py:51
+#: InvenTree/validators.py:53
msgid "Invalid character in part name"
msgstr "Caractère invalide dans le nom de la pièce"
-#: InvenTree/validators.py:64
+#: InvenTree/validators.py:66
#, python-brace-format
msgid "IPN must match regex pattern {pat}"
msgstr "L'IPN doit correspondre au modèle de regex {pat}"
-#: InvenTree/validators.py:78 InvenTree/validators.py:92
-#: InvenTree/validators.py:106
+#: InvenTree/validators.py:80 InvenTree/validators.py:94
+#: InvenTree/validators.py:108
#, python-brace-format
msgid "Reference must match pattern {pattern}"
msgstr "La référence doit correspondre au modèle {pattern}"
-#: InvenTree/validators.py:114
+#: InvenTree/validators.py:116
#, python-brace-format
msgid "Illegal character in name ({x})"
msgstr "Caractère invalide dans le nom ({x})"
-#: InvenTree/validators.py:133 InvenTree/validators.py:149
+#: InvenTree/validators.py:137 InvenTree/validators.py:153
msgid "Overage value must not be negative"
msgstr "La valeur de surplus ne doit pas être négative"
-#: InvenTree/validators.py:151
+#: InvenTree/validators.py:155
msgid "Overage must not exceed 100%"
msgstr "Le surplus ne doit pas dépasser 100%"
-#: InvenTree/validators.py:158
-msgid "Overage must be an integer value or a percentage"
-msgstr "La valeur de surplus doit être un nombre entier ou un pourcentage"
+#: InvenTree/validators.py:162
+msgid "Invalid value for overage"
+msgstr ""
#: InvenTree/views.py:538
msgid "Delete Item"
@@ -584,69 +628,11 @@ msgstr "Le code-barres correspond déjà à l'objet Stock Item"
msgid "Barcode associated with Stock Item"
msgstr "Code-barres associé à l'article en stock"
-#: build/forms.py:36 build/models.py:1293
-#: build/templates/build/build_base.html:82
-#: build/templates/build/detail.html:35 common/models.py:1263
-#: company/forms.py:42 company/templates/company/supplier_part.html:251
-#: order/models.py:805 order/models.py:1229 order/serializers.py:816
-#: order/templates/order/order_wizard/match_parts.html:30
-#: order/templates/order/order_wizard/select_parts.html:34 part/forms.py:144
-#: part/forms.py:160 part/forms.py:176 part/models.py:2636
-#: part/templates/part/bom_upload/match_parts.html:31
-#: part/templates/part/detail.html:992 part/templates/part/detail.html:1078
-#: part/templates/part/part_pricing.html:16
-#: report/templates/report/inventree_build_order_base.html:114
-#: report/templates/report/inventree_po_report.html:91
-#: report/templates/report/inventree_so_report.html:91
-#: report/templates/report/inventree_test_report_base.html:81
-#: report/templates/report/inventree_test_report_base.html:139
-#: stock/forms.py:142 stock/serializers.py:293
-#: stock/templates/stock/item_base.html:181
-#: stock/templates/stock/item_base.html:262
-#: stock/templates/stock/item_base.html:270
-#: templates/js/translated/barcode.js:385 templates/js/translated/bom.js:567
-#: templates/js/translated/build.js:295 templates/js/translated/build.js:495
-#: templates/js/translated/build.js:689 templates/js/translated/build.js:699
-#: templates/js/translated/build.js:1075 templates/js/translated/build.js:1422
-#: templates/js/translated/model_renderers.js:99
-#: templates/js/translated/order.js:101 templates/js/translated/order.js:1056
-#: 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:906
-#: templates/js/translated/part.js:1862 templates/js/translated/part.js:1985
-#: templates/js/translated/part.js:2063 templates/js/translated/stock.js:391
-#: templates/js/translated/stock.js:588 templates/js/translated/stock.js:758
-#: templates/js/translated/stock.js:2677 templates/js/translated/stock.js:2779
-msgid "Quantity"
-msgstr "Quantité"
-
-#: build/forms.py:37
-msgid "Enter quantity for build output"
-msgstr "Entrer la quantité désiré pour la fabrication"
-
-#: build/forms.py:41 order/serializers.py:820 stock/forms.py:81
-#: stock/serializers.py:314 templates/js/translated/stock.js:238
-#: templates/js/translated/stock.js:392
-msgid "Serial Numbers"
-msgstr "Numéros de série"
-
-#: build/forms.py:43
-msgid "Enter serial numbers for build outputs"
-msgstr "Entrer les numéros de séries pour la fabrication"
-
-#: build/forms.py:49
-msgid "Confirm creation of build output"
-msgstr "Confirmer la création de la sortie de l'assemblage"
-
-#: build/forms.py:70
-msgid "Confirm deletion of build output"
-msgstr "Confirmer la supression de la fabrication"
-
-#: build/forms.py:89
+#: build/forms.py:20
msgid "Confirm cancel"
msgstr "Confirmer l'annulation"
-#: build/forms.py:89 build/views.py:65
+#: build/forms.py:20 build/views.py:62
msgid "Confirm build cancellation"
msgstr "Confirmer l'annulation de la fabrication"
@@ -657,7 +643,7 @@ msgstr "Choix invalide pour la fabrication parente"
#: build/models.py:139 build/templates/build/build_base.html:9
#: build/templates/build/build_base.html:27
#: report/templates/report/inventree_build_order_base.html:106
-#: templates/js/translated/build.js:457 templates/js/translated/stock.js:2290
+#: templates/js/translated/build.js:676 templates/js/translated/stock.js:2414
msgid "Build Order"
msgstr "Ordre de Fabrication"
@@ -665,7 +651,7 @@ msgstr "Ordre de Fabrication"
#: 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
+#: part/templates/part/part_sidebar.html:21 templates/InvenTree/index.html:221
#: templates/InvenTree/search.html:139
#: templates/InvenTree/settings/sidebar.html:43 users/models.py:44
msgid "Build Orders"
@@ -676,11 +662,11 @@ msgid "Build Order Reference"
msgstr "Référence de l' Ordre de Fabrication"
#: build/models.py:201 order/models.py:213 order/models.py:541
-#: order/models.py:812 part/models.py:2645
-#: part/templates/part/bom_upload/match_parts.html:30
+#: order/models.py:812 part/models.py:2714
+#: part/templates/part/upload_bom.html:54
#: report/templates/report/inventree_po_report.html:92
#: report/templates/report/inventree_so_report.html:92
-#: templates/js/translated/bom.js:559 templates/js/translated/build.js:1179
+#: templates/js/translated/bom.js:772 templates/js/translated/build.js:1401
#: templates/js/translated/order.js:1050 templates/js/translated/order.js:2144
msgid "Reference"
msgstr "Référence"
@@ -689,7 +675,7 @@ msgstr "Référence"
msgid "Brief description of the build"
msgstr "Brève description de la fabrication"
-#: build/models.py:221 build/templates/build/build_base.html:164
+#: build/models.py:221 build/templates/build/build_base.html:169
#: build/templates/build/detail.html:88
msgid "Parent Build"
msgstr "Fabrication parente"
@@ -702,30 +688,31 @@ msgstr "BuildOrder associé a cette fabrication"
#: build/templates/build/detail.html:30 company/models.py:705
#: order/models.py:876 order/models.py:950
#: order/templates/order/order_wizard/select_parts.html:32 part/models.py:359
-#: part/models.py:2211 part/models.py:2227 part/models.py:2246
-#: part/models.py:2263 part/models.py:2365 part/models.py:2487
-#: part/models.py:2620 part/models.py:2927 part/serializers.py:658
-#: part/templates/part/part_app_base.html:8
+#: part/models.py:2247 part/models.py:2263 part/models.py:2282
+#: part/models.py:2299 part/models.py:2401 part/models.py:2523
+#: part/models.py:2613 part/models.py:2689 part/models.py:2996
+#: part/serializers.py:666 part/templates/part/part_app_base.html:8
#: part/templates/part/part_pricing.html:12
#: part/templates/part/set_category.html:13
+#: part/templates/part/upload_bom.html:52
#: 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: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:338
-#: templates/js/translated/bom.js:517 templates/js/translated/build.js:680
-#: templates/js/translated/build.js:1048 templates/js/translated/build.js:1419
-#: templates/js/translated/build.js:1687 templates/js/translated/company.js:492
+#: templates/js/translated/barcode.js:383 templates/js/translated/bom.js:551
+#: templates/js/translated/bom.js:730 templates/js/translated/build.js:902
+#: templates/js/translated/build.js:1270 templates/js/translated/build.js:1655
+#: templates/js/translated/build.js:1925 templates/js/translated/company.js:492
#: templates/js/translated/company.js:749 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:984
#: templates/js/translated/part.js:1065 templates/js/translated/part.js:1232
-#: templates/js/translated/stock.js:562 templates/js/translated/stock.js:727
-#: templates/js/translated/stock.js:934 templates/js/translated/stock.js:1534
-#: templates/js/translated/stock.js:2767
+#: templates/js/translated/stock.js:563 templates/js/translated/stock.js:728
+#: templates/js/translated/stock.js:935 templates/js/translated/stock.js:1658
+#: templates/js/translated/stock.js:2891 templates/js/translated/stock.js:2990
msgid "Part"
msgstr "Pièce"
@@ -741,7 +728,7 @@ msgstr "Bon de commande de référence"
msgid "SalesOrder to which this build is allocated"
msgstr "Commande de vente à laquelle cette construction est allouée"
-#: build/models.py:249 templates/js/translated/build.js:1407
+#: build/models.py:249 templates/js/translated/build.js:1643
#: templates/js/translated/order.js:1564
msgid "Source Location"
msgstr "Emplacement d'origine"
@@ -782,15 +769,15 @@ msgstr "État de la construction"
msgid "Build status code"
msgstr "Code de statut de construction"
-#: build/models.py:287 stock/models.py:533
+#: build/models.py:287 build/serializers.py:218 stock/models.py:533
msgid "Batch Code"
msgstr "Code de lot"
-#: build/models.py:291
+#: build/models.py:291 build/serializers.py:219
msgid "Batch code for this build output"
msgstr "Code de lot pour ce build output"
-#: build/models.py:294 order/models.py:129 part/models.py:969
+#: build/models.py:294 order/models.py:129 part/models.py:999
#: part/templates/part/part_base.html:313 templates/js/translated/order.js:1271
msgid "Creation Date"
msgstr "Date de création"
@@ -804,7 +791,7 @@ msgid "Target date for build completion. Build will be overdue after this date."
msgstr "Date cible pour l'achèvement de la construction. La construction sera en retard après cette date."
#: build/models.py:302 order/models.py:255
-#: templates/js/translated/build.js:1758
+#: templates/js/translated/build.js:1996
msgid "Completion Date"
msgstr "Date d'achèvement"
@@ -812,7 +799,7 @@ msgstr "Date d'achèvement"
msgid "completed by"
msgstr "achevé par"
-#: build/models.py:316 templates/js/translated/build.js:1729
+#: build/models.py:316 templates/js/translated/build.js:1967
msgid "Issued by"
msgstr "Émis par"
@@ -820,12 +807,12 @@ msgstr "Émis par"
msgid "User who issued this build order"
msgstr "Utilisateur ayant émis cette commande de construction"
-#: build/models.py:325 build/templates/build/build_base.html:185
+#: build/models.py:325 build/templates/build/build_base.html:190
#: build/templates/build/detail.html:116 order/models.py:143
#: order/templates/order/order_base.html:170
-#: order/templates/order/sales_order_base.html:182 part/models.py:973
+#: order/templates/order/sales_order_base.html:182 part/models.py:1003
#: report/templates/report/inventree_build_order_base.html:159
-#: templates/js/translated/build.js:1741 templates/js/translated/order.js:864
+#: templates/js/translated/build.js:1979 templates/js/translated/order.js:864
msgid "Responsible"
msgstr "Responsable"
@@ -837,26 +824,26 @@ msgstr "Utilisateur responsable de cette commande de construction"
#: company/templates/company/manufacturer_part.html:102
#: company/templates/company/supplier_part.html:126
#: part/templates/part/part_base.html:354 stock/models.py:527
-#: stock/templates/stock/item_base.html:373
+#: stock/templates/stock/item_base.html:375
msgid "External Link"
msgstr "Lien Externe"
-#: build/models.py:336 build/serializers.py:201
+#: build/models.py:336 build/serializers.py:380
#: build/templates/build/sidebar.html:21 company/models.py:142
#: company/models.py:577 company/templates/company/sidebar.html:25
#: order/models.py:147 order/models.py:814 order/models.py:1071
#: order/templates/order/po_sidebar.html:11
-#: order/templates/order/so_sidebar.html:17 part/models.py:958
-#: part/templates/part/detail.html:137 part/templates/part/part_sidebar.html:54
+#: order/templates/order/so_sidebar.html:17 part/models.py:988
+#: part/templates/part/detail.html:140 part/templates/part/part_sidebar.html:57
#: report/templates/report/inventree_build_order_base.html:173
-#: stock/forms.py:140 stock/forms.py:190 stock/forms.py:224 stock/models.py:599
+#: stock/forms.py:137 stock/forms.py:171 stock/models.py:599
#: stock/models.py:1895 stock/models.py:2001 stock/serializers.py:332
-#: stock/serializers.py:640 stock/serializers.py:738 stock/serializers.py:870
+#: stock/serializers.py:697 stock/serializers.py:795 stock/serializers.py:927
#: stock/templates/stock/stock_sidebar.html:25
-#: templates/js/translated/barcode.js:58 templates/js/translated/bom.js:723
+#: templates/js/translated/barcode.js:58 templates/js/translated/bom.js:936
#: templates/js/translated/company.js:845 templates/js/translated/order.js:1149
#: templates/js/translated/order.js:1445 templates/js/translated/order.js:2280
-#: templates/js/translated/stock.js:1317 templates/js/translated/stock.js:1803
+#: templates/js/translated/stock.js:1345 templates/js/translated/stock.js:1927
msgid "Notes"
msgstr "Notes"
@@ -864,208 +851,284 @@ msgstr "Notes"
msgid "Extra build notes"
msgstr "Notes de construction supplémentaires"
-#: build/models.py:717
+#: build/models.py:756
msgid "No build output specified"
-msgstr ""
+msgstr "Pas d'ordre de production défini"
-#: build/models.py:720
+#: build/models.py:759
msgid "Build output is already completed"
-msgstr ""
+msgstr "L'ordre de production a déjà été réalisé"
-#: build/models.py:723
+#: build/models.py:762
msgid "Build output does not match Build Order"
-msgstr ""
+msgstr "L'ordre de production de correspond pas à l'ordre de commande"
-#: build/models.py:1115
+#: build/models.py:1154
msgid "Build item must specify a build output, as master part is marked as trackable"
msgstr "L'élément de construction doit spécifier une sortie de construction, la pièce maîtresse étant marquée comme objet traçable"
-#: build/models.py:1124
+#: build/models.py:1163
#, python-brace-format
msgid "Allocated quantity ({q}) must not execed available stock quantity ({a})"
msgstr "La quantité allouée ({q}) ne doit pas excéder la quantité disponible ({a})"
-#: build/models.py:1134
+#: build/models.py:1173
msgid "Stock item is over-allocated"
msgstr "L'article de stock est suralloué"
-#: build/models.py:1140 order/models.py:1189
+#: build/models.py:1179 order/models.py:1189
msgid "Allocation quantity must be greater than zero"
msgstr "La quantité allouée doit être supérieure à zéro"
-#: build/models.py:1146
+#: build/models.py:1185
msgid "Quantity must be 1 for serialized stock"
msgstr "La quantité doit être de 1 pour stock sérialisé"
-#: build/models.py:1203
+#: build/models.py:1242
msgid "Selected stock item not found in BOM"
msgstr "L'article du stock sélectionné n'a pas été trouvé dans la BOM"
-#: build/models.py:1263 stock/templates/stock/item_base.html:345
-#: templates/InvenTree/search.html:137 templates/js/translated/build.js:1660
+#: build/models.py:1302 stock/templates/stock/item_base.html:347
+#: templates/InvenTree/search.html:137 templates/js/translated/build.js:1898
#: templates/navbar.html:35
msgid "Build"
msgstr "Assemblage"
-#: build/models.py:1264
+#: build/models.py:1303
msgid "Build to allocate parts"
msgstr "Construction à laquelle allouer des pièces"
-#: build/models.py:1280 build/serializers.py:388 order/serializers.py:696
-#: order/serializers.py:714 stock/serializers.py:578 stock/serializers.py:696
-#: stock/templates/stock/item_base.html:9
+#: build/models.py:1319 build/serializers.py:570 order/serializers.py:696
+#: order/serializers.py:714 stock/serializers.py:404 stock/serializers.py:635
+#: stock/serializers.py:753 stock/templates/stock/item_base.html:9
#: stock/templates/stock/item_base.html:23
-#: stock/templates/stock/item_base.html:367
-#: templates/js/translated/build.js:468 templates/js/translated/build.js:473
-#: templates/js/translated/build.js:1421 templates/js/translated/build.js:1803
+#: stock/templates/stock/item_base.html:369
+#: templates/js/translated/build.js:687 templates/js/translated/build.js:692
+#: templates/js/translated/build.js:1657 templates/js/translated/build.js:2041
#: 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:563 templates/js/translated/stock.js:728
-#: templates/js/translated/stock.js:2628
+#: templates/js/translated/stock.js:564 templates/js/translated/stock.js:729
+#: templates/js/translated/stock.js:2752
msgid "Stock Item"
msgstr "Article en stock"
-#: build/models.py:1281
+#: build/models.py:1320
msgid "Source stock item"
-msgstr ""
+msgstr "Stock d'origine de l'article"
-#: build/models.py:1294
+#: build/models.py:1332 build/serializers.py:188
+#: build/templates/build/build_base.html:82
+#: build/templates/build/detail.html:35 common/models.py:1275
+#: company/forms.py:42 company/templates/company/supplier_part.html:251
+#: order/models.py:805 order/models.py:1229 order/serializers.py:816
+#: order/templates/order/order_wizard/match_parts.html:30
+#: order/templates/order/order_wizard/select_parts.html:34 part/forms.py:144
+#: part/forms.py:160 part/forms.py:176 part/models.py:2705
+#: part/templates/part/detail.html:995 part/templates/part/detail.html:1081
+#: part/templates/part/part_pricing.html:16
+#: part/templates/part/upload_bom.html:53
+#: report/templates/report/inventree_build_order_base.html:114
+#: report/templates/report/inventree_po_report.html:91
+#: report/templates/report/inventree_so_report.html:91
+#: report/templates/report/inventree_test_report_base.html:81
+#: report/templates/report/inventree_test_report_base.html:139
+#: stock/forms.py:139 stock/serializers.py:293
+#: stock/templates/stock/item_base.html:183
+#: stock/templates/stock/item_base.html:264
+#: stock/templates/stock/item_base.html:272
+#: templates/js/translated/barcode.js:385 templates/js/translated/bom.js:780
+#: templates/js/translated/build.js:375 templates/js/translated/build.js:523
+#: templates/js/translated/build.js:714 templates/js/translated/build.js:911
+#: templates/js/translated/build.js:921 templates/js/translated/build.js:1297
+#: templates/js/translated/build.js:1658
+#: templates/js/translated/model_renderers.js:99
+#: templates/js/translated/order.js:101 templates/js/translated/order.js:1056
+#: 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:906
+#: templates/js/translated/part.js:1862 templates/js/translated/part.js:1985
+#: templates/js/translated/part.js:2063 templates/js/translated/stock.js:392
+#: templates/js/translated/stock.js:589 templates/js/translated/stock.js:759
+#: templates/js/translated/stock.js:2801 templates/js/translated/stock.js:2903
+msgid "Quantity"
+msgstr "Quantité"
+
+#: build/models.py:1333
msgid "Stock quantity to allocate to build"
msgstr "Quantité de stock à allouer à la construction"
-#: build/models.py:1302
+#: build/models.py:1341
msgid "Install into"
msgstr "Installer dans"
-#: build/models.py:1303
+#: build/models.py:1342
msgid "Destination stock item"
-msgstr ""
+msgstr "Stock de destination de l'article"
-#: build/serializers.py:137 build/serializers.py:417
+#: build/serializers.py:138 build/serializers.py:599
msgid "Build Output"
msgstr "Sortie d'assemblage"
-#: build/serializers.py:146
-msgid "Build output does not match the parent build"
-msgstr ""
-
#: build/serializers.py:150
+msgid "Build output does not match the parent build"
+msgstr "L'ordre de production ne correspond pas à l'ordre parent"
+
+#: build/serializers.py:154
msgid "Output part does not match BuildOrder part"
msgstr ""
-#: build/serializers.py:154
-msgid "This build output has already been completed"
-msgstr ""
-
#: build/serializers.py:158
+msgid "This build output has already been completed"
+msgstr "Cet ordre de production a déjà été produit"
+
+#: build/serializers.py:164
msgid "This build output is not fully allocated"
-msgstr ""
+msgstr "Cet ordre de production n'est pas complètement attribué"
-#: build/serializers.py:190 order/serializers.py:226 order/serializers.py:294
-#: stock/forms.py:222 stock/serializers.py:325 stock/serializers.py:731
-#: stock/serializers.py:972 stock/templates/stock/item_base.html:313
-#: templates/js/translated/barcode.js:384
-#: templates/js/translated/barcode.js:557 templates/js/translated/build.js:480
-#: templates/js/translated/build.js:1087 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:179 templates/js/translated/stock.js:564
-#: templates/js/translated/stock.js:729 templates/js/translated/stock.js:936
-#: templates/js/translated/stock.js:1684 templates/js/translated/stock.js:2569
-msgid "Location"
-msgstr "Emplacement"
+#: build/serializers.py:189
+msgid "Enter quantity for build output"
+msgstr "Entrer la quantité désiré pour la fabrication"
-#: build/serializers.py:191
-msgid "Location for completed build outputs"
-msgstr ""
-
-#: build/serializers.py:197 build/templates/build/build_base.html:137
-#: build/templates/build/detail.html:63 order/models.py:557
-#: order/serializers.py:247 stock/templates/stock/item_base.html:187
-#: templates/js/translated/barcode.js:140 templates/js/translated/build.js:1716
-#: templates/js/translated/order.js:591 templates/js/translated/order.js:840
-#: templates/js/translated/order.js:1263 templates/js/translated/stock.js:1659
-#: templates/js/translated/stock.js:2646 templates/js/translated/stock.js:2795
-msgid "Status"
-msgstr "État"
-
-#: build/serializers.py:213
-msgid "A list of build outputs must be provided"
-msgstr ""
-
-#: build/serializers.py:249
-msgid "Accept Unallocated"
-msgstr ""
-
-#: build/serializers.py:250
-msgid "Accept that stock items have not been fully allocated to this build order"
-msgstr ""
-
-#: build/serializers.py:260 templates/js/translated/build.js:149
-msgid "Required stock has not been fully allocated"
-msgstr ""
-
-#: build/serializers.py:265
-msgid "Accept Incomplete"
-msgstr ""
-
-#: build/serializers.py:266
-msgid "Accept that the required number of build outputs have not been completed"
-msgstr ""
-
-#: build/serializers.py:276 templates/js/translated/build.js:153
-msgid "Required build quantity has not been completed"
-msgstr ""
-
-#: build/serializers.py:285
-msgid "Build order has incomplete outputs"
-msgstr ""
-
-#: build/serializers.py:313 build/serializers.py:362 part/models.py:2760
-#: part/models.py:2919
-msgid "BOM Item"
-msgstr ""
-
-#: build/serializers.py:323
-msgid "Build output"
-msgstr ""
-
-#: build/serializers.py:332
-msgid "Build output must point to the same build"
-msgstr ""
-
-#: build/serializers.py:379
-msgid "bom_item.part must point to the same part as the build order"
-msgstr ""
-
-#: build/serializers.py:394 stock/serializers.py:585
-msgid "Item must be in stock"
-msgstr "L'article doit être en stock"
-
-#: build/serializers.py:408 order/models.py:280 order/serializers.py:240
+#: build/serializers.py:201 build/serializers.py:590 order/models.py:280
+#: order/serializers.py:240 part/serializers.py:471 part/serializers.py:827
#: stock/models.py:367 stock/models.py:1105 stock/serializers.py:305
msgid "Quantity must be greater than zero"
msgstr "La quantité doit être supérieure à zéro"
-#: build/serializers.py:450 order/serializers.py:747
+#: build/serializers.py:208
+msgid "Integer quantity required for trackable parts"
+msgstr ""
+
+#: build/serializers.py:211
+msgid "Integer quantity required, as the bill of materials contains trackable parts"
+msgstr ""
+
+#: build/serializers.py:225 order/serializers.py:820 stock/forms.py:78
+#: stock/serializers.py:314 templates/js/translated/stock.js:239
+#: templates/js/translated/stock.js:393
+msgid "Serial Numbers"
+msgstr "Numéros de série"
+
+#: build/serializers.py:226
+msgid "Enter serial numbers for build outputs"
+msgstr "Entrer les numéros de séries pour la fabrication"
+
+#: build/serializers.py:239
+msgid "Auto Allocate Serial Numbers"
+msgstr ""
+
+#: build/serializers.py:240
+msgid "Automatically allocate required items with matching serial numbers"
+msgstr ""
+
+#: build/serializers.py:274 stock/api.py:551
+msgid "The following serial numbers already exist"
+msgstr ""
+
+#: build/serializers.py:327 build/serializers.py:392
+msgid "A list of build outputs must be provided"
+msgstr "Une liste d'ordre de production doit être fourni"
+
+#: build/serializers.py:369 order/serializers.py:226 order/serializers.py:294
+#: stock/forms.py:169 stock/serializers.py:325 stock/serializers.py:788
+#: stock/serializers.py:1029 stock/templates/stock/item_base.html:315
+#: templates/js/translated/barcode.js:384
+#: templates/js/translated/barcode.js:557 templates/js/translated/build.js:699
+#: templates/js/translated/build.js:1309 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:179 templates/js/translated/stock.js:565
+#: templates/js/translated/stock.js:730 templates/js/translated/stock.js:937
+#: templates/js/translated/stock.js:1808 templates/js/translated/stock.js:2693
+msgid "Location"
+msgstr "Emplacement"
+
+#: build/serializers.py:370
+msgid "Location for completed build outputs"
+msgstr "Emplacement des ordres de production achevés"
+
+#: build/serializers.py:376 build/templates/build/build_base.html:142
+#: build/templates/build/detail.html:63 order/models.py:557
+#: order/serializers.py:247 stock/templates/stock/item_base.html:189
+#: templates/js/translated/barcode.js:140 templates/js/translated/build.js:1954
+#: templates/js/translated/order.js:591 templates/js/translated/order.js:840
+#: templates/js/translated/order.js:1263 templates/js/translated/stock.js:1783
+#: templates/js/translated/stock.js:2770 templates/js/translated/stock.js:2919
+msgid "Status"
+msgstr "État"
+
+#: build/serializers.py:428
+msgid "Accept Unallocated"
+msgstr "Accepter les non-alloués"
+
+#: build/serializers.py:429
+msgid "Accept that stock items have not been fully allocated to this build order"
+msgstr "Accepter les articles de stock qui n'ont pas été complètement alloués à cette ordre de production"
+
+#: build/serializers.py:439 templates/js/translated/build.js:150
+msgid "Required stock has not been fully allocated"
+msgstr "Le stock requis n'a pas encore été totalement alloué"
+
+#: build/serializers.py:444
+msgid "Accept Incomplete"
+msgstr "Accepter les incomplèts"
+
+#: build/serializers.py:445
+msgid "Accept that the required number of build outputs have not been completed"
+msgstr "Accepter que tous les ordres de production n'aient pas encore été achevés"
+
+#: build/serializers.py:455 templates/js/translated/build.js:154
+msgid "Required build quantity has not been completed"
+msgstr "La quantité nécessaire n'a pas encore été complétée"
+
+#: build/serializers.py:464
+msgid "Build order has incomplete outputs"
+msgstr "L'ordre de production a des sorties incomplètes"
+
+#: build/serializers.py:467 build/templates/build/build_base.html:95
+msgid "No build outputs have been created for this build order"
+msgstr ""
+
+#: build/serializers.py:495 build/serializers.py:544 part/models.py:2829
+#: part/models.py:2988
+msgid "BOM Item"
+msgstr ""
+
+#: build/serializers.py:505
+msgid "Build output"
+msgstr ""
+
+#: build/serializers.py:514
+msgid "Build output must point to the same build"
+msgstr ""
+
+#: build/serializers.py:561
+msgid "bom_item.part must point to the same part as the build order"
+msgstr ""
+
+#: build/serializers.py:576 stock/serializers.py:642
+msgid "Item must be in stock"
+msgstr "L'article doit être en stock"
+
+#: build/serializers.py:632 order/serializers.py:747
#, python-brace-format
msgid "Available quantity ({q}) exceeded"
msgstr "Quantité disponible ({q}) dépassée"
-#: build/serializers.py:456
+#: build/serializers.py:638
msgid "Build output must be specified for allocation of tracked parts"
msgstr ""
-#: build/serializers.py:463
+#: build/serializers.py:645
msgid "Build output cannot be specified for allocation of untracked parts"
msgstr ""
-#: build/serializers.py:491 order/serializers.py:990
+#: build/serializers.py:673 order/serializers.py:990
msgid "Allocation items must be provided"
msgstr ""
-#: build/tasks.py:92
+#: build/tasks.py:98
msgid "Stock required for build order"
msgstr "Stock requis pour la commande de construction"
@@ -1088,7 +1151,7 @@ msgid "Edit Build"
msgstr "Modifier l'assemblage"
#: build/templates/build/build_base.html:56
-#: build/templates/build/build_base.html:215 build/views.py:56
+#: build/templates/build/build_base.html:220 build/views.py:53
msgid "Cancel Build"
msgstr "Annuler l'assemblage"
@@ -1105,110 +1168,90 @@ msgstr "Compléter l'assemblage"
msgid "Build Description"
msgstr "Description de la construction"
-#: build/templates/build/build_base.html:96
+#: build/templates/build/build_base.html:101
#, python-format
msgid "This Build Order is allocated to Sales Order %(link)s"
msgstr "Cet ordre de construction est allouée à la commande de vente %(link)s"
-#: build/templates/build/build_base.html:103
+#: build/templates/build/build_base.html:108
#, python-format
msgid "This Build Order is a child of Build Order %(link)s"
msgstr "Cet ordre de construction est un enfant de l'ordre de construction %(link)s"
-#: build/templates/build/build_base.html:110
+#: build/templates/build/build_base.html:115
msgid "Build Order is ready to mark as completed"
msgstr "L'ordre de construction est prêt à être marqué comme terminé"
-#: build/templates/build/build_base.html:115
+#: build/templates/build/build_base.html:120
msgid "Build Order cannot be completed as outstanding outputs remain"
msgstr "L'ordre de construction ne peut pas être achevé car il reste des outputs en suspens"
-#: build/templates/build/build_base.html:120
+#: build/templates/build/build_base.html:125
msgid "Required build quantity has not yet been completed"
msgstr "Le nombre de constructions requis n'a pas encore été atteint"
-#: build/templates/build/build_base.html:125
+#: build/templates/build/build_base.html:130
msgid "Stock has not been fully allocated to this Build Order"
msgstr "Le stock n'a pas été entièrement alloué à cet ordre de construction"
-#: build/templates/build/build_base.html:146
+#: build/templates/build/build_base.html:151
#: build/templates/build/detail.html:132
#: order/templates/order/order_base.html:156
#: order/templates/order/sales_order_base.html:163
#: report/templates/report/inventree_build_order_base.html:126
-#: templates/js/translated/build.js:1753 templates/js/translated/order.js:854
+#: templates/js/translated/build.js:1991 templates/js/translated/order.js:854
#: templates/js/translated/order.js:1276
msgid "Target Date"
msgstr "Date Cible"
-#: build/templates/build/build_base.html:151
+#: build/templates/build/build_base.html:156
#, python-format
msgid "This build was due on %(target)s"
msgstr "Cette construction était due le %(target)s"
-#: build/templates/build/build_base.html:151
-#: build/templates/build/build_base.html:196
+#: build/templates/build/build_base.html:156
+#: build/templates/build/build_base.html:201
#: order/templates/order/order_base.html:98
#: order/templates/order/sales_order_base.html:93
-#: templates/js/translated/table_filters.js:299
-#: templates/js/translated/table_filters.js:340
-#: templates/js/translated/table_filters.js:361
+#: templates/js/translated/table_filters.js:294
+#: templates/js/translated/table_filters.js:335
+#: templates/js/translated/table_filters.js:356
msgid "Overdue"
msgstr "En retard"
-#: build/templates/build/build_base.html:158
+#: build/templates/build/build_base.html:163
#: build/templates/build/detail.html:68 build/templates/build/detail.html:143
#: order/templates/order/sales_order_base.html:170
-#: templates/js/translated/build.js:1702
-#: templates/js/translated/table_filters.js:370
+#: templates/js/translated/build.js:1940
+#: templates/js/translated/table_filters.js:365
msgid "Completed"
msgstr "Terminé"
-#: build/templates/build/build_base.html:171
+#: build/templates/build/build_base.html:176
#: build/templates/build/detail.html:95 order/models.py:947
#: order/models.py:1043 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:307
-#: templates/js/translated/order.js:1218 templates/js/translated/stock.js:2304
+#: stock/templates/stock/item_base.html:309
+#: templates/js/translated/order.js:1218 templates/js/translated/stock.js:2428
msgid "Sales Order"
msgstr "Commandes"
-#: build/templates/build/build_base.html:178
+#: build/templates/build/build_base.html:183
#: build/templates/build/detail.html:109
#: report/templates/report/inventree_build_order_base.html:153
msgid "Issued By"
msgstr "Émis par"
-#: build/templates/build/build_base.html:223
+#: build/templates/build/build_base.html:228
msgid "Incomplete Outputs"
-msgstr ""
+msgstr "Sorties incomplètes"
-#: build/templates/build/build_base.html:224
+#: build/templates/build/build_base.html:229
msgid "Build Order cannot be completed as incomplete build outputs remain"
msgstr "L'ordre de fabrication ne peut pas être achevé car il reste des outputs en suspens"
-#: build/templates/build/build_output_create.html:7
-msgid "The Bill of Materials contains trackable parts"
-msgstr "La BOM contient des pièces traçables"
-
-#: build/templates/build/build_output_create.html:8
-msgid "Build outputs must be generated individually."
-msgstr ""
-
-#: build/templates/build/build_output_create.html:9
-msgid "Multiple build outputs will be created based on the quantity specified."
-msgstr ""
-
-#: build/templates/build/build_output_create.html:15
-msgid "Trackable parts can have serial numbers specified"
-msgstr "Les pièces traçables peuvent avoir des numéros de série spécifiés"
-
-#: build/templates/build/build_output_create.html:16
-msgid "Enter serial numbers to generate multiple single build outputs"
-msgstr ""
-
#: build/templates/build/cancel.html:5
msgid "Are you sure you wish to cancel this build?"
msgstr "Êtes-vous sûr de vouloir annuler cette construction?"
@@ -1219,28 +1262,28 @@ msgstr "Détails de la construction"
#: build/templates/build/detail.html:39
msgid "Stock Source"
-msgstr ""
+msgstr "Stock d'origine"
#: build/templates/build/detail.html:44
msgid "Stock can be taken from any available location."
-msgstr ""
+msgstr "Le stock peut être pris à partir de n'importe quel endroit disponible."
-#: build/templates/build/detail.html:50 order/models.py:898 stock/forms.py:136
+#: build/templates/build/detail.html:50 order/models.py:898 stock/forms.py:133
#: templates/js/translated/order.js:592 templates/js/translated/order.js:1138
msgid "Destination"
msgstr "Destination"
#: build/templates/build/detail.html:57
msgid "Destination location not specified"
-msgstr ""
+msgstr "Stockage de destination non défini"
-#: build/templates/build/detail.html:74 templates/js/translated/build.js:707
+#: build/templates/build/detail.html:74 templates/js/translated/build.js:929
msgid "Allocated Parts"
msgstr "Pièces allouées"
#: build/templates/build/detail.html:81
-#: stock/templates/stock/item_base.html:331
-#: templates/js/translated/stock.js:1673 templates/js/translated/stock.js:2802
+#: stock/templates/stock/item_base.html:333
+#: templates/js/translated/stock.js:1797 templates/js/translated/stock.js:2926
#: templates/js/translated/table_filters.js:151
#: templates/js/translated/table_filters.js:238
msgid "Batch"
@@ -1249,7 +1292,7 @@ msgstr ""
#: build/templates/build/detail.html:127
#: order/templates/order/order_base.html:143
#: order/templates/order/sales_order_base.html:157
-#: templates/js/translated/build.js:1724
+#: templates/js/translated/build.js:1962
msgid "Created"
msgstr "Créé le"
@@ -1269,7 +1312,7 @@ msgstr ""
msgid "Allocate Stock to Build"
msgstr ""
-#: build/templates/build/detail.html:177 templates/js/translated/build.js:1262
+#: build/templates/build/detail.html:177 templates/js/translated/build.js:1484
msgid "Unallocate stock"
msgstr "Désallouer le stock"
@@ -1329,52 +1372,60 @@ msgid "Output Actions"
msgstr ""
#: build/templates/build/detail.html:250
-msgid "Complete selected items"
+msgid "Complete selected build outputs"
msgstr ""
#: build/templates/build/detail.html:251
msgid "Complete outputs"
msgstr ""
-#: build/templates/build/detail.html:266
+#: build/templates/build/detail.html:253
+msgid "Delete selected build outputs"
+msgstr ""
+
+#: build/templates/build/detail.html:254
+msgid "Delete outputs"
+msgstr ""
+
+#: build/templates/build/detail.html:270
msgid "Completed Build Outputs"
msgstr ""
-#: build/templates/build/detail.html:278 build/templates/build/sidebar.html:19
+#: build/templates/build/detail.html:282 build/templates/build/sidebar.html:19
#: order/templates/order/po_sidebar.html:9
#: order/templates/order/purchase_order_detail.html:60
#: order/templates/order/sales_order_detail.html:107
-#: order/templates/order/so_sidebar.html:15 part/templates/part/detail.html:213
-#: part/templates/part/part_sidebar.html:52 stock/templates/stock/item.html:112
+#: order/templates/order/so_sidebar.html:15 part/templates/part/detail.html:216
+#: part/templates/part/part_sidebar.html:55 stock/templates/stock/item.html:112
#: stock/templates/stock/stock_sidebar.html:23
msgid "Attachments"
msgstr "Pieces jointes"
-#: build/templates/build/detail.html:294
+#: build/templates/build/detail.html:298
msgid "Build Notes"
msgstr "Notes de construction"
-#: build/templates/build/detail.html:298 build/templates/build/detail.html:453
+#: build/templates/build/detail.html:302 build/templates/build/detail.html:478
#: company/templates/company/detail.html:188
#: company/templates/company/detail.html:215
#: order/templates/order/purchase_order_detail.html:80
#: order/templates/order/purchase_order_detail.html:108
#: order/templates/order/sales_order_detail.html:127
#: order/templates/order/sales_order_detail.html:186
-#: part/templates/part/detail.html:141 stock/templates/stock/item.html:132
-#: stock/templates/stock/item.html:235
+#: part/templates/part/detail.html:144 stock/templates/stock/item.html:132
+#: stock/templates/stock/item.html:230
msgid "Edit Notes"
msgstr "Modifier les notes"
-#: build/templates/build/detail.html:477
+#: build/templates/build/detail.html:502
msgid "Allocation Complete"
msgstr "Allocation terminée"
-#: build/templates/build/detail.html:478
+#: build/templates/build/detail.html:503
msgid "All untracked stock items have been allocated"
msgstr ""
-#: build/templates/build/index.html:18 part/templates/part/detail.html:320
+#: build/templates/build/index.html:18 part/templates/part/detail.html:323
msgid "New Build Order"
msgstr "Nouvel ordre de construction"
@@ -1406,51 +1457,11 @@ msgstr "Articles en attente"
msgid "Completed Items"
msgstr "Articles terminés"
-#: build/views.py:76
+#: build/views.py:73
msgid "Build was cancelled"
msgstr "La construction a été annulée"
-#: build/views.py:88
-msgid "Create Build Output"
-msgstr ""
-
-#: build/views.py:106
-msgid "Maximum output quantity is "
-msgstr "La quantité maximale de sortie est "
-
-#: build/views.py:122 stock/serializers.py:363 stock/views.py:1257
-msgid "Serial numbers already exist"
-msgstr "Les numéros de série existent déjà"
-
-#: build/views.py:131
-msgid "Serial numbers required for trackable build output"
-msgstr ""
-
-#: build/views.py:197
-msgid "Delete Build Output"
-msgstr ""
-
-#: build/views.py:218
-msgid "Confirm unallocation of build stock"
-msgstr ""
-
-#: build/views.py:219 stock/views.py:352
-msgid "Check the confirmation box"
-msgstr "Cocher la case de confirmation"
-
-#: build/views.py:231
-msgid "Build output does not match build"
-msgstr ""
-
-#: build/views.py:233
-msgid "Build output must be specified"
-msgstr ""
-
-#: build/views.py:245
-msgid "Build output deleted"
-msgstr ""
-
-#: build/views.py:286
+#: build/views.py:114
msgid "Delete Build Order"
msgstr "Supprimer l'ordre de construction"
@@ -1639,9 +1650,9 @@ msgstr "Copier les templates de paramètres de catégorie"
msgid "Copy category parameter templates when creating a part"
msgstr "Copier les templates de paramètres de la catégorie lors de la création d'une pièce"
-#: common/models.py:705 part/models.py:2489 report/models.py:187
+#: common/models.py:705 part/models.py:2525 report/models.py:187
#: templates/js/translated/table_filters.js:38
-#: templates/js/translated/table_filters.js:422
+#: templates/js/translated/table_filters.js:417
msgid "Template"
msgstr "Template"
@@ -1649,9 +1660,9 @@ msgstr "Template"
msgid "Parts are templates by default"
msgstr "Les pièces sont des templates par défaut"
-#: common/models.py:712 part/models.py:921 templates/js/translated/bom.js:1082
+#: common/models.py:712 part/models.py:951 templates/js/translated/bom.js:1300
#: templates/js/translated/table_filters.js:168
-#: templates/js/translated/table_filters.js:434
+#: templates/js/translated/table_filters.js:429
msgid "Assembly"
msgstr ""
@@ -1659,8 +1670,8 @@ msgstr ""
msgid "Parts can be assembled from other components by default"
msgstr ""
-#: common/models.py:719 part/models.py:927
-#: templates/js/translated/table_filters.js:438
+#: common/models.py:719 part/models.py:957
+#: templates/js/translated/table_filters.js:433
msgid "Component"
msgstr "Composant"
@@ -1668,7 +1679,7 @@ msgstr "Composant"
msgid "Parts can be used as sub-components by default"
msgstr ""
-#: common/models.py:726 part/models.py:938
+#: common/models.py:726 part/models.py:968
msgid "Purchaseable"
msgstr "Achetable"
@@ -1676,8 +1687,8 @@ msgstr "Achetable"
msgid "Parts are purchaseable by default"
msgstr "Les pièces sont achetables par défaut"
-#: common/models.py:733 part/models.py:943
-#: templates/js/translated/table_filters.js:446
+#: common/models.py:733 part/models.py:973
+#: templates/js/translated/table_filters.js:441
msgid "Salable"
msgstr "Vendable"
@@ -1685,10 +1696,10 @@ msgstr "Vendable"
msgid "Parts are salable by default"
msgstr "Les pièces sont vendables par défaut"
-#: common/models.py:740 part/models.py:933
+#: common/models.py:740 part/models.py:963
#: templates/js/translated/table_filters.js:46
#: templates/js/translated/table_filters.js:100
-#: templates/js/translated/table_filters.js:450
+#: templates/js/translated/table_filters.js:445
msgid "Trackable"
msgstr "Traçable"
@@ -1696,7 +1707,7 @@ msgstr "Traçable"
msgid "Parts are trackable by default"
msgstr "Les pièces sont traçables par défaut"
-#: common/models.py:747 part/models.py:953
+#: common/models.py:747 part/models.py:983
#: part/templates/part/part_base.html:147
#: templates/js/translated/table_filters.js:42
msgid "Virtual"
@@ -1730,589 +1741,595 @@ msgstr "Afficher le prix dans la BOM"
msgid "Include pricing information in BOM tables"
msgstr "Inclure les informations de prix dans les tableaux de la BOM"
-#: common/models.py:780
+#: common/models.py:785
+msgid "Show Price History"
+msgstr ""
+
+#: common/models.py:786
+msgid "Display historical pricing for Part"
+msgstr ""
+
+#: common/models.py:792
msgid "Show related parts"
msgstr "Afficher les pièces connexes"
-#: common/models.py:781
+#: common/models.py:793
msgid "Display related parts for a part"
msgstr "Afficher les pièces connexes à une pièce"
-#: common/models.py:787
+#: common/models.py:799
msgid "Create initial stock"
msgstr "Créer un stock initial"
-#: common/models.py:788
+#: common/models.py:800
msgid "Create initial stock on part creation"
msgstr "Créer le stock initial lors de la création d'une pièce"
-#: common/models.py:794
+#: common/models.py:806
msgid "Internal Prices"
msgstr "Prix internes"
-#: common/models.py:795
+#: common/models.py:807
msgid "Enable internal prices for parts"
msgstr "Activer les prix internes pour les pièces"
-#: common/models.py:801
+#: common/models.py:813
msgid "Internal Price as BOM-Price"
msgstr ""
-#: common/models.py:802
+#: common/models.py:814
msgid "Use the internal price (if set) in BOM-price calculations"
msgstr ""
-#: common/models.py:808
+#: common/models.py:820
msgid "Part Name Display Format"
msgstr ""
-#: common/models.py:809
+#: common/models.py:821
msgid "Format to display the part name"
msgstr ""
-#: common/models.py:816
+#: common/models.py:828
msgid "Enable Reports"
msgstr ""
-#: common/models.py:817
+#: common/models.py:829
msgid "Enable generation of reports"
msgstr ""
-#: common/models.py:823 templates/stats.html:25
+#: common/models.py:835 templates/stats.html:25
msgid "Debug Mode"
msgstr ""
-#: common/models.py:824
+#: common/models.py:836
msgid "Generate reports in debug mode (HTML output)"
msgstr ""
-#: common/models.py:830
+#: common/models.py:842
msgid "Page Size"
msgstr "Taille de la page"
-#: common/models.py:831
+#: common/models.py:843
msgid "Default page size for PDF reports"
msgstr ""
-#: common/models.py:841
+#: common/models.py:853
msgid "Test Reports"
msgstr "Rapports de test"
-#: common/models.py:842
+#: common/models.py:854
msgid "Enable generation of test reports"
msgstr ""
-#: common/models.py:848
+#: common/models.py:860
msgid "Stock Expiry"
msgstr ""
-#: common/models.py:849
+#: common/models.py:861
msgid "Enable stock expiry functionality"
msgstr ""
-#: common/models.py:855
+#: common/models.py:867
msgid "Sell Expired Stock"
msgstr ""
-#: common/models.py:856
+#: common/models.py:868
msgid "Allow sale of expired stock"
msgstr ""
-#: common/models.py:862
+#: common/models.py:874
msgid "Stock Stale Time"
msgstr ""
-#: common/models.py:863
+#: common/models.py:875
msgid "Number of days stock items are considered stale before expiring"
msgstr ""
-#: common/models.py:865
+#: common/models.py:877
msgid "days"
msgstr "jours"
-#: common/models.py:870
+#: common/models.py:882
msgid "Build Expired Stock"
msgstr ""
-#: common/models.py:871
+#: common/models.py:883
msgid "Allow building with expired stock"
msgstr ""
-#: common/models.py:877
+#: common/models.py:889
msgid "Stock Ownership Control"
msgstr ""
-#: common/models.py:878
+#: common/models.py:890
msgid "Enable ownership control over stock locations and items"
msgstr ""
-#: common/models.py:884
+#: common/models.py:896
msgid "Build Order Reference Prefix"
msgstr ""
-#: common/models.py:885
+#: common/models.py:897
msgid "Prefix value for build order reference"
msgstr ""
-#: common/models.py:890
+#: common/models.py:902
msgid "Build Order Reference Regex"
msgstr ""
-#: common/models.py:891
+#: common/models.py:903
msgid "Regular expression pattern for matching build order reference"
msgstr ""
-#: common/models.py:895
+#: common/models.py:907
msgid "Sales Order Reference Prefix"
msgstr ""
-#: common/models.py:896
+#: common/models.py:908
msgid "Prefix value for sales order reference"
msgstr ""
-#: common/models.py:901
+#: common/models.py:913
msgid "Purchase Order Reference Prefix"
msgstr "Préfixe des commandes d'achats"
-#: common/models.py:902
+#: common/models.py:914
msgid "Prefix value for purchase order reference"
msgstr ""
-#: common/models.py:908
+#: common/models.py:920
msgid "Enable password forgot"
msgstr "Activer les mots de passe oubliés"
-#: common/models.py:909
+#: common/models.py:921
msgid "Enable password forgot function on the login pages"
msgstr ""
-#: common/models.py:914
+#: common/models.py:926
msgid "Enable registration"
msgstr "Activer les inscriptions"
-#: common/models.py:915
+#: common/models.py:927
msgid "Enable self-registration for users on the login pages"
msgstr ""
-#: common/models.py:920
+#: common/models.py:932
msgid "Enable SSO"
msgstr "Activer le SSO"
-#: common/models.py:921
+#: common/models.py:933
msgid "Enable SSO on the login pages"
msgstr "Activer le SSO sur les pages de connexion"
-#: common/models.py:926
+#: common/models.py:938
msgid "Email required"
msgstr "Email requis"
-#: common/models.py:927
+#: common/models.py:939
msgid "Require user to supply mail on signup"
msgstr ""
-#: common/models.py:932
+#: common/models.py:944
msgid "Auto-fill SSO users"
msgstr "Saisie automatique des utilisateurs SSO"
-#: common/models.py:933
+#: common/models.py:945
msgid "Automatically fill out user-details from SSO account-data"
msgstr ""
-#: common/models.py:938
+#: common/models.py:950
msgid "Mail twice"
msgstr "Courriel en double"
-#: common/models.py:939
+#: common/models.py:951
msgid "On signup ask users twice for their mail"
msgstr ""
-#: common/models.py:944
+#: common/models.py:956
msgid "Password twice"
msgstr ""
-#: common/models.py:945
+#: common/models.py:957
msgid "On signup ask users twice for their password"
msgstr ""
-#: common/models.py:950
+#: common/models.py:962
msgid "Group on signup"
msgstr ""
-#: common/models.py:951
+#: common/models.py:963
msgid "Group to which new users are assigned on registration"
msgstr ""
-#: common/models.py:956
+#: common/models.py:968
msgid "Enforce MFA"
msgstr ""
-#: common/models.py:957
+#: common/models.py:969
msgid "Users must use multifactor security."
msgstr ""
-#: common/models.py:964
+#: common/models.py:976
msgid "Enable URL integration"
msgstr ""
-#: common/models.py:965
+#: common/models.py:977
msgid "Enable plugins to add URL routes"
msgstr ""
-#: common/models.py:971
+#: common/models.py:983
msgid "Enable navigation integration"
msgstr ""
-#: common/models.py:972
+#: common/models.py:984
msgid "Enable plugins to integrate into navigation"
msgstr ""
-#: common/models.py:978
+#: common/models.py:990
msgid "Enable app integration"
msgstr "Activer l'intégration de plugins"
-#: common/models.py:979
+#: common/models.py:991
msgid "Enable plugins to add apps"
msgstr "Activer l'intégration de plugin pour ajouter des apps"
-#: common/models.py:985
+#: common/models.py:997
msgid "Enable schedule integration"
msgstr ""
-#: common/models.py:986
+#: common/models.py:998
msgid "Enable plugins to run scheduled tasks"
msgstr ""
-#: common/models.py:992
+#: common/models.py:1004
msgid "Enable event integration"
msgstr ""
-#: common/models.py:993
+#: common/models.py:1005
msgid "Enable plugins to respond to internal events"
msgstr ""
-#: common/models.py:1008 common/models.py:1216
+#: common/models.py:1020 common/models.py:1228
msgid "Settings key (must be unique - case insensitive"
msgstr "Clé du paramètre (doit être unique - insensible à la casse)"
-#: common/models.py:1039
+#: common/models.py:1051
msgid "Show subscribed parts"
msgstr ""
-#: common/models.py:1040
+#: common/models.py:1052
msgid "Show subscribed parts on the homepage"
msgstr ""
-#: common/models.py:1045
+#: common/models.py:1057
msgid "Show subscribed categories"
msgstr ""
-#: common/models.py:1046
+#: common/models.py:1058
msgid "Show subscribed part categories on the homepage"
msgstr ""
-#: common/models.py:1051
+#: common/models.py:1063
msgid "Show latest parts"
msgstr "Afficher les dernières pièces"
-#: common/models.py:1052
+#: common/models.py:1064
msgid "Show latest parts on the homepage"
msgstr ""
-#: common/models.py:1057
+#: common/models.py:1069
msgid "Recent Part Count"
msgstr ""
-#: common/models.py:1058
+#: common/models.py:1070
msgid "Number of recent parts to display on index page"
msgstr ""
-#: common/models.py:1064
+#: common/models.py:1076
msgid "Show unvalidated BOMs"
msgstr ""
-#: common/models.py:1065
+#: common/models.py:1077
msgid "Show BOMs that await validation on the homepage"
msgstr ""
-#: common/models.py:1070
+#: common/models.py:1082
msgid "Show recent stock changes"
msgstr "Afficher les dernières modifications du stock"
-#: common/models.py:1071
+#: common/models.py:1083
msgid "Show recently changed stock items on the homepage"
msgstr ""
-#: common/models.py:1076
+#: common/models.py:1088
msgid "Recent Stock Count"
msgstr ""
-#: common/models.py:1077
+#: common/models.py:1089
msgid "Number of recent stock items to display on index page"
msgstr ""
-#: common/models.py:1082
+#: common/models.py:1094
msgid "Show low stock"
msgstr ""
-#: common/models.py:1083
+#: common/models.py:1095
msgid "Show low stock items on the homepage"
msgstr ""
-#: common/models.py:1088
+#: common/models.py:1100
msgid "Show depleted stock"
msgstr ""
-#: common/models.py:1089
+#: common/models.py:1101
msgid "Show depleted stock items on the homepage"
msgstr ""
-#: common/models.py:1094
+#: common/models.py:1106
msgid "Show needed stock"
msgstr ""
-#: common/models.py:1095
+#: common/models.py:1107
msgid "Show stock items needed for builds on the homepage"
msgstr ""
-#: common/models.py:1100
+#: common/models.py:1112
msgid "Show expired stock"
msgstr ""
-#: common/models.py:1101
+#: common/models.py:1113
msgid "Show expired stock items on the homepage"
msgstr ""
-#: common/models.py:1106
+#: common/models.py:1118
msgid "Show stale stock"
msgstr ""
-#: common/models.py:1107
+#: common/models.py:1119
msgid "Show stale stock items on the homepage"
msgstr ""
-#: common/models.py:1112
+#: common/models.py:1124
msgid "Show pending builds"
msgstr ""
-#: common/models.py:1113
+#: common/models.py:1125
msgid "Show pending builds on the homepage"
msgstr ""
-#: common/models.py:1118
+#: common/models.py:1130
msgid "Show overdue builds"
msgstr ""
-#: common/models.py:1119
+#: common/models.py:1131
msgid "Show overdue builds on the homepage"
msgstr ""
-#: common/models.py:1124
+#: common/models.py:1136
msgid "Show outstanding POs"
msgstr ""
-#: common/models.py:1125
+#: common/models.py:1137
msgid "Show outstanding POs on the homepage"
msgstr ""
-#: common/models.py:1130
+#: common/models.py:1142
msgid "Show overdue POs"
msgstr ""
-#: common/models.py:1131
+#: common/models.py:1143
msgid "Show overdue POs on the homepage"
msgstr ""
-#: common/models.py:1136
+#: common/models.py:1148
msgid "Show outstanding SOs"
msgstr ""
-#: common/models.py:1137
+#: common/models.py:1149
msgid "Show outstanding SOs on the homepage"
msgstr ""
-#: common/models.py:1142
+#: common/models.py:1154
msgid "Show overdue SOs"
msgstr ""
-#: common/models.py:1143
+#: common/models.py:1155
msgid "Show overdue SOs on the homepage"
msgstr ""
-#: common/models.py:1149
+#: common/models.py:1161
msgid "Inline label display"
msgstr ""
-#: common/models.py:1150
+#: common/models.py:1162
msgid "Display PDF labels in the browser, instead of downloading as a file"
msgstr ""
-#: common/models.py:1156
+#: common/models.py:1168
msgid "Inline report display"
msgstr ""
-#: common/models.py:1157
+#: common/models.py:1169
msgid "Display PDF reports in the browser, instead of downloading as a file"
msgstr ""
-#: common/models.py:1163
+#: common/models.py:1175
msgid "Search Preview Results"
msgstr ""
-#: common/models.py:1164
+#: common/models.py:1176
msgid "Number of results to show in search preview window"
msgstr ""
-#: common/models.py:1170
+#: common/models.py:1182
msgid "Search Show Stock"
msgstr ""
-#: common/models.py:1171
+#: common/models.py:1183
msgid "Display stock levels in search preview window"
msgstr ""
-#: common/models.py:1177
+#: common/models.py:1189
msgid "Hide Inactive Parts"
msgstr ""
-#: common/models.py:1178
+#: common/models.py:1190
msgid "Hide inactive parts in search preview window"
msgstr ""
-#: common/models.py:1184
+#: common/models.py:1196
msgid "Show Quantity in Forms"
msgstr ""
-#: common/models.py:1185
+#: common/models.py:1197
msgid "Display available part quantity in some forms"
msgstr ""
-#: common/models.py:1191
+#: common/models.py:1203
msgid "Escape Key Closes Forms"
msgstr ""
-#: common/models.py:1192
+#: common/models.py:1204
msgid "Use the escape key to close modal forms"
msgstr ""
-#: common/models.py:1198
+#: common/models.py:1210
msgid "Fixed Navbar"
msgstr ""
-#: common/models.py:1199
+#: common/models.py:1211
msgid "InvenTree navbar position is fixed to the top of the screen"
msgstr ""
-#: common/models.py:1264 company/forms.py:43
+#: common/models.py:1276 company/forms.py:43
msgid "Price break quantity"
msgstr ""
-#: common/models.py:1271 company/serializers.py:264
+#: common/models.py:1283 company/serializers.py:264
#: company/templates/company/supplier_part.html:256
#: templates/js/translated/part.js:915 templates/js/translated/part.js:1867
msgid "Price"
msgstr ""
-#: common/models.py:1272
+#: common/models.py:1284
msgid "Unit price at specified quantity"
msgstr ""
-#: common/models.py:1429 common/models.py:1568
+#: common/models.py:1441 common/models.py:1580
msgid "Endpoint"
msgstr ""
-#: common/models.py:1430
+#: common/models.py:1442
msgid "Endpoint at which this webhook is received"
msgstr ""
-#: common/models.py:1439
+#: common/models.py:1451
msgid "Name for this webhook"
msgstr ""
-#: common/models.py:1444 part/models.py:948 plugin/models.py:46
+#: common/models.py:1456 part/models.py:978 plugin/models.py:46
#: templates/js/translated/table_filters.js:34
#: templates/js/translated/table_filters.js:96
-#: templates/js/translated/table_filters.js:295
-#: templates/js/translated/table_filters.js:417
+#: templates/js/translated/table_filters.js:290
+#: templates/js/translated/table_filters.js:412
msgid "Active"
msgstr "Actif"
-#: common/models.py:1445
+#: common/models.py:1457
msgid "Is this webhook active"
msgstr ""
-#: common/models.py:1459
+#: common/models.py:1471
msgid "Token"
msgstr ""
-#: common/models.py:1460
+#: common/models.py:1472
msgid "Token for access"
msgstr ""
-#: common/models.py:1467
+#: common/models.py:1479
msgid "Secret"
msgstr ""
-#: common/models.py:1468
+#: common/models.py:1480
msgid "Shared secret for HMAC"
msgstr ""
-#: common/models.py:1535
+#: common/models.py:1547
msgid "Message ID"
msgstr ""
-#: common/models.py:1536
+#: common/models.py:1548
msgid "Unique identifier for this message"
msgstr ""
-#: common/models.py:1544
+#: common/models.py:1556
msgid "Host"
msgstr ""
-#: common/models.py:1545
+#: common/models.py:1557
msgid "Host from which this message was received"
msgstr ""
-#: common/models.py:1552
+#: common/models.py:1564
msgid "Header"
msgstr ""
-#: common/models.py:1553
+#: common/models.py:1565
msgid "Header of this message"
msgstr ""
-#: common/models.py:1559
+#: common/models.py:1571
msgid "Body"
msgstr ""
-#: common/models.py:1560
+#: common/models.py:1572
msgid "Body of this message"
msgstr ""
-#: common/models.py:1569
+#: common/models.py:1581
msgid "Endpoint on which this message was received"
msgstr ""
-#: common/models.py:1574
+#: common/models.py:1586
msgid "Worked on"
msgstr ""
-#: common/models.py:1575
+#: common/models.py:1587
msgid "Was the work on this message finished?"
msgstr ""
#: common/views.py:93 order/templates/order/order_wizard/po_upload.html:49
#: order/templates/order/purchase_order_detail.html:24 order/views.py:243
-#: part/templates/part/bom_upload/upload_file.html:52
-#: part/templates/part/import_wizard/part_upload.html:47 part/views.py:213
-#: part/views.py:773
+#: part/templates/part/import_wizard/part_upload.html:47 part/views.py:210
+#: templates/patterns/wizard/upload.html:35
msgid "Upload File"
msgstr ""
-#: common/views.py:94 order/templates/order/order_wizard/match_fields.html:52
-#: order/views.py:244 part/templates/part/bom_upload/match_fields.html:52
+#: common/views.py:94 order/views.py:244
#: part/templates/part/import_wizard/ajax_match_fields.html:45
-#: part/templates/part/import_wizard/match_fields.html:52 part/views.py:214
-#: part/views.py:774
+#: part/templates/part/import_wizard/match_fields.html:52 part/views.py:211
+#: templates/patterns/wizard/match_fields.html:51
msgid "Match Fields"
msgstr ""
@@ -2328,15 +2345,13 @@ msgstr ""
msgid "Parts imported"
msgstr ""
-#: common/views.py:517 order/templates/order/order_wizard/match_fields.html:27
-#: order/templates/order/order_wizard/match_parts.html:19
+#: common/views.py:517 order/templates/order/order_wizard/match_parts.html:19
#: order/templates/order/order_wizard/po_upload.html:47
-#: part/templates/part/bom_upload/match_fields.html:27
-#: part/templates/part/bom_upload/match_parts.html:19
-#: part/templates/part/bom_upload/upload_file.html:50
#: part/templates/part/import_wizard/match_fields.html:27
#: part/templates/part/import_wizard/match_references.html:19
#: part/templates/part/import_wizard/part_upload.html:45
+#: templates/patterns/wizard/match_fields.html:26
+#: templates/patterns/wizard/upload.html:33
msgid "Previous Step"
msgstr ""
@@ -2404,7 +2419,7 @@ msgstr "Point de contact"
msgid "Link to external company information"
msgstr "Lien externe vers les informations de l'entreprise"
-#: company/models.py:139 part/models.py:840
+#: company/models.py:139 part/models.py:870
msgid "Image"
msgstr "Image"
@@ -2442,7 +2457,7 @@ msgid "Default currency used for this company"
msgstr ""
#: company/models.py:320 company/models.py:535 stock/models.py:471
-#: stock/templates/stock/item_base.html:142 templates/js/translated/bom.js:328
+#: stock/templates/stock/item_base.html:144 templates/js/translated/bom.js:541
msgid "Base Part"
msgstr ""
@@ -2453,11 +2468,11 @@ 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:380
+#: stock/templates/stock/item_base.html:382
#: templates/js/translated/company.js:333
#: templates/js/translated/company.js:517
#: templates/js/translated/company.js:800 templates/js/translated/part.js:234
-#: templates/js/translated/table_filters.js:389
+#: templates/js/translated/table_filters.js:384
msgid "Manufacturer"
msgstr "Fabricant"
@@ -2488,7 +2503,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:390
+#: stock/templates/stock/item_base.html:392
msgid "Manufacturer Part"
msgstr ""
@@ -2499,7 +2514,7 @@ msgstr ""
#: company/models.py:422
#: report/templates/report/inventree_test_report_base.html:95
#: stock/models.py:1988 templates/js/translated/company.js:647
-#: templates/js/translated/part.js:715 templates/js/translated/stock.js:1304
+#: templates/js/translated/part.js:715 templates/js/translated/stock.js:1332
msgid "Value"
msgstr "Valeur"
@@ -2507,9 +2522,9 @@ msgstr "Valeur"
msgid "Parameter value"
msgstr ""
-#: company/models.py:429 part/models.py:915 part/models.py:2457
+#: company/models.py:429 part/models.py:945 part/models.py:2493
#: part/templates/part/part_base.html:288
-#: templates/InvenTree/settings/settings.html:287
+#: templates/InvenTree/settings/settings.html:324
#: templates/js/translated/company.js:653 templates/js/translated/part.js:721
msgid "Units"
msgstr ""
@@ -2526,11 +2541,11 @@ msgstr ""
#: company/templates/company/supplier_part.html:87 order/models.py:227
#: order/templates/order/order_base.html:112
#: order/templates/order/order_wizard/select_pos.html:30 part/bom.py:237
-#: part/bom.py:265 stock/templates/stock/item_base.html:397
+#: part/bom.py:265 stock/templates/stock/item_base.html:399
#: templates/js/translated/company.js:337
#: templates/js/translated/company.js:774 templates/js/translated/order.js:823
#: templates/js/translated/part.js:215 templates/js/translated/part.js:863
-#: templates/js/translated/table_filters.js:393
+#: templates/js/translated/table_filters.js:388
msgid "Supplier"
msgstr "Fournisseur"
@@ -2561,22 +2576,23 @@ msgid "Supplier part description"
msgstr ""
#: company/models.py:576 company/templates/company/supplier_part.html:119
-#: part/models.py:2648 report/templates/report/inventree_po_report.html:93
-#: report/templates/report/inventree_so_report.html:93
+#: part/models.py:2717 part/templates/part/upload_bom.html:59
+#: report/templates/report/inventree_po_report.html:93
+#: report/templates/report/inventree_so_report.html:93 stock/serializers.py:409
msgid "Note"
msgstr ""
-#: company/models.py:580 part/models.py:1781
+#: company/models.py:580 part/models.py:1817
msgid "base cost"
msgstr "coût de base"
-#: company/models.py:580 part/models.py:1781
+#: company/models.py:580 part/models.py:1817
msgid "Minimum charge (e.g. stocking fee)"
msgstr ""
#: company/models.py:582 company/templates/company/supplier_part.html:112
-#: stock/models.py:495 stock/templates/stock/item_base.html:338
-#: templates/js/translated/company.js:850 templates/js/translated/stock.js:1799
+#: stock/models.py:495 stock/templates/stock/item_base.html:340
+#: templates/js/translated/company.js:850 templates/js/translated/stock.js:1923
msgid "Packaging"
msgstr ""
@@ -2584,7 +2600,7 @@ msgstr ""
msgid "Part packaging"
msgstr ""
-#: company/models.py:584 part/models.py:1783
+#: company/models.py:584 part/models.py:1819
msgid "multiple"
msgstr ""
@@ -2645,11 +2661,11 @@ msgstr "Télécharger l'image depuis l'URL"
#: company/templates/company/company_base.html:83 order/models.py:552
#: order/templates/order/sales_order_base.html:115 stock/models.py:514
-#: stock/models.py:515 stock/serializers.py:626
-#: stock/templates/stock/item_base.html:290
+#: stock/models.py:515 stock/serializers.py:683
+#: stock/templates/stock/item_base.html:292
#: templates/js/translated/company.js:329 templates/js/translated/order.js:1240
-#: templates/js/translated/stock.js:2610
-#: templates/js/translated/table_filters.js:397
+#: templates/js/translated/stock.js:2734
+#: templates/js/translated/table_filters.js:392
msgid "Customer"
msgstr ""
@@ -2679,7 +2695,7 @@ msgstr ""
#: company/templates/company/detail.html:20
#: company/templates/company/manufacturer_part.html:118
-#: part/templates/part/detail.html:353
+#: part/templates/part/detail.html:356
msgid "New Supplier Part"
msgstr ""
@@ -2687,8 +2703,8 @@ msgstr ""
#: company/templates/company/detail.html:79
#: company/templates/company/manufacturer_part.html:127
#: company/templates/company/manufacturer_part.html:156
-#: part/templates/part/category.html:171 part/templates/part/detail.html:362
-#: part/templates/part/detail.html:391
+#: part/templates/part/category.html:171 part/templates/part/detail.html:365
+#: part/templates/part/detail.html:394
msgid "Options"
msgstr ""
@@ -2716,7 +2732,7 @@ msgstr ""
msgid "Create new manufacturer part"
msgstr ""
-#: company/templates/company/detail.html:67 part/templates/part/detail.html:381
+#: company/templates/company/detail.html:67 part/templates/part/detail.html:384
msgid "New Manufacturer Part"
msgstr ""
@@ -2730,7 +2746,7 @@ msgstr ""
#: order/templates/order/order_base.html:13
#: order/templates/order/purchase_orders.html:8
#: order/templates/order/purchase_orders.html:12
-#: part/templates/part/detail.html:85 part/templates/part/part_sidebar.html:37
+#: part/templates/part/detail.html:85 part/templates/part/part_sidebar.html:40
#: templates/InvenTree/index.html:252 templates/InvenTree/search.html:197
#: templates/InvenTree/settings/sidebar.html:45 templates/navbar.html:47
#: users/models.py:45
@@ -2752,7 +2768,7 @@ msgstr "Nouvelle commande achat"
#: order/templates/order/sales_order_base.html:13
#: order/templates/order/sales_orders.html:8
#: order/templates/order/sales_orders.html:15
-#: part/templates/part/detail.html:108 part/templates/part/part_sidebar.html:41
+#: part/templates/part/detail.html:108 part/templates/part/part_sidebar.html:44
#: templates/InvenTree/index.html:283 templates/InvenTree/search.html:217
#: templates/InvenTree/settings/sidebar.html:47 templates/navbar.html:58
#: users/models.py:46
@@ -2770,7 +2786,7 @@ msgid "New Sales Order"
msgstr "Nouvelle commande de vente"
#: company/templates/company/detail.html:168
-#: templates/js/translated/build.js:1059
+#: templates/js/translated/build.js:1281
msgid "Assigned Stock"
msgstr "Stock affecté"
@@ -2780,13 +2796,13 @@ msgstr ""
#: company/templates/company/detail.html:384
#: company/templates/company/manufacturer_part.html:215
-#: part/templates/part/detail.html:435
+#: part/templates/part/detail.html:438
msgid "Delete Supplier Parts?"
msgstr ""
#: company/templates/company/detail.html:385
#: company/templates/company/manufacturer_part.html:216
-#: part/templates/part/detail.html:436
+#: part/templates/part/detail.html:439
msgid "All selected supplier parts will be deleted"
msgstr ""
@@ -2824,36 +2840,36 @@ 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:35 part/templates/part/prices.html:163
+#: part/templates/part/part_sidebar.html:38 part/templates/part/prices.html:163
#: templates/InvenTree/search.html:188 templates/navbar.html:45
msgid "Suppliers"
msgstr "Fournisseurs"
#: company/templates/company/manufacturer_part.html:129
-#: part/templates/part/detail.html:364
+#: part/templates/part/detail.html:367
msgid "Delete supplier parts"
msgstr "Supprimer les pièces du fournisseur"
#: company/templates/company/manufacturer_part.html:129
#: company/templates/company/manufacturer_part.html:158
#: company/templates/company/manufacturer_part.html:254
-#: part/templates/part/detail.html:364 part/templates/part/detail.html:393
+#: part/templates/part/detail.html:367 part/templates/part/detail.html:396
#: templates/js/translated/company.js:426 templates/js/translated/helpers.js:31
-#: users/models.py:212
+#: users/models.py:217
msgid "Delete"
msgstr "Supprimer"
#: company/templates/company/manufacturer_part.html:143
#: company/templates/company/manufacturer_part_sidebar.html:5
#: part/templates/part/category_sidebar.html:17
-#: part/templates/part/detail.html:187 part/templates/part/part_sidebar.html:8
+#: part/templates/part/detail.html:190 part/templates/part/part_sidebar.html:9
msgid "Parameters"
msgstr "Paramètres"
#: company/templates/company/manufacturer_part.html:147
-#: part/templates/part/detail.html:192
+#: part/templates/part/detail.html:195
#: templates/InvenTree/settings/category.html:12
-#: templates/InvenTree/settings/part.html:65
+#: templates/InvenTree/settings/part.html:66
msgid "New Parameter"
msgstr "Nouveau paramètre"
@@ -2862,7 +2878,7 @@ msgid "Delete parameters"
msgstr ""
#: company/templates/company/manufacturer_part.html:191
-#: part/templates/part/detail.html:892
+#: part/templates/part/detail.html:895
msgid "Add Parameter"
msgstr ""
@@ -2892,8 +2908,8 @@ msgstr ""
#: company/templates/company/supplier_part.html:7
#: company/templates/company/supplier_part.html:24 stock/models.py:479
-#: stock/templates/stock/item_base.html:402
-#: templates/js/translated/company.js:790 templates/js/translated/stock.js:1756
+#: stock/templates/stock/item_base.html:404
+#: templates/js/translated/company.js:790 templates/js/translated/stock.js:1880
msgid "Supplier Part"
msgstr ""
@@ -2919,7 +2935,7 @@ msgstr ""
#: company/templates/company/supplier_part.html:142
#: part/templates/part/detail.html:25 stock/templates/stock/location.html:167
-#: templates/js/translated/stock.js:368
+#: templates/js/translated/stock.js:369
msgid "New Stock Item"
msgstr ""
@@ -2940,7 +2956,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:1628
+#: part/templates/part/prices.html:271 part/views.py:1319
msgid "Add Price Break"
msgstr ""
@@ -2948,11 +2964,11 @@ msgstr ""
msgid "No price break information found"
msgstr ""
-#: company/templates/company/supplier_part.html:224 part/views.py:1690
+#: company/templates/company/supplier_part.html:224 part/views.py:1381
msgid "Delete Price Break"
msgstr ""
-#: company/templates/company/supplier_part.html:238 part/views.py:1676
+#: company/templates/company/supplier_part.html:238 part/views.py:1367
msgid "Edit Price Break"
msgstr ""
@@ -2965,15 +2981,15 @@ msgid "Delete price break"
msgstr ""
#: company/templates/company/supplier_part_navbar.html:15
-#: part/templates/part/part_sidebar.html:14
+#: part/templates/part/part_sidebar.html:15
#: 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:150
#: templates/InvenTree/settings/sidebar.html:41
-#: templates/js/translated/bom.js:340 templates/js/translated/part.js:495
+#: templates/js/translated/bom.js:553 templates/js/translated/part.js:495
#: templates/js/translated/part.js:630 templates/js/translated/part.js:1125
-#: templates/js/translated/part.js:1286 templates/js/translated/stock.js:935
-#: templates/js/translated/stock.js:1588 templates/navbar.html:28
+#: templates/js/translated/part.js:1286 templates/js/translated/stock.js:936
+#: templates/js/translated/stock.js:1712 templates/navbar.html:28
msgid "Stock"
msgstr "Stock"
@@ -2987,7 +3003,7 @@ msgid "Supplier Part Pricing"
msgstr ""
#: company/templates/company/supplier_part_navbar.html:29
-#: part/templates/part/part_sidebar.html:28
+#: part/templates/part/part_sidebar.html:30
msgid "Pricing"
msgstr "Tarif"
@@ -2996,7 +3012,7 @@ msgstr "Tarif"
#: stock/templates/stock/location.html:151
#: stock/templates/stock/location.html:163
#: stock/templates/stock/location_sidebar.html:7
-#: templates/InvenTree/search.html:152 templates/js/translated/stock.js:2509
+#: templates/InvenTree/search.html:152 templates/js/translated/stock.js:2633
#: templates/stats.html:105 templates/stats.html:114 users/models.py:43
msgid "Stock Items"
msgstr "Éléments en stock"
@@ -3026,20 +3042,20 @@ msgstr "Entreprises"
msgid "New Company"
msgstr "Nouvelle Entreprise"
-#: company/views.py:129 part/views.py:593
+#: company/views.py:129 part/views.py:591
msgid "Download Image"
msgstr ""
-#: company/views.py:158 part/views.py:625
+#: company/views.py:158 part/views.py:623
msgid "Image size exceeds maximum allowable size for download"
msgstr ""
-#: company/views.py:165 part/views.py:632
+#: company/views.py:165 part/views.py:630
#, python-brace-format
msgid "Invalid response: {code}"
msgstr ""
-#: company/views.py:174 part/views.py:641
+#: company/views.py:174 part/views.py:639
msgid "Supplied URL is not a valid image file"
msgstr ""
@@ -3256,16 +3272,16 @@ msgid "Supplier part must match supplier"
msgstr ""
#: order/models.py:855 order/models.py:946 order/models.py:1042
-#: templates/js/translated/order.js:1820 templates/js/translated/stock.js:2271
+#: templates/js/translated/order.js:1820 templates/js/translated/stock.js:2395
msgid "Order"
msgstr "Commande"
#: order/models.py:856 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:352
+#: stock/templates/stock/item_base.html:354
#: templates/js/translated/order.js:801 templates/js/translated/part.js:838
-#: templates/js/translated/stock.js:1733 templates/js/translated/stock.js:2591
+#: templates/js/translated/stock.js:1857 templates/js/translated/stock.js:2715
msgid "Purchase Order"
msgstr "Commande d’achat"
@@ -3276,7 +3292,7 @@ msgstr "Pièce fournisseur"
#: order/models.py:884 order/templates/order/order_base.html:163
#: templates/js/translated/order.js:589 templates/js/translated/order.js:1118
#: templates/js/translated/part.js:910 templates/js/translated/part.js:937
-#: templates/js/translated/table_filters.js:317
+#: templates/js/translated/table_filters.js:312
msgid "Received"
msgstr "Reçu"
@@ -3285,8 +3301,8 @@ msgid "Number of items received"
msgstr "Nombre d'éléments reçus"
#: order/models.py:892 part/templates/part/prices.html:176 stock/models.py:608
-#: stock/serializers.py:170 stock/templates/stock/item_base.html:359
-#: templates/js/translated/stock.js:1787
+#: stock/serializers.py:170 stock/templates/stock/item_base.html:361
+#: templates/js/translated/stock.js:1911
msgid "Purchase Price"
msgstr "Prix d'achat"
@@ -3530,7 +3546,7 @@ msgstr ""
#: order/templates/order/order_base.html:94
#: order/templates/order/sales_order_base.html:89
-#: templates/js/translated/stock.js:2327
+#: templates/js/translated/stock.js:2451
msgid "Order Status"
msgstr "Statut de la commande"
@@ -3574,73 +3590,20 @@ msgstr ""
msgid "After placing this purchase order, line items will no longer be editable."
msgstr ""
-#: order/templates/order/order_wizard/match_fields.html:9
-#: part/templates/part/bom_upload/match_fields.html:9
-#: part/templates/part/import_wizard/ajax_match_fields.html:9
-#: part/templates/part/import_wizard/match_fields.html:9
-msgid "Missing selections for the following required columns"
-msgstr ""
-
-#: order/templates/order/order_wizard/match_fields.html:20
-#: part/templates/part/bom_upload/match_fields.html:20
-#: part/templates/part/import_wizard/ajax_match_fields.html:20
-#: part/templates/part/import_wizard/match_fields.html:20
-msgid "Duplicate selections found, see below. Fix them then retry submitting."
-msgstr ""
-
-#: order/templates/order/order_wizard/match_fields.html:29
-#: order/templates/order/order_wizard/match_parts.html:21
-#: part/templates/part/bom_upload/match_fields.html:29
-#: part/templates/part/bom_upload/match_parts.html:21
-#: part/templates/part/import_wizard/match_fields.html:29
-#: part/templates/part/import_wizard/match_references.html:21
-msgid "Submit Selections"
-msgstr ""
-
-#: order/templates/order/order_wizard/match_fields.html:35
-#: part/templates/part/bom_upload/match_fields.html:35
-#: part/templates/part/import_wizard/ajax_match_fields.html:28
-#: part/templates/part/import_wizard/match_fields.html:35
-msgid "File Fields"
-msgstr ""
-
-#: order/templates/order/order_wizard/match_fields.html:42
-#: part/templates/part/bom_upload/match_fields.html:42
-#: part/templates/part/import_wizard/ajax_match_fields.html:35
-#: part/templates/part/import_wizard/match_fields.html:42
-msgid "Remove column"
-msgstr "Supprimer la colonne"
-
-#: order/templates/order/order_wizard/match_fields.html:60
-#: part/templates/part/bom_upload/match_fields.html:60
-#: part/templates/part/import_wizard/ajax_match_fields.html:53
-#: part/templates/part/import_wizard/match_fields.html:60
-msgid "Duplicate selection"
-msgstr "Dupliquer la sélection"
-
-#: order/templates/order/order_wizard/match_fields.html:71
-#: order/templates/order/order_wizard/match_parts.html:52
-#: part/templates/part/bom_upload/match_fields.html:71
-#: part/templates/part/bom_upload/match_parts.html:53
-#: part/templates/part/import_wizard/ajax_match_fields.html:64
-#: part/templates/part/import_wizard/ajax_match_references.html:42
-#: part/templates/part/import_wizard/match_fields.html:71
-#: part/templates/part/import_wizard/match_references.html:49
-#: templates/js/translated/build.js:300 templates/js/translated/build.js:1311
-#: templates/js/translated/order.js:537 templates/js/translated/order.js:1488
-#: templates/js/translated/stock.js:601 templates/js/translated/stock.js:769
-msgid "Remove row"
-msgstr "Supprimer la ligne"
-
#: order/templates/order/order_wizard/match_parts.html:12
-#: part/templates/part/bom_upload/match_parts.html:12
#: part/templates/part/import_wizard/ajax_match_references.html:12
#: part/templates/part/import_wizard/match_references.html:12
msgid "Errors exist in the submitted data"
msgstr ""
+#: order/templates/order/order_wizard/match_parts.html:21
+#: part/templates/part/import_wizard/match_fields.html:29
+#: part/templates/part/import_wizard/match_references.html:21
+#: templates/patterns/wizard/match_fields.html:28
+msgid "Submit Selections"
+msgstr ""
+
#: order/templates/order/order_wizard/match_parts.html:28
-#: part/templates/part/bom_upload/match_parts.html:28
#: part/templates/part/import_wizard/ajax_match_references.html:21
#: part/templates/part/import_wizard/match_references.html:28
msgid "Row"
@@ -3650,6 +3613,19 @@ msgstr "Ligne"
msgid "Select Supplier Part"
msgstr ""
+#: order/templates/order/order_wizard/match_parts.html:52
+#: part/templates/part/import_wizard/ajax_match_fields.html:64
+#: part/templates/part/import_wizard/ajax_match_references.html:42
+#: part/templates/part/import_wizard/match_fields.html:71
+#: part/templates/part/import_wizard/match_references.html:49
+#: templates/js/translated/bom.js:76 templates/js/translated/build.js:380
+#: templates/js/translated/build.js:528 templates/js/translated/build.js:1547
+#: templates/js/translated/order.js:537 templates/js/translated/order.js:1488
+#: templates/js/translated/stock.js:602 templates/js/translated/stock.js:770
+#: templates/patterns/wizard/match_fields.html:70
+msgid "Remove row"
+msgstr "Supprimer la ligne"
+
#: order/templates/order/order_wizard/po_upload.html:8
msgid "Return to Orders"
msgstr ""
@@ -3659,9 +3635,9 @@ msgid "Upload File for Purchase Order"
msgstr ""
#: order/templates/order/order_wizard/po_upload.html:25
-#: part/templates/part/bom_upload/upload_file.html:21
#: part/templates/part/import_wizard/ajax_part_upload.html:10
#: part/templates/part/import_wizard/part_upload.html:23
+#: templates/patterns/wizard/upload.html:11
#, python-format
msgid "Step %(step)s of %(count)s"
msgstr ""
@@ -3819,7 +3795,7 @@ msgid "Pending Shipments"
msgstr ""
#: order/templates/order/sales_order_detail.html:48
-#: templates/js/translated/bom.js:732 templates/js/translated/build.js:1243
+#: templates/js/translated/bom.js:945 templates/js/translated/build.js:1465
msgid "Actions"
msgstr ""
@@ -3922,7 +3898,7 @@ msgstr ""
msgid "This field is required"
msgstr ""
-#: part/bom.py:125 part/models.py:83 part/models.py:849
+#: part/bom.py:125 part/models.py:83 part/models.py:879
#: part/templates/part/category.html:108 part/templates/part/part_base.html:338
msgid "Default Location"
msgstr ""
@@ -3968,7 +3944,7 @@ msgstr ""
msgid "Default keywords for parts in this category"
msgstr ""
-#: part/models.py:97 part/models.py:2533 part/templates/part/category.html:15
+#: part/models.py:97 part/models.py:2569 part/templates/part/category.html:15
#: part/templates/part/part_app_base.html:10
msgid "Part Category"
msgstr ""
@@ -3994,408 +3970,478 @@ msgstr ""
msgid "Invalid choice for parent part"
msgstr ""
-#: part/models.py:502 part/models.py:514
+#: part/models.py:532 part/models.py:544
#, python-brace-format
msgid "Part '{p1}' is used in BOM for '{p2}' (recursive)"
msgstr ""
-#: part/models.py:644
+#: part/models.py:674
msgid "Next available serial numbers are"
msgstr "Les prochains numéros de série disponibles sont"
-#: part/models.py:648
+#: part/models.py:678
msgid "Next available serial number is"
msgstr "Le prochain numéro de série disponible est"
-#: part/models.py:653
+#: part/models.py:683
msgid "Most recent serial number is"
msgstr "Le numéro de série le plus récent est"
-#: part/models.py:748
+#: part/models.py:778
msgid "Duplicate IPN not allowed in part settings"
msgstr "IPN dupliqué non autorisé dans les paramètres de la pièce"
-#: part/models.py:773
+#: part/models.py:803 part/models.py:2622
msgid "Part name"
msgstr ""
-#: part/models.py:780
+#: part/models.py:810
msgid "Is Template"
msgstr ""
-#: part/models.py:781
+#: part/models.py:811
msgid "Is this part a template part?"
msgstr ""
-#: part/models.py:791
+#: part/models.py:821
msgid "Is this part a variant of another part?"
msgstr ""
-#: part/models.py:792
+#: part/models.py:822
msgid "Variant Of"
msgstr ""
-#: part/models.py:798
+#: part/models.py:828
msgid "Part description"
msgstr ""
-#: part/models.py:803 part/templates/part/category.html:86
+#: part/models.py:833 part/templates/part/category.html:86
#: part/templates/part/part_base.html:302
msgid "Keywords"
msgstr ""
-#: part/models.py:804
+#: part/models.py:834
msgid "Part keywords to improve visibility in search results"
msgstr ""
-#: part/models.py:811 part/models.py:2283 part/models.py:2532
+#: part/models.py:841 part/models.py:2319 part/models.py:2568
#: part/templates/part/part_base.html:265
#: part/templates/part/set_category.html:15
-#: templates/InvenTree/settings/settings.html:186
+#: templates/InvenTree/settings/settings.html:223
#: templates/js/translated/part.js:1268
msgid "Category"
msgstr "Catégorie"
-#: part/models.py:812
+#: part/models.py:842
msgid "Part category"
msgstr "Catégorie de la pièce"
-#: part/models.py:817 part/templates/part/part_base.html:274
+#: part/models.py:847 part/templates/part/part_base.html:274
#: templates/js/translated/part.js:618 templates/js/translated/part.js:1221
-#: templates/js/translated/stock.js:1560
+#: templates/js/translated/stock.js:1684
msgid "IPN"
msgstr "IPN"
-#: part/models.py:818
+#: part/models.py:848
msgid "Internal Part Number"
msgstr ""
-#: part/models.py:824
+#: part/models.py:854
msgid "Part revision or version number"
msgstr ""
-#: part/models.py:825 part/templates/part/part_base.html:281
+#: part/models.py:855 part/templates/part/part_base.html:281
#: report/models.py:200 templates/js/translated/part.js:622
msgid "Revision"
msgstr "Révision"
-#: part/models.py:847
+#: part/models.py:877
msgid "Where is this item normally stored?"
msgstr ""
-#: part/models.py:894 part/templates/part/part_base.html:347
+#: part/models.py:924 part/templates/part/part_base.html:347
msgid "Default Supplier"
msgstr ""
-#: part/models.py:895
+#: part/models.py:925
msgid "Default supplier part"
msgstr ""
-#: part/models.py:902
+#: part/models.py:932
msgid "Default Expiry"
msgstr ""
-#: part/models.py:903
+#: part/models.py:933
msgid "Expiry time (in days) for stock items of this part"
msgstr ""
-#: part/models.py:908 part/templates/part/part_base.html:196
+#: part/models.py:938 part/templates/part/part_base.html:196
msgid "Minimum Stock"
msgstr ""
-#: part/models.py:909
+#: part/models.py:939
msgid "Minimum allowed stock level"
msgstr ""
-#: part/models.py:916
+#: part/models.py:946
msgid "Stock keeping units for this part"
msgstr ""
-#: part/models.py:922
+#: part/models.py:952
msgid "Can this part be built from other parts?"
msgstr ""
-#: part/models.py:928
+#: part/models.py:958
msgid "Can this part be used to build other parts?"
msgstr ""
-#: part/models.py:934
+#: part/models.py:964
msgid "Does this part have tracking for unique items?"
msgstr ""
-#: part/models.py:939
+#: part/models.py:969
msgid "Can this part be purchased from external suppliers?"
msgstr ""
-#: part/models.py:944
+#: part/models.py:974
msgid "Can this part be sold to customers?"
msgstr ""
-#: part/models.py:949
+#: part/models.py:979
msgid "Is this part active?"
msgstr ""
-#: part/models.py:954
+#: part/models.py:984
msgid "Is this a virtual part, such as a software product or license?"
msgstr ""
-#: part/models.py:959
+#: part/models.py:989
msgid "Part notes - supports Markdown formatting"
msgstr ""
-#: part/models.py:962
+#: part/models.py:992
msgid "BOM checksum"
msgstr ""
-#: part/models.py:962
+#: part/models.py:992
msgid "Stored BOM checksum"
msgstr ""
-#: part/models.py:965
+#: part/models.py:995
msgid "BOM checked by"
msgstr ""
-#: part/models.py:967
+#: part/models.py:997
msgid "BOM checked date"
msgstr ""
-#: part/models.py:971
+#: part/models.py:1001
msgid "Creation User"
msgstr ""
-#: part/models.py:1783
+#: part/models.py:1819
msgid "Sell multiple"
msgstr "Ventes multiples"
-#: part/models.py:2333
+#: part/models.py:2369
msgid "Test templates can only be created for trackable parts"
msgstr ""
-#: part/models.py:2350
+#: part/models.py:2386
msgid "Test with this name already exists for this part"
msgstr ""
-#: part/models.py:2370 templates/js/translated/part.js:1714
-#: templates/js/translated/stock.js:1284
+#: part/models.py:2406 templates/js/translated/part.js:1714
+#: templates/js/translated/stock.js:1312
msgid "Test Name"
msgstr "Nom de test"
-#: part/models.py:2371
+#: part/models.py:2407
msgid "Enter a name for the test"
msgstr ""
-#: part/models.py:2376
+#: part/models.py:2412
msgid "Test Description"
msgstr ""
-#: part/models.py:2377
+#: part/models.py:2413
msgid "Enter description for this test"
msgstr ""
-#: part/models.py:2382 templates/js/translated/part.js:1723
-#: templates/js/translated/table_filters.js:281
+#: part/models.py:2418 templates/js/translated/part.js:1723
+#: templates/js/translated/table_filters.js:276
msgid "Required"
msgstr "Requis"
-#: part/models.py:2383
+#: part/models.py:2419
msgid "Is this test required to pass?"
msgstr ""
-#: part/models.py:2388 templates/js/translated/part.js:1731
+#: part/models.py:2424 templates/js/translated/part.js:1731
msgid "Requires Value"
msgstr ""
-#: part/models.py:2389
+#: part/models.py:2425
msgid "Does this test require a value when adding a test result?"
msgstr ""
-#: part/models.py:2394 templates/js/translated/part.js:1738
+#: part/models.py:2430 templates/js/translated/part.js:1738
msgid "Requires Attachment"
msgstr ""
-#: part/models.py:2395
+#: part/models.py:2431
msgid "Does this test require a file attachment when adding a test result?"
msgstr ""
-#: part/models.py:2406
+#: part/models.py:2442
#, python-brace-format
msgid "Illegal character in template name ({c})"
msgstr ""
-#: part/models.py:2442
+#: part/models.py:2478
msgid "Parameter template name must be unique"
msgstr ""
-#: part/models.py:2450
+#: part/models.py:2486
msgid "Parameter Name"
msgstr ""
-#: part/models.py:2457
+#: part/models.py:2493
msgid "Parameter Units"
msgstr ""
-#: part/models.py:2487
+#: part/models.py:2523
msgid "Parent Part"
msgstr ""
-#: part/models.py:2489 part/models.py:2538 part/models.py:2539
-#: templates/InvenTree/settings/settings.html:181
+#: part/models.py:2525 part/models.py:2574 part/models.py:2575
+#: templates/InvenTree/settings/settings.html:218
msgid "Parameter Template"
msgstr ""
-#: part/models.py:2491
+#: part/models.py:2527
msgid "Data"
msgstr "Données"
-#: part/models.py:2491
+#: part/models.py:2527
msgid "Parameter Value"
msgstr ""
-#: part/models.py:2543 templates/InvenTree/settings/settings.html:190
+#: part/models.py:2579 templates/InvenTree/settings/settings.html:227
msgid "Default Value"
msgstr ""
-#: part/models.py:2544
+#: part/models.py:2580
msgid "Default Parameter Value"
msgstr ""
+#: part/models.py:2614
+msgid "Part ID or part name"
+msgstr ""
+
+#: part/models.py:2617 templates/js/translated/model_renderers.js:182
+msgid "Part ID"
+msgstr ""
+
+#: part/models.py:2618
+msgid "Unique part ID value"
+msgstr ""
+
#: part/models.py:2621
-msgid "Select parent part"
+msgid "Part Name"
+msgstr ""
+
+#: part/models.py:2625
+msgid "Part IPN"
+msgstr ""
+
+#: part/models.py:2626
+msgid "Part IPN value"
msgstr ""
#: part/models.py:2629
-msgid "Sub part"
+msgid "Level"
msgstr ""
#: part/models.py:2630
+msgid "BOM level"
+msgstr ""
+
+#: part/models.py:2690
+msgid "Select parent part"
+msgstr ""
+
+#: part/models.py:2698
+msgid "Sub part"
+msgstr ""
+
+#: part/models.py:2699
msgid "Select part to be used in BOM"
msgstr ""
-#: part/models.py:2636
+#: part/models.py:2705
msgid "BOM quantity for this BOM item"
msgstr ""
-#: part/models.py:2638 templates/js/translated/bom.js:578
-#: templates/js/translated/bom.js:652
+#: part/models.py:2707 part/templates/part/upload_bom.html:58
+#: templates/js/translated/bom.js:791 templates/js/translated/bom.js:865
#: templates/js/translated/table_filters.js:92
msgid "Optional"
msgstr ""
-#: part/models.py:2638
+#: part/models.py:2707
msgid "This BOM item is optional"
msgstr ""
-#: part/models.py:2641
+#: part/models.py:2710 part/templates/part/upload_bom.html:55
msgid "Overage"
msgstr ""
-#: part/models.py:2642
+#: part/models.py:2711
msgid "Estimated build wastage quantity (absolute or percentage)"
msgstr ""
-#: part/models.py:2645
+#: part/models.py:2714
msgid "BOM item reference"
msgstr ""
-#: part/models.py:2648
+#: part/models.py:2717
msgid "BOM item notes"
msgstr ""
-#: part/models.py:2650
+#: part/models.py:2719
msgid "Checksum"
msgstr ""
-#: part/models.py:2650
+#: part/models.py:2719
msgid "BOM line checksum"
msgstr ""
-#: part/models.py:2654 templates/js/translated/bom.js:669
+#: part/models.py:2723 part/templates/part/upload_bom.html:57
+#: templates/js/translated/bom.js:882
#: templates/js/translated/table_filters.js:68
#: templates/js/translated/table_filters.js:88
msgid "Inherited"
msgstr ""
-#: part/models.py:2655
+#: part/models.py:2724
msgid "This BOM item is inherited by BOMs for variant parts"
msgstr ""
-#: part/models.py:2660 templates/js/translated/bom.js:661
+#: part/models.py:2729 part/templates/part/upload_bom.html:56
+#: templates/js/translated/bom.js:874
msgid "Allow Variants"
msgstr ""
-#: part/models.py:2661
+#: part/models.py:2730
msgid "Stock items for variant parts can be used for this BOM item"
msgstr ""
-#: part/models.py:2746 stock/models.py:357
+#: part/models.py:2815 stock/models.py:357
msgid "Quantity must be integer value for trackable parts"
msgstr ""
-#: part/models.py:2755 part/models.py:2757
+#: part/models.py:2824 part/models.py:2826
msgid "Sub part must be specified"
msgstr ""
-#: part/models.py:2886
+#: part/models.py:2955
msgid "BOM Item Substitute"
msgstr ""
-#: part/models.py:2908
+#: part/models.py:2977
msgid "Substitute part cannot be the same as the master part"
msgstr ""
-#: part/models.py:2920
+#: part/models.py:2989
msgid "Parent BOM item"
msgstr ""
-#: part/models.py:2928
+#: part/models.py:2997
msgid "Substitute part"
msgstr ""
-#: part/models.py:2939
+#: part/models.py:3008
msgid "Part 1"
msgstr ""
-#: part/models.py:2943
+#: part/models.py:3012
msgid "Part 2"
msgstr ""
-#: part/models.py:2943
+#: part/models.py:3012
msgid "Select Related Part"
msgstr ""
-#: part/models.py:2975
+#: part/models.py:3044
msgid "Error creating relationship: check that the part is not related to itself and that the relationship is unique"
msgstr ""
-#: part/serializers.py:659
+#: part/serializers.py:667
msgid "Select part to copy BOM from"
msgstr ""
-#: part/serializers.py:670
+#: part/serializers.py:678
msgid "Remove Existing Data"
msgstr ""
-#: part/serializers.py:671
+#: part/serializers.py:679
msgid "Remove existing BOM items before copying"
msgstr ""
-#: part/serializers.py:676
+#: part/serializers.py:684
msgid "Include Inherited"
msgstr ""
-#: part/serializers.py:677
+#: part/serializers.py:685
msgid "Include BOM items which are inherited from templated parts"
msgstr ""
-#: part/serializers.py:682
+#: part/serializers.py:690
msgid "Skip Invalid Rows"
msgstr ""
-#: part/serializers.py:683
+#: part/serializers.py:691
msgid "Enable this option to skip invalid rows"
msgstr ""
-#: part/tasks.py:53
+#: part/serializers.py:734
+msgid "Clear Existing BOM"
+msgstr ""
+
+#: part/serializers.py:735
+msgid "Delete existing BOM items before uploading"
+msgstr ""
+
+#: part/serializers.py:762
+msgid "No part column specified"
+msgstr ""
+
+#: part/serializers.py:806
+msgid "Multiple matching parts found"
+msgstr ""
+
+#: part/serializers.py:809
+msgid "No matching part found"
+msgstr ""
+
+#: part/serializers.py:812
+msgid "Part is not designated as a component"
+msgstr ""
+
+#: part/serializers.py:821
+msgid "Quantity not provided"
+msgstr ""
+
+#: part/serializers.py:829
+msgid "Invalid quantity"
+msgstr ""
+
+#: part/serializers.py:848
+msgid "At least one BOM item is required"
+msgstr ""
+
+#: part/tasks.py:58
msgid "Low stock notification"
msgstr ""
@@ -4418,7 +4464,7 @@ msgstr ""
msgid "The BOM for %(part)s has not been validated."
msgstr ""
-#: part/templates/part/bom.html:30 part/templates/part/detail.html:270
+#: part/templates/part/bom.html:30 part/templates/part/detail.html:273
msgid "BOM actions"
msgstr ""
@@ -4426,34 +4472,6 @@ msgstr ""
msgid "Delete Items"
msgstr "Supprimer l'élément"
-#: part/templates/part/bom_upload/match_parts.html:29
-msgid "Select Part"
-msgstr "Sélectionner une pièce"
-
-#: part/templates/part/bom_upload/upload_file.html:8
-msgid "Return to BOM"
-msgstr ""
-
-#: part/templates/part/bom_upload/upload_file.html:13
-msgid "Upload Bill of Materials"
-msgstr ""
-
-#: part/templates/part/bom_upload/upload_file.html:33
-msgid "Requirements for BOM upload"
-msgstr ""
-
-#: part/templates/part/bom_upload/upload_file.html:35
-msgid "The BOM file must contain the required named columns as provided in the "
-msgstr ""
-
-#: part/templates/part/bom_upload/upload_file.html:35
-msgid "BOM Upload Template"
-msgstr ""
-
-#: part/templates/part/bom_upload/upload_file.html:36
-msgid "Each part must already exist in the database"
-msgstr ""
-
#: part/templates/part/category.html:28 part/templates/part/category.html:32
msgid "You are subscribed to notifications for this category"
msgstr ""
@@ -4519,7 +4537,7 @@ msgstr "Exporter"
msgid "Create new part"
msgstr ""
-#: part/templates/part/category.html:161 templates/js/translated/bom.js:152
+#: part/templates/part/category.html:161 templates/js/translated/bom.js:365
msgid "New Part"
msgstr ""
@@ -4639,138 +4657,168 @@ msgstr ""
msgid "Sales Order Allocations"
msgstr ""
-#: part/templates/part/detail.html:159
+#: part/templates/part/detail.html:162
msgid "Part Variants"
msgstr ""
-#: part/templates/part/detail.html:163
+#: part/templates/part/detail.html:166
msgid "Create new variant"
msgstr ""
-#: part/templates/part/detail.html:164
+#: part/templates/part/detail.html:167
msgid "New Variant"
msgstr ""
-#: part/templates/part/detail.html:191
+#: part/templates/part/detail.html:194
msgid "Add new parameter"
msgstr ""
-#: part/templates/part/detail.html:228 part/templates/part/part_sidebar.html:49
+#: part/templates/part/detail.html:231 part/templates/part/part_sidebar.html:52
msgid "Related Parts"
msgstr ""
-#: part/templates/part/detail.html:232 part/templates/part/detail.html:233
+#: part/templates/part/detail.html:235 part/templates/part/detail.html:236
msgid "Add Related"
msgstr ""
-#: part/templates/part/detail.html:253 part/templates/part/part_sidebar.html:17
+#: part/templates/part/detail.html:256 part/templates/part/part_sidebar.html:18
msgid "Bill of Materials"
msgstr ""
-#: part/templates/part/detail.html:258
+#: part/templates/part/detail.html:261
msgid "Export actions"
msgstr ""
-#: part/templates/part/detail.html:262 templates/js/translated/bom.js:70
+#: part/templates/part/detail.html:265 templates/js/translated/bom.js:283
msgid "Export BOM"
msgstr ""
-#: part/templates/part/detail.html:264
+#: part/templates/part/detail.html:267
msgid "Print BOM Report"
msgstr ""
-#: part/templates/part/detail.html:274
+#: part/templates/part/detail.html:277
msgid "Upload BOM"
msgstr ""
-#: part/templates/part/detail.html:276 templates/js/translated/part.js:272
+#: part/templates/part/detail.html:279 templates/js/translated/part.js:272
msgid "Copy BOM"
msgstr ""
-#: part/templates/part/detail.html:278
+#: part/templates/part/detail.html:281
msgid "Validate BOM"
msgstr ""
-#: part/templates/part/detail.html:283
+#: part/templates/part/detail.html:286
msgid "New BOM Item"
msgstr ""
-#: part/templates/part/detail.html:284
+#: part/templates/part/detail.html:287
msgid "Add BOM Item"
msgstr ""
-#: part/templates/part/detail.html:297
+#: part/templates/part/detail.html:300
msgid "Assemblies"
msgstr ""
-#: part/templates/part/detail.html:314
+#: part/templates/part/detail.html:317
msgid "Part Builds"
msgstr ""
-#: part/templates/part/detail.html:339
+#: part/templates/part/detail.html:342
msgid "Build Order Allocations"
msgstr ""
-#: part/templates/part/detail.html:349
+#: part/templates/part/detail.html:352
msgid "Part Suppliers"
msgstr ""
-#: part/templates/part/detail.html:377
+#: part/templates/part/detail.html:380
msgid "Part Manufacturers"
msgstr ""
-#: part/templates/part/detail.html:393
+#: part/templates/part/detail.html:396
msgid "Delete manufacturer parts"
msgstr ""
-#: part/templates/part/detail.html:575
+#: part/templates/part/detail.html:578
msgid "Delete selected BOM items?"
msgstr ""
-#: part/templates/part/detail.html:576
+#: part/templates/part/detail.html:579
msgid "All selected BOM items will be deleted"
msgstr ""
-#: part/templates/part/detail.html:625
+#: part/templates/part/detail.html:628
msgid "Create BOM Item"
msgstr ""
-#: part/templates/part/detail.html:682
+#: part/templates/part/detail.html:685
msgid "Related Part"
msgstr ""
-#: part/templates/part/detail.html:690
+#: part/templates/part/detail.html:693
msgid "Add Related Part"
msgstr ""
-#: part/templates/part/detail.html:785
+#: part/templates/part/detail.html:788
msgid "Add Test Result Template"
msgstr ""
-#: part/templates/part/detail.html:842
+#: part/templates/part/detail.html:845
msgid "Edit Part Notes"
msgstr ""
-#: part/templates/part/detail.html:955
+#: part/templates/part/detail.html:958
#, python-format
msgid "Purchase Unit Price - %(currency)s"
msgstr ""
-#: part/templates/part/detail.html:967
+#: part/templates/part/detail.html:970
#, python-format
msgid "Unit Price-Cost Difference - %(currency)s"
msgstr ""
-#: part/templates/part/detail.html:979
+#: part/templates/part/detail.html:982
#, python-format
msgid "Supplier Unit Cost - %(currency)s"
msgstr ""
-#: part/templates/part/detail.html:1068
+#: part/templates/part/detail.html:1071
#, python-format
msgid "Unit Price - %(currency)s"
msgstr ""
+#: part/templates/part/import_wizard/ajax_match_fields.html:9
+#: part/templates/part/import_wizard/match_fields.html:9
+#: templates/patterns/wizard/match_fields.html:8
+msgid "Missing selections for the following required columns"
+msgstr ""
+
+#: part/templates/part/import_wizard/ajax_match_fields.html:20
+#: part/templates/part/import_wizard/match_fields.html:20
+#: templates/patterns/wizard/match_fields.html:19
+msgid "Duplicate selections found, see below. Fix them then retry submitting."
+msgstr ""
+
+#: part/templates/part/import_wizard/ajax_match_fields.html:28
+#: part/templates/part/import_wizard/match_fields.html:35
+#: templates/patterns/wizard/match_fields.html:34
+msgid "File Fields"
+msgstr ""
+
+#: part/templates/part/import_wizard/ajax_match_fields.html:35
+#: part/templates/part/import_wizard/match_fields.html:42
+#: templates/patterns/wizard/match_fields.html:41
+msgid "Remove column"
+msgstr "Supprimer la colonne"
+
+#: part/templates/part/import_wizard/ajax_match_fields.html:53
+#: part/templates/part/import_wizard/match_fields.html:60
+#: templates/patterns/wizard/match_fields.html:59
+msgid "Duplicate selection"
+msgstr "Dupliquer la sélection"
+
#: part/templates/part/import_wizard/ajax_part_upload.html:29
#: part/templates/part/import_wizard/part_upload.html:53
msgid "Unsuffitient privileges."
@@ -4819,7 +4867,7 @@ msgid "Show pricing information"
msgstr ""
#: part/templates/part/part_base.html:56
-#: stock/templates/stock/item_base.html:110
+#: stock/templates/stock/item_base.html:112
#: stock/templates/stock/location.html:44
msgid "Stock actions"
msgstr ""
@@ -4912,7 +4960,7 @@ msgstr ""
msgid "Allocated to Orders"
msgstr ""
-#: part/templates/part/part_base.html:239 templates/js/translated/bom.js:690
+#: part/templates/part/part_base.html:239 templates/js/translated/bom.js:903
msgid "Can Build"
msgstr ""
@@ -4930,7 +4978,7 @@ msgid "Latest Serial Number"
msgstr "Dernier numéro de série"
#: part/templates/part/part_base.html:328
-#: stock/templates/stock/item_base.html:166
+#: stock/templates/stock/item_base.html:168
msgid "Search for serial number"
msgstr "Rechercher un numéro de série"
@@ -4969,7 +5017,7 @@ msgid "Total Cost"
msgstr ""
#: part/templates/part/part_pricing.html:40 part/templates/part/prices.html:40
-#: templates/js/translated/bom.js:644
+#: templates/js/translated/bom.js:857
msgid "No supplier pricing available"
msgstr ""
@@ -5003,20 +5051,20 @@ msgstr ""
msgid "No pricing information is available for this part."
msgstr ""
-#: part/templates/part/part_sidebar.html:11
+#: part/templates/part/part_sidebar.html:12
msgid "Variants"
msgstr ""
-#: part/templates/part/part_sidebar.html:25
+#: part/templates/part/part_sidebar.html:26
msgid "Used In"
msgstr ""
-#: part/templates/part/part_sidebar.html:31
+#: part/templates/part/part_sidebar.html:34
#: stock/templates/stock/stock_sidebar.html:8
msgid "Allocations"
msgstr ""
-#: part/templates/part/part_sidebar.html:45
+#: part/templates/part/part_sidebar.html:48
msgid "Test Templates"
msgstr "Tester le modèle"
@@ -5089,7 +5137,7 @@ msgstr "Afficher le prix de vente"
msgid "Calculation parameters"
msgstr ""
-#: part/templates/part/prices.html:155 templates/js/translated/bom.js:638
+#: part/templates/part/prices.html:155 templates/js/translated/bom.js:851
msgid "Supplier Cost"
msgstr ""
@@ -5111,7 +5159,7 @@ msgstr ""
msgid "Internal Cost"
msgstr ""
-#: part/templates/part/prices.html:215 part/views.py:1699
+#: part/templates/part/prices.html:215 part/views.py:1390
msgid "Add Internal Price Break"
msgstr ""
@@ -5131,7 +5179,7 @@ msgstr ""
msgid "Set category for the following parts"
msgstr ""
-#: part/templates/part/stock_count.html:7 templates/js/translated/bom.js:600
+#: part/templates/part/stock_count.html:7 templates/js/translated/bom.js:813
#: templates/js/translated/part.js:497 templates/js/translated/part.js:1122
#: templates/js/translated/part.js:1309
msgid "No Stock"
@@ -5141,6 +5189,43 @@ msgstr ""
msgid "Low Stock"
msgstr ""
+#: part/templates/part/upload_bom.html:8
+msgid "Return to BOM"
+msgstr ""
+
+#: part/templates/part/upload_bom.html:13
+msgid "Upload Bill of Materials"
+msgstr ""
+
+#: part/templates/part/upload_bom.html:19
+msgid "BOM upload requirements"
+msgstr ""
+
+#: part/templates/part/upload_bom.html:23
+#: part/templates/part/upload_bom.html:90
+msgid "Upload BOM File"
+msgstr ""
+
+#: part/templates/part/upload_bom.html:29
+msgid "Submit BOM Data"
+msgstr ""
+
+#: part/templates/part/upload_bom.html:37
+msgid "Requirements for BOM upload"
+msgstr ""
+
+#: part/templates/part/upload_bom.html:39
+msgid "The BOM file must contain the required named columns as provided in the "
+msgstr ""
+
+#: part/templates/part/upload_bom.html:39
+msgid "BOM Upload Template"
+msgstr ""
+
+#: part/templates/part/upload_bom.html:40
+msgid "Each part must already exist in the database"
+msgstr ""
+
#: part/templates/part/variant_part.html:9
msgid "Create new part variant"
msgstr ""
@@ -5154,104 +5239,96 @@ msgstr ""
msgid "Unknown database"
msgstr ""
-#: part/views.py:93
+#: part/views.py:90
msgid "Set Part Category"
msgstr ""
-#: part/views.py:143
+#: part/views.py:140
#, python-brace-format
msgid "Set category for {n} parts"
msgstr ""
-#: part/views.py:215
+#: part/views.py:212
msgid "Match References"
msgstr ""
-#: part/views.py:511
+#: part/views.py:509
msgid "None"
msgstr ""
-#: part/views.py:570
+#: part/views.py:568
msgid "Part QR Code"
msgstr ""
-#: part/views.py:672
+#: part/views.py:670
msgid "Select Part Image"
msgstr ""
-#: part/views.py:698
+#: part/views.py:696
msgid "Updated part image"
msgstr ""
-#: part/views.py:701
+#: part/views.py:699
msgid "Part image not found"
msgstr ""
-#: part/views.py:775
-msgid "Match Parts"
-msgstr ""
-
-#: part/views.py:1110
-msgid "Export Bill of Materials"
-msgstr ""
-
-#: part/views.py:1159
+#: part/views.py:850
msgid "Confirm Part Deletion"
msgstr ""
-#: part/views.py:1166
+#: part/views.py:857
msgid "Part was deleted"
msgstr ""
-#: part/views.py:1175
+#: part/views.py:866
msgid "Part Pricing"
msgstr ""
-#: part/views.py:1324
+#: part/views.py:1015
msgid "Create Part Parameter Template"
msgstr ""
-#: part/views.py:1334
+#: part/views.py:1025
msgid "Edit Part Parameter Template"
msgstr ""
-#: part/views.py:1341
+#: part/views.py:1032
msgid "Delete Part Parameter Template"
msgstr ""
-#: part/views.py:1400 templates/js/translated/part.js:315
+#: part/views.py:1091 templates/js/translated/part.js:315
msgid "Edit Part Category"
msgstr ""
-#: part/views.py:1438
+#: part/views.py:1129
msgid "Delete Part Category"
msgstr ""
-#: part/views.py:1444
+#: part/views.py:1135
msgid "Part category was deleted"
msgstr ""
-#: part/views.py:1453
+#: part/views.py:1144
msgid "Create Category Parameter Template"
msgstr ""
-#: part/views.py:1554
+#: part/views.py:1245
msgid "Edit Category Parameter Template"
msgstr ""
-#: part/views.py:1610
+#: part/views.py:1301
msgid "Delete Category Parameter Template"
msgstr ""
-#: part/views.py:1632
+#: part/views.py:1323
msgid "Added new price break"
msgstr ""
-#: part/views.py:1708
+#: part/views.py:1399
msgid "Edit Internal Price Break"
msgstr ""
-#: part/views.py:1716
+#: part/views.py:1407
msgid "Delete Internal Price Break"
msgstr ""
@@ -5453,12 +5530,12 @@ msgid "Stock Item Test Report"
msgstr ""
#: report/templates/report/inventree_test_report_base.html:79
-#: stock/models.py:519 stock/templates/stock/item_base.html:156
-#: templates/js/translated/build.js:293 templates/js/translated/build.js:697
-#: templates/js/translated/build.js:1073
+#: stock/models.py:519 stock/templates/stock/item_base.html:158
+#: templates/js/translated/build.js:373 templates/js/translated/build.js:521
+#: templates/js/translated/build.js:919 templates/js/translated/build.js:1295
#: 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:423
+#: templates/js/translated/order.js:2034 templates/js/translated/stock.js:424
msgid "Serial Number"
msgstr "Numéro de série"
@@ -5479,7 +5556,7 @@ msgstr ""
#: report/templates/report/inventree_test_report_base.html:97
#: templates/InvenTree/settings/plugin.html:50
#: templates/InvenTree/settings/plugin_settings.html:38
-#: templates/js/translated/order.js:849 templates/js/translated/stock.js:2525
+#: templates/js/translated/order.js:849 templates/js/translated/stock.js:2649
msgid "Date"
msgstr ""
@@ -5497,71 +5574,67 @@ msgid "Installed Items"
msgstr ""
#: report/templates/report/inventree_test_report_base.html:137
-#: templates/js/translated/stock.js:586 templates/js/translated/stock.js:756
-#: templates/js/translated/stock.js:2785
+#: templates/js/translated/stock.js:587 templates/js/translated/stock.js:757
+#: templates/js/translated/stock.js:2909
msgid "Serial"
msgstr ""
-#: stock/api.py:476
+#: stock/api.py:501
msgid "Quantity is required"
msgstr ""
-#: stock/api.py:483
+#: stock/api.py:508
msgid "Valid part must be supplied"
msgstr ""
-#: stock/forms.py:77 stock/forms.py:251 stock/models.py:576
-#: stock/templates/stock/item_base.html:193
-#: templates/js/translated/stock.js:1709
+#: stock/api.py:535
+msgid "Serial numbers cannot be supplied for a non-trackable part"
+msgstr ""
+
+#: stock/forms.py:74 stock/forms.py:198 stock/models.py:576
+#: stock/templates/stock/item_base.html:195
+#: templates/js/translated/stock.js:1833
msgid "Expiry Date"
msgstr ""
-#: stock/forms.py:78 stock/forms.py:252
+#: stock/forms.py:75 stock/forms.py:199
msgid "Expiration date for this stock item"
msgstr ""
-#: stock/forms.py:81
+#: stock/forms.py:78
msgid "Enter unique serial numbers (or leave blank)"
msgstr "Entrer des numéros de série uniques (ou laisser vide)"
-#: stock/forms.py:136
+#: stock/forms.py:133
msgid "Destination for serialized stock (by default, will remain in current location)"
msgstr ""
-#: stock/forms.py:138
+#: stock/forms.py:135
msgid "Serial numbers"
msgstr "Numéros de série"
-#: stock/forms.py:138
+#: stock/forms.py:135
msgid "Unique serial numbers (must match quantity)"
msgstr "Numéros de série uniques (doivent correspondre à la quantité)"
-#: stock/forms.py:140 stock/forms.py:224
+#: stock/forms.py:137 stock/forms.py:171
msgid "Add transaction note (optional)"
msgstr ""
-#: stock/forms.py:180
-msgid "Stock item to install"
-msgstr ""
-
-#: stock/forms.py:210
-msgid "Must not exceed available quantity"
-msgstr ""
-
-#: stock/forms.py:222
+#: stock/forms.py:169
msgid "Destination location for uninstalled items"
msgstr ""
-#: stock/forms.py:226
+#: stock/forms.py:173
msgid "Confirm uninstall"
msgstr ""
-#: stock/forms.py:226
+#: stock/forms.py:173
msgid "Confirm removal of installed stock items"
msgstr ""
#: stock/models.py:62 stock/models.py:613
-#: stock/templates/stock/item_base.html:416
+#: stock/templates/stock/item_base.html:418
msgid "Owner"
msgstr "Propriétaire"
@@ -5623,7 +5696,7 @@ msgstr ""
msgid "Packaging this stock item is stored in"
msgstr ""
-#: stock/models.py:502 stock/templates/stock/item_base.html:298
+#: stock/models.py:502 stock/templates/stock/item_base.html:300
msgid "Installed In"
msgstr ""
@@ -5733,7 +5806,7 @@ msgstr ""
msgid "Serialized stock cannot be merged"
msgstr ""
-#: stock/models.py:1214 stock/serializers.py:775
+#: stock/models.py:1214 stock/serializers.py:832
msgid "Duplicate stock items"
msgstr ""
@@ -5769,7 +5842,7 @@ msgstr ""
msgid "Test name"
msgstr ""
-#: stock/models.py:1983 templates/js/translated/table_filters.js:271
+#: stock/models.py:1983
msgid "Test result"
msgstr ""
@@ -5806,7 +5879,7 @@ msgstr ""
msgid "Enter serial numbers for new items"
msgstr "Entrez les numéros de série pour les nouveaux articles"
-#: stock/serializers.py:326 stock/serializers.py:732 stock/serializers.py:973
+#: stock/serializers.py:326 stock/serializers.py:789 stock/serializers.py:1030
msgid "Destination stock location"
msgstr ""
@@ -5818,63 +5891,79 @@ msgstr ""
msgid "Serial numbers cannot be assigned to this part"
msgstr "Les numéros de série ne peuvent pas être assignés à cette pièce"
-#: stock/serializers.py:589
+#: stock/serializers.py:363 stock/views.py:1108
+msgid "Serial numbers already exist"
+msgstr "Les numéros de série existent déjà"
+
+#: stock/serializers.py:405
+msgid "Select stock item to install"
+msgstr ""
+
+#: stock/serializers.py:421
+msgid "Stock item is unavailable"
+msgstr ""
+
+#: stock/serializers.py:428
+msgid "Selected part is not in the Bill of Materials"
+msgstr ""
+
+#: stock/serializers.py:646
msgid "Part must be salable"
msgstr ""
-#: stock/serializers.py:593
+#: stock/serializers.py:650
msgid "Item is allocated to a sales order"
msgstr ""
-#: stock/serializers.py:597
+#: stock/serializers.py:654
msgid "Item is allocated to a build order"
msgstr ""
-#: stock/serializers.py:627
+#: stock/serializers.py:684
msgid "Customer to assign stock items"
msgstr ""
-#: stock/serializers.py:633
+#: stock/serializers.py:690
msgid "Selected company is not a customer"
msgstr ""
-#: stock/serializers.py:641
+#: stock/serializers.py:698
msgid "Stock assignment notes"
msgstr ""
-#: stock/serializers.py:651 stock/serializers.py:881
+#: stock/serializers.py:708 stock/serializers.py:938
msgid "A list of stock items must be provided"
msgstr ""
-#: stock/serializers.py:739
+#: stock/serializers.py:796
msgid "Stock merging notes"
msgstr ""
-#: stock/serializers.py:744
+#: stock/serializers.py:801
msgid "Allow mismatched suppliers"
msgstr ""
-#: stock/serializers.py:745
+#: stock/serializers.py:802
msgid "Allow stock items with different supplier parts to be merged"
msgstr ""
-#: stock/serializers.py:750
+#: stock/serializers.py:807
msgid "Allow mismatched status"
msgstr ""
-#: stock/serializers.py:751
+#: stock/serializers.py:808
msgid "Allow stock items with different status codes to be merged"
msgstr ""
-#: stock/serializers.py:761
+#: stock/serializers.py:818
msgid "At least two stock items must be provided"
msgstr ""
-#: stock/serializers.py:843
+#: stock/serializers.py:900
msgid "StockItem primary key value"
msgstr ""
-#: stock/serializers.py:871
+#: stock/serializers.py:928
msgid "Stock transaction notes"
msgstr ""
@@ -5919,22 +6008,14 @@ msgstr ""
msgid "Installed Stock Items"
msgstr ""
-#: stock/templates/stock/item.html:154 stock/views.py:482
+#: stock/templates/stock/item.html:154 templates/js/translated/stock.js:3018
msgid "Install Stock Item"
msgstr ""
-#: stock/templates/stock/item.html:309 stock/templates/stock/item.html:334
+#: stock/templates/stock/item.html:304 templates/js/translated/stock.js:1480
msgid "Add Test Result"
msgstr ""
-#: stock/templates/stock/item.html:354
-msgid "Edit Test Result"
-msgstr ""
-
-#: stock/templates/stock/item.html:368
-msgid "Delete Test Result"
-msgstr ""
-
#: stock/templates/stock/item_base.html:42
#: templates/js/translated/barcode.js:330
#: templates/js/translated/barcode.js:335
@@ -5995,129 +6076,129 @@ msgstr ""
msgid "Uninstall"
msgstr ""
-#: stock/templates/stock/item_base.html:101
+#: stock/templates/stock/item_base.html:102
msgid "Install stock item"
msgstr ""
-#: stock/templates/stock/item_base.html:101
+#: stock/templates/stock/item_base.html:102
msgid "Install"
msgstr ""
-#: stock/templates/stock/item_base.html:115
+#: stock/templates/stock/item_base.html:117
msgid "Convert to variant"
msgstr ""
-#: stock/templates/stock/item_base.html:118
+#: stock/templates/stock/item_base.html:120
msgid "Duplicate stock item"
msgstr ""
-#: stock/templates/stock/item_base.html:120
+#: stock/templates/stock/item_base.html:122
msgid "Edit stock item"
msgstr ""
-#: stock/templates/stock/item_base.html:123
+#: stock/templates/stock/item_base.html:125
msgid "Delete stock item"
msgstr ""
-#: stock/templates/stock/item_base.html:161
+#: stock/templates/stock/item_base.html:163
msgid "previous page"
msgstr ""
-#: stock/templates/stock/item_base.html:161
+#: stock/templates/stock/item_base.html:163
msgid "Navigate to previous serial number"
msgstr "Accéder au numéro de série précédent"
-#: stock/templates/stock/item_base.html:170
+#: stock/templates/stock/item_base.html:172
msgid "next page"
msgstr ""
-#: stock/templates/stock/item_base.html:170
+#: stock/templates/stock/item_base.html:172
msgid "Navigate to next serial number"
msgstr "Accéder au numéro de série suivant"
-#: stock/templates/stock/item_base.html:197
+#: stock/templates/stock/item_base.html:199
#, python-format
msgid "This StockItem expired on %(item.expiry_date)s"
msgstr ""
-#: stock/templates/stock/item_base.html:197
+#: stock/templates/stock/item_base.html:199
#: templates/js/translated/table_filters.js:252
msgid "Expired"
msgstr ""
-#: stock/templates/stock/item_base.html:199
+#: stock/templates/stock/item_base.html:201
#, python-format
msgid "This StockItem expires on %(item.expiry_date)s"
msgstr ""
-#: stock/templates/stock/item_base.html:199
+#: stock/templates/stock/item_base.html:201
#: templates/js/translated/table_filters.js:258
msgid "Stale"
msgstr ""
-#: stock/templates/stock/item_base.html:206
-#: templates/js/translated/stock.js:1722
+#: stock/templates/stock/item_base.html:208
+#: templates/js/translated/stock.js:1846
msgid "Last Updated"
msgstr ""
-#: stock/templates/stock/item_base.html:211
+#: stock/templates/stock/item_base.html:213
msgid "Last Stocktake"
msgstr ""
-#: stock/templates/stock/item_base.html:215
+#: stock/templates/stock/item_base.html:217
msgid "No stocktake performed"
msgstr ""
-#: stock/templates/stock/item_base.html:233
+#: stock/templates/stock/item_base.html:235
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:240
+#: stock/templates/stock/item_base.html:242
msgid "This stock item is in production and cannot be edited."
msgstr ""
-#: stock/templates/stock/item_base.html:241
+#: stock/templates/stock/item_base.html:243
msgid "Edit the stock item from the build view."
msgstr ""
-#: stock/templates/stock/item_base.html:254
+#: stock/templates/stock/item_base.html:256
msgid "This stock item has not passed all required tests"
msgstr ""
-#: stock/templates/stock/item_base.html:262
+#: stock/templates/stock/item_base.html:264
msgid "This stock item is allocated to Sales Order"
msgstr ""
-#: stock/templates/stock/item_base.html:270
+#: stock/templates/stock/item_base.html:272
msgid "This stock item is allocated to Build Order"
msgstr ""
-#: stock/templates/stock/item_base.html:276
+#: stock/templates/stock/item_base.html:278
msgid "This stock item is serialized - it has a unique serial number and the quantity cannot be adjusted."
msgstr "Cet article de stock est sérialisé - il a un numéro de série unique et la quantité ne peut pas être ajustée."
-#: stock/templates/stock/item_base.html:317
-#: templates/js/translated/build.js:1095
+#: stock/templates/stock/item_base.html:319
+#: templates/js/translated/build.js:1317
msgid "No location set"
msgstr ""
-#: stock/templates/stock/item_base.html:324
+#: stock/templates/stock/item_base.html:326
msgid "Barcode Identifier"
msgstr ""
-#: stock/templates/stock/item_base.html:366
+#: stock/templates/stock/item_base.html:368
msgid "Parent Item"
msgstr ""
-#: stock/templates/stock/item_base.html:384
+#: stock/templates/stock/item_base.html:386
msgid "No manufacturer set"
msgstr ""
-#: stock/templates/stock/item_base.html:409
+#: stock/templates/stock/item_base.html:411
msgid "Tests"
msgstr ""
-#: stock/templates/stock/item_base.html:499
+#: stock/templates/stock/item_base.html:492
msgid "Edit Stock Status"
msgstr ""
@@ -6130,39 +6211,6 @@ msgstr ""
msgid "This will remove %(qty)s units of %(full_name)s from stock."
msgstr ""
-#: stock/templates/stock/item_install.html:8
-msgid "Install another Stock Item into this item."
-msgstr ""
-
-#: stock/templates/stock/item_install.html:11
-#: stock/templates/stock/item_install.html:24
-msgid "Stock items can only be installed if they meet the following criteria"
-msgstr ""
-
-#: stock/templates/stock/item_install.html:14
-msgid "The Stock Item links to a Part which is in the BOM for this Stock Item"
-msgstr ""
-
-#: stock/templates/stock/item_install.html:15
-msgid "The Stock Item is currently in stock"
-msgstr ""
-
-#: stock/templates/stock/item_install.html:16
-msgid "The Stock Item is serialized and does not belong to another item"
-msgstr ""
-
-#: stock/templates/stock/item_install.html:21
-msgid "Install this Stock Item in another stock item."
-msgstr ""
-
-#: stock/templates/stock/item_install.html:27
-msgid "The part associated to this Stock Item belongs to another part's BOM"
-msgstr ""
-
-#: stock/templates/stock/item_install.html:28
-msgid "This Stock Item is serialized and does not belong to another item"
-msgstr ""
-
#: stock/templates/stock/item_serialize.html:5
msgid "Create serialized items from this stock item."
msgstr ""
@@ -6247,7 +6295,7 @@ msgstr ""
msgid "The following stock items will be uninstalled"
msgstr ""
-#: stock/templates/stock/stockitem_convert.html:7 stock/views.py:879
+#: stock/templates/stock/stockitem_convert.html:7 stock/views.py:730
msgid "Convert Stock Item"
msgstr ""
@@ -6268,11 +6316,11 @@ msgstr ""
msgid "Are you sure you want to delete this stock tracking entry?"
msgstr ""
-#: stock/views.py:162 templates/js/translated/stock.js:139
+#: stock/views.py:162 templates/js/translated/stock.js:140
msgid "Edit Stock Location"
msgstr ""
-#: stock/views.py:269 stock/views.py:858 stock/views.py:984 stock/views.py:1266
+#: stock/views.py:269 stock/views.py:709 stock/views.py:835 stock/views.py:1117
msgid "Owner is required (ownership control is enabled)"
msgstr ""
@@ -6300,59 +6348,63 @@ msgstr ""
msgid "Confirm test data deletion"
msgstr ""
+#: stock/views.py:352
+msgid "Check the confirmation box"
+msgstr "Cocher la case de confirmation"
+
#: stock/views.py:456
msgid "Stock Item QR Code"
msgstr ""
-#: stock/views.py:630
+#: stock/views.py:481
msgid "Uninstall Stock Items"
msgstr ""
-#: stock/views.py:727 templates/js/translated/stock.js:1074
+#: stock/views.py:578 templates/js/translated/stock.js:1075
msgid "Confirm stock adjustment"
msgstr ""
-#: stock/views.py:738
+#: stock/views.py:589
msgid "Uninstalled stock items"
msgstr ""
-#: stock/views.py:760 templates/js/translated/stock.js:332
+#: stock/views.py:611 templates/js/translated/stock.js:333
msgid "Edit Stock Item"
msgstr ""
-#: stock/views.py:910
+#: stock/views.py:761
msgid "Create new Stock Location"
msgstr ""
-#: stock/views.py:1011
+#: stock/views.py:862
msgid "Create new Stock Item"
msgstr ""
-#: stock/views.py:1153 templates/js/translated/stock.js:312
+#: stock/views.py:1004 templates/js/translated/stock.js:313
msgid "Duplicate Stock Item"
msgstr ""
-#: stock/views.py:1235
+#: stock/views.py:1086
msgid "Quantity cannot be negative"
msgstr ""
-#: stock/views.py:1335
+#: stock/views.py:1186
msgid "Delete Stock Location"
msgstr ""
-#: stock/views.py:1348
+#: stock/views.py:1199
msgid "Delete Stock Item"
msgstr ""
-#: stock/views.py:1359
+#: stock/views.py:1210
msgid "Delete Stock Tracking Entry"
msgstr ""
-#: stock/views.py:1366
+#: stock/views.py:1217
msgid "Edit Stock Tracking Entry"
msgstr ""
-#: stock/views.py:1375
+#: stock/views.py:1226
msgid "Add Stock Tracking Entry"
msgstr ""
@@ -6527,15 +6579,15 @@ msgstr ""
msgid "Part Settings"
msgstr ""
-#: templates/InvenTree/settings/part.html:43
+#: templates/InvenTree/settings/part.html:44
msgid "Part Import"
msgstr ""
-#: templates/InvenTree/settings/part.html:47
+#: templates/InvenTree/settings/part.html:48
msgid "Import Part"
msgstr ""
-#: templates/InvenTree/settings/part.html:61
+#: templates/InvenTree/settings/part.html:62
msgid "Part Parameter Templates"
msgstr ""
@@ -6663,45 +6715,45 @@ msgstr ""
msgid "Report Settings"
msgstr ""
-#: templates/InvenTree/settings/setting.html:30
+#: templates/InvenTree/settings/setting.html:33
msgid "No value set"
msgstr ""
-#: templates/InvenTree/settings/setting.html:41
+#: templates/InvenTree/settings/setting.html:38
msgid "Edit setting"
msgstr ""
-#: templates/InvenTree/settings/settings.html:78
+#: templates/InvenTree/settings/settings.html:115
msgid "Edit Plugin Setting"
msgstr ""
-#: templates/InvenTree/settings/settings.html:80
+#: templates/InvenTree/settings/settings.html:117
msgid "Edit Global Setting"
msgstr ""
-#: templates/InvenTree/settings/settings.html:82
+#: templates/InvenTree/settings/settings.html:119
msgid "Edit User Setting"
msgstr ""
-#: templates/InvenTree/settings/settings.html:171
+#: templates/InvenTree/settings/settings.html:208
msgid "No category parameter templates found"
msgstr ""
-#: templates/InvenTree/settings/settings.html:193
-#: templates/InvenTree/settings/settings.html:292
+#: templates/InvenTree/settings/settings.html:230
+#: templates/InvenTree/settings/settings.html:329
msgid "Edit Template"
msgstr ""
-#: templates/InvenTree/settings/settings.html:194
-#: templates/InvenTree/settings/settings.html:293
+#: templates/InvenTree/settings/settings.html:231
+#: templates/InvenTree/settings/settings.html:330
msgid "Delete Template"
msgstr ""
-#: templates/InvenTree/settings/settings.html:272
+#: templates/InvenTree/settings/settings.html:309
msgid "No part parameter templates found"
msgstr ""
-#: templates/InvenTree/settings/settings.html:276
+#: templates/InvenTree/settings/settings.html:313
msgid "ID"
msgstr ""
@@ -6996,10 +7048,11 @@ msgid "InvenTree Version Information"
msgstr ""
#: templates/about.html:11 templates/about.html:105
-#: templates/js/translated/bom.js:407 templates/js/translated/modals.js:53
-#: templates/js/translated/modals.js:584 templates/js/translated/modals.js:678
-#: templates/js/translated/modals.js:983 templates/modals.html:15
-#: templates/modals.html:27 templates/modals.html:39 templates/modals.html:50
+#: templates/js/translated/bom.js:132 templates/js/translated/bom.js:620
+#: templates/js/translated/modals.js:53 templates/js/translated/modals.js:584
+#: templates/js/translated/modals.js:678 templates/js/translated/modals.js:986
+#: templates/modals.html:15 templates/modals.html:27 templates/modals.html:39
+#: templates/modals.html:50
msgid "Close"
msgstr ""
@@ -7275,14 +7328,14 @@ msgid "The following parts are low on required stock"
msgstr ""
#: templates/email/build_order_required_stock.html:18
-#: templates/js/translated/bom.js:1117
+#: templates/js/translated/bom.js:1335
msgid "Required Quantity"
msgstr ""
#: templates/email/build_order_required_stock.html:19
#: templates/email/low_stock_notification.html:18
-#: templates/js/translated/bom.js:591 templates/js/translated/build.js:1189
-#: templates/js/translated/build.js:1810
+#: templates/js/translated/bom.js:804 templates/js/translated/build.js:1411
+#: templates/js/translated/build.js:2048
#: templates/js/translated/table_filters.js:178
msgid "Available"
msgstr "Disponible"
@@ -7325,11 +7378,11 @@ msgstr "Le serveur distant doit être accessible"
msgid "Remote image must not exceed maximum allowable file size"
msgstr "L'image distante ne doit pas excéder la taille maximale autorisée de fichier"
-#: templates/js/translated/api.js:185 templates/js/translated/modals.js:1053
+#: templates/js/translated/api.js:185 templates/js/translated/modals.js:1056
msgid "No Response"
msgstr "Aucune réponse"
-#: templates/js/translated/api.js:186 templates/js/translated/modals.js:1054
+#: templates/js/translated/api.js:186 templates/js/translated/modals.js:1057
msgid "No response from the InvenTree server"
msgstr "Aucune réponse du serveur InvenTree"
@@ -7341,27 +7394,27 @@ msgstr "Erreur 400: Mauvaise requête"
msgid "API request returned error code 400"
msgstr "La requête de l'API a retourné le code d'erreur 400"
-#: templates/js/translated/api.js:197 templates/js/translated/modals.js:1063
+#: templates/js/translated/api.js:197 templates/js/translated/modals.js:1066
msgid "Error 401: Not Authenticated"
msgstr "Erreur 401: non authentifié"
-#: templates/js/translated/api.js:198 templates/js/translated/modals.js:1064
+#: templates/js/translated/api.js:198 templates/js/translated/modals.js:1067
msgid "Authentication credentials not supplied"
msgstr "Informations d’authentification non fournies"
-#: templates/js/translated/api.js:202 templates/js/translated/modals.js:1068
+#: templates/js/translated/api.js:202 templates/js/translated/modals.js:1071
msgid "Error 403: Permission Denied"
msgstr "Erreur 403: Permission refusée"
-#: templates/js/translated/api.js:203 templates/js/translated/modals.js:1069
+#: templates/js/translated/api.js:203 templates/js/translated/modals.js:1072
msgid "You do not have the required permissions to access this function"
msgstr "Vous n'avez pas les autorisations requises pour accéder à cette fonction"
-#: templates/js/translated/api.js:207 templates/js/translated/modals.js:1073
+#: templates/js/translated/api.js:207 templates/js/translated/modals.js:1076
msgid "Error 404: Resource Not Found"
msgstr "Erreur 404: Ressource introuvable"
-#: templates/js/translated/api.js:208 templates/js/translated/modals.js:1074
+#: templates/js/translated/api.js:208 templates/js/translated/modals.js:1077
msgid "The requested resource could not be located on the server"
msgstr "La ressource demandée n'a pas pu être trouvée sur le serveur"
@@ -7373,11 +7426,11 @@ msgstr "Erreur 405: Méthode non autorisée"
msgid "HTTP method not allowed at URL"
msgstr "Méthode HTTP non autorisée à l'adresse URL"
-#: templates/js/translated/api.js:217 templates/js/translated/modals.js:1078
+#: templates/js/translated/api.js:217 templates/js/translated/modals.js:1081
msgid "Error 408: Timeout"
msgstr "Erreur 408: Délai dépassé"
-#: templates/js/translated/api.js:218 templates/js/translated/modals.js:1079
+#: templates/js/translated/api.js:218 templates/js/translated/modals.js:1082
msgid "Connection timeout while requesting data from server"
msgstr "Délai de connexion dépassé lors de la demande de données depuis le serveur"
@@ -7446,7 +7499,7 @@ msgid "Unknown response from server"
msgstr "Réponse inconnue du serveur"
#: templates/js/translated/barcode.js:140
-#: templates/js/translated/modals.js:1043
+#: templates/js/translated/modals.js:1046
msgid "Invalid server response"
msgstr "Réponse du serveur invalide"
@@ -7474,7 +7527,7 @@ msgstr "Ceci supprimera l'association entre cet article de stock et le code-barr
msgid "Unlink"
msgstr "Délier"
-#: templates/js/translated/barcode.js:397 templates/js/translated/stock.js:1026
+#: templates/js/translated/barcode.js:397 templates/js/translated/stock.js:1027
msgid "Remove stock item"
msgstr "Supprimer l'article de stock"
@@ -7516,327 +7569,369 @@ msgstr "Vérifier dans l'emplacement"
msgid "Barcode does not match a valid location"
msgstr "Le code-barres ne correspond pas à un emplacement valide"
-#: templates/js/translated/bom.js:36
+#: templates/js/translated/bom.js:75
+msgid "Display row data"
+msgstr ""
+
+#: templates/js/translated/bom.js:131
+msgid "Row Data"
+msgstr ""
+
+#: templates/js/translated/bom.js:249
msgid "Download BOM Template"
msgstr "Télécharger le template de la BOM"
-#: templates/js/translated/bom.js:39 templates/js/translated/bom.js:73
-#: templates/js/translated/order.js:369 templates/js/translated/stock.js:518
+#: templates/js/translated/bom.js:252 templates/js/translated/bom.js:286
+#: templates/js/translated/order.js:369 templates/js/translated/stock.js:519
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:519
+#: templates/js/translated/bom.js:253 templates/js/translated/bom.js:287
+#: templates/js/translated/order.js:370 templates/js/translated/stock.js:520
msgid "Select file format"
msgstr "Sélectionner un format de fichier"
-#: templates/js/translated/bom.js:81
+#: templates/js/translated/bom.js:294
msgid "Cascading"
msgstr "En cascade"
-#: templates/js/translated/bom.js:82
+#: templates/js/translated/bom.js:295
msgid "Download cascading / multi-level BOM"
msgstr "Télécharger la BOM en cascade / à plusieurs niveaux"
-#: templates/js/translated/bom.js:87
+#: templates/js/translated/bom.js:300
msgid "Levels"
msgstr "Niveaux"
-#: templates/js/translated/bom.js:88
+#: templates/js/translated/bom.js:301
msgid "Select maximum number of BOM levels to export (0 = all levels)"
msgstr "Sélectionner le nombre maximum de niveaux de BOM à exporter (0 = tous les niveaux)"
-#: templates/js/translated/bom.js:94
+#: templates/js/translated/bom.js:307
msgid "Include Parameter Data"
msgstr "Inclure les données de paramètre"
-#: templates/js/translated/bom.js:95
+#: templates/js/translated/bom.js:308
msgid "Include part parameter data in exported BOM"
msgstr "Inclure les données de paramètre de la pièce dans la BOM exporté"
-#: templates/js/translated/bom.js:100
+#: templates/js/translated/bom.js:313
msgid "Include Stock Data"
msgstr "Inclure les données de stock"
-#: templates/js/translated/bom.js:101
+#: templates/js/translated/bom.js:314
msgid "Include part stock data in exported BOM"
msgstr ""
-#: templates/js/translated/bom.js:106
+#: templates/js/translated/bom.js:319
msgid "Include Manufacturer Data"
msgstr ""
-#: templates/js/translated/bom.js:107
+#: templates/js/translated/bom.js:320
msgid "Include part manufacturer data in exported BOM"
msgstr ""
-#: templates/js/translated/bom.js:112
+#: templates/js/translated/bom.js:325
msgid "Include Supplier Data"
msgstr ""
-#: templates/js/translated/bom.js:113
+#: templates/js/translated/bom.js:326
msgid "Include part supplier data in exported BOM"
msgstr ""
-#: templates/js/translated/bom.js:296
+#: templates/js/translated/bom.js:509
msgid "Remove substitute part"
msgstr ""
-#: templates/js/translated/bom.js:352
+#: templates/js/translated/bom.js:565
msgid "Select and add a new substitute part using the input below"
msgstr ""
-#: templates/js/translated/bom.js:363
+#: templates/js/translated/bom.js:576
msgid "Are you sure you wish to remove this substitute part link?"
msgstr ""
-#: templates/js/translated/bom.js:369
+#: templates/js/translated/bom.js:582
msgid "Remove Substitute Part"
msgstr ""
-#: templates/js/translated/bom.js:408
+#: templates/js/translated/bom.js:621
msgid "Add Substitute"
msgstr ""
-#: templates/js/translated/bom.js:409
+#: templates/js/translated/bom.js:622
msgid "Edit BOM Item Substitutes"
msgstr ""
-#: templates/js/translated/bom.js:528
+#: templates/js/translated/bom.js:741
msgid "Substitutes Available"
msgstr ""
-#: templates/js/translated/bom.js:532 templates/js/translated/build.js:1171
+#: templates/js/translated/bom.js:745 templates/js/translated/build.js:1393
msgid "Variant stock allowed"
msgstr ""
-#: templates/js/translated/bom.js:537
+#: templates/js/translated/bom.js:750
msgid "Open subassembly"
msgstr ""
-#: templates/js/translated/bom.js:609
+#: templates/js/translated/bom.js:822
msgid "Substitutes"
msgstr ""
-#: templates/js/translated/bom.js:624
+#: templates/js/translated/bom.js:837
msgid "Purchase Price Range"
msgstr ""
-#: templates/js/translated/bom.js:631
+#: templates/js/translated/bom.js:844
msgid "Purchase Price Average"
msgstr ""
-#: templates/js/translated/bom.js:680 templates/js/translated/bom.js:769
+#: templates/js/translated/bom.js:893 templates/js/translated/bom.js:982
msgid "View BOM"
msgstr ""
-#: templates/js/translated/bom.js:740
+#: templates/js/translated/bom.js:953
msgid "Validate BOM Item"
msgstr ""
-#: templates/js/translated/bom.js:742
+#: templates/js/translated/bom.js:955
msgid "This line has been validated"
msgstr ""
-#: templates/js/translated/bom.js:744
+#: templates/js/translated/bom.js:957
msgid "Edit substitute parts"
msgstr ""
-#: templates/js/translated/bom.js:746 templates/js/translated/bom.js:920
+#: templates/js/translated/bom.js:959 templates/js/translated/bom.js:1138
msgid "Edit BOM Item"
msgstr ""
-#: templates/js/translated/bom.js:748 templates/js/translated/bom.js:903
+#: templates/js/translated/bom.js:961 templates/js/translated/bom.js:1121
msgid "Delete BOM Item"
msgstr ""
-#: templates/js/translated/bom.js:842 templates/js/translated/build.js:915
+#: templates/js/translated/bom.js:1060 templates/js/translated/build.js:1137
msgid "No BOM items found"
msgstr ""
-#: templates/js/translated/bom.js:898
+#: templates/js/translated/bom.js:1116
msgid "Are you sure you want to delete this BOM item?"
msgstr ""
-#: templates/js/translated/bom.js:1100 templates/js/translated/build.js:1155
+#: templates/js/translated/bom.js:1318 templates/js/translated/build.js:1377
msgid "Required Part"
msgstr ""
-#: templates/js/translated/bom.js:1122
+#: templates/js/translated/bom.js:1340
msgid "Inherited from parent BOM"
msgstr ""
-#: templates/js/translated/build.js:84
+#: templates/js/translated/build.js:85
msgid "Edit Build Order"
msgstr ""
-#: templates/js/translated/build.js:118
+#: templates/js/translated/build.js:119
msgid "Create Build Order"
msgstr ""
-#: templates/js/translated/build.js:139
+#: templates/js/translated/build.js:140
msgid "Build order is ready to be completed"
msgstr ""
-#: templates/js/translated/build.js:144
+#: templates/js/translated/build.js:145
msgid "Build Order is incomplete"
msgstr ""
-#: templates/js/translated/build.js:172
+#: templates/js/translated/build.js:173
msgid "Complete Build Order"
msgstr ""
-#: templates/js/translated/build.js:193
+#: templates/js/translated/build.js:214 templates/js/translated/stock.js:93
+#: templates/js/translated/stock.js:182
+msgid "Next available serial number"
+msgstr "Prochain numéro de série disponible"
+
+#: templates/js/translated/build.js:216 templates/js/translated/stock.js:95
+#: templates/js/translated/stock.js:184
+msgid "Latest serial number"
+msgstr "Dernier numéro de série"
+
+#: templates/js/translated/build.js:225
+msgid "The Bill of Materials contains trackable parts"
+msgstr "La BOM contient des pièces traçables"
+
+#: templates/js/translated/build.js:226
+msgid "Build outputs must be generated individually"
+msgstr ""
+
+#: templates/js/translated/build.js:234
+msgid "Trackable parts can have serial numbers specified"
+msgstr "Les pièces traçables peuvent avoir des numéros de série spécifiés"
+
+#: templates/js/translated/build.js:235
+msgid "Enter serial numbers to generate multiple single build outputs"
+msgstr ""
+
+#: templates/js/translated/build.js:242
+msgid "Create Build Output"
+msgstr ""
+
+#: templates/js/translated/build.js:273
msgid "Allocate stock items to this build output"
msgstr ""
-#: templates/js/translated/build.js:204
+#: templates/js/translated/build.js:284
msgid "Unallocate stock from build output"
msgstr ""
-#: templates/js/translated/build.js:213
+#: templates/js/translated/build.js:293
msgid "Complete build output"
msgstr ""
-#: templates/js/translated/build.js:221
+#: templates/js/translated/build.js:301
msgid "Delete build output"
msgstr ""
-#: templates/js/translated/build.js:244
+#: templates/js/translated/build.js:324
msgid "Are you sure you wish to unallocate stock items from this build?"
msgstr ""
-#: templates/js/translated/build.js:262
+#: templates/js/translated/build.js:342
msgid "Unallocate Stock Items"
msgstr ""
-#: templates/js/translated/build.js:280
+#: templates/js/translated/build.js:360 templates/js/translated/build.js:508
msgid "Select Build Outputs"
msgstr ""
-#: templates/js/translated/build.js:281
+#: templates/js/translated/build.js:361 templates/js/translated/build.js:509
msgid "At least one build output must be selected"
msgstr ""
-#: templates/js/translated/build.js:335
+#: templates/js/translated/build.js:415 templates/js/translated/build.js:563
msgid "Output"
msgstr ""
-#: templates/js/translated/build.js:351
+#: templates/js/translated/build.js:431
msgid "Complete Build Outputs"
msgstr ""
-#: templates/js/translated/build.js:446
+#: templates/js/translated/build.js:576
+msgid "Delete Build Outputs"
+msgstr ""
+
+#: templates/js/translated/build.js:665
msgid "No build order allocations found"
msgstr ""
-#: templates/js/translated/build.js:484 templates/js/translated/order.js:1848
+#: templates/js/translated/build.js:703 templates/js/translated/order.js:1848
msgid "Location not specified"
msgstr ""
-#: templates/js/translated/build.js:663
+#: templates/js/translated/build.js:885
msgid "No active build outputs found"
msgstr ""
-#: templates/js/translated/build.js:1112 templates/js/translated/build.js:1821
+#: templates/js/translated/build.js:1334 templates/js/translated/build.js:2059
#: templates/js/translated/order.js:1982
msgid "Edit stock allocation"
msgstr ""
-#: templates/js/translated/build.js:1114 templates/js/translated/build.js:1822
+#: templates/js/translated/build.js:1336 templates/js/translated/build.js:2060
#: templates/js/translated/order.js:1983
msgid "Delete stock allocation"
msgstr ""
-#: templates/js/translated/build.js:1132
+#: templates/js/translated/build.js:1354
msgid "Edit Allocation"
msgstr ""
-#: templates/js/translated/build.js:1142
+#: templates/js/translated/build.js:1364
msgid "Remove Allocation"
msgstr ""
-#: templates/js/translated/build.js:1167
+#: templates/js/translated/build.js:1389
msgid "Substitute parts available"
msgstr ""
-#: templates/js/translated/build.js:1184
+#: templates/js/translated/build.js:1406
msgid "Quantity Per"
msgstr ""
-#: templates/js/translated/build.js:1194 templates/js/translated/build.js:1420
-#: templates/js/translated/build.js:1817 templates/js/translated/order.js:2227
+#: templates/js/translated/build.js:1416 templates/js/translated/build.js:1656
+#: templates/js/translated/build.js:2055 templates/js/translated/order.js:2227
msgid "Allocated"
msgstr ""
-#: templates/js/translated/build.js:1250 templates/js/translated/order.js:2307
+#: templates/js/translated/build.js:1472 templates/js/translated/order.js:2307
msgid "Build stock"
msgstr ""
-#: templates/js/translated/build.js:1254 templates/stock_table.html:53
+#: templates/js/translated/build.js:1476 templates/stock_table.html:53
msgid "Order stock"
msgstr ""
-#: templates/js/translated/build.js:1257 templates/js/translated/order.js:2300
+#: templates/js/translated/build.js:1479 templates/js/translated/order.js:2300
msgid "Allocate stock"
msgstr ""
-#: templates/js/translated/build.js:1322 templates/js/translated/order.js:1499
+#: templates/js/translated/build.js:1558 templates/js/translated/order.js:1499
msgid "Specify stock allocation quantity"
msgstr ""
-#: templates/js/translated/build.js:1393 templates/js/translated/label.js:134
+#: templates/js/translated/build.js:1629 templates/js/translated/label.js:134
#: templates/js/translated/order.js:1550 templates/js/translated/report.js:225
msgid "Select Parts"
msgstr ""
-#: templates/js/translated/build.js:1394 templates/js/translated/order.js:1551
+#: templates/js/translated/build.js:1630 templates/js/translated/order.js:1551
msgid "You must select at least one part to allocate"
msgstr ""
-#: templates/js/translated/build.js:1408 templates/js/translated/order.js:1565
+#: templates/js/translated/build.js:1644 templates/js/translated/order.js:1565
msgid "Select source location (leave blank to take from all locations)"
msgstr ""
-#: templates/js/translated/build.js:1437 templates/js/translated/order.js:1600
+#: templates/js/translated/build.js:1673 templates/js/translated/order.js:1600
msgid "Confirm stock allocation"
msgstr ""
-#: templates/js/translated/build.js:1438
+#: templates/js/translated/build.js:1674
msgid "Allocate Stock Items to Build Order"
msgstr ""
-#: templates/js/translated/build.js:1449 templates/js/translated/order.js:1613
+#: templates/js/translated/build.js:1685 templates/js/translated/order.js:1613
msgid "No matching stock locations"
msgstr ""
-#: templates/js/translated/build.js:1519 templates/js/translated/order.js:1690
+#: templates/js/translated/build.js:1757 templates/js/translated/order.js:1690
msgid "No matching stock items"
msgstr ""
-#: templates/js/translated/build.js:1637
+#: templates/js/translated/build.js:1875
msgid "No builds matching query"
msgstr ""
-#: templates/js/translated/build.js:1654 templates/js/translated/part.js:1213
-#: templates/js/translated/part.js:1624 templates/js/translated/stock.js:1520
-#: templates/js/translated/stock.js:2479
+#: templates/js/translated/build.js:1892 templates/js/translated/part.js:1213
+#: templates/js/translated/part.js:1624 templates/js/translated/stock.js:1644
+#: templates/js/translated/stock.js:2603
msgid "Select"
msgstr ""
-#: templates/js/translated/build.js:1674
+#: templates/js/translated/build.js:1912
msgid "Build order is overdue"
msgstr ""
-#: templates/js/translated/build.js:1735 templates/js/translated/stock.js:2698
+#: templates/js/translated/build.js:1973 templates/js/translated/stock.js:2822
msgid "No user information"
msgstr ""
-#: templates/js/translated/build.js:1747
+#: templates/js/translated/build.js:1985
msgid "No information"
msgstr ""
-#: templates/js/translated/build.js:1798
+#: templates/js/translated/build.js:2036
msgid "No parts allocated for"
msgstr ""
@@ -7966,48 +8061,60 @@ msgstr ""
msgid "Create filter"
msgstr ""
-#: templates/js/translated/forms.js:350 templates/js/translated/forms.js:365
-#: templates/js/translated/forms.js:379 templates/js/translated/forms.js:393
+#: templates/js/translated/forms.js:351 templates/js/translated/forms.js:366
+#: templates/js/translated/forms.js:380 templates/js/translated/forms.js:394
msgid "Action Prohibited"
msgstr ""
-#: templates/js/translated/forms.js:352
+#: templates/js/translated/forms.js:353
msgid "Create operation not allowed"
msgstr ""
-#: templates/js/translated/forms.js:367
+#: templates/js/translated/forms.js:368
msgid "Update operation not allowed"
msgstr ""
-#: templates/js/translated/forms.js:381
+#: templates/js/translated/forms.js:382
msgid "Delete operation not allowed"
msgstr ""
-#: templates/js/translated/forms.js:395
+#: templates/js/translated/forms.js:396
msgid "View operation not allowed"
msgstr ""
-#: templates/js/translated/forms.js:680
+#: templates/js/translated/forms.js:681
msgid "Enter a valid number"
msgstr ""
-#: templates/js/translated/forms.js:1082 templates/modals.html:19
+#: templates/js/translated/forms.js:1129 templates/modals.html:19
#: templates/modals.html:43
msgid "Form errors exist"
msgstr ""
-#: templates/js/translated/forms.js:1487
+#: templates/js/translated/forms.js:1558
msgid "No results found"
msgstr ""
-#: templates/js/translated/forms.js:1691
+#: templates/js/translated/forms.js:1768
msgid "Searching"
msgstr ""
-#: templates/js/translated/forms.js:1930
+#: templates/js/translated/forms.js:2013
msgid "Clear input"
msgstr ""
+#: templates/js/translated/forms.js:2479
+msgid "File Column"
+msgstr ""
+
+#: templates/js/translated/forms.js:2479
+msgid "Field Name"
+msgstr ""
+
+#: templates/js/translated/forms.js:2491
+msgid "Select Columns"
+msgstr ""
+
#: templates/js/translated/helpers.js:19
msgid "YES"
msgstr ""
@@ -8017,7 +8124,7 @@ msgid "NO"
msgstr ""
#: templates/js/translated/label.js:29 templates/js/translated/report.js:118
-#: templates/js/translated/stock.js:1050
+#: templates/js/translated/stock.js:1051
msgid "Select Stock Items"
msgstr ""
@@ -8072,7 +8179,7 @@ msgid "Cancel"
msgstr "Annuler"
#: templates/js/translated/modals.js:77 templates/js/translated/modals.js:119
-#: templates/js/translated/modals.js:677 templates/js/translated/modals.js:982
+#: templates/js/translated/modals.js:677 templates/js/translated/modals.js:985
#: templates/modals.html:28 templates/modals.html:51
msgid "Submit"
msgstr ""
@@ -8097,31 +8204,31 @@ msgstr ""
msgid "Loading Data"
msgstr ""
-#: templates/js/translated/modals.js:934
+#: templates/js/translated/modals.js:937
msgid "Invalid response from server"
msgstr ""
-#: templates/js/translated/modals.js:934
+#: templates/js/translated/modals.js:937
msgid "Form data missing from server response"
msgstr ""
-#: templates/js/translated/modals.js:946
+#: templates/js/translated/modals.js:949
msgid "Error posting form data"
msgstr ""
-#: templates/js/translated/modals.js:1043
+#: templates/js/translated/modals.js:1046
msgid "JSON response missing form data"
msgstr ""
-#: templates/js/translated/modals.js:1058
+#: templates/js/translated/modals.js:1061
msgid "Error 400: Bad Request"
msgstr ""
-#: templates/js/translated/modals.js:1059
+#: templates/js/translated/modals.js:1062
msgid "Server returned error code 400"
msgstr ""
-#: templates/js/translated/modals.js:1082
+#: templates/js/translated/modals.js:1085
msgid "Error requesting form data"
msgstr ""
@@ -8141,10 +8248,6 @@ msgstr ""
msgid "Build ID"
msgstr ""
-#: templates/js/translated/model_renderers.js:182
-msgid "Part ID"
-msgstr ""
-
#: templates/js/translated/model_renderers.js:249
#: templates/js/translated/model_renderers.js:270
msgid "Order ID"
@@ -8210,7 +8313,7 @@ msgstr ""
msgid "Quantity to receive"
msgstr ""
-#: templates/js/translated/order.js:520 templates/js/translated/stock.js:2131
+#: templates/js/translated/order.js:520 templates/js/translated/stock.js:2255
msgid "Stock Status"
msgstr ""
@@ -8344,7 +8447,7 @@ msgid "Delete Stock Allocation"
msgstr ""
#: templates/js/translated/order.js:1959 templates/js/translated/order.js:2048
-#: templates/js/translated/stock.js:1436
+#: templates/js/translated/stock.js:1560
msgid "Shipped to customer"
msgstr "Livré au client"
@@ -8545,12 +8648,12 @@ msgid "No category"
msgstr "Aucune catégorie"
#: templates/js/translated/part.js:1296
-#: templates/js/translated/table_filters.js:430
+#: templates/js/translated/table_filters.js:425
msgid "Low stock"
msgstr "Stock bas"
#: templates/js/translated/part.js:1387 templates/js/translated/part.js:1559
-#: templates/js/translated/stock.js:2440
+#: templates/js/translated/stock.js:2564
msgid "Display as list"
msgstr "Afficher sous forme de liste"
@@ -8558,7 +8661,7 @@ msgstr "Afficher sous forme de liste"
msgid "Display as grid"
msgstr "Afficher sous forme de grille"
-#: templates/js/translated/part.js:1578 templates/js/translated/stock.js:2459
+#: templates/js/translated/part.js:1578 templates/js/translated/stock.js:2583
msgid "Display as tree"
msgstr "Afficher sous forme d'arborescence"
@@ -8566,7 +8669,7 @@ msgstr "Afficher sous forme d'arborescence"
msgid "Subscribed category"
msgstr ""
-#: templates/js/translated/part.js:1656 templates/js/translated/stock.js:2503
+#: templates/js/translated/part.js:1656 templates/js/translated/stock.js:2627
msgid "Path"
msgstr "Chemin d'accès"
@@ -8574,11 +8677,12 @@ msgstr "Chemin d'accès"
msgid "No test templates matching query"
msgstr ""
-#: templates/js/translated/part.js:1751 templates/js/translated/stock.js:1242
+#: templates/js/translated/part.js:1751 templates/js/translated/stock.js:1271
msgid "Edit test result"
msgstr "Modifier le résultat du test"
-#: templates/js/translated/part.js:1752 templates/js/translated/stock.js:1243
+#: templates/js/translated/part.js:1752 templates/js/translated/stock.js:1272
+#: templates/js/translated/stock.js:1518
msgid "Delete test result"
msgstr "Supprimer le résultat du test"
@@ -8687,347 +8791,375 @@ msgstr ""
msgid "Sales Order(s) must be selected before printing report"
msgstr ""
-#: templates/js/translated/stock.js:74
+#: templates/js/translated/stock.js:75
msgid "Serialize Stock Item"
msgstr ""
-#: templates/js/translated/stock.js:92 templates/js/translated/stock.js:181
-msgid "Next available serial number"
-msgstr "Prochain numéro de série disponible"
-
-#: templates/js/translated/stock.js:94 templates/js/translated/stock.js:183
-msgid "Latest serial number"
-msgstr "Dernier numéro de série"
-
-#: templates/js/translated/stock.js:102
+#: templates/js/translated/stock.js:103
msgid "Confirm Stock Serialization"
msgstr ""
-#: templates/js/translated/stock.js:111
+#: templates/js/translated/stock.js:112
msgid "Parent stock location"
msgstr ""
-#: templates/js/translated/stock.js:154
+#: templates/js/translated/stock.js:155
msgid "New Stock Location"
msgstr ""
-#: templates/js/translated/stock.js:194
+#: templates/js/translated/stock.js:195
msgid "This part cannot be serialized"
msgstr ""
-#: templates/js/translated/stock.js:233
+#: templates/js/translated/stock.js:234
msgid "Enter initial quantity for this stock item"
msgstr ""
-#: templates/js/translated/stock.js:239
+#: templates/js/translated/stock.js:240
msgid "Enter serial numbers for new stock (or leave blank)"
msgstr "Entrez les numéros de série pour le nouveau stock (ou laisser vide)"
-#: templates/js/translated/stock.js:382
+#: templates/js/translated/stock.js:383
msgid "Created new stock item"
msgstr ""
-#: templates/js/translated/stock.js:395
+#: templates/js/translated/stock.js:396
msgid "Created multiple stock items"
msgstr ""
-#: templates/js/translated/stock.js:420
+#: templates/js/translated/stock.js:421
msgid "Find Serial Number"
msgstr "Trouver un numéro de série"
-#: templates/js/translated/stock.js:424 templates/js/translated/stock.js:425
+#: templates/js/translated/stock.js:425 templates/js/translated/stock.js:426
msgid "Enter serial number"
msgstr "Entrer le numéro de série"
-#: templates/js/translated/stock.js:441
+#: templates/js/translated/stock.js:442
msgid "Enter a serial number"
msgstr "Entrer un numéro de série"
-#: templates/js/translated/stock.js:461
+#: templates/js/translated/stock.js:462
msgid "No matching serial number"
msgstr "Aucun numéro de série correspondant"
-#: templates/js/translated/stock.js:470
+#: templates/js/translated/stock.js:471
msgid "More than one matching result found"
msgstr "Plus d'un résultat correspondant trouvé"
-#: templates/js/translated/stock.js:515
+#: templates/js/translated/stock.js:516
msgid "Export Stock"
msgstr "Exporter le stock"
-#: templates/js/translated/stock.js:526
+#: templates/js/translated/stock.js:527
msgid "Include Sublocations"
msgstr "Inclure les sous-emplacements"
-#: templates/js/translated/stock.js:527
+#: templates/js/translated/stock.js:528
msgid "Include stock items in sublocations"
msgstr "Inclure les articles en stock dans les sous-emplacements"
-#: templates/js/translated/stock.js:636
+#: templates/js/translated/stock.js:637
msgid "Confirm stock assignment"
msgstr "Confirmer l'assignation de stock"
-#: templates/js/translated/stock.js:637
+#: templates/js/translated/stock.js:638
msgid "Assign Stock to Customer"
msgstr "Assigner le stock au client"
-#: templates/js/translated/stock.js:714
+#: templates/js/translated/stock.js:715
msgid "Warning: Merge operation cannot be reversed"
msgstr "Attention : l'opération de fusion est irréversible"
-#: templates/js/translated/stock.js:715
+#: templates/js/translated/stock.js:716
msgid "Some information will be lost when merging stock items"
msgstr "Certaines informations seront perdues lors de la fusion des articles en stock"
-#: templates/js/translated/stock.js:717
+#: templates/js/translated/stock.js:718
msgid "Stock transaction history will be deleted for merged items"
msgstr "L'historique des transactions de stock sera supprimé pour les éléments fusionnés"
-#: templates/js/translated/stock.js:718
+#: templates/js/translated/stock.js:719
msgid "Supplier part information will be deleted for merged items"
msgstr "Les informations sur la pièce du fournisseur seront supprimées pour les éléments fusionnés"
-#: templates/js/translated/stock.js:804
+#: templates/js/translated/stock.js:805
msgid "Confirm stock item merge"
msgstr "Confirmer la fusion de l'article en stock"
-#: templates/js/translated/stock.js:805
+#: templates/js/translated/stock.js:806
msgid "Merge Stock Items"
msgstr "Fusionner les articles en stock"
-#: templates/js/translated/stock.js:900
+#: templates/js/translated/stock.js:901
msgid "Transfer Stock"
msgstr "Transférer le stock"
-#: templates/js/translated/stock.js:901
+#: templates/js/translated/stock.js:902
msgid "Move"
msgstr "Transférer"
-#: templates/js/translated/stock.js:907
+#: templates/js/translated/stock.js:908
msgid "Count Stock"
msgstr "Compter le stock"
-#: templates/js/translated/stock.js:908
+#: templates/js/translated/stock.js:909
msgid "Count"
msgstr "Compter"
-#: templates/js/translated/stock.js:912
+#: templates/js/translated/stock.js:913
msgid "Remove Stock"
msgstr "Supprimer du stock"
-#: templates/js/translated/stock.js:913
+#: templates/js/translated/stock.js:914
msgid "Take"
msgstr "Supprimer"
-#: templates/js/translated/stock.js:917
+#: templates/js/translated/stock.js:918
msgid "Add Stock"
msgstr "Ajouter du stock"
-#: templates/js/translated/stock.js:918 users/models.py:208
+#: templates/js/translated/stock.js:919 users/models.py:213
msgid "Add"
msgstr "Ajouter"
-#: templates/js/translated/stock.js:922 templates/stock_table.html:58
+#: templates/js/translated/stock.js:923 templates/stock_table.html:58
msgid "Delete Stock"
msgstr "Supprimer le stock"
-#: templates/js/translated/stock.js:1011
+#: templates/js/translated/stock.js:1012
msgid "Quantity cannot be adjusted for serialized stock"
msgstr "La quantité ne peut pas être ajustée pour un stock sérialisé"
-#: templates/js/translated/stock.js:1011
+#: templates/js/translated/stock.js:1012
msgid "Specify stock quantity"
msgstr "Spécifiez la quantité du stock"
-#: templates/js/translated/stock.js:1051
+#: templates/js/translated/stock.js:1052
msgid "You must select at least one available stock item"
msgstr "Vous devez sélectionner au moins un article en stock disponible"
-#: templates/js/translated/stock.js:1209
+#: templates/js/translated/stock.js:1210
msgid "PASS"
msgstr "RÉUSSI"
-#: templates/js/translated/stock.js:1211
+#: templates/js/translated/stock.js:1212
msgid "FAIL"
msgstr "ÉCHEC"
-#: templates/js/translated/stock.js:1216
+#: templates/js/translated/stock.js:1217
msgid "NO RESULT"
msgstr "AUCUN RÉSULTAT"
-#: templates/js/translated/stock.js:1238
+#: templates/js/translated/stock.js:1264
+msgid "Pass test"
+msgstr ""
+
+#: templates/js/translated/stock.js:1267
msgid "Add test result"
msgstr "Ajouter un résultat de test"
-#: templates/js/translated/stock.js:1264
+#: templates/js/translated/stock.js:1293
msgid "No test results found"
msgstr "Aucun résultat de test trouvé"
-#: templates/js/translated/stock.js:1321
+#: templates/js/translated/stock.js:1349
msgid "Test Date"
msgstr "Date du test"
-#: templates/js/translated/stock.js:1428
+#: templates/js/translated/stock.js:1501
+msgid "Edit Test Result"
+msgstr ""
+
+#: templates/js/translated/stock.js:1523
+msgid "Delete Test Result"
+msgstr ""
+
+#: templates/js/translated/stock.js:1552
msgid "In production"
msgstr "En production"
-#: templates/js/translated/stock.js:1432
+#: templates/js/translated/stock.js:1556
msgid "Installed in Stock Item"
msgstr "Article en stock installé dans un autre article en stock"
-#: templates/js/translated/stock.js:1440
+#: templates/js/translated/stock.js:1564
msgid "Assigned to Sales Order"
msgstr "Assigné à une commande de vente"
-#: templates/js/translated/stock.js:1446
+#: templates/js/translated/stock.js:1570
msgid "No stock location set"
msgstr "Aucun emplacement de stock défini"
-#: templates/js/translated/stock.js:1604
+#: templates/js/translated/stock.js:1728
msgid "Stock item is in production"
msgstr "L'article de stock est en production"
-#: templates/js/translated/stock.js:1609
+#: templates/js/translated/stock.js:1733
msgid "Stock item assigned to sales order"
msgstr "L'article en stock a été assigné à une commande de vente"
-#: templates/js/translated/stock.js:1612
+#: templates/js/translated/stock.js:1736
msgid "Stock item assigned to customer"
msgstr "L'article en stock a été assigné à un client"
-#: templates/js/translated/stock.js:1616
+#: templates/js/translated/stock.js:1740
msgid "Stock item has expired"
msgstr "L'article en stock a expiré"
-#: templates/js/translated/stock.js:1618
+#: templates/js/translated/stock.js:1742
msgid "Stock item will expire soon"
msgstr "L'article en stock va bientôt expirer"
-#: templates/js/translated/stock.js:1624
+#: templates/js/translated/stock.js:1748
msgid "Serialized stock item has been allocated"
msgstr "L'article de stock sérialisé a été alloué"
-#: templates/js/translated/stock.js:1626
+#: templates/js/translated/stock.js:1750
msgid "Stock item has been fully allocated"
msgstr "L'article de stock a été complètement alloué"
-#: templates/js/translated/stock.js:1628
+#: templates/js/translated/stock.js:1752
msgid "Stock item has been partially allocated"
msgstr "L'article de stock a été partiellement alloué"
-#: templates/js/translated/stock.js:1633
+#: templates/js/translated/stock.js:1757
msgid "Stock item has been installed in another item"
msgstr "L'article en stock a été installé dans un autre article"
-#: templates/js/translated/stock.js:1640
+#: templates/js/translated/stock.js:1764
msgid "Stock item has been rejected"
msgstr "L'article de stock a été rejeté"
-#: templates/js/translated/stock.js:1642
+#: templates/js/translated/stock.js:1766
msgid "Stock item is lost"
msgstr "L'article de stock est perdu"
-#: templates/js/translated/stock.js:1644
+#: templates/js/translated/stock.js:1768
msgid "Stock item is destroyed"
msgstr "L'article de stock est détruit"
-#: templates/js/translated/stock.js:1648
+#: templates/js/translated/stock.js:1772
#: templates/js/translated/table_filters.js:188
msgid "Depleted"
msgstr "Epuisé"
-#: templates/js/translated/stock.js:1698
+#: templates/js/translated/stock.js:1822
msgid "Stocktake"
msgstr "Prise d'inventaire"
-#: templates/js/translated/stock.js:1771
+#: templates/js/translated/stock.js:1895
msgid "Supplier part not specified"
msgstr "Pièce de fournisseur non précisée"
-#: templates/js/translated/stock.js:1809
+#: templates/js/translated/stock.js:1933
msgid "No stock items matching query"
msgstr "Aucun article de stock ne correspond à la requête"
-#: templates/js/translated/stock.js:1830 templates/js/translated/stock.js:1878
+#: templates/js/translated/stock.js:1954 templates/js/translated/stock.js:2002
msgid "items"
msgstr "articles"
-#: templates/js/translated/stock.js:1918
+#: templates/js/translated/stock.js:2042
msgid "batches"
msgstr "lots"
-#: templates/js/translated/stock.js:1945
+#: templates/js/translated/stock.js:2069
msgid "locations"
msgstr "emplacements"
-#: templates/js/translated/stock.js:1947
+#: templates/js/translated/stock.js:2071
msgid "Undefined location"
msgstr "Emplacement indéfini"
-#: templates/js/translated/stock.js:2146
+#: templates/js/translated/stock.js:2270
msgid "Set Stock Status"
msgstr "Définir l'état du stock"
-#: templates/js/translated/stock.js:2160
+#: templates/js/translated/stock.js:2284
msgid "Select Status Code"
msgstr "Sélectionner le code de statut"
-#: templates/js/translated/stock.js:2161
+#: templates/js/translated/stock.js:2285
msgid "Status code must be selected"
msgstr "Le code de statut doit être sélectionné"
-#: templates/js/translated/stock.js:2340
+#: templates/js/translated/stock.js:2464
msgid "Allocated Quantity"
msgstr "Quantité Allouée"
-#: templates/js/translated/stock.js:2535
+#: templates/js/translated/stock.js:2659
msgid "Invalid date"
msgstr "Date invalide"
-#: templates/js/translated/stock.js:2557
+#: templates/js/translated/stock.js:2681
msgid "Details"
msgstr "Détails"
-#: templates/js/translated/stock.js:2582
+#: templates/js/translated/stock.js:2706
msgid "Location no longer exists"
msgstr "L'emplacement n'existe plus"
-#: templates/js/translated/stock.js:2601
+#: templates/js/translated/stock.js:2725
msgid "Purchase order no longer exists"
msgstr "La commande d'achat n'existe plus"
-#: templates/js/translated/stock.js:2620
+#: templates/js/translated/stock.js:2744
msgid "Customer no longer exists"
msgstr "Le client n'existe plus"
-#: templates/js/translated/stock.js:2638
+#: templates/js/translated/stock.js:2762
msgid "Stock item no longer exists"
msgstr "L'article de stock n'existe plus"
-#: templates/js/translated/stock.js:2661
+#: templates/js/translated/stock.js:2785
msgid "Added"
msgstr "Ajouté"
-#: templates/js/translated/stock.js:2669
+#: templates/js/translated/stock.js:2793
msgid "Removed"
msgstr "Supprimé"
-#: templates/js/translated/stock.js:2710
+#: templates/js/translated/stock.js:2834
msgid "Edit tracking entry"
msgstr ""
-#: templates/js/translated/stock.js:2711
+#: templates/js/translated/stock.js:2835
msgid "Delete tracking entry"
msgstr ""
-#: templates/js/translated/stock.js:2762
+#: templates/js/translated/stock.js:2886
msgid "No installed items"
msgstr ""
-#: templates/js/translated/stock.js:2813
+#: templates/js/translated/stock.js:2937
msgid "Uninstall Stock Item"
msgstr ""
+#: templates/js/translated/stock.js:2973
+msgid "Install another stock item into this item"
+msgstr ""
+
+#: templates/js/translated/stock.js:2974
+msgid "Stock items can only be installed if they meet the following criteria"
+msgstr ""
+
+#: templates/js/translated/stock.js:2976
+msgid "The Stock Item links to a Part which is the BOM for this Stock Item"
+msgstr ""
+
+#: templates/js/translated/stock.js:2977
+msgid "The Stock Item is currently available in stock"
+msgstr ""
+
+#: templates/js/translated/stock.js:2978
+msgid "The Stock Item is serialized and does not belong to another item"
+msgstr ""
+
+#: templates/js/translated/stock.js:2991
+msgid "Select part to install"
+msgstr ""
+
#: templates/js/translated/table_filters.js:56
msgid "Trackable Part"
msgstr "Pièce traçable"
@@ -9055,12 +9187,12 @@ msgstr "Inclure les emplacements"
#: templates/js/translated/table_filters.js:121
#: templates/js/translated/table_filters.js:122
-#: templates/js/translated/table_filters.js:407
+#: templates/js/translated/table_filters.js:402
msgid "Include subcategories"
msgstr "Inclure les sous-catégories"
#: templates/js/translated/table_filters.js:126
-#: templates/js/translated/table_filters.js:442
+#: templates/js/translated/table_filters.js:437
msgid "Subscribed"
msgstr ""
@@ -9102,7 +9234,7 @@ msgid "Batch code"
msgstr "Code de lot"
#: templates/js/translated/table_filters.js:163
-#: templates/js/translated/table_filters.js:379
+#: templates/js/translated/table_filters.js:374
msgid "Active parts"
msgstr "Pièces actives"
@@ -9187,47 +9319,47 @@ msgstr "Afficher les articles de stock qui ont expiré"
msgid "Show stock which is close to expiring"
msgstr "Afficher le stock qui est proche de l'expiration"
-#: templates/js/translated/table_filters.js:290
+#: templates/js/translated/table_filters.js:285
msgid "Build status"
msgstr "État de la construction"
-#: templates/js/translated/table_filters.js:303
-#: templates/js/translated/table_filters.js:344
+#: templates/js/translated/table_filters.js:298
+#: templates/js/translated/table_filters.js:339
msgid "Assigned to me"
msgstr "Assigné à moi"
-#: templates/js/translated/table_filters.js:320
-#: templates/js/translated/table_filters.js:331
-#: templates/js/translated/table_filters.js:352
+#: templates/js/translated/table_filters.js:315
+#: templates/js/translated/table_filters.js:326
+#: templates/js/translated/table_filters.js:347
msgid "Order status"
msgstr "État de la commande"
-#: templates/js/translated/table_filters.js:336
-#: templates/js/translated/table_filters.js:357
+#: templates/js/translated/table_filters.js:331
+#: templates/js/translated/table_filters.js:352
msgid "Outstanding"
msgstr "En suspens"
-#: templates/js/translated/table_filters.js:408
+#: templates/js/translated/table_filters.js:403
msgid "Include parts in subcategories"
msgstr "Inclure les pièces des sous-catégories"
-#: templates/js/translated/table_filters.js:412
+#: templates/js/translated/table_filters.js:407
msgid "Has IPN"
msgstr "A un IPN"
-#: templates/js/translated/table_filters.js:413
+#: templates/js/translated/table_filters.js:408
msgid "Part has internal part number"
msgstr "La pièce a un numéro de pièce interne"
-#: templates/js/translated/table_filters.js:418
+#: templates/js/translated/table_filters.js:413
msgid "Show active parts"
msgstr "Afficher les pièces actives"
-#: templates/js/translated/table_filters.js:426
+#: templates/js/translated/table_filters.js:421
msgid "Stock available"
msgstr "Stock disponible"
-#: templates/js/translated/table_filters.js:454
+#: templates/js/translated/table_filters.js:449
msgid "Purchasable"
msgstr "Achetable"
@@ -9480,35 +9612,35 @@ msgstr "Droits"
msgid "Important dates"
msgstr "Dates importantes"
-#: users/models.py:195
+#: users/models.py:200
msgid "Permission set"
msgstr "Droit défini"
-#: users/models.py:203
+#: users/models.py:208
msgid "Group"
msgstr "Groupe"
-#: users/models.py:206
+#: users/models.py:211
msgid "View"
msgstr "Vue"
-#: users/models.py:206
+#: users/models.py:211
msgid "Permission to view items"
msgstr "Droit de voir des éléments"
-#: users/models.py:208
+#: users/models.py:213
msgid "Permission to add items"
msgstr "Droit d'ajouter des éléments"
-#: users/models.py:210
+#: users/models.py:215
msgid "Change"
msgstr "Modifier"
-#: users/models.py:210
+#: users/models.py:215
msgid "Permissions to edit items"
msgstr "Droit de modifier des élément"
-#: users/models.py:212
+#: users/models.py:217
msgid "Permission to delete items"
msgstr "Droit de supprimer des éléments"
diff --git a/InvenTree/locale/he/LC_MESSAGES/django.po b/InvenTree/locale/he/LC_MESSAGES/django.po
index 050d2b4641..d0119cf91c 100644
--- a/InvenTree/locale/he/LC_MESSAGES/django.po
+++ b/InvenTree/locale/he/LC_MESSAGES/django.po
@@ -3,8 +3,8 @@ msgid ""
msgstr ""
"Project-Id-Version: inventree\n"
"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2022-01-29 00:17+0000\n"
-"PO-Revision-Date: 2022-01-29 04:45\n"
+"POT-Creation-Date: 2022-02-18 20:36+0000\n"
+"PO-Revision-Date: 2022-02-18 20:38\n"
"Last-Translator: \n"
"Language-Team: Hebrew\n"
"Language: he_IL\n"
@@ -34,9 +34,9 @@ msgstr "פעולה מבוקשת לא נמצאה"
msgid "Enter date"
msgstr "הזן תאריך סיום"
-#: InvenTree/forms.py:126 build/forms.py:48 build/forms.py:69 order/forms.py:24
-#: order/forms.py:35 order/forms.py:46 order/forms.py:57
-#: templates/account/email_confirm.html:20 templates/js/translated/forms.js:595
+#: InvenTree/forms.py:126 order/forms.py:24 order/forms.py:35 order/forms.py:46
+#: order/forms.py:57 templates/account/email_confirm.html:20
+#: templates/js/translated/forms.js:596
msgid "Confirm"
msgstr "אשר"
@@ -86,7 +86,7 @@ msgid "Duplicate serial: {n}"
msgstr ""
#: InvenTree/helpers.py:446 order/models.py:282 order/models.py:425
-#: stock/views.py:1231
+#: stock/views.py:1082
msgid "Invalid quantity provided"
msgstr ""
@@ -119,133 +119,133 @@ msgstr "מספרים סידוריים לא נמצאו"
msgid "Number of unique serial number ({s}) must match quantity ({q})"
msgstr "כמות המספרים הסידוריים ({s}) מוכרים להיות תואמים לכמות ({q})"
-#: InvenTree/models.py:120
+#: InvenTree/models.py:176
msgid "Missing file"
msgstr "קובץ חסר"
-#: InvenTree/models.py:121
+#: InvenTree/models.py:177
msgid "Missing external link"
msgstr "חסר קישור חיצוני"
-#: InvenTree/models.py:132 stock/models.py:1995
+#: InvenTree/models.py:188 stock/models.py:1995
#: templates/js/translated/attachment.js:119
msgid "Attachment"
msgstr "קובץ מצורף"
-#: InvenTree/models.py:133
+#: InvenTree/models.py:189
msgid "Select file to attach"
msgstr "בחר קובץ לצירוף"
-#: InvenTree/models.py:139 company/models.py:131 company/models.py:348
-#: company/models.py:564 order/models.py:127 part/models.py:830
+#: InvenTree/models.py:195 company/models.py:131 company/models.py:348
+#: company/models.py:564 order/models.py:127 part/models.py:860
#: report/templates/report/inventree_build_order_base.html:165
#: templates/js/translated/company.js:540
#: templates/js/translated/company.js:829 templates/js/translated/part.js:1324
msgid "Link"
msgstr "קישור"
-#: InvenTree/models.py:140 build/models.py:332 part/models.py:831
+#: InvenTree/models.py:196 build/models.py:332 part/models.py:861
#: stock/models.py:529
msgid "Link to external URL"
msgstr "קישור חיצוני"
-#: InvenTree/models.py:143 templates/js/translated/attachment.js:163
+#: InvenTree/models.py:199 templates/js/translated/attachment.js:163
msgid "Comment"
msgstr "הערה"
-#: InvenTree/models.py:143
+#: InvenTree/models.py:199
msgid "File comment"
msgstr "הערת קובץ"
-#: InvenTree/models.py:149 InvenTree/models.py:150 common/models.py:1223
-#: common/models.py:1224 common/models.py:1452 common/models.py:1453
-#: part/models.py:2265 part/models.py:2285
+#: InvenTree/models.py:205 InvenTree/models.py:206 common/models.py:1235
+#: common/models.py:1236 common/models.py:1464 common/models.py:1465
+#: part/models.py:2301 part/models.py:2321
#: report/templates/report/inventree_test_report_base.html:96
-#: templates/js/translated/stock.js:2692
+#: templates/js/translated/stock.js:2816
msgid "User"
msgstr "משתמש"
-#: InvenTree/models.py:153
+#: InvenTree/models.py:209
msgid "upload date"
msgstr "תאריך העלאה"
-#: InvenTree/models.py:176
+#: InvenTree/models.py:232
msgid "Filename must not be empty"
msgstr "חובה למלא שם קובץ"
-#: InvenTree/models.py:199
+#: InvenTree/models.py:255
msgid "Invalid attachment directory"
msgstr "תיקיית קובץ שגויה"
-#: InvenTree/models.py:209
+#: InvenTree/models.py:265
#, python-brace-format
msgid "Filename contains illegal character '{c}'"
msgstr "שם הקובץ מכיל תו '{c}' שאינו חוקי"
-#: InvenTree/models.py:212
+#: InvenTree/models.py:268
msgid "Filename missing extension"
msgstr ""
-#: InvenTree/models.py:219
+#: InvenTree/models.py:275
msgid "Attachment with this filename already exists"
msgstr ""
-#: InvenTree/models.py:226
+#: InvenTree/models.py:282
msgid "Error renaming file"
msgstr "שגיאה בשינוי שם פריט"
-#: InvenTree/models.py:261
+#: InvenTree/models.py:317
msgid "Invalid choice"
msgstr "בחירה שגויה"
-#: InvenTree/models.py:277 InvenTree/models.py:278 common/models.py:1438
-#: company/models.py:415 label/models.py:112 part/models.py:774
-#: part/models.py:2449 plugin/models.py:40 report/models.py:181
+#: InvenTree/models.py:333 InvenTree/models.py:334 common/models.py:1450
+#: company/models.py:415 label/models.py:112 part/models.py:804
+#: part/models.py:2485 plugin/models.py:40 report/models.py:181
#: templates/InvenTree/settings/mixins/urls.html:13
#: templates/InvenTree/settings/plugin.html:48
#: templates/InvenTree/settings/plugin.html:125
#: templates/InvenTree/settings/plugin_settings.html:23
-#: templates/InvenTree/settings/settings.html:282
+#: templates/InvenTree/settings/settings.html:319
#: templates/js/translated/company.js:641 templates/js/translated/part.js:567
#: templates/js/translated/part.js:706 templates/js/translated/part.js:1631
-#: templates/js/translated/stock.js:2485
+#: templates/js/translated/stock.js:2609
msgid "Name"
msgstr "שם"
-#: InvenTree/models.py:284 build/models.py:209
+#: InvenTree/models.py:340 build/models.py:209
#: build/templates/build/detail.html:25 company/models.py:354
#: company/models.py:570 company/templates/company/company_base.html:68
#: company/templates/company/manufacturer_part.html:76
#: company/templates/company/supplier_part.html:73 label/models.py:119
-#: order/models.py:125 part/models.py:797 part/templates/part/category.html:74
+#: order/models.py:125 part/models.py:827 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:93
#: templates/InvenTree/settings/plugin_settings.html:33
-#: templates/js/translated/bom.js:339 templates/js/translated/bom.js:552
-#: templates/js/translated/build.js:1682 templates/js/translated/company.js:345
+#: templates/js/translated/bom.js:552 templates/js/translated/bom.js:765
+#: templates/js/translated/build.js:1920 templates/js/translated/company.js:345
#: templates/js/translated/company.js:551
#: templates/js/translated/company.js:840 templates/js/translated/order.js:836
#: templates/js/translated/order.js:1019 templates/js/translated/order.js:1258
#: templates/js/translated/part.js:626 templates/js/translated/part.js:999
#: templates/js/translated/part.js:1084 templates/js/translated/part.js:1254
#: templates/js/translated/part.js:1650 templates/js/translated/part.js:1719
-#: templates/js/translated/stock.js:1577 templates/js/translated/stock.js:2314
-#: templates/js/translated/stock.js:2497 templates/js/translated/stock.js:2542
+#: templates/js/translated/stock.js:1701 templates/js/translated/stock.js:2438
+#: templates/js/translated/stock.js:2621 templates/js/translated/stock.js:2666
msgid "Description"
msgstr "תיאור"
-#: InvenTree/models.py:285
+#: InvenTree/models.py:341
msgid "Description (optional)"
msgstr "תיאור (לא חובה)"
-#: InvenTree/models.py:293
+#: InvenTree/models.py:349
msgid "parent"
msgstr "מקור"
-#: InvenTree/serializers.py:65 part/models.py:2734
+#: InvenTree/serializers.py:65 part/models.py:2803
msgid "Must be a valid number"
msgstr "המספר חייב להיות תקין"
@@ -253,83 +253,127 @@ msgstr "המספר חייב להיות תקין"
msgid "Filename"
msgstr "שם קובץ"
-#: InvenTree/settings.py:661
+#: InvenTree/serializers.py:334
+msgid "Invalid value"
+msgstr ""
+
+#: InvenTree/serializers.py:355
+msgid "Data File"
+msgstr ""
+
+#: InvenTree/serializers.py:356
+msgid "Select data file for upload"
+msgstr ""
+
+#: InvenTree/serializers.py:380
+msgid "Unsupported file type"
+msgstr ""
+
+#: InvenTree/serializers.py:386
+msgid "File is too large"
+msgstr ""
+
+#: InvenTree/serializers.py:407
+msgid "No columns found in file"
+msgstr ""
+
+#: InvenTree/serializers.py:410
+msgid "No data rows found in file"
+msgstr ""
+
+#: InvenTree/serializers.py:533
+msgid "No data rows provided"
+msgstr ""
+
+#: InvenTree/serializers.py:536
+msgid "No data columns supplied"
+msgstr ""
+
+#: InvenTree/serializers.py:623
+msgid "Missing required column"
+msgstr ""
+
+#: InvenTree/serializers.py:632
+msgid "Duplicate column"
+msgstr ""
+
+#: InvenTree/settings.py:655
msgid "German"
msgstr "גרמנית"
-#: InvenTree/settings.py:662
+#: InvenTree/settings.py:656
msgid "Greek"
msgstr "יוונית"
-#: InvenTree/settings.py:663
+#: InvenTree/settings.py:657
msgid "English"
msgstr "אנגלית"
-#: InvenTree/settings.py:664
+#: InvenTree/settings.py:658
msgid "Spanish"
msgstr "ספרדית"
-#: InvenTree/settings.py:665
+#: InvenTree/settings.py:659
msgid "Spanish (Mexican)"
msgstr "ספרדית (מקסיקנית)"
-#: InvenTree/settings.py:666
+#: InvenTree/settings.py:660
msgid "French"
msgstr "צרפתית"
-#: InvenTree/settings.py:667
+#: InvenTree/settings.py:661
msgid "Hebrew"
msgstr "עברית"
-#: InvenTree/settings.py:668
+#: InvenTree/settings.py:662
msgid "Italian"
msgstr "איטלקית"
-#: InvenTree/settings.py:669
+#: InvenTree/settings.py:663
msgid "Japanese"
msgstr "יפנית"
-#: InvenTree/settings.py:670
+#: InvenTree/settings.py:664
msgid "Korean"
msgstr "קוריאנית"
-#: InvenTree/settings.py:671
+#: InvenTree/settings.py:665
msgid "Dutch"
msgstr "הולנדית"
-#: InvenTree/settings.py:672
+#: InvenTree/settings.py:666
msgid "Norwegian"
msgstr "נורווגית"
-#: InvenTree/settings.py:673
+#: InvenTree/settings.py:667
msgid "Polish"
msgstr "פולנית"
-#: InvenTree/settings.py:674
+#: InvenTree/settings.py:668
msgid "Portugese"
msgstr "פורטוגזית"
-#: InvenTree/settings.py:675
+#: InvenTree/settings.py:669
msgid "Russian"
msgstr "רוסית"
-#: InvenTree/settings.py:676
+#: InvenTree/settings.py:670
msgid "Swedish"
msgstr "שוודית"
-#: InvenTree/settings.py:677
+#: InvenTree/settings.py:671
msgid "Thai"
msgstr "תאילנדית"
-#: InvenTree/settings.py:678
+#: InvenTree/settings.py:672
msgid "Turkish"
msgstr "טורקית"
-#: InvenTree/settings.py:679
+#: InvenTree/settings.py:673
msgid "Vietnamese"
msgstr "ווייטנאמית"
-#: InvenTree/settings.py:680
+#: InvenTree/settings.py:674
msgid "Chinese"
msgstr "סינית"
@@ -346,7 +390,7 @@ msgid "InvenTree system health checks failed"
msgstr ""
#: InvenTree/status_codes.py:101 InvenTree/status_codes.py:142
-#: InvenTree/status_codes.py:316 templates/js/translated/table_filters.js:313
+#: InvenTree/status_codes.py:316 templates/js/translated/table_filters.js:308
msgid "Pending"
msgstr "בהמתנה"
@@ -456,7 +500,7 @@ msgstr ""
msgid "Split child item"
msgstr ""
-#: InvenTree/status_codes.py:294 templates/js/translated/stock.js:2072
+#: InvenTree/status_codes.py:294 templates/js/translated/stock.js:2196
msgid "Merged stock items"
msgstr ""
@@ -484,40 +528,40 @@ msgstr ""
msgid "Production"
msgstr "ייצור"
-#: InvenTree/validators.py:23
+#: InvenTree/validators.py:25
msgid "Not a valid currency code"
msgstr "קוד מטבע לא מאושר"
-#: InvenTree/validators.py:51
+#: InvenTree/validators.py:53
msgid "Invalid character in part name"
msgstr ""
-#: InvenTree/validators.py:64
+#: InvenTree/validators.py:66
#, python-brace-format
msgid "IPN must match regex pattern {pat}"
msgstr ""
-#: InvenTree/validators.py:78 InvenTree/validators.py:92
-#: InvenTree/validators.py:106
+#: InvenTree/validators.py:80 InvenTree/validators.py:94
+#: InvenTree/validators.py:108
#, python-brace-format
msgid "Reference must match pattern {pattern}"
msgstr ""
-#: InvenTree/validators.py:114
+#: InvenTree/validators.py:116
#, python-brace-format
msgid "Illegal character in name ({x})"
msgstr ""
-#: InvenTree/validators.py:133 InvenTree/validators.py:149
+#: InvenTree/validators.py:137 InvenTree/validators.py:153
msgid "Overage value must not be negative"
msgstr ""
-#: InvenTree/validators.py:151
+#: InvenTree/validators.py:155
msgid "Overage must not exceed 100%"
msgstr ""
-#: InvenTree/validators.py:158
-msgid "Overage must be an integer value or a percentage"
+#: InvenTree/validators.py:162
+msgid "Invalid value for overage"
msgstr ""
#: InvenTree/views.py:538
@@ -584,69 +628,11 @@ msgstr ""
msgid "Barcode associated with Stock Item"
msgstr ""
-#: build/forms.py:36 build/models.py:1293
-#: build/templates/build/build_base.html:82
-#: build/templates/build/detail.html:35 common/models.py:1263
-#: company/forms.py:42 company/templates/company/supplier_part.html:251
-#: order/models.py:805 order/models.py:1229 order/serializers.py:816
-#: order/templates/order/order_wizard/match_parts.html:30
-#: order/templates/order/order_wizard/select_parts.html:34 part/forms.py:144
-#: part/forms.py:160 part/forms.py:176 part/models.py:2636
-#: part/templates/part/bom_upload/match_parts.html:31
-#: part/templates/part/detail.html:992 part/templates/part/detail.html:1078
-#: part/templates/part/part_pricing.html:16
-#: report/templates/report/inventree_build_order_base.html:114
-#: report/templates/report/inventree_po_report.html:91
-#: report/templates/report/inventree_so_report.html:91
-#: report/templates/report/inventree_test_report_base.html:81
-#: report/templates/report/inventree_test_report_base.html:139
-#: stock/forms.py:142 stock/serializers.py:293
-#: stock/templates/stock/item_base.html:181
-#: stock/templates/stock/item_base.html:262
-#: stock/templates/stock/item_base.html:270
-#: templates/js/translated/barcode.js:385 templates/js/translated/bom.js:567
-#: templates/js/translated/build.js:295 templates/js/translated/build.js:495
-#: templates/js/translated/build.js:689 templates/js/translated/build.js:699
-#: templates/js/translated/build.js:1075 templates/js/translated/build.js:1422
-#: templates/js/translated/model_renderers.js:99
-#: templates/js/translated/order.js:101 templates/js/translated/order.js:1056
-#: 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:906
-#: templates/js/translated/part.js:1862 templates/js/translated/part.js:1985
-#: templates/js/translated/part.js:2063 templates/js/translated/stock.js:391
-#: templates/js/translated/stock.js:588 templates/js/translated/stock.js:758
-#: templates/js/translated/stock.js:2677 templates/js/translated/stock.js:2779
-msgid "Quantity"
-msgstr "כמות"
-
-#: build/forms.py:37
-msgid "Enter quantity for build output"
-msgstr ""
-
-#: build/forms.py:41 order/serializers.py:820 stock/forms.py:81
-#: stock/serializers.py:314 templates/js/translated/stock.js:238
-#: templates/js/translated/stock.js:392
-msgid "Serial Numbers"
-msgstr "מספרים סידוריים"
-
-#: build/forms.py:43
-msgid "Enter serial numbers for build outputs"
-msgstr ""
-
-#: build/forms.py:49
-msgid "Confirm creation of build output"
-msgstr ""
-
-#: build/forms.py:70
-msgid "Confirm deletion of build output"
-msgstr ""
-
-#: build/forms.py:89
+#: build/forms.py:20
msgid "Confirm cancel"
msgstr ""
-#: build/forms.py:89 build/views.py:65
+#: build/forms.py:20 build/views.py:62
msgid "Confirm build cancellation"
msgstr ""
@@ -657,7 +643,7 @@ msgstr ""
#: build/models.py:139 build/templates/build/build_base.html:9
#: build/templates/build/build_base.html:27
#: report/templates/report/inventree_build_order_base.html:106
-#: templates/js/translated/build.js:457 templates/js/translated/stock.js:2290
+#: templates/js/translated/build.js:676 templates/js/translated/stock.js:2414
msgid "Build Order"
msgstr ""
@@ -665,7 +651,7 @@ msgstr ""
#: 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
+#: part/templates/part/part_sidebar.html:21 templates/InvenTree/index.html:221
#: templates/InvenTree/search.html:139
#: templates/InvenTree/settings/sidebar.html:43 users/models.py:44
msgid "Build Orders"
@@ -676,11 +662,11 @@ msgid "Build Order Reference"
msgstr ""
#: build/models.py:201 order/models.py:213 order/models.py:541
-#: order/models.py:812 part/models.py:2645
-#: part/templates/part/bom_upload/match_parts.html:30
+#: order/models.py:812 part/models.py:2714
+#: part/templates/part/upload_bom.html:54
#: report/templates/report/inventree_po_report.html:92
#: report/templates/report/inventree_so_report.html:92
-#: templates/js/translated/bom.js:559 templates/js/translated/build.js:1179
+#: templates/js/translated/bom.js:772 templates/js/translated/build.js:1401
#: templates/js/translated/order.js:1050 templates/js/translated/order.js:2144
msgid "Reference"
msgstr "מקט"
@@ -689,7 +675,7 @@ msgstr "מקט"
msgid "Brief description of the build"
msgstr "תיאור קצר אודות הבנייה"
-#: build/models.py:221 build/templates/build/build_base.html:164
+#: build/models.py:221 build/templates/build/build_base.html:169
#: build/templates/build/detail.html:88
msgid "Parent Build"
msgstr "מקור הבנייה"
@@ -702,30 +688,31 @@ msgstr ""
#: build/templates/build/detail.html:30 company/models.py:705
#: order/models.py:876 order/models.py:950
#: order/templates/order/order_wizard/select_parts.html:32 part/models.py:359
-#: part/models.py:2211 part/models.py:2227 part/models.py:2246
-#: part/models.py:2263 part/models.py:2365 part/models.py:2487
-#: part/models.py:2620 part/models.py:2927 part/serializers.py:658
-#: part/templates/part/part_app_base.html:8
+#: part/models.py:2247 part/models.py:2263 part/models.py:2282
+#: part/models.py:2299 part/models.py:2401 part/models.py:2523
+#: part/models.py:2613 part/models.py:2689 part/models.py:2996
+#: part/serializers.py:666 part/templates/part/part_app_base.html:8
#: part/templates/part/part_pricing.html:12
#: part/templates/part/set_category.html:13
+#: part/templates/part/upload_bom.html:52
#: 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: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:338
-#: templates/js/translated/bom.js:517 templates/js/translated/build.js:680
-#: templates/js/translated/build.js:1048 templates/js/translated/build.js:1419
-#: templates/js/translated/build.js:1687 templates/js/translated/company.js:492
+#: templates/js/translated/barcode.js:383 templates/js/translated/bom.js:551
+#: templates/js/translated/bom.js:730 templates/js/translated/build.js:902
+#: templates/js/translated/build.js:1270 templates/js/translated/build.js:1655
+#: templates/js/translated/build.js:1925 templates/js/translated/company.js:492
#: templates/js/translated/company.js:749 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:984
#: templates/js/translated/part.js:1065 templates/js/translated/part.js:1232
-#: templates/js/translated/stock.js:562 templates/js/translated/stock.js:727
-#: templates/js/translated/stock.js:934 templates/js/translated/stock.js:1534
-#: templates/js/translated/stock.js:2767
+#: templates/js/translated/stock.js:563 templates/js/translated/stock.js:728
+#: templates/js/translated/stock.js:935 templates/js/translated/stock.js:1658
+#: templates/js/translated/stock.js:2891 templates/js/translated/stock.js:2990
msgid "Part"
msgstr "רכיב"
@@ -741,7 +728,7 @@ msgstr ""
msgid "SalesOrder to which this build is allocated"
msgstr ""
-#: build/models.py:249 templates/js/translated/build.js:1407
+#: build/models.py:249 templates/js/translated/build.js:1643
#: templates/js/translated/order.js:1564
msgid "Source Location"
msgstr ""
@@ -782,15 +769,15 @@ msgstr ""
msgid "Build status code"
msgstr ""
-#: build/models.py:287 stock/models.py:533
+#: build/models.py:287 build/serializers.py:218 stock/models.py:533
msgid "Batch Code"
msgstr ""
-#: build/models.py:291
+#: build/models.py:291 build/serializers.py:219
msgid "Batch code for this build output"
msgstr ""
-#: build/models.py:294 order/models.py:129 part/models.py:969
+#: build/models.py:294 order/models.py:129 part/models.py:999
#: part/templates/part/part_base.html:313 templates/js/translated/order.js:1271
msgid "Creation Date"
msgstr ""
@@ -804,7 +791,7 @@ msgid "Target date for build completion. Build will be overdue after this date."
msgstr ""
#: build/models.py:302 order/models.py:255
-#: templates/js/translated/build.js:1758
+#: templates/js/translated/build.js:1996
msgid "Completion Date"
msgstr ""
@@ -812,7 +799,7 @@ msgstr ""
msgid "completed by"
msgstr ""
-#: build/models.py:316 templates/js/translated/build.js:1729
+#: build/models.py:316 templates/js/translated/build.js:1967
msgid "Issued by"
msgstr ""
@@ -820,12 +807,12 @@ msgstr ""
msgid "User who issued this build order"
msgstr ""
-#: build/models.py:325 build/templates/build/build_base.html:185
+#: build/models.py:325 build/templates/build/build_base.html:190
#: build/templates/build/detail.html:116 order/models.py:143
#: order/templates/order/order_base.html:170
-#: order/templates/order/sales_order_base.html:182 part/models.py:973
+#: order/templates/order/sales_order_base.html:182 part/models.py:1003
#: report/templates/report/inventree_build_order_base.html:159
-#: templates/js/translated/build.js:1741 templates/js/translated/order.js:864
+#: templates/js/translated/build.js:1979 templates/js/translated/order.js:864
msgid "Responsible"
msgstr ""
@@ -837,26 +824,26 @@ msgstr ""
#: company/templates/company/manufacturer_part.html:102
#: company/templates/company/supplier_part.html:126
#: part/templates/part/part_base.html:354 stock/models.py:527
-#: stock/templates/stock/item_base.html:373
+#: stock/templates/stock/item_base.html:375
msgid "External Link"
msgstr ""
-#: build/models.py:336 build/serializers.py:201
+#: build/models.py:336 build/serializers.py:380
#: build/templates/build/sidebar.html:21 company/models.py:142
#: company/models.py:577 company/templates/company/sidebar.html:25
#: order/models.py:147 order/models.py:814 order/models.py:1071
#: order/templates/order/po_sidebar.html:11
-#: order/templates/order/so_sidebar.html:17 part/models.py:958
-#: part/templates/part/detail.html:137 part/templates/part/part_sidebar.html:54
+#: order/templates/order/so_sidebar.html:17 part/models.py:988
+#: part/templates/part/detail.html:140 part/templates/part/part_sidebar.html:57
#: report/templates/report/inventree_build_order_base.html:173
-#: stock/forms.py:140 stock/forms.py:190 stock/forms.py:224 stock/models.py:599
+#: stock/forms.py:137 stock/forms.py:171 stock/models.py:599
#: stock/models.py:1895 stock/models.py:2001 stock/serializers.py:332
-#: stock/serializers.py:640 stock/serializers.py:738 stock/serializers.py:870
+#: stock/serializers.py:697 stock/serializers.py:795 stock/serializers.py:927
#: stock/templates/stock/stock_sidebar.html:25
-#: templates/js/translated/barcode.js:58 templates/js/translated/bom.js:723
+#: templates/js/translated/barcode.js:58 templates/js/translated/bom.js:936
#: templates/js/translated/company.js:845 templates/js/translated/order.js:1149
#: templates/js/translated/order.js:1445 templates/js/translated/order.js:2280
-#: templates/js/translated/stock.js:1317 templates/js/translated/stock.js:1803
+#: templates/js/translated/stock.js:1345 templates/js/translated/stock.js:1927
msgid "Notes"
msgstr ""
@@ -864,208 +851,284 @@ msgstr ""
msgid "Extra build notes"
msgstr ""
-#: build/models.py:717
+#: build/models.py:756
msgid "No build output specified"
msgstr ""
-#: build/models.py:720
+#: build/models.py:759
msgid "Build output is already completed"
msgstr ""
-#: build/models.py:723
+#: build/models.py:762
msgid "Build output does not match Build Order"
msgstr ""
-#: build/models.py:1115
+#: build/models.py:1154
msgid "Build item must specify a build output, as master part is marked as trackable"
msgstr ""
-#: build/models.py:1124
+#: build/models.py:1163
#, python-brace-format
msgid "Allocated quantity ({q}) must not execed available stock quantity ({a})"
msgstr ""
-#: build/models.py:1134
+#: build/models.py:1173
msgid "Stock item is over-allocated"
msgstr ""
-#: build/models.py:1140 order/models.py:1189
+#: build/models.py:1179 order/models.py:1189
msgid "Allocation quantity must be greater than zero"
msgstr ""
-#: build/models.py:1146
+#: build/models.py:1185
msgid "Quantity must be 1 for serialized stock"
msgstr ""
-#: build/models.py:1203
+#: build/models.py:1242
msgid "Selected stock item not found in BOM"
msgstr ""
-#: build/models.py:1263 stock/templates/stock/item_base.html:345
-#: templates/InvenTree/search.html:137 templates/js/translated/build.js:1660
+#: build/models.py:1302 stock/templates/stock/item_base.html:347
+#: templates/InvenTree/search.html:137 templates/js/translated/build.js:1898
#: templates/navbar.html:35
msgid "Build"
msgstr ""
-#: build/models.py:1264
+#: build/models.py:1303
msgid "Build to allocate parts"
msgstr ""
-#: build/models.py:1280 build/serializers.py:388 order/serializers.py:696
-#: order/serializers.py:714 stock/serializers.py:578 stock/serializers.py:696
-#: stock/templates/stock/item_base.html:9
+#: build/models.py:1319 build/serializers.py:570 order/serializers.py:696
+#: order/serializers.py:714 stock/serializers.py:404 stock/serializers.py:635
+#: stock/serializers.py:753 stock/templates/stock/item_base.html:9
#: stock/templates/stock/item_base.html:23
-#: stock/templates/stock/item_base.html:367
-#: templates/js/translated/build.js:468 templates/js/translated/build.js:473
-#: templates/js/translated/build.js:1421 templates/js/translated/build.js:1803
+#: stock/templates/stock/item_base.html:369
+#: templates/js/translated/build.js:687 templates/js/translated/build.js:692
+#: templates/js/translated/build.js:1657 templates/js/translated/build.js:2041
#: 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:563 templates/js/translated/stock.js:728
-#: templates/js/translated/stock.js:2628
+#: templates/js/translated/stock.js:564 templates/js/translated/stock.js:729
+#: templates/js/translated/stock.js:2752
msgid "Stock Item"
msgstr ""
-#: build/models.py:1281
+#: build/models.py:1320
msgid "Source stock item"
msgstr ""
-#: build/models.py:1294
+#: build/models.py:1332 build/serializers.py:188
+#: build/templates/build/build_base.html:82
+#: build/templates/build/detail.html:35 common/models.py:1275
+#: company/forms.py:42 company/templates/company/supplier_part.html:251
+#: order/models.py:805 order/models.py:1229 order/serializers.py:816
+#: order/templates/order/order_wizard/match_parts.html:30
+#: order/templates/order/order_wizard/select_parts.html:34 part/forms.py:144
+#: part/forms.py:160 part/forms.py:176 part/models.py:2705
+#: part/templates/part/detail.html:995 part/templates/part/detail.html:1081
+#: part/templates/part/part_pricing.html:16
+#: part/templates/part/upload_bom.html:53
+#: report/templates/report/inventree_build_order_base.html:114
+#: report/templates/report/inventree_po_report.html:91
+#: report/templates/report/inventree_so_report.html:91
+#: report/templates/report/inventree_test_report_base.html:81
+#: report/templates/report/inventree_test_report_base.html:139
+#: stock/forms.py:139 stock/serializers.py:293
+#: stock/templates/stock/item_base.html:183
+#: stock/templates/stock/item_base.html:264
+#: stock/templates/stock/item_base.html:272
+#: templates/js/translated/barcode.js:385 templates/js/translated/bom.js:780
+#: templates/js/translated/build.js:375 templates/js/translated/build.js:523
+#: templates/js/translated/build.js:714 templates/js/translated/build.js:911
+#: templates/js/translated/build.js:921 templates/js/translated/build.js:1297
+#: templates/js/translated/build.js:1658
+#: templates/js/translated/model_renderers.js:99
+#: templates/js/translated/order.js:101 templates/js/translated/order.js:1056
+#: 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:906
+#: templates/js/translated/part.js:1862 templates/js/translated/part.js:1985
+#: templates/js/translated/part.js:2063 templates/js/translated/stock.js:392
+#: templates/js/translated/stock.js:589 templates/js/translated/stock.js:759
+#: templates/js/translated/stock.js:2801 templates/js/translated/stock.js:2903
+msgid "Quantity"
+msgstr "כמות"
+
+#: build/models.py:1333
msgid "Stock quantity to allocate to build"
msgstr ""
-#: build/models.py:1302
+#: build/models.py:1341
msgid "Install into"
msgstr ""
-#: build/models.py:1303
+#: build/models.py:1342
msgid "Destination stock item"
msgstr ""
-#: build/serializers.py:137 build/serializers.py:417
+#: build/serializers.py:138 build/serializers.py:599
msgid "Build Output"
msgstr ""
-#: build/serializers.py:146
+#: build/serializers.py:150
msgid "Build output does not match the parent build"
msgstr ""
-#: build/serializers.py:150
+#: build/serializers.py:154
msgid "Output part does not match BuildOrder part"
msgstr ""
-#: build/serializers.py:154
+#: build/serializers.py:158
msgid "This build output has already been completed"
msgstr ""
-#: build/serializers.py:158
+#: build/serializers.py:164
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:731
-#: stock/serializers.py:972 stock/templates/stock/item_base.html:313
-#: templates/js/translated/barcode.js:384
-#: templates/js/translated/barcode.js:557 templates/js/translated/build.js:480
-#: templates/js/translated/build.js:1087 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:179 templates/js/translated/stock.js:564
-#: templates/js/translated/stock.js:729 templates/js/translated/stock.js:936
-#: templates/js/translated/stock.js:1684 templates/js/translated/stock.js:2569
-msgid "Location"
+#: build/serializers.py:189
+msgid "Enter quantity for build output"
msgstr ""
-#: build/serializers.py:191
-msgid "Location for completed build outputs"
-msgstr ""
-
-#: build/serializers.py:197 build/templates/build/build_base.html:137
-#: build/templates/build/detail.html:63 order/models.py:557
-#: order/serializers.py:247 stock/templates/stock/item_base.html:187
-#: templates/js/translated/barcode.js:140 templates/js/translated/build.js:1716
-#: templates/js/translated/order.js:591 templates/js/translated/order.js:840
-#: templates/js/translated/order.js:1263 templates/js/translated/stock.js:1659
-#: templates/js/translated/stock.js:2646 templates/js/translated/stock.js:2795
-msgid "Status"
-msgstr ""
-
-#: build/serializers.py:213
-msgid "A list of build outputs must be provided"
-msgstr ""
-
-#: build/serializers.py:249
-msgid "Accept Unallocated"
-msgstr ""
-
-#: build/serializers.py:250
-msgid "Accept that stock items have not been fully allocated to this build order"
-msgstr ""
-
-#: build/serializers.py:260 templates/js/translated/build.js:149
-msgid "Required stock has not been fully allocated"
-msgstr ""
-
-#: build/serializers.py:265
-msgid "Accept Incomplete"
-msgstr ""
-
-#: build/serializers.py:266
-msgid "Accept that the required number of build outputs have not been completed"
-msgstr ""
-
-#: build/serializers.py:276 templates/js/translated/build.js:153
-msgid "Required build quantity has not been completed"
-msgstr ""
-
-#: build/serializers.py:285
-msgid "Build order has incomplete outputs"
-msgstr ""
-
-#: build/serializers.py:313 build/serializers.py:362 part/models.py:2760
-#: part/models.py:2919
-msgid "BOM Item"
-msgstr ""
-
-#: build/serializers.py:323
-msgid "Build output"
-msgstr ""
-
-#: build/serializers.py:332
-msgid "Build output must point to the same build"
-msgstr ""
-
-#: build/serializers.py:379
-msgid "bom_item.part must point to the same part as the build order"
-msgstr ""
-
-#: build/serializers.py:394 stock/serializers.py:585
-msgid "Item must be in stock"
-msgstr ""
-
-#: build/serializers.py:408 order/models.py:280 order/serializers.py:240
+#: build/serializers.py:201 build/serializers.py:590 order/models.py:280
+#: order/serializers.py:240 part/serializers.py:471 part/serializers.py:827
#: stock/models.py:367 stock/models.py:1105 stock/serializers.py:305
msgid "Quantity must be greater than zero"
msgstr ""
-#: build/serializers.py:450 order/serializers.py:747
+#: build/serializers.py:208
+msgid "Integer quantity required for trackable parts"
+msgstr ""
+
+#: build/serializers.py:211
+msgid "Integer quantity required, as the bill of materials contains trackable parts"
+msgstr ""
+
+#: build/serializers.py:225 order/serializers.py:820 stock/forms.py:78
+#: stock/serializers.py:314 templates/js/translated/stock.js:239
+#: templates/js/translated/stock.js:393
+msgid "Serial Numbers"
+msgstr "מספרים סידוריים"
+
+#: build/serializers.py:226
+msgid "Enter serial numbers for build outputs"
+msgstr ""
+
+#: build/serializers.py:239
+msgid "Auto Allocate Serial Numbers"
+msgstr ""
+
+#: build/serializers.py:240
+msgid "Automatically allocate required items with matching serial numbers"
+msgstr ""
+
+#: build/serializers.py:274 stock/api.py:551
+msgid "The following serial numbers already exist"
+msgstr ""
+
+#: build/serializers.py:327 build/serializers.py:392
+msgid "A list of build outputs must be provided"
+msgstr ""
+
+#: build/serializers.py:369 order/serializers.py:226 order/serializers.py:294
+#: stock/forms.py:169 stock/serializers.py:325 stock/serializers.py:788
+#: stock/serializers.py:1029 stock/templates/stock/item_base.html:315
+#: templates/js/translated/barcode.js:384
+#: templates/js/translated/barcode.js:557 templates/js/translated/build.js:699
+#: templates/js/translated/build.js:1309 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:179 templates/js/translated/stock.js:565
+#: templates/js/translated/stock.js:730 templates/js/translated/stock.js:937
+#: templates/js/translated/stock.js:1808 templates/js/translated/stock.js:2693
+msgid "Location"
+msgstr ""
+
+#: build/serializers.py:370
+msgid "Location for completed build outputs"
+msgstr ""
+
+#: build/serializers.py:376 build/templates/build/build_base.html:142
+#: build/templates/build/detail.html:63 order/models.py:557
+#: order/serializers.py:247 stock/templates/stock/item_base.html:189
+#: templates/js/translated/barcode.js:140 templates/js/translated/build.js:1954
+#: templates/js/translated/order.js:591 templates/js/translated/order.js:840
+#: templates/js/translated/order.js:1263 templates/js/translated/stock.js:1783
+#: templates/js/translated/stock.js:2770 templates/js/translated/stock.js:2919
+msgid "Status"
+msgstr ""
+
+#: build/serializers.py:428
+msgid "Accept Unallocated"
+msgstr ""
+
+#: build/serializers.py:429
+msgid "Accept that stock items have not been fully allocated to this build order"
+msgstr ""
+
+#: build/serializers.py:439 templates/js/translated/build.js:150
+msgid "Required stock has not been fully allocated"
+msgstr ""
+
+#: build/serializers.py:444
+msgid "Accept Incomplete"
+msgstr ""
+
+#: build/serializers.py:445
+msgid "Accept that the required number of build outputs have not been completed"
+msgstr ""
+
+#: build/serializers.py:455 templates/js/translated/build.js:154
+msgid "Required build quantity has not been completed"
+msgstr ""
+
+#: build/serializers.py:464
+msgid "Build order has incomplete outputs"
+msgstr ""
+
+#: build/serializers.py:467 build/templates/build/build_base.html:95
+msgid "No build outputs have been created for this build order"
+msgstr ""
+
+#: build/serializers.py:495 build/serializers.py:544 part/models.py:2829
+#: part/models.py:2988
+msgid "BOM Item"
+msgstr ""
+
+#: build/serializers.py:505
+msgid "Build output"
+msgstr ""
+
+#: build/serializers.py:514
+msgid "Build output must point to the same build"
+msgstr ""
+
+#: build/serializers.py:561
+msgid "bom_item.part must point to the same part as the build order"
+msgstr ""
+
+#: build/serializers.py:576 stock/serializers.py:642
+msgid "Item must be in stock"
+msgstr ""
+
+#: build/serializers.py:632 order/serializers.py:747
#, python-brace-format
msgid "Available quantity ({q}) exceeded"
msgstr ""
-#: build/serializers.py:456
+#: build/serializers.py:638
msgid "Build output must be specified for allocation of tracked parts"
msgstr ""
-#: build/serializers.py:463
+#: build/serializers.py:645
msgid "Build output cannot be specified for allocation of untracked parts"
msgstr ""
-#: build/serializers.py:491 order/serializers.py:990
+#: build/serializers.py:673 order/serializers.py:990
msgid "Allocation items must be provided"
msgstr ""
-#: build/tasks.py:92
+#: build/tasks.py:98
msgid "Stock required for build order"
msgstr ""
@@ -1088,7 +1151,7 @@ msgid "Edit Build"
msgstr ""
#: build/templates/build/build_base.html:56
-#: build/templates/build/build_base.html:215 build/views.py:56
+#: build/templates/build/build_base.html:220 build/views.py:53
msgid "Cancel Build"
msgstr ""
@@ -1105,110 +1168,90 @@ msgstr ""
msgid "Build Description"
msgstr ""
-#: build/templates/build/build_base.html:96
+#: build/templates/build/build_base.html:101
#, python-format
msgid "This Build Order is allocated to Sales Order %(link)s"
msgstr ""
-#: build/templates/build/build_base.html:103
+#: build/templates/build/build_base.html:108
#, python-format
msgid "This Build Order is a child of Build Order %(link)s"
msgstr ""
-#: build/templates/build/build_base.html:110
+#: build/templates/build/build_base.html:115
msgid "Build Order is ready to mark as completed"
msgstr ""
-#: build/templates/build/build_base.html:115
+#: build/templates/build/build_base.html:120
msgid "Build Order cannot be completed as outstanding outputs remain"
msgstr ""
-#: build/templates/build/build_base.html:120
+#: build/templates/build/build_base.html:125
msgid "Required build quantity has not yet been completed"
msgstr ""
-#: build/templates/build/build_base.html:125
+#: build/templates/build/build_base.html:130
msgid "Stock has not been fully allocated to this Build Order"
msgstr ""
-#: build/templates/build/build_base.html:146
+#: build/templates/build/build_base.html:151
#: build/templates/build/detail.html:132
#: order/templates/order/order_base.html:156
#: order/templates/order/sales_order_base.html:163
#: report/templates/report/inventree_build_order_base.html:126
-#: templates/js/translated/build.js:1753 templates/js/translated/order.js:854
+#: templates/js/translated/build.js:1991 templates/js/translated/order.js:854
#: templates/js/translated/order.js:1276
msgid "Target Date"
msgstr ""
-#: build/templates/build/build_base.html:151
+#: build/templates/build/build_base.html:156
#, python-format
msgid "This build was due on %(target)s"
msgstr ""
-#: build/templates/build/build_base.html:151
-#: build/templates/build/build_base.html:196
+#: build/templates/build/build_base.html:156
+#: build/templates/build/build_base.html:201
#: order/templates/order/order_base.html:98
#: order/templates/order/sales_order_base.html:93
-#: templates/js/translated/table_filters.js:299
-#: templates/js/translated/table_filters.js:340
-#: templates/js/translated/table_filters.js:361
+#: templates/js/translated/table_filters.js:294
+#: templates/js/translated/table_filters.js:335
+#: templates/js/translated/table_filters.js:356
msgid "Overdue"
msgstr ""
-#: build/templates/build/build_base.html:158
+#: build/templates/build/build_base.html:163
#: build/templates/build/detail.html:68 build/templates/build/detail.html:143
#: order/templates/order/sales_order_base.html:170
-#: templates/js/translated/build.js:1702
-#: templates/js/translated/table_filters.js:370
+#: templates/js/translated/build.js:1940
+#: templates/js/translated/table_filters.js:365
msgid "Completed"
msgstr ""
-#: build/templates/build/build_base.html:171
+#: build/templates/build/build_base.html:176
#: build/templates/build/detail.html:95 order/models.py:947
#: order/models.py:1043 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:307
-#: templates/js/translated/order.js:1218 templates/js/translated/stock.js:2304
+#: stock/templates/stock/item_base.html:309
+#: templates/js/translated/order.js:1218 templates/js/translated/stock.js:2428
msgid "Sales Order"
msgstr ""
-#: build/templates/build/build_base.html:178
+#: build/templates/build/build_base.html:183
#: build/templates/build/detail.html:109
#: report/templates/report/inventree_build_order_base.html:153
msgid "Issued By"
msgstr ""
-#: build/templates/build/build_base.html:223
+#: build/templates/build/build_base.html:228
msgid "Incomplete Outputs"
msgstr ""
-#: build/templates/build/build_base.html:224
+#: build/templates/build/build_base.html:229
msgid "Build Order cannot be completed as incomplete build outputs remain"
msgstr ""
-#: build/templates/build/build_output_create.html:7
-msgid "The Bill of Materials contains trackable parts"
-msgstr ""
-
-#: build/templates/build/build_output_create.html:8
-msgid "Build outputs must be generated individually."
-msgstr ""
-
-#: build/templates/build/build_output_create.html:9
-msgid "Multiple build outputs will be created based on the quantity specified."
-msgstr ""
-
-#: build/templates/build/build_output_create.html:15
-msgid "Trackable parts can have serial numbers specified"
-msgstr ""
-
-#: build/templates/build/build_output_create.html:16
-msgid "Enter serial numbers to generate multiple single build outputs"
-msgstr ""
-
#: build/templates/build/cancel.html:5
msgid "Are you sure you wish to cancel this build?"
msgstr ""
@@ -1225,7 +1268,7 @@ msgstr ""
msgid "Stock can be taken from any available location."
msgstr ""
-#: build/templates/build/detail.html:50 order/models.py:898 stock/forms.py:136
+#: build/templates/build/detail.html:50 order/models.py:898 stock/forms.py:133
#: templates/js/translated/order.js:592 templates/js/translated/order.js:1138
msgid "Destination"
msgstr ""
@@ -1234,13 +1277,13 @@ msgstr ""
msgid "Destination location not specified"
msgstr ""
-#: build/templates/build/detail.html:74 templates/js/translated/build.js:707
+#: build/templates/build/detail.html:74 templates/js/translated/build.js:929
msgid "Allocated Parts"
msgstr ""
#: build/templates/build/detail.html:81
-#: stock/templates/stock/item_base.html:331
-#: templates/js/translated/stock.js:1673 templates/js/translated/stock.js:2802
+#: stock/templates/stock/item_base.html:333
+#: templates/js/translated/stock.js:1797 templates/js/translated/stock.js:2926
#: templates/js/translated/table_filters.js:151
#: templates/js/translated/table_filters.js:238
msgid "Batch"
@@ -1249,7 +1292,7 @@ msgstr ""
#: build/templates/build/detail.html:127
#: order/templates/order/order_base.html:143
#: order/templates/order/sales_order_base.html:157
-#: templates/js/translated/build.js:1724
+#: templates/js/translated/build.js:1962
msgid "Created"
msgstr ""
@@ -1269,7 +1312,7 @@ msgstr ""
msgid "Allocate Stock to Build"
msgstr ""
-#: build/templates/build/detail.html:177 templates/js/translated/build.js:1262
+#: build/templates/build/detail.html:177 templates/js/translated/build.js:1484
msgid "Unallocate stock"
msgstr ""
@@ -1329,52 +1372,60 @@ msgid "Output Actions"
msgstr ""
#: build/templates/build/detail.html:250
-msgid "Complete selected items"
+msgid "Complete selected build outputs"
msgstr ""
#: build/templates/build/detail.html:251
msgid "Complete outputs"
msgstr ""
-#: build/templates/build/detail.html:266
+#: build/templates/build/detail.html:253
+msgid "Delete selected build outputs"
+msgstr ""
+
+#: build/templates/build/detail.html:254
+msgid "Delete outputs"
+msgstr ""
+
+#: build/templates/build/detail.html:270
msgid "Completed Build Outputs"
msgstr ""
-#: build/templates/build/detail.html:278 build/templates/build/sidebar.html:19
+#: build/templates/build/detail.html:282 build/templates/build/sidebar.html:19
#: order/templates/order/po_sidebar.html:9
#: order/templates/order/purchase_order_detail.html:60
#: order/templates/order/sales_order_detail.html:107
-#: order/templates/order/so_sidebar.html:15 part/templates/part/detail.html:213
-#: part/templates/part/part_sidebar.html:52 stock/templates/stock/item.html:112
+#: order/templates/order/so_sidebar.html:15 part/templates/part/detail.html:216
+#: part/templates/part/part_sidebar.html:55 stock/templates/stock/item.html:112
#: stock/templates/stock/stock_sidebar.html:23
msgid "Attachments"
msgstr ""
-#: build/templates/build/detail.html:294
+#: build/templates/build/detail.html:298
msgid "Build Notes"
msgstr ""
-#: build/templates/build/detail.html:298 build/templates/build/detail.html:453
+#: build/templates/build/detail.html:302 build/templates/build/detail.html:478
#: company/templates/company/detail.html:188
#: company/templates/company/detail.html:215
#: order/templates/order/purchase_order_detail.html:80
#: order/templates/order/purchase_order_detail.html:108
#: order/templates/order/sales_order_detail.html:127
#: order/templates/order/sales_order_detail.html:186
-#: part/templates/part/detail.html:141 stock/templates/stock/item.html:132
-#: stock/templates/stock/item.html:235
+#: part/templates/part/detail.html:144 stock/templates/stock/item.html:132
+#: stock/templates/stock/item.html:230
msgid "Edit Notes"
msgstr ""
-#: build/templates/build/detail.html:477
+#: build/templates/build/detail.html:502
msgid "Allocation Complete"
msgstr ""
-#: build/templates/build/detail.html:478
+#: build/templates/build/detail.html:503
msgid "All untracked stock items have been allocated"
msgstr ""
-#: build/templates/build/index.html:18 part/templates/part/detail.html:320
+#: build/templates/build/index.html:18 part/templates/part/detail.html:323
msgid "New Build Order"
msgstr ""
@@ -1406,51 +1457,11 @@ msgstr ""
msgid "Completed Items"
msgstr ""
-#: build/views.py:76
+#: build/views.py:73
msgid "Build was cancelled"
msgstr ""
-#: build/views.py:88
-msgid "Create Build Output"
-msgstr ""
-
-#: build/views.py:106
-msgid "Maximum output quantity is "
-msgstr ""
-
-#: build/views.py:122 stock/serializers.py:363 stock/views.py:1257
-msgid "Serial numbers already exist"
-msgstr ""
-
-#: build/views.py:131
-msgid "Serial numbers required for trackable build output"
-msgstr ""
-
-#: build/views.py:197
-msgid "Delete Build Output"
-msgstr ""
-
-#: build/views.py:218
-msgid "Confirm unallocation of build stock"
-msgstr ""
-
-#: build/views.py:219 stock/views.py:352
-msgid "Check the confirmation box"
-msgstr ""
-
-#: build/views.py:231
-msgid "Build output does not match build"
-msgstr ""
-
-#: build/views.py:233
-msgid "Build output must be specified"
-msgstr ""
-
-#: build/views.py:245
-msgid "Build output deleted"
-msgstr ""
-
-#: build/views.py:286
+#: build/views.py:114
msgid "Delete Build Order"
msgstr ""
@@ -1639,9 +1650,9 @@ msgstr ""
msgid "Copy category parameter templates when creating a part"
msgstr ""
-#: common/models.py:705 part/models.py:2489 report/models.py:187
+#: common/models.py:705 part/models.py:2525 report/models.py:187
#: templates/js/translated/table_filters.js:38
-#: templates/js/translated/table_filters.js:422
+#: templates/js/translated/table_filters.js:417
msgid "Template"
msgstr ""
@@ -1649,9 +1660,9 @@ msgstr ""
msgid "Parts are templates by default"
msgstr ""
-#: common/models.py:712 part/models.py:921 templates/js/translated/bom.js:1082
+#: common/models.py:712 part/models.py:951 templates/js/translated/bom.js:1300
#: templates/js/translated/table_filters.js:168
-#: templates/js/translated/table_filters.js:434
+#: templates/js/translated/table_filters.js:429
msgid "Assembly"
msgstr ""
@@ -1659,8 +1670,8 @@ msgstr ""
msgid "Parts can be assembled from other components by default"
msgstr ""
-#: common/models.py:719 part/models.py:927
-#: templates/js/translated/table_filters.js:438
+#: common/models.py:719 part/models.py:957
+#: templates/js/translated/table_filters.js:433
msgid "Component"
msgstr ""
@@ -1668,7 +1679,7 @@ msgstr ""
msgid "Parts can be used as sub-components by default"
msgstr ""
-#: common/models.py:726 part/models.py:938
+#: common/models.py:726 part/models.py:968
msgid "Purchaseable"
msgstr ""
@@ -1676,8 +1687,8 @@ msgstr ""
msgid "Parts are purchaseable by default"
msgstr ""
-#: common/models.py:733 part/models.py:943
-#: templates/js/translated/table_filters.js:446
+#: common/models.py:733 part/models.py:973
+#: templates/js/translated/table_filters.js:441
msgid "Salable"
msgstr ""
@@ -1685,10 +1696,10 @@ msgstr ""
msgid "Parts are salable by default"
msgstr ""
-#: common/models.py:740 part/models.py:933
+#: common/models.py:740 part/models.py:963
#: templates/js/translated/table_filters.js:46
#: templates/js/translated/table_filters.js:100
-#: templates/js/translated/table_filters.js:450
+#: templates/js/translated/table_filters.js:445
msgid "Trackable"
msgstr ""
@@ -1696,7 +1707,7 @@ msgstr ""
msgid "Parts are trackable by default"
msgstr ""
-#: common/models.py:747 part/models.py:953
+#: common/models.py:747 part/models.py:983
#: part/templates/part/part_base.html:147
#: templates/js/translated/table_filters.js:42
msgid "Virtual"
@@ -1730,589 +1741,595 @@ msgstr ""
msgid "Include pricing information in BOM tables"
msgstr ""
-#: common/models.py:780
+#: common/models.py:785
+msgid "Show Price History"
+msgstr ""
+
+#: common/models.py:786
+msgid "Display historical pricing for Part"
+msgstr ""
+
+#: common/models.py:792
msgid "Show related parts"
msgstr ""
-#: common/models.py:781
+#: common/models.py:793
msgid "Display related parts for a part"
msgstr ""
-#: common/models.py:787
+#: common/models.py:799
msgid "Create initial stock"
msgstr ""
-#: common/models.py:788
+#: common/models.py:800
msgid "Create initial stock on part creation"
msgstr ""
-#: common/models.py:794
+#: common/models.py:806
msgid "Internal Prices"
msgstr ""
-#: common/models.py:795
+#: common/models.py:807
msgid "Enable internal prices for parts"
msgstr ""
-#: common/models.py:801
+#: common/models.py:813
msgid "Internal Price as BOM-Price"
msgstr ""
-#: common/models.py:802
+#: common/models.py:814
msgid "Use the internal price (if set) in BOM-price calculations"
msgstr ""
-#: common/models.py:808
+#: common/models.py:820
msgid "Part Name Display Format"
msgstr ""
-#: common/models.py:809
+#: common/models.py:821
msgid "Format to display the part name"
msgstr ""
-#: common/models.py:816
+#: common/models.py:828
msgid "Enable Reports"
msgstr ""
-#: common/models.py:817
+#: common/models.py:829
msgid "Enable generation of reports"
msgstr ""
-#: common/models.py:823 templates/stats.html:25
+#: common/models.py:835 templates/stats.html:25
msgid "Debug Mode"
msgstr ""
-#: common/models.py:824
+#: common/models.py:836
msgid "Generate reports in debug mode (HTML output)"
msgstr ""
-#: common/models.py:830
+#: common/models.py:842
msgid "Page Size"
msgstr ""
-#: common/models.py:831
+#: common/models.py:843
msgid "Default page size for PDF reports"
msgstr ""
-#: common/models.py:841
+#: common/models.py:853
msgid "Test Reports"
msgstr ""
-#: common/models.py:842
+#: common/models.py:854
msgid "Enable generation of test reports"
msgstr ""
-#: common/models.py:848
+#: common/models.py:860
msgid "Stock Expiry"
msgstr ""
-#: common/models.py:849
+#: common/models.py:861
msgid "Enable stock expiry functionality"
msgstr ""
-#: common/models.py:855
+#: common/models.py:867
msgid "Sell Expired Stock"
msgstr ""
-#: common/models.py:856
+#: common/models.py:868
msgid "Allow sale of expired stock"
msgstr ""
-#: common/models.py:862
+#: common/models.py:874
msgid "Stock Stale Time"
msgstr ""
-#: common/models.py:863
+#: common/models.py:875
msgid "Number of days stock items are considered stale before expiring"
msgstr ""
-#: common/models.py:865
+#: common/models.py:877
msgid "days"
msgstr ""
-#: common/models.py:870
+#: common/models.py:882
msgid "Build Expired Stock"
msgstr ""
-#: common/models.py:871
+#: common/models.py:883
msgid "Allow building with expired stock"
msgstr ""
-#: common/models.py:877
+#: common/models.py:889
msgid "Stock Ownership Control"
msgstr ""
-#: common/models.py:878
+#: common/models.py:890
msgid "Enable ownership control over stock locations and items"
msgstr ""
-#: common/models.py:884
+#: common/models.py:896
msgid "Build Order Reference Prefix"
msgstr ""
-#: common/models.py:885
+#: common/models.py:897
msgid "Prefix value for build order reference"
msgstr ""
-#: common/models.py:890
+#: common/models.py:902
msgid "Build Order Reference Regex"
msgstr ""
-#: common/models.py:891
+#: common/models.py:903
msgid "Regular expression pattern for matching build order reference"
msgstr ""
-#: common/models.py:895
+#: common/models.py:907
msgid "Sales Order Reference Prefix"
msgstr ""
-#: common/models.py:896
+#: common/models.py:908
msgid "Prefix value for sales order reference"
msgstr ""
-#: common/models.py:901
+#: common/models.py:913
msgid "Purchase Order Reference Prefix"
msgstr ""
-#: common/models.py:902
+#: common/models.py:914
msgid "Prefix value for purchase order reference"
msgstr ""
-#: common/models.py:908
+#: common/models.py:920
msgid "Enable password forgot"
msgstr ""
-#: common/models.py:909
+#: common/models.py:921
msgid "Enable password forgot function on the login pages"
msgstr ""
-#: common/models.py:914
+#: common/models.py:926
msgid "Enable registration"
msgstr ""
-#: common/models.py:915
+#: common/models.py:927
msgid "Enable self-registration for users on the login pages"
msgstr ""
-#: common/models.py:920
+#: common/models.py:932
msgid "Enable SSO"
msgstr ""
-#: common/models.py:921
+#: common/models.py:933
msgid "Enable SSO on the login pages"
msgstr ""
-#: common/models.py:926
+#: common/models.py:938
msgid "Email required"
msgstr ""
-#: common/models.py:927
+#: common/models.py:939
msgid "Require user to supply mail on signup"
msgstr ""
-#: common/models.py:932
+#: common/models.py:944
msgid "Auto-fill SSO users"
msgstr ""
-#: common/models.py:933
+#: common/models.py:945
msgid "Automatically fill out user-details from SSO account-data"
msgstr ""
-#: common/models.py:938
+#: common/models.py:950
msgid "Mail twice"
msgstr ""
-#: common/models.py:939
+#: common/models.py:951
msgid "On signup ask users twice for their mail"
msgstr ""
-#: common/models.py:944
+#: common/models.py:956
msgid "Password twice"
msgstr ""
-#: common/models.py:945
+#: common/models.py:957
msgid "On signup ask users twice for their password"
msgstr ""
-#: common/models.py:950
+#: common/models.py:962
msgid "Group on signup"
msgstr ""
-#: common/models.py:951
+#: common/models.py:963
msgid "Group to which new users are assigned on registration"
msgstr ""
-#: common/models.py:956
+#: common/models.py:968
msgid "Enforce MFA"
msgstr ""
-#: common/models.py:957
+#: common/models.py:969
msgid "Users must use multifactor security."
msgstr ""
-#: common/models.py:964
+#: common/models.py:976
msgid "Enable URL integration"
msgstr ""
-#: common/models.py:965
+#: common/models.py:977
msgid "Enable plugins to add URL routes"
msgstr ""
-#: common/models.py:971
+#: common/models.py:983
msgid "Enable navigation integration"
msgstr ""
-#: common/models.py:972
+#: common/models.py:984
msgid "Enable plugins to integrate into navigation"
msgstr ""
-#: common/models.py:978
+#: common/models.py:990
msgid "Enable app integration"
msgstr ""
-#: common/models.py:979
+#: common/models.py:991
msgid "Enable plugins to add apps"
msgstr ""
-#: common/models.py:985
+#: common/models.py:997
msgid "Enable schedule integration"
msgstr ""
-#: common/models.py:986
+#: common/models.py:998
msgid "Enable plugins to run scheduled tasks"
msgstr ""
-#: common/models.py:992
+#: common/models.py:1004
msgid "Enable event integration"
msgstr ""
-#: common/models.py:993
+#: common/models.py:1005
msgid "Enable plugins to respond to internal events"
msgstr ""
-#: common/models.py:1008 common/models.py:1216
+#: common/models.py:1020 common/models.py:1228
msgid "Settings key (must be unique - case insensitive"
msgstr ""
-#: common/models.py:1039
+#: common/models.py:1051
msgid "Show subscribed parts"
msgstr ""
-#: common/models.py:1040
+#: common/models.py:1052
msgid "Show subscribed parts on the homepage"
msgstr ""
-#: common/models.py:1045
+#: common/models.py:1057
msgid "Show subscribed categories"
msgstr ""
-#: common/models.py:1046
+#: common/models.py:1058
msgid "Show subscribed part categories on the homepage"
msgstr ""
-#: common/models.py:1051
+#: common/models.py:1063
msgid "Show latest parts"
msgstr ""
-#: common/models.py:1052
+#: common/models.py:1064
msgid "Show latest parts on the homepage"
msgstr ""
-#: common/models.py:1057
+#: common/models.py:1069
msgid "Recent Part Count"
msgstr ""
-#: common/models.py:1058
+#: common/models.py:1070
msgid "Number of recent parts to display on index page"
msgstr ""
-#: common/models.py:1064
+#: common/models.py:1076
msgid "Show unvalidated BOMs"
msgstr ""
-#: common/models.py:1065
+#: common/models.py:1077
msgid "Show BOMs that await validation on the homepage"
msgstr ""
-#: common/models.py:1070
+#: common/models.py:1082
msgid "Show recent stock changes"
msgstr ""
-#: common/models.py:1071
+#: common/models.py:1083
msgid "Show recently changed stock items on the homepage"
msgstr ""
-#: common/models.py:1076
+#: common/models.py:1088
msgid "Recent Stock Count"
msgstr ""
-#: common/models.py:1077
+#: common/models.py:1089
msgid "Number of recent stock items to display on index page"
msgstr ""
-#: common/models.py:1082
+#: common/models.py:1094
msgid "Show low stock"
msgstr ""
-#: common/models.py:1083
+#: common/models.py:1095
msgid "Show low stock items on the homepage"
msgstr ""
-#: common/models.py:1088
+#: common/models.py:1100
msgid "Show depleted stock"
msgstr ""
-#: common/models.py:1089
+#: common/models.py:1101
msgid "Show depleted stock items on the homepage"
msgstr ""
-#: common/models.py:1094
+#: common/models.py:1106
msgid "Show needed stock"
msgstr ""
-#: common/models.py:1095
+#: common/models.py:1107
msgid "Show stock items needed for builds on the homepage"
msgstr ""
-#: common/models.py:1100
+#: common/models.py:1112
msgid "Show expired stock"
msgstr ""
-#: common/models.py:1101
+#: common/models.py:1113
msgid "Show expired stock items on the homepage"
msgstr ""
-#: common/models.py:1106
+#: common/models.py:1118
msgid "Show stale stock"
msgstr ""
-#: common/models.py:1107
+#: common/models.py:1119
msgid "Show stale stock items on the homepage"
msgstr ""
-#: common/models.py:1112
+#: common/models.py:1124
msgid "Show pending builds"
msgstr ""
-#: common/models.py:1113
+#: common/models.py:1125
msgid "Show pending builds on the homepage"
msgstr ""
-#: common/models.py:1118
+#: common/models.py:1130
msgid "Show overdue builds"
msgstr ""
-#: common/models.py:1119
+#: common/models.py:1131
msgid "Show overdue builds on the homepage"
msgstr ""
-#: common/models.py:1124
+#: common/models.py:1136
msgid "Show outstanding POs"
msgstr ""
-#: common/models.py:1125
+#: common/models.py:1137
msgid "Show outstanding POs on the homepage"
msgstr ""
-#: common/models.py:1130
+#: common/models.py:1142
msgid "Show overdue POs"
msgstr ""
-#: common/models.py:1131
+#: common/models.py:1143
msgid "Show overdue POs on the homepage"
msgstr ""
-#: common/models.py:1136
+#: common/models.py:1148
msgid "Show outstanding SOs"
msgstr ""
-#: common/models.py:1137
+#: common/models.py:1149
msgid "Show outstanding SOs on the homepage"
msgstr ""
-#: common/models.py:1142
+#: common/models.py:1154
msgid "Show overdue SOs"
msgstr ""
-#: common/models.py:1143
+#: common/models.py:1155
msgid "Show overdue SOs on the homepage"
msgstr ""
-#: common/models.py:1149
+#: common/models.py:1161
msgid "Inline label display"
msgstr ""
-#: common/models.py:1150
+#: common/models.py:1162
msgid "Display PDF labels in the browser, instead of downloading as a file"
msgstr ""
-#: common/models.py:1156
+#: common/models.py:1168
msgid "Inline report display"
msgstr ""
-#: common/models.py:1157
+#: common/models.py:1169
msgid "Display PDF reports in the browser, instead of downloading as a file"
msgstr ""
-#: common/models.py:1163
+#: common/models.py:1175
msgid "Search Preview Results"
msgstr ""
-#: common/models.py:1164
+#: common/models.py:1176
msgid "Number of results to show in search preview window"
msgstr ""
-#: common/models.py:1170
+#: common/models.py:1182
msgid "Search Show Stock"
msgstr ""
-#: common/models.py:1171
+#: common/models.py:1183
msgid "Display stock levels in search preview window"
msgstr ""
-#: common/models.py:1177
+#: common/models.py:1189
msgid "Hide Inactive Parts"
msgstr ""
-#: common/models.py:1178
+#: common/models.py:1190
msgid "Hide inactive parts in search preview window"
msgstr ""
-#: common/models.py:1184
+#: common/models.py:1196
msgid "Show Quantity in Forms"
msgstr ""
-#: common/models.py:1185
+#: common/models.py:1197
msgid "Display available part quantity in some forms"
msgstr ""
-#: common/models.py:1191
+#: common/models.py:1203
msgid "Escape Key Closes Forms"
msgstr ""
-#: common/models.py:1192
+#: common/models.py:1204
msgid "Use the escape key to close modal forms"
msgstr ""
-#: common/models.py:1198
+#: common/models.py:1210
msgid "Fixed Navbar"
msgstr ""
-#: common/models.py:1199
+#: common/models.py:1211
msgid "InvenTree navbar position is fixed to the top of the screen"
msgstr ""
-#: common/models.py:1264 company/forms.py:43
+#: common/models.py:1276 company/forms.py:43
msgid "Price break quantity"
msgstr ""
-#: common/models.py:1271 company/serializers.py:264
+#: common/models.py:1283 company/serializers.py:264
#: company/templates/company/supplier_part.html:256
#: templates/js/translated/part.js:915 templates/js/translated/part.js:1867
msgid "Price"
msgstr ""
-#: common/models.py:1272
+#: common/models.py:1284
msgid "Unit price at specified quantity"
msgstr ""
-#: common/models.py:1429 common/models.py:1568
+#: common/models.py:1441 common/models.py:1580
msgid "Endpoint"
msgstr ""
-#: common/models.py:1430
+#: common/models.py:1442
msgid "Endpoint at which this webhook is received"
msgstr ""
-#: common/models.py:1439
+#: common/models.py:1451
msgid "Name for this webhook"
msgstr ""
-#: common/models.py:1444 part/models.py:948 plugin/models.py:46
+#: common/models.py:1456 part/models.py:978 plugin/models.py:46
#: templates/js/translated/table_filters.js:34
#: templates/js/translated/table_filters.js:96
-#: templates/js/translated/table_filters.js:295
-#: templates/js/translated/table_filters.js:417
+#: templates/js/translated/table_filters.js:290
+#: templates/js/translated/table_filters.js:412
msgid "Active"
msgstr ""
-#: common/models.py:1445
+#: common/models.py:1457
msgid "Is this webhook active"
msgstr ""
-#: common/models.py:1459
+#: common/models.py:1471
msgid "Token"
msgstr ""
-#: common/models.py:1460
+#: common/models.py:1472
msgid "Token for access"
msgstr ""
-#: common/models.py:1467
+#: common/models.py:1479
msgid "Secret"
msgstr ""
-#: common/models.py:1468
+#: common/models.py:1480
msgid "Shared secret for HMAC"
msgstr ""
-#: common/models.py:1535
+#: common/models.py:1547
msgid "Message ID"
msgstr ""
-#: common/models.py:1536
+#: common/models.py:1548
msgid "Unique identifier for this message"
msgstr ""
-#: common/models.py:1544
+#: common/models.py:1556
msgid "Host"
msgstr ""
-#: common/models.py:1545
+#: common/models.py:1557
msgid "Host from which this message was received"
msgstr ""
-#: common/models.py:1552
+#: common/models.py:1564
msgid "Header"
msgstr ""
-#: common/models.py:1553
+#: common/models.py:1565
msgid "Header of this message"
msgstr ""
-#: common/models.py:1559
+#: common/models.py:1571
msgid "Body"
msgstr ""
-#: common/models.py:1560
+#: common/models.py:1572
msgid "Body of this message"
msgstr ""
-#: common/models.py:1569
+#: common/models.py:1581
msgid "Endpoint on which this message was received"
msgstr ""
-#: common/models.py:1574
+#: common/models.py:1586
msgid "Worked on"
msgstr ""
-#: common/models.py:1575
+#: common/models.py:1587
msgid "Was the work on this message finished?"
msgstr ""
#: common/views.py:93 order/templates/order/order_wizard/po_upload.html:49
#: order/templates/order/purchase_order_detail.html:24 order/views.py:243
-#: part/templates/part/bom_upload/upload_file.html:52
-#: part/templates/part/import_wizard/part_upload.html:47 part/views.py:213
-#: part/views.py:773
+#: part/templates/part/import_wizard/part_upload.html:47 part/views.py:210
+#: templates/patterns/wizard/upload.html:35
msgid "Upload File"
msgstr ""
-#: common/views.py:94 order/templates/order/order_wizard/match_fields.html:52
-#: order/views.py:244 part/templates/part/bom_upload/match_fields.html:52
+#: common/views.py:94 order/views.py:244
#: part/templates/part/import_wizard/ajax_match_fields.html:45
-#: part/templates/part/import_wizard/match_fields.html:52 part/views.py:214
-#: part/views.py:774
+#: part/templates/part/import_wizard/match_fields.html:52 part/views.py:211
+#: templates/patterns/wizard/match_fields.html:51
msgid "Match Fields"
msgstr ""
@@ -2328,15 +2345,13 @@ msgstr ""
msgid "Parts imported"
msgstr ""
-#: common/views.py:517 order/templates/order/order_wizard/match_fields.html:27
-#: order/templates/order/order_wizard/match_parts.html:19
+#: common/views.py:517 order/templates/order/order_wizard/match_parts.html:19
#: order/templates/order/order_wizard/po_upload.html:47
-#: part/templates/part/bom_upload/match_fields.html:27
-#: part/templates/part/bom_upload/match_parts.html:19
-#: part/templates/part/bom_upload/upload_file.html:50
#: part/templates/part/import_wizard/match_fields.html:27
#: part/templates/part/import_wizard/match_references.html:19
#: part/templates/part/import_wizard/part_upload.html:45
+#: templates/patterns/wizard/match_fields.html:26
+#: templates/patterns/wizard/upload.html:33
msgid "Previous Step"
msgstr ""
@@ -2404,7 +2419,7 @@ msgstr ""
msgid "Link to external company information"
msgstr ""
-#: company/models.py:139 part/models.py:840
+#: company/models.py:139 part/models.py:870
msgid "Image"
msgstr ""
@@ -2442,7 +2457,7 @@ msgid "Default currency used for this company"
msgstr ""
#: company/models.py:320 company/models.py:535 stock/models.py:471
-#: stock/templates/stock/item_base.html:142 templates/js/translated/bom.js:328
+#: stock/templates/stock/item_base.html:144 templates/js/translated/bom.js:541
msgid "Base Part"
msgstr ""
@@ -2453,11 +2468,11 @@ 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:380
+#: stock/templates/stock/item_base.html:382
#: templates/js/translated/company.js:333
#: templates/js/translated/company.js:517
#: templates/js/translated/company.js:800 templates/js/translated/part.js:234
-#: templates/js/translated/table_filters.js:389
+#: templates/js/translated/table_filters.js:384
msgid "Manufacturer"
msgstr ""
@@ -2488,7 +2503,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:390
+#: stock/templates/stock/item_base.html:392
msgid "Manufacturer Part"
msgstr ""
@@ -2499,7 +2514,7 @@ msgstr ""
#: company/models.py:422
#: report/templates/report/inventree_test_report_base.html:95
#: stock/models.py:1988 templates/js/translated/company.js:647
-#: templates/js/translated/part.js:715 templates/js/translated/stock.js:1304
+#: templates/js/translated/part.js:715 templates/js/translated/stock.js:1332
msgid "Value"
msgstr ""
@@ -2507,9 +2522,9 @@ msgstr ""
msgid "Parameter value"
msgstr ""
-#: company/models.py:429 part/models.py:915 part/models.py:2457
+#: company/models.py:429 part/models.py:945 part/models.py:2493
#: part/templates/part/part_base.html:288
-#: templates/InvenTree/settings/settings.html:287
+#: templates/InvenTree/settings/settings.html:324
#: templates/js/translated/company.js:653 templates/js/translated/part.js:721
msgid "Units"
msgstr ""
@@ -2526,11 +2541,11 @@ msgstr ""
#: company/templates/company/supplier_part.html:87 order/models.py:227
#: order/templates/order/order_base.html:112
#: order/templates/order/order_wizard/select_pos.html:30 part/bom.py:237
-#: part/bom.py:265 stock/templates/stock/item_base.html:397
+#: part/bom.py:265 stock/templates/stock/item_base.html:399
#: templates/js/translated/company.js:337
#: templates/js/translated/company.js:774 templates/js/translated/order.js:823
#: templates/js/translated/part.js:215 templates/js/translated/part.js:863
-#: templates/js/translated/table_filters.js:393
+#: templates/js/translated/table_filters.js:388
msgid "Supplier"
msgstr ""
@@ -2561,22 +2576,23 @@ msgid "Supplier part description"
msgstr ""
#: company/models.py:576 company/templates/company/supplier_part.html:119
-#: part/models.py:2648 report/templates/report/inventree_po_report.html:93
-#: report/templates/report/inventree_so_report.html:93
+#: part/models.py:2717 part/templates/part/upload_bom.html:59
+#: report/templates/report/inventree_po_report.html:93
+#: report/templates/report/inventree_so_report.html:93 stock/serializers.py:409
msgid "Note"
msgstr ""
-#: company/models.py:580 part/models.py:1781
+#: company/models.py:580 part/models.py:1817
msgid "base cost"
msgstr ""
-#: company/models.py:580 part/models.py:1781
+#: company/models.py:580 part/models.py:1817
msgid "Minimum charge (e.g. stocking fee)"
msgstr ""
#: company/models.py:582 company/templates/company/supplier_part.html:112
-#: stock/models.py:495 stock/templates/stock/item_base.html:338
-#: templates/js/translated/company.js:850 templates/js/translated/stock.js:1799
+#: stock/models.py:495 stock/templates/stock/item_base.html:340
+#: templates/js/translated/company.js:850 templates/js/translated/stock.js:1923
msgid "Packaging"
msgstr ""
@@ -2584,7 +2600,7 @@ msgstr ""
msgid "Part packaging"
msgstr ""
-#: company/models.py:584 part/models.py:1783
+#: company/models.py:584 part/models.py:1819
msgid "multiple"
msgstr ""
@@ -2645,11 +2661,11 @@ msgstr ""
#: company/templates/company/company_base.html:83 order/models.py:552
#: order/templates/order/sales_order_base.html:115 stock/models.py:514
-#: stock/models.py:515 stock/serializers.py:626
-#: stock/templates/stock/item_base.html:290
+#: stock/models.py:515 stock/serializers.py:683
+#: stock/templates/stock/item_base.html:292
#: templates/js/translated/company.js:329 templates/js/translated/order.js:1240
-#: templates/js/translated/stock.js:2610
-#: templates/js/translated/table_filters.js:397
+#: templates/js/translated/stock.js:2734
+#: templates/js/translated/table_filters.js:392
msgid "Customer"
msgstr ""
@@ -2679,7 +2695,7 @@ msgstr ""
#: company/templates/company/detail.html:20
#: company/templates/company/manufacturer_part.html:118
-#: part/templates/part/detail.html:353
+#: part/templates/part/detail.html:356
msgid "New Supplier Part"
msgstr ""
@@ -2687,8 +2703,8 @@ msgstr ""
#: company/templates/company/detail.html:79
#: company/templates/company/manufacturer_part.html:127
#: company/templates/company/manufacturer_part.html:156
-#: part/templates/part/category.html:171 part/templates/part/detail.html:362
-#: part/templates/part/detail.html:391
+#: part/templates/part/category.html:171 part/templates/part/detail.html:365
+#: part/templates/part/detail.html:394
msgid "Options"
msgstr ""
@@ -2716,7 +2732,7 @@ msgstr ""
msgid "Create new manufacturer part"
msgstr ""
-#: company/templates/company/detail.html:67 part/templates/part/detail.html:381
+#: company/templates/company/detail.html:67 part/templates/part/detail.html:384
msgid "New Manufacturer Part"
msgstr ""
@@ -2730,7 +2746,7 @@ msgstr ""
#: order/templates/order/order_base.html:13
#: order/templates/order/purchase_orders.html:8
#: order/templates/order/purchase_orders.html:12
-#: part/templates/part/detail.html:85 part/templates/part/part_sidebar.html:37
+#: part/templates/part/detail.html:85 part/templates/part/part_sidebar.html:40
#: templates/InvenTree/index.html:252 templates/InvenTree/search.html:197
#: templates/InvenTree/settings/sidebar.html:45 templates/navbar.html:47
#: users/models.py:45
@@ -2752,7 +2768,7 @@ msgstr ""
#: order/templates/order/sales_order_base.html:13
#: order/templates/order/sales_orders.html:8
#: order/templates/order/sales_orders.html:15
-#: part/templates/part/detail.html:108 part/templates/part/part_sidebar.html:41
+#: part/templates/part/detail.html:108 part/templates/part/part_sidebar.html:44
#: templates/InvenTree/index.html:283 templates/InvenTree/search.html:217
#: templates/InvenTree/settings/sidebar.html:47 templates/navbar.html:58
#: users/models.py:46
@@ -2770,7 +2786,7 @@ msgid "New Sales Order"
msgstr ""
#: company/templates/company/detail.html:168
-#: templates/js/translated/build.js:1059
+#: templates/js/translated/build.js:1281
msgid "Assigned Stock"
msgstr ""
@@ -2780,13 +2796,13 @@ msgstr ""
#: company/templates/company/detail.html:384
#: company/templates/company/manufacturer_part.html:215
-#: part/templates/part/detail.html:435
+#: part/templates/part/detail.html:438
msgid "Delete Supplier Parts?"
msgstr ""
#: company/templates/company/detail.html:385
#: company/templates/company/manufacturer_part.html:216
-#: part/templates/part/detail.html:436
+#: part/templates/part/detail.html:439
msgid "All selected supplier parts will be deleted"
msgstr ""
@@ -2824,36 +2840,36 @@ 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:35 part/templates/part/prices.html:163
+#: part/templates/part/part_sidebar.html:38 part/templates/part/prices.html:163
#: templates/InvenTree/search.html:188 templates/navbar.html:45
msgid "Suppliers"
msgstr ""
#: company/templates/company/manufacturer_part.html:129
-#: part/templates/part/detail.html:364
+#: part/templates/part/detail.html:367
msgid "Delete supplier parts"
msgstr ""
#: company/templates/company/manufacturer_part.html:129
#: company/templates/company/manufacturer_part.html:158
#: company/templates/company/manufacturer_part.html:254
-#: part/templates/part/detail.html:364 part/templates/part/detail.html:393
+#: part/templates/part/detail.html:367 part/templates/part/detail.html:396
#: templates/js/translated/company.js:426 templates/js/translated/helpers.js:31
-#: users/models.py:212
+#: users/models.py:217
msgid "Delete"
msgstr ""
#: company/templates/company/manufacturer_part.html:143
#: company/templates/company/manufacturer_part_sidebar.html:5
#: part/templates/part/category_sidebar.html:17
-#: part/templates/part/detail.html:187 part/templates/part/part_sidebar.html:8
+#: part/templates/part/detail.html:190 part/templates/part/part_sidebar.html:9
msgid "Parameters"
msgstr ""
#: company/templates/company/manufacturer_part.html:147
-#: part/templates/part/detail.html:192
+#: part/templates/part/detail.html:195
#: templates/InvenTree/settings/category.html:12
-#: templates/InvenTree/settings/part.html:65
+#: templates/InvenTree/settings/part.html:66
msgid "New Parameter"
msgstr ""
@@ -2862,7 +2878,7 @@ msgid "Delete parameters"
msgstr ""
#: company/templates/company/manufacturer_part.html:191
-#: part/templates/part/detail.html:892
+#: part/templates/part/detail.html:895
msgid "Add Parameter"
msgstr ""
@@ -2892,8 +2908,8 @@ msgstr ""
#: company/templates/company/supplier_part.html:7
#: company/templates/company/supplier_part.html:24 stock/models.py:479
-#: stock/templates/stock/item_base.html:402
-#: templates/js/translated/company.js:790 templates/js/translated/stock.js:1756
+#: stock/templates/stock/item_base.html:404
+#: templates/js/translated/company.js:790 templates/js/translated/stock.js:1880
msgid "Supplier Part"
msgstr ""
@@ -2919,7 +2935,7 @@ msgstr ""
#: company/templates/company/supplier_part.html:142
#: part/templates/part/detail.html:25 stock/templates/stock/location.html:167
-#: templates/js/translated/stock.js:368
+#: templates/js/translated/stock.js:369
msgid "New Stock Item"
msgstr ""
@@ -2940,7 +2956,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:1628
+#: part/templates/part/prices.html:271 part/views.py:1319
msgid "Add Price Break"
msgstr ""
@@ -2948,11 +2964,11 @@ msgstr ""
msgid "No price break information found"
msgstr ""
-#: company/templates/company/supplier_part.html:224 part/views.py:1690
+#: company/templates/company/supplier_part.html:224 part/views.py:1381
msgid "Delete Price Break"
msgstr ""
-#: company/templates/company/supplier_part.html:238 part/views.py:1676
+#: company/templates/company/supplier_part.html:238 part/views.py:1367
msgid "Edit Price Break"
msgstr ""
@@ -2965,15 +2981,15 @@ msgid "Delete price break"
msgstr ""
#: company/templates/company/supplier_part_navbar.html:15
-#: part/templates/part/part_sidebar.html:14
+#: part/templates/part/part_sidebar.html:15
#: 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:150
#: templates/InvenTree/settings/sidebar.html:41
-#: templates/js/translated/bom.js:340 templates/js/translated/part.js:495
+#: templates/js/translated/bom.js:553 templates/js/translated/part.js:495
#: templates/js/translated/part.js:630 templates/js/translated/part.js:1125
-#: templates/js/translated/part.js:1286 templates/js/translated/stock.js:935
-#: templates/js/translated/stock.js:1588 templates/navbar.html:28
+#: templates/js/translated/part.js:1286 templates/js/translated/stock.js:936
+#: templates/js/translated/stock.js:1712 templates/navbar.html:28
msgid "Stock"
msgstr ""
@@ -2987,7 +3003,7 @@ msgid "Supplier Part Pricing"
msgstr ""
#: company/templates/company/supplier_part_navbar.html:29
-#: part/templates/part/part_sidebar.html:28
+#: part/templates/part/part_sidebar.html:30
msgid "Pricing"
msgstr ""
@@ -2996,7 +3012,7 @@ msgstr ""
#: stock/templates/stock/location.html:151
#: stock/templates/stock/location.html:163
#: stock/templates/stock/location_sidebar.html:7
-#: templates/InvenTree/search.html:152 templates/js/translated/stock.js:2509
+#: templates/InvenTree/search.html:152 templates/js/translated/stock.js:2633
#: templates/stats.html:105 templates/stats.html:114 users/models.py:43
msgid "Stock Items"
msgstr ""
@@ -3026,20 +3042,20 @@ msgstr ""
msgid "New Company"
msgstr ""
-#: company/views.py:129 part/views.py:593
+#: company/views.py:129 part/views.py:591
msgid "Download Image"
msgstr ""
-#: company/views.py:158 part/views.py:625
+#: company/views.py:158 part/views.py:623
msgid "Image size exceeds maximum allowable size for download"
msgstr ""
-#: company/views.py:165 part/views.py:632
+#: company/views.py:165 part/views.py:630
#, python-brace-format
msgid "Invalid response: {code}"
msgstr ""
-#: company/views.py:174 part/views.py:641
+#: company/views.py:174 part/views.py:639
msgid "Supplied URL is not a valid image file"
msgstr ""
@@ -3256,16 +3272,16 @@ msgid "Supplier part must match supplier"
msgstr ""
#: order/models.py:855 order/models.py:946 order/models.py:1042
-#: templates/js/translated/order.js:1820 templates/js/translated/stock.js:2271
+#: templates/js/translated/order.js:1820 templates/js/translated/stock.js:2395
msgid "Order"
msgstr ""
#: order/models.py:856 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:352
+#: stock/templates/stock/item_base.html:354
#: templates/js/translated/order.js:801 templates/js/translated/part.js:838
-#: templates/js/translated/stock.js:1733 templates/js/translated/stock.js:2591
+#: templates/js/translated/stock.js:1857 templates/js/translated/stock.js:2715
msgid "Purchase Order"
msgstr ""
@@ -3276,7 +3292,7 @@ msgstr ""
#: order/models.py:884 order/templates/order/order_base.html:163
#: templates/js/translated/order.js:589 templates/js/translated/order.js:1118
#: templates/js/translated/part.js:910 templates/js/translated/part.js:937
-#: templates/js/translated/table_filters.js:317
+#: templates/js/translated/table_filters.js:312
msgid "Received"
msgstr ""
@@ -3285,8 +3301,8 @@ msgid "Number of items received"
msgstr ""
#: order/models.py:892 part/templates/part/prices.html:176 stock/models.py:608
-#: stock/serializers.py:170 stock/templates/stock/item_base.html:359
-#: templates/js/translated/stock.js:1787
+#: stock/serializers.py:170 stock/templates/stock/item_base.html:361
+#: templates/js/translated/stock.js:1911
msgid "Purchase Price"
msgstr ""
@@ -3530,7 +3546,7 @@ msgstr ""
#: order/templates/order/order_base.html:94
#: order/templates/order/sales_order_base.html:89
-#: templates/js/translated/stock.js:2327
+#: templates/js/translated/stock.js:2451
msgid "Order Status"
msgstr ""
@@ -3574,73 +3590,20 @@ msgstr ""
msgid "After placing this purchase order, line items will no longer be editable."
msgstr ""
-#: order/templates/order/order_wizard/match_fields.html:9
-#: part/templates/part/bom_upload/match_fields.html:9
-#: part/templates/part/import_wizard/ajax_match_fields.html:9
-#: part/templates/part/import_wizard/match_fields.html:9
-msgid "Missing selections for the following required columns"
-msgstr ""
-
-#: order/templates/order/order_wizard/match_fields.html:20
-#: part/templates/part/bom_upload/match_fields.html:20
-#: part/templates/part/import_wizard/ajax_match_fields.html:20
-#: part/templates/part/import_wizard/match_fields.html:20
-msgid "Duplicate selections found, see below. Fix them then retry submitting."
-msgstr ""
-
-#: order/templates/order/order_wizard/match_fields.html:29
-#: order/templates/order/order_wizard/match_parts.html:21
-#: part/templates/part/bom_upload/match_fields.html:29
-#: part/templates/part/bom_upload/match_parts.html:21
-#: part/templates/part/import_wizard/match_fields.html:29
-#: part/templates/part/import_wizard/match_references.html:21
-msgid "Submit Selections"
-msgstr ""
-
-#: order/templates/order/order_wizard/match_fields.html:35
-#: part/templates/part/bom_upload/match_fields.html:35
-#: part/templates/part/import_wizard/ajax_match_fields.html:28
-#: part/templates/part/import_wizard/match_fields.html:35
-msgid "File Fields"
-msgstr ""
-
-#: order/templates/order/order_wizard/match_fields.html:42
-#: part/templates/part/bom_upload/match_fields.html:42
-#: part/templates/part/import_wizard/ajax_match_fields.html:35
-#: part/templates/part/import_wizard/match_fields.html:42
-msgid "Remove column"
-msgstr ""
-
-#: order/templates/order/order_wizard/match_fields.html:60
-#: part/templates/part/bom_upload/match_fields.html:60
-#: part/templates/part/import_wizard/ajax_match_fields.html:53
-#: part/templates/part/import_wizard/match_fields.html:60
-msgid "Duplicate selection"
-msgstr ""
-
-#: order/templates/order/order_wizard/match_fields.html:71
-#: order/templates/order/order_wizard/match_parts.html:52
-#: part/templates/part/bom_upload/match_fields.html:71
-#: part/templates/part/bom_upload/match_parts.html:53
-#: part/templates/part/import_wizard/ajax_match_fields.html:64
-#: part/templates/part/import_wizard/ajax_match_references.html:42
-#: part/templates/part/import_wizard/match_fields.html:71
-#: part/templates/part/import_wizard/match_references.html:49
-#: templates/js/translated/build.js:300 templates/js/translated/build.js:1311
-#: templates/js/translated/order.js:537 templates/js/translated/order.js:1488
-#: templates/js/translated/stock.js:601 templates/js/translated/stock.js:769
-msgid "Remove row"
-msgstr ""
-
#: order/templates/order/order_wizard/match_parts.html:12
-#: part/templates/part/bom_upload/match_parts.html:12
#: part/templates/part/import_wizard/ajax_match_references.html:12
#: part/templates/part/import_wizard/match_references.html:12
msgid "Errors exist in the submitted data"
msgstr ""
+#: order/templates/order/order_wizard/match_parts.html:21
+#: part/templates/part/import_wizard/match_fields.html:29
+#: part/templates/part/import_wizard/match_references.html:21
+#: templates/patterns/wizard/match_fields.html:28
+msgid "Submit Selections"
+msgstr ""
+
#: order/templates/order/order_wizard/match_parts.html:28
-#: part/templates/part/bom_upload/match_parts.html:28
#: part/templates/part/import_wizard/ajax_match_references.html:21
#: part/templates/part/import_wizard/match_references.html:28
msgid "Row"
@@ -3650,6 +3613,19 @@ msgstr ""
msgid "Select Supplier Part"
msgstr ""
+#: order/templates/order/order_wizard/match_parts.html:52
+#: part/templates/part/import_wizard/ajax_match_fields.html:64
+#: part/templates/part/import_wizard/ajax_match_references.html:42
+#: part/templates/part/import_wizard/match_fields.html:71
+#: part/templates/part/import_wizard/match_references.html:49
+#: templates/js/translated/bom.js:76 templates/js/translated/build.js:380
+#: templates/js/translated/build.js:528 templates/js/translated/build.js:1547
+#: templates/js/translated/order.js:537 templates/js/translated/order.js:1488
+#: templates/js/translated/stock.js:602 templates/js/translated/stock.js:770
+#: templates/patterns/wizard/match_fields.html:70
+msgid "Remove row"
+msgstr ""
+
#: order/templates/order/order_wizard/po_upload.html:8
msgid "Return to Orders"
msgstr ""
@@ -3659,9 +3635,9 @@ msgid "Upload File for Purchase Order"
msgstr ""
#: order/templates/order/order_wizard/po_upload.html:25
-#: part/templates/part/bom_upload/upload_file.html:21
#: part/templates/part/import_wizard/ajax_part_upload.html:10
#: part/templates/part/import_wizard/part_upload.html:23
+#: templates/patterns/wizard/upload.html:11
#, python-format
msgid "Step %(step)s of %(count)s"
msgstr ""
@@ -3819,7 +3795,7 @@ msgid "Pending Shipments"
msgstr ""
#: order/templates/order/sales_order_detail.html:48
-#: templates/js/translated/bom.js:732 templates/js/translated/build.js:1243
+#: templates/js/translated/bom.js:945 templates/js/translated/build.js:1465
msgid "Actions"
msgstr ""
@@ -3922,7 +3898,7 @@ msgstr ""
msgid "This field is required"
msgstr ""
-#: part/bom.py:125 part/models.py:83 part/models.py:849
+#: part/bom.py:125 part/models.py:83 part/models.py:879
#: part/templates/part/category.html:108 part/templates/part/part_base.html:338
msgid "Default Location"
msgstr ""
@@ -3968,7 +3944,7 @@ msgstr ""
msgid "Default keywords for parts in this category"
msgstr ""
-#: part/models.py:97 part/models.py:2533 part/templates/part/category.html:15
+#: part/models.py:97 part/models.py:2569 part/templates/part/category.html:15
#: part/templates/part/part_app_base.html:10
msgid "Part Category"
msgstr ""
@@ -3994,408 +3970,478 @@ msgstr ""
msgid "Invalid choice for parent part"
msgstr ""
-#: part/models.py:502 part/models.py:514
+#: part/models.py:532 part/models.py:544
#, python-brace-format
msgid "Part '{p1}' is used in BOM for '{p2}' (recursive)"
msgstr ""
-#: part/models.py:644
+#: part/models.py:674
msgid "Next available serial numbers are"
msgstr ""
-#: part/models.py:648
+#: part/models.py:678
msgid "Next available serial number is"
msgstr ""
-#: part/models.py:653
+#: part/models.py:683
msgid "Most recent serial number is"
msgstr ""
-#: part/models.py:748
+#: part/models.py:778
msgid "Duplicate IPN not allowed in part settings"
msgstr ""
-#: part/models.py:773
+#: part/models.py:803 part/models.py:2622
msgid "Part name"
msgstr ""
-#: part/models.py:780
+#: part/models.py:810
msgid "Is Template"
msgstr ""
-#: part/models.py:781
+#: part/models.py:811
msgid "Is this part a template part?"
msgstr ""
-#: part/models.py:791
+#: part/models.py:821
msgid "Is this part a variant of another part?"
msgstr ""
-#: part/models.py:792
+#: part/models.py:822
msgid "Variant Of"
msgstr ""
-#: part/models.py:798
+#: part/models.py:828
msgid "Part description"
msgstr ""
-#: part/models.py:803 part/templates/part/category.html:86
+#: part/models.py:833 part/templates/part/category.html:86
#: part/templates/part/part_base.html:302
msgid "Keywords"
msgstr ""
-#: part/models.py:804
+#: part/models.py:834
msgid "Part keywords to improve visibility in search results"
msgstr ""
-#: part/models.py:811 part/models.py:2283 part/models.py:2532
+#: part/models.py:841 part/models.py:2319 part/models.py:2568
#: part/templates/part/part_base.html:265
#: part/templates/part/set_category.html:15
-#: templates/InvenTree/settings/settings.html:186
+#: templates/InvenTree/settings/settings.html:223
#: templates/js/translated/part.js:1268
msgid "Category"
msgstr ""
-#: part/models.py:812
+#: part/models.py:842
msgid "Part category"
msgstr ""
-#: part/models.py:817 part/templates/part/part_base.html:274
+#: part/models.py:847 part/templates/part/part_base.html:274
#: templates/js/translated/part.js:618 templates/js/translated/part.js:1221
-#: templates/js/translated/stock.js:1560
+#: templates/js/translated/stock.js:1684
msgid "IPN"
msgstr ""
-#: part/models.py:818
+#: part/models.py:848
msgid "Internal Part Number"
msgstr ""
-#: part/models.py:824
+#: part/models.py:854
msgid "Part revision or version number"
msgstr ""
-#: part/models.py:825 part/templates/part/part_base.html:281
+#: part/models.py:855 part/templates/part/part_base.html:281
#: report/models.py:200 templates/js/translated/part.js:622
msgid "Revision"
msgstr ""
-#: part/models.py:847
+#: part/models.py:877
msgid "Where is this item normally stored?"
msgstr ""
-#: part/models.py:894 part/templates/part/part_base.html:347
+#: part/models.py:924 part/templates/part/part_base.html:347
msgid "Default Supplier"
msgstr ""
-#: part/models.py:895
+#: part/models.py:925
msgid "Default supplier part"
msgstr ""
-#: part/models.py:902
+#: part/models.py:932
msgid "Default Expiry"
msgstr ""
-#: part/models.py:903
+#: part/models.py:933
msgid "Expiry time (in days) for stock items of this part"
msgstr ""
-#: part/models.py:908 part/templates/part/part_base.html:196
+#: part/models.py:938 part/templates/part/part_base.html:196
msgid "Minimum Stock"
msgstr ""
-#: part/models.py:909
+#: part/models.py:939
msgid "Minimum allowed stock level"
msgstr ""
-#: part/models.py:916
+#: part/models.py:946
msgid "Stock keeping units for this part"
msgstr ""
-#: part/models.py:922
+#: part/models.py:952
msgid "Can this part be built from other parts?"
msgstr ""
-#: part/models.py:928
+#: part/models.py:958
msgid "Can this part be used to build other parts?"
msgstr ""
-#: part/models.py:934
+#: part/models.py:964
msgid "Does this part have tracking for unique items?"
msgstr ""
-#: part/models.py:939
+#: part/models.py:969
msgid "Can this part be purchased from external suppliers?"
msgstr ""
-#: part/models.py:944
+#: part/models.py:974
msgid "Can this part be sold to customers?"
msgstr ""
-#: part/models.py:949
+#: part/models.py:979
msgid "Is this part active?"
msgstr ""
-#: part/models.py:954
+#: part/models.py:984
msgid "Is this a virtual part, such as a software product or license?"
msgstr ""
-#: part/models.py:959
+#: part/models.py:989
msgid "Part notes - supports Markdown formatting"
msgstr ""
-#: part/models.py:962
+#: part/models.py:992
msgid "BOM checksum"
msgstr ""
-#: part/models.py:962
+#: part/models.py:992
msgid "Stored BOM checksum"
msgstr ""
-#: part/models.py:965
+#: part/models.py:995
msgid "BOM checked by"
msgstr ""
-#: part/models.py:967
+#: part/models.py:997
msgid "BOM checked date"
msgstr ""
-#: part/models.py:971
+#: part/models.py:1001
msgid "Creation User"
msgstr ""
-#: part/models.py:1783
+#: part/models.py:1819
msgid "Sell multiple"
msgstr ""
-#: part/models.py:2333
+#: part/models.py:2369
msgid "Test templates can only be created for trackable parts"
msgstr ""
-#: part/models.py:2350
+#: part/models.py:2386
msgid "Test with this name already exists for this part"
msgstr ""
-#: part/models.py:2370 templates/js/translated/part.js:1714
-#: templates/js/translated/stock.js:1284
+#: part/models.py:2406 templates/js/translated/part.js:1714
+#: templates/js/translated/stock.js:1312
msgid "Test Name"
msgstr ""
-#: part/models.py:2371
+#: part/models.py:2407
msgid "Enter a name for the test"
msgstr ""
-#: part/models.py:2376
+#: part/models.py:2412
msgid "Test Description"
msgstr ""
-#: part/models.py:2377
+#: part/models.py:2413
msgid "Enter description for this test"
msgstr ""
-#: part/models.py:2382 templates/js/translated/part.js:1723
-#: templates/js/translated/table_filters.js:281
+#: part/models.py:2418 templates/js/translated/part.js:1723
+#: templates/js/translated/table_filters.js:276
msgid "Required"
msgstr ""
-#: part/models.py:2383
+#: part/models.py:2419
msgid "Is this test required to pass?"
msgstr ""
-#: part/models.py:2388 templates/js/translated/part.js:1731
+#: part/models.py:2424 templates/js/translated/part.js:1731
msgid "Requires Value"
msgstr ""
-#: part/models.py:2389
+#: part/models.py:2425
msgid "Does this test require a value when adding a test result?"
msgstr ""
-#: part/models.py:2394 templates/js/translated/part.js:1738
+#: part/models.py:2430 templates/js/translated/part.js:1738
msgid "Requires Attachment"
msgstr ""
-#: part/models.py:2395
+#: part/models.py:2431
msgid "Does this test require a file attachment when adding a test result?"
msgstr ""
-#: part/models.py:2406
+#: part/models.py:2442
#, python-brace-format
msgid "Illegal character in template name ({c})"
msgstr ""
-#: part/models.py:2442
+#: part/models.py:2478
msgid "Parameter template name must be unique"
msgstr ""
-#: part/models.py:2450
+#: part/models.py:2486
msgid "Parameter Name"
msgstr ""
-#: part/models.py:2457
+#: part/models.py:2493
msgid "Parameter Units"
msgstr ""
-#: part/models.py:2487
+#: part/models.py:2523
msgid "Parent Part"
msgstr ""
-#: part/models.py:2489 part/models.py:2538 part/models.py:2539
-#: templates/InvenTree/settings/settings.html:181
+#: part/models.py:2525 part/models.py:2574 part/models.py:2575
+#: templates/InvenTree/settings/settings.html:218
msgid "Parameter Template"
msgstr ""
-#: part/models.py:2491
+#: part/models.py:2527
msgid "Data"
msgstr ""
-#: part/models.py:2491
+#: part/models.py:2527
msgid "Parameter Value"
msgstr ""
-#: part/models.py:2543 templates/InvenTree/settings/settings.html:190
+#: part/models.py:2579 templates/InvenTree/settings/settings.html:227
msgid "Default Value"
msgstr ""
-#: part/models.py:2544
+#: part/models.py:2580
msgid "Default Parameter Value"
msgstr ""
+#: part/models.py:2614
+msgid "Part ID or part name"
+msgstr ""
+
+#: part/models.py:2617 templates/js/translated/model_renderers.js:182
+msgid "Part ID"
+msgstr ""
+
+#: part/models.py:2618
+msgid "Unique part ID value"
+msgstr ""
+
#: part/models.py:2621
-msgid "Select parent part"
+msgid "Part Name"
+msgstr ""
+
+#: part/models.py:2625
+msgid "Part IPN"
+msgstr ""
+
+#: part/models.py:2626
+msgid "Part IPN value"
msgstr ""
#: part/models.py:2629
-msgid "Sub part"
+msgid "Level"
msgstr ""
#: part/models.py:2630
+msgid "BOM level"
+msgstr ""
+
+#: part/models.py:2690
+msgid "Select parent part"
+msgstr ""
+
+#: part/models.py:2698
+msgid "Sub part"
+msgstr ""
+
+#: part/models.py:2699
msgid "Select part to be used in BOM"
msgstr ""
-#: part/models.py:2636
+#: part/models.py:2705
msgid "BOM quantity for this BOM item"
msgstr ""
-#: part/models.py:2638 templates/js/translated/bom.js:578
-#: templates/js/translated/bom.js:652
+#: part/models.py:2707 part/templates/part/upload_bom.html:58
+#: templates/js/translated/bom.js:791 templates/js/translated/bom.js:865
#: templates/js/translated/table_filters.js:92
msgid "Optional"
msgstr ""
-#: part/models.py:2638
+#: part/models.py:2707
msgid "This BOM item is optional"
msgstr ""
-#: part/models.py:2641
+#: part/models.py:2710 part/templates/part/upload_bom.html:55
msgid "Overage"
msgstr ""
-#: part/models.py:2642
+#: part/models.py:2711
msgid "Estimated build wastage quantity (absolute or percentage)"
msgstr ""
-#: part/models.py:2645
+#: part/models.py:2714
msgid "BOM item reference"
msgstr ""
-#: part/models.py:2648
+#: part/models.py:2717
msgid "BOM item notes"
msgstr ""
-#: part/models.py:2650
+#: part/models.py:2719
msgid "Checksum"
msgstr ""
-#: part/models.py:2650
+#: part/models.py:2719
msgid "BOM line checksum"
msgstr ""
-#: part/models.py:2654 templates/js/translated/bom.js:669
+#: part/models.py:2723 part/templates/part/upload_bom.html:57
+#: templates/js/translated/bom.js:882
#: templates/js/translated/table_filters.js:68
#: templates/js/translated/table_filters.js:88
msgid "Inherited"
msgstr ""
-#: part/models.py:2655
+#: part/models.py:2724
msgid "This BOM item is inherited by BOMs for variant parts"
msgstr ""
-#: part/models.py:2660 templates/js/translated/bom.js:661
+#: part/models.py:2729 part/templates/part/upload_bom.html:56
+#: templates/js/translated/bom.js:874
msgid "Allow Variants"
msgstr ""
-#: part/models.py:2661
+#: part/models.py:2730
msgid "Stock items for variant parts can be used for this BOM item"
msgstr ""
-#: part/models.py:2746 stock/models.py:357
+#: part/models.py:2815 stock/models.py:357
msgid "Quantity must be integer value for trackable parts"
msgstr ""
-#: part/models.py:2755 part/models.py:2757
+#: part/models.py:2824 part/models.py:2826
msgid "Sub part must be specified"
msgstr ""
-#: part/models.py:2886
+#: part/models.py:2955
msgid "BOM Item Substitute"
msgstr ""
-#: part/models.py:2908
+#: part/models.py:2977
msgid "Substitute part cannot be the same as the master part"
msgstr ""
-#: part/models.py:2920
+#: part/models.py:2989
msgid "Parent BOM item"
msgstr ""
-#: part/models.py:2928
+#: part/models.py:2997
msgid "Substitute part"
msgstr ""
-#: part/models.py:2939
+#: part/models.py:3008
msgid "Part 1"
msgstr ""
-#: part/models.py:2943
+#: part/models.py:3012
msgid "Part 2"
msgstr ""
-#: part/models.py:2943
+#: part/models.py:3012
msgid "Select Related Part"
msgstr ""
-#: part/models.py:2975
+#: part/models.py:3044
msgid "Error creating relationship: check that the part is not related to itself and that the relationship is unique"
msgstr ""
-#: part/serializers.py:659
+#: part/serializers.py:667
msgid "Select part to copy BOM from"
msgstr ""
-#: part/serializers.py:670
+#: part/serializers.py:678
msgid "Remove Existing Data"
msgstr ""
-#: part/serializers.py:671
+#: part/serializers.py:679
msgid "Remove existing BOM items before copying"
msgstr ""
-#: part/serializers.py:676
+#: part/serializers.py:684
msgid "Include Inherited"
msgstr ""
-#: part/serializers.py:677
+#: part/serializers.py:685
msgid "Include BOM items which are inherited from templated parts"
msgstr ""
-#: part/serializers.py:682
+#: part/serializers.py:690
msgid "Skip Invalid Rows"
msgstr ""
-#: part/serializers.py:683
+#: part/serializers.py:691
msgid "Enable this option to skip invalid rows"
msgstr ""
-#: part/tasks.py:53
+#: part/serializers.py:734
+msgid "Clear Existing BOM"
+msgstr ""
+
+#: part/serializers.py:735
+msgid "Delete existing BOM items before uploading"
+msgstr ""
+
+#: part/serializers.py:762
+msgid "No part column specified"
+msgstr ""
+
+#: part/serializers.py:806
+msgid "Multiple matching parts found"
+msgstr ""
+
+#: part/serializers.py:809
+msgid "No matching part found"
+msgstr ""
+
+#: part/serializers.py:812
+msgid "Part is not designated as a component"
+msgstr ""
+
+#: part/serializers.py:821
+msgid "Quantity not provided"
+msgstr ""
+
+#: part/serializers.py:829
+msgid "Invalid quantity"
+msgstr ""
+
+#: part/serializers.py:848
+msgid "At least one BOM item is required"
+msgstr ""
+
+#: part/tasks.py:58
msgid "Low stock notification"
msgstr ""
@@ -4418,7 +4464,7 @@ msgstr ""
msgid "The BOM for %(part)s has not been validated."
msgstr ""
-#: part/templates/part/bom.html:30 part/templates/part/detail.html:270
+#: part/templates/part/bom.html:30 part/templates/part/detail.html:273
msgid "BOM actions"
msgstr ""
@@ -4426,34 +4472,6 @@ msgstr ""
msgid "Delete Items"
msgstr ""
-#: part/templates/part/bom_upload/match_parts.html:29
-msgid "Select Part"
-msgstr ""
-
-#: part/templates/part/bom_upload/upload_file.html:8
-msgid "Return to BOM"
-msgstr ""
-
-#: part/templates/part/bom_upload/upload_file.html:13
-msgid "Upload Bill of Materials"
-msgstr ""
-
-#: part/templates/part/bom_upload/upload_file.html:33
-msgid "Requirements for BOM upload"
-msgstr ""
-
-#: part/templates/part/bom_upload/upload_file.html:35
-msgid "The BOM file must contain the required named columns as provided in the "
-msgstr ""
-
-#: part/templates/part/bom_upload/upload_file.html:35
-msgid "BOM Upload Template"
-msgstr ""
-
-#: part/templates/part/bom_upload/upload_file.html:36
-msgid "Each part must already exist in the database"
-msgstr ""
-
#: part/templates/part/category.html:28 part/templates/part/category.html:32
msgid "You are subscribed to notifications for this category"
msgstr ""
@@ -4519,7 +4537,7 @@ msgstr ""
msgid "Create new part"
msgstr ""
-#: part/templates/part/category.html:161 templates/js/translated/bom.js:152
+#: part/templates/part/category.html:161 templates/js/translated/bom.js:365
msgid "New Part"
msgstr ""
@@ -4639,138 +4657,168 @@ msgstr ""
msgid "Sales Order Allocations"
msgstr ""
-#: part/templates/part/detail.html:159
+#: part/templates/part/detail.html:162
msgid "Part Variants"
msgstr ""
-#: part/templates/part/detail.html:163
+#: part/templates/part/detail.html:166
msgid "Create new variant"
msgstr ""
-#: part/templates/part/detail.html:164
+#: part/templates/part/detail.html:167
msgid "New Variant"
msgstr ""
-#: part/templates/part/detail.html:191
+#: part/templates/part/detail.html:194
msgid "Add new parameter"
msgstr ""
-#: part/templates/part/detail.html:228 part/templates/part/part_sidebar.html:49
+#: part/templates/part/detail.html:231 part/templates/part/part_sidebar.html:52
msgid "Related Parts"
msgstr ""
-#: part/templates/part/detail.html:232 part/templates/part/detail.html:233
+#: part/templates/part/detail.html:235 part/templates/part/detail.html:236
msgid "Add Related"
msgstr ""
-#: part/templates/part/detail.html:253 part/templates/part/part_sidebar.html:17
+#: part/templates/part/detail.html:256 part/templates/part/part_sidebar.html:18
msgid "Bill of Materials"
msgstr ""
-#: part/templates/part/detail.html:258
+#: part/templates/part/detail.html:261
msgid "Export actions"
msgstr ""
-#: part/templates/part/detail.html:262 templates/js/translated/bom.js:70
+#: part/templates/part/detail.html:265 templates/js/translated/bom.js:283
msgid "Export BOM"
msgstr ""
-#: part/templates/part/detail.html:264
+#: part/templates/part/detail.html:267
msgid "Print BOM Report"
msgstr ""
-#: part/templates/part/detail.html:274
+#: part/templates/part/detail.html:277
msgid "Upload BOM"
msgstr ""
-#: part/templates/part/detail.html:276 templates/js/translated/part.js:272
+#: part/templates/part/detail.html:279 templates/js/translated/part.js:272
msgid "Copy BOM"
msgstr ""
-#: part/templates/part/detail.html:278
+#: part/templates/part/detail.html:281
msgid "Validate BOM"
msgstr ""
-#: part/templates/part/detail.html:283
+#: part/templates/part/detail.html:286
msgid "New BOM Item"
msgstr ""
-#: part/templates/part/detail.html:284
+#: part/templates/part/detail.html:287
msgid "Add BOM Item"
msgstr ""
-#: part/templates/part/detail.html:297
+#: part/templates/part/detail.html:300
msgid "Assemblies"
msgstr ""
-#: part/templates/part/detail.html:314
+#: part/templates/part/detail.html:317
msgid "Part Builds"
msgstr ""
-#: part/templates/part/detail.html:339
+#: part/templates/part/detail.html:342
msgid "Build Order Allocations"
msgstr ""
-#: part/templates/part/detail.html:349
+#: part/templates/part/detail.html:352
msgid "Part Suppliers"
msgstr ""
-#: part/templates/part/detail.html:377
+#: part/templates/part/detail.html:380
msgid "Part Manufacturers"
msgstr ""
-#: part/templates/part/detail.html:393
+#: part/templates/part/detail.html:396
msgid "Delete manufacturer parts"
msgstr ""
-#: part/templates/part/detail.html:575
+#: part/templates/part/detail.html:578
msgid "Delete selected BOM items?"
msgstr ""
-#: part/templates/part/detail.html:576
+#: part/templates/part/detail.html:579
msgid "All selected BOM items will be deleted"
msgstr ""
-#: part/templates/part/detail.html:625
+#: part/templates/part/detail.html:628
msgid "Create BOM Item"
msgstr ""
-#: part/templates/part/detail.html:682
+#: part/templates/part/detail.html:685
msgid "Related Part"
msgstr ""
-#: part/templates/part/detail.html:690
+#: part/templates/part/detail.html:693
msgid "Add Related Part"
msgstr ""
-#: part/templates/part/detail.html:785
+#: part/templates/part/detail.html:788
msgid "Add Test Result Template"
msgstr ""
-#: part/templates/part/detail.html:842
+#: part/templates/part/detail.html:845
msgid "Edit Part Notes"
msgstr ""
-#: part/templates/part/detail.html:955
+#: part/templates/part/detail.html:958
#, python-format
msgid "Purchase Unit Price - %(currency)s"
msgstr ""
-#: part/templates/part/detail.html:967
+#: part/templates/part/detail.html:970
#, python-format
msgid "Unit Price-Cost Difference - %(currency)s"
msgstr ""
-#: part/templates/part/detail.html:979
+#: part/templates/part/detail.html:982
#, python-format
msgid "Supplier Unit Cost - %(currency)s"
msgstr ""
-#: part/templates/part/detail.html:1068
+#: part/templates/part/detail.html:1071
#, python-format
msgid "Unit Price - %(currency)s"
msgstr ""
+#: part/templates/part/import_wizard/ajax_match_fields.html:9
+#: part/templates/part/import_wizard/match_fields.html:9
+#: templates/patterns/wizard/match_fields.html:8
+msgid "Missing selections for the following required columns"
+msgstr ""
+
+#: part/templates/part/import_wizard/ajax_match_fields.html:20
+#: part/templates/part/import_wizard/match_fields.html:20
+#: templates/patterns/wizard/match_fields.html:19
+msgid "Duplicate selections found, see below. Fix them then retry submitting."
+msgstr ""
+
+#: part/templates/part/import_wizard/ajax_match_fields.html:28
+#: part/templates/part/import_wizard/match_fields.html:35
+#: templates/patterns/wizard/match_fields.html:34
+msgid "File Fields"
+msgstr ""
+
+#: part/templates/part/import_wizard/ajax_match_fields.html:35
+#: part/templates/part/import_wizard/match_fields.html:42
+#: templates/patterns/wizard/match_fields.html:41
+msgid "Remove column"
+msgstr ""
+
+#: part/templates/part/import_wizard/ajax_match_fields.html:53
+#: part/templates/part/import_wizard/match_fields.html:60
+#: templates/patterns/wizard/match_fields.html:59
+msgid "Duplicate selection"
+msgstr ""
+
#: part/templates/part/import_wizard/ajax_part_upload.html:29
#: part/templates/part/import_wizard/part_upload.html:53
msgid "Unsuffitient privileges."
@@ -4819,7 +4867,7 @@ msgid "Show pricing information"
msgstr ""
#: part/templates/part/part_base.html:56
-#: stock/templates/stock/item_base.html:110
+#: stock/templates/stock/item_base.html:112
#: stock/templates/stock/location.html:44
msgid "Stock actions"
msgstr ""
@@ -4912,7 +4960,7 @@ msgstr ""
msgid "Allocated to Orders"
msgstr ""
-#: part/templates/part/part_base.html:239 templates/js/translated/bom.js:690
+#: part/templates/part/part_base.html:239 templates/js/translated/bom.js:903
msgid "Can Build"
msgstr ""
@@ -4930,7 +4978,7 @@ msgid "Latest Serial Number"
msgstr ""
#: part/templates/part/part_base.html:328
-#: stock/templates/stock/item_base.html:166
+#: stock/templates/stock/item_base.html:168
msgid "Search for serial number"
msgstr ""
@@ -4969,7 +5017,7 @@ msgid "Total Cost"
msgstr ""
#: part/templates/part/part_pricing.html:40 part/templates/part/prices.html:40
-#: templates/js/translated/bom.js:644
+#: templates/js/translated/bom.js:857
msgid "No supplier pricing available"
msgstr ""
@@ -5003,20 +5051,20 @@ msgstr ""
msgid "No pricing information is available for this part."
msgstr ""
-#: part/templates/part/part_sidebar.html:11
+#: part/templates/part/part_sidebar.html:12
msgid "Variants"
msgstr ""
-#: part/templates/part/part_sidebar.html:25
+#: part/templates/part/part_sidebar.html:26
msgid "Used In"
msgstr ""
-#: part/templates/part/part_sidebar.html:31
+#: part/templates/part/part_sidebar.html:34
#: stock/templates/stock/stock_sidebar.html:8
msgid "Allocations"
msgstr ""
-#: part/templates/part/part_sidebar.html:45
+#: part/templates/part/part_sidebar.html:48
msgid "Test Templates"
msgstr ""
@@ -5089,7 +5137,7 @@ msgstr ""
msgid "Calculation parameters"
msgstr ""
-#: part/templates/part/prices.html:155 templates/js/translated/bom.js:638
+#: part/templates/part/prices.html:155 templates/js/translated/bom.js:851
msgid "Supplier Cost"
msgstr ""
@@ -5111,7 +5159,7 @@ msgstr ""
msgid "Internal Cost"
msgstr ""
-#: part/templates/part/prices.html:215 part/views.py:1699
+#: part/templates/part/prices.html:215 part/views.py:1390
msgid "Add Internal Price Break"
msgstr ""
@@ -5131,7 +5179,7 @@ msgstr ""
msgid "Set category for the following parts"
msgstr ""
-#: part/templates/part/stock_count.html:7 templates/js/translated/bom.js:600
+#: part/templates/part/stock_count.html:7 templates/js/translated/bom.js:813
#: templates/js/translated/part.js:497 templates/js/translated/part.js:1122
#: templates/js/translated/part.js:1309
msgid "No Stock"
@@ -5141,6 +5189,43 @@ msgstr ""
msgid "Low Stock"
msgstr ""
+#: part/templates/part/upload_bom.html:8
+msgid "Return to BOM"
+msgstr ""
+
+#: part/templates/part/upload_bom.html:13
+msgid "Upload Bill of Materials"
+msgstr ""
+
+#: part/templates/part/upload_bom.html:19
+msgid "BOM upload requirements"
+msgstr ""
+
+#: part/templates/part/upload_bom.html:23
+#: part/templates/part/upload_bom.html:90
+msgid "Upload BOM File"
+msgstr ""
+
+#: part/templates/part/upload_bom.html:29
+msgid "Submit BOM Data"
+msgstr ""
+
+#: part/templates/part/upload_bom.html:37
+msgid "Requirements for BOM upload"
+msgstr ""
+
+#: part/templates/part/upload_bom.html:39
+msgid "The BOM file must contain the required named columns as provided in the "
+msgstr ""
+
+#: part/templates/part/upload_bom.html:39
+msgid "BOM Upload Template"
+msgstr ""
+
+#: part/templates/part/upload_bom.html:40
+msgid "Each part must already exist in the database"
+msgstr ""
+
#: part/templates/part/variant_part.html:9
msgid "Create new part variant"
msgstr ""
@@ -5154,104 +5239,96 @@ msgstr ""
msgid "Unknown database"
msgstr ""
-#: part/views.py:93
+#: part/views.py:90
msgid "Set Part Category"
msgstr ""
-#: part/views.py:143
+#: part/views.py:140
#, python-brace-format
msgid "Set category for {n} parts"
msgstr ""
-#: part/views.py:215
+#: part/views.py:212
msgid "Match References"
msgstr ""
-#: part/views.py:511
+#: part/views.py:509
msgid "None"
msgstr ""
-#: part/views.py:570
+#: part/views.py:568
msgid "Part QR Code"
msgstr ""
-#: part/views.py:672
+#: part/views.py:670
msgid "Select Part Image"
msgstr ""
-#: part/views.py:698
+#: part/views.py:696
msgid "Updated part image"
msgstr ""
-#: part/views.py:701
+#: part/views.py:699
msgid "Part image not found"
msgstr ""
-#: part/views.py:775
-msgid "Match Parts"
-msgstr ""
-
-#: part/views.py:1110
-msgid "Export Bill of Materials"
-msgstr ""
-
-#: part/views.py:1159
+#: part/views.py:850
msgid "Confirm Part Deletion"
msgstr ""
-#: part/views.py:1166
+#: part/views.py:857
msgid "Part was deleted"
msgstr ""
-#: part/views.py:1175
+#: part/views.py:866
msgid "Part Pricing"
msgstr ""
-#: part/views.py:1324
+#: part/views.py:1015
msgid "Create Part Parameter Template"
msgstr ""
-#: part/views.py:1334
+#: part/views.py:1025
msgid "Edit Part Parameter Template"
msgstr ""
-#: part/views.py:1341
+#: part/views.py:1032
msgid "Delete Part Parameter Template"
msgstr ""
-#: part/views.py:1400 templates/js/translated/part.js:315
+#: part/views.py:1091 templates/js/translated/part.js:315
msgid "Edit Part Category"
msgstr ""
-#: part/views.py:1438
+#: part/views.py:1129
msgid "Delete Part Category"
msgstr ""
-#: part/views.py:1444
+#: part/views.py:1135
msgid "Part category was deleted"
msgstr ""
-#: part/views.py:1453
+#: part/views.py:1144
msgid "Create Category Parameter Template"
msgstr ""
-#: part/views.py:1554
+#: part/views.py:1245
msgid "Edit Category Parameter Template"
msgstr ""
-#: part/views.py:1610
+#: part/views.py:1301
msgid "Delete Category Parameter Template"
msgstr ""
-#: part/views.py:1632
+#: part/views.py:1323
msgid "Added new price break"
msgstr ""
-#: part/views.py:1708
+#: part/views.py:1399
msgid "Edit Internal Price Break"
msgstr ""
-#: part/views.py:1716
+#: part/views.py:1407
msgid "Delete Internal Price Break"
msgstr ""
@@ -5453,12 +5530,12 @@ msgid "Stock Item Test Report"
msgstr ""
#: report/templates/report/inventree_test_report_base.html:79
-#: stock/models.py:519 stock/templates/stock/item_base.html:156
-#: templates/js/translated/build.js:293 templates/js/translated/build.js:697
-#: templates/js/translated/build.js:1073
+#: stock/models.py:519 stock/templates/stock/item_base.html:158
+#: templates/js/translated/build.js:373 templates/js/translated/build.js:521
+#: templates/js/translated/build.js:919 templates/js/translated/build.js:1295
#: 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:423
+#: templates/js/translated/order.js:2034 templates/js/translated/stock.js:424
msgid "Serial Number"
msgstr ""
@@ -5479,7 +5556,7 @@ msgstr ""
#: report/templates/report/inventree_test_report_base.html:97
#: templates/InvenTree/settings/plugin.html:50
#: templates/InvenTree/settings/plugin_settings.html:38
-#: templates/js/translated/order.js:849 templates/js/translated/stock.js:2525
+#: templates/js/translated/order.js:849 templates/js/translated/stock.js:2649
msgid "Date"
msgstr ""
@@ -5497,71 +5574,67 @@ msgid "Installed Items"
msgstr ""
#: report/templates/report/inventree_test_report_base.html:137
-#: templates/js/translated/stock.js:586 templates/js/translated/stock.js:756
-#: templates/js/translated/stock.js:2785
+#: templates/js/translated/stock.js:587 templates/js/translated/stock.js:757
+#: templates/js/translated/stock.js:2909
msgid "Serial"
msgstr ""
-#: stock/api.py:476
+#: stock/api.py:501
msgid "Quantity is required"
msgstr ""
-#: stock/api.py:483
+#: stock/api.py:508
msgid "Valid part must be supplied"
msgstr ""
-#: stock/forms.py:77 stock/forms.py:251 stock/models.py:576
-#: stock/templates/stock/item_base.html:193
-#: templates/js/translated/stock.js:1709
+#: stock/api.py:535
+msgid "Serial numbers cannot be supplied for a non-trackable part"
+msgstr ""
+
+#: stock/forms.py:74 stock/forms.py:198 stock/models.py:576
+#: stock/templates/stock/item_base.html:195
+#: templates/js/translated/stock.js:1833
msgid "Expiry Date"
msgstr ""
-#: stock/forms.py:78 stock/forms.py:252
+#: stock/forms.py:75 stock/forms.py:199
msgid "Expiration date for this stock item"
msgstr ""
-#: stock/forms.py:81
+#: stock/forms.py:78
msgid "Enter unique serial numbers (or leave blank)"
msgstr ""
-#: stock/forms.py:136
+#: stock/forms.py:133
msgid "Destination for serialized stock (by default, will remain in current location)"
msgstr ""
-#: stock/forms.py:138
+#: stock/forms.py:135
msgid "Serial numbers"
msgstr ""
-#: stock/forms.py:138
+#: stock/forms.py:135
msgid "Unique serial numbers (must match quantity)"
msgstr ""
-#: stock/forms.py:140 stock/forms.py:224
+#: stock/forms.py:137 stock/forms.py:171
msgid "Add transaction note (optional)"
msgstr ""
-#: stock/forms.py:180
-msgid "Stock item to install"
-msgstr ""
-
-#: stock/forms.py:210
-msgid "Must not exceed available quantity"
-msgstr ""
-
-#: stock/forms.py:222
+#: stock/forms.py:169
msgid "Destination location for uninstalled items"
msgstr ""
-#: stock/forms.py:226
+#: stock/forms.py:173
msgid "Confirm uninstall"
msgstr ""
-#: stock/forms.py:226
+#: stock/forms.py:173
msgid "Confirm removal of installed stock items"
msgstr ""
#: stock/models.py:62 stock/models.py:613
-#: stock/templates/stock/item_base.html:416
+#: stock/templates/stock/item_base.html:418
msgid "Owner"
msgstr ""
@@ -5623,7 +5696,7 @@ msgstr ""
msgid "Packaging this stock item is stored in"
msgstr ""
-#: stock/models.py:502 stock/templates/stock/item_base.html:298
+#: stock/models.py:502 stock/templates/stock/item_base.html:300
msgid "Installed In"
msgstr ""
@@ -5733,7 +5806,7 @@ msgstr ""
msgid "Serialized stock cannot be merged"
msgstr ""
-#: stock/models.py:1214 stock/serializers.py:775
+#: stock/models.py:1214 stock/serializers.py:832
msgid "Duplicate stock items"
msgstr ""
@@ -5769,7 +5842,7 @@ msgstr ""
msgid "Test name"
msgstr ""
-#: stock/models.py:1983 templates/js/translated/table_filters.js:271
+#: stock/models.py:1983
msgid "Test result"
msgstr ""
@@ -5806,7 +5879,7 @@ msgstr ""
msgid "Enter serial numbers for new items"
msgstr ""
-#: stock/serializers.py:326 stock/serializers.py:732 stock/serializers.py:973
+#: stock/serializers.py:326 stock/serializers.py:789 stock/serializers.py:1030
msgid "Destination stock location"
msgstr ""
@@ -5818,63 +5891,79 @@ msgstr ""
msgid "Serial numbers cannot be assigned to this part"
msgstr ""
-#: stock/serializers.py:589
+#: stock/serializers.py:363 stock/views.py:1108
+msgid "Serial numbers already exist"
+msgstr ""
+
+#: stock/serializers.py:405
+msgid "Select stock item to install"
+msgstr ""
+
+#: stock/serializers.py:421
+msgid "Stock item is unavailable"
+msgstr ""
+
+#: stock/serializers.py:428
+msgid "Selected part is not in the Bill of Materials"
+msgstr ""
+
+#: stock/serializers.py:646
msgid "Part must be salable"
msgstr ""
-#: stock/serializers.py:593
+#: stock/serializers.py:650
msgid "Item is allocated to a sales order"
msgstr ""
-#: stock/serializers.py:597
+#: stock/serializers.py:654
msgid "Item is allocated to a build order"
msgstr ""
-#: stock/serializers.py:627
+#: stock/serializers.py:684
msgid "Customer to assign stock items"
msgstr ""
-#: stock/serializers.py:633
+#: stock/serializers.py:690
msgid "Selected company is not a customer"
msgstr ""
-#: stock/serializers.py:641
+#: stock/serializers.py:698
msgid "Stock assignment notes"
msgstr ""
-#: stock/serializers.py:651 stock/serializers.py:881
+#: stock/serializers.py:708 stock/serializers.py:938
msgid "A list of stock items must be provided"
msgstr ""
-#: stock/serializers.py:739
+#: stock/serializers.py:796
msgid "Stock merging notes"
msgstr ""
-#: stock/serializers.py:744
+#: stock/serializers.py:801
msgid "Allow mismatched suppliers"
msgstr ""
-#: stock/serializers.py:745
+#: stock/serializers.py:802
msgid "Allow stock items with different supplier parts to be merged"
msgstr ""
-#: stock/serializers.py:750
+#: stock/serializers.py:807
msgid "Allow mismatched status"
msgstr ""
-#: stock/serializers.py:751
+#: stock/serializers.py:808
msgid "Allow stock items with different status codes to be merged"
msgstr ""
-#: stock/serializers.py:761
+#: stock/serializers.py:818
msgid "At least two stock items must be provided"
msgstr ""
-#: stock/serializers.py:843
+#: stock/serializers.py:900
msgid "StockItem primary key value"
msgstr ""
-#: stock/serializers.py:871
+#: stock/serializers.py:928
msgid "Stock transaction notes"
msgstr ""
@@ -5919,22 +6008,14 @@ msgstr ""
msgid "Installed Stock Items"
msgstr ""
-#: stock/templates/stock/item.html:154 stock/views.py:482
+#: stock/templates/stock/item.html:154 templates/js/translated/stock.js:3018
msgid "Install Stock Item"
msgstr ""
-#: stock/templates/stock/item.html:309 stock/templates/stock/item.html:334
+#: stock/templates/stock/item.html:304 templates/js/translated/stock.js:1480
msgid "Add Test Result"
msgstr ""
-#: stock/templates/stock/item.html:354
-msgid "Edit Test Result"
-msgstr ""
-
-#: stock/templates/stock/item.html:368
-msgid "Delete Test Result"
-msgstr ""
-
#: stock/templates/stock/item_base.html:42
#: templates/js/translated/barcode.js:330
#: templates/js/translated/barcode.js:335
@@ -5995,129 +6076,129 @@ msgstr ""
msgid "Uninstall"
msgstr ""
-#: stock/templates/stock/item_base.html:101
+#: stock/templates/stock/item_base.html:102
msgid "Install stock item"
msgstr ""
-#: stock/templates/stock/item_base.html:101
+#: stock/templates/stock/item_base.html:102
msgid "Install"
msgstr ""
-#: stock/templates/stock/item_base.html:115
+#: stock/templates/stock/item_base.html:117
msgid "Convert to variant"
msgstr ""
-#: stock/templates/stock/item_base.html:118
+#: stock/templates/stock/item_base.html:120
msgid "Duplicate stock item"
msgstr ""
-#: stock/templates/stock/item_base.html:120
+#: stock/templates/stock/item_base.html:122
msgid "Edit stock item"
msgstr ""
-#: stock/templates/stock/item_base.html:123
+#: stock/templates/stock/item_base.html:125
msgid "Delete stock item"
msgstr ""
-#: stock/templates/stock/item_base.html:161
+#: stock/templates/stock/item_base.html:163
msgid "previous page"
msgstr ""
-#: stock/templates/stock/item_base.html:161
+#: stock/templates/stock/item_base.html:163
msgid "Navigate to previous serial number"
msgstr ""
-#: stock/templates/stock/item_base.html:170
+#: stock/templates/stock/item_base.html:172
msgid "next page"
msgstr ""
-#: stock/templates/stock/item_base.html:170
+#: stock/templates/stock/item_base.html:172
msgid "Navigate to next serial number"
msgstr ""
-#: stock/templates/stock/item_base.html:197
+#: stock/templates/stock/item_base.html:199
#, python-format
msgid "This StockItem expired on %(item.expiry_date)s"
msgstr ""
-#: stock/templates/stock/item_base.html:197
+#: stock/templates/stock/item_base.html:199
#: templates/js/translated/table_filters.js:252
msgid "Expired"
msgstr ""
-#: stock/templates/stock/item_base.html:199
+#: stock/templates/stock/item_base.html:201
#, python-format
msgid "This StockItem expires on %(item.expiry_date)s"
msgstr ""
-#: stock/templates/stock/item_base.html:199
+#: stock/templates/stock/item_base.html:201
#: templates/js/translated/table_filters.js:258
msgid "Stale"
msgstr ""
-#: stock/templates/stock/item_base.html:206
-#: templates/js/translated/stock.js:1722
+#: stock/templates/stock/item_base.html:208
+#: templates/js/translated/stock.js:1846
msgid "Last Updated"
msgstr ""
-#: stock/templates/stock/item_base.html:211
+#: stock/templates/stock/item_base.html:213
msgid "Last Stocktake"
msgstr ""
-#: stock/templates/stock/item_base.html:215
+#: stock/templates/stock/item_base.html:217
msgid "No stocktake performed"
msgstr ""
-#: stock/templates/stock/item_base.html:233
+#: stock/templates/stock/item_base.html:235
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:240
+#: stock/templates/stock/item_base.html:242
msgid "This stock item is in production and cannot be edited."
msgstr ""
-#: stock/templates/stock/item_base.html:241
+#: stock/templates/stock/item_base.html:243
msgid "Edit the stock item from the build view."
msgstr ""
-#: stock/templates/stock/item_base.html:254
+#: stock/templates/stock/item_base.html:256
msgid "This stock item has not passed all required tests"
msgstr ""
-#: stock/templates/stock/item_base.html:262
+#: stock/templates/stock/item_base.html:264
msgid "This stock item is allocated to Sales Order"
msgstr ""
-#: stock/templates/stock/item_base.html:270
+#: stock/templates/stock/item_base.html:272
msgid "This stock item is allocated to Build Order"
msgstr ""
-#: stock/templates/stock/item_base.html:276
+#: stock/templates/stock/item_base.html:278
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:317
-#: templates/js/translated/build.js:1095
+#: stock/templates/stock/item_base.html:319
+#: templates/js/translated/build.js:1317
msgid "No location set"
msgstr ""
-#: stock/templates/stock/item_base.html:324
+#: stock/templates/stock/item_base.html:326
msgid "Barcode Identifier"
msgstr ""
-#: stock/templates/stock/item_base.html:366
+#: stock/templates/stock/item_base.html:368
msgid "Parent Item"
msgstr ""
-#: stock/templates/stock/item_base.html:384
+#: stock/templates/stock/item_base.html:386
msgid "No manufacturer set"
msgstr ""
-#: stock/templates/stock/item_base.html:409
+#: stock/templates/stock/item_base.html:411
msgid "Tests"
msgstr ""
-#: stock/templates/stock/item_base.html:499
+#: stock/templates/stock/item_base.html:492
msgid "Edit Stock Status"
msgstr ""
@@ -6130,39 +6211,6 @@ msgstr ""
msgid "This will remove %(qty)s units of %(full_name)s from stock."
msgstr ""
-#: stock/templates/stock/item_install.html:8
-msgid "Install another Stock Item into this item."
-msgstr ""
-
-#: stock/templates/stock/item_install.html:11
-#: stock/templates/stock/item_install.html:24
-msgid "Stock items can only be installed if they meet the following criteria"
-msgstr ""
-
-#: stock/templates/stock/item_install.html:14
-msgid "The Stock Item links to a Part which is in the BOM for this Stock Item"
-msgstr ""
-
-#: stock/templates/stock/item_install.html:15
-msgid "The Stock Item is currently in stock"
-msgstr ""
-
-#: stock/templates/stock/item_install.html:16
-msgid "The Stock Item is serialized and does not belong to another item"
-msgstr ""
-
-#: stock/templates/stock/item_install.html:21
-msgid "Install this Stock Item in another stock item."
-msgstr ""
-
-#: stock/templates/stock/item_install.html:27
-msgid "The part associated to this Stock Item belongs to another part's BOM"
-msgstr ""
-
-#: stock/templates/stock/item_install.html:28
-msgid "This Stock Item is serialized and does not belong to another item"
-msgstr ""
-
#: stock/templates/stock/item_serialize.html:5
msgid "Create serialized items from this stock item."
msgstr ""
@@ -6247,7 +6295,7 @@ msgstr ""
msgid "The following stock items will be uninstalled"
msgstr ""
-#: stock/templates/stock/stockitem_convert.html:7 stock/views.py:879
+#: stock/templates/stock/stockitem_convert.html:7 stock/views.py:730
msgid "Convert Stock Item"
msgstr ""
@@ -6268,11 +6316,11 @@ msgstr ""
msgid "Are you sure you want to delete this stock tracking entry?"
msgstr ""
-#: stock/views.py:162 templates/js/translated/stock.js:139
+#: stock/views.py:162 templates/js/translated/stock.js:140
msgid "Edit Stock Location"
msgstr ""
-#: stock/views.py:269 stock/views.py:858 stock/views.py:984 stock/views.py:1266
+#: stock/views.py:269 stock/views.py:709 stock/views.py:835 stock/views.py:1117
msgid "Owner is required (ownership control is enabled)"
msgstr ""
@@ -6300,59 +6348,63 @@ msgstr ""
msgid "Confirm test data deletion"
msgstr ""
+#: stock/views.py:352
+msgid "Check the confirmation box"
+msgstr ""
+
#: stock/views.py:456
msgid "Stock Item QR Code"
msgstr ""
-#: stock/views.py:630
+#: stock/views.py:481
msgid "Uninstall Stock Items"
msgstr ""
-#: stock/views.py:727 templates/js/translated/stock.js:1074
+#: stock/views.py:578 templates/js/translated/stock.js:1075
msgid "Confirm stock adjustment"
msgstr ""
-#: stock/views.py:738
+#: stock/views.py:589
msgid "Uninstalled stock items"
msgstr ""
-#: stock/views.py:760 templates/js/translated/stock.js:332
+#: stock/views.py:611 templates/js/translated/stock.js:333
msgid "Edit Stock Item"
msgstr ""
-#: stock/views.py:910
+#: stock/views.py:761
msgid "Create new Stock Location"
msgstr ""
-#: stock/views.py:1011
+#: stock/views.py:862
msgid "Create new Stock Item"
msgstr ""
-#: stock/views.py:1153 templates/js/translated/stock.js:312
+#: stock/views.py:1004 templates/js/translated/stock.js:313
msgid "Duplicate Stock Item"
msgstr ""
-#: stock/views.py:1235
+#: stock/views.py:1086
msgid "Quantity cannot be negative"
msgstr ""
-#: stock/views.py:1335
+#: stock/views.py:1186
msgid "Delete Stock Location"
msgstr ""
-#: stock/views.py:1348
+#: stock/views.py:1199
msgid "Delete Stock Item"
msgstr ""
-#: stock/views.py:1359
+#: stock/views.py:1210
msgid "Delete Stock Tracking Entry"
msgstr ""
-#: stock/views.py:1366
+#: stock/views.py:1217
msgid "Edit Stock Tracking Entry"
msgstr ""
-#: stock/views.py:1375
+#: stock/views.py:1226
msgid "Add Stock Tracking Entry"
msgstr ""
@@ -6527,15 +6579,15 @@ msgstr ""
msgid "Part Settings"
msgstr ""
-#: templates/InvenTree/settings/part.html:43
+#: templates/InvenTree/settings/part.html:44
msgid "Part Import"
msgstr ""
-#: templates/InvenTree/settings/part.html:47
+#: templates/InvenTree/settings/part.html:48
msgid "Import Part"
msgstr ""
-#: templates/InvenTree/settings/part.html:61
+#: templates/InvenTree/settings/part.html:62
msgid "Part Parameter Templates"
msgstr ""
@@ -6663,45 +6715,45 @@ msgstr ""
msgid "Report Settings"
msgstr ""
-#: templates/InvenTree/settings/setting.html:30
+#: templates/InvenTree/settings/setting.html:33
msgid "No value set"
msgstr ""
-#: templates/InvenTree/settings/setting.html:41
+#: templates/InvenTree/settings/setting.html:38
msgid "Edit setting"
msgstr ""
-#: templates/InvenTree/settings/settings.html:78
+#: templates/InvenTree/settings/settings.html:115
msgid "Edit Plugin Setting"
msgstr ""
-#: templates/InvenTree/settings/settings.html:80
+#: templates/InvenTree/settings/settings.html:117
msgid "Edit Global Setting"
msgstr ""
-#: templates/InvenTree/settings/settings.html:82
+#: templates/InvenTree/settings/settings.html:119
msgid "Edit User Setting"
msgstr ""
-#: templates/InvenTree/settings/settings.html:171
+#: templates/InvenTree/settings/settings.html:208
msgid "No category parameter templates found"
msgstr ""
-#: templates/InvenTree/settings/settings.html:193
-#: templates/InvenTree/settings/settings.html:292
+#: templates/InvenTree/settings/settings.html:230
+#: templates/InvenTree/settings/settings.html:329
msgid "Edit Template"
msgstr ""
-#: templates/InvenTree/settings/settings.html:194
-#: templates/InvenTree/settings/settings.html:293
+#: templates/InvenTree/settings/settings.html:231
+#: templates/InvenTree/settings/settings.html:330
msgid "Delete Template"
msgstr ""
-#: templates/InvenTree/settings/settings.html:272
+#: templates/InvenTree/settings/settings.html:309
msgid "No part parameter templates found"
msgstr ""
-#: templates/InvenTree/settings/settings.html:276
+#: templates/InvenTree/settings/settings.html:313
msgid "ID"
msgstr ""
@@ -6996,10 +7048,11 @@ msgid "InvenTree Version Information"
msgstr ""
#: templates/about.html:11 templates/about.html:105
-#: templates/js/translated/bom.js:407 templates/js/translated/modals.js:53
-#: templates/js/translated/modals.js:584 templates/js/translated/modals.js:678
-#: templates/js/translated/modals.js:983 templates/modals.html:15
-#: templates/modals.html:27 templates/modals.html:39 templates/modals.html:50
+#: templates/js/translated/bom.js:132 templates/js/translated/bom.js:620
+#: templates/js/translated/modals.js:53 templates/js/translated/modals.js:584
+#: templates/js/translated/modals.js:678 templates/js/translated/modals.js:986
+#: templates/modals.html:15 templates/modals.html:27 templates/modals.html:39
+#: templates/modals.html:50
msgid "Close"
msgstr ""
@@ -7275,14 +7328,14 @@ msgid "The following parts are low on required stock"
msgstr ""
#: templates/email/build_order_required_stock.html:18
-#: templates/js/translated/bom.js:1117
+#: templates/js/translated/bom.js:1335
msgid "Required Quantity"
msgstr ""
#: templates/email/build_order_required_stock.html:19
#: templates/email/low_stock_notification.html:18
-#: templates/js/translated/bom.js:591 templates/js/translated/build.js:1189
-#: templates/js/translated/build.js:1810
+#: templates/js/translated/bom.js:804 templates/js/translated/build.js:1411
+#: templates/js/translated/build.js:2048
#: templates/js/translated/table_filters.js:178
msgid "Available"
msgstr ""
@@ -7325,11 +7378,11 @@ msgstr ""
msgid "Remote image must not exceed maximum allowable file size"
msgstr ""
-#: templates/js/translated/api.js:185 templates/js/translated/modals.js:1053
+#: templates/js/translated/api.js:185 templates/js/translated/modals.js:1056
msgid "No Response"
msgstr ""
-#: templates/js/translated/api.js:186 templates/js/translated/modals.js:1054
+#: templates/js/translated/api.js:186 templates/js/translated/modals.js:1057
msgid "No response from the InvenTree server"
msgstr ""
@@ -7341,27 +7394,27 @@ msgstr ""
msgid "API request returned error code 400"
msgstr ""
-#: templates/js/translated/api.js:197 templates/js/translated/modals.js:1063
+#: templates/js/translated/api.js:197 templates/js/translated/modals.js:1066
msgid "Error 401: Not Authenticated"
msgstr ""
-#: templates/js/translated/api.js:198 templates/js/translated/modals.js:1064
+#: templates/js/translated/api.js:198 templates/js/translated/modals.js:1067
msgid "Authentication credentials not supplied"
msgstr ""
-#: templates/js/translated/api.js:202 templates/js/translated/modals.js:1068
+#: templates/js/translated/api.js:202 templates/js/translated/modals.js:1071
msgid "Error 403: Permission Denied"
msgstr ""
-#: templates/js/translated/api.js:203 templates/js/translated/modals.js:1069
+#: templates/js/translated/api.js:203 templates/js/translated/modals.js:1072
msgid "You do not have the required permissions to access this function"
msgstr ""
-#: templates/js/translated/api.js:207 templates/js/translated/modals.js:1073
+#: templates/js/translated/api.js:207 templates/js/translated/modals.js:1076
msgid "Error 404: Resource Not Found"
msgstr ""
-#: templates/js/translated/api.js:208 templates/js/translated/modals.js:1074
+#: templates/js/translated/api.js:208 templates/js/translated/modals.js:1077
msgid "The requested resource could not be located on the server"
msgstr ""
@@ -7373,11 +7426,11 @@ msgstr ""
msgid "HTTP method not allowed at URL"
msgstr ""
-#: templates/js/translated/api.js:217 templates/js/translated/modals.js:1078
+#: templates/js/translated/api.js:217 templates/js/translated/modals.js:1081
msgid "Error 408: Timeout"
msgstr ""
-#: templates/js/translated/api.js:218 templates/js/translated/modals.js:1079
+#: templates/js/translated/api.js:218 templates/js/translated/modals.js:1082
msgid "Connection timeout while requesting data from server"
msgstr ""
@@ -7446,7 +7499,7 @@ msgid "Unknown response from server"
msgstr ""
#: templates/js/translated/barcode.js:140
-#: templates/js/translated/modals.js:1043
+#: templates/js/translated/modals.js:1046
msgid "Invalid server response"
msgstr ""
@@ -7474,7 +7527,7 @@ msgstr ""
msgid "Unlink"
msgstr ""
-#: templates/js/translated/barcode.js:397 templates/js/translated/stock.js:1026
+#: templates/js/translated/barcode.js:397 templates/js/translated/stock.js:1027
msgid "Remove stock item"
msgstr ""
@@ -7516,327 +7569,369 @@ msgstr ""
msgid "Barcode does not match a valid location"
msgstr ""
-#: templates/js/translated/bom.js:36
+#: templates/js/translated/bom.js:75
+msgid "Display row data"
+msgstr ""
+
+#: templates/js/translated/bom.js:131
+msgid "Row Data"
+msgstr ""
+
+#: templates/js/translated/bom.js:249
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:518
+#: templates/js/translated/bom.js:252 templates/js/translated/bom.js:286
+#: templates/js/translated/order.js:369 templates/js/translated/stock.js:519
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:519
+#: templates/js/translated/bom.js:253 templates/js/translated/bom.js:287
+#: templates/js/translated/order.js:370 templates/js/translated/stock.js:520
msgid "Select file format"
msgstr ""
-#: templates/js/translated/bom.js:81
+#: templates/js/translated/bom.js:294
msgid "Cascading"
msgstr ""
-#: templates/js/translated/bom.js:82
+#: templates/js/translated/bom.js:295
msgid "Download cascading / multi-level BOM"
msgstr ""
-#: templates/js/translated/bom.js:87
+#: templates/js/translated/bom.js:300
msgid "Levels"
msgstr ""
-#: templates/js/translated/bom.js:88
+#: templates/js/translated/bom.js:301
msgid "Select maximum number of BOM levels to export (0 = all levels)"
msgstr ""
-#: templates/js/translated/bom.js:94
+#: templates/js/translated/bom.js:307
msgid "Include Parameter Data"
msgstr ""
-#: templates/js/translated/bom.js:95
+#: templates/js/translated/bom.js:308
msgid "Include part parameter data in exported BOM"
msgstr ""
-#: templates/js/translated/bom.js:100
+#: templates/js/translated/bom.js:313
msgid "Include Stock Data"
msgstr ""
-#: templates/js/translated/bom.js:101
+#: templates/js/translated/bom.js:314
msgid "Include part stock data in exported BOM"
msgstr ""
-#: templates/js/translated/bom.js:106
+#: templates/js/translated/bom.js:319
msgid "Include Manufacturer Data"
msgstr ""
-#: templates/js/translated/bom.js:107
+#: templates/js/translated/bom.js:320
msgid "Include part manufacturer data in exported BOM"
msgstr ""
-#: templates/js/translated/bom.js:112
+#: templates/js/translated/bom.js:325
msgid "Include Supplier Data"
msgstr ""
-#: templates/js/translated/bom.js:113
+#: templates/js/translated/bom.js:326
msgid "Include part supplier data in exported BOM"
msgstr ""
-#: templates/js/translated/bom.js:296
+#: templates/js/translated/bom.js:509
msgid "Remove substitute part"
msgstr ""
-#: templates/js/translated/bom.js:352
+#: templates/js/translated/bom.js:565
msgid "Select and add a new substitute part using the input below"
msgstr ""
-#: templates/js/translated/bom.js:363
+#: templates/js/translated/bom.js:576
msgid "Are you sure you wish to remove this substitute part link?"
msgstr ""
-#: templates/js/translated/bom.js:369
+#: templates/js/translated/bom.js:582
msgid "Remove Substitute Part"
msgstr ""
-#: templates/js/translated/bom.js:408
+#: templates/js/translated/bom.js:621
msgid "Add Substitute"
msgstr ""
-#: templates/js/translated/bom.js:409
+#: templates/js/translated/bom.js:622
msgid "Edit BOM Item Substitutes"
msgstr ""
-#: templates/js/translated/bom.js:528
+#: templates/js/translated/bom.js:741
msgid "Substitutes Available"
msgstr ""
-#: templates/js/translated/bom.js:532 templates/js/translated/build.js:1171
+#: templates/js/translated/bom.js:745 templates/js/translated/build.js:1393
msgid "Variant stock allowed"
msgstr ""
-#: templates/js/translated/bom.js:537
+#: templates/js/translated/bom.js:750
msgid "Open subassembly"
msgstr ""
-#: templates/js/translated/bom.js:609
+#: templates/js/translated/bom.js:822
msgid "Substitutes"
msgstr ""
-#: templates/js/translated/bom.js:624
+#: templates/js/translated/bom.js:837
msgid "Purchase Price Range"
msgstr ""
-#: templates/js/translated/bom.js:631
+#: templates/js/translated/bom.js:844
msgid "Purchase Price Average"
msgstr ""
-#: templates/js/translated/bom.js:680 templates/js/translated/bom.js:769
+#: templates/js/translated/bom.js:893 templates/js/translated/bom.js:982
msgid "View BOM"
msgstr ""
-#: templates/js/translated/bom.js:740
+#: templates/js/translated/bom.js:953
msgid "Validate BOM Item"
msgstr ""
-#: templates/js/translated/bom.js:742
+#: templates/js/translated/bom.js:955
msgid "This line has been validated"
msgstr ""
-#: templates/js/translated/bom.js:744
+#: templates/js/translated/bom.js:957
msgid "Edit substitute parts"
msgstr ""
-#: templates/js/translated/bom.js:746 templates/js/translated/bom.js:920
+#: templates/js/translated/bom.js:959 templates/js/translated/bom.js:1138
msgid "Edit BOM Item"
msgstr ""
-#: templates/js/translated/bom.js:748 templates/js/translated/bom.js:903
+#: templates/js/translated/bom.js:961 templates/js/translated/bom.js:1121
msgid "Delete BOM Item"
msgstr ""
-#: templates/js/translated/bom.js:842 templates/js/translated/build.js:915
+#: templates/js/translated/bom.js:1060 templates/js/translated/build.js:1137
msgid "No BOM items found"
msgstr ""
-#: templates/js/translated/bom.js:898
+#: templates/js/translated/bom.js:1116
msgid "Are you sure you want to delete this BOM item?"
msgstr ""
-#: templates/js/translated/bom.js:1100 templates/js/translated/build.js:1155
+#: templates/js/translated/bom.js:1318 templates/js/translated/build.js:1377
msgid "Required Part"
msgstr ""
-#: templates/js/translated/bom.js:1122
+#: templates/js/translated/bom.js:1340
msgid "Inherited from parent BOM"
msgstr ""
-#: templates/js/translated/build.js:84
+#: templates/js/translated/build.js:85
msgid "Edit Build Order"
msgstr ""
-#: templates/js/translated/build.js:118
+#: templates/js/translated/build.js:119
msgid "Create Build Order"
msgstr ""
-#: templates/js/translated/build.js:139
+#: templates/js/translated/build.js:140
msgid "Build order is ready to be completed"
msgstr ""
-#: templates/js/translated/build.js:144
+#: templates/js/translated/build.js:145
msgid "Build Order is incomplete"
msgstr ""
-#: templates/js/translated/build.js:172
+#: templates/js/translated/build.js:173
msgid "Complete Build Order"
msgstr ""
-#: templates/js/translated/build.js:193
+#: templates/js/translated/build.js:214 templates/js/translated/stock.js:93
+#: templates/js/translated/stock.js:182
+msgid "Next available serial number"
+msgstr ""
+
+#: templates/js/translated/build.js:216 templates/js/translated/stock.js:95
+#: templates/js/translated/stock.js:184
+msgid "Latest serial number"
+msgstr ""
+
+#: templates/js/translated/build.js:225
+msgid "The Bill of Materials contains trackable parts"
+msgstr ""
+
+#: templates/js/translated/build.js:226
+msgid "Build outputs must be generated individually"
+msgstr ""
+
+#: templates/js/translated/build.js:234
+msgid "Trackable parts can have serial numbers specified"
+msgstr ""
+
+#: templates/js/translated/build.js:235
+msgid "Enter serial numbers to generate multiple single build outputs"
+msgstr ""
+
+#: templates/js/translated/build.js:242
+msgid "Create Build Output"
+msgstr ""
+
+#: templates/js/translated/build.js:273
msgid "Allocate stock items to this build output"
msgstr ""
-#: templates/js/translated/build.js:204
+#: templates/js/translated/build.js:284
msgid "Unallocate stock from build output"
msgstr ""
-#: templates/js/translated/build.js:213
+#: templates/js/translated/build.js:293
msgid "Complete build output"
msgstr ""
-#: templates/js/translated/build.js:221
+#: templates/js/translated/build.js:301
msgid "Delete build output"
msgstr ""
-#: templates/js/translated/build.js:244
+#: templates/js/translated/build.js:324
msgid "Are you sure you wish to unallocate stock items from this build?"
msgstr ""
-#: templates/js/translated/build.js:262
+#: templates/js/translated/build.js:342
msgid "Unallocate Stock Items"
msgstr ""
-#: templates/js/translated/build.js:280
+#: templates/js/translated/build.js:360 templates/js/translated/build.js:508
msgid "Select Build Outputs"
msgstr ""
-#: templates/js/translated/build.js:281
+#: templates/js/translated/build.js:361 templates/js/translated/build.js:509
msgid "At least one build output must be selected"
msgstr ""
-#: templates/js/translated/build.js:335
+#: templates/js/translated/build.js:415 templates/js/translated/build.js:563
msgid "Output"
msgstr ""
-#: templates/js/translated/build.js:351
+#: templates/js/translated/build.js:431
msgid "Complete Build Outputs"
msgstr ""
-#: templates/js/translated/build.js:446
+#: templates/js/translated/build.js:576
+msgid "Delete Build Outputs"
+msgstr ""
+
+#: templates/js/translated/build.js:665
msgid "No build order allocations found"
msgstr ""
-#: templates/js/translated/build.js:484 templates/js/translated/order.js:1848
+#: templates/js/translated/build.js:703 templates/js/translated/order.js:1848
msgid "Location not specified"
msgstr ""
-#: templates/js/translated/build.js:663
+#: templates/js/translated/build.js:885
msgid "No active build outputs found"
msgstr ""
-#: templates/js/translated/build.js:1112 templates/js/translated/build.js:1821
+#: templates/js/translated/build.js:1334 templates/js/translated/build.js:2059
#: templates/js/translated/order.js:1982
msgid "Edit stock allocation"
msgstr ""
-#: templates/js/translated/build.js:1114 templates/js/translated/build.js:1822
+#: templates/js/translated/build.js:1336 templates/js/translated/build.js:2060
#: templates/js/translated/order.js:1983
msgid "Delete stock allocation"
msgstr ""
-#: templates/js/translated/build.js:1132
+#: templates/js/translated/build.js:1354
msgid "Edit Allocation"
msgstr ""
-#: templates/js/translated/build.js:1142
+#: templates/js/translated/build.js:1364
msgid "Remove Allocation"
msgstr ""
-#: templates/js/translated/build.js:1167
+#: templates/js/translated/build.js:1389
msgid "Substitute parts available"
msgstr ""
-#: templates/js/translated/build.js:1184
+#: templates/js/translated/build.js:1406
msgid "Quantity Per"
msgstr ""
-#: templates/js/translated/build.js:1194 templates/js/translated/build.js:1420
-#: templates/js/translated/build.js:1817 templates/js/translated/order.js:2227
+#: templates/js/translated/build.js:1416 templates/js/translated/build.js:1656
+#: templates/js/translated/build.js:2055 templates/js/translated/order.js:2227
msgid "Allocated"
msgstr ""
-#: templates/js/translated/build.js:1250 templates/js/translated/order.js:2307
+#: templates/js/translated/build.js:1472 templates/js/translated/order.js:2307
msgid "Build stock"
msgstr ""
-#: templates/js/translated/build.js:1254 templates/stock_table.html:53
+#: templates/js/translated/build.js:1476 templates/stock_table.html:53
msgid "Order stock"
msgstr ""
-#: templates/js/translated/build.js:1257 templates/js/translated/order.js:2300
+#: templates/js/translated/build.js:1479 templates/js/translated/order.js:2300
msgid "Allocate stock"
msgstr ""
-#: templates/js/translated/build.js:1322 templates/js/translated/order.js:1499
+#: templates/js/translated/build.js:1558 templates/js/translated/order.js:1499
msgid "Specify stock allocation quantity"
msgstr ""
-#: templates/js/translated/build.js:1393 templates/js/translated/label.js:134
+#: templates/js/translated/build.js:1629 templates/js/translated/label.js:134
#: templates/js/translated/order.js:1550 templates/js/translated/report.js:225
msgid "Select Parts"
msgstr ""
-#: templates/js/translated/build.js:1394 templates/js/translated/order.js:1551
+#: templates/js/translated/build.js:1630 templates/js/translated/order.js:1551
msgid "You must select at least one part to allocate"
msgstr ""
-#: templates/js/translated/build.js:1408 templates/js/translated/order.js:1565
+#: templates/js/translated/build.js:1644 templates/js/translated/order.js:1565
msgid "Select source location (leave blank to take from all locations)"
msgstr ""
-#: templates/js/translated/build.js:1437 templates/js/translated/order.js:1600
+#: templates/js/translated/build.js:1673 templates/js/translated/order.js:1600
msgid "Confirm stock allocation"
msgstr ""
-#: templates/js/translated/build.js:1438
+#: templates/js/translated/build.js:1674
msgid "Allocate Stock Items to Build Order"
msgstr ""
-#: templates/js/translated/build.js:1449 templates/js/translated/order.js:1613
+#: templates/js/translated/build.js:1685 templates/js/translated/order.js:1613
msgid "No matching stock locations"
msgstr ""
-#: templates/js/translated/build.js:1519 templates/js/translated/order.js:1690
+#: templates/js/translated/build.js:1757 templates/js/translated/order.js:1690
msgid "No matching stock items"
msgstr ""
-#: templates/js/translated/build.js:1637
+#: templates/js/translated/build.js:1875
msgid "No builds matching query"
msgstr ""
-#: templates/js/translated/build.js:1654 templates/js/translated/part.js:1213
-#: templates/js/translated/part.js:1624 templates/js/translated/stock.js:1520
-#: templates/js/translated/stock.js:2479
+#: templates/js/translated/build.js:1892 templates/js/translated/part.js:1213
+#: templates/js/translated/part.js:1624 templates/js/translated/stock.js:1644
+#: templates/js/translated/stock.js:2603
msgid "Select"
msgstr ""
-#: templates/js/translated/build.js:1674
+#: templates/js/translated/build.js:1912
msgid "Build order is overdue"
msgstr ""
-#: templates/js/translated/build.js:1735 templates/js/translated/stock.js:2698
+#: templates/js/translated/build.js:1973 templates/js/translated/stock.js:2822
msgid "No user information"
msgstr ""
-#: templates/js/translated/build.js:1747
+#: templates/js/translated/build.js:1985
msgid "No information"
msgstr ""
-#: templates/js/translated/build.js:1798
+#: templates/js/translated/build.js:2036
msgid "No parts allocated for"
msgstr ""
@@ -7966,48 +8061,60 @@ msgstr ""
msgid "Create filter"
msgstr ""
-#: templates/js/translated/forms.js:350 templates/js/translated/forms.js:365
-#: templates/js/translated/forms.js:379 templates/js/translated/forms.js:393
+#: templates/js/translated/forms.js:351 templates/js/translated/forms.js:366
+#: templates/js/translated/forms.js:380 templates/js/translated/forms.js:394
msgid "Action Prohibited"
msgstr ""
-#: templates/js/translated/forms.js:352
+#: templates/js/translated/forms.js:353
msgid "Create operation not allowed"
msgstr ""
-#: templates/js/translated/forms.js:367
+#: templates/js/translated/forms.js:368
msgid "Update operation not allowed"
msgstr ""
-#: templates/js/translated/forms.js:381
+#: templates/js/translated/forms.js:382
msgid "Delete operation not allowed"
msgstr ""
-#: templates/js/translated/forms.js:395
+#: templates/js/translated/forms.js:396
msgid "View operation not allowed"
msgstr ""
-#: templates/js/translated/forms.js:680
+#: templates/js/translated/forms.js:681
msgid "Enter a valid number"
msgstr ""
-#: templates/js/translated/forms.js:1082 templates/modals.html:19
+#: templates/js/translated/forms.js:1129 templates/modals.html:19
#: templates/modals.html:43
msgid "Form errors exist"
msgstr ""
-#: templates/js/translated/forms.js:1487
+#: templates/js/translated/forms.js:1558
msgid "No results found"
msgstr ""
-#: templates/js/translated/forms.js:1691
+#: templates/js/translated/forms.js:1768
msgid "Searching"
msgstr ""
-#: templates/js/translated/forms.js:1930
+#: templates/js/translated/forms.js:2013
msgid "Clear input"
msgstr ""
+#: templates/js/translated/forms.js:2479
+msgid "File Column"
+msgstr ""
+
+#: templates/js/translated/forms.js:2479
+msgid "Field Name"
+msgstr ""
+
+#: templates/js/translated/forms.js:2491
+msgid "Select Columns"
+msgstr ""
+
#: templates/js/translated/helpers.js:19
msgid "YES"
msgstr ""
@@ -8017,7 +8124,7 @@ msgid "NO"
msgstr ""
#: templates/js/translated/label.js:29 templates/js/translated/report.js:118
-#: templates/js/translated/stock.js:1050
+#: templates/js/translated/stock.js:1051
msgid "Select Stock Items"
msgstr ""
@@ -8072,7 +8179,7 @@ msgid "Cancel"
msgstr ""
#: templates/js/translated/modals.js:77 templates/js/translated/modals.js:119
-#: templates/js/translated/modals.js:677 templates/js/translated/modals.js:982
+#: templates/js/translated/modals.js:677 templates/js/translated/modals.js:985
#: templates/modals.html:28 templates/modals.html:51
msgid "Submit"
msgstr ""
@@ -8097,31 +8204,31 @@ msgstr ""
msgid "Loading Data"
msgstr ""
-#: templates/js/translated/modals.js:934
+#: templates/js/translated/modals.js:937
msgid "Invalid response from server"
msgstr ""
-#: templates/js/translated/modals.js:934
+#: templates/js/translated/modals.js:937
msgid "Form data missing from server response"
msgstr ""
-#: templates/js/translated/modals.js:946
+#: templates/js/translated/modals.js:949
msgid "Error posting form data"
msgstr ""
-#: templates/js/translated/modals.js:1043
+#: templates/js/translated/modals.js:1046
msgid "JSON response missing form data"
msgstr ""
-#: templates/js/translated/modals.js:1058
+#: templates/js/translated/modals.js:1061
msgid "Error 400: Bad Request"
msgstr ""
-#: templates/js/translated/modals.js:1059
+#: templates/js/translated/modals.js:1062
msgid "Server returned error code 400"
msgstr ""
-#: templates/js/translated/modals.js:1082
+#: templates/js/translated/modals.js:1085
msgid "Error requesting form data"
msgstr ""
@@ -8141,10 +8248,6 @@ msgstr ""
msgid "Build ID"
msgstr ""
-#: templates/js/translated/model_renderers.js:182
-msgid "Part ID"
-msgstr ""
-
#: templates/js/translated/model_renderers.js:249
#: templates/js/translated/model_renderers.js:270
msgid "Order ID"
@@ -8210,7 +8313,7 @@ msgstr ""
msgid "Quantity to receive"
msgstr ""
-#: templates/js/translated/order.js:520 templates/js/translated/stock.js:2131
+#: templates/js/translated/order.js:520 templates/js/translated/stock.js:2255
msgid "Stock Status"
msgstr ""
@@ -8344,7 +8447,7 @@ msgid "Delete Stock Allocation"
msgstr ""
#: templates/js/translated/order.js:1959 templates/js/translated/order.js:2048
-#: templates/js/translated/stock.js:1436
+#: templates/js/translated/stock.js:1560
msgid "Shipped to customer"
msgstr ""
@@ -8545,12 +8648,12 @@ msgid "No category"
msgstr ""
#: templates/js/translated/part.js:1296
-#: templates/js/translated/table_filters.js:430
+#: templates/js/translated/table_filters.js:425
msgid "Low stock"
msgstr ""
#: templates/js/translated/part.js:1387 templates/js/translated/part.js:1559
-#: templates/js/translated/stock.js:2440
+#: templates/js/translated/stock.js:2564
msgid "Display as list"
msgstr ""
@@ -8558,7 +8661,7 @@ msgstr ""
msgid "Display as grid"
msgstr ""
-#: templates/js/translated/part.js:1578 templates/js/translated/stock.js:2459
+#: templates/js/translated/part.js:1578 templates/js/translated/stock.js:2583
msgid "Display as tree"
msgstr ""
@@ -8566,7 +8669,7 @@ msgstr ""
msgid "Subscribed category"
msgstr ""
-#: templates/js/translated/part.js:1656 templates/js/translated/stock.js:2503
+#: templates/js/translated/part.js:1656 templates/js/translated/stock.js:2627
msgid "Path"
msgstr ""
@@ -8574,11 +8677,12 @@ msgstr ""
msgid "No test templates matching query"
msgstr ""
-#: templates/js/translated/part.js:1751 templates/js/translated/stock.js:1242
+#: templates/js/translated/part.js:1751 templates/js/translated/stock.js:1271
msgid "Edit test result"
msgstr ""
-#: templates/js/translated/part.js:1752 templates/js/translated/stock.js:1243
+#: templates/js/translated/part.js:1752 templates/js/translated/stock.js:1272
+#: templates/js/translated/stock.js:1518
msgid "Delete test result"
msgstr ""
@@ -8687,347 +8791,375 @@ msgstr ""
msgid "Sales Order(s) must be selected before printing report"
msgstr ""
-#: templates/js/translated/stock.js:74
+#: templates/js/translated/stock.js:75
msgid "Serialize Stock Item"
msgstr ""
-#: templates/js/translated/stock.js:92 templates/js/translated/stock.js:181
-msgid "Next available serial number"
-msgstr ""
-
-#: templates/js/translated/stock.js:94 templates/js/translated/stock.js:183
-msgid "Latest serial number"
-msgstr ""
-
-#: templates/js/translated/stock.js:102
+#: templates/js/translated/stock.js:103
msgid "Confirm Stock Serialization"
msgstr ""
-#: templates/js/translated/stock.js:111
+#: templates/js/translated/stock.js:112
msgid "Parent stock location"
msgstr ""
-#: templates/js/translated/stock.js:154
+#: templates/js/translated/stock.js:155
msgid "New Stock Location"
msgstr ""
-#: templates/js/translated/stock.js:194
+#: templates/js/translated/stock.js:195
msgid "This part cannot be serialized"
msgstr ""
-#: templates/js/translated/stock.js:233
+#: templates/js/translated/stock.js:234
msgid "Enter initial quantity for this stock item"
msgstr ""
-#: templates/js/translated/stock.js:239
+#: templates/js/translated/stock.js:240
msgid "Enter serial numbers for new stock (or leave blank)"
msgstr ""
-#: templates/js/translated/stock.js:382
+#: templates/js/translated/stock.js:383
msgid "Created new stock item"
msgstr ""
-#: templates/js/translated/stock.js:395
+#: templates/js/translated/stock.js:396
msgid "Created multiple stock items"
msgstr ""
-#: templates/js/translated/stock.js:420
+#: templates/js/translated/stock.js:421
msgid "Find Serial Number"
msgstr ""
-#: templates/js/translated/stock.js:424 templates/js/translated/stock.js:425
+#: templates/js/translated/stock.js:425 templates/js/translated/stock.js:426
msgid "Enter serial number"
msgstr ""
-#: templates/js/translated/stock.js:441
+#: templates/js/translated/stock.js:442
msgid "Enter a serial number"
msgstr ""
-#: templates/js/translated/stock.js:461
+#: templates/js/translated/stock.js:462
msgid "No matching serial number"
msgstr ""
-#: templates/js/translated/stock.js:470
+#: templates/js/translated/stock.js:471
msgid "More than one matching result found"
msgstr ""
-#: templates/js/translated/stock.js:515
+#: templates/js/translated/stock.js:516
msgid "Export Stock"
msgstr ""
-#: templates/js/translated/stock.js:526
+#: templates/js/translated/stock.js:527
msgid "Include Sublocations"
msgstr ""
-#: templates/js/translated/stock.js:527
+#: templates/js/translated/stock.js:528
msgid "Include stock items in sublocations"
msgstr ""
-#: templates/js/translated/stock.js:636
+#: templates/js/translated/stock.js:637
msgid "Confirm stock assignment"
msgstr ""
-#: templates/js/translated/stock.js:637
+#: templates/js/translated/stock.js:638
msgid "Assign Stock to Customer"
msgstr ""
-#: templates/js/translated/stock.js:714
+#: templates/js/translated/stock.js:715
msgid "Warning: Merge operation cannot be reversed"
msgstr ""
-#: templates/js/translated/stock.js:715
+#: templates/js/translated/stock.js:716
msgid "Some information will be lost when merging stock items"
msgstr ""
-#: templates/js/translated/stock.js:717
+#: templates/js/translated/stock.js:718
msgid "Stock transaction history will be deleted for merged items"
msgstr ""
-#: templates/js/translated/stock.js:718
+#: templates/js/translated/stock.js:719
msgid "Supplier part information will be deleted for merged items"
msgstr ""
-#: templates/js/translated/stock.js:804
+#: templates/js/translated/stock.js:805
msgid "Confirm stock item merge"
msgstr ""
-#: templates/js/translated/stock.js:805
+#: templates/js/translated/stock.js:806
msgid "Merge Stock Items"
msgstr ""
-#: templates/js/translated/stock.js:900
+#: templates/js/translated/stock.js:901
msgid "Transfer Stock"
msgstr ""
-#: templates/js/translated/stock.js:901
+#: templates/js/translated/stock.js:902
msgid "Move"
msgstr ""
-#: templates/js/translated/stock.js:907
+#: templates/js/translated/stock.js:908
msgid "Count Stock"
msgstr ""
-#: templates/js/translated/stock.js:908
+#: templates/js/translated/stock.js:909
msgid "Count"
msgstr ""
-#: templates/js/translated/stock.js:912
+#: templates/js/translated/stock.js:913
msgid "Remove Stock"
msgstr ""
-#: templates/js/translated/stock.js:913
+#: templates/js/translated/stock.js:914
msgid "Take"
msgstr ""
-#: templates/js/translated/stock.js:917
+#: templates/js/translated/stock.js:918
msgid "Add Stock"
msgstr ""
-#: templates/js/translated/stock.js:918 users/models.py:208
+#: templates/js/translated/stock.js:919 users/models.py:213
msgid "Add"
msgstr ""
-#: templates/js/translated/stock.js:922 templates/stock_table.html:58
+#: templates/js/translated/stock.js:923 templates/stock_table.html:58
msgid "Delete Stock"
msgstr ""
-#: templates/js/translated/stock.js:1011
+#: templates/js/translated/stock.js:1012
msgid "Quantity cannot be adjusted for serialized stock"
msgstr ""
-#: templates/js/translated/stock.js:1011
+#: templates/js/translated/stock.js:1012
msgid "Specify stock quantity"
msgstr ""
-#: templates/js/translated/stock.js:1051
+#: templates/js/translated/stock.js:1052
msgid "You must select at least one available stock item"
msgstr ""
-#: templates/js/translated/stock.js:1209
+#: templates/js/translated/stock.js:1210
msgid "PASS"
msgstr ""
-#: templates/js/translated/stock.js:1211
+#: templates/js/translated/stock.js:1212
msgid "FAIL"
msgstr ""
-#: templates/js/translated/stock.js:1216
+#: templates/js/translated/stock.js:1217
msgid "NO RESULT"
msgstr ""
-#: templates/js/translated/stock.js:1238
+#: templates/js/translated/stock.js:1264
+msgid "Pass test"
+msgstr ""
+
+#: templates/js/translated/stock.js:1267
msgid "Add test result"
msgstr ""
-#: templates/js/translated/stock.js:1264
+#: templates/js/translated/stock.js:1293
msgid "No test results found"
msgstr ""
-#: templates/js/translated/stock.js:1321
+#: templates/js/translated/stock.js:1349
msgid "Test Date"
msgstr ""
-#: templates/js/translated/stock.js:1428
+#: templates/js/translated/stock.js:1501
+msgid "Edit Test Result"
+msgstr ""
+
+#: templates/js/translated/stock.js:1523
+msgid "Delete Test Result"
+msgstr ""
+
+#: templates/js/translated/stock.js:1552
msgid "In production"
msgstr ""
-#: templates/js/translated/stock.js:1432
+#: templates/js/translated/stock.js:1556
msgid "Installed in Stock Item"
msgstr ""
-#: templates/js/translated/stock.js:1440
+#: templates/js/translated/stock.js:1564
msgid "Assigned to Sales Order"
msgstr ""
-#: templates/js/translated/stock.js:1446
+#: templates/js/translated/stock.js:1570
msgid "No stock location set"
msgstr ""
-#: templates/js/translated/stock.js:1604
+#: templates/js/translated/stock.js:1728
msgid "Stock item is in production"
msgstr ""
-#: templates/js/translated/stock.js:1609
+#: templates/js/translated/stock.js:1733
msgid "Stock item assigned to sales order"
msgstr ""
-#: templates/js/translated/stock.js:1612
+#: templates/js/translated/stock.js:1736
msgid "Stock item assigned to customer"
msgstr ""
-#: templates/js/translated/stock.js:1616
+#: templates/js/translated/stock.js:1740
msgid "Stock item has expired"
msgstr ""
-#: templates/js/translated/stock.js:1618
+#: templates/js/translated/stock.js:1742
msgid "Stock item will expire soon"
msgstr ""
-#: templates/js/translated/stock.js:1624
+#: templates/js/translated/stock.js:1748
msgid "Serialized stock item has been allocated"
msgstr ""
-#: templates/js/translated/stock.js:1626
+#: templates/js/translated/stock.js:1750
msgid "Stock item has been fully allocated"
msgstr ""
-#: templates/js/translated/stock.js:1628
+#: templates/js/translated/stock.js:1752
msgid "Stock item has been partially allocated"
msgstr ""
-#: templates/js/translated/stock.js:1633
+#: templates/js/translated/stock.js:1757
msgid "Stock item has been installed in another item"
msgstr ""
-#: templates/js/translated/stock.js:1640
+#: templates/js/translated/stock.js:1764
msgid "Stock item has been rejected"
msgstr ""
-#: templates/js/translated/stock.js:1642
+#: templates/js/translated/stock.js:1766
msgid "Stock item is lost"
msgstr ""
-#: templates/js/translated/stock.js:1644
+#: templates/js/translated/stock.js:1768
msgid "Stock item is destroyed"
msgstr ""
-#: templates/js/translated/stock.js:1648
+#: templates/js/translated/stock.js:1772
#: templates/js/translated/table_filters.js:188
msgid "Depleted"
msgstr ""
-#: templates/js/translated/stock.js:1698
+#: templates/js/translated/stock.js:1822
msgid "Stocktake"
msgstr ""
-#: templates/js/translated/stock.js:1771
+#: templates/js/translated/stock.js:1895
msgid "Supplier part not specified"
msgstr ""
-#: templates/js/translated/stock.js:1809
+#: templates/js/translated/stock.js:1933
msgid "No stock items matching query"
msgstr ""
-#: templates/js/translated/stock.js:1830 templates/js/translated/stock.js:1878
+#: templates/js/translated/stock.js:1954 templates/js/translated/stock.js:2002
msgid "items"
msgstr ""
-#: templates/js/translated/stock.js:1918
+#: templates/js/translated/stock.js:2042
msgid "batches"
msgstr ""
-#: templates/js/translated/stock.js:1945
+#: templates/js/translated/stock.js:2069
msgid "locations"
msgstr ""
-#: templates/js/translated/stock.js:1947
+#: templates/js/translated/stock.js:2071
msgid "Undefined location"
msgstr ""
-#: templates/js/translated/stock.js:2146
+#: templates/js/translated/stock.js:2270
msgid "Set Stock Status"
msgstr ""
-#: templates/js/translated/stock.js:2160
+#: templates/js/translated/stock.js:2284
msgid "Select Status Code"
msgstr ""
-#: templates/js/translated/stock.js:2161
+#: templates/js/translated/stock.js:2285
msgid "Status code must be selected"
msgstr ""
-#: templates/js/translated/stock.js:2340
+#: templates/js/translated/stock.js:2464
msgid "Allocated Quantity"
msgstr ""
-#: templates/js/translated/stock.js:2535
+#: templates/js/translated/stock.js:2659
msgid "Invalid date"
msgstr ""
-#: templates/js/translated/stock.js:2557
+#: templates/js/translated/stock.js:2681
msgid "Details"
msgstr ""
-#: templates/js/translated/stock.js:2582
+#: templates/js/translated/stock.js:2706
msgid "Location no longer exists"
msgstr ""
-#: templates/js/translated/stock.js:2601
+#: templates/js/translated/stock.js:2725
msgid "Purchase order no longer exists"
msgstr ""
-#: templates/js/translated/stock.js:2620
+#: templates/js/translated/stock.js:2744
msgid "Customer no longer exists"
msgstr ""
-#: templates/js/translated/stock.js:2638
+#: templates/js/translated/stock.js:2762
msgid "Stock item no longer exists"
msgstr ""
-#: templates/js/translated/stock.js:2661
+#: templates/js/translated/stock.js:2785
msgid "Added"
msgstr ""
-#: templates/js/translated/stock.js:2669
+#: templates/js/translated/stock.js:2793
msgid "Removed"
msgstr ""
-#: templates/js/translated/stock.js:2710
+#: templates/js/translated/stock.js:2834
msgid "Edit tracking entry"
msgstr ""
-#: templates/js/translated/stock.js:2711
+#: templates/js/translated/stock.js:2835
msgid "Delete tracking entry"
msgstr ""
-#: templates/js/translated/stock.js:2762
+#: templates/js/translated/stock.js:2886
msgid "No installed items"
msgstr ""
-#: templates/js/translated/stock.js:2813
+#: templates/js/translated/stock.js:2937
msgid "Uninstall Stock Item"
msgstr ""
+#: templates/js/translated/stock.js:2973
+msgid "Install another stock item into this item"
+msgstr ""
+
+#: templates/js/translated/stock.js:2974
+msgid "Stock items can only be installed if they meet the following criteria"
+msgstr ""
+
+#: templates/js/translated/stock.js:2976
+msgid "The Stock Item links to a Part which is the BOM for this Stock Item"
+msgstr ""
+
+#: templates/js/translated/stock.js:2977
+msgid "The Stock Item is currently available in stock"
+msgstr ""
+
+#: templates/js/translated/stock.js:2978
+msgid "The Stock Item is serialized and does not belong to another item"
+msgstr ""
+
+#: templates/js/translated/stock.js:2991
+msgid "Select part to install"
+msgstr ""
+
#: templates/js/translated/table_filters.js:56
msgid "Trackable Part"
msgstr ""
@@ -9055,12 +9187,12 @@ msgstr ""
#: templates/js/translated/table_filters.js:121
#: templates/js/translated/table_filters.js:122
-#: templates/js/translated/table_filters.js:407
+#: templates/js/translated/table_filters.js:402
msgid "Include subcategories"
msgstr ""
#: templates/js/translated/table_filters.js:126
-#: templates/js/translated/table_filters.js:442
+#: templates/js/translated/table_filters.js:437
msgid "Subscribed"
msgstr ""
@@ -9102,7 +9234,7 @@ msgid "Batch code"
msgstr ""
#: templates/js/translated/table_filters.js:163
-#: templates/js/translated/table_filters.js:379
+#: templates/js/translated/table_filters.js:374
msgid "Active parts"
msgstr ""
@@ -9187,47 +9319,47 @@ msgstr ""
msgid "Show stock which is close to expiring"
msgstr ""
-#: templates/js/translated/table_filters.js:290
+#: templates/js/translated/table_filters.js:285
msgid "Build status"
msgstr ""
-#: templates/js/translated/table_filters.js:303
-#: templates/js/translated/table_filters.js:344
+#: templates/js/translated/table_filters.js:298
+#: templates/js/translated/table_filters.js:339
msgid "Assigned to me"
msgstr ""
-#: templates/js/translated/table_filters.js:320
-#: templates/js/translated/table_filters.js:331
-#: templates/js/translated/table_filters.js:352
+#: templates/js/translated/table_filters.js:315
+#: templates/js/translated/table_filters.js:326
+#: templates/js/translated/table_filters.js:347
msgid "Order status"
msgstr ""
-#: templates/js/translated/table_filters.js:336
-#: templates/js/translated/table_filters.js:357
+#: templates/js/translated/table_filters.js:331
+#: templates/js/translated/table_filters.js:352
msgid "Outstanding"
msgstr ""
-#: templates/js/translated/table_filters.js:408
+#: templates/js/translated/table_filters.js:403
msgid "Include parts in subcategories"
msgstr ""
-#: templates/js/translated/table_filters.js:412
+#: templates/js/translated/table_filters.js:407
msgid "Has IPN"
msgstr ""
-#: templates/js/translated/table_filters.js:413
+#: templates/js/translated/table_filters.js:408
msgid "Part has internal part number"
msgstr ""
-#: templates/js/translated/table_filters.js:418
+#: templates/js/translated/table_filters.js:413
msgid "Show active parts"
msgstr ""
-#: templates/js/translated/table_filters.js:426
+#: templates/js/translated/table_filters.js:421
msgid "Stock available"
msgstr ""
-#: templates/js/translated/table_filters.js:454
+#: templates/js/translated/table_filters.js:449
msgid "Purchasable"
msgstr ""
@@ -9480,35 +9612,35 @@ msgstr ""
msgid "Important dates"
msgstr ""
-#: users/models.py:195
+#: users/models.py:200
msgid "Permission set"
msgstr ""
-#: users/models.py:203
+#: users/models.py:208
msgid "Group"
msgstr ""
-#: users/models.py:206
+#: users/models.py:211
msgid "View"
msgstr ""
-#: users/models.py:206
+#: users/models.py:211
msgid "Permission to view items"
msgstr ""
-#: users/models.py:208
+#: users/models.py:213
msgid "Permission to add items"
msgstr ""
-#: users/models.py:210
+#: users/models.py:215
msgid "Change"
msgstr ""
-#: users/models.py:210
+#: users/models.py:215
msgid "Permissions to edit items"
msgstr ""
-#: users/models.py:212
+#: users/models.py:217
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 0c357b94cc..146938fa46 100644
--- a/InvenTree/locale/id/LC_MESSAGES/django.po
+++ b/InvenTree/locale/id/LC_MESSAGES/django.po
@@ -3,8 +3,8 @@ msgid ""
msgstr ""
"Project-Id-Version: inventree\n"
"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2022-01-29 00:17+0000\n"
-"PO-Revision-Date: 2022-01-29 01:11\n"
+"POT-Creation-Date: 2022-02-18 20:36+0000\n"
+"PO-Revision-Date: 2022-02-18 20:38\n"
"Last-Translator: \n"
"Language-Team: Indonesian\n"
"Language: id_ID\n"
@@ -34,9 +34,9 @@ msgstr "Aksi tidak ditemukan"
msgid "Enter date"
msgstr "Masukkan tanggal"
-#: InvenTree/forms.py:126 build/forms.py:48 build/forms.py:69 order/forms.py:24
-#: order/forms.py:35 order/forms.py:46 order/forms.py:57
-#: templates/account/email_confirm.html:20 templates/js/translated/forms.js:595
+#: InvenTree/forms.py:126 order/forms.py:24 order/forms.py:35 order/forms.py:46
+#: order/forms.py:57 templates/account/email_confirm.html:20
+#: templates/js/translated/forms.js:596
msgid "Confirm"
msgstr "Konfirmasi"
@@ -86,7 +86,7 @@ msgid "Duplicate serial: {n}"
msgstr ""
#: InvenTree/helpers.py:446 order/models.py:282 order/models.py:425
-#: stock/views.py:1231
+#: stock/views.py:1082
msgid "Invalid quantity provided"
msgstr ""
@@ -119,133 +119,133 @@ msgstr ""
msgid "Number of unique serial number ({s}) must match quantity ({q})"
msgstr ""
-#: InvenTree/models.py:120
+#: InvenTree/models.py:176
msgid "Missing file"
msgstr ""
-#: InvenTree/models.py:121
+#: InvenTree/models.py:177
msgid "Missing external link"
msgstr ""
-#: InvenTree/models.py:132 stock/models.py:1995
+#: InvenTree/models.py:188 stock/models.py:1995
#: templates/js/translated/attachment.js:119
msgid "Attachment"
msgstr ""
-#: InvenTree/models.py:133
+#: InvenTree/models.py:189
msgid "Select file to attach"
msgstr ""
-#: InvenTree/models.py:139 company/models.py:131 company/models.py:348
-#: company/models.py:564 order/models.py:127 part/models.py:830
+#: InvenTree/models.py:195 company/models.py:131 company/models.py:348
+#: company/models.py:564 order/models.py:127 part/models.py:860
#: report/templates/report/inventree_build_order_base.html:165
#: templates/js/translated/company.js:540
#: templates/js/translated/company.js:829 templates/js/translated/part.js:1324
msgid "Link"
msgstr ""
-#: InvenTree/models.py:140 build/models.py:332 part/models.py:831
+#: InvenTree/models.py:196 build/models.py:332 part/models.py:861
#: stock/models.py:529
msgid "Link to external URL"
msgstr ""
-#: InvenTree/models.py:143 templates/js/translated/attachment.js:163
+#: InvenTree/models.py:199 templates/js/translated/attachment.js:163
msgid "Comment"
msgstr ""
-#: InvenTree/models.py:143
+#: InvenTree/models.py:199
msgid "File comment"
msgstr ""
-#: InvenTree/models.py:149 InvenTree/models.py:150 common/models.py:1223
-#: common/models.py:1224 common/models.py:1452 common/models.py:1453
-#: part/models.py:2265 part/models.py:2285
+#: InvenTree/models.py:205 InvenTree/models.py:206 common/models.py:1235
+#: common/models.py:1236 common/models.py:1464 common/models.py:1465
+#: part/models.py:2301 part/models.py:2321
#: report/templates/report/inventree_test_report_base.html:96
-#: templates/js/translated/stock.js:2692
+#: templates/js/translated/stock.js:2816
msgid "User"
msgstr ""
-#: InvenTree/models.py:153
+#: InvenTree/models.py:209
msgid "upload date"
msgstr ""
-#: InvenTree/models.py:176
+#: InvenTree/models.py:232
msgid "Filename must not be empty"
msgstr ""
-#: InvenTree/models.py:199
+#: InvenTree/models.py:255
msgid "Invalid attachment directory"
msgstr ""
-#: InvenTree/models.py:209
+#: InvenTree/models.py:265
#, python-brace-format
msgid "Filename contains illegal character '{c}'"
msgstr ""
-#: InvenTree/models.py:212
+#: InvenTree/models.py:268
msgid "Filename missing extension"
msgstr ""
-#: InvenTree/models.py:219
+#: InvenTree/models.py:275
msgid "Attachment with this filename already exists"
msgstr ""
-#: InvenTree/models.py:226
+#: InvenTree/models.py:282
msgid "Error renaming file"
msgstr ""
-#: InvenTree/models.py:261
+#: InvenTree/models.py:317
msgid "Invalid choice"
msgstr ""
-#: InvenTree/models.py:277 InvenTree/models.py:278 common/models.py:1438
-#: company/models.py:415 label/models.py:112 part/models.py:774
-#: part/models.py:2449 plugin/models.py:40 report/models.py:181
+#: InvenTree/models.py:333 InvenTree/models.py:334 common/models.py:1450
+#: company/models.py:415 label/models.py:112 part/models.py:804
+#: part/models.py:2485 plugin/models.py:40 report/models.py:181
#: templates/InvenTree/settings/mixins/urls.html:13
#: templates/InvenTree/settings/plugin.html:48
#: templates/InvenTree/settings/plugin.html:125
#: templates/InvenTree/settings/plugin_settings.html:23
-#: templates/InvenTree/settings/settings.html:282
+#: templates/InvenTree/settings/settings.html:319
#: templates/js/translated/company.js:641 templates/js/translated/part.js:567
#: templates/js/translated/part.js:706 templates/js/translated/part.js:1631
-#: templates/js/translated/stock.js:2485
+#: templates/js/translated/stock.js:2609
msgid "Name"
msgstr ""
-#: InvenTree/models.py:284 build/models.py:209
+#: InvenTree/models.py:340 build/models.py:209
#: build/templates/build/detail.html:25 company/models.py:354
#: company/models.py:570 company/templates/company/company_base.html:68
#: company/templates/company/manufacturer_part.html:76
#: company/templates/company/supplier_part.html:73 label/models.py:119
-#: order/models.py:125 part/models.py:797 part/templates/part/category.html:74
+#: order/models.py:125 part/models.py:827 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:93
#: templates/InvenTree/settings/plugin_settings.html:33
-#: templates/js/translated/bom.js:339 templates/js/translated/bom.js:552
-#: templates/js/translated/build.js:1682 templates/js/translated/company.js:345
+#: templates/js/translated/bom.js:552 templates/js/translated/bom.js:765
+#: templates/js/translated/build.js:1920 templates/js/translated/company.js:345
#: templates/js/translated/company.js:551
#: templates/js/translated/company.js:840 templates/js/translated/order.js:836
#: templates/js/translated/order.js:1019 templates/js/translated/order.js:1258
#: templates/js/translated/part.js:626 templates/js/translated/part.js:999
#: templates/js/translated/part.js:1084 templates/js/translated/part.js:1254
#: templates/js/translated/part.js:1650 templates/js/translated/part.js:1719
-#: templates/js/translated/stock.js:1577 templates/js/translated/stock.js:2314
-#: templates/js/translated/stock.js:2497 templates/js/translated/stock.js:2542
+#: templates/js/translated/stock.js:1701 templates/js/translated/stock.js:2438
+#: templates/js/translated/stock.js:2621 templates/js/translated/stock.js:2666
msgid "Description"
msgstr ""
-#: InvenTree/models.py:285
+#: InvenTree/models.py:341
msgid "Description (optional)"
msgstr ""
-#: InvenTree/models.py:293
+#: InvenTree/models.py:349
msgid "parent"
msgstr ""
-#: InvenTree/serializers.py:65 part/models.py:2734
+#: InvenTree/serializers.py:65 part/models.py:2803
msgid "Must be a valid number"
msgstr ""
@@ -253,83 +253,127 @@ msgstr ""
msgid "Filename"
msgstr ""
-#: InvenTree/settings.py:661
+#: InvenTree/serializers.py:334
+msgid "Invalid value"
+msgstr ""
+
+#: InvenTree/serializers.py:355
+msgid "Data File"
+msgstr ""
+
+#: InvenTree/serializers.py:356
+msgid "Select data file for upload"
+msgstr ""
+
+#: InvenTree/serializers.py:380
+msgid "Unsupported file type"
+msgstr ""
+
+#: InvenTree/serializers.py:386
+msgid "File is too large"
+msgstr ""
+
+#: InvenTree/serializers.py:407
+msgid "No columns found in file"
+msgstr ""
+
+#: InvenTree/serializers.py:410
+msgid "No data rows found in file"
+msgstr ""
+
+#: InvenTree/serializers.py:533
+msgid "No data rows provided"
+msgstr ""
+
+#: InvenTree/serializers.py:536
+msgid "No data columns supplied"
+msgstr ""
+
+#: InvenTree/serializers.py:623
+msgid "Missing required column"
+msgstr ""
+
+#: InvenTree/serializers.py:632
+msgid "Duplicate column"
+msgstr ""
+
+#: InvenTree/settings.py:655
msgid "German"
msgstr ""
-#: InvenTree/settings.py:662
+#: InvenTree/settings.py:656
msgid "Greek"
msgstr ""
-#: InvenTree/settings.py:663
+#: InvenTree/settings.py:657
msgid "English"
msgstr ""
-#: InvenTree/settings.py:664
+#: InvenTree/settings.py:658
msgid "Spanish"
msgstr ""
-#: InvenTree/settings.py:665
+#: InvenTree/settings.py:659
msgid "Spanish (Mexican)"
msgstr ""
-#: InvenTree/settings.py:666
+#: InvenTree/settings.py:660
msgid "French"
msgstr ""
-#: InvenTree/settings.py:667
+#: InvenTree/settings.py:661
msgid "Hebrew"
msgstr ""
-#: InvenTree/settings.py:668
+#: InvenTree/settings.py:662
msgid "Italian"
msgstr ""
-#: InvenTree/settings.py:669
+#: InvenTree/settings.py:663
msgid "Japanese"
msgstr ""
-#: InvenTree/settings.py:670
+#: InvenTree/settings.py:664
msgid "Korean"
msgstr ""
-#: InvenTree/settings.py:671
+#: InvenTree/settings.py:665
msgid "Dutch"
msgstr ""
-#: InvenTree/settings.py:672
+#: InvenTree/settings.py:666
msgid "Norwegian"
msgstr ""
-#: InvenTree/settings.py:673
+#: InvenTree/settings.py:667
msgid "Polish"
msgstr ""
-#: InvenTree/settings.py:674
+#: InvenTree/settings.py:668
msgid "Portugese"
msgstr ""
-#: InvenTree/settings.py:675
+#: InvenTree/settings.py:669
msgid "Russian"
msgstr ""
-#: InvenTree/settings.py:676
+#: InvenTree/settings.py:670
msgid "Swedish"
msgstr ""
-#: InvenTree/settings.py:677
+#: InvenTree/settings.py:671
msgid "Thai"
msgstr ""
-#: InvenTree/settings.py:678
+#: InvenTree/settings.py:672
msgid "Turkish"
msgstr ""
-#: InvenTree/settings.py:679
+#: InvenTree/settings.py:673
msgid "Vietnamese"
msgstr ""
-#: InvenTree/settings.py:680
+#: InvenTree/settings.py:674
msgid "Chinese"
msgstr ""
@@ -346,7 +390,7 @@ msgid "InvenTree system health checks failed"
msgstr ""
#: InvenTree/status_codes.py:101 InvenTree/status_codes.py:142
-#: InvenTree/status_codes.py:316 templates/js/translated/table_filters.js:313
+#: InvenTree/status_codes.py:316 templates/js/translated/table_filters.js:308
msgid "Pending"
msgstr ""
@@ -456,7 +500,7 @@ msgstr ""
msgid "Split child item"
msgstr ""
-#: InvenTree/status_codes.py:294 templates/js/translated/stock.js:2072
+#: InvenTree/status_codes.py:294 templates/js/translated/stock.js:2196
msgid "Merged stock items"
msgstr ""
@@ -484,40 +528,40 @@ msgstr ""
msgid "Production"
msgstr ""
-#: InvenTree/validators.py:23
+#: InvenTree/validators.py:25
msgid "Not a valid currency code"
msgstr ""
-#: InvenTree/validators.py:51
+#: InvenTree/validators.py:53
msgid "Invalid character in part name"
msgstr ""
-#: InvenTree/validators.py:64
+#: InvenTree/validators.py:66
#, python-brace-format
msgid "IPN must match regex pattern {pat}"
msgstr ""
-#: InvenTree/validators.py:78 InvenTree/validators.py:92
-#: InvenTree/validators.py:106
+#: InvenTree/validators.py:80 InvenTree/validators.py:94
+#: InvenTree/validators.py:108
#, python-brace-format
msgid "Reference must match pattern {pattern}"
msgstr ""
-#: InvenTree/validators.py:114
+#: InvenTree/validators.py:116
#, python-brace-format
msgid "Illegal character in name ({x})"
msgstr ""
-#: InvenTree/validators.py:133 InvenTree/validators.py:149
+#: InvenTree/validators.py:137 InvenTree/validators.py:153
msgid "Overage value must not be negative"
msgstr ""
-#: InvenTree/validators.py:151
+#: InvenTree/validators.py:155
msgid "Overage must not exceed 100%"
msgstr ""
-#: InvenTree/validators.py:158
-msgid "Overage must be an integer value or a percentage"
+#: InvenTree/validators.py:162
+msgid "Invalid value for overage"
msgstr ""
#: InvenTree/views.py:538
@@ -584,69 +628,11 @@ msgstr ""
msgid "Barcode associated with Stock Item"
msgstr ""
-#: build/forms.py:36 build/models.py:1293
-#: build/templates/build/build_base.html:82
-#: build/templates/build/detail.html:35 common/models.py:1263
-#: company/forms.py:42 company/templates/company/supplier_part.html:251
-#: order/models.py:805 order/models.py:1229 order/serializers.py:816
-#: order/templates/order/order_wizard/match_parts.html:30
-#: order/templates/order/order_wizard/select_parts.html:34 part/forms.py:144
-#: part/forms.py:160 part/forms.py:176 part/models.py:2636
-#: part/templates/part/bom_upload/match_parts.html:31
-#: part/templates/part/detail.html:992 part/templates/part/detail.html:1078
-#: part/templates/part/part_pricing.html:16
-#: report/templates/report/inventree_build_order_base.html:114
-#: report/templates/report/inventree_po_report.html:91
-#: report/templates/report/inventree_so_report.html:91
-#: report/templates/report/inventree_test_report_base.html:81
-#: report/templates/report/inventree_test_report_base.html:139
-#: stock/forms.py:142 stock/serializers.py:293
-#: stock/templates/stock/item_base.html:181
-#: stock/templates/stock/item_base.html:262
-#: stock/templates/stock/item_base.html:270
-#: templates/js/translated/barcode.js:385 templates/js/translated/bom.js:567
-#: templates/js/translated/build.js:295 templates/js/translated/build.js:495
-#: templates/js/translated/build.js:689 templates/js/translated/build.js:699
-#: templates/js/translated/build.js:1075 templates/js/translated/build.js:1422
-#: templates/js/translated/model_renderers.js:99
-#: templates/js/translated/order.js:101 templates/js/translated/order.js:1056
-#: 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:906
-#: templates/js/translated/part.js:1862 templates/js/translated/part.js:1985
-#: templates/js/translated/part.js:2063 templates/js/translated/stock.js:391
-#: templates/js/translated/stock.js:588 templates/js/translated/stock.js:758
-#: templates/js/translated/stock.js:2677 templates/js/translated/stock.js:2779
-msgid "Quantity"
-msgstr ""
-
-#: build/forms.py:37
-msgid "Enter quantity for build output"
-msgstr ""
-
-#: build/forms.py:41 order/serializers.py:820 stock/forms.py:81
-#: stock/serializers.py:314 templates/js/translated/stock.js:238
-#: templates/js/translated/stock.js:392
-msgid "Serial Numbers"
-msgstr ""
-
-#: build/forms.py:43
-msgid "Enter serial numbers for build outputs"
-msgstr ""
-
-#: build/forms.py:49
-msgid "Confirm creation of build output"
-msgstr ""
-
-#: build/forms.py:70
-msgid "Confirm deletion of build output"
-msgstr ""
-
-#: build/forms.py:89
+#: build/forms.py:20
msgid "Confirm cancel"
msgstr ""
-#: build/forms.py:89 build/views.py:65
+#: build/forms.py:20 build/views.py:62
msgid "Confirm build cancellation"
msgstr ""
@@ -657,7 +643,7 @@ msgstr ""
#: build/models.py:139 build/templates/build/build_base.html:9
#: build/templates/build/build_base.html:27
#: report/templates/report/inventree_build_order_base.html:106
-#: templates/js/translated/build.js:457 templates/js/translated/stock.js:2290
+#: templates/js/translated/build.js:676 templates/js/translated/stock.js:2414
msgid "Build Order"
msgstr ""
@@ -665,7 +651,7 @@ msgstr ""
#: 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
+#: part/templates/part/part_sidebar.html:21 templates/InvenTree/index.html:221
#: templates/InvenTree/search.html:139
#: templates/InvenTree/settings/sidebar.html:43 users/models.py:44
msgid "Build Orders"
@@ -676,11 +662,11 @@ msgid "Build Order Reference"
msgstr ""
#: build/models.py:201 order/models.py:213 order/models.py:541
-#: order/models.py:812 part/models.py:2645
-#: part/templates/part/bom_upload/match_parts.html:30
+#: order/models.py:812 part/models.py:2714
+#: part/templates/part/upload_bom.html:54
#: report/templates/report/inventree_po_report.html:92
#: report/templates/report/inventree_so_report.html:92
-#: templates/js/translated/bom.js:559 templates/js/translated/build.js:1179
+#: templates/js/translated/bom.js:772 templates/js/translated/build.js:1401
#: templates/js/translated/order.js:1050 templates/js/translated/order.js:2144
msgid "Reference"
msgstr ""
@@ -689,7 +675,7 @@ msgstr ""
msgid "Brief description of the build"
msgstr ""
-#: build/models.py:221 build/templates/build/build_base.html:164
+#: build/models.py:221 build/templates/build/build_base.html:169
#: build/templates/build/detail.html:88
msgid "Parent Build"
msgstr ""
@@ -702,30 +688,31 @@ msgstr ""
#: build/templates/build/detail.html:30 company/models.py:705
#: order/models.py:876 order/models.py:950
#: order/templates/order/order_wizard/select_parts.html:32 part/models.py:359
-#: part/models.py:2211 part/models.py:2227 part/models.py:2246
-#: part/models.py:2263 part/models.py:2365 part/models.py:2487
-#: part/models.py:2620 part/models.py:2927 part/serializers.py:658
-#: part/templates/part/part_app_base.html:8
+#: part/models.py:2247 part/models.py:2263 part/models.py:2282
+#: part/models.py:2299 part/models.py:2401 part/models.py:2523
+#: part/models.py:2613 part/models.py:2689 part/models.py:2996
+#: part/serializers.py:666 part/templates/part/part_app_base.html:8
#: part/templates/part/part_pricing.html:12
#: part/templates/part/set_category.html:13
+#: part/templates/part/upload_bom.html:52
#: 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: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:338
-#: templates/js/translated/bom.js:517 templates/js/translated/build.js:680
-#: templates/js/translated/build.js:1048 templates/js/translated/build.js:1419
-#: templates/js/translated/build.js:1687 templates/js/translated/company.js:492
+#: templates/js/translated/barcode.js:383 templates/js/translated/bom.js:551
+#: templates/js/translated/bom.js:730 templates/js/translated/build.js:902
+#: templates/js/translated/build.js:1270 templates/js/translated/build.js:1655
+#: templates/js/translated/build.js:1925 templates/js/translated/company.js:492
#: templates/js/translated/company.js:749 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:984
#: templates/js/translated/part.js:1065 templates/js/translated/part.js:1232
-#: templates/js/translated/stock.js:562 templates/js/translated/stock.js:727
-#: templates/js/translated/stock.js:934 templates/js/translated/stock.js:1534
-#: templates/js/translated/stock.js:2767
+#: templates/js/translated/stock.js:563 templates/js/translated/stock.js:728
+#: templates/js/translated/stock.js:935 templates/js/translated/stock.js:1658
+#: templates/js/translated/stock.js:2891 templates/js/translated/stock.js:2990
msgid "Part"
msgstr ""
@@ -741,7 +728,7 @@ msgstr ""
msgid "SalesOrder to which this build is allocated"
msgstr ""
-#: build/models.py:249 templates/js/translated/build.js:1407
+#: build/models.py:249 templates/js/translated/build.js:1643
#: templates/js/translated/order.js:1564
msgid "Source Location"
msgstr ""
@@ -782,15 +769,15 @@ msgstr ""
msgid "Build status code"
msgstr ""
-#: build/models.py:287 stock/models.py:533
+#: build/models.py:287 build/serializers.py:218 stock/models.py:533
msgid "Batch Code"
msgstr ""
-#: build/models.py:291
+#: build/models.py:291 build/serializers.py:219
msgid "Batch code for this build output"
msgstr ""
-#: build/models.py:294 order/models.py:129 part/models.py:969
+#: build/models.py:294 order/models.py:129 part/models.py:999
#: part/templates/part/part_base.html:313 templates/js/translated/order.js:1271
msgid "Creation Date"
msgstr ""
@@ -804,7 +791,7 @@ msgid "Target date for build completion. Build will be overdue after this date."
msgstr ""
#: build/models.py:302 order/models.py:255
-#: templates/js/translated/build.js:1758
+#: templates/js/translated/build.js:1996
msgid "Completion Date"
msgstr ""
@@ -812,7 +799,7 @@ msgstr ""
msgid "completed by"
msgstr ""
-#: build/models.py:316 templates/js/translated/build.js:1729
+#: build/models.py:316 templates/js/translated/build.js:1967
msgid "Issued by"
msgstr ""
@@ -820,12 +807,12 @@ msgstr ""
msgid "User who issued this build order"
msgstr ""
-#: build/models.py:325 build/templates/build/build_base.html:185
+#: build/models.py:325 build/templates/build/build_base.html:190
#: build/templates/build/detail.html:116 order/models.py:143
#: order/templates/order/order_base.html:170
-#: order/templates/order/sales_order_base.html:182 part/models.py:973
+#: order/templates/order/sales_order_base.html:182 part/models.py:1003
#: report/templates/report/inventree_build_order_base.html:159
-#: templates/js/translated/build.js:1741 templates/js/translated/order.js:864
+#: templates/js/translated/build.js:1979 templates/js/translated/order.js:864
msgid "Responsible"
msgstr ""
@@ -837,26 +824,26 @@ msgstr ""
#: company/templates/company/manufacturer_part.html:102
#: company/templates/company/supplier_part.html:126
#: part/templates/part/part_base.html:354 stock/models.py:527
-#: stock/templates/stock/item_base.html:373
+#: stock/templates/stock/item_base.html:375
msgid "External Link"
msgstr ""
-#: build/models.py:336 build/serializers.py:201
+#: build/models.py:336 build/serializers.py:380
#: build/templates/build/sidebar.html:21 company/models.py:142
#: company/models.py:577 company/templates/company/sidebar.html:25
#: order/models.py:147 order/models.py:814 order/models.py:1071
#: order/templates/order/po_sidebar.html:11
-#: order/templates/order/so_sidebar.html:17 part/models.py:958
-#: part/templates/part/detail.html:137 part/templates/part/part_sidebar.html:54
+#: order/templates/order/so_sidebar.html:17 part/models.py:988
+#: part/templates/part/detail.html:140 part/templates/part/part_sidebar.html:57
#: report/templates/report/inventree_build_order_base.html:173
-#: stock/forms.py:140 stock/forms.py:190 stock/forms.py:224 stock/models.py:599
+#: stock/forms.py:137 stock/forms.py:171 stock/models.py:599
#: stock/models.py:1895 stock/models.py:2001 stock/serializers.py:332
-#: stock/serializers.py:640 stock/serializers.py:738 stock/serializers.py:870
+#: stock/serializers.py:697 stock/serializers.py:795 stock/serializers.py:927
#: stock/templates/stock/stock_sidebar.html:25
-#: templates/js/translated/barcode.js:58 templates/js/translated/bom.js:723
+#: templates/js/translated/barcode.js:58 templates/js/translated/bom.js:936
#: templates/js/translated/company.js:845 templates/js/translated/order.js:1149
#: templates/js/translated/order.js:1445 templates/js/translated/order.js:2280
-#: templates/js/translated/stock.js:1317 templates/js/translated/stock.js:1803
+#: templates/js/translated/stock.js:1345 templates/js/translated/stock.js:1927
msgid "Notes"
msgstr ""
@@ -864,208 +851,284 @@ msgstr ""
msgid "Extra build notes"
msgstr ""
-#: build/models.py:717
+#: build/models.py:756
msgid "No build output specified"
msgstr ""
-#: build/models.py:720
+#: build/models.py:759
msgid "Build output is already completed"
msgstr ""
-#: build/models.py:723
+#: build/models.py:762
msgid "Build output does not match Build Order"
msgstr ""
-#: build/models.py:1115
+#: build/models.py:1154
msgid "Build item must specify a build output, as master part is marked as trackable"
msgstr ""
-#: build/models.py:1124
+#: build/models.py:1163
#, python-brace-format
msgid "Allocated quantity ({q}) must not execed available stock quantity ({a})"
msgstr ""
-#: build/models.py:1134
+#: build/models.py:1173
msgid "Stock item is over-allocated"
msgstr ""
-#: build/models.py:1140 order/models.py:1189
+#: build/models.py:1179 order/models.py:1189
msgid "Allocation quantity must be greater than zero"
msgstr ""
-#: build/models.py:1146
+#: build/models.py:1185
msgid "Quantity must be 1 for serialized stock"
msgstr ""
-#: build/models.py:1203
+#: build/models.py:1242
msgid "Selected stock item not found in BOM"
msgstr ""
-#: build/models.py:1263 stock/templates/stock/item_base.html:345
-#: templates/InvenTree/search.html:137 templates/js/translated/build.js:1660
+#: build/models.py:1302 stock/templates/stock/item_base.html:347
+#: templates/InvenTree/search.html:137 templates/js/translated/build.js:1898
#: templates/navbar.html:35
msgid "Build"
msgstr ""
-#: build/models.py:1264
+#: build/models.py:1303
msgid "Build to allocate parts"
msgstr ""
-#: build/models.py:1280 build/serializers.py:388 order/serializers.py:696
-#: order/serializers.py:714 stock/serializers.py:578 stock/serializers.py:696
-#: stock/templates/stock/item_base.html:9
+#: build/models.py:1319 build/serializers.py:570 order/serializers.py:696
+#: order/serializers.py:714 stock/serializers.py:404 stock/serializers.py:635
+#: stock/serializers.py:753 stock/templates/stock/item_base.html:9
#: stock/templates/stock/item_base.html:23
-#: stock/templates/stock/item_base.html:367
-#: templates/js/translated/build.js:468 templates/js/translated/build.js:473
-#: templates/js/translated/build.js:1421 templates/js/translated/build.js:1803
+#: stock/templates/stock/item_base.html:369
+#: templates/js/translated/build.js:687 templates/js/translated/build.js:692
+#: templates/js/translated/build.js:1657 templates/js/translated/build.js:2041
#: 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:563 templates/js/translated/stock.js:728
-#: templates/js/translated/stock.js:2628
+#: templates/js/translated/stock.js:564 templates/js/translated/stock.js:729
+#: templates/js/translated/stock.js:2752
msgid "Stock Item"
msgstr ""
-#: build/models.py:1281
+#: build/models.py:1320
msgid "Source stock item"
msgstr ""
-#: build/models.py:1294
+#: build/models.py:1332 build/serializers.py:188
+#: build/templates/build/build_base.html:82
+#: build/templates/build/detail.html:35 common/models.py:1275
+#: company/forms.py:42 company/templates/company/supplier_part.html:251
+#: order/models.py:805 order/models.py:1229 order/serializers.py:816
+#: order/templates/order/order_wizard/match_parts.html:30
+#: order/templates/order/order_wizard/select_parts.html:34 part/forms.py:144
+#: part/forms.py:160 part/forms.py:176 part/models.py:2705
+#: part/templates/part/detail.html:995 part/templates/part/detail.html:1081
+#: part/templates/part/part_pricing.html:16
+#: part/templates/part/upload_bom.html:53
+#: report/templates/report/inventree_build_order_base.html:114
+#: report/templates/report/inventree_po_report.html:91
+#: report/templates/report/inventree_so_report.html:91
+#: report/templates/report/inventree_test_report_base.html:81
+#: report/templates/report/inventree_test_report_base.html:139
+#: stock/forms.py:139 stock/serializers.py:293
+#: stock/templates/stock/item_base.html:183
+#: stock/templates/stock/item_base.html:264
+#: stock/templates/stock/item_base.html:272
+#: templates/js/translated/barcode.js:385 templates/js/translated/bom.js:780
+#: templates/js/translated/build.js:375 templates/js/translated/build.js:523
+#: templates/js/translated/build.js:714 templates/js/translated/build.js:911
+#: templates/js/translated/build.js:921 templates/js/translated/build.js:1297
+#: templates/js/translated/build.js:1658
+#: templates/js/translated/model_renderers.js:99
+#: templates/js/translated/order.js:101 templates/js/translated/order.js:1056
+#: 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:906
+#: templates/js/translated/part.js:1862 templates/js/translated/part.js:1985
+#: templates/js/translated/part.js:2063 templates/js/translated/stock.js:392
+#: templates/js/translated/stock.js:589 templates/js/translated/stock.js:759
+#: templates/js/translated/stock.js:2801 templates/js/translated/stock.js:2903
+msgid "Quantity"
+msgstr ""
+
+#: build/models.py:1333
msgid "Stock quantity to allocate to build"
msgstr ""
-#: build/models.py:1302
+#: build/models.py:1341
msgid "Install into"
msgstr ""
-#: build/models.py:1303
+#: build/models.py:1342
msgid "Destination stock item"
msgstr ""
-#: build/serializers.py:137 build/serializers.py:417
+#: build/serializers.py:138 build/serializers.py:599
msgid "Build Output"
msgstr ""
-#: build/serializers.py:146
+#: build/serializers.py:150
msgid "Build output does not match the parent build"
msgstr ""
-#: build/serializers.py:150
+#: build/serializers.py:154
msgid "Output part does not match BuildOrder part"
msgstr ""
-#: build/serializers.py:154
+#: build/serializers.py:158
msgid "This build output has already been completed"
msgstr ""
-#: build/serializers.py:158
+#: build/serializers.py:164
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:731
-#: stock/serializers.py:972 stock/templates/stock/item_base.html:313
-#: templates/js/translated/barcode.js:384
-#: templates/js/translated/barcode.js:557 templates/js/translated/build.js:480
-#: templates/js/translated/build.js:1087 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:179 templates/js/translated/stock.js:564
-#: templates/js/translated/stock.js:729 templates/js/translated/stock.js:936
-#: templates/js/translated/stock.js:1684 templates/js/translated/stock.js:2569
-msgid "Location"
+#: build/serializers.py:189
+msgid "Enter quantity for build output"
msgstr ""
-#: build/serializers.py:191
-msgid "Location for completed build outputs"
-msgstr ""
-
-#: build/serializers.py:197 build/templates/build/build_base.html:137
-#: build/templates/build/detail.html:63 order/models.py:557
-#: order/serializers.py:247 stock/templates/stock/item_base.html:187
-#: templates/js/translated/barcode.js:140 templates/js/translated/build.js:1716
-#: templates/js/translated/order.js:591 templates/js/translated/order.js:840
-#: templates/js/translated/order.js:1263 templates/js/translated/stock.js:1659
-#: templates/js/translated/stock.js:2646 templates/js/translated/stock.js:2795
-msgid "Status"
-msgstr ""
-
-#: build/serializers.py:213
-msgid "A list of build outputs must be provided"
-msgstr ""
-
-#: build/serializers.py:249
-msgid "Accept Unallocated"
-msgstr ""
-
-#: build/serializers.py:250
-msgid "Accept that stock items have not been fully allocated to this build order"
-msgstr ""
-
-#: build/serializers.py:260 templates/js/translated/build.js:149
-msgid "Required stock has not been fully allocated"
-msgstr ""
-
-#: build/serializers.py:265
-msgid "Accept Incomplete"
-msgstr ""
-
-#: build/serializers.py:266
-msgid "Accept that the required number of build outputs have not been completed"
-msgstr ""
-
-#: build/serializers.py:276 templates/js/translated/build.js:153
-msgid "Required build quantity has not been completed"
-msgstr ""
-
-#: build/serializers.py:285
-msgid "Build order has incomplete outputs"
-msgstr ""
-
-#: build/serializers.py:313 build/serializers.py:362 part/models.py:2760
-#: part/models.py:2919
-msgid "BOM Item"
-msgstr ""
-
-#: build/serializers.py:323
-msgid "Build output"
-msgstr ""
-
-#: build/serializers.py:332
-msgid "Build output must point to the same build"
-msgstr ""
-
-#: build/serializers.py:379
-msgid "bom_item.part must point to the same part as the build order"
-msgstr ""
-
-#: build/serializers.py:394 stock/serializers.py:585
-msgid "Item must be in stock"
-msgstr ""
-
-#: build/serializers.py:408 order/models.py:280 order/serializers.py:240
+#: build/serializers.py:201 build/serializers.py:590 order/models.py:280
+#: order/serializers.py:240 part/serializers.py:471 part/serializers.py:827
#: stock/models.py:367 stock/models.py:1105 stock/serializers.py:305
msgid "Quantity must be greater than zero"
msgstr ""
-#: build/serializers.py:450 order/serializers.py:747
+#: build/serializers.py:208
+msgid "Integer quantity required for trackable parts"
+msgstr ""
+
+#: build/serializers.py:211
+msgid "Integer quantity required, as the bill of materials contains trackable parts"
+msgstr ""
+
+#: build/serializers.py:225 order/serializers.py:820 stock/forms.py:78
+#: stock/serializers.py:314 templates/js/translated/stock.js:239
+#: templates/js/translated/stock.js:393
+msgid "Serial Numbers"
+msgstr ""
+
+#: build/serializers.py:226
+msgid "Enter serial numbers for build outputs"
+msgstr ""
+
+#: build/serializers.py:239
+msgid "Auto Allocate Serial Numbers"
+msgstr ""
+
+#: build/serializers.py:240
+msgid "Automatically allocate required items with matching serial numbers"
+msgstr ""
+
+#: build/serializers.py:274 stock/api.py:551
+msgid "The following serial numbers already exist"
+msgstr ""
+
+#: build/serializers.py:327 build/serializers.py:392
+msgid "A list of build outputs must be provided"
+msgstr ""
+
+#: build/serializers.py:369 order/serializers.py:226 order/serializers.py:294
+#: stock/forms.py:169 stock/serializers.py:325 stock/serializers.py:788
+#: stock/serializers.py:1029 stock/templates/stock/item_base.html:315
+#: templates/js/translated/barcode.js:384
+#: templates/js/translated/barcode.js:557 templates/js/translated/build.js:699
+#: templates/js/translated/build.js:1309 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:179 templates/js/translated/stock.js:565
+#: templates/js/translated/stock.js:730 templates/js/translated/stock.js:937
+#: templates/js/translated/stock.js:1808 templates/js/translated/stock.js:2693
+msgid "Location"
+msgstr ""
+
+#: build/serializers.py:370
+msgid "Location for completed build outputs"
+msgstr ""
+
+#: build/serializers.py:376 build/templates/build/build_base.html:142
+#: build/templates/build/detail.html:63 order/models.py:557
+#: order/serializers.py:247 stock/templates/stock/item_base.html:189
+#: templates/js/translated/barcode.js:140 templates/js/translated/build.js:1954
+#: templates/js/translated/order.js:591 templates/js/translated/order.js:840
+#: templates/js/translated/order.js:1263 templates/js/translated/stock.js:1783
+#: templates/js/translated/stock.js:2770 templates/js/translated/stock.js:2919
+msgid "Status"
+msgstr ""
+
+#: build/serializers.py:428
+msgid "Accept Unallocated"
+msgstr ""
+
+#: build/serializers.py:429
+msgid "Accept that stock items have not been fully allocated to this build order"
+msgstr ""
+
+#: build/serializers.py:439 templates/js/translated/build.js:150
+msgid "Required stock has not been fully allocated"
+msgstr ""
+
+#: build/serializers.py:444
+msgid "Accept Incomplete"
+msgstr ""
+
+#: build/serializers.py:445
+msgid "Accept that the required number of build outputs have not been completed"
+msgstr ""
+
+#: build/serializers.py:455 templates/js/translated/build.js:154
+msgid "Required build quantity has not been completed"
+msgstr ""
+
+#: build/serializers.py:464
+msgid "Build order has incomplete outputs"
+msgstr ""
+
+#: build/serializers.py:467 build/templates/build/build_base.html:95
+msgid "No build outputs have been created for this build order"
+msgstr ""
+
+#: build/serializers.py:495 build/serializers.py:544 part/models.py:2829
+#: part/models.py:2988
+msgid "BOM Item"
+msgstr ""
+
+#: build/serializers.py:505
+msgid "Build output"
+msgstr ""
+
+#: build/serializers.py:514
+msgid "Build output must point to the same build"
+msgstr ""
+
+#: build/serializers.py:561
+msgid "bom_item.part must point to the same part as the build order"
+msgstr ""
+
+#: build/serializers.py:576 stock/serializers.py:642
+msgid "Item must be in stock"
+msgstr ""
+
+#: build/serializers.py:632 order/serializers.py:747
#, python-brace-format
msgid "Available quantity ({q}) exceeded"
msgstr ""
-#: build/serializers.py:456
+#: build/serializers.py:638
msgid "Build output must be specified for allocation of tracked parts"
msgstr ""
-#: build/serializers.py:463
+#: build/serializers.py:645
msgid "Build output cannot be specified for allocation of untracked parts"
msgstr ""
-#: build/serializers.py:491 order/serializers.py:990
+#: build/serializers.py:673 order/serializers.py:990
msgid "Allocation items must be provided"
msgstr ""
-#: build/tasks.py:92
+#: build/tasks.py:98
msgid "Stock required for build order"
msgstr ""
@@ -1088,7 +1151,7 @@ msgid "Edit Build"
msgstr ""
#: build/templates/build/build_base.html:56
-#: build/templates/build/build_base.html:215 build/views.py:56
+#: build/templates/build/build_base.html:220 build/views.py:53
msgid "Cancel Build"
msgstr ""
@@ -1105,110 +1168,90 @@ msgstr ""
msgid "Build Description"
msgstr ""
-#: build/templates/build/build_base.html:96
+#: build/templates/build/build_base.html:101
#, python-format
msgid "This Build Order is allocated to Sales Order %(link)s"
msgstr ""
-#: build/templates/build/build_base.html:103
+#: build/templates/build/build_base.html:108
#, python-format
msgid "This Build Order is a child of Build Order %(link)s"
msgstr ""
-#: build/templates/build/build_base.html:110
+#: build/templates/build/build_base.html:115
msgid "Build Order is ready to mark as completed"
msgstr ""
-#: build/templates/build/build_base.html:115
+#: build/templates/build/build_base.html:120
msgid "Build Order cannot be completed as outstanding outputs remain"
msgstr ""
-#: build/templates/build/build_base.html:120
+#: build/templates/build/build_base.html:125
msgid "Required build quantity has not yet been completed"
msgstr ""
-#: build/templates/build/build_base.html:125
+#: build/templates/build/build_base.html:130
msgid "Stock has not been fully allocated to this Build Order"
msgstr ""
-#: build/templates/build/build_base.html:146
+#: build/templates/build/build_base.html:151
#: build/templates/build/detail.html:132
#: order/templates/order/order_base.html:156
#: order/templates/order/sales_order_base.html:163
#: report/templates/report/inventree_build_order_base.html:126
-#: templates/js/translated/build.js:1753 templates/js/translated/order.js:854
+#: templates/js/translated/build.js:1991 templates/js/translated/order.js:854
#: templates/js/translated/order.js:1276
msgid "Target Date"
msgstr ""
-#: build/templates/build/build_base.html:151
+#: build/templates/build/build_base.html:156
#, python-format
msgid "This build was due on %(target)s"
msgstr ""
-#: build/templates/build/build_base.html:151
-#: build/templates/build/build_base.html:196
+#: build/templates/build/build_base.html:156
+#: build/templates/build/build_base.html:201
#: order/templates/order/order_base.html:98
#: order/templates/order/sales_order_base.html:93
-#: templates/js/translated/table_filters.js:299
-#: templates/js/translated/table_filters.js:340
-#: templates/js/translated/table_filters.js:361
+#: templates/js/translated/table_filters.js:294
+#: templates/js/translated/table_filters.js:335
+#: templates/js/translated/table_filters.js:356
msgid "Overdue"
msgstr ""
-#: build/templates/build/build_base.html:158
+#: build/templates/build/build_base.html:163
#: build/templates/build/detail.html:68 build/templates/build/detail.html:143
#: order/templates/order/sales_order_base.html:170
-#: templates/js/translated/build.js:1702
-#: templates/js/translated/table_filters.js:370
+#: templates/js/translated/build.js:1940
+#: templates/js/translated/table_filters.js:365
msgid "Completed"
msgstr ""
-#: build/templates/build/build_base.html:171
+#: build/templates/build/build_base.html:176
#: build/templates/build/detail.html:95 order/models.py:947
#: order/models.py:1043 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:307
-#: templates/js/translated/order.js:1218 templates/js/translated/stock.js:2304
+#: stock/templates/stock/item_base.html:309
+#: templates/js/translated/order.js:1218 templates/js/translated/stock.js:2428
msgid "Sales Order"
msgstr ""
-#: build/templates/build/build_base.html:178
+#: build/templates/build/build_base.html:183
#: build/templates/build/detail.html:109
#: report/templates/report/inventree_build_order_base.html:153
msgid "Issued By"
msgstr ""
-#: build/templates/build/build_base.html:223
+#: build/templates/build/build_base.html:228
msgid "Incomplete Outputs"
msgstr ""
-#: build/templates/build/build_base.html:224
+#: build/templates/build/build_base.html:229
msgid "Build Order cannot be completed as incomplete build outputs remain"
msgstr ""
-#: build/templates/build/build_output_create.html:7
-msgid "The Bill of Materials contains trackable parts"
-msgstr ""
-
-#: build/templates/build/build_output_create.html:8
-msgid "Build outputs must be generated individually."
-msgstr ""
-
-#: build/templates/build/build_output_create.html:9
-msgid "Multiple build outputs will be created based on the quantity specified."
-msgstr ""
-
-#: build/templates/build/build_output_create.html:15
-msgid "Trackable parts can have serial numbers specified"
-msgstr ""
-
-#: build/templates/build/build_output_create.html:16
-msgid "Enter serial numbers to generate multiple single build outputs"
-msgstr ""
-
#: build/templates/build/cancel.html:5
msgid "Are you sure you wish to cancel this build?"
msgstr ""
@@ -1225,7 +1268,7 @@ msgstr ""
msgid "Stock can be taken from any available location."
msgstr ""
-#: build/templates/build/detail.html:50 order/models.py:898 stock/forms.py:136
+#: build/templates/build/detail.html:50 order/models.py:898 stock/forms.py:133
#: templates/js/translated/order.js:592 templates/js/translated/order.js:1138
msgid "Destination"
msgstr ""
@@ -1234,13 +1277,13 @@ msgstr ""
msgid "Destination location not specified"
msgstr ""
-#: build/templates/build/detail.html:74 templates/js/translated/build.js:707
+#: build/templates/build/detail.html:74 templates/js/translated/build.js:929
msgid "Allocated Parts"
msgstr ""
#: build/templates/build/detail.html:81
-#: stock/templates/stock/item_base.html:331
-#: templates/js/translated/stock.js:1673 templates/js/translated/stock.js:2802
+#: stock/templates/stock/item_base.html:333
+#: templates/js/translated/stock.js:1797 templates/js/translated/stock.js:2926
#: templates/js/translated/table_filters.js:151
#: templates/js/translated/table_filters.js:238
msgid "Batch"
@@ -1249,7 +1292,7 @@ msgstr ""
#: build/templates/build/detail.html:127
#: order/templates/order/order_base.html:143
#: order/templates/order/sales_order_base.html:157
-#: templates/js/translated/build.js:1724
+#: templates/js/translated/build.js:1962
msgid "Created"
msgstr ""
@@ -1269,7 +1312,7 @@ msgstr ""
msgid "Allocate Stock to Build"
msgstr ""
-#: build/templates/build/detail.html:177 templates/js/translated/build.js:1262
+#: build/templates/build/detail.html:177 templates/js/translated/build.js:1484
msgid "Unallocate stock"
msgstr ""
@@ -1329,52 +1372,60 @@ msgid "Output Actions"
msgstr ""
#: build/templates/build/detail.html:250
-msgid "Complete selected items"
+msgid "Complete selected build outputs"
msgstr ""
#: build/templates/build/detail.html:251
msgid "Complete outputs"
msgstr ""
-#: build/templates/build/detail.html:266
+#: build/templates/build/detail.html:253
+msgid "Delete selected build outputs"
+msgstr ""
+
+#: build/templates/build/detail.html:254
+msgid "Delete outputs"
+msgstr ""
+
+#: build/templates/build/detail.html:270
msgid "Completed Build Outputs"
msgstr ""
-#: build/templates/build/detail.html:278 build/templates/build/sidebar.html:19
+#: build/templates/build/detail.html:282 build/templates/build/sidebar.html:19
#: order/templates/order/po_sidebar.html:9
#: order/templates/order/purchase_order_detail.html:60
#: order/templates/order/sales_order_detail.html:107
-#: order/templates/order/so_sidebar.html:15 part/templates/part/detail.html:213
-#: part/templates/part/part_sidebar.html:52 stock/templates/stock/item.html:112
+#: order/templates/order/so_sidebar.html:15 part/templates/part/detail.html:216
+#: part/templates/part/part_sidebar.html:55 stock/templates/stock/item.html:112
#: stock/templates/stock/stock_sidebar.html:23
msgid "Attachments"
msgstr ""
-#: build/templates/build/detail.html:294
+#: build/templates/build/detail.html:298
msgid "Build Notes"
msgstr ""
-#: build/templates/build/detail.html:298 build/templates/build/detail.html:453
+#: build/templates/build/detail.html:302 build/templates/build/detail.html:478
#: company/templates/company/detail.html:188
#: company/templates/company/detail.html:215
#: order/templates/order/purchase_order_detail.html:80
#: order/templates/order/purchase_order_detail.html:108
#: order/templates/order/sales_order_detail.html:127
#: order/templates/order/sales_order_detail.html:186
-#: part/templates/part/detail.html:141 stock/templates/stock/item.html:132
-#: stock/templates/stock/item.html:235
+#: part/templates/part/detail.html:144 stock/templates/stock/item.html:132
+#: stock/templates/stock/item.html:230
msgid "Edit Notes"
msgstr ""
-#: build/templates/build/detail.html:477
+#: build/templates/build/detail.html:502
msgid "Allocation Complete"
msgstr ""
-#: build/templates/build/detail.html:478
+#: build/templates/build/detail.html:503
msgid "All untracked stock items have been allocated"
msgstr ""
-#: build/templates/build/index.html:18 part/templates/part/detail.html:320
+#: build/templates/build/index.html:18 part/templates/part/detail.html:323
msgid "New Build Order"
msgstr ""
@@ -1406,51 +1457,11 @@ msgstr ""
msgid "Completed Items"
msgstr ""
-#: build/views.py:76
+#: build/views.py:73
msgid "Build was cancelled"
msgstr ""
-#: build/views.py:88
-msgid "Create Build Output"
-msgstr ""
-
-#: build/views.py:106
-msgid "Maximum output quantity is "
-msgstr ""
-
-#: build/views.py:122 stock/serializers.py:363 stock/views.py:1257
-msgid "Serial numbers already exist"
-msgstr ""
-
-#: build/views.py:131
-msgid "Serial numbers required for trackable build output"
-msgstr ""
-
-#: build/views.py:197
-msgid "Delete Build Output"
-msgstr ""
-
-#: build/views.py:218
-msgid "Confirm unallocation of build stock"
-msgstr ""
-
-#: build/views.py:219 stock/views.py:352
-msgid "Check the confirmation box"
-msgstr ""
-
-#: build/views.py:231
-msgid "Build output does not match build"
-msgstr ""
-
-#: build/views.py:233
-msgid "Build output must be specified"
-msgstr ""
-
-#: build/views.py:245
-msgid "Build output deleted"
-msgstr ""
-
-#: build/views.py:286
+#: build/views.py:114
msgid "Delete Build Order"
msgstr ""
@@ -1639,9 +1650,9 @@ msgstr ""
msgid "Copy category parameter templates when creating a part"
msgstr ""
-#: common/models.py:705 part/models.py:2489 report/models.py:187
+#: common/models.py:705 part/models.py:2525 report/models.py:187
#: templates/js/translated/table_filters.js:38
-#: templates/js/translated/table_filters.js:422
+#: templates/js/translated/table_filters.js:417
msgid "Template"
msgstr ""
@@ -1649,9 +1660,9 @@ msgstr ""
msgid "Parts are templates by default"
msgstr ""
-#: common/models.py:712 part/models.py:921 templates/js/translated/bom.js:1082
+#: common/models.py:712 part/models.py:951 templates/js/translated/bom.js:1300
#: templates/js/translated/table_filters.js:168
-#: templates/js/translated/table_filters.js:434
+#: templates/js/translated/table_filters.js:429
msgid "Assembly"
msgstr ""
@@ -1659,8 +1670,8 @@ msgstr ""
msgid "Parts can be assembled from other components by default"
msgstr ""
-#: common/models.py:719 part/models.py:927
-#: templates/js/translated/table_filters.js:438
+#: common/models.py:719 part/models.py:957
+#: templates/js/translated/table_filters.js:433
msgid "Component"
msgstr ""
@@ -1668,7 +1679,7 @@ msgstr ""
msgid "Parts can be used as sub-components by default"
msgstr ""
-#: common/models.py:726 part/models.py:938
+#: common/models.py:726 part/models.py:968
msgid "Purchaseable"
msgstr ""
@@ -1676,8 +1687,8 @@ msgstr ""
msgid "Parts are purchaseable by default"
msgstr ""
-#: common/models.py:733 part/models.py:943
-#: templates/js/translated/table_filters.js:446
+#: common/models.py:733 part/models.py:973
+#: templates/js/translated/table_filters.js:441
msgid "Salable"
msgstr ""
@@ -1685,10 +1696,10 @@ msgstr ""
msgid "Parts are salable by default"
msgstr ""
-#: common/models.py:740 part/models.py:933
+#: common/models.py:740 part/models.py:963
#: templates/js/translated/table_filters.js:46
#: templates/js/translated/table_filters.js:100
-#: templates/js/translated/table_filters.js:450
+#: templates/js/translated/table_filters.js:445
msgid "Trackable"
msgstr ""
@@ -1696,7 +1707,7 @@ msgstr ""
msgid "Parts are trackable by default"
msgstr ""
-#: common/models.py:747 part/models.py:953
+#: common/models.py:747 part/models.py:983
#: part/templates/part/part_base.html:147
#: templates/js/translated/table_filters.js:42
msgid "Virtual"
@@ -1730,589 +1741,595 @@ msgstr ""
msgid "Include pricing information in BOM tables"
msgstr ""
-#: common/models.py:780
+#: common/models.py:785
+msgid "Show Price History"
+msgstr ""
+
+#: common/models.py:786
+msgid "Display historical pricing for Part"
+msgstr ""
+
+#: common/models.py:792
msgid "Show related parts"
msgstr ""
-#: common/models.py:781
+#: common/models.py:793
msgid "Display related parts for a part"
msgstr ""
-#: common/models.py:787
+#: common/models.py:799
msgid "Create initial stock"
msgstr ""
-#: common/models.py:788
+#: common/models.py:800
msgid "Create initial stock on part creation"
msgstr ""
-#: common/models.py:794
+#: common/models.py:806
msgid "Internal Prices"
msgstr ""
-#: common/models.py:795
+#: common/models.py:807
msgid "Enable internal prices for parts"
msgstr ""
-#: common/models.py:801
+#: common/models.py:813
msgid "Internal Price as BOM-Price"
msgstr ""
-#: common/models.py:802
+#: common/models.py:814
msgid "Use the internal price (if set) in BOM-price calculations"
msgstr ""
-#: common/models.py:808
+#: common/models.py:820
msgid "Part Name Display Format"
msgstr ""
-#: common/models.py:809
+#: common/models.py:821
msgid "Format to display the part name"
msgstr ""
-#: common/models.py:816
+#: common/models.py:828
msgid "Enable Reports"
msgstr ""
-#: common/models.py:817
+#: common/models.py:829
msgid "Enable generation of reports"
msgstr ""
-#: common/models.py:823 templates/stats.html:25
+#: common/models.py:835 templates/stats.html:25
msgid "Debug Mode"
msgstr ""
-#: common/models.py:824
+#: common/models.py:836
msgid "Generate reports in debug mode (HTML output)"
msgstr ""
-#: common/models.py:830
+#: common/models.py:842
msgid "Page Size"
msgstr ""
-#: common/models.py:831
+#: common/models.py:843
msgid "Default page size for PDF reports"
msgstr ""
-#: common/models.py:841
+#: common/models.py:853
msgid "Test Reports"
msgstr ""
-#: common/models.py:842
+#: common/models.py:854
msgid "Enable generation of test reports"
msgstr ""
-#: common/models.py:848
+#: common/models.py:860
msgid "Stock Expiry"
msgstr ""
-#: common/models.py:849
+#: common/models.py:861
msgid "Enable stock expiry functionality"
msgstr ""
-#: common/models.py:855
+#: common/models.py:867
msgid "Sell Expired Stock"
msgstr ""
-#: common/models.py:856
+#: common/models.py:868
msgid "Allow sale of expired stock"
msgstr ""
-#: common/models.py:862
+#: common/models.py:874
msgid "Stock Stale Time"
msgstr ""
-#: common/models.py:863
+#: common/models.py:875
msgid "Number of days stock items are considered stale before expiring"
msgstr ""
-#: common/models.py:865
+#: common/models.py:877
msgid "days"
msgstr ""
-#: common/models.py:870
+#: common/models.py:882
msgid "Build Expired Stock"
msgstr ""
-#: common/models.py:871
+#: common/models.py:883
msgid "Allow building with expired stock"
msgstr ""
-#: common/models.py:877
+#: common/models.py:889
msgid "Stock Ownership Control"
msgstr ""
-#: common/models.py:878
+#: common/models.py:890
msgid "Enable ownership control over stock locations and items"
msgstr ""
-#: common/models.py:884
+#: common/models.py:896
msgid "Build Order Reference Prefix"
msgstr ""
-#: common/models.py:885
+#: common/models.py:897
msgid "Prefix value for build order reference"
msgstr ""
-#: common/models.py:890
+#: common/models.py:902
msgid "Build Order Reference Regex"
msgstr ""
-#: common/models.py:891
+#: common/models.py:903
msgid "Regular expression pattern for matching build order reference"
msgstr ""
-#: common/models.py:895
+#: common/models.py:907
msgid "Sales Order Reference Prefix"
msgstr ""
-#: common/models.py:896
+#: common/models.py:908
msgid "Prefix value for sales order reference"
msgstr ""
-#: common/models.py:901
+#: common/models.py:913
msgid "Purchase Order Reference Prefix"
msgstr ""
-#: common/models.py:902
+#: common/models.py:914
msgid "Prefix value for purchase order reference"
msgstr ""
-#: common/models.py:908
+#: common/models.py:920
msgid "Enable password forgot"
msgstr ""
-#: common/models.py:909
+#: common/models.py:921
msgid "Enable password forgot function on the login pages"
msgstr ""
-#: common/models.py:914
+#: common/models.py:926
msgid "Enable registration"
msgstr ""
-#: common/models.py:915
+#: common/models.py:927
msgid "Enable self-registration for users on the login pages"
msgstr ""
-#: common/models.py:920
+#: common/models.py:932
msgid "Enable SSO"
msgstr ""
-#: common/models.py:921
+#: common/models.py:933
msgid "Enable SSO on the login pages"
msgstr ""
-#: common/models.py:926
+#: common/models.py:938
msgid "Email required"
msgstr ""
-#: common/models.py:927
+#: common/models.py:939
msgid "Require user to supply mail on signup"
msgstr ""
-#: common/models.py:932
+#: common/models.py:944
msgid "Auto-fill SSO users"
msgstr ""
-#: common/models.py:933
+#: common/models.py:945
msgid "Automatically fill out user-details from SSO account-data"
msgstr ""
-#: common/models.py:938
+#: common/models.py:950
msgid "Mail twice"
msgstr ""
-#: common/models.py:939
+#: common/models.py:951
msgid "On signup ask users twice for their mail"
msgstr ""
-#: common/models.py:944
+#: common/models.py:956
msgid "Password twice"
msgstr ""
-#: common/models.py:945
+#: common/models.py:957
msgid "On signup ask users twice for their password"
msgstr ""
-#: common/models.py:950
+#: common/models.py:962
msgid "Group on signup"
msgstr ""
-#: common/models.py:951
+#: common/models.py:963
msgid "Group to which new users are assigned on registration"
msgstr ""
-#: common/models.py:956
+#: common/models.py:968
msgid "Enforce MFA"
msgstr ""
-#: common/models.py:957
+#: common/models.py:969
msgid "Users must use multifactor security."
msgstr ""
-#: common/models.py:964
+#: common/models.py:976
msgid "Enable URL integration"
msgstr ""
-#: common/models.py:965
+#: common/models.py:977
msgid "Enable plugins to add URL routes"
msgstr ""
-#: common/models.py:971
+#: common/models.py:983
msgid "Enable navigation integration"
msgstr ""
-#: common/models.py:972
+#: common/models.py:984
msgid "Enable plugins to integrate into navigation"
msgstr ""
-#: common/models.py:978
+#: common/models.py:990
msgid "Enable app integration"
msgstr ""
-#: common/models.py:979
+#: common/models.py:991
msgid "Enable plugins to add apps"
msgstr ""
-#: common/models.py:985
+#: common/models.py:997
msgid "Enable schedule integration"
msgstr ""
-#: common/models.py:986
+#: common/models.py:998
msgid "Enable plugins to run scheduled tasks"
msgstr ""
-#: common/models.py:992
+#: common/models.py:1004
msgid "Enable event integration"
msgstr ""
-#: common/models.py:993
+#: common/models.py:1005
msgid "Enable plugins to respond to internal events"
msgstr ""
-#: common/models.py:1008 common/models.py:1216
+#: common/models.py:1020 common/models.py:1228
msgid "Settings key (must be unique - case insensitive"
msgstr ""
-#: common/models.py:1039
+#: common/models.py:1051
msgid "Show subscribed parts"
msgstr ""
-#: common/models.py:1040
+#: common/models.py:1052
msgid "Show subscribed parts on the homepage"
msgstr ""
-#: common/models.py:1045
+#: common/models.py:1057
msgid "Show subscribed categories"
msgstr ""
-#: common/models.py:1046
+#: common/models.py:1058
msgid "Show subscribed part categories on the homepage"
msgstr ""
-#: common/models.py:1051
+#: common/models.py:1063
msgid "Show latest parts"
msgstr ""
-#: common/models.py:1052
+#: common/models.py:1064
msgid "Show latest parts on the homepage"
msgstr ""
-#: common/models.py:1057
+#: common/models.py:1069
msgid "Recent Part Count"
msgstr ""
-#: common/models.py:1058
+#: common/models.py:1070
msgid "Number of recent parts to display on index page"
msgstr ""
-#: common/models.py:1064
+#: common/models.py:1076
msgid "Show unvalidated BOMs"
msgstr ""
-#: common/models.py:1065
+#: common/models.py:1077
msgid "Show BOMs that await validation on the homepage"
msgstr ""
-#: common/models.py:1070
+#: common/models.py:1082
msgid "Show recent stock changes"
msgstr ""
-#: common/models.py:1071
+#: common/models.py:1083
msgid "Show recently changed stock items on the homepage"
msgstr ""
-#: common/models.py:1076
+#: common/models.py:1088
msgid "Recent Stock Count"
msgstr ""
-#: common/models.py:1077
+#: common/models.py:1089
msgid "Number of recent stock items to display on index page"
msgstr ""
-#: common/models.py:1082
+#: common/models.py:1094
msgid "Show low stock"
msgstr ""
-#: common/models.py:1083
+#: common/models.py:1095
msgid "Show low stock items on the homepage"
msgstr ""
-#: common/models.py:1088
+#: common/models.py:1100
msgid "Show depleted stock"
msgstr ""
-#: common/models.py:1089
+#: common/models.py:1101
msgid "Show depleted stock items on the homepage"
msgstr ""
-#: common/models.py:1094
+#: common/models.py:1106
msgid "Show needed stock"
msgstr ""
-#: common/models.py:1095
+#: common/models.py:1107
msgid "Show stock items needed for builds on the homepage"
msgstr ""
-#: common/models.py:1100
+#: common/models.py:1112
msgid "Show expired stock"
msgstr ""
-#: common/models.py:1101
+#: common/models.py:1113
msgid "Show expired stock items on the homepage"
msgstr ""
-#: common/models.py:1106
+#: common/models.py:1118
msgid "Show stale stock"
msgstr ""
-#: common/models.py:1107
+#: common/models.py:1119
msgid "Show stale stock items on the homepage"
msgstr ""
-#: common/models.py:1112
+#: common/models.py:1124
msgid "Show pending builds"
msgstr ""
-#: common/models.py:1113
+#: common/models.py:1125
msgid "Show pending builds on the homepage"
msgstr ""
-#: common/models.py:1118
+#: common/models.py:1130
msgid "Show overdue builds"
msgstr ""
-#: common/models.py:1119
+#: common/models.py:1131
msgid "Show overdue builds on the homepage"
msgstr ""
-#: common/models.py:1124
+#: common/models.py:1136
msgid "Show outstanding POs"
msgstr ""
-#: common/models.py:1125
+#: common/models.py:1137
msgid "Show outstanding POs on the homepage"
msgstr ""
-#: common/models.py:1130
+#: common/models.py:1142
msgid "Show overdue POs"
msgstr ""
-#: common/models.py:1131
+#: common/models.py:1143
msgid "Show overdue POs on the homepage"
msgstr ""
-#: common/models.py:1136
+#: common/models.py:1148
msgid "Show outstanding SOs"
msgstr ""
-#: common/models.py:1137
+#: common/models.py:1149
msgid "Show outstanding SOs on the homepage"
msgstr ""
-#: common/models.py:1142
+#: common/models.py:1154
msgid "Show overdue SOs"
msgstr ""
-#: common/models.py:1143
+#: common/models.py:1155
msgid "Show overdue SOs on the homepage"
msgstr ""
-#: common/models.py:1149
+#: common/models.py:1161
msgid "Inline label display"
msgstr ""
-#: common/models.py:1150
+#: common/models.py:1162
msgid "Display PDF labels in the browser, instead of downloading as a file"
msgstr ""
-#: common/models.py:1156
+#: common/models.py:1168
msgid "Inline report display"
msgstr ""
-#: common/models.py:1157
+#: common/models.py:1169
msgid "Display PDF reports in the browser, instead of downloading as a file"
msgstr ""
-#: common/models.py:1163
+#: common/models.py:1175
msgid "Search Preview Results"
msgstr ""
-#: common/models.py:1164
+#: common/models.py:1176
msgid "Number of results to show in search preview window"
msgstr ""
-#: common/models.py:1170
+#: common/models.py:1182
msgid "Search Show Stock"
msgstr ""
-#: common/models.py:1171
+#: common/models.py:1183
msgid "Display stock levels in search preview window"
msgstr ""
-#: common/models.py:1177
+#: common/models.py:1189
msgid "Hide Inactive Parts"
msgstr ""
-#: common/models.py:1178
+#: common/models.py:1190
msgid "Hide inactive parts in search preview window"
msgstr ""
-#: common/models.py:1184
+#: common/models.py:1196
msgid "Show Quantity in Forms"
msgstr ""
-#: common/models.py:1185
+#: common/models.py:1197
msgid "Display available part quantity in some forms"
msgstr ""
-#: common/models.py:1191
+#: common/models.py:1203
msgid "Escape Key Closes Forms"
msgstr ""
-#: common/models.py:1192
+#: common/models.py:1204
msgid "Use the escape key to close modal forms"
msgstr ""
-#: common/models.py:1198
+#: common/models.py:1210
msgid "Fixed Navbar"
msgstr ""
-#: common/models.py:1199
+#: common/models.py:1211
msgid "InvenTree navbar position is fixed to the top of the screen"
msgstr ""
-#: common/models.py:1264 company/forms.py:43
+#: common/models.py:1276 company/forms.py:43
msgid "Price break quantity"
msgstr ""
-#: common/models.py:1271 company/serializers.py:264
+#: common/models.py:1283 company/serializers.py:264
#: company/templates/company/supplier_part.html:256
#: templates/js/translated/part.js:915 templates/js/translated/part.js:1867
msgid "Price"
msgstr ""
-#: common/models.py:1272
+#: common/models.py:1284
msgid "Unit price at specified quantity"
msgstr ""
-#: common/models.py:1429 common/models.py:1568
+#: common/models.py:1441 common/models.py:1580
msgid "Endpoint"
msgstr ""
-#: common/models.py:1430
+#: common/models.py:1442
msgid "Endpoint at which this webhook is received"
msgstr ""
-#: common/models.py:1439
+#: common/models.py:1451
msgid "Name for this webhook"
msgstr ""
-#: common/models.py:1444 part/models.py:948 plugin/models.py:46
+#: common/models.py:1456 part/models.py:978 plugin/models.py:46
#: templates/js/translated/table_filters.js:34
#: templates/js/translated/table_filters.js:96
-#: templates/js/translated/table_filters.js:295
-#: templates/js/translated/table_filters.js:417
+#: templates/js/translated/table_filters.js:290
+#: templates/js/translated/table_filters.js:412
msgid "Active"
msgstr ""
-#: common/models.py:1445
+#: common/models.py:1457
msgid "Is this webhook active"
msgstr ""
-#: common/models.py:1459
+#: common/models.py:1471
msgid "Token"
msgstr ""
-#: common/models.py:1460
+#: common/models.py:1472
msgid "Token for access"
msgstr ""
-#: common/models.py:1467
+#: common/models.py:1479
msgid "Secret"
msgstr ""
-#: common/models.py:1468
+#: common/models.py:1480
msgid "Shared secret for HMAC"
msgstr ""
-#: common/models.py:1535
+#: common/models.py:1547
msgid "Message ID"
msgstr ""
-#: common/models.py:1536
+#: common/models.py:1548
msgid "Unique identifier for this message"
msgstr ""
-#: common/models.py:1544
+#: common/models.py:1556
msgid "Host"
msgstr ""
-#: common/models.py:1545
+#: common/models.py:1557
msgid "Host from which this message was received"
msgstr ""
-#: common/models.py:1552
+#: common/models.py:1564
msgid "Header"
msgstr ""
-#: common/models.py:1553
+#: common/models.py:1565
msgid "Header of this message"
msgstr ""
-#: common/models.py:1559
+#: common/models.py:1571
msgid "Body"
msgstr ""
-#: common/models.py:1560
+#: common/models.py:1572
msgid "Body of this message"
msgstr ""
-#: common/models.py:1569
+#: common/models.py:1581
msgid "Endpoint on which this message was received"
msgstr ""
-#: common/models.py:1574
+#: common/models.py:1586
msgid "Worked on"
msgstr ""
-#: common/models.py:1575
+#: common/models.py:1587
msgid "Was the work on this message finished?"
msgstr ""
#: common/views.py:93 order/templates/order/order_wizard/po_upload.html:49
#: order/templates/order/purchase_order_detail.html:24 order/views.py:243
-#: part/templates/part/bom_upload/upload_file.html:52
-#: part/templates/part/import_wizard/part_upload.html:47 part/views.py:213
-#: part/views.py:773
+#: part/templates/part/import_wizard/part_upload.html:47 part/views.py:210
+#: templates/patterns/wizard/upload.html:35
msgid "Upload File"
msgstr ""
-#: common/views.py:94 order/templates/order/order_wizard/match_fields.html:52
-#: order/views.py:244 part/templates/part/bom_upload/match_fields.html:52
+#: common/views.py:94 order/views.py:244
#: part/templates/part/import_wizard/ajax_match_fields.html:45
-#: part/templates/part/import_wizard/match_fields.html:52 part/views.py:214
-#: part/views.py:774
+#: part/templates/part/import_wizard/match_fields.html:52 part/views.py:211
+#: templates/patterns/wizard/match_fields.html:51
msgid "Match Fields"
msgstr ""
@@ -2328,15 +2345,13 @@ msgstr ""
msgid "Parts imported"
msgstr ""
-#: common/views.py:517 order/templates/order/order_wizard/match_fields.html:27
-#: order/templates/order/order_wizard/match_parts.html:19
+#: common/views.py:517 order/templates/order/order_wizard/match_parts.html:19
#: order/templates/order/order_wizard/po_upload.html:47
-#: part/templates/part/bom_upload/match_fields.html:27
-#: part/templates/part/bom_upload/match_parts.html:19
-#: part/templates/part/bom_upload/upload_file.html:50
#: part/templates/part/import_wizard/match_fields.html:27
#: part/templates/part/import_wizard/match_references.html:19
#: part/templates/part/import_wizard/part_upload.html:45
+#: templates/patterns/wizard/match_fields.html:26
+#: templates/patterns/wizard/upload.html:33
msgid "Previous Step"
msgstr ""
@@ -2404,7 +2419,7 @@ msgstr ""
msgid "Link to external company information"
msgstr ""
-#: company/models.py:139 part/models.py:840
+#: company/models.py:139 part/models.py:870
msgid "Image"
msgstr ""
@@ -2442,7 +2457,7 @@ msgid "Default currency used for this company"
msgstr ""
#: company/models.py:320 company/models.py:535 stock/models.py:471
-#: stock/templates/stock/item_base.html:142 templates/js/translated/bom.js:328
+#: stock/templates/stock/item_base.html:144 templates/js/translated/bom.js:541
msgid "Base Part"
msgstr ""
@@ -2453,11 +2468,11 @@ 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:380
+#: stock/templates/stock/item_base.html:382
#: templates/js/translated/company.js:333
#: templates/js/translated/company.js:517
#: templates/js/translated/company.js:800 templates/js/translated/part.js:234
-#: templates/js/translated/table_filters.js:389
+#: templates/js/translated/table_filters.js:384
msgid "Manufacturer"
msgstr ""
@@ -2488,7 +2503,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:390
+#: stock/templates/stock/item_base.html:392
msgid "Manufacturer Part"
msgstr ""
@@ -2499,7 +2514,7 @@ msgstr ""
#: company/models.py:422
#: report/templates/report/inventree_test_report_base.html:95
#: stock/models.py:1988 templates/js/translated/company.js:647
-#: templates/js/translated/part.js:715 templates/js/translated/stock.js:1304
+#: templates/js/translated/part.js:715 templates/js/translated/stock.js:1332
msgid "Value"
msgstr ""
@@ -2507,9 +2522,9 @@ msgstr ""
msgid "Parameter value"
msgstr ""
-#: company/models.py:429 part/models.py:915 part/models.py:2457
+#: company/models.py:429 part/models.py:945 part/models.py:2493
#: part/templates/part/part_base.html:288
-#: templates/InvenTree/settings/settings.html:287
+#: templates/InvenTree/settings/settings.html:324
#: templates/js/translated/company.js:653 templates/js/translated/part.js:721
msgid "Units"
msgstr ""
@@ -2526,11 +2541,11 @@ msgstr ""
#: company/templates/company/supplier_part.html:87 order/models.py:227
#: order/templates/order/order_base.html:112
#: order/templates/order/order_wizard/select_pos.html:30 part/bom.py:237
-#: part/bom.py:265 stock/templates/stock/item_base.html:397
+#: part/bom.py:265 stock/templates/stock/item_base.html:399
#: templates/js/translated/company.js:337
#: templates/js/translated/company.js:774 templates/js/translated/order.js:823
#: templates/js/translated/part.js:215 templates/js/translated/part.js:863
-#: templates/js/translated/table_filters.js:393
+#: templates/js/translated/table_filters.js:388
msgid "Supplier"
msgstr ""
@@ -2561,22 +2576,23 @@ msgid "Supplier part description"
msgstr ""
#: company/models.py:576 company/templates/company/supplier_part.html:119
-#: part/models.py:2648 report/templates/report/inventree_po_report.html:93
-#: report/templates/report/inventree_so_report.html:93
+#: part/models.py:2717 part/templates/part/upload_bom.html:59
+#: report/templates/report/inventree_po_report.html:93
+#: report/templates/report/inventree_so_report.html:93 stock/serializers.py:409
msgid "Note"
msgstr ""
-#: company/models.py:580 part/models.py:1781
+#: company/models.py:580 part/models.py:1817
msgid "base cost"
msgstr ""
-#: company/models.py:580 part/models.py:1781
+#: company/models.py:580 part/models.py:1817
msgid "Minimum charge (e.g. stocking fee)"
msgstr ""
#: company/models.py:582 company/templates/company/supplier_part.html:112
-#: stock/models.py:495 stock/templates/stock/item_base.html:338
-#: templates/js/translated/company.js:850 templates/js/translated/stock.js:1799
+#: stock/models.py:495 stock/templates/stock/item_base.html:340
+#: templates/js/translated/company.js:850 templates/js/translated/stock.js:1923
msgid "Packaging"
msgstr ""
@@ -2584,7 +2600,7 @@ msgstr ""
msgid "Part packaging"
msgstr ""
-#: company/models.py:584 part/models.py:1783
+#: company/models.py:584 part/models.py:1819
msgid "multiple"
msgstr ""
@@ -2645,11 +2661,11 @@ msgstr ""
#: company/templates/company/company_base.html:83 order/models.py:552
#: order/templates/order/sales_order_base.html:115 stock/models.py:514
-#: stock/models.py:515 stock/serializers.py:626
-#: stock/templates/stock/item_base.html:290
+#: stock/models.py:515 stock/serializers.py:683
+#: stock/templates/stock/item_base.html:292
#: templates/js/translated/company.js:329 templates/js/translated/order.js:1240
-#: templates/js/translated/stock.js:2610
-#: templates/js/translated/table_filters.js:397
+#: templates/js/translated/stock.js:2734
+#: templates/js/translated/table_filters.js:392
msgid "Customer"
msgstr ""
@@ -2679,7 +2695,7 @@ msgstr ""
#: company/templates/company/detail.html:20
#: company/templates/company/manufacturer_part.html:118
-#: part/templates/part/detail.html:353
+#: part/templates/part/detail.html:356
msgid "New Supplier Part"
msgstr ""
@@ -2687,8 +2703,8 @@ msgstr ""
#: company/templates/company/detail.html:79
#: company/templates/company/manufacturer_part.html:127
#: company/templates/company/manufacturer_part.html:156
-#: part/templates/part/category.html:171 part/templates/part/detail.html:362
-#: part/templates/part/detail.html:391
+#: part/templates/part/category.html:171 part/templates/part/detail.html:365
+#: part/templates/part/detail.html:394
msgid "Options"
msgstr ""
@@ -2716,7 +2732,7 @@ msgstr ""
msgid "Create new manufacturer part"
msgstr ""
-#: company/templates/company/detail.html:67 part/templates/part/detail.html:381
+#: company/templates/company/detail.html:67 part/templates/part/detail.html:384
msgid "New Manufacturer Part"
msgstr ""
@@ -2730,7 +2746,7 @@ msgstr ""
#: order/templates/order/order_base.html:13
#: order/templates/order/purchase_orders.html:8
#: order/templates/order/purchase_orders.html:12
-#: part/templates/part/detail.html:85 part/templates/part/part_sidebar.html:37
+#: part/templates/part/detail.html:85 part/templates/part/part_sidebar.html:40
#: templates/InvenTree/index.html:252 templates/InvenTree/search.html:197
#: templates/InvenTree/settings/sidebar.html:45 templates/navbar.html:47
#: users/models.py:45
@@ -2752,7 +2768,7 @@ msgstr ""
#: order/templates/order/sales_order_base.html:13
#: order/templates/order/sales_orders.html:8
#: order/templates/order/sales_orders.html:15
-#: part/templates/part/detail.html:108 part/templates/part/part_sidebar.html:41
+#: part/templates/part/detail.html:108 part/templates/part/part_sidebar.html:44
#: templates/InvenTree/index.html:283 templates/InvenTree/search.html:217
#: templates/InvenTree/settings/sidebar.html:47 templates/navbar.html:58
#: users/models.py:46
@@ -2770,7 +2786,7 @@ msgid "New Sales Order"
msgstr ""
#: company/templates/company/detail.html:168
-#: templates/js/translated/build.js:1059
+#: templates/js/translated/build.js:1281
msgid "Assigned Stock"
msgstr ""
@@ -2780,13 +2796,13 @@ msgstr ""
#: company/templates/company/detail.html:384
#: company/templates/company/manufacturer_part.html:215
-#: part/templates/part/detail.html:435
+#: part/templates/part/detail.html:438
msgid "Delete Supplier Parts?"
msgstr ""
#: company/templates/company/detail.html:385
#: company/templates/company/manufacturer_part.html:216
-#: part/templates/part/detail.html:436
+#: part/templates/part/detail.html:439
msgid "All selected supplier parts will be deleted"
msgstr ""
@@ -2824,36 +2840,36 @@ 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:35 part/templates/part/prices.html:163
+#: part/templates/part/part_sidebar.html:38 part/templates/part/prices.html:163
#: templates/InvenTree/search.html:188 templates/navbar.html:45
msgid "Suppliers"
msgstr ""
#: company/templates/company/manufacturer_part.html:129
-#: part/templates/part/detail.html:364
+#: part/templates/part/detail.html:367
msgid "Delete supplier parts"
msgstr ""
#: company/templates/company/manufacturer_part.html:129
#: company/templates/company/manufacturer_part.html:158
#: company/templates/company/manufacturer_part.html:254
-#: part/templates/part/detail.html:364 part/templates/part/detail.html:393
+#: part/templates/part/detail.html:367 part/templates/part/detail.html:396
#: templates/js/translated/company.js:426 templates/js/translated/helpers.js:31
-#: users/models.py:212
+#: users/models.py:217
msgid "Delete"
msgstr ""
#: company/templates/company/manufacturer_part.html:143
#: company/templates/company/manufacturer_part_sidebar.html:5
#: part/templates/part/category_sidebar.html:17
-#: part/templates/part/detail.html:187 part/templates/part/part_sidebar.html:8
+#: part/templates/part/detail.html:190 part/templates/part/part_sidebar.html:9
msgid "Parameters"
msgstr ""
#: company/templates/company/manufacturer_part.html:147
-#: part/templates/part/detail.html:192
+#: part/templates/part/detail.html:195
#: templates/InvenTree/settings/category.html:12
-#: templates/InvenTree/settings/part.html:65
+#: templates/InvenTree/settings/part.html:66
msgid "New Parameter"
msgstr ""
@@ -2862,7 +2878,7 @@ msgid "Delete parameters"
msgstr ""
#: company/templates/company/manufacturer_part.html:191
-#: part/templates/part/detail.html:892
+#: part/templates/part/detail.html:895
msgid "Add Parameter"
msgstr ""
@@ -2892,8 +2908,8 @@ msgstr ""
#: company/templates/company/supplier_part.html:7
#: company/templates/company/supplier_part.html:24 stock/models.py:479
-#: stock/templates/stock/item_base.html:402
-#: templates/js/translated/company.js:790 templates/js/translated/stock.js:1756
+#: stock/templates/stock/item_base.html:404
+#: templates/js/translated/company.js:790 templates/js/translated/stock.js:1880
msgid "Supplier Part"
msgstr ""
@@ -2919,7 +2935,7 @@ msgstr ""
#: company/templates/company/supplier_part.html:142
#: part/templates/part/detail.html:25 stock/templates/stock/location.html:167
-#: templates/js/translated/stock.js:368
+#: templates/js/translated/stock.js:369
msgid "New Stock Item"
msgstr ""
@@ -2940,7 +2956,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:1628
+#: part/templates/part/prices.html:271 part/views.py:1319
msgid "Add Price Break"
msgstr ""
@@ -2948,11 +2964,11 @@ msgstr ""
msgid "No price break information found"
msgstr ""
-#: company/templates/company/supplier_part.html:224 part/views.py:1690
+#: company/templates/company/supplier_part.html:224 part/views.py:1381
msgid "Delete Price Break"
msgstr ""
-#: company/templates/company/supplier_part.html:238 part/views.py:1676
+#: company/templates/company/supplier_part.html:238 part/views.py:1367
msgid "Edit Price Break"
msgstr ""
@@ -2965,15 +2981,15 @@ msgid "Delete price break"
msgstr ""
#: company/templates/company/supplier_part_navbar.html:15
-#: part/templates/part/part_sidebar.html:14
+#: part/templates/part/part_sidebar.html:15
#: 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:150
#: templates/InvenTree/settings/sidebar.html:41
-#: templates/js/translated/bom.js:340 templates/js/translated/part.js:495
+#: templates/js/translated/bom.js:553 templates/js/translated/part.js:495
#: templates/js/translated/part.js:630 templates/js/translated/part.js:1125
-#: templates/js/translated/part.js:1286 templates/js/translated/stock.js:935
-#: templates/js/translated/stock.js:1588 templates/navbar.html:28
+#: templates/js/translated/part.js:1286 templates/js/translated/stock.js:936
+#: templates/js/translated/stock.js:1712 templates/navbar.html:28
msgid "Stock"
msgstr ""
@@ -2987,7 +3003,7 @@ msgid "Supplier Part Pricing"
msgstr ""
#: company/templates/company/supplier_part_navbar.html:29
-#: part/templates/part/part_sidebar.html:28
+#: part/templates/part/part_sidebar.html:30
msgid "Pricing"
msgstr ""
@@ -2996,7 +3012,7 @@ msgstr ""
#: stock/templates/stock/location.html:151
#: stock/templates/stock/location.html:163
#: stock/templates/stock/location_sidebar.html:7
-#: templates/InvenTree/search.html:152 templates/js/translated/stock.js:2509
+#: templates/InvenTree/search.html:152 templates/js/translated/stock.js:2633
#: templates/stats.html:105 templates/stats.html:114 users/models.py:43
msgid "Stock Items"
msgstr ""
@@ -3026,20 +3042,20 @@ msgstr ""
msgid "New Company"
msgstr ""
-#: company/views.py:129 part/views.py:593
+#: company/views.py:129 part/views.py:591
msgid "Download Image"
msgstr ""
-#: company/views.py:158 part/views.py:625
+#: company/views.py:158 part/views.py:623
msgid "Image size exceeds maximum allowable size for download"
msgstr ""
-#: company/views.py:165 part/views.py:632
+#: company/views.py:165 part/views.py:630
#, python-brace-format
msgid "Invalid response: {code}"
msgstr ""
-#: company/views.py:174 part/views.py:641
+#: company/views.py:174 part/views.py:639
msgid "Supplied URL is not a valid image file"
msgstr ""
@@ -3256,16 +3272,16 @@ msgid "Supplier part must match supplier"
msgstr ""
#: order/models.py:855 order/models.py:946 order/models.py:1042
-#: templates/js/translated/order.js:1820 templates/js/translated/stock.js:2271
+#: templates/js/translated/order.js:1820 templates/js/translated/stock.js:2395
msgid "Order"
msgstr ""
#: order/models.py:856 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:352
+#: stock/templates/stock/item_base.html:354
#: templates/js/translated/order.js:801 templates/js/translated/part.js:838
-#: templates/js/translated/stock.js:1733 templates/js/translated/stock.js:2591
+#: templates/js/translated/stock.js:1857 templates/js/translated/stock.js:2715
msgid "Purchase Order"
msgstr ""
@@ -3276,7 +3292,7 @@ msgstr ""
#: order/models.py:884 order/templates/order/order_base.html:163
#: templates/js/translated/order.js:589 templates/js/translated/order.js:1118
#: templates/js/translated/part.js:910 templates/js/translated/part.js:937
-#: templates/js/translated/table_filters.js:317
+#: templates/js/translated/table_filters.js:312
msgid "Received"
msgstr ""
@@ -3285,8 +3301,8 @@ msgid "Number of items received"
msgstr ""
#: order/models.py:892 part/templates/part/prices.html:176 stock/models.py:608
-#: stock/serializers.py:170 stock/templates/stock/item_base.html:359
-#: templates/js/translated/stock.js:1787
+#: stock/serializers.py:170 stock/templates/stock/item_base.html:361
+#: templates/js/translated/stock.js:1911
msgid "Purchase Price"
msgstr ""
@@ -3530,7 +3546,7 @@ msgstr ""
#: order/templates/order/order_base.html:94
#: order/templates/order/sales_order_base.html:89
-#: templates/js/translated/stock.js:2327
+#: templates/js/translated/stock.js:2451
msgid "Order Status"
msgstr ""
@@ -3574,73 +3590,20 @@ msgstr ""
msgid "After placing this purchase order, line items will no longer be editable."
msgstr ""
-#: order/templates/order/order_wizard/match_fields.html:9
-#: part/templates/part/bom_upload/match_fields.html:9
-#: part/templates/part/import_wizard/ajax_match_fields.html:9
-#: part/templates/part/import_wizard/match_fields.html:9
-msgid "Missing selections for the following required columns"
-msgstr ""
-
-#: order/templates/order/order_wizard/match_fields.html:20
-#: part/templates/part/bom_upload/match_fields.html:20
-#: part/templates/part/import_wizard/ajax_match_fields.html:20
-#: part/templates/part/import_wizard/match_fields.html:20
-msgid "Duplicate selections found, see below. Fix them then retry submitting."
-msgstr ""
-
-#: order/templates/order/order_wizard/match_fields.html:29
-#: order/templates/order/order_wizard/match_parts.html:21
-#: part/templates/part/bom_upload/match_fields.html:29
-#: part/templates/part/bom_upload/match_parts.html:21
-#: part/templates/part/import_wizard/match_fields.html:29
-#: part/templates/part/import_wizard/match_references.html:21
-msgid "Submit Selections"
-msgstr ""
-
-#: order/templates/order/order_wizard/match_fields.html:35
-#: part/templates/part/bom_upload/match_fields.html:35
-#: part/templates/part/import_wizard/ajax_match_fields.html:28
-#: part/templates/part/import_wizard/match_fields.html:35
-msgid "File Fields"
-msgstr ""
-
-#: order/templates/order/order_wizard/match_fields.html:42
-#: part/templates/part/bom_upload/match_fields.html:42
-#: part/templates/part/import_wizard/ajax_match_fields.html:35
-#: part/templates/part/import_wizard/match_fields.html:42
-msgid "Remove column"
-msgstr ""
-
-#: order/templates/order/order_wizard/match_fields.html:60
-#: part/templates/part/bom_upload/match_fields.html:60
-#: part/templates/part/import_wizard/ajax_match_fields.html:53
-#: part/templates/part/import_wizard/match_fields.html:60
-msgid "Duplicate selection"
-msgstr ""
-
-#: order/templates/order/order_wizard/match_fields.html:71
-#: order/templates/order/order_wizard/match_parts.html:52
-#: part/templates/part/bom_upload/match_fields.html:71
-#: part/templates/part/bom_upload/match_parts.html:53
-#: part/templates/part/import_wizard/ajax_match_fields.html:64
-#: part/templates/part/import_wizard/ajax_match_references.html:42
-#: part/templates/part/import_wizard/match_fields.html:71
-#: part/templates/part/import_wizard/match_references.html:49
-#: templates/js/translated/build.js:300 templates/js/translated/build.js:1311
-#: templates/js/translated/order.js:537 templates/js/translated/order.js:1488
-#: templates/js/translated/stock.js:601 templates/js/translated/stock.js:769
-msgid "Remove row"
-msgstr ""
-
#: order/templates/order/order_wizard/match_parts.html:12
-#: part/templates/part/bom_upload/match_parts.html:12
#: part/templates/part/import_wizard/ajax_match_references.html:12
#: part/templates/part/import_wizard/match_references.html:12
msgid "Errors exist in the submitted data"
msgstr ""
+#: order/templates/order/order_wizard/match_parts.html:21
+#: part/templates/part/import_wizard/match_fields.html:29
+#: part/templates/part/import_wizard/match_references.html:21
+#: templates/patterns/wizard/match_fields.html:28
+msgid "Submit Selections"
+msgstr ""
+
#: order/templates/order/order_wizard/match_parts.html:28
-#: part/templates/part/bom_upload/match_parts.html:28
#: part/templates/part/import_wizard/ajax_match_references.html:21
#: part/templates/part/import_wizard/match_references.html:28
msgid "Row"
@@ -3650,6 +3613,19 @@ msgstr ""
msgid "Select Supplier Part"
msgstr ""
+#: order/templates/order/order_wizard/match_parts.html:52
+#: part/templates/part/import_wizard/ajax_match_fields.html:64
+#: part/templates/part/import_wizard/ajax_match_references.html:42
+#: part/templates/part/import_wizard/match_fields.html:71
+#: part/templates/part/import_wizard/match_references.html:49
+#: templates/js/translated/bom.js:76 templates/js/translated/build.js:380
+#: templates/js/translated/build.js:528 templates/js/translated/build.js:1547
+#: templates/js/translated/order.js:537 templates/js/translated/order.js:1488
+#: templates/js/translated/stock.js:602 templates/js/translated/stock.js:770
+#: templates/patterns/wizard/match_fields.html:70
+msgid "Remove row"
+msgstr ""
+
#: order/templates/order/order_wizard/po_upload.html:8
msgid "Return to Orders"
msgstr ""
@@ -3659,9 +3635,9 @@ msgid "Upload File for Purchase Order"
msgstr ""
#: order/templates/order/order_wizard/po_upload.html:25
-#: part/templates/part/bom_upload/upload_file.html:21
#: part/templates/part/import_wizard/ajax_part_upload.html:10
#: part/templates/part/import_wizard/part_upload.html:23
+#: templates/patterns/wizard/upload.html:11
#, python-format
msgid "Step %(step)s of %(count)s"
msgstr ""
@@ -3819,7 +3795,7 @@ msgid "Pending Shipments"
msgstr ""
#: order/templates/order/sales_order_detail.html:48
-#: templates/js/translated/bom.js:732 templates/js/translated/build.js:1243
+#: templates/js/translated/bom.js:945 templates/js/translated/build.js:1465
msgid "Actions"
msgstr ""
@@ -3922,7 +3898,7 @@ msgstr ""
msgid "This field is required"
msgstr ""
-#: part/bom.py:125 part/models.py:83 part/models.py:849
+#: part/bom.py:125 part/models.py:83 part/models.py:879
#: part/templates/part/category.html:108 part/templates/part/part_base.html:338
msgid "Default Location"
msgstr ""
@@ -3968,7 +3944,7 @@ msgstr ""
msgid "Default keywords for parts in this category"
msgstr ""
-#: part/models.py:97 part/models.py:2533 part/templates/part/category.html:15
+#: part/models.py:97 part/models.py:2569 part/templates/part/category.html:15
#: part/templates/part/part_app_base.html:10
msgid "Part Category"
msgstr ""
@@ -3994,408 +3970,478 @@ msgstr ""
msgid "Invalid choice for parent part"
msgstr ""
-#: part/models.py:502 part/models.py:514
+#: part/models.py:532 part/models.py:544
#, python-brace-format
msgid "Part '{p1}' is used in BOM for '{p2}' (recursive)"
msgstr ""
-#: part/models.py:644
+#: part/models.py:674
msgid "Next available serial numbers are"
msgstr ""
-#: part/models.py:648
+#: part/models.py:678
msgid "Next available serial number is"
msgstr ""
-#: part/models.py:653
+#: part/models.py:683
msgid "Most recent serial number is"
msgstr ""
-#: part/models.py:748
+#: part/models.py:778
msgid "Duplicate IPN not allowed in part settings"
msgstr ""
-#: part/models.py:773
+#: part/models.py:803 part/models.py:2622
msgid "Part name"
msgstr ""
-#: part/models.py:780
+#: part/models.py:810
msgid "Is Template"
msgstr ""
-#: part/models.py:781
+#: part/models.py:811
msgid "Is this part a template part?"
msgstr ""
-#: part/models.py:791
+#: part/models.py:821
msgid "Is this part a variant of another part?"
msgstr ""
-#: part/models.py:792
+#: part/models.py:822
msgid "Variant Of"
msgstr ""
-#: part/models.py:798
+#: part/models.py:828
msgid "Part description"
msgstr ""
-#: part/models.py:803 part/templates/part/category.html:86
+#: part/models.py:833 part/templates/part/category.html:86
#: part/templates/part/part_base.html:302
msgid "Keywords"
msgstr ""
-#: part/models.py:804
+#: part/models.py:834
msgid "Part keywords to improve visibility in search results"
msgstr ""
-#: part/models.py:811 part/models.py:2283 part/models.py:2532
+#: part/models.py:841 part/models.py:2319 part/models.py:2568
#: part/templates/part/part_base.html:265
#: part/templates/part/set_category.html:15
-#: templates/InvenTree/settings/settings.html:186
+#: templates/InvenTree/settings/settings.html:223
#: templates/js/translated/part.js:1268
msgid "Category"
msgstr ""
-#: part/models.py:812
+#: part/models.py:842
msgid "Part category"
msgstr ""
-#: part/models.py:817 part/templates/part/part_base.html:274
+#: part/models.py:847 part/templates/part/part_base.html:274
#: templates/js/translated/part.js:618 templates/js/translated/part.js:1221
-#: templates/js/translated/stock.js:1560
+#: templates/js/translated/stock.js:1684
msgid "IPN"
msgstr ""
-#: part/models.py:818
+#: part/models.py:848
msgid "Internal Part Number"
msgstr ""
-#: part/models.py:824
+#: part/models.py:854
msgid "Part revision or version number"
msgstr ""
-#: part/models.py:825 part/templates/part/part_base.html:281
+#: part/models.py:855 part/templates/part/part_base.html:281
#: report/models.py:200 templates/js/translated/part.js:622
msgid "Revision"
msgstr ""
-#: part/models.py:847
+#: part/models.py:877
msgid "Where is this item normally stored?"
msgstr ""
-#: part/models.py:894 part/templates/part/part_base.html:347
+#: part/models.py:924 part/templates/part/part_base.html:347
msgid "Default Supplier"
msgstr ""
-#: part/models.py:895
+#: part/models.py:925
msgid "Default supplier part"
msgstr ""
-#: part/models.py:902
+#: part/models.py:932
msgid "Default Expiry"
msgstr ""
-#: part/models.py:903
+#: part/models.py:933
msgid "Expiry time (in days) for stock items of this part"
msgstr ""
-#: part/models.py:908 part/templates/part/part_base.html:196
+#: part/models.py:938 part/templates/part/part_base.html:196
msgid "Minimum Stock"
msgstr ""
-#: part/models.py:909
+#: part/models.py:939
msgid "Minimum allowed stock level"
msgstr ""
-#: part/models.py:916
+#: part/models.py:946
msgid "Stock keeping units for this part"
msgstr ""
-#: part/models.py:922
+#: part/models.py:952
msgid "Can this part be built from other parts?"
msgstr ""
-#: part/models.py:928
+#: part/models.py:958
msgid "Can this part be used to build other parts?"
msgstr ""
-#: part/models.py:934
+#: part/models.py:964
msgid "Does this part have tracking for unique items?"
msgstr ""
-#: part/models.py:939
+#: part/models.py:969
msgid "Can this part be purchased from external suppliers?"
msgstr ""
-#: part/models.py:944
+#: part/models.py:974
msgid "Can this part be sold to customers?"
msgstr ""
-#: part/models.py:949
+#: part/models.py:979
msgid "Is this part active?"
msgstr ""
-#: part/models.py:954
+#: part/models.py:984
msgid "Is this a virtual part, such as a software product or license?"
msgstr ""
-#: part/models.py:959
+#: part/models.py:989
msgid "Part notes - supports Markdown formatting"
msgstr ""
-#: part/models.py:962
+#: part/models.py:992
msgid "BOM checksum"
msgstr ""
-#: part/models.py:962
+#: part/models.py:992
msgid "Stored BOM checksum"
msgstr ""
-#: part/models.py:965
+#: part/models.py:995
msgid "BOM checked by"
msgstr ""
-#: part/models.py:967
+#: part/models.py:997
msgid "BOM checked date"
msgstr ""
-#: part/models.py:971
+#: part/models.py:1001
msgid "Creation User"
msgstr ""
-#: part/models.py:1783
+#: part/models.py:1819
msgid "Sell multiple"
msgstr ""
-#: part/models.py:2333
+#: part/models.py:2369
msgid "Test templates can only be created for trackable parts"
msgstr ""
-#: part/models.py:2350
+#: part/models.py:2386
msgid "Test with this name already exists for this part"
msgstr ""
-#: part/models.py:2370 templates/js/translated/part.js:1714
-#: templates/js/translated/stock.js:1284
+#: part/models.py:2406 templates/js/translated/part.js:1714
+#: templates/js/translated/stock.js:1312
msgid "Test Name"
msgstr ""
-#: part/models.py:2371
+#: part/models.py:2407
msgid "Enter a name for the test"
msgstr ""
-#: part/models.py:2376
+#: part/models.py:2412
msgid "Test Description"
msgstr ""
-#: part/models.py:2377
+#: part/models.py:2413
msgid "Enter description for this test"
msgstr ""
-#: part/models.py:2382 templates/js/translated/part.js:1723
-#: templates/js/translated/table_filters.js:281
+#: part/models.py:2418 templates/js/translated/part.js:1723
+#: templates/js/translated/table_filters.js:276
msgid "Required"
msgstr ""
-#: part/models.py:2383
+#: part/models.py:2419
msgid "Is this test required to pass?"
msgstr ""
-#: part/models.py:2388 templates/js/translated/part.js:1731
+#: part/models.py:2424 templates/js/translated/part.js:1731
msgid "Requires Value"
msgstr ""
-#: part/models.py:2389
+#: part/models.py:2425
msgid "Does this test require a value when adding a test result?"
msgstr ""
-#: part/models.py:2394 templates/js/translated/part.js:1738
+#: part/models.py:2430 templates/js/translated/part.js:1738
msgid "Requires Attachment"
msgstr ""
-#: part/models.py:2395
+#: part/models.py:2431
msgid "Does this test require a file attachment when adding a test result?"
msgstr ""
-#: part/models.py:2406
+#: part/models.py:2442
#, python-brace-format
msgid "Illegal character in template name ({c})"
msgstr ""
-#: part/models.py:2442
+#: part/models.py:2478
msgid "Parameter template name must be unique"
msgstr ""
-#: part/models.py:2450
+#: part/models.py:2486
msgid "Parameter Name"
msgstr ""
-#: part/models.py:2457
+#: part/models.py:2493
msgid "Parameter Units"
msgstr ""
-#: part/models.py:2487
+#: part/models.py:2523
msgid "Parent Part"
msgstr ""
-#: part/models.py:2489 part/models.py:2538 part/models.py:2539
-#: templates/InvenTree/settings/settings.html:181
+#: part/models.py:2525 part/models.py:2574 part/models.py:2575
+#: templates/InvenTree/settings/settings.html:218
msgid "Parameter Template"
msgstr ""
-#: part/models.py:2491
+#: part/models.py:2527
msgid "Data"
msgstr ""
-#: part/models.py:2491
+#: part/models.py:2527
msgid "Parameter Value"
msgstr ""
-#: part/models.py:2543 templates/InvenTree/settings/settings.html:190
+#: part/models.py:2579 templates/InvenTree/settings/settings.html:227
msgid "Default Value"
msgstr ""
-#: part/models.py:2544
+#: part/models.py:2580
msgid "Default Parameter Value"
msgstr ""
+#: part/models.py:2614
+msgid "Part ID or part name"
+msgstr ""
+
+#: part/models.py:2617 templates/js/translated/model_renderers.js:182
+msgid "Part ID"
+msgstr ""
+
+#: part/models.py:2618
+msgid "Unique part ID value"
+msgstr ""
+
#: part/models.py:2621
-msgid "Select parent part"
+msgid "Part Name"
+msgstr ""
+
+#: part/models.py:2625
+msgid "Part IPN"
+msgstr ""
+
+#: part/models.py:2626
+msgid "Part IPN value"
msgstr ""
#: part/models.py:2629
-msgid "Sub part"
+msgid "Level"
msgstr ""
#: part/models.py:2630
+msgid "BOM level"
+msgstr ""
+
+#: part/models.py:2690
+msgid "Select parent part"
+msgstr ""
+
+#: part/models.py:2698
+msgid "Sub part"
+msgstr ""
+
+#: part/models.py:2699
msgid "Select part to be used in BOM"
msgstr ""
-#: part/models.py:2636
+#: part/models.py:2705
msgid "BOM quantity for this BOM item"
msgstr ""
-#: part/models.py:2638 templates/js/translated/bom.js:578
-#: templates/js/translated/bom.js:652
+#: part/models.py:2707 part/templates/part/upload_bom.html:58
+#: templates/js/translated/bom.js:791 templates/js/translated/bom.js:865
#: templates/js/translated/table_filters.js:92
msgid "Optional"
msgstr ""
-#: part/models.py:2638
+#: part/models.py:2707
msgid "This BOM item is optional"
msgstr ""
-#: part/models.py:2641
+#: part/models.py:2710 part/templates/part/upload_bom.html:55
msgid "Overage"
msgstr ""
-#: part/models.py:2642
+#: part/models.py:2711
msgid "Estimated build wastage quantity (absolute or percentage)"
msgstr ""
-#: part/models.py:2645
+#: part/models.py:2714
msgid "BOM item reference"
msgstr ""
-#: part/models.py:2648
+#: part/models.py:2717
msgid "BOM item notes"
msgstr ""
-#: part/models.py:2650
+#: part/models.py:2719
msgid "Checksum"
msgstr ""
-#: part/models.py:2650
+#: part/models.py:2719
msgid "BOM line checksum"
msgstr ""
-#: part/models.py:2654 templates/js/translated/bom.js:669
+#: part/models.py:2723 part/templates/part/upload_bom.html:57
+#: templates/js/translated/bom.js:882
#: templates/js/translated/table_filters.js:68
#: templates/js/translated/table_filters.js:88
msgid "Inherited"
msgstr ""
-#: part/models.py:2655
+#: part/models.py:2724
msgid "This BOM item is inherited by BOMs for variant parts"
msgstr ""
-#: part/models.py:2660 templates/js/translated/bom.js:661
+#: part/models.py:2729 part/templates/part/upload_bom.html:56
+#: templates/js/translated/bom.js:874
msgid "Allow Variants"
msgstr ""
-#: part/models.py:2661
+#: part/models.py:2730
msgid "Stock items for variant parts can be used for this BOM item"
msgstr ""
-#: part/models.py:2746 stock/models.py:357
+#: part/models.py:2815 stock/models.py:357
msgid "Quantity must be integer value for trackable parts"
msgstr ""
-#: part/models.py:2755 part/models.py:2757
+#: part/models.py:2824 part/models.py:2826
msgid "Sub part must be specified"
msgstr ""
-#: part/models.py:2886
+#: part/models.py:2955
msgid "BOM Item Substitute"
msgstr ""
-#: part/models.py:2908
+#: part/models.py:2977
msgid "Substitute part cannot be the same as the master part"
msgstr ""
-#: part/models.py:2920
+#: part/models.py:2989
msgid "Parent BOM item"
msgstr ""
-#: part/models.py:2928
+#: part/models.py:2997
msgid "Substitute part"
msgstr ""
-#: part/models.py:2939
+#: part/models.py:3008
msgid "Part 1"
msgstr ""
-#: part/models.py:2943
+#: part/models.py:3012
msgid "Part 2"
msgstr ""
-#: part/models.py:2943
+#: part/models.py:3012
msgid "Select Related Part"
msgstr ""
-#: part/models.py:2975
+#: part/models.py:3044
msgid "Error creating relationship: check that the part is not related to itself and that the relationship is unique"
msgstr ""
-#: part/serializers.py:659
+#: part/serializers.py:667
msgid "Select part to copy BOM from"
msgstr ""
-#: part/serializers.py:670
+#: part/serializers.py:678
msgid "Remove Existing Data"
msgstr ""
-#: part/serializers.py:671
+#: part/serializers.py:679
msgid "Remove existing BOM items before copying"
msgstr ""
-#: part/serializers.py:676
+#: part/serializers.py:684
msgid "Include Inherited"
msgstr ""
-#: part/serializers.py:677
+#: part/serializers.py:685
msgid "Include BOM items which are inherited from templated parts"
msgstr ""
-#: part/serializers.py:682
+#: part/serializers.py:690
msgid "Skip Invalid Rows"
msgstr ""
-#: part/serializers.py:683
+#: part/serializers.py:691
msgid "Enable this option to skip invalid rows"
msgstr ""
-#: part/tasks.py:53
+#: part/serializers.py:734
+msgid "Clear Existing BOM"
+msgstr ""
+
+#: part/serializers.py:735
+msgid "Delete existing BOM items before uploading"
+msgstr ""
+
+#: part/serializers.py:762
+msgid "No part column specified"
+msgstr ""
+
+#: part/serializers.py:806
+msgid "Multiple matching parts found"
+msgstr ""
+
+#: part/serializers.py:809
+msgid "No matching part found"
+msgstr ""
+
+#: part/serializers.py:812
+msgid "Part is not designated as a component"
+msgstr ""
+
+#: part/serializers.py:821
+msgid "Quantity not provided"
+msgstr ""
+
+#: part/serializers.py:829
+msgid "Invalid quantity"
+msgstr ""
+
+#: part/serializers.py:848
+msgid "At least one BOM item is required"
+msgstr ""
+
+#: part/tasks.py:58
msgid "Low stock notification"
msgstr ""
@@ -4418,7 +4464,7 @@ msgstr ""
msgid "The BOM for %(part)s has not been validated."
msgstr ""
-#: part/templates/part/bom.html:30 part/templates/part/detail.html:270
+#: part/templates/part/bom.html:30 part/templates/part/detail.html:273
msgid "BOM actions"
msgstr ""
@@ -4426,34 +4472,6 @@ msgstr ""
msgid "Delete Items"
msgstr ""
-#: part/templates/part/bom_upload/match_parts.html:29
-msgid "Select Part"
-msgstr ""
-
-#: part/templates/part/bom_upload/upload_file.html:8
-msgid "Return to BOM"
-msgstr ""
-
-#: part/templates/part/bom_upload/upload_file.html:13
-msgid "Upload Bill of Materials"
-msgstr ""
-
-#: part/templates/part/bom_upload/upload_file.html:33
-msgid "Requirements for BOM upload"
-msgstr ""
-
-#: part/templates/part/bom_upload/upload_file.html:35
-msgid "The BOM file must contain the required named columns as provided in the "
-msgstr ""
-
-#: part/templates/part/bom_upload/upload_file.html:35
-msgid "BOM Upload Template"
-msgstr ""
-
-#: part/templates/part/bom_upload/upload_file.html:36
-msgid "Each part must already exist in the database"
-msgstr ""
-
#: part/templates/part/category.html:28 part/templates/part/category.html:32
msgid "You are subscribed to notifications for this category"
msgstr ""
@@ -4519,7 +4537,7 @@ msgstr ""
msgid "Create new part"
msgstr ""
-#: part/templates/part/category.html:161 templates/js/translated/bom.js:152
+#: part/templates/part/category.html:161 templates/js/translated/bom.js:365
msgid "New Part"
msgstr ""
@@ -4639,138 +4657,168 @@ msgstr ""
msgid "Sales Order Allocations"
msgstr ""
-#: part/templates/part/detail.html:159
+#: part/templates/part/detail.html:162
msgid "Part Variants"
msgstr ""
-#: part/templates/part/detail.html:163
+#: part/templates/part/detail.html:166
msgid "Create new variant"
msgstr ""
-#: part/templates/part/detail.html:164
+#: part/templates/part/detail.html:167
msgid "New Variant"
msgstr ""
-#: part/templates/part/detail.html:191
+#: part/templates/part/detail.html:194
msgid "Add new parameter"
msgstr ""
-#: part/templates/part/detail.html:228 part/templates/part/part_sidebar.html:49
+#: part/templates/part/detail.html:231 part/templates/part/part_sidebar.html:52
msgid "Related Parts"
msgstr ""
-#: part/templates/part/detail.html:232 part/templates/part/detail.html:233
+#: part/templates/part/detail.html:235 part/templates/part/detail.html:236
msgid "Add Related"
msgstr ""
-#: part/templates/part/detail.html:253 part/templates/part/part_sidebar.html:17
+#: part/templates/part/detail.html:256 part/templates/part/part_sidebar.html:18
msgid "Bill of Materials"
msgstr ""
-#: part/templates/part/detail.html:258
+#: part/templates/part/detail.html:261
msgid "Export actions"
msgstr ""
-#: part/templates/part/detail.html:262 templates/js/translated/bom.js:70
+#: part/templates/part/detail.html:265 templates/js/translated/bom.js:283
msgid "Export BOM"
msgstr ""
-#: part/templates/part/detail.html:264
+#: part/templates/part/detail.html:267
msgid "Print BOM Report"
msgstr ""
-#: part/templates/part/detail.html:274
+#: part/templates/part/detail.html:277
msgid "Upload BOM"
msgstr ""
-#: part/templates/part/detail.html:276 templates/js/translated/part.js:272
+#: part/templates/part/detail.html:279 templates/js/translated/part.js:272
msgid "Copy BOM"
msgstr ""
-#: part/templates/part/detail.html:278
+#: part/templates/part/detail.html:281
msgid "Validate BOM"
msgstr ""
-#: part/templates/part/detail.html:283
+#: part/templates/part/detail.html:286
msgid "New BOM Item"
msgstr ""
-#: part/templates/part/detail.html:284
+#: part/templates/part/detail.html:287
msgid "Add BOM Item"
msgstr ""
-#: part/templates/part/detail.html:297
+#: part/templates/part/detail.html:300
msgid "Assemblies"
msgstr ""
-#: part/templates/part/detail.html:314
+#: part/templates/part/detail.html:317
msgid "Part Builds"
msgstr ""
-#: part/templates/part/detail.html:339
+#: part/templates/part/detail.html:342
msgid "Build Order Allocations"
msgstr ""
-#: part/templates/part/detail.html:349
+#: part/templates/part/detail.html:352
msgid "Part Suppliers"
msgstr ""
-#: part/templates/part/detail.html:377
+#: part/templates/part/detail.html:380
msgid "Part Manufacturers"
msgstr ""
-#: part/templates/part/detail.html:393
+#: part/templates/part/detail.html:396
msgid "Delete manufacturer parts"
msgstr ""
-#: part/templates/part/detail.html:575
+#: part/templates/part/detail.html:578
msgid "Delete selected BOM items?"
msgstr ""
-#: part/templates/part/detail.html:576
+#: part/templates/part/detail.html:579
msgid "All selected BOM items will be deleted"
msgstr ""
-#: part/templates/part/detail.html:625
+#: part/templates/part/detail.html:628
msgid "Create BOM Item"
msgstr ""
-#: part/templates/part/detail.html:682
+#: part/templates/part/detail.html:685
msgid "Related Part"
msgstr ""
-#: part/templates/part/detail.html:690
+#: part/templates/part/detail.html:693
msgid "Add Related Part"
msgstr ""
-#: part/templates/part/detail.html:785
+#: part/templates/part/detail.html:788
msgid "Add Test Result Template"
msgstr ""
-#: part/templates/part/detail.html:842
+#: part/templates/part/detail.html:845
msgid "Edit Part Notes"
msgstr ""
-#: part/templates/part/detail.html:955
+#: part/templates/part/detail.html:958
#, python-format
msgid "Purchase Unit Price - %(currency)s"
msgstr ""
-#: part/templates/part/detail.html:967
+#: part/templates/part/detail.html:970
#, python-format
msgid "Unit Price-Cost Difference - %(currency)s"
msgstr ""
-#: part/templates/part/detail.html:979
+#: part/templates/part/detail.html:982
#, python-format
msgid "Supplier Unit Cost - %(currency)s"
msgstr ""
-#: part/templates/part/detail.html:1068
+#: part/templates/part/detail.html:1071
#, python-format
msgid "Unit Price - %(currency)s"
msgstr ""
+#: part/templates/part/import_wizard/ajax_match_fields.html:9
+#: part/templates/part/import_wizard/match_fields.html:9
+#: templates/patterns/wizard/match_fields.html:8
+msgid "Missing selections for the following required columns"
+msgstr ""
+
+#: part/templates/part/import_wizard/ajax_match_fields.html:20
+#: part/templates/part/import_wizard/match_fields.html:20
+#: templates/patterns/wizard/match_fields.html:19
+msgid "Duplicate selections found, see below. Fix them then retry submitting."
+msgstr ""
+
+#: part/templates/part/import_wizard/ajax_match_fields.html:28
+#: part/templates/part/import_wizard/match_fields.html:35
+#: templates/patterns/wizard/match_fields.html:34
+msgid "File Fields"
+msgstr ""
+
+#: part/templates/part/import_wizard/ajax_match_fields.html:35
+#: part/templates/part/import_wizard/match_fields.html:42
+#: templates/patterns/wizard/match_fields.html:41
+msgid "Remove column"
+msgstr ""
+
+#: part/templates/part/import_wizard/ajax_match_fields.html:53
+#: part/templates/part/import_wizard/match_fields.html:60
+#: templates/patterns/wizard/match_fields.html:59
+msgid "Duplicate selection"
+msgstr ""
+
#: part/templates/part/import_wizard/ajax_part_upload.html:29
#: part/templates/part/import_wizard/part_upload.html:53
msgid "Unsuffitient privileges."
@@ -4819,7 +4867,7 @@ msgid "Show pricing information"
msgstr ""
#: part/templates/part/part_base.html:56
-#: stock/templates/stock/item_base.html:110
+#: stock/templates/stock/item_base.html:112
#: stock/templates/stock/location.html:44
msgid "Stock actions"
msgstr ""
@@ -4912,7 +4960,7 @@ msgstr ""
msgid "Allocated to Orders"
msgstr ""
-#: part/templates/part/part_base.html:239 templates/js/translated/bom.js:690
+#: part/templates/part/part_base.html:239 templates/js/translated/bom.js:903
msgid "Can Build"
msgstr ""
@@ -4930,7 +4978,7 @@ msgid "Latest Serial Number"
msgstr ""
#: part/templates/part/part_base.html:328
-#: stock/templates/stock/item_base.html:166
+#: stock/templates/stock/item_base.html:168
msgid "Search for serial number"
msgstr ""
@@ -4969,7 +5017,7 @@ msgid "Total Cost"
msgstr ""
#: part/templates/part/part_pricing.html:40 part/templates/part/prices.html:40
-#: templates/js/translated/bom.js:644
+#: templates/js/translated/bom.js:857
msgid "No supplier pricing available"
msgstr ""
@@ -5003,20 +5051,20 @@ msgstr ""
msgid "No pricing information is available for this part."
msgstr ""
-#: part/templates/part/part_sidebar.html:11
+#: part/templates/part/part_sidebar.html:12
msgid "Variants"
msgstr ""
-#: part/templates/part/part_sidebar.html:25
+#: part/templates/part/part_sidebar.html:26
msgid "Used In"
msgstr ""
-#: part/templates/part/part_sidebar.html:31
+#: part/templates/part/part_sidebar.html:34
#: stock/templates/stock/stock_sidebar.html:8
msgid "Allocations"
msgstr ""
-#: part/templates/part/part_sidebar.html:45
+#: part/templates/part/part_sidebar.html:48
msgid "Test Templates"
msgstr ""
@@ -5089,7 +5137,7 @@ msgstr ""
msgid "Calculation parameters"
msgstr ""
-#: part/templates/part/prices.html:155 templates/js/translated/bom.js:638
+#: part/templates/part/prices.html:155 templates/js/translated/bom.js:851
msgid "Supplier Cost"
msgstr ""
@@ -5111,7 +5159,7 @@ msgstr ""
msgid "Internal Cost"
msgstr ""
-#: part/templates/part/prices.html:215 part/views.py:1699
+#: part/templates/part/prices.html:215 part/views.py:1390
msgid "Add Internal Price Break"
msgstr ""
@@ -5131,7 +5179,7 @@ msgstr ""
msgid "Set category for the following parts"
msgstr ""
-#: part/templates/part/stock_count.html:7 templates/js/translated/bom.js:600
+#: part/templates/part/stock_count.html:7 templates/js/translated/bom.js:813
#: templates/js/translated/part.js:497 templates/js/translated/part.js:1122
#: templates/js/translated/part.js:1309
msgid "No Stock"
@@ -5141,6 +5189,43 @@ msgstr ""
msgid "Low Stock"
msgstr ""
+#: part/templates/part/upload_bom.html:8
+msgid "Return to BOM"
+msgstr ""
+
+#: part/templates/part/upload_bom.html:13
+msgid "Upload Bill of Materials"
+msgstr ""
+
+#: part/templates/part/upload_bom.html:19
+msgid "BOM upload requirements"
+msgstr ""
+
+#: part/templates/part/upload_bom.html:23
+#: part/templates/part/upload_bom.html:90
+msgid "Upload BOM File"
+msgstr ""
+
+#: part/templates/part/upload_bom.html:29
+msgid "Submit BOM Data"
+msgstr ""
+
+#: part/templates/part/upload_bom.html:37
+msgid "Requirements for BOM upload"
+msgstr ""
+
+#: part/templates/part/upload_bom.html:39
+msgid "The BOM file must contain the required named columns as provided in the "
+msgstr ""
+
+#: part/templates/part/upload_bom.html:39
+msgid "BOM Upload Template"
+msgstr ""
+
+#: part/templates/part/upload_bom.html:40
+msgid "Each part must already exist in the database"
+msgstr ""
+
#: part/templates/part/variant_part.html:9
msgid "Create new part variant"
msgstr ""
@@ -5154,104 +5239,96 @@ msgstr ""
msgid "Unknown database"
msgstr ""
-#: part/views.py:93
+#: part/views.py:90
msgid "Set Part Category"
msgstr ""
-#: part/views.py:143
+#: part/views.py:140
#, python-brace-format
msgid "Set category for {n} parts"
msgstr ""
-#: part/views.py:215
+#: part/views.py:212
msgid "Match References"
msgstr ""
-#: part/views.py:511
+#: part/views.py:509
msgid "None"
msgstr ""
-#: part/views.py:570
+#: part/views.py:568
msgid "Part QR Code"
msgstr ""
-#: part/views.py:672
+#: part/views.py:670
msgid "Select Part Image"
msgstr ""
-#: part/views.py:698
+#: part/views.py:696
msgid "Updated part image"
msgstr ""
-#: part/views.py:701
+#: part/views.py:699
msgid "Part image not found"
msgstr ""
-#: part/views.py:775
-msgid "Match Parts"
-msgstr ""
-
-#: part/views.py:1110
-msgid "Export Bill of Materials"
-msgstr ""
-
-#: part/views.py:1159
+#: part/views.py:850
msgid "Confirm Part Deletion"
msgstr ""
-#: part/views.py:1166
+#: part/views.py:857
msgid "Part was deleted"
msgstr ""
-#: part/views.py:1175
+#: part/views.py:866
msgid "Part Pricing"
msgstr ""
-#: part/views.py:1324
+#: part/views.py:1015
msgid "Create Part Parameter Template"
msgstr ""
-#: part/views.py:1334
+#: part/views.py:1025
msgid "Edit Part Parameter Template"
msgstr ""
-#: part/views.py:1341
+#: part/views.py:1032
msgid "Delete Part Parameter Template"
msgstr ""
-#: part/views.py:1400 templates/js/translated/part.js:315
+#: part/views.py:1091 templates/js/translated/part.js:315
msgid "Edit Part Category"
msgstr ""
-#: part/views.py:1438
+#: part/views.py:1129
msgid "Delete Part Category"
msgstr ""
-#: part/views.py:1444
+#: part/views.py:1135
msgid "Part category was deleted"
msgstr ""
-#: part/views.py:1453
+#: part/views.py:1144
msgid "Create Category Parameter Template"
msgstr ""
-#: part/views.py:1554
+#: part/views.py:1245
msgid "Edit Category Parameter Template"
msgstr ""
-#: part/views.py:1610
+#: part/views.py:1301
msgid "Delete Category Parameter Template"
msgstr ""
-#: part/views.py:1632
+#: part/views.py:1323
msgid "Added new price break"
msgstr ""
-#: part/views.py:1708
+#: part/views.py:1399
msgid "Edit Internal Price Break"
msgstr ""
-#: part/views.py:1716
+#: part/views.py:1407
msgid "Delete Internal Price Break"
msgstr ""
@@ -5453,12 +5530,12 @@ msgid "Stock Item Test Report"
msgstr ""
#: report/templates/report/inventree_test_report_base.html:79
-#: stock/models.py:519 stock/templates/stock/item_base.html:156
-#: templates/js/translated/build.js:293 templates/js/translated/build.js:697
-#: templates/js/translated/build.js:1073
+#: stock/models.py:519 stock/templates/stock/item_base.html:158
+#: templates/js/translated/build.js:373 templates/js/translated/build.js:521
+#: templates/js/translated/build.js:919 templates/js/translated/build.js:1295
#: 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:423
+#: templates/js/translated/order.js:2034 templates/js/translated/stock.js:424
msgid "Serial Number"
msgstr ""
@@ -5479,7 +5556,7 @@ msgstr ""
#: report/templates/report/inventree_test_report_base.html:97
#: templates/InvenTree/settings/plugin.html:50
#: templates/InvenTree/settings/plugin_settings.html:38
-#: templates/js/translated/order.js:849 templates/js/translated/stock.js:2525
+#: templates/js/translated/order.js:849 templates/js/translated/stock.js:2649
msgid "Date"
msgstr ""
@@ -5497,71 +5574,67 @@ msgid "Installed Items"
msgstr ""
#: report/templates/report/inventree_test_report_base.html:137
-#: templates/js/translated/stock.js:586 templates/js/translated/stock.js:756
-#: templates/js/translated/stock.js:2785
+#: templates/js/translated/stock.js:587 templates/js/translated/stock.js:757
+#: templates/js/translated/stock.js:2909
msgid "Serial"
msgstr ""
-#: stock/api.py:476
+#: stock/api.py:501
msgid "Quantity is required"
msgstr ""
-#: stock/api.py:483
+#: stock/api.py:508
msgid "Valid part must be supplied"
msgstr ""
-#: stock/forms.py:77 stock/forms.py:251 stock/models.py:576
-#: stock/templates/stock/item_base.html:193
-#: templates/js/translated/stock.js:1709
+#: stock/api.py:535
+msgid "Serial numbers cannot be supplied for a non-trackable part"
+msgstr ""
+
+#: stock/forms.py:74 stock/forms.py:198 stock/models.py:576
+#: stock/templates/stock/item_base.html:195
+#: templates/js/translated/stock.js:1833
msgid "Expiry Date"
msgstr ""
-#: stock/forms.py:78 stock/forms.py:252
+#: stock/forms.py:75 stock/forms.py:199
msgid "Expiration date for this stock item"
msgstr ""
-#: stock/forms.py:81
+#: stock/forms.py:78
msgid "Enter unique serial numbers (or leave blank)"
msgstr ""
-#: stock/forms.py:136
+#: stock/forms.py:133
msgid "Destination for serialized stock (by default, will remain in current location)"
msgstr ""
-#: stock/forms.py:138
+#: stock/forms.py:135
msgid "Serial numbers"
msgstr ""
-#: stock/forms.py:138
+#: stock/forms.py:135
msgid "Unique serial numbers (must match quantity)"
msgstr ""
-#: stock/forms.py:140 stock/forms.py:224
+#: stock/forms.py:137 stock/forms.py:171
msgid "Add transaction note (optional)"
msgstr ""
-#: stock/forms.py:180
-msgid "Stock item to install"
-msgstr ""
-
-#: stock/forms.py:210
-msgid "Must not exceed available quantity"
-msgstr ""
-
-#: stock/forms.py:222
+#: stock/forms.py:169
msgid "Destination location for uninstalled items"
msgstr ""
-#: stock/forms.py:226
+#: stock/forms.py:173
msgid "Confirm uninstall"
msgstr ""
-#: stock/forms.py:226
+#: stock/forms.py:173
msgid "Confirm removal of installed stock items"
msgstr ""
#: stock/models.py:62 stock/models.py:613
-#: stock/templates/stock/item_base.html:416
+#: stock/templates/stock/item_base.html:418
msgid "Owner"
msgstr ""
@@ -5623,7 +5696,7 @@ msgstr ""
msgid "Packaging this stock item is stored in"
msgstr ""
-#: stock/models.py:502 stock/templates/stock/item_base.html:298
+#: stock/models.py:502 stock/templates/stock/item_base.html:300
msgid "Installed In"
msgstr ""
@@ -5733,7 +5806,7 @@ msgstr ""
msgid "Serialized stock cannot be merged"
msgstr ""
-#: stock/models.py:1214 stock/serializers.py:775
+#: stock/models.py:1214 stock/serializers.py:832
msgid "Duplicate stock items"
msgstr ""
@@ -5769,7 +5842,7 @@ msgstr ""
msgid "Test name"
msgstr ""
-#: stock/models.py:1983 templates/js/translated/table_filters.js:271
+#: stock/models.py:1983
msgid "Test result"
msgstr ""
@@ -5806,7 +5879,7 @@ msgstr ""
msgid "Enter serial numbers for new items"
msgstr ""
-#: stock/serializers.py:326 stock/serializers.py:732 stock/serializers.py:973
+#: stock/serializers.py:326 stock/serializers.py:789 stock/serializers.py:1030
msgid "Destination stock location"
msgstr ""
@@ -5818,63 +5891,79 @@ msgstr ""
msgid "Serial numbers cannot be assigned to this part"
msgstr ""
-#: stock/serializers.py:589
+#: stock/serializers.py:363 stock/views.py:1108
+msgid "Serial numbers already exist"
+msgstr ""
+
+#: stock/serializers.py:405
+msgid "Select stock item to install"
+msgstr ""
+
+#: stock/serializers.py:421
+msgid "Stock item is unavailable"
+msgstr ""
+
+#: stock/serializers.py:428
+msgid "Selected part is not in the Bill of Materials"
+msgstr ""
+
+#: stock/serializers.py:646
msgid "Part must be salable"
msgstr ""
-#: stock/serializers.py:593
+#: stock/serializers.py:650
msgid "Item is allocated to a sales order"
msgstr ""
-#: stock/serializers.py:597
+#: stock/serializers.py:654
msgid "Item is allocated to a build order"
msgstr ""
-#: stock/serializers.py:627
+#: stock/serializers.py:684
msgid "Customer to assign stock items"
msgstr ""
-#: stock/serializers.py:633
+#: stock/serializers.py:690
msgid "Selected company is not a customer"
msgstr ""
-#: stock/serializers.py:641
+#: stock/serializers.py:698
msgid "Stock assignment notes"
msgstr ""
-#: stock/serializers.py:651 stock/serializers.py:881
+#: stock/serializers.py:708 stock/serializers.py:938
msgid "A list of stock items must be provided"
msgstr ""
-#: stock/serializers.py:739
+#: stock/serializers.py:796
msgid "Stock merging notes"
msgstr ""
-#: stock/serializers.py:744
+#: stock/serializers.py:801
msgid "Allow mismatched suppliers"
msgstr ""
-#: stock/serializers.py:745
+#: stock/serializers.py:802
msgid "Allow stock items with different supplier parts to be merged"
msgstr ""
-#: stock/serializers.py:750
+#: stock/serializers.py:807
msgid "Allow mismatched status"
msgstr ""
-#: stock/serializers.py:751
+#: stock/serializers.py:808
msgid "Allow stock items with different status codes to be merged"
msgstr ""
-#: stock/serializers.py:761
+#: stock/serializers.py:818
msgid "At least two stock items must be provided"
msgstr ""
-#: stock/serializers.py:843
+#: stock/serializers.py:900
msgid "StockItem primary key value"
msgstr ""
-#: stock/serializers.py:871
+#: stock/serializers.py:928
msgid "Stock transaction notes"
msgstr ""
@@ -5919,22 +6008,14 @@ msgstr ""
msgid "Installed Stock Items"
msgstr ""
-#: stock/templates/stock/item.html:154 stock/views.py:482
+#: stock/templates/stock/item.html:154 templates/js/translated/stock.js:3018
msgid "Install Stock Item"
msgstr ""
-#: stock/templates/stock/item.html:309 stock/templates/stock/item.html:334
+#: stock/templates/stock/item.html:304 templates/js/translated/stock.js:1480
msgid "Add Test Result"
msgstr ""
-#: stock/templates/stock/item.html:354
-msgid "Edit Test Result"
-msgstr ""
-
-#: stock/templates/stock/item.html:368
-msgid "Delete Test Result"
-msgstr ""
-
#: stock/templates/stock/item_base.html:42
#: templates/js/translated/barcode.js:330
#: templates/js/translated/barcode.js:335
@@ -5995,129 +6076,129 @@ msgstr ""
msgid "Uninstall"
msgstr ""
-#: stock/templates/stock/item_base.html:101
+#: stock/templates/stock/item_base.html:102
msgid "Install stock item"
msgstr ""
-#: stock/templates/stock/item_base.html:101
+#: stock/templates/stock/item_base.html:102
msgid "Install"
msgstr ""
-#: stock/templates/stock/item_base.html:115
+#: stock/templates/stock/item_base.html:117
msgid "Convert to variant"
msgstr ""
-#: stock/templates/stock/item_base.html:118
+#: stock/templates/stock/item_base.html:120
msgid "Duplicate stock item"
msgstr ""
-#: stock/templates/stock/item_base.html:120
+#: stock/templates/stock/item_base.html:122
msgid "Edit stock item"
msgstr ""
-#: stock/templates/stock/item_base.html:123
+#: stock/templates/stock/item_base.html:125
msgid "Delete stock item"
msgstr ""
-#: stock/templates/stock/item_base.html:161
+#: stock/templates/stock/item_base.html:163
msgid "previous page"
msgstr ""
-#: stock/templates/stock/item_base.html:161
+#: stock/templates/stock/item_base.html:163
msgid "Navigate to previous serial number"
msgstr ""
-#: stock/templates/stock/item_base.html:170
+#: stock/templates/stock/item_base.html:172
msgid "next page"
msgstr ""
-#: stock/templates/stock/item_base.html:170
+#: stock/templates/stock/item_base.html:172
msgid "Navigate to next serial number"
msgstr ""
-#: stock/templates/stock/item_base.html:197
+#: stock/templates/stock/item_base.html:199
#, python-format
msgid "This StockItem expired on %(item.expiry_date)s"
msgstr ""
-#: stock/templates/stock/item_base.html:197
+#: stock/templates/stock/item_base.html:199
#: templates/js/translated/table_filters.js:252
msgid "Expired"
msgstr ""
-#: stock/templates/stock/item_base.html:199
+#: stock/templates/stock/item_base.html:201
#, python-format
msgid "This StockItem expires on %(item.expiry_date)s"
msgstr ""
-#: stock/templates/stock/item_base.html:199
+#: stock/templates/stock/item_base.html:201
#: templates/js/translated/table_filters.js:258
msgid "Stale"
msgstr ""
-#: stock/templates/stock/item_base.html:206
-#: templates/js/translated/stock.js:1722
+#: stock/templates/stock/item_base.html:208
+#: templates/js/translated/stock.js:1846
msgid "Last Updated"
msgstr ""
-#: stock/templates/stock/item_base.html:211
+#: stock/templates/stock/item_base.html:213
msgid "Last Stocktake"
msgstr ""
-#: stock/templates/stock/item_base.html:215
+#: stock/templates/stock/item_base.html:217
msgid "No stocktake performed"
msgstr ""
-#: stock/templates/stock/item_base.html:233
+#: stock/templates/stock/item_base.html:235
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:240
+#: stock/templates/stock/item_base.html:242
msgid "This stock item is in production and cannot be edited."
msgstr ""
-#: stock/templates/stock/item_base.html:241
+#: stock/templates/stock/item_base.html:243
msgid "Edit the stock item from the build view."
msgstr ""
-#: stock/templates/stock/item_base.html:254
+#: stock/templates/stock/item_base.html:256
msgid "This stock item has not passed all required tests"
msgstr ""
-#: stock/templates/stock/item_base.html:262
+#: stock/templates/stock/item_base.html:264
msgid "This stock item is allocated to Sales Order"
msgstr ""
-#: stock/templates/stock/item_base.html:270
+#: stock/templates/stock/item_base.html:272
msgid "This stock item is allocated to Build Order"
msgstr ""
-#: stock/templates/stock/item_base.html:276
+#: stock/templates/stock/item_base.html:278
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:317
-#: templates/js/translated/build.js:1095
+#: stock/templates/stock/item_base.html:319
+#: templates/js/translated/build.js:1317
msgid "No location set"
msgstr ""
-#: stock/templates/stock/item_base.html:324
+#: stock/templates/stock/item_base.html:326
msgid "Barcode Identifier"
msgstr ""
-#: stock/templates/stock/item_base.html:366
+#: stock/templates/stock/item_base.html:368
msgid "Parent Item"
msgstr ""
-#: stock/templates/stock/item_base.html:384
+#: stock/templates/stock/item_base.html:386
msgid "No manufacturer set"
msgstr ""
-#: stock/templates/stock/item_base.html:409
+#: stock/templates/stock/item_base.html:411
msgid "Tests"
msgstr ""
-#: stock/templates/stock/item_base.html:499
+#: stock/templates/stock/item_base.html:492
msgid "Edit Stock Status"
msgstr ""
@@ -6130,39 +6211,6 @@ msgstr ""
msgid "This will remove %(qty)s units of %(full_name)s from stock."
msgstr ""
-#: stock/templates/stock/item_install.html:8
-msgid "Install another Stock Item into this item."
-msgstr ""
-
-#: stock/templates/stock/item_install.html:11
-#: stock/templates/stock/item_install.html:24
-msgid "Stock items can only be installed if they meet the following criteria"
-msgstr ""
-
-#: stock/templates/stock/item_install.html:14
-msgid "The Stock Item links to a Part which is in the BOM for this Stock Item"
-msgstr ""
-
-#: stock/templates/stock/item_install.html:15
-msgid "The Stock Item is currently in stock"
-msgstr ""
-
-#: stock/templates/stock/item_install.html:16
-msgid "The Stock Item is serialized and does not belong to another item"
-msgstr ""
-
-#: stock/templates/stock/item_install.html:21
-msgid "Install this Stock Item in another stock item."
-msgstr ""
-
-#: stock/templates/stock/item_install.html:27
-msgid "The part associated to this Stock Item belongs to another part's BOM"
-msgstr ""
-
-#: stock/templates/stock/item_install.html:28
-msgid "This Stock Item is serialized and does not belong to another item"
-msgstr ""
-
#: stock/templates/stock/item_serialize.html:5
msgid "Create serialized items from this stock item."
msgstr ""
@@ -6247,7 +6295,7 @@ msgstr ""
msgid "The following stock items will be uninstalled"
msgstr ""
-#: stock/templates/stock/stockitem_convert.html:7 stock/views.py:879
+#: stock/templates/stock/stockitem_convert.html:7 stock/views.py:730
msgid "Convert Stock Item"
msgstr ""
@@ -6268,11 +6316,11 @@ msgstr ""
msgid "Are you sure you want to delete this stock tracking entry?"
msgstr ""
-#: stock/views.py:162 templates/js/translated/stock.js:139
+#: stock/views.py:162 templates/js/translated/stock.js:140
msgid "Edit Stock Location"
msgstr ""
-#: stock/views.py:269 stock/views.py:858 stock/views.py:984 stock/views.py:1266
+#: stock/views.py:269 stock/views.py:709 stock/views.py:835 stock/views.py:1117
msgid "Owner is required (ownership control is enabled)"
msgstr ""
@@ -6300,59 +6348,63 @@ msgstr ""
msgid "Confirm test data deletion"
msgstr ""
+#: stock/views.py:352
+msgid "Check the confirmation box"
+msgstr ""
+
#: stock/views.py:456
msgid "Stock Item QR Code"
msgstr ""
-#: stock/views.py:630
+#: stock/views.py:481
msgid "Uninstall Stock Items"
msgstr ""
-#: stock/views.py:727 templates/js/translated/stock.js:1074
+#: stock/views.py:578 templates/js/translated/stock.js:1075
msgid "Confirm stock adjustment"
msgstr ""
-#: stock/views.py:738
+#: stock/views.py:589
msgid "Uninstalled stock items"
msgstr ""
-#: stock/views.py:760 templates/js/translated/stock.js:332
+#: stock/views.py:611 templates/js/translated/stock.js:333
msgid "Edit Stock Item"
msgstr ""
-#: stock/views.py:910
+#: stock/views.py:761
msgid "Create new Stock Location"
msgstr ""
-#: stock/views.py:1011
+#: stock/views.py:862
msgid "Create new Stock Item"
msgstr ""
-#: stock/views.py:1153 templates/js/translated/stock.js:312
+#: stock/views.py:1004 templates/js/translated/stock.js:313
msgid "Duplicate Stock Item"
msgstr ""
-#: stock/views.py:1235
+#: stock/views.py:1086
msgid "Quantity cannot be negative"
msgstr ""
-#: stock/views.py:1335
+#: stock/views.py:1186
msgid "Delete Stock Location"
msgstr ""
-#: stock/views.py:1348
+#: stock/views.py:1199
msgid "Delete Stock Item"
msgstr ""
-#: stock/views.py:1359
+#: stock/views.py:1210
msgid "Delete Stock Tracking Entry"
msgstr ""
-#: stock/views.py:1366
+#: stock/views.py:1217
msgid "Edit Stock Tracking Entry"
msgstr ""
-#: stock/views.py:1375
+#: stock/views.py:1226
msgid "Add Stock Tracking Entry"
msgstr ""
@@ -6527,15 +6579,15 @@ msgstr ""
msgid "Part Settings"
msgstr ""
-#: templates/InvenTree/settings/part.html:43
+#: templates/InvenTree/settings/part.html:44
msgid "Part Import"
msgstr ""
-#: templates/InvenTree/settings/part.html:47
+#: templates/InvenTree/settings/part.html:48
msgid "Import Part"
msgstr ""
-#: templates/InvenTree/settings/part.html:61
+#: templates/InvenTree/settings/part.html:62
msgid "Part Parameter Templates"
msgstr ""
@@ -6663,45 +6715,45 @@ msgstr ""
msgid "Report Settings"
msgstr ""
-#: templates/InvenTree/settings/setting.html:30
+#: templates/InvenTree/settings/setting.html:33
msgid "No value set"
msgstr ""
-#: templates/InvenTree/settings/setting.html:41
+#: templates/InvenTree/settings/setting.html:38
msgid "Edit setting"
msgstr ""
-#: templates/InvenTree/settings/settings.html:78
+#: templates/InvenTree/settings/settings.html:115
msgid "Edit Plugin Setting"
msgstr ""
-#: templates/InvenTree/settings/settings.html:80
+#: templates/InvenTree/settings/settings.html:117
msgid "Edit Global Setting"
msgstr ""
-#: templates/InvenTree/settings/settings.html:82
+#: templates/InvenTree/settings/settings.html:119
msgid "Edit User Setting"
msgstr ""
-#: templates/InvenTree/settings/settings.html:171
+#: templates/InvenTree/settings/settings.html:208
msgid "No category parameter templates found"
msgstr ""
-#: templates/InvenTree/settings/settings.html:193
-#: templates/InvenTree/settings/settings.html:292
+#: templates/InvenTree/settings/settings.html:230
+#: templates/InvenTree/settings/settings.html:329
msgid "Edit Template"
msgstr ""
-#: templates/InvenTree/settings/settings.html:194
-#: templates/InvenTree/settings/settings.html:293
+#: templates/InvenTree/settings/settings.html:231
+#: templates/InvenTree/settings/settings.html:330
msgid "Delete Template"
msgstr ""
-#: templates/InvenTree/settings/settings.html:272
+#: templates/InvenTree/settings/settings.html:309
msgid "No part parameter templates found"
msgstr ""
-#: templates/InvenTree/settings/settings.html:276
+#: templates/InvenTree/settings/settings.html:313
msgid "ID"
msgstr ""
@@ -6996,10 +7048,11 @@ msgid "InvenTree Version Information"
msgstr ""
#: templates/about.html:11 templates/about.html:105
-#: templates/js/translated/bom.js:407 templates/js/translated/modals.js:53
-#: templates/js/translated/modals.js:584 templates/js/translated/modals.js:678
-#: templates/js/translated/modals.js:983 templates/modals.html:15
-#: templates/modals.html:27 templates/modals.html:39 templates/modals.html:50
+#: templates/js/translated/bom.js:132 templates/js/translated/bom.js:620
+#: templates/js/translated/modals.js:53 templates/js/translated/modals.js:584
+#: templates/js/translated/modals.js:678 templates/js/translated/modals.js:986
+#: templates/modals.html:15 templates/modals.html:27 templates/modals.html:39
+#: templates/modals.html:50
msgid "Close"
msgstr ""
@@ -7275,14 +7328,14 @@ msgid "The following parts are low on required stock"
msgstr ""
#: templates/email/build_order_required_stock.html:18
-#: templates/js/translated/bom.js:1117
+#: templates/js/translated/bom.js:1335
msgid "Required Quantity"
msgstr ""
#: templates/email/build_order_required_stock.html:19
#: templates/email/low_stock_notification.html:18
-#: templates/js/translated/bom.js:591 templates/js/translated/build.js:1189
-#: templates/js/translated/build.js:1810
+#: templates/js/translated/bom.js:804 templates/js/translated/build.js:1411
+#: templates/js/translated/build.js:2048
#: templates/js/translated/table_filters.js:178
msgid "Available"
msgstr ""
@@ -7325,11 +7378,11 @@ msgstr ""
msgid "Remote image must not exceed maximum allowable file size"
msgstr ""
-#: templates/js/translated/api.js:185 templates/js/translated/modals.js:1053
+#: templates/js/translated/api.js:185 templates/js/translated/modals.js:1056
msgid "No Response"
msgstr ""
-#: templates/js/translated/api.js:186 templates/js/translated/modals.js:1054
+#: templates/js/translated/api.js:186 templates/js/translated/modals.js:1057
msgid "No response from the InvenTree server"
msgstr ""
@@ -7341,27 +7394,27 @@ msgstr ""
msgid "API request returned error code 400"
msgstr ""
-#: templates/js/translated/api.js:197 templates/js/translated/modals.js:1063
+#: templates/js/translated/api.js:197 templates/js/translated/modals.js:1066
msgid "Error 401: Not Authenticated"
msgstr ""
-#: templates/js/translated/api.js:198 templates/js/translated/modals.js:1064
+#: templates/js/translated/api.js:198 templates/js/translated/modals.js:1067
msgid "Authentication credentials not supplied"
msgstr ""
-#: templates/js/translated/api.js:202 templates/js/translated/modals.js:1068
+#: templates/js/translated/api.js:202 templates/js/translated/modals.js:1071
msgid "Error 403: Permission Denied"
msgstr ""
-#: templates/js/translated/api.js:203 templates/js/translated/modals.js:1069
+#: templates/js/translated/api.js:203 templates/js/translated/modals.js:1072
msgid "You do not have the required permissions to access this function"
msgstr ""
-#: templates/js/translated/api.js:207 templates/js/translated/modals.js:1073
+#: templates/js/translated/api.js:207 templates/js/translated/modals.js:1076
msgid "Error 404: Resource Not Found"
msgstr ""
-#: templates/js/translated/api.js:208 templates/js/translated/modals.js:1074
+#: templates/js/translated/api.js:208 templates/js/translated/modals.js:1077
msgid "The requested resource could not be located on the server"
msgstr ""
@@ -7373,11 +7426,11 @@ msgstr ""
msgid "HTTP method not allowed at URL"
msgstr ""
-#: templates/js/translated/api.js:217 templates/js/translated/modals.js:1078
+#: templates/js/translated/api.js:217 templates/js/translated/modals.js:1081
msgid "Error 408: Timeout"
msgstr ""
-#: templates/js/translated/api.js:218 templates/js/translated/modals.js:1079
+#: templates/js/translated/api.js:218 templates/js/translated/modals.js:1082
msgid "Connection timeout while requesting data from server"
msgstr ""
@@ -7446,7 +7499,7 @@ msgid "Unknown response from server"
msgstr ""
#: templates/js/translated/barcode.js:140
-#: templates/js/translated/modals.js:1043
+#: templates/js/translated/modals.js:1046
msgid "Invalid server response"
msgstr ""
@@ -7474,7 +7527,7 @@ msgstr ""
msgid "Unlink"
msgstr ""
-#: templates/js/translated/barcode.js:397 templates/js/translated/stock.js:1026
+#: templates/js/translated/barcode.js:397 templates/js/translated/stock.js:1027
msgid "Remove stock item"
msgstr ""
@@ -7516,327 +7569,369 @@ msgstr ""
msgid "Barcode does not match a valid location"
msgstr ""
-#: templates/js/translated/bom.js:36
+#: templates/js/translated/bom.js:75
+msgid "Display row data"
+msgstr ""
+
+#: templates/js/translated/bom.js:131
+msgid "Row Data"
+msgstr ""
+
+#: templates/js/translated/bom.js:249
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:518
+#: templates/js/translated/bom.js:252 templates/js/translated/bom.js:286
+#: templates/js/translated/order.js:369 templates/js/translated/stock.js:519
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:519
+#: templates/js/translated/bom.js:253 templates/js/translated/bom.js:287
+#: templates/js/translated/order.js:370 templates/js/translated/stock.js:520
msgid "Select file format"
msgstr ""
-#: templates/js/translated/bom.js:81
+#: templates/js/translated/bom.js:294
msgid "Cascading"
msgstr ""
-#: templates/js/translated/bom.js:82
+#: templates/js/translated/bom.js:295
msgid "Download cascading / multi-level BOM"
msgstr ""
-#: templates/js/translated/bom.js:87
+#: templates/js/translated/bom.js:300
msgid "Levels"
msgstr ""
-#: templates/js/translated/bom.js:88
+#: templates/js/translated/bom.js:301
msgid "Select maximum number of BOM levels to export (0 = all levels)"
msgstr ""
-#: templates/js/translated/bom.js:94
+#: templates/js/translated/bom.js:307
msgid "Include Parameter Data"
msgstr ""
-#: templates/js/translated/bom.js:95
+#: templates/js/translated/bom.js:308
msgid "Include part parameter data in exported BOM"
msgstr ""
-#: templates/js/translated/bom.js:100
+#: templates/js/translated/bom.js:313
msgid "Include Stock Data"
msgstr ""
-#: templates/js/translated/bom.js:101
+#: templates/js/translated/bom.js:314
msgid "Include part stock data in exported BOM"
msgstr ""
-#: templates/js/translated/bom.js:106
+#: templates/js/translated/bom.js:319
msgid "Include Manufacturer Data"
msgstr ""
-#: templates/js/translated/bom.js:107
+#: templates/js/translated/bom.js:320
msgid "Include part manufacturer data in exported BOM"
msgstr ""
-#: templates/js/translated/bom.js:112
+#: templates/js/translated/bom.js:325
msgid "Include Supplier Data"
msgstr ""
-#: templates/js/translated/bom.js:113
+#: templates/js/translated/bom.js:326
msgid "Include part supplier data in exported BOM"
msgstr ""
-#: templates/js/translated/bom.js:296
+#: templates/js/translated/bom.js:509
msgid "Remove substitute part"
msgstr ""
-#: templates/js/translated/bom.js:352
+#: templates/js/translated/bom.js:565
msgid "Select and add a new substitute part using the input below"
msgstr ""
-#: templates/js/translated/bom.js:363
+#: templates/js/translated/bom.js:576
msgid "Are you sure you wish to remove this substitute part link?"
msgstr ""
-#: templates/js/translated/bom.js:369
+#: templates/js/translated/bom.js:582
msgid "Remove Substitute Part"
msgstr ""
-#: templates/js/translated/bom.js:408
+#: templates/js/translated/bom.js:621
msgid "Add Substitute"
msgstr ""
-#: templates/js/translated/bom.js:409
+#: templates/js/translated/bom.js:622
msgid "Edit BOM Item Substitutes"
msgstr ""
-#: templates/js/translated/bom.js:528
+#: templates/js/translated/bom.js:741
msgid "Substitutes Available"
msgstr ""
-#: templates/js/translated/bom.js:532 templates/js/translated/build.js:1171
+#: templates/js/translated/bom.js:745 templates/js/translated/build.js:1393
msgid "Variant stock allowed"
msgstr ""
-#: templates/js/translated/bom.js:537
+#: templates/js/translated/bom.js:750
msgid "Open subassembly"
msgstr ""
-#: templates/js/translated/bom.js:609
+#: templates/js/translated/bom.js:822
msgid "Substitutes"
msgstr ""
-#: templates/js/translated/bom.js:624
+#: templates/js/translated/bom.js:837
msgid "Purchase Price Range"
msgstr ""
-#: templates/js/translated/bom.js:631
+#: templates/js/translated/bom.js:844
msgid "Purchase Price Average"
msgstr ""
-#: templates/js/translated/bom.js:680 templates/js/translated/bom.js:769
+#: templates/js/translated/bom.js:893 templates/js/translated/bom.js:982
msgid "View BOM"
msgstr ""
-#: templates/js/translated/bom.js:740
+#: templates/js/translated/bom.js:953
msgid "Validate BOM Item"
msgstr ""
-#: templates/js/translated/bom.js:742
+#: templates/js/translated/bom.js:955
msgid "This line has been validated"
msgstr ""
-#: templates/js/translated/bom.js:744
+#: templates/js/translated/bom.js:957
msgid "Edit substitute parts"
msgstr ""
-#: templates/js/translated/bom.js:746 templates/js/translated/bom.js:920
+#: templates/js/translated/bom.js:959 templates/js/translated/bom.js:1138
msgid "Edit BOM Item"
msgstr ""
-#: templates/js/translated/bom.js:748 templates/js/translated/bom.js:903
+#: templates/js/translated/bom.js:961 templates/js/translated/bom.js:1121
msgid "Delete BOM Item"
msgstr ""
-#: templates/js/translated/bom.js:842 templates/js/translated/build.js:915
+#: templates/js/translated/bom.js:1060 templates/js/translated/build.js:1137
msgid "No BOM items found"
msgstr ""
-#: templates/js/translated/bom.js:898
+#: templates/js/translated/bom.js:1116
msgid "Are you sure you want to delete this BOM item?"
msgstr ""
-#: templates/js/translated/bom.js:1100 templates/js/translated/build.js:1155
+#: templates/js/translated/bom.js:1318 templates/js/translated/build.js:1377
msgid "Required Part"
msgstr ""
-#: templates/js/translated/bom.js:1122
+#: templates/js/translated/bom.js:1340
msgid "Inherited from parent BOM"
msgstr ""
-#: templates/js/translated/build.js:84
+#: templates/js/translated/build.js:85
msgid "Edit Build Order"
msgstr ""
-#: templates/js/translated/build.js:118
+#: templates/js/translated/build.js:119
msgid "Create Build Order"
msgstr ""
-#: templates/js/translated/build.js:139
+#: templates/js/translated/build.js:140
msgid "Build order is ready to be completed"
msgstr ""
-#: templates/js/translated/build.js:144
+#: templates/js/translated/build.js:145
msgid "Build Order is incomplete"
msgstr ""
-#: templates/js/translated/build.js:172
+#: templates/js/translated/build.js:173
msgid "Complete Build Order"
msgstr ""
-#: templates/js/translated/build.js:193
+#: templates/js/translated/build.js:214 templates/js/translated/stock.js:93
+#: templates/js/translated/stock.js:182
+msgid "Next available serial number"
+msgstr ""
+
+#: templates/js/translated/build.js:216 templates/js/translated/stock.js:95
+#: templates/js/translated/stock.js:184
+msgid "Latest serial number"
+msgstr ""
+
+#: templates/js/translated/build.js:225
+msgid "The Bill of Materials contains trackable parts"
+msgstr ""
+
+#: templates/js/translated/build.js:226
+msgid "Build outputs must be generated individually"
+msgstr ""
+
+#: templates/js/translated/build.js:234
+msgid "Trackable parts can have serial numbers specified"
+msgstr ""
+
+#: templates/js/translated/build.js:235
+msgid "Enter serial numbers to generate multiple single build outputs"
+msgstr ""
+
+#: templates/js/translated/build.js:242
+msgid "Create Build Output"
+msgstr ""
+
+#: templates/js/translated/build.js:273
msgid "Allocate stock items to this build output"
msgstr ""
-#: templates/js/translated/build.js:204
+#: templates/js/translated/build.js:284
msgid "Unallocate stock from build output"
msgstr ""
-#: templates/js/translated/build.js:213
+#: templates/js/translated/build.js:293
msgid "Complete build output"
msgstr ""
-#: templates/js/translated/build.js:221
+#: templates/js/translated/build.js:301
msgid "Delete build output"
msgstr ""
-#: templates/js/translated/build.js:244
+#: templates/js/translated/build.js:324
msgid "Are you sure you wish to unallocate stock items from this build?"
msgstr ""
-#: templates/js/translated/build.js:262
+#: templates/js/translated/build.js:342
msgid "Unallocate Stock Items"
msgstr ""
-#: templates/js/translated/build.js:280
+#: templates/js/translated/build.js:360 templates/js/translated/build.js:508
msgid "Select Build Outputs"
msgstr ""
-#: templates/js/translated/build.js:281
+#: templates/js/translated/build.js:361 templates/js/translated/build.js:509
msgid "At least one build output must be selected"
msgstr ""
-#: templates/js/translated/build.js:335
+#: templates/js/translated/build.js:415 templates/js/translated/build.js:563
msgid "Output"
msgstr ""
-#: templates/js/translated/build.js:351
+#: templates/js/translated/build.js:431
msgid "Complete Build Outputs"
msgstr ""
-#: templates/js/translated/build.js:446
+#: templates/js/translated/build.js:576
+msgid "Delete Build Outputs"
+msgstr ""
+
+#: templates/js/translated/build.js:665
msgid "No build order allocations found"
msgstr ""
-#: templates/js/translated/build.js:484 templates/js/translated/order.js:1848
+#: templates/js/translated/build.js:703 templates/js/translated/order.js:1848
msgid "Location not specified"
msgstr ""
-#: templates/js/translated/build.js:663
+#: templates/js/translated/build.js:885
msgid "No active build outputs found"
msgstr ""
-#: templates/js/translated/build.js:1112 templates/js/translated/build.js:1821
+#: templates/js/translated/build.js:1334 templates/js/translated/build.js:2059
#: templates/js/translated/order.js:1982
msgid "Edit stock allocation"
msgstr ""
-#: templates/js/translated/build.js:1114 templates/js/translated/build.js:1822
+#: templates/js/translated/build.js:1336 templates/js/translated/build.js:2060
#: templates/js/translated/order.js:1983
msgid "Delete stock allocation"
msgstr ""
-#: templates/js/translated/build.js:1132
+#: templates/js/translated/build.js:1354
msgid "Edit Allocation"
msgstr ""
-#: templates/js/translated/build.js:1142
+#: templates/js/translated/build.js:1364
msgid "Remove Allocation"
msgstr ""
-#: templates/js/translated/build.js:1167
+#: templates/js/translated/build.js:1389
msgid "Substitute parts available"
msgstr ""
-#: templates/js/translated/build.js:1184
+#: templates/js/translated/build.js:1406
msgid "Quantity Per"
msgstr ""
-#: templates/js/translated/build.js:1194 templates/js/translated/build.js:1420
-#: templates/js/translated/build.js:1817 templates/js/translated/order.js:2227
+#: templates/js/translated/build.js:1416 templates/js/translated/build.js:1656
+#: templates/js/translated/build.js:2055 templates/js/translated/order.js:2227
msgid "Allocated"
msgstr ""
-#: templates/js/translated/build.js:1250 templates/js/translated/order.js:2307
+#: templates/js/translated/build.js:1472 templates/js/translated/order.js:2307
msgid "Build stock"
msgstr ""
-#: templates/js/translated/build.js:1254 templates/stock_table.html:53
+#: templates/js/translated/build.js:1476 templates/stock_table.html:53
msgid "Order stock"
msgstr ""
-#: templates/js/translated/build.js:1257 templates/js/translated/order.js:2300
+#: templates/js/translated/build.js:1479 templates/js/translated/order.js:2300
msgid "Allocate stock"
msgstr ""
-#: templates/js/translated/build.js:1322 templates/js/translated/order.js:1499
+#: templates/js/translated/build.js:1558 templates/js/translated/order.js:1499
msgid "Specify stock allocation quantity"
msgstr ""
-#: templates/js/translated/build.js:1393 templates/js/translated/label.js:134
+#: templates/js/translated/build.js:1629 templates/js/translated/label.js:134
#: templates/js/translated/order.js:1550 templates/js/translated/report.js:225
msgid "Select Parts"
msgstr ""
-#: templates/js/translated/build.js:1394 templates/js/translated/order.js:1551
+#: templates/js/translated/build.js:1630 templates/js/translated/order.js:1551
msgid "You must select at least one part to allocate"
msgstr ""
-#: templates/js/translated/build.js:1408 templates/js/translated/order.js:1565
+#: templates/js/translated/build.js:1644 templates/js/translated/order.js:1565
msgid "Select source location (leave blank to take from all locations)"
msgstr ""
-#: templates/js/translated/build.js:1437 templates/js/translated/order.js:1600
+#: templates/js/translated/build.js:1673 templates/js/translated/order.js:1600
msgid "Confirm stock allocation"
msgstr ""
-#: templates/js/translated/build.js:1438
+#: templates/js/translated/build.js:1674
msgid "Allocate Stock Items to Build Order"
msgstr ""
-#: templates/js/translated/build.js:1449 templates/js/translated/order.js:1613
+#: templates/js/translated/build.js:1685 templates/js/translated/order.js:1613
msgid "No matching stock locations"
msgstr ""
-#: templates/js/translated/build.js:1519 templates/js/translated/order.js:1690
+#: templates/js/translated/build.js:1757 templates/js/translated/order.js:1690
msgid "No matching stock items"
msgstr ""
-#: templates/js/translated/build.js:1637
+#: templates/js/translated/build.js:1875
msgid "No builds matching query"
msgstr ""
-#: templates/js/translated/build.js:1654 templates/js/translated/part.js:1213
-#: templates/js/translated/part.js:1624 templates/js/translated/stock.js:1520
-#: templates/js/translated/stock.js:2479
+#: templates/js/translated/build.js:1892 templates/js/translated/part.js:1213
+#: templates/js/translated/part.js:1624 templates/js/translated/stock.js:1644
+#: templates/js/translated/stock.js:2603
msgid "Select"
msgstr ""
-#: templates/js/translated/build.js:1674
+#: templates/js/translated/build.js:1912
msgid "Build order is overdue"
msgstr ""
-#: templates/js/translated/build.js:1735 templates/js/translated/stock.js:2698
+#: templates/js/translated/build.js:1973 templates/js/translated/stock.js:2822
msgid "No user information"
msgstr ""
-#: templates/js/translated/build.js:1747
+#: templates/js/translated/build.js:1985
msgid "No information"
msgstr ""
-#: templates/js/translated/build.js:1798
+#: templates/js/translated/build.js:2036
msgid "No parts allocated for"
msgstr ""
@@ -7966,48 +8061,60 @@ msgstr ""
msgid "Create filter"
msgstr ""
-#: templates/js/translated/forms.js:350 templates/js/translated/forms.js:365
-#: templates/js/translated/forms.js:379 templates/js/translated/forms.js:393
+#: templates/js/translated/forms.js:351 templates/js/translated/forms.js:366
+#: templates/js/translated/forms.js:380 templates/js/translated/forms.js:394
msgid "Action Prohibited"
msgstr ""
-#: templates/js/translated/forms.js:352
+#: templates/js/translated/forms.js:353
msgid "Create operation not allowed"
msgstr ""
-#: templates/js/translated/forms.js:367
+#: templates/js/translated/forms.js:368
msgid "Update operation not allowed"
msgstr ""
-#: templates/js/translated/forms.js:381
+#: templates/js/translated/forms.js:382
msgid "Delete operation not allowed"
msgstr ""
-#: templates/js/translated/forms.js:395
+#: templates/js/translated/forms.js:396
msgid "View operation not allowed"
msgstr ""
-#: templates/js/translated/forms.js:680
+#: templates/js/translated/forms.js:681
msgid "Enter a valid number"
msgstr ""
-#: templates/js/translated/forms.js:1082 templates/modals.html:19
+#: templates/js/translated/forms.js:1129 templates/modals.html:19
#: templates/modals.html:43
msgid "Form errors exist"
msgstr ""
-#: templates/js/translated/forms.js:1487
+#: templates/js/translated/forms.js:1558
msgid "No results found"
msgstr ""
-#: templates/js/translated/forms.js:1691
+#: templates/js/translated/forms.js:1768
msgid "Searching"
msgstr ""
-#: templates/js/translated/forms.js:1930
+#: templates/js/translated/forms.js:2013
msgid "Clear input"
msgstr ""
+#: templates/js/translated/forms.js:2479
+msgid "File Column"
+msgstr ""
+
+#: templates/js/translated/forms.js:2479
+msgid "Field Name"
+msgstr ""
+
+#: templates/js/translated/forms.js:2491
+msgid "Select Columns"
+msgstr ""
+
#: templates/js/translated/helpers.js:19
msgid "YES"
msgstr ""
@@ -8017,7 +8124,7 @@ msgid "NO"
msgstr ""
#: templates/js/translated/label.js:29 templates/js/translated/report.js:118
-#: templates/js/translated/stock.js:1050
+#: templates/js/translated/stock.js:1051
msgid "Select Stock Items"
msgstr ""
@@ -8072,7 +8179,7 @@ msgid "Cancel"
msgstr ""
#: templates/js/translated/modals.js:77 templates/js/translated/modals.js:119
-#: templates/js/translated/modals.js:677 templates/js/translated/modals.js:982
+#: templates/js/translated/modals.js:677 templates/js/translated/modals.js:985
#: templates/modals.html:28 templates/modals.html:51
msgid "Submit"
msgstr ""
@@ -8097,31 +8204,31 @@ msgstr ""
msgid "Loading Data"
msgstr ""
-#: templates/js/translated/modals.js:934
+#: templates/js/translated/modals.js:937
msgid "Invalid response from server"
msgstr ""
-#: templates/js/translated/modals.js:934
+#: templates/js/translated/modals.js:937
msgid "Form data missing from server response"
msgstr ""
-#: templates/js/translated/modals.js:946
+#: templates/js/translated/modals.js:949
msgid "Error posting form data"
msgstr ""
-#: templates/js/translated/modals.js:1043
+#: templates/js/translated/modals.js:1046
msgid "JSON response missing form data"
msgstr ""
-#: templates/js/translated/modals.js:1058
+#: templates/js/translated/modals.js:1061
msgid "Error 400: Bad Request"
msgstr ""
-#: templates/js/translated/modals.js:1059
+#: templates/js/translated/modals.js:1062
msgid "Server returned error code 400"
msgstr ""
-#: templates/js/translated/modals.js:1082
+#: templates/js/translated/modals.js:1085
msgid "Error requesting form data"
msgstr ""
@@ -8141,10 +8248,6 @@ msgstr ""
msgid "Build ID"
msgstr ""
-#: templates/js/translated/model_renderers.js:182
-msgid "Part ID"
-msgstr ""
-
#: templates/js/translated/model_renderers.js:249
#: templates/js/translated/model_renderers.js:270
msgid "Order ID"
@@ -8210,7 +8313,7 @@ msgstr ""
msgid "Quantity to receive"
msgstr ""
-#: templates/js/translated/order.js:520 templates/js/translated/stock.js:2131
+#: templates/js/translated/order.js:520 templates/js/translated/stock.js:2255
msgid "Stock Status"
msgstr ""
@@ -8344,7 +8447,7 @@ msgid "Delete Stock Allocation"
msgstr ""
#: templates/js/translated/order.js:1959 templates/js/translated/order.js:2048
-#: templates/js/translated/stock.js:1436
+#: templates/js/translated/stock.js:1560
msgid "Shipped to customer"
msgstr ""
@@ -8545,12 +8648,12 @@ msgid "No category"
msgstr ""
#: templates/js/translated/part.js:1296
-#: templates/js/translated/table_filters.js:430
+#: templates/js/translated/table_filters.js:425
msgid "Low stock"
msgstr ""
#: templates/js/translated/part.js:1387 templates/js/translated/part.js:1559
-#: templates/js/translated/stock.js:2440
+#: templates/js/translated/stock.js:2564
msgid "Display as list"
msgstr ""
@@ -8558,7 +8661,7 @@ msgstr ""
msgid "Display as grid"
msgstr ""
-#: templates/js/translated/part.js:1578 templates/js/translated/stock.js:2459
+#: templates/js/translated/part.js:1578 templates/js/translated/stock.js:2583
msgid "Display as tree"
msgstr ""
@@ -8566,7 +8669,7 @@ msgstr ""
msgid "Subscribed category"
msgstr ""
-#: templates/js/translated/part.js:1656 templates/js/translated/stock.js:2503
+#: templates/js/translated/part.js:1656 templates/js/translated/stock.js:2627
msgid "Path"
msgstr ""
@@ -8574,11 +8677,12 @@ msgstr ""
msgid "No test templates matching query"
msgstr ""
-#: templates/js/translated/part.js:1751 templates/js/translated/stock.js:1242
+#: templates/js/translated/part.js:1751 templates/js/translated/stock.js:1271
msgid "Edit test result"
msgstr ""
-#: templates/js/translated/part.js:1752 templates/js/translated/stock.js:1243
+#: templates/js/translated/part.js:1752 templates/js/translated/stock.js:1272
+#: templates/js/translated/stock.js:1518
msgid "Delete test result"
msgstr ""
@@ -8687,347 +8791,375 @@ msgstr ""
msgid "Sales Order(s) must be selected before printing report"
msgstr ""
-#: templates/js/translated/stock.js:74
+#: templates/js/translated/stock.js:75
msgid "Serialize Stock Item"
msgstr ""
-#: templates/js/translated/stock.js:92 templates/js/translated/stock.js:181
-msgid "Next available serial number"
-msgstr ""
-
-#: templates/js/translated/stock.js:94 templates/js/translated/stock.js:183
-msgid "Latest serial number"
-msgstr ""
-
-#: templates/js/translated/stock.js:102
+#: templates/js/translated/stock.js:103
msgid "Confirm Stock Serialization"
msgstr ""
-#: templates/js/translated/stock.js:111
+#: templates/js/translated/stock.js:112
msgid "Parent stock location"
msgstr ""
-#: templates/js/translated/stock.js:154
+#: templates/js/translated/stock.js:155
msgid "New Stock Location"
msgstr ""
-#: templates/js/translated/stock.js:194
+#: templates/js/translated/stock.js:195
msgid "This part cannot be serialized"
msgstr ""
-#: templates/js/translated/stock.js:233
+#: templates/js/translated/stock.js:234
msgid "Enter initial quantity for this stock item"
msgstr ""
-#: templates/js/translated/stock.js:239
+#: templates/js/translated/stock.js:240
msgid "Enter serial numbers for new stock (or leave blank)"
msgstr ""
-#: templates/js/translated/stock.js:382
+#: templates/js/translated/stock.js:383
msgid "Created new stock item"
msgstr ""
-#: templates/js/translated/stock.js:395
+#: templates/js/translated/stock.js:396
msgid "Created multiple stock items"
msgstr ""
-#: templates/js/translated/stock.js:420
+#: templates/js/translated/stock.js:421
msgid "Find Serial Number"
msgstr ""
-#: templates/js/translated/stock.js:424 templates/js/translated/stock.js:425
+#: templates/js/translated/stock.js:425 templates/js/translated/stock.js:426
msgid "Enter serial number"
msgstr ""
-#: templates/js/translated/stock.js:441
+#: templates/js/translated/stock.js:442
msgid "Enter a serial number"
msgstr ""
-#: templates/js/translated/stock.js:461
+#: templates/js/translated/stock.js:462
msgid "No matching serial number"
msgstr ""
-#: templates/js/translated/stock.js:470
+#: templates/js/translated/stock.js:471
msgid "More than one matching result found"
msgstr ""
-#: templates/js/translated/stock.js:515
+#: templates/js/translated/stock.js:516
msgid "Export Stock"
msgstr ""
-#: templates/js/translated/stock.js:526
+#: templates/js/translated/stock.js:527
msgid "Include Sublocations"
msgstr ""
-#: templates/js/translated/stock.js:527
+#: templates/js/translated/stock.js:528
msgid "Include stock items in sublocations"
msgstr ""
-#: templates/js/translated/stock.js:636
+#: templates/js/translated/stock.js:637
msgid "Confirm stock assignment"
msgstr ""
-#: templates/js/translated/stock.js:637
+#: templates/js/translated/stock.js:638
msgid "Assign Stock to Customer"
msgstr ""
-#: templates/js/translated/stock.js:714
+#: templates/js/translated/stock.js:715
msgid "Warning: Merge operation cannot be reversed"
msgstr ""
-#: templates/js/translated/stock.js:715
+#: templates/js/translated/stock.js:716
msgid "Some information will be lost when merging stock items"
msgstr ""
-#: templates/js/translated/stock.js:717
+#: templates/js/translated/stock.js:718
msgid "Stock transaction history will be deleted for merged items"
msgstr ""
-#: templates/js/translated/stock.js:718
+#: templates/js/translated/stock.js:719
msgid "Supplier part information will be deleted for merged items"
msgstr ""
-#: templates/js/translated/stock.js:804
+#: templates/js/translated/stock.js:805
msgid "Confirm stock item merge"
msgstr ""
-#: templates/js/translated/stock.js:805
+#: templates/js/translated/stock.js:806
msgid "Merge Stock Items"
msgstr ""
-#: templates/js/translated/stock.js:900
+#: templates/js/translated/stock.js:901
msgid "Transfer Stock"
msgstr ""
-#: templates/js/translated/stock.js:901
+#: templates/js/translated/stock.js:902
msgid "Move"
msgstr ""
-#: templates/js/translated/stock.js:907
+#: templates/js/translated/stock.js:908
msgid "Count Stock"
msgstr ""
-#: templates/js/translated/stock.js:908
+#: templates/js/translated/stock.js:909
msgid "Count"
msgstr ""
-#: templates/js/translated/stock.js:912
+#: templates/js/translated/stock.js:913
msgid "Remove Stock"
msgstr ""
-#: templates/js/translated/stock.js:913
+#: templates/js/translated/stock.js:914
msgid "Take"
msgstr ""
-#: templates/js/translated/stock.js:917
+#: templates/js/translated/stock.js:918
msgid "Add Stock"
msgstr ""
-#: templates/js/translated/stock.js:918 users/models.py:208
+#: templates/js/translated/stock.js:919 users/models.py:213
msgid "Add"
msgstr ""
-#: templates/js/translated/stock.js:922 templates/stock_table.html:58
+#: templates/js/translated/stock.js:923 templates/stock_table.html:58
msgid "Delete Stock"
msgstr ""
-#: templates/js/translated/stock.js:1011
+#: templates/js/translated/stock.js:1012
msgid "Quantity cannot be adjusted for serialized stock"
msgstr ""
-#: templates/js/translated/stock.js:1011
+#: templates/js/translated/stock.js:1012
msgid "Specify stock quantity"
msgstr ""
-#: templates/js/translated/stock.js:1051
+#: templates/js/translated/stock.js:1052
msgid "You must select at least one available stock item"
msgstr ""
-#: templates/js/translated/stock.js:1209
+#: templates/js/translated/stock.js:1210
msgid "PASS"
msgstr ""
-#: templates/js/translated/stock.js:1211
+#: templates/js/translated/stock.js:1212
msgid "FAIL"
msgstr ""
-#: templates/js/translated/stock.js:1216
+#: templates/js/translated/stock.js:1217
msgid "NO RESULT"
msgstr ""
-#: templates/js/translated/stock.js:1238
+#: templates/js/translated/stock.js:1264
+msgid "Pass test"
+msgstr ""
+
+#: templates/js/translated/stock.js:1267
msgid "Add test result"
msgstr ""
-#: templates/js/translated/stock.js:1264
+#: templates/js/translated/stock.js:1293
msgid "No test results found"
msgstr ""
-#: templates/js/translated/stock.js:1321
+#: templates/js/translated/stock.js:1349
msgid "Test Date"
msgstr ""
-#: templates/js/translated/stock.js:1428
+#: templates/js/translated/stock.js:1501
+msgid "Edit Test Result"
+msgstr ""
+
+#: templates/js/translated/stock.js:1523
+msgid "Delete Test Result"
+msgstr ""
+
+#: templates/js/translated/stock.js:1552
msgid "In production"
msgstr ""
-#: templates/js/translated/stock.js:1432
+#: templates/js/translated/stock.js:1556
msgid "Installed in Stock Item"
msgstr ""
-#: templates/js/translated/stock.js:1440
+#: templates/js/translated/stock.js:1564
msgid "Assigned to Sales Order"
msgstr ""
-#: templates/js/translated/stock.js:1446
+#: templates/js/translated/stock.js:1570
msgid "No stock location set"
msgstr ""
-#: templates/js/translated/stock.js:1604
+#: templates/js/translated/stock.js:1728
msgid "Stock item is in production"
msgstr ""
-#: templates/js/translated/stock.js:1609
+#: templates/js/translated/stock.js:1733
msgid "Stock item assigned to sales order"
msgstr ""
-#: templates/js/translated/stock.js:1612
+#: templates/js/translated/stock.js:1736
msgid "Stock item assigned to customer"
msgstr ""
-#: templates/js/translated/stock.js:1616
+#: templates/js/translated/stock.js:1740
msgid "Stock item has expired"
msgstr ""
-#: templates/js/translated/stock.js:1618
+#: templates/js/translated/stock.js:1742
msgid "Stock item will expire soon"
msgstr ""
-#: templates/js/translated/stock.js:1624
+#: templates/js/translated/stock.js:1748
msgid "Serialized stock item has been allocated"
msgstr ""
-#: templates/js/translated/stock.js:1626
+#: templates/js/translated/stock.js:1750
msgid "Stock item has been fully allocated"
msgstr ""
-#: templates/js/translated/stock.js:1628
+#: templates/js/translated/stock.js:1752
msgid "Stock item has been partially allocated"
msgstr ""
-#: templates/js/translated/stock.js:1633
+#: templates/js/translated/stock.js:1757
msgid "Stock item has been installed in another item"
msgstr ""
-#: templates/js/translated/stock.js:1640
+#: templates/js/translated/stock.js:1764
msgid "Stock item has been rejected"
msgstr ""
-#: templates/js/translated/stock.js:1642
+#: templates/js/translated/stock.js:1766
msgid "Stock item is lost"
msgstr ""
-#: templates/js/translated/stock.js:1644
+#: templates/js/translated/stock.js:1768
msgid "Stock item is destroyed"
msgstr ""
-#: templates/js/translated/stock.js:1648
+#: templates/js/translated/stock.js:1772
#: templates/js/translated/table_filters.js:188
msgid "Depleted"
msgstr ""
-#: templates/js/translated/stock.js:1698
+#: templates/js/translated/stock.js:1822
msgid "Stocktake"
msgstr ""
-#: templates/js/translated/stock.js:1771
+#: templates/js/translated/stock.js:1895
msgid "Supplier part not specified"
msgstr ""
-#: templates/js/translated/stock.js:1809
+#: templates/js/translated/stock.js:1933
msgid "No stock items matching query"
msgstr ""
-#: templates/js/translated/stock.js:1830 templates/js/translated/stock.js:1878
+#: templates/js/translated/stock.js:1954 templates/js/translated/stock.js:2002
msgid "items"
msgstr ""
-#: templates/js/translated/stock.js:1918
+#: templates/js/translated/stock.js:2042
msgid "batches"
msgstr ""
-#: templates/js/translated/stock.js:1945
+#: templates/js/translated/stock.js:2069
msgid "locations"
msgstr ""
-#: templates/js/translated/stock.js:1947
+#: templates/js/translated/stock.js:2071
msgid "Undefined location"
msgstr ""
-#: templates/js/translated/stock.js:2146
+#: templates/js/translated/stock.js:2270
msgid "Set Stock Status"
msgstr ""
-#: templates/js/translated/stock.js:2160
+#: templates/js/translated/stock.js:2284
msgid "Select Status Code"
msgstr ""
-#: templates/js/translated/stock.js:2161
+#: templates/js/translated/stock.js:2285
msgid "Status code must be selected"
msgstr ""
-#: templates/js/translated/stock.js:2340
+#: templates/js/translated/stock.js:2464
msgid "Allocated Quantity"
msgstr ""
-#: templates/js/translated/stock.js:2535
+#: templates/js/translated/stock.js:2659
msgid "Invalid date"
msgstr ""
-#: templates/js/translated/stock.js:2557
+#: templates/js/translated/stock.js:2681
msgid "Details"
msgstr ""
-#: templates/js/translated/stock.js:2582
+#: templates/js/translated/stock.js:2706
msgid "Location no longer exists"
msgstr ""
-#: templates/js/translated/stock.js:2601
+#: templates/js/translated/stock.js:2725
msgid "Purchase order no longer exists"
msgstr ""
-#: templates/js/translated/stock.js:2620
+#: templates/js/translated/stock.js:2744
msgid "Customer no longer exists"
msgstr ""
-#: templates/js/translated/stock.js:2638
+#: templates/js/translated/stock.js:2762
msgid "Stock item no longer exists"
msgstr ""
-#: templates/js/translated/stock.js:2661
+#: templates/js/translated/stock.js:2785
msgid "Added"
msgstr ""
-#: templates/js/translated/stock.js:2669
+#: templates/js/translated/stock.js:2793
msgid "Removed"
msgstr ""
-#: templates/js/translated/stock.js:2710
+#: templates/js/translated/stock.js:2834
msgid "Edit tracking entry"
msgstr ""
-#: templates/js/translated/stock.js:2711
+#: templates/js/translated/stock.js:2835
msgid "Delete tracking entry"
msgstr ""
-#: templates/js/translated/stock.js:2762
+#: templates/js/translated/stock.js:2886
msgid "No installed items"
msgstr ""
-#: templates/js/translated/stock.js:2813
+#: templates/js/translated/stock.js:2937
msgid "Uninstall Stock Item"
msgstr ""
+#: templates/js/translated/stock.js:2973
+msgid "Install another stock item into this item"
+msgstr ""
+
+#: templates/js/translated/stock.js:2974
+msgid "Stock items can only be installed if they meet the following criteria"
+msgstr ""
+
+#: templates/js/translated/stock.js:2976
+msgid "The Stock Item links to a Part which is the BOM for this Stock Item"
+msgstr ""
+
+#: templates/js/translated/stock.js:2977
+msgid "The Stock Item is currently available in stock"
+msgstr ""
+
+#: templates/js/translated/stock.js:2978
+msgid "The Stock Item is serialized and does not belong to another item"
+msgstr ""
+
+#: templates/js/translated/stock.js:2991
+msgid "Select part to install"
+msgstr ""
+
#: templates/js/translated/table_filters.js:56
msgid "Trackable Part"
msgstr ""
@@ -9055,12 +9187,12 @@ msgstr ""
#: templates/js/translated/table_filters.js:121
#: templates/js/translated/table_filters.js:122
-#: templates/js/translated/table_filters.js:407
+#: templates/js/translated/table_filters.js:402
msgid "Include subcategories"
msgstr ""
#: templates/js/translated/table_filters.js:126
-#: templates/js/translated/table_filters.js:442
+#: templates/js/translated/table_filters.js:437
msgid "Subscribed"
msgstr ""
@@ -9102,7 +9234,7 @@ msgid "Batch code"
msgstr ""
#: templates/js/translated/table_filters.js:163
-#: templates/js/translated/table_filters.js:379
+#: templates/js/translated/table_filters.js:374
msgid "Active parts"
msgstr ""
@@ -9187,47 +9319,47 @@ msgstr ""
msgid "Show stock which is close to expiring"
msgstr ""
-#: templates/js/translated/table_filters.js:290
+#: templates/js/translated/table_filters.js:285
msgid "Build status"
msgstr ""
-#: templates/js/translated/table_filters.js:303
-#: templates/js/translated/table_filters.js:344
+#: templates/js/translated/table_filters.js:298
+#: templates/js/translated/table_filters.js:339
msgid "Assigned to me"
msgstr ""
-#: templates/js/translated/table_filters.js:320
-#: templates/js/translated/table_filters.js:331
-#: templates/js/translated/table_filters.js:352
+#: templates/js/translated/table_filters.js:315
+#: templates/js/translated/table_filters.js:326
+#: templates/js/translated/table_filters.js:347
msgid "Order status"
msgstr ""
-#: templates/js/translated/table_filters.js:336
-#: templates/js/translated/table_filters.js:357
+#: templates/js/translated/table_filters.js:331
+#: templates/js/translated/table_filters.js:352
msgid "Outstanding"
msgstr ""
-#: templates/js/translated/table_filters.js:408
+#: templates/js/translated/table_filters.js:403
msgid "Include parts in subcategories"
msgstr ""
-#: templates/js/translated/table_filters.js:412
+#: templates/js/translated/table_filters.js:407
msgid "Has IPN"
msgstr ""
-#: templates/js/translated/table_filters.js:413
+#: templates/js/translated/table_filters.js:408
msgid "Part has internal part number"
msgstr ""
-#: templates/js/translated/table_filters.js:418
+#: templates/js/translated/table_filters.js:413
msgid "Show active parts"
msgstr ""
-#: templates/js/translated/table_filters.js:426
+#: templates/js/translated/table_filters.js:421
msgid "Stock available"
msgstr ""
-#: templates/js/translated/table_filters.js:454
+#: templates/js/translated/table_filters.js:449
msgid "Purchasable"
msgstr ""
@@ -9480,35 +9612,35 @@ msgstr ""
msgid "Important dates"
msgstr ""
-#: users/models.py:195
+#: users/models.py:200
msgid "Permission set"
msgstr ""
-#: users/models.py:203
+#: users/models.py:208
msgid "Group"
msgstr ""
-#: users/models.py:206
+#: users/models.py:211
msgid "View"
msgstr ""
-#: users/models.py:206
+#: users/models.py:211
msgid "Permission to view items"
msgstr ""
-#: users/models.py:208
+#: users/models.py:213
msgid "Permission to add items"
msgstr ""
-#: users/models.py:210
+#: users/models.py:215
msgid "Change"
msgstr ""
-#: users/models.py:210
+#: users/models.py:215
msgid "Permissions to edit items"
msgstr ""
-#: users/models.py:212
+#: users/models.py:217
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 6750a4152a..ec2e7c82fd 100644
--- a/InvenTree/locale/it/LC_MESSAGES/django.po
+++ b/InvenTree/locale/it/LC_MESSAGES/django.po
@@ -3,8 +3,8 @@ msgid ""
msgstr ""
"Project-Id-Version: inventree\n"
"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2022-01-29 00:17+0000\n"
-"PO-Revision-Date: 2022-01-29 01:11\n"
+"POT-Creation-Date: 2022-02-18 20:36+0000\n"
+"PO-Revision-Date: 2022-02-18 20:38\n"
"Last-Translator: \n"
"Language-Team: Italian\n"
"Language: it_IT\n"
@@ -34,9 +34,9 @@ msgstr "Nessuna azione corrispondente trovata"
msgid "Enter date"
msgstr "Inserisci la data"
-#: InvenTree/forms.py:126 build/forms.py:48 build/forms.py:69 order/forms.py:24
-#: order/forms.py:35 order/forms.py:46 order/forms.py:57
-#: templates/account/email_confirm.html:20 templates/js/translated/forms.js:595
+#: InvenTree/forms.py:126 order/forms.py:24 order/forms.py:35 order/forms.py:46
+#: order/forms.py:57 templates/account/email_confirm.html:20
+#: templates/js/translated/forms.js:596
msgid "Confirm"
msgstr "Conferma"
@@ -86,7 +86,7 @@ msgid "Duplicate serial: {n}"
msgstr "Seriale Duplicato: {n}"
#: InvenTree/helpers.py:446 order/models.py:282 order/models.py:425
-#: stock/views.py:1231
+#: stock/views.py:1082
msgid "Invalid quantity provided"
msgstr "Quantità inserita non valida"
@@ -119,133 +119,133 @@ msgstr "Nessun numero di serie trovato"
msgid "Number of unique serial number ({s}) must match quantity ({q})"
msgstr "Il numero dei numeri seriali univoci ({s}) deve essere uguale alla quantità ({q})"
-#: InvenTree/models.py:120
+#: InvenTree/models.py:176
msgid "Missing file"
msgstr "File mancante"
-#: InvenTree/models.py:121
+#: InvenTree/models.py:177
msgid "Missing external link"
msgstr "Link esterno mancante"
-#: InvenTree/models.py:132 stock/models.py:1995
+#: InvenTree/models.py:188 stock/models.py:1995
#: templates/js/translated/attachment.js:119
msgid "Attachment"
msgstr "Allegato"
-#: InvenTree/models.py:133
+#: InvenTree/models.py:189
msgid "Select file to attach"
msgstr "Seleziona file da allegare"
-#: InvenTree/models.py:139 company/models.py:131 company/models.py:348
-#: company/models.py:564 order/models.py:127 part/models.py:830
+#: InvenTree/models.py:195 company/models.py:131 company/models.py:348
+#: company/models.py:564 order/models.py:127 part/models.py:860
#: report/templates/report/inventree_build_order_base.html:165
#: templates/js/translated/company.js:540
#: templates/js/translated/company.js:829 templates/js/translated/part.js:1324
msgid "Link"
msgstr "Link"
-#: InvenTree/models.py:140 build/models.py:332 part/models.py:831
+#: InvenTree/models.py:196 build/models.py:332 part/models.py:861
#: stock/models.py:529
msgid "Link to external URL"
msgstr "Link a URL esterno"
-#: InvenTree/models.py:143 templates/js/translated/attachment.js:163
+#: InvenTree/models.py:199 templates/js/translated/attachment.js:163
msgid "Comment"
msgstr "Commento"
-#: InvenTree/models.py:143
+#: InvenTree/models.py:199
msgid "File comment"
msgstr "Commento del file"
-#: InvenTree/models.py:149 InvenTree/models.py:150 common/models.py:1223
-#: common/models.py:1224 common/models.py:1452 common/models.py:1453
-#: part/models.py:2265 part/models.py:2285
+#: InvenTree/models.py:205 InvenTree/models.py:206 common/models.py:1235
+#: common/models.py:1236 common/models.py:1464 common/models.py:1465
+#: part/models.py:2301 part/models.py:2321
#: report/templates/report/inventree_test_report_base.html:96
-#: templates/js/translated/stock.js:2692
+#: templates/js/translated/stock.js:2816
msgid "User"
msgstr "Utente"
-#: InvenTree/models.py:153
+#: InvenTree/models.py:209
msgid "upload date"
msgstr "data caricamento"
-#: InvenTree/models.py:176
+#: InvenTree/models.py:232
msgid "Filename must not be empty"
msgstr "Il nome del file non deve essere vuoto"
-#: InvenTree/models.py:199
+#: InvenTree/models.py:255
msgid "Invalid attachment directory"
msgstr "Directory allegati non valida"
-#: InvenTree/models.py:209
+#: InvenTree/models.py:265
#, python-brace-format
msgid "Filename contains illegal character '{c}'"
msgstr "Il nome del file contiene caratteri non validi '{c}'"
-#: InvenTree/models.py:212
+#: InvenTree/models.py:268
msgid "Filename missing extension"
msgstr "Nome file estensione mancante"
-#: InvenTree/models.py:219
+#: InvenTree/models.py:275
msgid "Attachment with this filename already exists"
msgstr "Esiste già un allegato con questo nome di file"
-#: InvenTree/models.py:226
+#: InvenTree/models.py:282
msgid "Error renaming file"
msgstr "Errore nella rinominazione del file"
-#: InvenTree/models.py:261
+#: InvenTree/models.py:317
msgid "Invalid choice"
msgstr "Scelta non valida"
-#: InvenTree/models.py:277 InvenTree/models.py:278 common/models.py:1438
-#: company/models.py:415 label/models.py:112 part/models.py:774
-#: part/models.py:2449 plugin/models.py:40 report/models.py:181
+#: InvenTree/models.py:333 InvenTree/models.py:334 common/models.py:1450
+#: company/models.py:415 label/models.py:112 part/models.py:804
+#: part/models.py:2485 plugin/models.py:40 report/models.py:181
#: templates/InvenTree/settings/mixins/urls.html:13
#: templates/InvenTree/settings/plugin.html:48
#: templates/InvenTree/settings/plugin.html:125
#: templates/InvenTree/settings/plugin_settings.html:23
-#: templates/InvenTree/settings/settings.html:282
+#: templates/InvenTree/settings/settings.html:319
#: templates/js/translated/company.js:641 templates/js/translated/part.js:567
#: templates/js/translated/part.js:706 templates/js/translated/part.js:1631
-#: templates/js/translated/stock.js:2485
+#: templates/js/translated/stock.js:2609
msgid "Name"
msgstr "Nome"
-#: InvenTree/models.py:284 build/models.py:209
+#: InvenTree/models.py:340 build/models.py:209
#: build/templates/build/detail.html:25 company/models.py:354
#: company/models.py:570 company/templates/company/company_base.html:68
#: company/templates/company/manufacturer_part.html:76
#: company/templates/company/supplier_part.html:73 label/models.py:119
-#: order/models.py:125 part/models.py:797 part/templates/part/category.html:74
+#: order/models.py:125 part/models.py:827 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:93
#: templates/InvenTree/settings/plugin_settings.html:33
-#: templates/js/translated/bom.js:339 templates/js/translated/bom.js:552
-#: templates/js/translated/build.js:1682 templates/js/translated/company.js:345
+#: templates/js/translated/bom.js:552 templates/js/translated/bom.js:765
+#: templates/js/translated/build.js:1920 templates/js/translated/company.js:345
#: templates/js/translated/company.js:551
#: templates/js/translated/company.js:840 templates/js/translated/order.js:836
#: templates/js/translated/order.js:1019 templates/js/translated/order.js:1258
#: templates/js/translated/part.js:626 templates/js/translated/part.js:999
#: templates/js/translated/part.js:1084 templates/js/translated/part.js:1254
#: templates/js/translated/part.js:1650 templates/js/translated/part.js:1719
-#: templates/js/translated/stock.js:1577 templates/js/translated/stock.js:2314
-#: templates/js/translated/stock.js:2497 templates/js/translated/stock.js:2542
+#: templates/js/translated/stock.js:1701 templates/js/translated/stock.js:2438
+#: templates/js/translated/stock.js:2621 templates/js/translated/stock.js:2666
msgid "Description"
msgstr "Descrizione"
-#: InvenTree/models.py:285
+#: InvenTree/models.py:341
msgid "Description (optional)"
msgstr "Descrizione (opzionale)"
-#: InvenTree/models.py:293
+#: InvenTree/models.py:349
msgid "parent"
msgstr "genitore"
-#: InvenTree/serializers.py:65 part/models.py:2734
+#: InvenTree/serializers.py:65 part/models.py:2803
msgid "Must be a valid number"
msgstr "Deve essere un numero valido"
@@ -253,83 +253,127 @@ msgstr "Deve essere un numero valido"
msgid "Filename"
msgstr "Nome del file"
-#: InvenTree/settings.py:661
+#: InvenTree/serializers.py:334
+msgid "Invalid value"
+msgstr ""
+
+#: InvenTree/serializers.py:355
+msgid "Data File"
+msgstr ""
+
+#: InvenTree/serializers.py:356
+msgid "Select data file for upload"
+msgstr ""
+
+#: InvenTree/serializers.py:380
+msgid "Unsupported file type"
+msgstr ""
+
+#: InvenTree/serializers.py:386
+msgid "File is too large"
+msgstr ""
+
+#: InvenTree/serializers.py:407
+msgid "No columns found in file"
+msgstr ""
+
+#: InvenTree/serializers.py:410
+msgid "No data rows found in file"
+msgstr ""
+
+#: InvenTree/serializers.py:533
+msgid "No data rows provided"
+msgstr ""
+
+#: InvenTree/serializers.py:536
+msgid "No data columns supplied"
+msgstr ""
+
+#: InvenTree/serializers.py:623
+msgid "Missing required column"
+msgstr ""
+
+#: InvenTree/serializers.py:632
+msgid "Duplicate column"
+msgstr ""
+
+#: InvenTree/settings.py:655
msgid "German"
msgstr "Tedesco"
-#: InvenTree/settings.py:662
+#: InvenTree/settings.py:656
msgid "Greek"
msgstr "Greco"
-#: InvenTree/settings.py:663
+#: InvenTree/settings.py:657
msgid "English"
msgstr "Inglese"
-#: InvenTree/settings.py:664
+#: InvenTree/settings.py:658
msgid "Spanish"
msgstr "Spagnolo"
-#: InvenTree/settings.py:665
+#: InvenTree/settings.py:659
msgid "Spanish (Mexican)"
msgstr "Spagnolo (Messicano)"
-#: InvenTree/settings.py:666
+#: InvenTree/settings.py:660
msgid "French"
msgstr "Francese"
-#: InvenTree/settings.py:667
+#: InvenTree/settings.py:661
msgid "Hebrew"
msgstr "Ebraico"
-#: InvenTree/settings.py:668
+#: InvenTree/settings.py:662
msgid "Italian"
msgstr "Italiano"
-#: InvenTree/settings.py:669
+#: InvenTree/settings.py:663
msgid "Japanese"
msgstr "Giapponese"
-#: InvenTree/settings.py:670
+#: InvenTree/settings.py:664
msgid "Korean"
msgstr "Coreano"
-#: InvenTree/settings.py:671
+#: InvenTree/settings.py:665
msgid "Dutch"
msgstr "Olandese"
-#: InvenTree/settings.py:672
+#: InvenTree/settings.py:666
msgid "Norwegian"
msgstr "Norvegese"
-#: InvenTree/settings.py:673
+#: InvenTree/settings.py:667
msgid "Polish"
msgstr "Polacco"
-#: InvenTree/settings.py:674
+#: InvenTree/settings.py:668
msgid "Portugese"
msgstr "Portoghese"
-#: InvenTree/settings.py:675
+#: InvenTree/settings.py:669
msgid "Russian"
msgstr "Russo"
-#: InvenTree/settings.py:676
+#: InvenTree/settings.py:670
msgid "Swedish"
msgstr "Svedese"
-#: InvenTree/settings.py:677
+#: InvenTree/settings.py:671
msgid "Thai"
msgstr "Thailandese"
-#: InvenTree/settings.py:678
+#: InvenTree/settings.py:672
msgid "Turkish"
msgstr "Turco"
-#: InvenTree/settings.py:679
+#: InvenTree/settings.py:673
msgid "Vietnamese"
msgstr "Vietnamita"
-#: InvenTree/settings.py:680
+#: InvenTree/settings.py:674
msgid "Chinese"
msgstr "Cinese"
@@ -346,7 +390,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:316 templates/js/translated/table_filters.js:313
+#: InvenTree/status_codes.py:316 templates/js/translated/table_filters.js:308
msgid "Pending"
msgstr "In attesa"
@@ -456,7 +500,7 @@ msgstr "Diviso dall'elemento genitore"
msgid "Split child item"
msgstr "Dividi elemento figlio"
-#: InvenTree/status_codes.py:294 templates/js/translated/stock.js:2072
+#: InvenTree/status_codes.py:294 templates/js/translated/stock.js:2196
msgid "Merged stock items"
msgstr ""
@@ -484,41 +528,41 @@ msgstr "Ricevuto contro l'ordine di acquisto"
msgid "Production"
msgstr "Produzione"
-#: InvenTree/validators.py:23
+#: InvenTree/validators.py:25
msgid "Not a valid currency code"
msgstr "Non è un codice valuta valido"
-#: InvenTree/validators.py:51
+#: InvenTree/validators.py:53
msgid "Invalid character in part name"
msgstr "Carattere non valido nel nome del file"
-#: InvenTree/validators.py:64
+#: InvenTree/validators.py:66
#, python-brace-format
msgid "IPN must match regex pattern {pat}"
msgstr "IPN deve corrispondere al modello regex {pat}"
-#: InvenTree/validators.py:78 InvenTree/validators.py:92
-#: InvenTree/validators.py:106
+#: InvenTree/validators.py:80 InvenTree/validators.py:94
+#: InvenTree/validators.py:108
#, python-brace-format
msgid "Reference must match pattern {pattern}"
msgstr "Il campo deve corrispondere con il modello {pattern}"
-#: InvenTree/validators.py:114
+#: InvenTree/validators.py:116
#, python-brace-format
msgid "Illegal character in name ({x})"
msgstr "Carattere illegale nel nome ({x})"
-#: InvenTree/validators.py:133 InvenTree/validators.py:149
+#: InvenTree/validators.py:137 InvenTree/validators.py:153
msgid "Overage value must not be negative"
msgstr "Il sovra-valore non può essere negativo"
-#: InvenTree/validators.py:151
+#: InvenTree/validators.py:155
msgid "Overage must not exceed 100%"
msgstr "L'eccesso non deve superare il 100%"
-#: InvenTree/validators.py:158
-msgid "Overage must be an integer value or a percentage"
-msgstr "Il superamento deve essere un valore intero o una percentuale"
+#: InvenTree/validators.py:162
+msgid "Invalid value for overage"
+msgstr ""
#: InvenTree/views.py:538
msgid "Delete Item"
@@ -584,69 +628,11 @@ msgstr ""
msgid "Barcode associated with Stock Item"
msgstr ""
-#: build/forms.py:36 build/models.py:1293
-#: build/templates/build/build_base.html:82
-#: build/templates/build/detail.html:35 common/models.py:1263
-#: company/forms.py:42 company/templates/company/supplier_part.html:251
-#: order/models.py:805 order/models.py:1229 order/serializers.py:816
-#: order/templates/order/order_wizard/match_parts.html:30
-#: order/templates/order/order_wizard/select_parts.html:34 part/forms.py:144
-#: part/forms.py:160 part/forms.py:176 part/models.py:2636
-#: part/templates/part/bom_upload/match_parts.html:31
-#: part/templates/part/detail.html:992 part/templates/part/detail.html:1078
-#: part/templates/part/part_pricing.html:16
-#: report/templates/report/inventree_build_order_base.html:114
-#: report/templates/report/inventree_po_report.html:91
-#: report/templates/report/inventree_so_report.html:91
-#: report/templates/report/inventree_test_report_base.html:81
-#: report/templates/report/inventree_test_report_base.html:139
-#: stock/forms.py:142 stock/serializers.py:293
-#: stock/templates/stock/item_base.html:181
-#: stock/templates/stock/item_base.html:262
-#: stock/templates/stock/item_base.html:270
-#: templates/js/translated/barcode.js:385 templates/js/translated/bom.js:567
-#: templates/js/translated/build.js:295 templates/js/translated/build.js:495
-#: templates/js/translated/build.js:689 templates/js/translated/build.js:699
-#: templates/js/translated/build.js:1075 templates/js/translated/build.js:1422
-#: templates/js/translated/model_renderers.js:99
-#: templates/js/translated/order.js:101 templates/js/translated/order.js:1056
-#: 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:906
-#: templates/js/translated/part.js:1862 templates/js/translated/part.js:1985
-#: templates/js/translated/part.js:2063 templates/js/translated/stock.js:391
-#: templates/js/translated/stock.js:588 templates/js/translated/stock.js:758
-#: templates/js/translated/stock.js:2677 templates/js/translated/stock.js:2779
-msgid "Quantity"
-msgstr "Quantità"
-
-#: build/forms.py:37
-msgid "Enter quantity for build output"
-msgstr "Inserisci la quantità per l'output di compilazione"
-
-#: build/forms.py:41 order/serializers.py:820 stock/forms.py:81
-#: stock/serializers.py:314 templates/js/translated/stock.js:238
-#: templates/js/translated/stock.js:392
-msgid "Serial Numbers"
-msgstr "Codice Seriale"
-
-#: build/forms.py:43
-msgid "Enter serial numbers for build outputs"
-msgstr "Inserisci i numeri di serie per gli output di compilazione (build option)"
-
-#: build/forms.py:49
-msgid "Confirm creation of build output"
-msgstr "Conferma la creazione dell'output di compilazione"
-
-#: build/forms.py:70
-msgid "Confirm deletion of build output"
-msgstr "Conferma la creazione dell'output di compilazione"
-
-#: build/forms.py:89
+#: build/forms.py:20
msgid "Confirm cancel"
msgstr "Conferma annullamento"
-#: build/forms.py:89 build/views.py:65
+#: build/forms.py:20 build/views.py:62
msgid "Confirm build cancellation"
msgstr ""
@@ -657,7 +643,7 @@ msgstr ""
#: build/models.py:139 build/templates/build/build_base.html:9
#: build/templates/build/build_base.html:27
#: report/templates/report/inventree_build_order_base.html:106
-#: templates/js/translated/build.js:457 templates/js/translated/stock.js:2290
+#: templates/js/translated/build.js:676 templates/js/translated/stock.js:2414
msgid "Build Order"
msgstr ""
@@ -665,7 +651,7 @@ msgstr ""
#: 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
+#: part/templates/part/part_sidebar.html:21 templates/InvenTree/index.html:221
#: templates/InvenTree/search.html:139
#: templates/InvenTree/settings/sidebar.html:43 users/models.py:44
msgid "Build Orders"
@@ -676,11 +662,11 @@ msgid "Build Order Reference"
msgstr ""
#: build/models.py:201 order/models.py:213 order/models.py:541
-#: order/models.py:812 part/models.py:2645
-#: part/templates/part/bom_upload/match_parts.html:30
+#: order/models.py:812 part/models.py:2714
+#: part/templates/part/upload_bom.html:54
#: report/templates/report/inventree_po_report.html:92
#: report/templates/report/inventree_so_report.html:92
-#: templates/js/translated/bom.js:559 templates/js/translated/build.js:1179
+#: templates/js/translated/bom.js:772 templates/js/translated/build.js:1401
#: templates/js/translated/order.js:1050 templates/js/translated/order.js:2144
msgid "Reference"
msgstr "Riferimento"
@@ -689,7 +675,7 @@ msgstr "Riferimento"
msgid "Brief description of the build"
msgstr ""
-#: build/models.py:221 build/templates/build/build_base.html:164
+#: build/models.py:221 build/templates/build/build_base.html:169
#: build/templates/build/detail.html:88
msgid "Parent Build"
msgstr ""
@@ -702,30 +688,31 @@ msgstr ""
#: build/templates/build/detail.html:30 company/models.py:705
#: order/models.py:876 order/models.py:950
#: order/templates/order/order_wizard/select_parts.html:32 part/models.py:359
-#: part/models.py:2211 part/models.py:2227 part/models.py:2246
-#: part/models.py:2263 part/models.py:2365 part/models.py:2487
-#: part/models.py:2620 part/models.py:2927 part/serializers.py:658
-#: part/templates/part/part_app_base.html:8
+#: part/models.py:2247 part/models.py:2263 part/models.py:2282
+#: part/models.py:2299 part/models.py:2401 part/models.py:2523
+#: part/models.py:2613 part/models.py:2689 part/models.py:2996
+#: part/serializers.py:666 part/templates/part/part_app_base.html:8
#: part/templates/part/part_pricing.html:12
#: part/templates/part/set_category.html:13
+#: part/templates/part/upload_bom.html:52
#: 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: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:338
-#: templates/js/translated/bom.js:517 templates/js/translated/build.js:680
-#: templates/js/translated/build.js:1048 templates/js/translated/build.js:1419
-#: templates/js/translated/build.js:1687 templates/js/translated/company.js:492
+#: templates/js/translated/barcode.js:383 templates/js/translated/bom.js:551
+#: templates/js/translated/bom.js:730 templates/js/translated/build.js:902
+#: templates/js/translated/build.js:1270 templates/js/translated/build.js:1655
+#: templates/js/translated/build.js:1925 templates/js/translated/company.js:492
#: templates/js/translated/company.js:749 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:984
#: templates/js/translated/part.js:1065 templates/js/translated/part.js:1232
-#: templates/js/translated/stock.js:562 templates/js/translated/stock.js:727
-#: templates/js/translated/stock.js:934 templates/js/translated/stock.js:1534
-#: templates/js/translated/stock.js:2767
+#: templates/js/translated/stock.js:563 templates/js/translated/stock.js:728
+#: templates/js/translated/stock.js:935 templates/js/translated/stock.js:1658
+#: templates/js/translated/stock.js:2891 templates/js/translated/stock.js:2990
msgid "Part"
msgstr "Articolo"
@@ -741,7 +728,7 @@ msgstr "Numero di riferimento ordine di vendita"
msgid "SalesOrder to which this build is allocated"
msgstr ""
-#: build/models.py:249 templates/js/translated/build.js:1407
+#: build/models.py:249 templates/js/translated/build.js:1643
#: templates/js/translated/order.js:1564
msgid "Source Location"
msgstr "Posizione Di Origine"
@@ -782,15 +769,15 @@ msgstr ""
msgid "Build status code"
msgstr ""
-#: build/models.py:287 stock/models.py:533
+#: build/models.py:287 build/serializers.py:218 stock/models.py:533
msgid "Batch Code"
msgstr ""
-#: build/models.py:291
+#: build/models.py:291 build/serializers.py:219
msgid "Batch code for this build output"
msgstr ""
-#: build/models.py:294 order/models.py:129 part/models.py:969
+#: build/models.py:294 order/models.py:129 part/models.py:999
#: part/templates/part/part_base.html:313 templates/js/translated/order.js:1271
msgid "Creation Date"
msgstr "Data di creazione"
@@ -804,7 +791,7 @@ msgid "Target date for build completion. Build will be overdue after this date."
msgstr ""
#: build/models.py:302 order/models.py:255
-#: templates/js/translated/build.js:1758
+#: templates/js/translated/build.js:1996
msgid "Completion Date"
msgstr "Data di completamento"
@@ -812,7 +799,7 @@ msgstr "Data di completamento"
msgid "completed by"
msgstr "Completato da"
-#: build/models.py:316 templates/js/translated/build.js:1729
+#: build/models.py:316 templates/js/translated/build.js:1967
msgid "Issued by"
msgstr "Rilasciato da"
@@ -820,12 +807,12 @@ msgstr "Rilasciato da"
msgid "User who issued this build order"
msgstr ""
-#: build/models.py:325 build/templates/build/build_base.html:185
+#: build/models.py:325 build/templates/build/build_base.html:190
#: build/templates/build/detail.html:116 order/models.py:143
#: order/templates/order/order_base.html:170
-#: order/templates/order/sales_order_base.html:182 part/models.py:973
+#: order/templates/order/sales_order_base.html:182 part/models.py:1003
#: report/templates/report/inventree_build_order_base.html:159
-#: templates/js/translated/build.js:1741 templates/js/translated/order.js:864
+#: templates/js/translated/build.js:1979 templates/js/translated/order.js:864
msgid "Responsible"
msgstr "Responsabile"
@@ -837,26 +824,26 @@ msgstr ""
#: company/templates/company/manufacturer_part.html:102
#: company/templates/company/supplier_part.html:126
#: part/templates/part/part_base.html:354 stock/models.py:527
-#: stock/templates/stock/item_base.html:373
+#: stock/templates/stock/item_base.html:375
msgid "External Link"
msgstr "Collegamento esterno"
-#: build/models.py:336 build/serializers.py:201
+#: build/models.py:336 build/serializers.py:380
#: build/templates/build/sidebar.html:21 company/models.py:142
#: company/models.py:577 company/templates/company/sidebar.html:25
#: order/models.py:147 order/models.py:814 order/models.py:1071
#: order/templates/order/po_sidebar.html:11
-#: order/templates/order/so_sidebar.html:17 part/models.py:958
-#: part/templates/part/detail.html:137 part/templates/part/part_sidebar.html:54
+#: order/templates/order/so_sidebar.html:17 part/models.py:988
+#: part/templates/part/detail.html:140 part/templates/part/part_sidebar.html:57
#: report/templates/report/inventree_build_order_base.html:173
-#: stock/forms.py:140 stock/forms.py:190 stock/forms.py:224 stock/models.py:599
+#: stock/forms.py:137 stock/forms.py:171 stock/models.py:599
#: stock/models.py:1895 stock/models.py:2001 stock/serializers.py:332
-#: stock/serializers.py:640 stock/serializers.py:738 stock/serializers.py:870
+#: stock/serializers.py:697 stock/serializers.py:795 stock/serializers.py:927
#: stock/templates/stock/stock_sidebar.html:25
-#: templates/js/translated/barcode.js:58 templates/js/translated/bom.js:723
+#: templates/js/translated/barcode.js:58 templates/js/translated/bom.js:936
#: templates/js/translated/company.js:845 templates/js/translated/order.js:1149
#: templates/js/translated/order.js:1445 templates/js/translated/order.js:2280
-#: templates/js/translated/stock.js:1317 templates/js/translated/stock.js:1803
+#: templates/js/translated/stock.js:1345 templates/js/translated/stock.js:1927
msgid "Notes"
msgstr "Note"
@@ -864,208 +851,284 @@ msgstr "Note"
msgid "Extra build notes"
msgstr ""
-#: build/models.py:717
+#: build/models.py:756
msgid "No build output specified"
msgstr ""
-#: build/models.py:720
+#: build/models.py:759
msgid "Build output is already completed"
msgstr ""
-#: build/models.py:723
+#: build/models.py:762
msgid "Build output does not match Build Order"
msgstr ""
-#: build/models.py:1115
+#: build/models.py:1154
msgid "Build item must specify a build output, as master part is marked as trackable"
msgstr ""
-#: build/models.py:1124
+#: build/models.py:1163
#, python-brace-format
msgid "Allocated quantity ({q}) must not execed available stock quantity ({a})"
msgstr "La quantità assegnata ({q}) non deve essere maggiore della quantità disponibile ({a})"
-#: build/models.py:1134
+#: build/models.py:1173
msgid "Stock item is over-allocated"
msgstr "L'articolo in giacenza è sovrallocato"
-#: build/models.py:1140 order/models.py:1189
+#: build/models.py:1179 order/models.py:1189
msgid "Allocation quantity must be greater than zero"
msgstr "La quantità di assegnazione deve essere maggiore di zero"
-#: build/models.py:1146
+#: build/models.py:1185
msgid "Quantity must be 1 for serialized stock"
msgstr "La quantità deve essere 1 per lo stock serializzato"
-#: build/models.py:1203
+#: build/models.py:1242
msgid "Selected stock item not found in BOM"
msgstr "Articolo in giacenza selezionato non trovato nel BOM"
-#: build/models.py:1263 stock/templates/stock/item_base.html:345
-#: templates/InvenTree/search.html:137 templates/js/translated/build.js:1660
+#: build/models.py:1302 stock/templates/stock/item_base.html:347
+#: templates/InvenTree/search.html:137 templates/js/translated/build.js:1898
#: templates/navbar.html:35
msgid "Build"
msgstr ""
-#: build/models.py:1264
+#: build/models.py:1303
msgid "Build to allocate parts"
msgstr ""
-#: build/models.py:1280 build/serializers.py:388 order/serializers.py:696
-#: order/serializers.py:714 stock/serializers.py:578 stock/serializers.py:696
-#: stock/templates/stock/item_base.html:9
+#: build/models.py:1319 build/serializers.py:570 order/serializers.py:696
+#: order/serializers.py:714 stock/serializers.py:404 stock/serializers.py:635
+#: stock/serializers.py:753 stock/templates/stock/item_base.html:9
#: stock/templates/stock/item_base.html:23
-#: stock/templates/stock/item_base.html:367
-#: templates/js/translated/build.js:468 templates/js/translated/build.js:473
-#: templates/js/translated/build.js:1421 templates/js/translated/build.js:1803
+#: stock/templates/stock/item_base.html:369
+#: templates/js/translated/build.js:687 templates/js/translated/build.js:692
+#: templates/js/translated/build.js:1657 templates/js/translated/build.js:2041
#: 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:563 templates/js/translated/stock.js:728
-#: templates/js/translated/stock.js:2628
+#: templates/js/translated/stock.js:564 templates/js/translated/stock.js:729
+#: templates/js/translated/stock.js:2752
msgid "Stock Item"
msgstr "Articoli in magazzino"
-#: build/models.py:1281
+#: build/models.py:1320
msgid "Source stock item"
msgstr "Origine giacenza articolo"
-#: build/models.py:1294
+#: build/models.py:1332 build/serializers.py:188
+#: build/templates/build/build_base.html:82
+#: build/templates/build/detail.html:35 common/models.py:1275
+#: company/forms.py:42 company/templates/company/supplier_part.html:251
+#: order/models.py:805 order/models.py:1229 order/serializers.py:816
+#: order/templates/order/order_wizard/match_parts.html:30
+#: order/templates/order/order_wizard/select_parts.html:34 part/forms.py:144
+#: part/forms.py:160 part/forms.py:176 part/models.py:2705
+#: part/templates/part/detail.html:995 part/templates/part/detail.html:1081
+#: part/templates/part/part_pricing.html:16
+#: part/templates/part/upload_bom.html:53
+#: report/templates/report/inventree_build_order_base.html:114
+#: report/templates/report/inventree_po_report.html:91
+#: report/templates/report/inventree_so_report.html:91
+#: report/templates/report/inventree_test_report_base.html:81
+#: report/templates/report/inventree_test_report_base.html:139
+#: stock/forms.py:139 stock/serializers.py:293
+#: stock/templates/stock/item_base.html:183
+#: stock/templates/stock/item_base.html:264
+#: stock/templates/stock/item_base.html:272
+#: templates/js/translated/barcode.js:385 templates/js/translated/bom.js:780
+#: templates/js/translated/build.js:375 templates/js/translated/build.js:523
+#: templates/js/translated/build.js:714 templates/js/translated/build.js:911
+#: templates/js/translated/build.js:921 templates/js/translated/build.js:1297
+#: templates/js/translated/build.js:1658
+#: templates/js/translated/model_renderers.js:99
+#: templates/js/translated/order.js:101 templates/js/translated/order.js:1056
+#: 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:906
+#: templates/js/translated/part.js:1862 templates/js/translated/part.js:1985
+#: templates/js/translated/part.js:2063 templates/js/translated/stock.js:392
+#: templates/js/translated/stock.js:589 templates/js/translated/stock.js:759
+#: templates/js/translated/stock.js:2801 templates/js/translated/stock.js:2903
+msgid "Quantity"
+msgstr "Quantità"
+
+#: build/models.py:1333
msgid "Stock quantity to allocate to build"
msgstr ""
-#: build/models.py:1302
+#: build/models.py:1341
msgid "Install into"
msgstr "Installa in"
-#: build/models.py:1303
+#: build/models.py:1342
msgid "Destination stock item"
msgstr "Destinazione articolo in giacenza"
-#: build/serializers.py:137 build/serializers.py:417
+#: build/serializers.py:138 build/serializers.py:599
msgid "Build Output"
msgstr ""
-#: build/serializers.py:146
+#: build/serializers.py:150
msgid "Build output does not match the parent build"
msgstr ""
-#: build/serializers.py:150
+#: build/serializers.py:154
msgid "Output part does not match BuildOrder part"
msgstr ""
-#: build/serializers.py:154
+#: build/serializers.py:158
msgid "This build output has already been completed"
msgstr ""
-#: build/serializers.py:158
+#: build/serializers.py:164
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:731
-#: stock/serializers.py:972 stock/templates/stock/item_base.html:313
-#: templates/js/translated/barcode.js:384
-#: templates/js/translated/barcode.js:557 templates/js/translated/build.js:480
-#: templates/js/translated/build.js:1087 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:179 templates/js/translated/stock.js:564
-#: templates/js/translated/stock.js:729 templates/js/translated/stock.js:936
-#: templates/js/translated/stock.js:1684 templates/js/translated/stock.js:2569
-msgid "Location"
-msgstr "Posizione"
+#: build/serializers.py:189
+msgid "Enter quantity for build output"
+msgstr "Inserisci la quantità per l'output di compilazione"
-#: build/serializers.py:191
-msgid "Location for completed build outputs"
-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:557
-#: order/serializers.py:247 stock/templates/stock/item_base.html:187
-#: templates/js/translated/barcode.js:140 templates/js/translated/build.js:1716
-#: templates/js/translated/order.js:591 templates/js/translated/order.js:840
-#: templates/js/translated/order.js:1263 templates/js/translated/stock.js:1659
-#: templates/js/translated/stock.js:2646 templates/js/translated/stock.js:2795
-msgid "Status"
-msgstr "Stato"
-
-#: build/serializers.py:213
-msgid "A list of build outputs must be provided"
-msgstr ""
-
-#: build/serializers.py:249
-msgid "Accept Unallocated"
-msgstr ""
-
-#: build/serializers.py:250
-msgid "Accept that stock items have not been fully allocated to this build order"
-msgstr ""
-
-#: build/serializers.py:260 templates/js/translated/build.js:149
-msgid "Required stock has not been fully allocated"
-msgstr ""
-
-#: build/serializers.py:265
-msgid "Accept Incomplete"
-msgstr ""
-
-#: build/serializers.py:266
-msgid "Accept that the required number of build outputs have not been completed"
-msgstr ""
-
-#: build/serializers.py:276 templates/js/translated/build.js:153
-msgid "Required build quantity has not been completed"
-msgstr ""
-
-#: build/serializers.py:285
-msgid "Build order has incomplete outputs"
-msgstr ""
-
-#: build/serializers.py:313 build/serializers.py:362 part/models.py:2760
-#: part/models.py:2919
-msgid "BOM Item"
-msgstr "Distinta base (Bom)"
-
-#: build/serializers.py:323
-msgid "Build output"
-msgstr ""
-
-#: build/serializers.py:332
-msgid "Build output must point to the same build"
-msgstr ""
-
-#: build/serializers.py:379
-msgid "bom_item.part must point to the same part as the build order"
-msgstr ""
-
-#: build/serializers.py:394 stock/serializers.py:585
-msgid "Item must be in stock"
-msgstr "L'articolo deve essere disponibile"
-
-#: build/serializers.py:408 order/models.py:280 order/serializers.py:240
+#: build/serializers.py:201 build/serializers.py:590 order/models.py:280
+#: order/serializers.py:240 part/serializers.py:471 part/serializers.py:827
#: stock/models.py:367 stock/models.py:1105 stock/serializers.py:305
msgid "Quantity must be greater than zero"
msgstr "La quantità deve essere maggiore di zero"
-#: build/serializers.py:450 order/serializers.py:747
+#: build/serializers.py:208
+msgid "Integer quantity required for trackable parts"
+msgstr ""
+
+#: build/serializers.py:211
+msgid "Integer quantity required, as the bill of materials contains trackable parts"
+msgstr ""
+
+#: build/serializers.py:225 order/serializers.py:820 stock/forms.py:78
+#: stock/serializers.py:314 templates/js/translated/stock.js:239
+#: templates/js/translated/stock.js:393
+msgid "Serial Numbers"
+msgstr "Codice Seriale"
+
+#: build/serializers.py:226
+msgid "Enter serial numbers for build outputs"
+msgstr "Inserisci i numeri di serie per gli output di compilazione (build option)"
+
+#: build/serializers.py:239
+msgid "Auto Allocate Serial Numbers"
+msgstr ""
+
+#: build/serializers.py:240
+msgid "Automatically allocate required items with matching serial numbers"
+msgstr ""
+
+#: build/serializers.py:274 stock/api.py:551
+msgid "The following serial numbers already exist"
+msgstr ""
+
+#: build/serializers.py:327 build/serializers.py:392
+msgid "A list of build outputs must be provided"
+msgstr ""
+
+#: build/serializers.py:369 order/serializers.py:226 order/serializers.py:294
+#: stock/forms.py:169 stock/serializers.py:325 stock/serializers.py:788
+#: stock/serializers.py:1029 stock/templates/stock/item_base.html:315
+#: templates/js/translated/barcode.js:384
+#: templates/js/translated/barcode.js:557 templates/js/translated/build.js:699
+#: templates/js/translated/build.js:1309 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:179 templates/js/translated/stock.js:565
+#: templates/js/translated/stock.js:730 templates/js/translated/stock.js:937
+#: templates/js/translated/stock.js:1808 templates/js/translated/stock.js:2693
+msgid "Location"
+msgstr "Posizione"
+
+#: build/serializers.py:370
+msgid "Location for completed build outputs"
+msgstr "Posizione per gli output di build completati"
+
+#: build/serializers.py:376 build/templates/build/build_base.html:142
+#: build/templates/build/detail.html:63 order/models.py:557
+#: order/serializers.py:247 stock/templates/stock/item_base.html:189
+#: templates/js/translated/barcode.js:140 templates/js/translated/build.js:1954
+#: templates/js/translated/order.js:591 templates/js/translated/order.js:840
+#: templates/js/translated/order.js:1263 templates/js/translated/stock.js:1783
+#: templates/js/translated/stock.js:2770 templates/js/translated/stock.js:2919
+msgid "Status"
+msgstr "Stato"
+
+#: build/serializers.py:428
+msgid "Accept Unallocated"
+msgstr ""
+
+#: build/serializers.py:429
+msgid "Accept that stock items have not been fully allocated to this build order"
+msgstr ""
+
+#: build/serializers.py:439 templates/js/translated/build.js:150
+msgid "Required stock has not been fully allocated"
+msgstr ""
+
+#: build/serializers.py:444
+msgid "Accept Incomplete"
+msgstr ""
+
+#: build/serializers.py:445
+msgid "Accept that the required number of build outputs have not been completed"
+msgstr ""
+
+#: build/serializers.py:455 templates/js/translated/build.js:154
+msgid "Required build quantity has not been completed"
+msgstr ""
+
+#: build/serializers.py:464
+msgid "Build order has incomplete outputs"
+msgstr ""
+
+#: build/serializers.py:467 build/templates/build/build_base.html:95
+msgid "No build outputs have been created for this build order"
+msgstr ""
+
+#: build/serializers.py:495 build/serializers.py:544 part/models.py:2829
+#: part/models.py:2988
+msgid "BOM Item"
+msgstr "Distinta base (Bom)"
+
+#: build/serializers.py:505
+msgid "Build output"
+msgstr ""
+
+#: build/serializers.py:514
+msgid "Build output must point to the same build"
+msgstr ""
+
+#: build/serializers.py:561
+msgid "bom_item.part must point to the same part as the build order"
+msgstr ""
+
+#: build/serializers.py:576 stock/serializers.py:642
+msgid "Item must be in stock"
+msgstr "L'articolo deve essere disponibile"
+
+#: build/serializers.py:632 order/serializers.py:747
#, python-brace-format
msgid "Available quantity ({q}) exceeded"
msgstr "Quantità disponibile ({q}) superata"
-#: build/serializers.py:456
+#: build/serializers.py:638
msgid "Build output must be specified for allocation of tracked parts"
msgstr ""
-#: build/serializers.py:463
+#: build/serializers.py:645
msgid "Build output cannot be specified for allocation of untracked parts"
msgstr ""
-#: build/serializers.py:491 order/serializers.py:990
+#: build/serializers.py:673 order/serializers.py:990
msgid "Allocation items must be provided"
msgstr "Deve essere indicata l'allocazione dell'articolo"
-#: build/tasks.py:92
+#: build/tasks.py:98
msgid "Stock required for build order"
msgstr ""
@@ -1088,7 +1151,7 @@ msgid "Edit Build"
msgstr ""
#: build/templates/build/build_base.html:56
-#: build/templates/build/build_base.html:215 build/views.py:56
+#: build/templates/build/build_base.html:220 build/views.py:53
msgid "Cancel Build"
msgstr ""
@@ -1105,110 +1168,90 @@ msgstr ""
msgid "Build Description"
msgstr ""
-#: build/templates/build/build_base.html:96
+#: build/templates/build/build_base.html:101
#, python-format
msgid "This Build Order is allocated to Sales Order %(link)s"
msgstr ""
-#: build/templates/build/build_base.html:103
+#: build/templates/build/build_base.html:108
#, python-format
msgid "This Build Order is a child of Build Order %(link)s"
msgstr ""
-#: build/templates/build/build_base.html:110
+#: build/templates/build/build_base.html:115
msgid "Build Order is ready to mark as completed"
msgstr ""
-#: build/templates/build/build_base.html:115
+#: build/templates/build/build_base.html:120
msgid "Build Order cannot be completed as outstanding outputs remain"
msgstr ""
-#: build/templates/build/build_base.html:120
+#: build/templates/build/build_base.html:125
msgid "Required build quantity has not yet been completed"
msgstr ""
-#: build/templates/build/build_base.html:125
+#: build/templates/build/build_base.html:130
msgid "Stock has not been fully allocated to this Build Order"
msgstr ""
-#: build/templates/build/build_base.html:146
+#: build/templates/build/build_base.html:151
#: build/templates/build/detail.html:132
#: order/templates/order/order_base.html:156
#: order/templates/order/sales_order_base.html:163
#: report/templates/report/inventree_build_order_base.html:126
-#: templates/js/translated/build.js:1753 templates/js/translated/order.js:854
+#: templates/js/translated/build.js:1991 templates/js/translated/order.js:854
#: templates/js/translated/order.js:1276
msgid "Target Date"
msgstr "Data scadenza"
-#: build/templates/build/build_base.html:151
+#: build/templates/build/build_base.html:156
#, python-format
msgid "This build was due on %(target)s"
msgstr ""
-#: build/templates/build/build_base.html:151
-#: build/templates/build/build_base.html:196
+#: build/templates/build/build_base.html:156
+#: build/templates/build/build_base.html:201
#: order/templates/order/order_base.html:98
#: order/templates/order/sales_order_base.html:93
-#: templates/js/translated/table_filters.js:299
-#: templates/js/translated/table_filters.js:340
-#: templates/js/translated/table_filters.js:361
+#: templates/js/translated/table_filters.js:294
+#: templates/js/translated/table_filters.js:335
+#: templates/js/translated/table_filters.js:356
msgid "Overdue"
msgstr "In ritardo"
-#: build/templates/build/build_base.html:158
+#: build/templates/build/build_base.html:163
#: build/templates/build/detail.html:68 build/templates/build/detail.html:143
#: order/templates/order/sales_order_base.html:170
-#: templates/js/translated/build.js:1702
-#: templates/js/translated/table_filters.js:370
+#: templates/js/translated/build.js:1940
+#: templates/js/translated/table_filters.js:365
msgid "Completed"
msgstr "Completato"
-#: build/templates/build/build_base.html:171
+#: build/templates/build/build_base.html:176
#: build/templates/build/detail.html:95 order/models.py:947
#: order/models.py:1043 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:307
-#: templates/js/translated/order.js:1218 templates/js/translated/stock.js:2304
+#: stock/templates/stock/item_base.html:309
+#: templates/js/translated/order.js:1218 templates/js/translated/stock.js:2428
msgid "Sales Order"
msgstr "Ordini di Vendita"
-#: build/templates/build/build_base.html:178
+#: build/templates/build/build_base.html:183
#: build/templates/build/detail.html:109
#: report/templates/report/inventree_build_order_base.html:153
msgid "Issued By"
msgstr "Inviato da"
-#: build/templates/build/build_base.html:223
+#: build/templates/build/build_base.html:228
msgid "Incomplete Outputs"
msgstr "Output Incompleti"
-#: build/templates/build/build_base.html:224
+#: build/templates/build/build_base.html:229
msgid "Build Order cannot be completed as incomplete build outputs remain"
msgstr ""
-#: build/templates/build/build_output_create.html:7
-msgid "The Bill of Materials contains trackable parts"
-msgstr "La distinta base contiene articoli tracciabili"
-
-#: build/templates/build/build_output_create.html:8
-msgid "Build outputs must be generated individually."
-msgstr ""
-
-#: build/templates/build/build_output_create.html:9
-msgid "Multiple build outputs will be created based on the quantity specified."
-msgstr ""
-
-#: build/templates/build/build_output_create.html:15
-msgid "Trackable parts can have serial numbers specified"
-msgstr ""
-
-#: build/templates/build/build_output_create.html:16
-msgid "Enter serial numbers to generate multiple single build outputs"
-msgstr ""
-
#: build/templates/build/cancel.html:5
msgid "Are you sure you wish to cancel this build?"
msgstr ""
@@ -1225,7 +1268,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:898 stock/forms.py:136
+#: build/templates/build/detail.html:50 order/models.py:898 stock/forms.py:133
#: templates/js/translated/order.js:592 templates/js/translated/order.js:1138
msgid "Destination"
msgstr "Destinazione"
@@ -1234,13 +1277,13 @@ msgstr "Destinazione"
msgid "Destination location not specified"
msgstr "Posizione di destinazione non specificata"
-#: build/templates/build/detail.html:74 templates/js/translated/build.js:707
+#: build/templates/build/detail.html:74 templates/js/translated/build.js:929
msgid "Allocated Parts"
msgstr ""
#: build/templates/build/detail.html:81
-#: stock/templates/stock/item_base.html:331
-#: templates/js/translated/stock.js:1673 templates/js/translated/stock.js:2802
+#: stock/templates/stock/item_base.html:333
+#: templates/js/translated/stock.js:1797 templates/js/translated/stock.js:2926
#: templates/js/translated/table_filters.js:151
#: templates/js/translated/table_filters.js:238
msgid "Batch"
@@ -1249,7 +1292,7 @@ msgstr "Lotto"
#: build/templates/build/detail.html:127
#: order/templates/order/order_base.html:143
#: order/templates/order/sales_order_base.html:157
-#: templates/js/translated/build.js:1724
+#: templates/js/translated/build.js:1962
msgid "Created"
msgstr "Creato"
@@ -1269,7 +1312,7 @@ msgstr ""
msgid "Allocate Stock to Build"
msgstr ""
-#: build/templates/build/detail.html:177 templates/js/translated/build.js:1262
+#: build/templates/build/detail.html:177 templates/js/translated/build.js:1484
msgid "Unallocate stock"
msgstr ""
@@ -1329,52 +1372,60 @@ msgid "Output Actions"
msgstr ""
#: build/templates/build/detail.html:250
-msgid "Complete selected items"
+msgid "Complete selected build outputs"
msgstr ""
#: build/templates/build/detail.html:251
msgid "Complete outputs"
msgstr ""
-#: build/templates/build/detail.html:266
+#: build/templates/build/detail.html:253
+msgid "Delete selected build outputs"
+msgstr ""
+
+#: build/templates/build/detail.html:254
+msgid "Delete outputs"
+msgstr ""
+
+#: build/templates/build/detail.html:270
msgid "Completed Build Outputs"
msgstr ""
-#: build/templates/build/detail.html:278 build/templates/build/sidebar.html:19
+#: build/templates/build/detail.html:282 build/templates/build/sidebar.html:19
#: order/templates/order/po_sidebar.html:9
#: order/templates/order/purchase_order_detail.html:60
#: order/templates/order/sales_order_detail.html:107
-#: order/templates/order/so_sidebar.html:15 part/templates/part/detail.html:213
-#: part/templates/part/part_sidebar.html:52 stock/templates/stock/item.html:112
+#: order/templates/order/so_sidebar.html:15 part/templates/part/detail.html:216
+#: part/templates/part/part_sidebar.html:55 stock/templates/stock/item.html:112
#: stock/templates/stock/stock_sidebar.html:23
msgid "Attachments"
msgstr "Allegati"
-#: build/templates/build/detail.html:294
+#: build/templates/build/detail.html:298
msgid "Build Notes"
msgstr "Genera Note"
-#: build/templates/build/detail.html:298 build/templates/build/detail.html:453
+#: build/templates/build/detail.html:302 build/templates/build/detail.html:478
#: company/templates/company/detail.html:188
#: company/templates/company/detail.html:215
#: order/templates/order/purchase_order_detail.html:80
#: order/templates/order/purchase_order_detail.html:108
#: order/templates/order/sales_order_detail.html:127
#: order/templates/order/sales_order_detail.html:186
-#: part/templates/part/detail.html:141 stock/templates/stock/item.html:132
-#: stock/templates/stock/item.html:235
+#: part/templates/part/detail.html:144 stock/templates/stock/item.html:132
+#: stock/templates/stock/item.html:230
msgid "Edit Notes"
msgstr "Modifica Note"
-#: build/templates/build/detail.html:477
+#: build/templates/build/detail.html:502
msgid "Allocation Complete"
msgstr "Assegnazione Completa"
-#: build/templates/build/detail.html:478
+#: build/templates/build/detail.html:503
msgid "All untracked stock items have been allocated"
msgstr "Tutte le giacenze non tracciate sono state assegnate"
-#: build/templates/build/index.html:18 part/templates/part/detail.html:320
+#: build/templates/build/index.html:18 part/templates/part/detail.html:323
msgid "New Build Order"
msgstr ""
@@ -1406,51 +1457,11 @@ msgstr ""
msgid "Completed Items"
msgstr ""
-#: build/views.py:76
+#: build/views.py:73
msgid "Build was cancelled"
msgstr ""
-#: build/views.py:88
-msgid "Create Build Output"
-msgstr ""
-
-#: build/views.py:106
-msgid "Maximum output quantity is "
-msgstr ""
-
-#: build/views.py:122 stock/serializers.py:363 stock/views.py:1257
-msgid "Serial numbers already exist"
-msgstr "Numeri di serie già esistenti"
-
-#: build/views.py:131
-msgid "Serial numbers required for trackable build output"
-msgstr ""
-
-#: build/views.py:197
-msgid "Delete Build Output"
-msgstr ""
-
-#: build/views.py:218
-msgid "Confirm unallocation of build stock"
-msgstr ""
-
-#: build/views.py:219 stock/views.py:352
-msgid "Check the confirmation box"
-msgstr ""
-
-#: build/views.py:231
-msgid "Build output does not match build"
-msgstr ""
-
-#: build/views.py:233
-msgid "Build output must be specified"
-msgstr ""
-
-#: build/views.py:245
-msgid "Build output deleted"
-msgstr ""
-
-#: build/views.py:286
+#: build/views.py:114
msgid "Delete Build Order"
msgstr "Elimina Ordine Build"
@@ -1639,9 +1650,9 @@ msgstr "Copia Template Parametri Categoria"
msgid "Copy category parameter templates when creating a part"
msgstr "Copia i modelli dei parametri categoria quando si crea un articolo"
-#: common/models.py:705 part/models.py:2489 report/models.py:187
+#: common/models.py:705 part/models.py:2525 report/models.py:187
#: templates/js/translated/table_filters.js:38
-#: templates/js/translated/table_filters.js:422
+#: templates/js/translated/table_filters.js:417
msgid "Template"
msgstr "Template"
@@ -1649,9 +1660,9 @@ msgstr "Template"
msgid "Parts are templates by default"
msgstr "Gli articoli sono modelli per impostazione predefinita"
-#: common/models.py:712 part/models.py:921 templates/js/translated/bom.js:1082
+#: common/models.py:712 part/models.py:951 templates/js/translated/bom.js:1300
#: templates/js/translated/table_filters.js:168
-#: templates/js/translated/table_filters.js:434
+#: templates/js/translated/table_filters.js:429
msgid "Assembly"
msgstr "Assemblaggio"
@@ -1659,8 +1670,8 @@ msgstr "Assemblaggio"
msgid "Parts can be assembled from other components by default"
msgstr "Gli articoli possono essere assemblate da altri componenti per impostazione predefinita"
-#: common/models.py:719 part/models.py:927
-#: templates/js/translated/table_filters.js:438
+#: common/models.py:719 part/models.py:957
+#: templates/js/translated/table_filters.js:433
msgid "Component"
msgstr "Componente"
@@ -1668,7 +1679,7 @@ msgstr "Componente"
msgid "Parts can be used as sub-components by default"
msgstr "Gli articoli possono essere assemblati da altri componenti per impostazione predefinita"
-#: common/models.py:726 part/models.py:938
+#: common/models.py:726 part/models.py:968
msgid "Purchaseable"
msgstr "Acquistabile"
@@ -1676,8 +1687,8 @@ msgstr "Acquistabile"
msgid "Parts are purchaseable by default"
msgstr "Gli articoli sono acquistabili per impostazione predefinita"
-#: common/models.py:733 part/models.py:943
-#: templates/js/translated/table_filters.js:446
+#: common/models.py:733 part/models.py:973
+#: templates/js/translated/table_filters.js:441
msgid "Salable"
msgstr "Vendibile"
@@ -1685,10 +1696,10 @@ msgstr "Vendibile"
msgid "Parts are salable by default"
msgstr "Gli articoli sono acquistabili per impostazione predefinita"
-#: common/models.py:740 part/models.py:933
+#: common/models.py:740 part/models.py:963
#: templates/js/translated/table_filters.js:46
#: templates/js/translated/table_filters.js:100
-#: templates/js/translated/table_filters.js:450
+#: templates/js/translated/table_filters.js:445
msgid "Trackable"
msgstr "Tracciabile"
@@ -1696,7 +1707,7 @@ msgstr "Tracciabile"
msgid "Parts are trackable by default"
msgstr "Gli articoli sono tracciabili per impostazione predefinita"
-#: common/models.py:747 part/models.py:953
+#: common/models.py:747 part/models.py:983
#: part/templates/part/part_base.html:147
#: templates/js/translated/table_filters.js:42
msgid "Virtual"
@@ -1730,589 +1741,595 @@ msgstr "Mostra il prezzo nella BOM"
msgid "Include pricing information in BOM tables"
msgstr "Includi le informazioni sui prezzi nelle tabelle BOM"
-#: common/models.py:780
+#: common/models.py:785
+msgid "Show Price History"
+msgstr ""
+
+#: common/models.py:786
+msgid "Display historical pricing for Part"
+msgstr ""
+
+#: common/models.py:792
msgid "Show related parts"
msgstr "Mostra articoli correlati"
-#: common/models.py:781
+#: common/models.py:793
msgid "Display related parts for a part"
msgstr "Visualizza parti correlate per ogni articolo"
-#: common/models.py:787
+#: common/models.py:799
msgid "Create initial stock"
msgstr "Crea giacenza iniziale"
-#: common/models.py:788
+#: common/models.py:800
msgid "Create initial stock on part creation"
msgstr "Crea giacenza iniziale sulla creazione articolo"
-#: common/models.py:794
+#: common/models.py:806
msgid "Internal Prices"
msgstr "Prezzi interni"
-#: common/models.py:795
+#: common/models.py:807
msgid "Enable internal prices for parts"
msgstr "Abilita prezzi interni per gli articoli"
-#: common/models.py:801
+#: common/models.py:813
msgid "Internal Price as BOM-Price"
msgstr "Prezzo interno come BOM-Price"
-#: common/models.py:802
+#: common/models.py:814
msgid "Use the internal price (if set) in BOM-price calculations"
msgstr "Utilizzare il prezzo interno (se impostato) nel calcolo del prezzo BOM"
-#: common/models.py:808
+#: common/models.py:820
msgid "Part Name Display Format"
msgstr "Formato di visualizzazione del nome articolo"
-#: common/models.py:809
+#: common/models.py:821
msgid "Format to display the part name"
msgstr "Formato per visualizzare il nome dell'articolo"
-#: common/models.py:816
+#: common/models.py:828
msgid "Enable Reports"
msgstr "Abilita Report di Stampa"
-#: common/models.py:817
+#: common/models.py:829
msgid "Enable generation of reports"
msgstr "Abilita generazione di report di stampa"
-#: common/models.py:823 templates/stats.html:25
+#: common/models.py:835 templates/stats.html:25
msgid "Debug Mode"
msgstr "Modalità Debug"
-#: common/models.py:824
+#: common/models.py:836
msgid "Generate reports in debug mode (HTML output)"
msgstr "Genera report in modalità debug (output HTML)"
-#: common/models.py:830
+#: common/models.py:842
msgid "Page Size"
msgstr "Dimensioni pagina"
-#: common/models.py:831
+#: common/models.py:843
msgid "Default page size for PDF reports"
msgstr "Dimensione predefinita della pagina per i report PDF"
-#: common/models.py:841
+#: common/models.py:853
msgid "Test Reports"
msgstr "Stampa di prova"
-#: common/models.py:842
+#: common/models.py:854
msgid "Enable generation of test reports"
msgstr "Abilita generazione di stampe di prova"
-#: common/models.py:848
+#: common/models.py:860
msgid "Stock Expiry"
msgstr "Scadenza giacenza"
-#: common/models.py:849
+#: common/models.py:861
msgid "Enable stock expiry functionality"
msgstr "Abilita funzionalità di scadenza della giacenza"
-#: common/models.py:855
+#: common/models.py:867
msgid "Sell Expired Stock"
msgstr "Vendi giacenza scaduta"
-#: common/models.py:856
+#: common/models.py:868
msgid "Allow sale of expired stock"
msgstr "Consenti la vendita di stock scaduti"
-#: common/models.py:862
+#: common/models.py:874
msgid "Stock Stale Time"
msgstr ""
-#: common/models.py:863
+#: common/models.py:875
msgid "Number of days stock items are considered stale before expiring"
msgstr "Numero di giorni in cui gli articoli in magazzino sono considerati obsoleti prima della scadenza"
-#: common/models.py:865
+#: common/models.py:877
msgid "days"
msgstr "giorni"
-#: common/models.py:870
+#: common/models.py:882
msgid "Build Expired Stock"
msgstr ""
-#: common/models.py:871
+#: common/models.py:883
msgid "Allow building with expired stock"
msgstr ""
-#: common/models.py:877
+#: common/models.py:889
msgid "Stock Ownership Control"
msgstr "Controllo della proprietà della giacenza"
-#: common/models.py:878
+#: common/models.py:890
msgid "Enable ownership control over stock locations and items"
msgstr "Abilita il controllo della proprietà sulle posizioni e gli oggetti in giacenza"
-#: common/models.py:884
+#: common/models.py:896
msgid "Build Order Reference Prefix"
msgstr ""
-#: common/models.py:885
+#: common/models.py:897
msgid "Prefix value for build order reference"
msgstr ""
-#: common/models.py:890
+#: common/models.py:902
msgid "Build Order Reference Regex"
msgstr ""
-#: common/models.py:891
+#: common/models.py:903
msgid "Regular expression pattern for matching build order reference"
msgstr ""
-#: common/models.py:895
+#: common/models.py:907
msgid "Sales Order Reference Prefix"
msgstr ""
-#: common/models.py:896
+#: common/models.py:908
msgid "Prefix value for sales order reference"
msgstr ""
-#: common/models.py:901
+#: common/models.py:913
msgid "Purchase Order Reference Prefix"
msgstr "Referenza ordine d'acquisto"
-#: common/models.py:902
+#: common/models.py:914
msgid "Prefix value for purchase order reference"
msgstr ""
-#: common/models.py:908
+#: common/models.py:920
msgid "Enable password forgot"
msgstr "Abilita password dimenticata"
-#: common/models.py:909
+#: common/models.py:921
msgid "Enable password forgot function on the login pages"
msgstr "Abilita la funzione password dimenticata nelle pagine di accesso"
-#: common/models.py:914
+#: common/models.py:926
msgid "Enable registration"
msgstr "Abilita registrazione"
-#: common/models.py:915
+#: common/models.py:927
msgid "Enable self-registration for users on the login pages"
msgstr "Abilita auto-registrazione per gli utenti nelle pagine di accesso"
-#: common/models.py:920
+#: common/models.py:932
msgid "Enable SSO"
msgstr "SSO abilitato"
-#: common/models.py:921
+#: common/models.py:933
msgid "Enable SSO on the login pages"
msgstr "Abilita SSO nelle pagine di accesso"
-#: common/models.py:926
+#: common/models.py:938
msgid "Email required"
msgstr "Email richiesta"
-#: common/models.py:927
+#: common/models.py:939
msgid "Require user to supply mail on signup"
msgstr "Richiedi all'utente di fornire una email al momento dell'iscrizione"
-#: common/models.py:932
+#: common/models.py:944
msgid "Auto-fill SSO users"
msgstr "Riempimento automatico degli utenti SSO"
-#: common/models.py:933
+#: common/models.py:945
msgid "Automatically fill out user-details from SSO account-data"
msgstr "Compila automaticamente i dettagli dell'utente dai dati dell'account SSO"
-#: common/models.py:938
+#: common/models.py:950
msgid "Mail twice"
msgstr ""
-#: common/models.py:939
+#: common/models.py:951
msgid "On signup ask users twice for their mail"
msgstr ""
-#: common/models.py:944
+#: common/models.py:956
msgid "Password twice"
msgstr ""
-#: common/models.py:945
+#: common/models.py:957
msgid "On signup ask users twice for their password"
msgstr ""
-#: common/models.py:950
+#: common/models.py:962
msgid "Group on signup"
msgstr ""
-#: common/models.py:951
+#: common/models.py:963
msgid "Group to which new users are assigned on registration"
msgstr ""
-#: common/models.py:956
+#: common/models.py:968
msgid "Enforce MFA"
msgstr ""
-#: common/models.py:957
+#: common/models.py:969
msgid "Users must use multifactor security."
msgstr ""
-#: common/models.py:964
+#: common/models.py:976
msgid "Enable URL integration"
msgstr ""
-#: common/models.py:965
+#: common/models.py:977
msgid "Enable plugins to add URL routes"
msgstr ""
-#: common/models.py:971
+#: common/models.py:983
msgid "Enable navigation integration"
msgstr ""
-#: common/models.py:972
+#: common/models.py:984
msgid "Enable plugins to integrate into navigation"
msgstr ""
-#: common/models.py:978
+#: common/models.py:990
msgid "Enable app integration"
msgstr ""
-#: common/models.py:979
+#: common/models.py:991
msgid "Enable plugins to add apps"
msgstr ""
-#: common/models.py:985
+#: common/models.py:997
msgid "Enable schedule integration"
msgstr ""
-#: common/models.py:986
+#: common/models.py:998
msgid "Enable plugins to run scheduled tasks"
msgstr ""
-#: common/models.py:992
+#: common/models.py:1004
msgid "Enable event integration"
msgstr ""
-#: common/models.py:993
+#: common/models.py:1005
msgid "Enable plugins to respond to internal events"
msgstr ""
-#: common/models.py:1008 common/models.py:1216
+#: common/models.py:1020 common/models.py:1228
msgid "Settings key (must be unique - case insensitive"
msgstr "Tasto impostazioni (deve essere univoco - maiuscole e minuscole"
-#: common/models.py:1039
+#: common/models.py:1051
msgid "Show subscribed parts"
msgstr ""
-#: common/models.py:1040
+#: common/models.py:1052
msgid "Show subscribed parts on the homepage"
msgstr ""
-#: common/models.py:1045
+#: common/models.py:1057
msgid "Show subscribed categories"
msgstr "Mostra le categorie sottoscritte"
-#: common/models.py:1046
+#: common/models.py:1058
msgid "Show subscribed part categories on the homepage"
msgstr "Mostra le categorie dei componenti sottoscritti nella homepage"
-#: common/models.py:1051
+#: common/models.py:1063
msgid "Show latest parts"
msgstr "Mostra ultimi articoli"
-#: common/models.py:1052
+#: common/models.py:1064
msgid "Show latest parts on the homepage"
msgstr ""
-#: common/models.py:1057
+#: common/models.py:1069
msgid "Recent Part Count"
msgstr ""
-#: common/models.py:1058
+#: common/models.py:1070
msgid "Number of recent parts to display on index page"
msgstr ""
-#: common/models.py:1064
+#: common/models.py:1076
msgid "Show unvalidated BOMs"
msgstr ""
-#: common/models.py:1065
+#: common/models.py:1077
msgid "Show BOMs that await validation on the homepage"
msgstr ""
-#: common/models.py:1070
+#: common/models.py:1082
msgid "Show recent stock changes"
msgstr ""
-#: common/models.py:1071
+#: common/models.py:1083
msgid "Show recently changed stock items on the homepage"
msgstr ""
-#: common/models.py:1076
+#: common/models.py:1088
msgid "Recent Stock Count"
msgstr ""
-#: common/models.py:1077
+#: common/models.py:1089
msgid "Number of recent stock items to display on index page"
msgstr ""
-#: common/models.py:1082
+#: common/models.py:1094
msgid "Show low stock"
msgstr ""
-#: common/models.py:1083
+#: common/models.py:1095
msgid "Show low stock items on the homepage"
msgstr ""
-#: common/models.py:1088
+#: common/models.py:1100
msgid "Show depleted stock"
msgstr ""
-#: common/models.py:1089
+#: common/models.py:1101
msgid "Show depleted stock items on the homepage"
msgstr ""
-#: common/models.py:1094
+#: common/models.py:1106
msgid "Show needed stock"
msgstr ""
-#: common/models.py:1095
+#: common/models.py:1107
msgid "Show stock items needed for builds on the homepage"
msgstr ""
-#: common/models.py:1100
+#: common/models.py:1112
msgid "Show expired stock"
msgstr ""
-#: common/models.py:1101
+#: common/models.py:1113
msgid "Show expired stock items on the homepage"
msgstr ""
-#: common/models.py:1106
+#: common/models.py:1118
msgid "Show stale stock"
msgstr ""
-#: common/models.py:1107
+#: common/models.py:1119
msgid "Show stale stock items on the homepage"
msgstr ""
-#: common/models.py:1112
+#: common/models.py:1124
msgid "Show pending builds"
msgstr ""
-#: common/models.py:1113
+#: common/models.py:1125
msgid "Show pending builds on the homepage"
msgstr ""
-#: common/models.py:1118
+#: common/models.py:1130
msgid "Show overdue builds"
msgstr ""
-#: common/models.py:1119
+#: common/models.py:1131
msgid "Show overdue builds on the homepage"
msgstr ""
-#: common/models.py:1124
+#: common/models.py:1136
msgid "Show outstanding POs"
msgstr ""
-#: common/models.py:1125
+#: common/models.py:1137
msgid "Show outstanding POs on the homepage"
msgstr ""
-#: common/models.py:1130
+#: common/models.py:1142
msgid "Show overdue POs"
msgstr ""
-#: common/models.py:1131
+#: common/models.py:1143
msgid "Show overdue POs on the homepage"
msgstr ""
-#: common/models.py:1136
+#: common/models.py:1148
msgid "Show outstanding SOs"
msgstr ""
-#: common/models.py:1137
+#: common/models.py:1149
msgid "Show outstanding SOs on the homepage"
msgstr ""
-#: common/models.py:1142
+#: common/models.py:1154
msgid "Show overdue SOs"
msgstr ""
-#: common/models.py:1143
+#: common/models.py:1155
msgid "Show overdue SOs on the homepage"
msgstr ""
-#: common/models.py:1149
+#: common/models.py:1161
msgid "Inline label display"
msgstr "Visualizzazione dell'etichetta in linea"
-#: common/models.py:1150
+#: common/models.py:1162
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:1156
+#: common/models.py:1168
msgid "Inline report display"
msgstr "Visualizzazione dell'etichetta in linea"
-#: common/models.py:1157
+#: common/models.py:1169
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:1163
+#: common/models.py:1175
msgid "Search Preview Results"
msgstr "Risultati Dell'Anteprima Di Ricerca"
-#: common/models.py:1164
+#: common/models.py:1176
msgid "Number of results to show in search preview window"
msgstr ""
-#: common/models.py:1170
+#: common/models.py:1182
msgid "Search Show Stock"
msgstr ""
-#: common/models.py:1171
+#: common/models.py:1183
msgid "Display stock levels in search preview window"
msgstr ""
-#: common/models.py:1177
+#: common/models.py:1189
msgid "Hide Inactive Parts"
msgstr ""
-#: common/models.py:1178
+#: common/models.py:1190
msgid "Hide inactive parts in search preview window"
msgstr ""
-#: common/models.py:1184
+#: common/models.py:1196
msgid "Show Quantity in Forms"
msgstr ""
-#: common/models.py:1185
+#: common/models.py:1197
msgid "Display available part quantity in some forms"
msgstr ""
-#: common/models.py:1191
+#: common/models.py:1203
msgid "Escape Key Closes Forms"
msgstr ""
-#: common/models.py:1192
+#: common/models.py:1204
msgid "Use the escape key to close modal forms"
msgstr ""
-#: common/models.py:1198
+#: common/models.py:1210
msgid "Fixed Navbar"
msgstr ""
-#: common/models.py:1199
+#: common/models.py:1211
msgid "InvenTree navbar position is fixed to the top of the screen"
msgstr ""
-#: common/models.py:1264 company/forms.py:43
+#: common/models.py:1276 company/forms.py:43
msgid "Price break quantity"
msgstr ""
-#: common/models.py:1271 company/serializers.py:264
+#: common/models.py:1283 company/serializers.py:264
#: company/templates/company/supplier_part.html:256
#: templates/js/translated/part.js:915 templates/js/translated/part.js:1867
msgid "Price"
msgstr "Prezzo"
-#: common/models.py:1272
+#: common/models.py:1284
msgid "Unit price at specified quantity"
msgstr ""
-#: common/models.py:1429 common/models.py:1568
+#: common/models.py:1441 common/models.py:1580
msgid "Endpoint"
msgstr ""
-#: common/models.py:1430
+#: common/models.py:1442
msgid "Endpoint at which this webhook is received"
msgstr ""
-#: common/models.py:1439
+#: common/models.py:1451
msgid "Name for this webhook"
msgstr ""
-#: common/models.py:1444 part/models.py:948 plugin/models.py:46
+#: common/models.py:1456 part/models.py:978 plugin/models.py:46
#: templates/js/translated/table_filters.js:34
#: templates/js/translated/table_filters.js:96
-#: templates/js/translated/table_filters.js:295
-#: templates/js/translated/table_filters.js:417
+#: templates/js/translated/table_filters.js:290
+#: templates/js/translated/table_filters.js:412
msgid "Active"
msgstr "Attivo"
-#: common/models.py:1445
+#: common/models.py:1457
msgid "Is this webhook active"
msgstr ""
-#: common/models.py:1459
+#: common/models.py:1471
msgid "Token"
msgstr ""
-#: common/models.py:1460
+#: common/models.py:1472
msgid "Token for access"
msgstr ""
-#: common/models.py:1467
+#: common/models.py:1479
msgid "Secret"
msgstr ""
-#: common/models.py:1468
+#: common/models.py:1480
msgid "Shared secret for HMAC"
msgstr ""
-#: common/models.py:1535
+#: common/models.py:1547
msgid "Message ID"
msgstr ""
-#: common/models.py:1536
+#: common/models.py:1548
msgid "Unique identifier for this message"
msgstr ""
-#: common/models.py:1544
+#: common/models.py:1556
msgid "Host"
msgstr ""
-#: common/models.py:1545
+#: common/models.py:1557
msgid "Host from which this message was received"
msgstr ""
-#: common/models.py:1552
+#: common/models.py:1564
msgid "Header"
msgstr ""
-#: common/models.py:1553
+#: common/models.py:1565
msgid "Header of this message"
msgstr ""
-#: common/models.py:1559
+#: common/models.py:1571
msgid "Body"
msgstr ""
-#: common/models.py:1560
+#: common/models.py:1572
msgid "Body of this message"
msgstr ""
-#: common/models.py:1569
+#: common/models.py:1581
msgid "Endpoint on which this message was received"
msgstr ""
-#: common/models.py:1574
+#: common/models.py:1586
msgid "Worked on"
msgstr ""
-#: common/models.py:1575
+#: common/models.py:1587
msgid "Was the work on this message finished?"
msgstr ""
#: common/views.py:93 order/templates/order/order_wizard/po_upload.html:49
#: order/templates/order/purchase_order_detail.html:24 order/views.py:243
-#: part/templates/part/bom_upload/upload_file.html:52
-#: part/templates/part/import_wizard/part_upload.html:47 part/views.py:213
-#: part/views.py:773
+#: part/templates/part/import_wizard/part_upload.html:47 part/views.py:210
+#: templates/patterns/wizard/upload.html:35
msgid "Upload File"
msgstr "Carica file"
-#: common/views.py:94 order/templates/order/order_wizard/match_fields.html:52
-#: order/views.py:244 part/templates/part/bom_upload/match_fields.html:52
+#: common/views.py:94 order/views.py:244
#: part/templates/part/import_wizard/ajax_match_fields.html:45
-#: part/templates/part/import_wizard/match_fields.html:52 part/views.py:214
-#: part/views.py:774
+#: part/templates/part/import_wizard/match_fields.html:52 part/views.py:211
+#: templates/patterns/wizard/match_fields.html:51
msgid "Match Fields"
msgstr "Abbina Campi"
@@ -2328,15 +2345,13 @@ msgstr "Corrispondenza campi non riuscita"
msgid "Parts imported"
msgstr "Articoli importati"
-#: common/views.py:517 order/templates/order/order_wizard/match_fields.html:27
-#: order/templates/order/order_wizard/match_parts.html:19
+#: common/views.py:517 order/templates/order/order_wizard/match_parts.html:19
#: order/templates/order/order_wizard/po_upload.html:47
-#: part/templates/part/bom_upload/match_fields.html:27
-#: part/templates/part/bom_upload/match_parts.html:19
-#: part/templates/part/bom_upload/upload_file.html:50
#: part/templates/part/import_wizard/match_fields.html:27
#: part/templates/part/import_wizard/match_references.html:19
#: part/templates/part/import_wizard/part_upload.html:45
+#: templates/patterns/wizard/match_fields.html:26
+#: templates/patterns/wizard/upload.html:33
msgid "Previous Step"
msgstr "Passaggio Precedente"
@@ -2404,7 +2419,7 @@ msgstr "Punto di contatto"
msgid "Link to external company information"
msgstr "Collegamento alle informazioni aziendali esterne"
-#: company/models.py:139 part/models.py:840
+#: company/models.py:139 part/models.py:870
msgid "Image"
msgstr "Immagine"
@@ -2442,7 +2457,7 @@ msgid "Default currency used for this company"
msgstr ""
#: company/models.py:320 company/models.py:535 stock/models.py:471
-#: stock/templates/stock/item_base.html:142 templates/js/translated/bom.js:328
+#: stock/templates/stock/item_base.html:144 templates/js/translated/bom.js:541
msgid "Base Part"
msgstr "Articolo di base"
@@ -2453,11 +2468,11 @@ 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:380
+#: stock/templates/stock/item_base.html:382
#: templates/js/translated/company.js:333
#: templates/js/translated/company.js:517
#: templates/js/translated/company.js:800 templates/js/translated/part.js:234
-#: templates/js/translated/table_filters.js:389
+#: templates/js/translated/table_filters.js:384
msgid "Manufacturer"
msgstr "Produttore"
@@ -2488,7 +2503,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:390
+#: stock/templates/stock/item_base.html:392
msgid "Manufacturer Part"
msgstr "Codice articolo produttore"
@@ -2499,7 +2514,7 @@ msgstr "Nome parametro"
#: company/models.py:422
#: report/templates/report/inventree_test_report_base.html:95
#: stock/models.py:1988 templates/js/translated/company.js:647
-#: templates/js/translated/part.js:715 templates/js/translated/stock.js:1304
+#: templates/js/translated/part.js:715 templates/js/translated/stock.js:1332
msgid "Value"
msgstr "Valore"
@@ -2507,9 +2522,9 @@ msgstr "Valore"
msgid "Parameter value"
msgstr "Valore del parametro"
-#: company/models.py:429 part/models.py:915 part/models.py:2457
+#: company/models.py:429 part/models.py:945 part/models.py:2493
#: part/templates/part/part_base.html:288
-#: templates/InvenTree/settings/settings.html:287
+#: templates/InvenTree/settings/settings.html:324
#: templates/js/translated/company.js:653 templates/js/translated/part.js:721
msgid "Units"
msgstr "Unità"
@@ -2526,11 +2541,11 @@ msgstr "L'articolo del costruttore collegato deve riferirsi alla stesso articolo
#: company/templates/company/supplier_part.html:87 order/models.py:227
#: order/templates/order/order_base.html:112
#: order/templates/order/order_wizard/select_pos.html:30 part/bom.py:237
-#: part/bom.py:265 stock/templates/stock/item_base.html:397
+#: part/bom.py:265 stock/templates/stock/item_base.html:399
#: templates/js/translated/company.js:337
#: templates/js/translated/company.js:774 templates/js/translated/order.js:823
#: templates/js/translated/part.js:215 templates/js/translated/part.js:863
-#: templates/js/translated/table_filters.js:393
+#: templates/js/translated/table_filters.js:388
msgid "Supplier"
msgstr "Fornitore"
@@ -2561,22 +2576,23 @@ msgid "Supplier part description"
msgstr "Descrizione articolo fornitore"
#: company/models.py:576 company/templates/company/supplier_part.html:119
-#: part/models.py:2648 report/templates/report/inventree_po_report.html:93
-#: report/templates/report/inventree_so_report.html:93
+#: part/models.py:2717 part/templates/part/upload_bom.html:59
+#: report/templates/report/inventree_po_report.html:93
+#: report/templates/report/inventree_so_report.html:93 stock/serializers.py:409
msgid "Note"
msgstr "Nota"
-#: company/models.py:580 part/models.py:1781
+#: company/models.py:580 part/models.py:1817
msgid "base cost"
msgstr "costo base"
-#: company/models.py:580 part/models.py:1781
+#: company/models.py:580 part/models.py:1817
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:495 stock/templates/stock/item_base.html:338
-#: templates/js/translated/company.js:850 templates/js/translated/stock.js:1799
+#: stock/models.py:495 stock/templates/stock/item_base.html:340
+#: templates/js/translated/company.js:850 templates/js/translated/stock.js:1923
msgid "Packaging"
msgstr "Confezionamento"
@@ -2584,7 +2600,7 @@ msgstr "Confezionamento"
msgid "Part packaging"
msgstr "Imballaggio del pezzo"
-#: company/models.py:584 part/models.py:1783
+#: company/models.py:584 part/models.py:1819
msgid "multiple"
msgstr "multiplo"
@@ -2645,11 +2661,11 @@ msgstr "Scarica immagine dall'URL"
#: company/templates/company/company_base.html:83 order/models.py:552
#: order/templates/order/sales_order_base.html:115 stock/models.py:514
-#: stock/models.py:515 stock/serializers.py:626
-#: stock/templates/stock/item_base.html:290
+#: stock/models.py:515 stock/serializers.py:683
+#: stock/templates/stock/item_base.html:292
#: templates/js/translated/company.js:329 templates/js/translated/order.js:1240
-#: templates/js/translated/stock.js:2610
-#: templates/js/translated/table_filters.js:397
+#: templates/js/translated/stock.js:2734
+#: templates/js/translated/table_filters.js:392
msgid "Customer"
msgstr "Cliente"
@@ -2679,7 +2695,7 @@ msgstr "Crea nuovo fornitore"
#: company/templates/company/detail.html:20
#: company/templates/company/manufacturer_part.html:118
-#: part/templates/part/detail.html:353
+#: part/templates/part/detail.html:356
msgid "New Supplier Part"
msgstr "Nuovo fornitore articolo"
@@ -2687,8 +2703,8 @@ msgstr "Nuovo fornitore articolo"
#: company/templates/company/detail.html:79
#: company/templates/company/manufacturer_part.html:127
#: company/templates/company/manufacturer_part.html:156
-#: part/templates/part/category.html:171 part/templates/part/detail.html:362
-#: part/templates/part/detail.html:391
+#: part/templates/part/category.html:171 part/templates/part/detail.html:365
+#: part/templates/part/detail.html:394
msgid "Options"
msgstr "Opzioni"
@@ -2716,7 +2732,7 @@ msgstr ""
msgid "Create new manufacturer part"
msgstr ""
-#: company/templates/company/detail.html:67 part/templates/part/detail.html:381
+#: company/templates/company/detail.html:67 part/templates/part/detail.html:384
msgid "New Manufacturer Part"
msgstr ""
@@ -2730,7 +2746,7 @@ msgstr "Giacenza Fornitore"
#: order/templates/order/order_base.html:13
#: order/templates/order/purchase_orders.html:8
#: order/templates/order/purchase_orders.html:12
-#: part/templates/part/detail.html:85 part/templates/part/part_sidebar.html:37
+#: part/templates/part/detail.html:85 part/templates/part/part_sidebar.html:40
#: templates/InvenTree/index.html:252 templates/InvenTree/search.html:197
#: templates/InvenTree/settings/sidebar.html:45 templates/navbar.html:47
#: users/models.py:45
@@ -2752,7 +2768,7 @@ msgstr ""
#: order/templates/order/sales_order_base.html:13
#: order/templates/order/sales_orders.html:8
#: order/templates/order/sales_orders.html:15
-#: part/templates/part/detail.html:108 part/templates/part/part_sidebar.html:41
+#: part/templates/part/detail.html:108 part/templates/part/part_sidebar.html:44
#: templates/InvenTree/index.html:283 templates/InvenTree/search.html:217
#: templates/InvenTree/settings/sidebar.html:47 templates/navbar.html:58
#: users/models.py:46
@@ -2770,7 +2786,7 @@ msgid "New Sales Order"
msgstr ""
#: company/templates/company/detail.html:168
-#: templates/js/translated/build.js:1059
+#: templates/js/translated/build.js:1281
msgid "Assigned Stock"
msgstr ""
@@ -2780,13 +2796,13 @@ msgstr ""
#: company/templates/company/detail.html:384
#: company/templates/company/manufacturer_part.html:215
-#: part/templates/part/detail.html:435
+#: part/templates/part/detail.html:438
msgid "Delete Supplier Parts?"
msgstr "Elimina articoli fornitore?"
#: company/templates/company/detail.html:385
#: company/templates/company/manufacturer_part.html:216
-#: part/templates/part/detail.html:436
+#: part/templates/part/detail.html:439
msgid "All selected supplier parts will be deleted"
msgstr "Tutte gli articoli del fornitore selezionati saranno eliminati"
@@ -2824,36 +2840,36 @@ 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:35 part/templates/part/prices.html:163
+#: part/templates/part/part_sidebar.html:38 part/templates/part/prices.html:163
#: templates/InvenTree/search.html:188 templates/navbar.html:45
msgid "Suppliers"
msgstr "Fornitori"
#: company/templates/company/manufacturer_part.html:129
-#: part/templates/part/detail.html:364
+#: part/templates/part/detail.html:367
msgid "Delete supplier parts"
msgstr "Elimina articolo fornitore"
#: company/templates/company/manufacturer_part.html:129
#: company/templates/company/manufacturer_part.html:158
#: company/templates/company/manufacturer_part.html:254
-#: part/templates/part/detail.html:364 part/templates/part/detail.html:393
+#: part/templates/part/detail.html:367 part/templates/part/detail.html:396
#: templates/js/translated/company.js:426 templates/js/translated/helpers.js:31
-#: users/models.py:212
+#: users/models.py:217
msgid "Delete"
msgstr "Elimina"
#: company/templates/company/manufacturer_part.html:143
#: company/templates/company/manufacturer_part_sidebar.html:5
#: part/templates/part/category_sidebar.html:17
-#: part/templates/part/detail.html:187 part/templates/part/part_sidebar.html:8
+#: part/templates/part/detail.html:190 part/templates/part/part_sidebar.html:9
msgid "Parameters"
msgstr "Parametri"
#: company/templates/company/manufacturer_part.html:147
-#: part/templates/part/detail.html:192
+#: part/templates/part/detail.html:195
#: templates/InvenTree/settings/category.html:12
-#: templates/InvenTree/settings/part.html:65
+#: templates/InvenTree/settings/part.html:66
msgid "New Parameter"
msgstr "Nuovo Parametro"
@@ -2862,7 +2878,7 @@ msgid "Delete parameters"
msgstr "Elimina il parametro"
#: company/templates/company/manufacturer_part.html:191
-#: part/templates/part/detail.html:892
+#: part/templates/part/detail.html:895
msgid "Add Parameter"
msgstr "Aggiungi parametro"
@@ -2892,8 +2908,8 @@ msgstr ""
#: company/templates/company/supplier_part.html:7
#: company/templates/company/supplier_part.html:24 stock/models.py:479
-#: stock/templates/stock/item_base.html:402
-#: templates/js/translated/company.js:790 templates/js/translated/stock.js:1756
+#: stock/templates/stock/item_base.html:404
+#: templates/js/translated/company.js:790 templates/js/translated/stock.js:1880
msgid "Supplier Part"
msgstr "Articolo Fornitore"
@@ -2919,7 +2935,7 @@ msgstr "Crea nuova allocazione magazzino"
#: company/templates/company/supplier_part.html:142
#: part/templates/part/detail.html:25 stock/templates/stock/location.html:167
-#: templates/js/translated/stock.js:368
+#: templates/js/translated/stock.js:369
msgid "New Stock Item"
msgstr "Nuovo Elemento in giacenza"
@@ -2940,7 +2956,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:1628
+#: part/templates/part/prices.html:271 part/views.py:1319
msgid "Add Price Break"
msgstr "Aggiungi riduzione prezzo"
@@ -2948,11 +2964,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:1690
+#: company/templates/company/supplier_part.html:224 part/views.py:1381
msgid "Delete Price Break"
msgstr "Elimina riduzione di prezzo"
-#: company/templates/company/supplier_part.html:238 part/views.py:1676
+#: company/templates/company/supplier_part.html:238 part/views.py:1367
msgid "Edit Price Break"
msgstr ""
@@ -2965,15 +2981,15 @@ msgid "Delete price break"
msgstr "Cancella riduzione di prezzo"
#: company/templates/company/supplier_part_navbar.html:15
-#: part/templates/part/part_sidebar.html:14
+#: part/templates/part/part_sidebar.html:15
#: 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:150
#: templates/InvenTree/settings/sidebar.html:41
-#: templates/js/translated/bom.js:340 templates/js/translated/part.js:495
+#: templates/js/translated/bom.js:553 templates/js/translated/part.js:495
#: templates/js/translated/part.js:630 templates/js/translated/part.js:1125
-#: templates/js/translated/part.js:1286 templates/js/translated/stock.js:935
-#: templates/js/translated/stock.js:1588 templates/navbar.html:28
+#: templates/js/translated/part.js:1286 templates/js/translated/stock.js:936
+#: templates/js/translated/stock.js:1712 templates/navbar.html:28
msgid "Stock"
msgstr "Magazzino"
@@ -2987,7 +3003,7 @@ msgid "Supplier Part Pricing"
msgstr "Prezzo articolo del fornitore"
#: company/templates/company/supplier_part_navbar.html:29
-#: part/templates/part/part_sidebar.html:28
+#: part/templates/part/part_sidebar.html:30
msgid "Pricing"
msgstr "Prezzi"
@@ -2996,7 +3012,7 @@ msgstr "Prezzi"
#: stock/templates/stock/location.html:151
#: stock/templates/stock/location.html:163
#: stock/templates/stock/location_sidebar.html:7
-#: templates/InvenTree/search.html:152 templates/js/translated/stock.js:2509
+#: templates/InvenTree/search.html:152 templates/js/translated/stock.js:2633
#: templates/stats.html:105 templates/stats.html:114 users/models.py:43
msgid "Stock Items"
msgstr "Articoli in magazzino"
@@ -3026,20 +3042,20 @@ msgstr "Aziende"
msgid "New Company"
msgstr "Nuova Azienda"
-#: company/views.py:129 part/views.py:593
+#: company/views.py:129 part/views.py:591
msgid "Download Image"
msgstr "Download Immagine"
-#: company/views.py:158 part/views.py:625
+#: company/views.py:158 part/views.py:623
msgid "Image size exceeds maximum allowable size for download"
msgstr "La dimensione dell'immagine supera la dimensione massima consentita per il download"
-#: company/views.py:165 part/views.py:632
+#: company/views.py:165 part/views.py:630
#, python-brace-format
msgid "Invalid response: {code}"
msgstr "Risposta non valida: {code}"
-#: company/views.py:174 part/views.py:641
+#: company/views.py:174 part/views.py:639
msgid "Supplied URL is not a valid image file"
msgstr "L'URL fornito non è un file immagine valido"
@@ -3256,16 +3272,16 @@ msgid "Supplier part must match supplier"
msgstr ""
#: order/models.py:855 order/models.py:946 order/models.py:1042
-#: templates/js/translated/order.js:1820 templates/js/translated/stock.js:2271
+#: templates/js/translated/order.js:1820 templates/js/translated/stock.js:2395
msgid "Order"
msgstr ""
#: order/models.py:856 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:352
+#: stock/templates/stock/item_base.html:354
#: templates/js/translated/order.js:801 templates/js/translated/part.js:838
-#: templates/js/translated/stock.js:1733 templates/js/translated/stock.js:2591
+#: templates/js/translated/stock.js:1857 templates/js/translated/stock.js:2715
msgid "Purchase Order"
msgstr ""
@@ -3276,7 +3292,7 @@ msgstr "Articolo Fornitore"
#: order/models.py:884 order/templates/order/order_base.html:163
#: templates/js/translated/order.js:589 templates/js/translated/order.js:1118
#: templates/js/translated/part.js:910 templates/js/translated/part.js:937
-#: templates/js/translated/table_filters.js:317
+#: templates/js/translated/table_filters.js:312
msgid "Received"
msgstr ""
@@ -3285,8 +3301,8 @@ msgid "Number of items received"
msgstr ""
#: order/models.py:892 part/templates/part/prices.html:176 stock/models.py:608
-#: stock/serializers.py:170 stock/templates/stock/item_base.html:359
-#: templates/js/translated/stock.js:1787
+#: stock/serializers.py:170 stock/templates/stock/item_base.html:361
+#: templates/js/translated/stock.js:1911
msgid "Purchase Price"
msgstr ""
@@ -3530,7 +3546,7 @@ msgstr ""
#: order/templates/order/order_base.html:94
#: order/templates/order/sales_order_base.html:89
-#: templates/js/translated/stock.js:2327
+#: templates/js/translated/stock.js:2451
msgid "Order Status"
msgstr "Stato dell'ordine"
@@ -3574,73 +3590,20 @@ msgstr ""
msgid "After placing this purchase order, line items will no longer be editable."
msgstr ""
-#: order/templates/order/order_wizard/match_fields.html:9
-#: part/templates/part/bom_upload/match_fields.html:9
-#: part/templates/part/import_wizard/ajax_match_fields.html:9
-#: part/templates/part/import_wizard/match_fields.html:9
-msgid "Missing selections for the following required columns"
-msgstr ""
-
-#: order/templates/order/order_wizard/match_fields.html:20
-#: part/templates/part/bom_upload/match_fields.html:20
-#: part/templates/part/import_wizard/ajax_match_fields.html:20
-#: part/templates/part/import_wizard/match_fields.html:20
-msgid "Duplicate selections found, see below. Fix them then retry submitting."
-msgstr ""
-
-#: order/templates/order/order_wizard/match_fields.html:29
-#: order/templates/order/order_wizard/match_parts.html:21
-#: part/templates/part/bom_upload/match_fields.html:29
-#: part/templates/part/bom_upload/match_parts.html:21
-#: part/templates/part/import_wizard/match_fields.html:29
-#: part/templates/part/import_wizard/match_references.html:21
-msgid "Submit Selections"
-msgstr ""
-
-#: order/templates/order/order_wizard/match_fields.html:35
-#: part/templates/part/bom_upload/match_fields.html:35
-#: part/templates/part/import_wizard/ajax_match_fields.html:28
-#: part/templates/part/import_wizard/match_fields.html:35
-msgid "File Fields"
-msgstr ""
-
-#: order/templates/order/order_wizard/match_fields.html:42
-#: part/templates/part/bom_upload/match_fields.html:42
-#: part/templates/part/import_wizard/ajax_match_fields.html:35
-#: part/templates/part/import_wizard/match_fields.html:42
-msgid "Remove column"
-msgstr "Elimina colonna"
-
-#: order/templates/order/order_wizard/match_fields.html:60
-#: part/templates/part/bom_upload/match_fields.html:60
-#: part/templates/part/import_wizard/ajax_match_fields.html:53
-#: part/templates/part/import_wizard/match_fields.html:60
-msgid "Duplicate selection"
-msgstr "Duplica selezionati"
-
-#: order/templates/order/order_wizard/match_fields.html:71
-#: order/templates/order/order_wizard/match_parts.html:52
-#: part/templates/part/bom_upload/match_fields.html:71
-#: part/templates/part/bom_upload/match_parts.html:53
-#: part/templates/part/import_wizard/ajax_match_fields.html:64
-#: part/templates/part/import_wizard/ajax_match_references.html:42
-#: part/templates/part/import_wizard/match_fields.html:71
-#: part/templates/part/import_wizard/match_references.html:49
-#: templates/js/translated/build.js:300 templates/js/translated/build.js:1311
-#: templates/js/translated/order.js:537 templates/js/translated/order.js:1488
-#: templates/js/translated/stock.js:601 templates/js/translated/stock.js:769
-msgid "Remove row"
-msgstr "Elimina riga"
-
#: order/templates/order/order_wizard/match_parts.html:12
-#: part/templates/part/bom_upload/match_parts.html:12
#: part/templates/part/import_wizard/ajax_match_references.html:12
#: part/templates/part/import_wizard/match_references.html:12
msgid "Errors exist in the submitted data"
msgstr "Errori esistenti nei dati inviati"
+#: order/templates/order/order_wizard/match_parts.html:21
+#: part/templates/part/import_wizard/match_fields.html:29
+#: part/templates/part/import_wizard/match_references.html:21
+#: templates/patterns/wizard/match_fields.html:28
+msgid "Submit Selections"
+msgstr ""
+
#: order/templates/order/order_wizard/match_parts.html:28
-#: part/templates/part/bom_upload/match_parts.html:28
#: part/templates/part/import_wizard/ajax_match_references.html:21
#: part/templates/part/import_wizard/match_references.html:28
msgid "Row"
@@ -3650,6 +3613,19 @@ msgstr "Riga"
msgid "Select Supplier Part"
msgstr "Seleziona l'articolo del fornitore"
+#: order/templates/order/order_wizard/match_parts.html:52
+#: part/templates/part/import_wizard/ajax_match_fields.html:64
+#: part/templates/part/import_wizard/ajax_match_references.html:42
+#: part/templates/part/import_wizard/match_fields.html:71
+#: part/templates/part/import_wizard/match_references.html:49
+#: templates/js/translated/bom.js:76 templates/js/translated/build.js:380
+#: templates/js/translated/build.js:528 templates/js/translated/build.js:1547
+#: templates/js/translated/order.js:537 templates/js/translated/order.js:1488
+#: templates/js/translated/stock.js:602 templates/js/translated/stock.js:770
+#: templates/patterns/wizard/match_fields.html:70
+msgid "Remove row"
+msgstr "Elimina riga"
+
#: order/templates/order/order_wizard/po_upload.html:8
msgid "Return to Orders"
msgstr ""
@@ -3659,9 +3635,9 @@ msgid "Upload File for Purchase Order"
msgstr ""
#: order/templates/order/order_wizard/po_upload.html:25
-#: part/templates/part/bom_upload/upload_file.html:21
#: part/templates/part/import_wizard/ajax_part_upload.html:10
#: part/templates/part/import_wizard/part_upload.html:23
+#: templates/patterns/wizard/upload.html:11
#, python-format
msgid "Step %(step)s of %(count)s"
msgstr ""
@@ -3819,7 +3795,7 @@ msgid "Pending Shipments"
msgstr ""
#: order/templates/order/sales_order_detail.html:48
-#: templates/js/translated/bom.js:732 templates/js/translated/build.js:1243
+#: templates/js/translated/bom.js:945 templates/js/translated/build.js:1465
msgid "Actions"
msgstr ""
@@ -3922,7 +3898,7 @@ msgstr "Specifica la posizione per lo stock iniziale"
msgid "This field is required"
msgstr ""
-#: part/bom.py:125 part/models.py:83 part/models.py:849
+#: part/bom.py:125 part/models.py:83 part/models.py:879
#: part/templates/part/category.html:108 part/templates/part/part_base.html:338
msgid "Default Location"
msgstr "Posizione Predefinita"
@@ -3968,7 +3944,7 @@ msgstr "Keywords predefinite"
msgid "Default keywords for parts in this category"
msgstr "Parole chiave predefinite per gli articoli in questa categoria"
-#: part/models.py:97 part/models.py:2533 part/templates/part/category.html:15
+#: part/models.py:97 part/models.py:2569 part/templates/part/category.html:15
#: part/templates/part/part_app_base.html:10
msgid "Part Category"
msgstr "Categoria Articoli"
@@ -3994,408 +3970,478 @@ msgstr "Articoli"
msgid "Invalid choice for parent part"
msgstr "Scelta non valida per l'articolo principale"
-#: part/models.py:502 part/models.py:514
+#: part/models.py:532 part/models.py:544
#, python-brace-format
msgid "Part '{p1}' is used in BOM for '{p2}' (recursive)"
msgstr ""
-#: part/models.py:644
+#: part/models.py:674
msgid "Next available serial numbers are"
msgstr "I successivi numeri di serie disponibili sono"
-#: part/models.py:648
+#: part/models.py:678
msgid "Next available serial number is"
msgstr "Il prossimo numero di serie disponibile è"
-#: part/models.py:653
+#: part/models.py:683
msgid "Most recent serial number is"
msgstr "Il numero di serie più recente è"
-#: part/models.py:748
+#: part/models.py:778
msgid "Duplicate IPN not allowed in part settings"
msgstr "Non è consentito duplicare IPN nelle impostazioni dell'articolo"
-#: part/models.py:773
+#: part/models.py:803 part/models.py:2622
msgid "Part name"
msgstr "Nome articolo"
-#: part/models.py:780
+#: part/models.py:810
msgid "Is Template"
msgstr "È Template"
-#: part/models.py:781
+#: part/models.py:811
msgid "Is this part a template part?"
msgstr "Quest'articolo è un articolo di template?"
-#: part/models.py:791
+#: part/models.py:821
msgid "Is this part a variant of another part?"
msgstr "Questa parte è una variante di un altro articolo?"
-#: part/models.py:792
+#: part/models.py:822
msgid "Variant Of"
msgstr "Variante Di"
-#: part/models.py:798
+#: part/models.py:828
msgid "Part description"
msgstr "Descrizione articolo"
-#: part/models.py:803 part/templates/part/category.html:86
+#: part/models.py:833 part/templates/part/category.html:86
#: part/templates/part/part_base.html:302
msgid "Keywords"
msgstr "Parole Chiave"
-#: part/models.py:804
+#: part/models.py:834
msgid "Part keywords to improve visibility in search results"
msgstr "Parole chiave per migliorare la visibilità nei risultati di ricerca"
-#: part/models.py:811 part/models.py:2283 part/models.py:2532
+#: part/models.py:841 part/models.py:2319 part/models.py:2568
#: part/templates/part/part_base.html:265
#: part/templates/part/set_category.html:15
-#: templates/InvenTree/settings/settings.html:186
+#: templates/InvenTree/settings/settings.html:223
#: templates/js/translated/part.js:1268
msgid "Category"
msgstr "Categoria"
-#: part/models.py:812
+#: part/models.py:842
msgid "Part category"
msgstr "Categoria articolo"
-#: part/models.py:817 part/templates/part/part_base.html:274
+#: part/models.py:847 part/templates/part/part_base.html:274
#: templates/js/translated/part.js:618 templates/js/translated/part.js:1221
-#: templates/js/translated/stock.js:1560
+#: templates/js/translated/stock.js:1684
msgid "IPN"
msgstr "IPN - Numero di riferimento interno"
-#: part/models.py:818
+#: part/models.py:848
msgid "Internal Part Number"
msgstr "Numero Dell'articolo Interno"
-#: part/models.py:824
+#: part/models.py:854
msgid "Part revision or version number"
msgstr "Numero di revisione o di versione"
-#: part/models.py:825 part/templates/part/part_base.html:281
+#: part/models.py:855 part/templates/part/part_base.html:281
#: report/models.py:200 templates/js/translated/part.js:622
msgid "Revision"
msgstr "Revisione"
-#: part/models.py:847
+#: part/models.py:877
msgid "Where is this item normally stored?"
msgstr "Dove viene normalmente immagazzinato questo articolo?"
-#: part/models.py:894 part/templates/part/part_base.html:347
+#: part/models.py:924 part/templates/part/part_base.html:347
msgid "Default Supplier"
msgstr "Fornitore predefinito"
-#: part/models.py:895
+#: part/models.py:925
msgid "Default supplier part"
msgstr "Articolo fornitore predefinito"
-#: part/models.py:902
+#: part/models.py:932
msgid "Default Expiry"
msgstr "Scadenza Predefinita"
-#: part/models.py:903
+#: part/models.py:933
msgid "Expiry time (in days) for stock items of this part"
msgstr "Scadenza (in giorni) per gli articoli in giacenza di questo pezzo"
-#: part/models.py:908 part/templates/part/part_base.html:196
+#: part/models.py:938 part/templates/part/part_base.html:196
msgid "Minimum Stock"
msgstr "Scorta Minima"
-#: part/models.py:909
+#: part/models.py:939
msgid "Minimum allowed stock level"
msgstr "Livello minimo di giacenza consentito"
-#: part/models.py:916
+#: part/models.py:946
msgid "Stock keeping units for this part"
msgstr "Unità di conservazione delle scorte per quest'articolo"
-#: part/models.py:922
+#: part/models.py:952
msgid "Can this part be built from other parts?"
msgstr ""
-#: part/models.py:928
+#: part/models.py:958
msgid "Can this part be used to build other parts?"
msgstr ""
-#: part/models.py:934
+#: part/models.py:964
msgid "Does this part have tracking for unique items?"
msgstr ""
-#: part/models.py:939
+#: part/models.py:969
msgid "Can this part be purchased from external suppliers?"
msgstr "Quest'articolo può essere acquistato da fornitori esterni?"
-#: part/models.py:944
+#: part/models.py:974
msgid "Can this part be sold to customers?"
msgstr "Questo pezzo può essere venduto ai clienti?"
-#: part/models.py:949
+#: part/models.py:979
msgid "Is this part active?"
msgstr "Quest'articolo è attivo?"
-#: part/models.py:954
+#: part/models.py:984
msgid "Is this a virtual part, such as a software product or license?"
msgstr "È una parte virtuale, come un prodotto software o una licenza?"
-#: part/models.py:959
+#: part/models.py:989
msgid "Part notes - supports Markdown formatting"
msgstr "Note dell'articolo - supporta la formattazione Markdown"
-#: part/models.py:962
+#: part/models.py:992
msgid "BOM checksum"
msgstr "BOM checksum"
-#: part/models.py:962
+#: part/models.py:992
msgid "Stored BOM checksum"
msgstr ""
-#: part/models.py:965
+#: part/models.py:995
msgid "BOM checked by"
msgstr ""
-#: part/models.py:967
+#: part/models.py:997
msgid "BOM checked date"
msgstr ""
-#: part/models.py:971
+#: part/models.py:1001
msgid "Creation User"
msgstr ""
-#: part/models.py:1783
+#: part/models.py:1819
msgid "Sell multiple"
msgstr ""
-#: part/models.py:2333
+#: part/models.py:2369
msgid "Test templates can only be created for trackable parts"
msgstr ""
-#: part/models.py:2350
+#: part/models.py:2386
msgid "Test with this name already exists for this part"
msgstr ""
-#: part/models.py:2370 templates/js/translated/part.js:1714
-#: templates/js/translated/stock.js:1284
+#: part/models.py:2406 templates/js/translated/part.js:1714
+#: templates/js/translated/stock.js:1312
msgid "Test Name"
msgstr ""
-#: part/models.py:2371
+#: part/models.py:2407
msgid "Enter a name for the test"
msgstr ""
-#: part/models.py:2376
+#: part/models.py:2412
msgid "Test Description"
msgstr "Descrizione Di Prova"
-#: part/models.py:2377
+#: part/models.py:2413
msgid "Enter description for this test"
msgstr ""
-#: part/models.py:2382 templates/js/translated/part.js:1723
-#: templates/js/translated/table_filters.js:281
+#: part/models.py:2418 templates/js/translated/part.js:1723
+#: templates/js/translated/table_filters.js:276
msgid "Required"
msgstr ""
-#: part/models.py:2383
+#: part/models.py:2419
msgid "Is this test required to pass?"
msgstr ""
-#: part/models.py:2388 templates/js/translated/part.js:1731
+#: part/models.py:2424 templates/js/translated/part.js:1731
msgid "Requires Value"
msgstr ""
-#: part/models.py:2389
+#: part/models.py:2425
msgid "Does this test require a value when adding a test result?"
msgstr ""
-#: part/models.py:2394 templates/js/translated/part.js:1738
+#: part/models.py:2430 templates/js/translated/part.js:1738
msgid "Requires Attachment"
msgstr ""
-#: part/models.py:2395
+#: part/models.py:2431
msgid "Does this test require a file attachment when adding a test result?"
msgstr ""
-#: part/models.py:2406
+#: part/models.py:2442
#, python-brace-format
msgid "Illegal character in template name ({c})"
msgstr ""
-#: part/models.py:2442
+#: part/models.py:2478
msgid "Parameter template name must be unique"
msgstr ""
-#: part/models.py:2450
+#: part/models.py:2486
msgid "Parameter Name"
msgstr ""
-#: part/models.py:2457
+#: part/models.py:2493
msgid "Parameter Units"
msgstr ""
-#: part/models.py:2487
+#: part/models.py:2523
msgid "Parent Part"
msgstr ""
-#: part/models.py:2489 part/models.py:2538 part/models.py:2539
-#: templates/InvenTree/settings/settings.html:181
+#: part/models.py:2525 part/models.py:2574 part/models.py:2575
+#: templates/InvenTree/settings/settings.html:218
msgid "Parameter Template"
msgstr ""
-#: part/models.py:2491
+#: part/models.py:2527
msgid "Data"
msgstr ""
-#: part/models.py:2491
+#: part/models.py:2527
msgid "Parameter Value"
msgstr ""
-#: part/models.py:2543 templates/InvenTree/settings/settings.html:190
+#: part/models.py:2579 templates/InvenTree/settings/settings.html:227
msgid "Default Value"
msgstr ""
-#: part/models.py:2544
+#: part/models.py:2580
msgid "Default Parameter Value"
msgstr ""
+#: part/models.py:2614
+msgid "Part ID or part name"
+msgstr ""
+
+#: part/models.py:2617 templates/js/translated/model_renderers.js:182
+msgid "Part ID"
+msgstr "Codice Articolo"
+
+#: part/models.py:2618
+msgid "Unique part ID value"
+msgstr ""
+
#: part/models.py:2621
-msgid "Select parent part"
+msgid "Part Name"
+msgstr ""
+
+#: part/models.py:2625
+msgid "Part IPN"
+msgstr ""
+
+#: part/models.py:2626
+msgid "Part IPN value"
msgstr ""
#: part/models.py:2629
-msgid "Sub part"
+msgid "Level"
msgstr ""
#: part/models.py:2630
+msgid "BOM level"
+msgstr ""
+
+#: part/models.py:2690
+msgid "Select parent part"
+msgstr ""
+
+#: part/models.py:2698
+msgid "Sub part"
+msgstr ""
+
+#: part/models.py:2699
msgid "Select part to be used in BOM"
msgstr ""
-#: part/models.py:2636
+#: part/models.py:2705
msgid "BOM quantity for this BOM item"
msgstr ""
-#: part/models.py:2638 templates/js/translated/bom.js:578
-#: templates/js/translated/bom.js:652
+#: part/models.py:2707 part/templates/part/upload_bom.html:58
+#: templates/js/translated/bom.js:791 templates/js/translated/bom.js:865
#: templates/js/translated/table_filters.js:92
msgid "Optional"
msgstr ""
-#: part/models.py:2638
+#: part/models.py:2707
msgid "This BOM item is optional"
msgstr ""
-#: part/models.py:2641
+#: part/models.py:2710 part/templates/part/upload_bom.html:55
msgid "Overage"
msgstr ""
-#: part/models.py:2642
+#: part/models.py:2711
msgid "Estimated build wastage quantity (absolute or percentage)"
msgstr ""
-#: part/models.py:2645
+#: part/models.py:2714
msgid "BOM item reference"
msgstr ""
-#: part/models.py:2648
+#: part/models.py:2717
msgid "BOM item notes"
msgstr ""
-#: part/models.py:2650
+#: part/models.py:2719
msgid "Checksum"
msgstr ""
-#: part/models.py:2650
+#: part/models.py:2719
msgid "BOM line checksum"
msgstr ""
-#: part/models.py:2654 templates/js/translated/bom.js:669
+#: part/models.py:2723 part/templates/part/upload_bom.html:57
+#: templates/js/translated/bom.js:882
#: templates/js/translated/table_filters.js:68
#: templates/js/translated/table_filters.js:88
msgid "Inherited"
msgstr ""
-#: part/models.py:2655
+#: part/models.py:2724
msgid "This BOM item is inherited by BOMs for variant parts"
msgstr ""
-#: part/models.py:2660 templates/js/translated/bom.js:661
+#: part/models.py:2729 part/templates/part/upload_bom.html:56
+#: templates/js/translated/bom.js:874
msgid "Allow Variants"
msgstr "Consenti Le Varianti"
-#: part/models.py:2661
+#: part/models.py:2730
msgid "Stock items for variant parts can be used for this BOM item"
msgstr ""
-#: part/models.py:2746 stock/models.py:357
+#: part/models.py:2815 stock/models.py:357
msgid "Quantity must be integer value for trackable parts"
msgstr ""
-#: part/models.py:2755 part/models.py:2757
+#: part/models.py:2824 part/models.py:2826
msgid "Sub part must be specified"
msgstr ""
-#: part/models.py:2886
+#: part/models.py:2955
msgid "BOM Item Substitute"
msgstr ""
-#: part/models.py:2908
+#: part/models.py:2977
msgid "Substitute part cannot be the same as the master part"
msgstr ""
-#: part/models.py:2920
+#: part/models.py:2989
msgid "Parent BOM item"
msgstr ""
-#: part/models.py:2928
+#: part/models.py:2997
msgid "Substitute part"
msgstr ""
-#: part/models.py:2939
+#: part/models.py:3008
msgid "Part 1"
msgstr ""
-#: part/models.py:2943
+#: part/models.py:3012
msgid "Part 2"
msgstr ""
-#: part/models.py:2943
+#: part/models.py:3012
msgid "Select Related Part"
msgstr ""
-#: part/models.py:2975
+#: part/models.py:3044
msgid "Error creating relationship: check that the part is not related to itself and that the relationship is unique"
msgstr ""
-#: part/serializers.py:659
+#: part/serializers.py:667
msgid "Select part to copy BOM from"
msgstr ""
-#: part/serializers.py:670
+#: part/serializers.py:678
msgid "Remove Existing Data"
msgstr ""
-#: part/serializers.py:671
+#: part/serializers.py:679
msgid "Remove existing BOM items before copying"
msgstr ""
-#: part/serializers.py:676
+#: part/serializers.py:684
msgid "Include Inherited"
msgstr ""
-#: part/serializers.py:677
+#: part/serializers.py:685
msgid "Include BOM items which are inherited from templated parts"
msgstr ""
-#: part/serializers.py:682
+#: part/serializers.py:690
msgid "Skip Invalid Rows"
msgstr ""
-#: part/serializers.py:683
+#: part/serializers.py:691
msgid "Enable this option to skip invalid rows"
msgstr ""
-#: part/tasks.py:53
+#: part/serializers.py:734
+msgid "Clear Existing BOM"
+msgstr ""
+
+#: part/serializers.py:735
+msgid "Delete existing BOM items before uploading"
+msgstr ""
+
+#: part/serializers.py:762
+msgid "No part column specified"
+msgstr ""
+
+#: part/serializers.py:806
+msgid "Multiple matching parts found"
+msgstr ""
+
+#: part/serializers.py:809
+msgid "No matching part found"
+msgstr ""
+
+#: part/serializers.py:812
+msgid "Part is not designated as a component"
+msgstr ""
+
+#: part/serializers.py:821
+msgid "Quantity not provided"
+msgstr ""
+
+#: part/serializers.py:829
+msgid "Invalid quantity"
+msgstr ""
+
+#: part/serializers.py:848
+msgid "At least one BOM item is required"
+msgstr ""
+
+#: part/tasks.py:58
msgid "Low stock notification"
msgstr "Notifica di magazzino bassa"
@@ -4418,7 +4464,7 @@ msgstr ""
msgid "The BOM for %(part)s has not been validated."
msgstr ""
-#: part/templates/part/bom.html:30 part/templates/part/detail.html:270
+#: part/templates/part/bom.html:30 part/templates/part/detail.html:273
msgid "BOM actions"
msgstr ""
@@ -4426,34 +4472,6 @@ msgstr ""
msgid "Delete Items"
msgstr "Elimina Elementi"
-#: part/templates/part/bom_upload/match_parts.html:29
-msgid "Select Part"
-msgstr "Seleziona Articolo"
-
-#: part/templates/part/bom_upload/upload_file.html:8
-msgid "Return to BOM"
-msgstr ""
-
-#: part/templates/part/bom_upload/upload_file.html:13
-msgid "Upload Bill of Materials"
-msgstr ""
-
-#: part/templates/part/bom_upload/upload_file.html:33
-msgid "Requirements for BOM upload"
-msgstr ""
-
-#: part/templates/part/bom_upload/upload_file.html:35
-msgid "The BOM file must contain the required named columns as provided in the "
-msgstr ""
-
-#: part/templates/part/bom_upload/upload_file.html:35
-msgid "BOM Upload Template"
-msgstr ""
-
-#: part/templates/part/bom_upload/upload_file.html:36
-msgid "Each part must already exist in the database"
-msgstr ""
-
#: 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"
@@ -4519,7 +4537,7 @@ msgstr "Esporta"
msgid "Create new part"
msgstr "Crea nuovo articolo"
-#: part/templates/part/category.html:161 templates/js/translated/bom.js:152
+#: part/templates/part/category.html:161 templates/js/translated/bom.js:365
msgid "New Part"
msgstr "Nuovo articolo"
@@ -4639,138 +4657,168 @@ msgstr ""
msgid "Sales Order Allocations"
msgstr "Assegnazione Ordine Di Vendita"
-#: part/templates/part/detail.html:159
+#: part/templates/part/detail.html:162
msgid "Part Variants"
msgstr ""
-#: part/templates/part/detail.html:163
+#: part/templates/part/detail.html:166
msgid "Create new variant"
msgstr ""
-#: part/templates/part/detail.html:164
+#: part/templates/part/detail.html:167
msgid "New Variant"
msgstr ""
-#: part/templates/part/detail.html:191
+#: part/templates/part/detail.html:194
msgid "Add new parameter"
msgstr ""
-#: part/templates/part/detail.html:228 part/templates/part/part_sidebar.html:49
+#: part/templates/part/detail.html:231 part/templates/part/part_sidebar.html:52
msgid "Related Parts"
msgstr "Articoli correlati"
-#: part/templates/part/detail.html:232 part/templates/part/detail.html:233
+#: part/templates/part/detail.html:235 part/templates/part/detail.html:236
msgid "Add Related"
msgstr ""
-#: part/templates/part/detail.html:253 part/templates/part/part_sidebar.html:17
+#: part/templates/part/detail.html:256 part/templates/part/part_sidebar.html:18
msgid "Bill of Materials"
msgstr "Distinta base"
-#: part/templates/part/detail.html:258
+#: part/templates/part/detail.html:261
msgid "Export actions"
msgstr ""
-#: part/templates/part/detail.html:262 templates/js/translated/bom.js:70
+#: part/templates/part/detail.html:265 templates/js/translated/bom.js:283
msgid "Export BOM"
msgstr ""
-#: part/templates/part/detail.html:264
+#: part/templates/part/detail.html:267
msgid "Print BOM Report"
msgstr ""
-#: part/templates/part/detail.html:274
+#: part/templates/part/detail.html:277
msgid "Upload BOM"
msgstr ""
-#: part/templates/part/detail.html:276 templates/js/translated/part.js:272
+#: part/templates/part/detail.html:279 templates/js/translated/part.js:272
msgid "Copy BOM"
msgstr ""
-#: part/templates/part/detail.html:278
+#: part/templates/part/detail.html:281
msgid "Validate BOM"
msgstr ""
-#: part/templates/part/detail.html:283
+#: part/templates/part/detail.html:286
msgid "New BOM Item"
msgstr ""
-#: part/templates/part/detail.html:284
+#: part/templates/part/detail.html:287
msgid "Add BOM Item"
msgstr ""
-#: part/templates/part/detail.html:297
+#: part/templates/part/detail.html:300
msgid "Assemblies"
msgstr ""
-#: part/templates/part/detail.html:314
+#: part/templates/part/detail.html:317
msgid "Part Builds"
msgstr ""
-#: part/templates/part/detail.html:339
+#: part/templates/part/detail.html:342
msgid "Build Order Allocations"
msgstr ""
-#: part/templates/part/detail.html:349
+#: part/templates/part/detail.html:352
msgid "Part Suppliers"
msgstr "Fornitori articoli"
-#: part/templates/part/detail.html:377
+#: part/templates/part/detail.html:380
msgid "Part Manufacturers"
msgstr "Componenti Produttori"
-#: part/templates/part/detail.html:393
+#: part/templates/part/detail.html:396
msgid "Delete manufacturer parts"
msgstr ""
-#: part/templates/part/detail.html:575
+#: part/templates/part/detail.html:578
msgid "Delete selected BOM items?"
msgstr ""
-#: part/templates/part/detail.html:576
+#: part/templates/part/detail.html:579
msgid "All selected BOM items will be deleted"
msgstr ""
-#: part/templates/part/detail.html:625
+#: part/templates/part/detail.html:628
msgid "Create BOM Item"
msgstr ""
-#: part/templates/part/detail.html:682
+#: part/templates/part/detail.html:685
msgid "Related Part"
msgstr "Articoli correlati"
-#: part/templates/part/detail.html:690
+#: part/templates/part/detail.html:693
msgid "Add Related Part"
msgstr ""
-#: part/templates/part/detail.html:785
+#: part/templates/part/detail.html:788
msgid "Add Test Result Template"
msgstr ""
-#: part/templates/part/detail.html:842
+#: part/templates/part/detail.html:845
msgid "Edit Part Notes"
msgstr ""
-#: part/templates/part/detail.html:955
+#: part/templates/part/detail.html:958
#, python-format
msgid "Purchase Unit Price - %(currency)s"
msgstr ""
-#: part/templates/part/detail.html:967
+#: part/templates/part/detail.html:970
#, python-format
msgid "Unit Price-Cost Difference - %(currency)s"
msgstr ""
-#: part/templates/part/detail.html:979
+#: part/templates/part/detail.html:982
#, python-format
msgid "Supplier Unit Cost - %(currency)s"
msgstr ""
-#: part/templates/part/detail.html:1068
+#: part/templates/part/detail.html:1071
#, python-format
msgid "Unit Price - %(currency)s"
msgstr ""
+#: part/templates/part/import_wizard/ajax_match_fields.html:9
+#: part/templates/part/import_wizard/match_fields.html:9
+#: templates/patterns/wizard/match_fields.html:8
+msgid "Missing selections for the following required columns"
+msgstr ""
+
+#: part/templates/part/import_wizard/ajax_match_fields.html:20
+#: part/templates/part/import_wizard/match_fields.html:20
+#: templates/patterns/wizard/match_fields.html:19
+msgid "Duplicate selections found, see below. Fix them then retry submitting."
+msgstr ""
+
+#: part/templates/part/import_wizard/ajax_match_fields.html:28
+#: part/templates/part/import_wizard/match_fields.html:35
+#: templates/patterns/wizard/match_fields.html:34
+msgid "File Fields"
+msgstr ""
+
+#: part/templates/part/import_wizard/ajax_match_fields.html:35
+#: part/templates/part/import_wizard/match_fields.html:42
+#: templates/patterns/wizard/match_fields.html:41
+msgid "Remove column"
+msgstr "Elimina colonna"
+
+#: part/templates/part/import_wizard/ajax_match_fields.html:53
+#: part/templates/part/import_wizard/match_fields.html:60
+#: templates/patterns/wizard/match_fields.html:59
+msgid "Duplicate selection"
+msgstr "Duplica selezionati"
+
#: part/templates/part/import_wizard/ajax_part_upload.html:29
#: part/templates/part/import_wizard/part_upload.html:53
msgid "Unsuffitient privileges."
@@ -4819,7 +4867,7 @@ msgid "Show pricing information"
msgstr ""
#: part/templates/part/part_base.html:56
-#: stock/templates/stock/item_base.html:110
+#: stock/templates/stock/item_base.html:112
#: stock/templates/stock/location.html:44
msgid "Stock actions"
msgstr "Azioni magazzino"
@@ -4912,7 +4960,7 @@ msgstr ""
msgid "Allocated to Orders"
msgstr ""
-#: part/templates/part/part_base.html:239 templates/js/translated/bom.js:690
+#: part/templates/part/part_base.html:239 templates/js/translated/bom.js:903
msgid "Can Build"
msgstr ""
@@ -4930,7 +4978,7 @@ msgid "Latest Serial Number"
msgstr ""
#: part/templates/part/part_base.html:328
-#: stock/templates/stock/item_base.html:166
+#: stock/templates/stock/item_base.html:168
msgid "Search for serial number"
msgstr ""
@@ -4969,7 +5017,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:644
+#: templates/js/translated/bom.js:857
msgid "No supplier pricing available"
msgstr ""
@@ -5003,20 +5051,20 @@ msgstr ""
msgid "No pricing information is available for this part."
msgstr ""
-#: part/templates/part/part_sidebar.html:11
+#: part/templates/part/part_sidebar.html:12
msgid "Variants"
msgstr ""
-#: part/templates/part/part_sidebar.html:25
+#: part/templates/part/part_sidebar.html:26
msgid "Used In"
msgstr ""
-#: part/templates/part/part_sidebar.html:31
+#: part/templates/part/part_sidebar.html:34
#: stock/templates/stock/stock_sidebar.html:8
msgid "Allocations"
msgstr ""
-#: part/templates/part/part_sidebar.html:45
+#: part/templates/part/part_sidebar.html:48
msgid "Test Templates"
msgstr ""
@@ -5089,7 +5137,7 @@ msgstr ""
msgid "Calculation parameters"
msgstr ""
-#: part/templates/part/prices.html:155 templates/js/translated/bom.js:638
+#: part/templates/part/prices.html:155 templates/js/translated/bom.js:851
msgid "Supplier Cost"
msgstr ""
@@ -5111,7 +5159,7 @@ msgstr ""
msgid "Internal Cost"
msgstr ""
-#: part/templates/part/prices.html:215 part/views.py:1699
+#: part/templates/part/prices.html:215 part/views.py:1390
msgid "Add Internal Price Break"
msgstr ""
@@ -5131,7 +5179,7 @@ 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:600
+#: part/templates/part/stock_count.html:7 templates/js/translated/bom.js:813
#: templates/js/translated/part.js:497 templates/js/translated/part.js:1122
#: templates/js/translated/part.js:1309
msgid "No Stock"
@@ -5141,6 +5189,43 @@ msgstr "Nessuna giacenza"
msgid "Low Stock"
msgstr "Disponibilità scarsa"
+#: part/templates/part/upload_bom.html:8
+msgid "Return to BOM"
+msgstr ""
+
+#: part/templates/part/upload_bom.html:13
+msgid "Upload Bill of Materials"
+msgstr ""
+
+#: part/templates/part/upload_bom.html:19
+msgid "BOM upload requirements"
+msgstr ""
+
+#: part/templates/part/upload_bom.html:23
+#: part/templates/part/upload_bom.html:90
+msgid "Upload BOM File"
+msgstr ""
+
+#: part/templates/part/upload_bom.html:29
+msgid "Submit BOM Data"
+msgstr ""
+
+#: part/templates/part/upload_bom.html:37
+msgid "Requirements for BOM upload"
+msgstr ""
+
+#: part/templates/part/upload_bom.html:39
+msgid "The BOM file must contain the required named columns as provided in the "
+msgstr ""
+
+#: part/templates/part/upload_bom.html:39
+msgid "BOM Upload Template"
+msgstr ""
+
+#: part/templates/part/upload_bom.html:40
+msgid "Each part must already exist in the database"
+msgstr ""
+
#: part/templates/part/variant_part.html:9
msgid "Create new part variant"
msgstr ""
@@ -5154,104 +5239,96 @@ msgstr ""
msgid "Unknown database"
msgstr "Database sconosciuto"
-#: part/views.py:93
+#: part/views.py:90
msgid "Set Part Category"
msgstr "Imposta categoria articolo"
-#: part/views.py:143
+#: part/views.py:140
#, python-brace-format
msgid "Set category for {n} parts"
msgstr "Imposta categoria per {n} articoli"
-#: part/views.py:215
+#: part/views.py:212
msgid "Match References"
msgstr ""
-#: part/views.py:511
+#: part/views.py:509
msgid "None"
msgstr ""
-#: part/views.py:570
+#: part/views.py:568
msgid "Part QR Code"
msgstr ""
-#: part/views.py:672
+#: part/views.py:670
msgid "Select Part Image"
msgstr ""
-#: part/views.py:698
+#: part/views.py:696
msgid "Updated part image"
msgstr ""
-#: part/views.py:701
+#: part/views.py:699
msgid "Part image not found"
msgstr ""
-#: part/views.py:775
-msgid "Match Parts"
-msgstr ""
-
-#: part/views.py:1110
-msgid "Export Bill of Materials"
-msgstr "Esporta Distinta base"
-
-#: part/views.py:1159
+#: part/views.py:850
msgid "Confirm Part Deletion"
msgstr ""
-#: part/views.py:1166
+#: part/views.py:857
msgid "Part was deleted"
msgstr ""
-#: part/views.py:1175
+#: part/views.py:866
msgid "Part Pricing"
msgstr ""
-#: part/views.py:1324
+#: part/views.py:1015
msgid "Create Part Parameter Template"
msgstr ""
-#: part/views.py:1334
+#: part/views.py:1025
msgid "Edit Part Parameter Template"
msgstr ""
-#: part/views.py:1341
+#: part/views.py:1032
msgid "Delete Part Parameter Template"
msgstr ""
-#: part/views.py:1400 templates/js/translated/part.js:315
+#: part/views.py:1091 templates/js/translated/part.js:315
msgid "Edit Part Category"
msgstr "Modifica Categoria Articoli"
-#: part/views.py:1438
+#: part/views.py:1129
msgid "Delete Part Category"
msgstr "Elimina categoria"
-#: part/views.py:1444
+#: part/views.py:1135
msgid "Part category was deleted"
msgstr "La Categoria articoli è stata eliminata"
-#: part/views.py:1453
+#: part/views.py:1144
msgid "Create Category Parameter Template"
msgstr "Crea Template Parametro Categoria"
-#: part/views.py:1554
+#: part/views.py:1245
msgid "Edit Category Parameter Template"
msgstr "Modifica Modello Parametro Categoria"
-#: part/views.py:1610
+#: part/views.py:1301
msgid "Delete Category Parameter Template"
msgstr "Elimina Modello Parametro Categoria"
-#: part/views.py:1632
+#: part/views.py:1323
msgid "Added new price break"
msgstr ""
-#: part/views.py:1708
+#: part/views.py:1399
msgid "Edit Internal Price Break"
msgstr ""
-#: part/views.py:1716
+#: part/views.py:1407
msgid "Delete Internal Price Break"
msgstr ""
@@ -5453,12 +5530,12 @@ msgid "Stock Item Test Report"
msgstr ""
#: report/templates/report/inventree_test_report_base.html:79
-#: stock/models.py:519 stock/templates/stock/item_base.html:156
-#: templates/js/translated/build.js:293 templates/js/translated/build.js:697
-#: templates/js/translated/build.js:1073
+#: stock/models.py:519 stock/templates/stock/item_base.html:158
+#: templates/js/translated/build.js:373 templates/js/translated/build.js:521
+#: templates/js/translated/build.js:919 templates/js/translated/build.js:1295
#: 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:423
+#: templates/js/translated/order.js:2034 templates/js/translated/stock.js:424
msgid "Serial Number"
msgstr ""
@@ -5479,7 +5556,7 @@ msgstr ""
#: report/templates/report/inventree_test_report_base.html:97
#: templates/InvenTree/settings/plugin.html:50
#: templates/InvenTree/settings/plugin_settings.html:38
-#: templates/js/translated/order.js:849 templates/js/translated/stock.js:2525
+#: templates/js/translated/order.js:849 templates/js/translated/stock.js:2649
msgid "Date"
msgstr "Data"
@@ -5497,71 +5574,67 @@ msgid "Installed Items"
msgstr ""
#: report/templates/report/inventree_test_report_base.html:137
-#: templates/js/translated/stock.js:586 templates/js/translated/stock.js:756
-#: templates/js/translated/stock.js:2785
+#: templates/js/translated/stock.js:587 templates/js/translated/stock.js:757
+#: templates/js/translated/stock.js:2909
msgid "Serial"
msgstr "Seriale"
-#: stock/api.py:476
+#: stock/api.py:501
msgid "Quantity is required"
msgstr "La quantità è richiesta"
-#: stock/api.py:483
+#: stock/api.py:508
msgid "Valid part must be supplied"
msgstr ""
-#: stock/forms.py:77 stock/forms.py:251 stock/models.py:576
-#: stock/templates/stock/item_base.html:193
-#: templates/js/translated/stock.js:1709
+#: stock/api.py:535
+msgid "Serial numbers cannot be supplied for a non-trackable part"
+msgstr ""
+
+#: stock/forms.py:74 stock/forms.py:198 stock/models.py:576
+#: stock/templates/stock/item_base.html:195
+#: templates/js/translated/stock.js:1833
msgid "Expiry Date"
msgstr "Data di Scadenza"
-#: stock/forms.py:78 stock/forms.py:252
+#: stock/forms.py:75 stock/forms.py:199
msgid "Expiration date for this stock item"
msgstr ""
-#: stock/forms.py:81
+#: stock/forms.py:78
msgid "Enter unique serial numbers (or leave blank)"
msgstr ""
-#: stock/forms.py:136
+#: stock/forms.py:133
msgid "Destination for serialized stock (by default, will remain in current location)"
msgstr ""
-#: stock/forms.py:138
+#: stock/forms.py:135
msgid "Serial numbers"
msgstr ""
-#: stock/forms.py:138
+#: stock/forms.py:135
msgid "Unique serial numbers (must match quantity)"
msgstr ""
-#: stock/forms.py:140 stock/forms.py:224
+#: stock/forms.py:137 stock/forms.py:171
msgid "Add transaction note (optional)"
msgstr ""
-#: stock/forms.py:180
-msgid "Stock item to install"
-msgstr ""
-
-#: stock/forms.py:210
-msgid "Must not exceed available quantity"
-msgstr ""
-
-#: stock/forms.py:222
+#: stock/forms.py:169
msgid "Destination location for uninstalled items"
msgstr "Posizione di destinazione per gli elementi disinstallati"
-#: stock/forms.py:226
+#: stock/forms.py:173
msgid "Confirm uninstall"
msgstr "Conferma la disinstallazione"
-#: stock/forms.py:226
+#: stock/forms.py:173
msgid "Confirm removal of installed stock items"
msgstr ""
#: stock/models.py:62 stock/models.py:613
-#: stock/templates/stock/item_base.html:416
+#: stock/templates/stock/item_base.html:418
msgid "Owner"
msgstr ""
@@ -5623,7 +5696,7 @@ msgstr ""
msgid "Packaging this stock item is stored in"
msgstr ""
-#: stock/models.py:502 stock/templates/stock/item_base.html:298
+#: stock/models.py:502 stock/templates/stock/item_base.html:300
msgid "Installed In"
msgstr "Installato In"
@@ -5733,7 +5806,7 @@ msgstr ""
msgid "Serialized stock cannot be merged"
msgstr ""
-#: stock/models.py:1214 stock/serializers.py:775
+#: stock/models.py:1214 stock/serializers.py:832
msgid "Duplicate stock items"
msgstr ""
@@ -5769,7 +5842,7 @@ msgstr ""
msgid "Test name"
msgstr ""
-#: stock/models.py:1983 templates/js/translated/table_filters.js:271
+#: stock/models.py:1983
msgid "Test result"
msgstr ""
@@ -5806,7 +5879,7 @@ msgstr ""
msgid "Enter serial numbers for new items"
msgstr ""
-#: stock/serializers.py:326 stock/serializers.py:732 stock/serializers.py:973
+#: stock/serializers.py:326 stock/serializers.py:789 stock/serializers.py:1030
msgid "Destination stock location"
msgstr "Posizione magazzino di destinazione"
@@ -5818,63 +5891,79 @@ msgstr ""
msgid "Serial numbers cannot be assigned to this part"
msgstr ""
-#: stock/serializers.py:589
+#: stock/serializers.py:363 stock/views.py:1108
+msgid "Serial numbers already exist"
+msgstr "Numeri di serie già esistenti"
+
+#: stock/serializers.py:405
+msgid "Select stock item to install"
+msgstr ""
+
+#: stock/serializers.py:421
+msgid "Stock item is unavailable"
+msgstr ""
+
+#: stock/serializers.py:428
+msgid "Selected part is not in the Bill of Materials"
+msgstr ""
+
+#: stock/serializers.py:646
msgid "Part must be salable"
msgstr ""
-#: stock/serializers.py:593
+#: stock/serializers.py:650
msgid "Item is allocated to a sales order"
msgstr ""
-#: stock/serializers.py:597
+#: stock/serializers.py:654
msgid "Item is allocated to a build order"
msgstr ""
-#: stock/serializers.py:627
+#: stock/serializers.py:684
msgid "Customer to assign stock items"
msgstr ""
-#: stock/serializers.py:633
+#: stock/serializers.py:690
msgid "Selected company is not a customer"
msgstr ""
-#: stock/serializers.py:641
+#: stock/serializers.py:698
msgid "Stock assignment notes"
msgstr ""
-#: stock/serializers.py:651 stock/serializers.py:881
+#: stock/serializers.py:708 stock/serializers.py:938
msgid "A list of stock items must be provided"
msgstr ""
-#: stock/serializers.py:739
+#: stock/serializers.py:796
msgid "Stock merging notes"
msgstr ""
-#: stock/serializers.py:744
+#: stock/serializers.py:801
msgid "Allow mismatched suppliers"
msgstr ""
-#: stock/serializers.py:745
+#: stock/serializers.py:802
msgid "Allow stock items with different supplier parts to be merged"
msgstr ""
-#: stock/serializers.py:750
+#: stock/serializers.py:807
msgid "Allow mismatched status"
msgstr ""
-#: stock/serializers.py:751
+#: stock/serializers.py:808
msgid "Allow stock items with different status codes to be merged"
msgstr ""
-#: stock/serializers.py:761
+#: stock/serializers.py:818
msgid "At least two stock items must be provided"
msgstr ""
-#: stock/serializers.py:843
+#: stock/serializers.py:900
msgid "StockItem primary key value"
msgstr ""
-#: stock/serializers.py:871
+#: stock/serializers.py:928
msgid "Stock transaction notes"
msgstr ""
@@ -5919,22 +6008,14 @@ msgstr ""
msgid "Installed Stock Items"
msgstr ""
-#: stock/templates/stock/item.html:154 stock/views.py:482
+#: stock/templates/stock/item.html:154 templates/js/translated/stock.js:3018
msgid "Install Stock Item"
msgstr ""
-#: stock/templates/stock/item.html:309 stock/templates/stock/item.html:334
+#: stock/templates/stock/item.html:304 templates/js/translated/stock.js:1480
msgid "Add Test Result"
msgstr ""
-#: stock/templates/stock/item.html:354
-msgid "Edit Test Result"
-msgstr ""
-
-#: stock/templates/stock/item.html:368
-msgid "Delete Test Result"
-msgstr ""
-
#: stock/templates/stock/item_base.html:42
#: templates/js/translated/barcode.js:330
#: templates/js/translated/barcode.js:335
@@ -5995,129 +6076,129 @@ msgstr ""
msgid "Uninstall"
msgstr ""
-#: stock/templates/stock/item_base.html:101
+#: stock/templates/stock/item_base.html:102
msgid "Install stock item"
msgstr ""
-#: stock/templates/stock/item_base.html:101
+#: stock/templates/stock/item_base.html:102
msgid "Install"
msgstr ""
-#: stock/templates/stock/item_base.html:115
+#: stock/templates/stock/item_base.html:117
msgid "Convert to variant"
msgstr ""
-#: stock/templates/stock/item_base.html:118
+#: stock/templates/stock/item_base.html:120
msgid "Duplicate stock item"
msgstr ""
-#: stock/templates/stock/item_base.html:120
+#: stock/templates/stock/item_base.html:122
msgid "Edit stock item"
msgstr ""
-#: stock/templates/stock/item_base.html:123
+#: stock/templates/stock/item_base.html:125
msgid "Delete stock item"
msgstr ""
-#: stock/templates/stock/item_base.html:161
+#: stock/templates/stock/item_base.html:163
msgid "previous page"
msgstr "pagina precedente"
-#: stock/templates/stock/item_base.html:161
+#: stock/templates/stock/item_base.html:163
msgid "Navigate to previous serial number"
msgstr ""
-#: stock/templates/stock/item_base.html:170
+#: stock/templates/stock/item_base.html:172
msgid "next page"
msgstr "pagina successiva"
-#: stock/templates/stock/item_base.html:170
+#: stock/templates/stock/item_base.html:172
msgid "Navigate to next serial number"
msgstr ""
-#: stock/templates/stock/item_base.html:197
+#: stock/templates/stock/item_base.html:199
#, python-format
msgid "This StockItem expired on %(item.expiry_date)s"
msgstr ""
-#: stock/templates/stock/item_base.html:197
+#: stock/templates/stock/item_base.html:199
#: templates/js/translated/table_filters.js:252
msgid "Expired"
msgstr ""
-#: stock/templates/stock/item_base.html:199
+#: stock/templates/stock/item_base.html:201
#, python-format
msgid "This StockItem expires on %(item.expiry_date)s"
msgstr ""
-#: stock/templates/stock/item_base.html:199
+#: stock/templates/stock/item_base.html:201
#: templates/js/translated/table_filters.js:258
msgid "Stale"
msgstr ""
-#: stock/templates/stock/item_base.html:206
-#: templates/js/translated/stock.js:1722
+#: stock/templates/stock/item_base.html:208
+#: templates/js/translated/stock.js:1846
msgid "Last Updated"
msgstr "Ultimo aggiornamento"
-#: stock/templates/stock/item_base.html:211
+#: stock/templates/stock/item_base.html:213
msgid "Last Stocktake"
msgstr "Ultimo Inventario"
-#: stock/templates/stock/item_base.html:215
+#: stock/templates/stock/item_base.html:217
msgid "No stocktake performed"
msgstr "Nessun inventario eseguito"
-#: stock/templates/stock/item_base.html:233
+#: stock/templates/stock/item_base.html:235
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:240
+#: stock/templates/stock/item_base.html:242
msgid "This stock item is in production and cannot be edited."
msgstr ""
-#: stock/templates/stock/item_base.html:241
+#: stock/templates/stock/item_base.html:243
msgid "Edit the stock item from the build view."
msgstr ""
-#: stock/templates/stock/item_base.html:254
+#: stock/templates/stock/item_base.html:256
msgid "This stock item has not passed all required tests"
msgstr ""
-#: stock/templates/stock/item_base.html:262
+#: stock/templates/stock/item_base.html:264
msgid "This stock item is allocated to Sales Order"
msgstr ""
-#: stock/templates/stock/item_base.html:270
+#: stock/templates/stock/item_base.html:272
msgid "This stock item is allocated to Build Order"
msgstr ""
-#: stock/templates/stock/item_base.html:276
+#: stock/templates/stock/item_base.html:278
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:317
-#: templates/js/translated/build.js:1095
+#: stock/templates/stock/item_base.html:319
+#: templates/js/translated/build.js:1317
msgid "No location set"
msgstr "Nessuna posizione impostata"
-#: stock/templates/stock/item_base.html:324
+#: stock/templates/stock/item_base.html:326
msgid "Barcode Identifier"
msgstr ""
-#: stock/templates/stock/item_base.html:366
+#: stock/templates/stock/item_base.html:368
msgid "Parent Item"
msgstr ""
-#: stock/templates/stock/item_base.html:384
+#: stock/templates/stock/item_base.html:386
msgid "No manufacturer set"
msgstr ""
-#: stock/templates/stock/item_base.html:409
+#: stock/templates/stock/item_base.html:411
msgid "Tests"
msgstr ""
-#: stock/templates/stock/item_base.html:499
+#: stock/templates/stock/item_base.html:492
msgid "Edit Stock Status"
msgstr ""
@@ -6130,39 +6211,6 @@ msgstr ""
msgid "This will remove %(qty)s units of %(full_name)s from stock."
msgstr ""
-#: stock/templates/stock/item_install.html:8
-msgid "Install another Stock Item into this item."
-msgstr ""
-
-#: stock/templates/stock/item_install.html:11
-#: stock/templates/stock/item_install.html:24
-msgid "Stock items can only be installed if they meet the following criteria"
-msgstr ""
-
-#: stock/templates/stock/item_install.html:14
-msgid "The Stock Item links to a Part which is in the BOM for this Stock Item"
-msgstr ""
-
-#: stock/templates/stock/item_install.html:15
-msgid "The Stock Item is currently in stock"
-msgstr ""
-
-#: stock/templates/stock/item_install.html:16
-msgid "The Stock Item is serialized and does not belong to another item"
-msgstr ""
-
-#: stock/templates/stock/item_install.html:21
-msgid "Install this Stock Item in another stock item."
-msgstr ""
-
-#: stock/templates/stock/item_install.html:27
-msgid "The part associated to this Stock Item belongs to another part's BOM"
-msgstr ""
-
-#: stock/templates/stock/item_install.html:28
-msgid "This Stock Item is serialized and does not belong to another item"
-msgstr ""
-
#: stock/templates/stock/item_serialize.html:5
msgid "Create serialized items from this stock item."
msgstr ""
@@ -6247,7 +6295,7 @@ msgstr ""
msgid "The following stock items will be uninstalled"
msgstr ""
-#: stock/templates/stock/stockitem_convert.html:7 stock/views.py:879
+#: stock/templates/stock/stockitem_convert.html:7 stock/views.py:730
msgid "Convert Stock Item"
msgstr ""
@@ -6268,11 +6316,11 @@ msgstr ""
msgid "Are you sure you want to delete this stock tracking entry?"
msgstr ""
-#: stock/views.py:162 templates/js/translated/stock.js:139
+#: stock/views.py:162 templates/js/translated/stock.js:140
msgid "Edit Stock Location"
msgstr "Modifica Posizione Giacenza"
-#: stock/views.py:269 stock/views.py:858 stock/views.py:984 stock/views.py:1266
+#: stock/views.py:269 stock/views.py:709 stock/views.py:835 stock/views.py:1117
msgid "Owner is required (ownership control is enabled)"
msgstr ""
@@ -6300,59 +6348,63 @@ msgstr ""
msgid "Confirm test data deletion"
msgstr ""
+#: stock/views.py:352
+msgid "Check the confirmation box"
+msgstr ""
+
#: stock/views.py:456
msgid "Stock Item QR Code"
msgstr ""
-#: stock/views.py:630
+#: stock/views.py:481
msgid "Uninstall Stock Items"
msgstr ""
-#: stock/views.py:727 templates/js/translated/stock.js:1074
+#: stock/views.py:578 templates/js/translated/stock.js:1075
msgid "Confirm stock adjustment"
msgstr ""
-#: stock/views.py:738
+#: stock/views.py:589
msgid "Uninstalled stock items"
msgstr ""
-#: stock/views.py:760 templates/js/translated/stock.js:332
+#: stock/views.py:611 templates/js/translated/stock.js:333
msgid "Edit Stock Item"
msgstr ""
-#: stock/views.py:910
+#: stock/views.py:761
msgid "Create new Stock Location"
msgstr "Crea una nuova Posizione di Giacenza"
-#: stock/views.py:1011
+#: stock/views.py:862
msgid "Create new Stock Item"
msgstr ""
-#: stock/views.py:1153 templates/js/translated/stock.js:312
+#: stock/views.py:1004 templates/js/translated/stock.js:313
msgid "Duplicate Stock Item"
msgstr ""
-#: stock/views.py:1235
+#: stock/views.py:1086
msgid "Quantity cannot be negative"
msgstr ""
-#: stock/views.py:1335
+#: stock/views.py:1186
msgid "Delete Stock Location"
msgstr "Elimina Posizione di Giacenza"
-#: stock/views.py:1348
+#: stock/views.py:1199
msgid "Delete Stock Item"
msgstr ""
-#: stock/views.py:1359
+#: stock/views.py:1210
msgid "Delete Stock Tracking Entry"
msgstr ""
-#: stock/views.py:1366
+#: stock/views.py:1217
msgid "Edit Stock Tracking Entry"
msgstr ""
-#: stock/views.py:1375
+#: stock/views.py:1226
msgid "Add Stock Tracking Entry"
msgstr ""
@@ -6527,15 +6579,15 @@ msgstr ""
msgid "Part Settings"
msgstr "Impostazioni articolo"
-#: templates/InvenTree/settings/part.html:43
+#: templates/InvenTree/settings/part.html:44
msgid "Part Import"
msgstr ""
-#: templates/InvenTree/settings/part.html:47
+#: templates/InvenTree/settings/part.html:48
msgid "Import Part"
msgstr ""
-#: templates/InvenTree/settings/part.html:61
+#: templates/InvenTree/settings/part.html:62
msgid "Part Parameter Templates"
msgstr ""
@@ -6663,45 +6715,45 @@ msgstr ""
msgid "Report Settings"
msgstr ""
-#: templates/InvenTree/settings/setting.html:30
+#: templates/InvenTree/settings/setting.html:33
msgid "No value set"
msgstr ""
-#: templates/InvenTree/settings/setting.html:41
+#: templates/InvenTree/settings/setting.html:38
msgid "Edit setting"
msgstr ""
-#: templates/InvenTree/settings/settings.html:78
+#: templates/InvenTree/settings/settings.html:115
msgid "Edit Plugin Setting"
msgstr ""
-#: templates/InvenTree/settings/settings.html:80
+#: templates/InvenTree/settings/settings.html:117
msgid "Edit Global Setting"
msgstr ""
-#: templates/InvenTree/settings/settings.html:82
+#: templates/InvenTree/settings/settings.html:119
msgid "Edit User Setting"
msgstr ""
-#: templates/InvenTree/settings/settings.html:171
+#: templates/InvenTree/settings/settings.html:208
msgid "No category parameter templates found"
msgstr "Nessun parametro di categoria trovato"
-#: templates/InvenTree/settings/settings.html:193
-#: templates/InvenTree/settings/settings.html:292
+#: templates/InvenTree/settings/settings.html:230
+#: templates/InvenTree/settings/settings.html:329
msgid "Edit Template"
msgstr ""
-#: templates/InvenTree/settings/settings.html:194
-#: templates/InvenTree/settings/settings.html:293
+#: templates/InvenTree/settings/settings.html:231
+#: templates/InvenTree/settings/settings.html:330
msgid "Delete Template"
msgstr ""
-#: templates/InvenTree/settings/settings.html:272
+#: templates/InvenTree/settings/settings.html:309
msgid "No part parameter templates found"
msgstr ""
-#: templates/InvenTree/settings/settings.html:276
+#: templates/InvenTree/settings/settings.html:313
msgid "ID"
msgstr ""
@@ -6996,10 +7048,11 @@ msgid "InvenTree Version Information"
msgstr "Informazioni Versione InvenTree"
#: templates/about.html:11 templates/about.html:105
-#: templates/js/translated/bom.js:407 templates/js/translated/modals.js:53
-#: templates/js/translated/modals.js:584 templates/js/translated/modals.js:678
-#: templates/js/translated/modals.js:983 templates/modals.html:15
-#: templates/modals.html:27 templates/modals.html:39 templates/modals.html:50
+#: templates/js/translated/bom.js:132 templates/js/translated/bom.js:620
+#: templates/js/translated/modals.js:53 templates/js/translated/modals.js:584
+#: templates/js/translated/modals.js:678 templates/js/translated/modals.js:986
+#: templates/modals.html:15 templates/modals.html:27 templates/modals.html:39
+#: templates/modals.html:50
msgid "Close"
msgstr "Chiudi"
@@ -7090,8 +7143,7 @@ msgstr ""
#, python-format
msgid "If you have not created an account yet, then please\n"
"sign up first."
-msgstr "Se non hai ancora creato un account, per favore\n"
-"registrati prima."
+msgstr ""
#: templates/account/login.html:42
msgid "Forgot Password?"
@@ -7146,7 +7198,7 @@ msgstr ""
#: templates/account/password_reset_from_key.html:11
#, python-format
msgid "The password reset link was invalid, possibly because it has already been used. Please request a new password reset."
-msgstr "Il link di reset della password non era valido, forse perché è già stato utilizzato. Si prega di richiedere un nuovo reset della password."
+msgstr ""
#: templates/account/password_reset_from_key.html:18
msgid "Change password"
@@ -7163,7 +7215,7 @@ msgstr "Registrati"
#: templates/account/signup.html:13
#, python-format
msgid "Already have an account? Then please sign in."
-msgstr "Hai già un account? Allora accedi."
+msgstr ""
#: templates/account/signup.html:27
msgid "Or use a SSO-provider for signup"
@@ -7276,14 +7328,14 @@ msgid "The following parts are low on required stock"
msgstr ""
#: templates/email/build_order_required_stock.html:18
-#: templates/js/translated/bom.js:1117
+#: templates/js/translated/bom.js:1335
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:591 templates/js/translated/build.js:1189
-#: templates/js/translated/build.js:1810
+#: templates/js/translated/bom.js:804 templates/js/translated/build.js:1411
+#: templates/js/translated/build.js:2048
#: templates/js/translated/table_filters.js:178
msgid "Available"
msgstr "Disponibile"
@@ -7326,11 +7378,11 @@ msgstr "Il server remoto deve essere accessibile"
msgid "Remote image must not exceed maximum allowable file size"
msgstr "L'immagine remota non deve superare la dimensione massima consentita del file"
-#: templates/js/translated/api.js:185 templates/js/translated/modals.js:1053
+#: templates/js/translated/api.js:185 templates/js/translated/modals.js:1056
msgid "No Response"
msgstr ""
-#: templates/js/translated/api.js:186 templates/js/translated/modals.js:1054
+#: templates/js/translated/api.js:186 templates/js/translated/modals.js:1057
msgid "No response from the InvenTree server"
msgstr ""
@@ -7342,27 +7394,27 @@ msgstr ""
msgid "API request returned error code 400"
msgstr ""
-#: templates/js/translated/api.js:197 templates/js/translated/modals.js:1063
+#: templates/js/translated/api.js:197 templates/js/translated/modals.js:1066
msgid "Error 401: Not Authenticated"
msgstr ""
-#: templates/js/translated/api.js:198 templates/js/translated/modals.js:1064
+#: templates/js/translated/api.js:198 templates/js/translated/modals.js:1067
msgid "Authentication credentials not supplied"
msgstr ""
-#: templates/js/translated/api.js:202 templates/js/translated/modals.js:1068
+#: templates/js/translated/api.js:202 templates/js/translated/modals.js:1071
msgid "Error 403: Permission Denied"
msgstr ""
-#: templates/js/translated/api.js:203 templates/js/translated/modals.js:1069
+#: templates/js/translated/api.js:203 templates/js/translated/modals.js:1072
msgid "You do not have the required permissions to access this function"
msgstr ""
-#: templates/js/translated/api.js:207 templates/js/translated/modals.js:1073
+#: templates/js/translated/api.js:207 templates/js/translated/modals.js:1076
msgid "Error 404: Resource Not Found"
msgstr ""
-#: templates/js/translated/api.js:208 templates/js/translated/modals.js:1074
+#: templates/js/translated/api.js:208 templates/js/translated/modals.js:1077
msgid "The requested resource could not be located on the server"
msgstr ""
@@ -7374,11 +7426,11 @@ msgstr ""
msgid "HTTP method not allowed at URL"
msgstr ""
-#: templates/js/translated/api.js:217 templates/js/translated/modals.js:1078
+#: templates/js/translated/api.js:217 templates/js/translated/modals.js:1081
msgid "Error 408: Timeout"
msgstr ""
-#: templates/js/translated/api.js:218 templates/js/translated/modals.js:1079
+#: templates/js/translated/api.js:218 templates/js/translated/modals.js:1082
msgid "Connection timeout while requesting data from server"
msgstr ""
@@ -7447,7 +7499,7 @@ msgid "Unknown response from server"
msgstr ""
#: templates/js/translated/barcode.js:140
-#: templates/js/translated/modals.js:1043
+#: templates/js/translated/modals.js:1046
msgid "Invalid server response"
msgstr ""
@@ -7475,7 +7527,7 @@ msgstr ""
msgid "Unlink"
msgstr ""
-#: templates/js/translated/barcode.js:397 templates/js/translated/stock.js:1026
+#: templates/js/translated/barcode.js:397 templates/js/translated/stock.js:1027
msgid "Remove stock item"
msgstr ""
@@ -7517,327 +7569,369 @@ 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:36
+#: templates/js/translated/bom.js:75
+msgid "Display row data"
+msgstr ""
+
+#: templates/js/translated/bom.js:131
+msgid "Row Data"
+msgstr ""
+
+#: templates/js/translated/bom.js:249
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:518
+#: templates/js/translated/bom.js:252 templates/js/translated/bom.js:286
+#: templates/js/translated/order.js:369 templates/js/translated/stock.js:519
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:519
+#: templates/js/translated/bom.js:253 templates/js/translated/bom.js:287
+#: templates/js/translated/order.js:370 templates/js/translated/stock.js:520
msgid "Select file format"
msgstr ""
-#: templates/js/translated/bom.js:81
+#: templates/js/translated/bom.js:294
msgid "Cascading"
msgstr ""
-#: templates/js/translated/bom.js:82
+#: templates/js/translated/bom.js:295
msgid "Download cascading / multi-level BOM"
msgstr ""
-#: templates/js/translated/bom.js:87
+#: templates/js/translated/bom.js:300
msgid "Levels"
msgstr ""
-#: templates/js/translated/bom.js:88
+#: templates/js/translated/bom.js:301
msgid "Select maximum number of BOM levels to export (0 = all levels)"
msgstr ""
-#: templates/js/translated/bom.js:94
+#: templates/js/translated/bom.js:307
msgid "Include Parameter Data"
msgstr ""
-#: templates/js/translated/bom.js:95
+#: templates/js/translated/bom.js:308
msgid "Include part parameter data in exported BOM"
msgstr ""
-#: templates/js/translated/bom.js:100
+#: templates/js/translated/bom.js:313
msgid "Include Stock Data"
msgstr ""
-#: templates/js/translated/bom.js:101
+#: templates/js/translated/bom.js:314
msgid "Include part stock data in exported BOM"
msgstr ""
-#: templates/js/translated/bom.js:106
+#: templates/js/translated/bom.js:319
msgid "Include Manufacturer Data"
msgstr ""
-#: templates/js/translated/bom.js:107
+#: templates/js/translated/bom.js:320
msgid "Include part manufacturer data in exported BOM"
msgstr ""
-#: templates/js/translated/bom.js:112
+#: templates/js/translated/bom.js:325
msgid "Include Supplier Data"
msgstr ""
-#: templates/js/translated/bom.js:113
+#: templates/js/translated/bom.js:326
msgid "Include part supplier data in exported BOM"
msgstr ""
-#: templates/js/translated/bom.js:296
+#: templates/js/translated/bom.js:509
msgid "Remove substitute part"
msgstr ""
-#: templates/js/translated/bom.js:352
+#: templates/js/translated/bom.js:565
msgid "Select and add a new substitute part using the input below"
msgstr ""
-#: templates/js/translated/bom.js:363
+#: templates/js/translated/bom.js:576
msgid "Are you sure you wish to remove this substitute part link?"
msgstr ""
-#: templates/js/translated/bom.js:369
+#: templates/js/translated/bom.js:582
msgid "Remove Substitute Part"
msgstr ""
-#: templates/js/translated/bom.js:408
+#: templates/js/translated/bom.js:621
msgid "Add Substitute"
msgstr ""
-#: templates/js/translated/bom.js:409
+#: templates/js/translated/bom.js:622
msgid "Edit BOM Item Substitutes"
msgstr ""
-#: templates/js/translated/bom.js:528
+#: templates/js/translated/bom.js:741
msgid "Substitutes Available"
msgstr ""
-#: templates/js/translated/bom.js:532 templates/js/translated/build.js:1171
+#: templates/js/translated/bom.js:745 templates/js/translated/build.js:1393
msgid "Variant stock allowed"
msgstr ""
-#: templates/js/translated/bom.js:537
+#: templates/js/translated/bom.js:750
msgid "Open subassembly"
msgstr ""
-#: templates/js/translated/bom.js:609
+#: templates/js/translated/bom.js:822
msgid "Substitutes"
msgstr ""
-#: templates/js/translated/bom.js:624
+#: templates/js/translated/bom.js:837
msgid "Purchase Price Range"
msgstr ""
-#: templates/js/translated/bom.js:631
+#: templates/js/translated/bom.js:844
msgid "Purchase Price Average"
msgstr ""
-#: templates/js/translated/bom.js:680 templates/js/translated/bom.js:769
+#: templates/js/translated/bom.js:893 templates/js/translated/bom.js:982
msgid "View BOM"
msgstr ""
-#: templates/js/translated/bom.js:740
+#: templates/js/translated/bom.js:953
msgid "Validate BOM Item"
msgstr ""
-#: templates/js/translated/bom.js:742
+#: templates/js/translated/bom.js:955
msgid "This line has been validated"
msgstr ""
-#: templates/js/translated/bom.js:744
+#: templates/js/translated/bom.js:957
msgid "Edit substitute parts"
msgstr ""
-#: templates/js/translated/bom.js:746 templates/js/translated/bom.js:920
+#: templates/js/translated/bom.js:959 templates/js/translated/bom.js:1138
msgid "Edit BOM Item"
msgstr ""
-#: templates/js/translated/bom.js:748 templates/js/translated/bom.js:903
+#: templates/js/translated/bom.js:961 templates/js/translated/bom.js:1121
msgid "Delete BOM Item"
msgstr ""
-#: templates/js/translated/bom.js:842 templates/js/translated/build.js:915
+#: templates/js/translated/bom.js:1060 templates/js/translated/build.js:1137
msgid "No BOM items found"
msgstr ""
-#: templates/js/translated/bom.js:898
+#: templates/js/translated/bom.js:1116
msgid "Are you sure you want to delete this BOM item?"
msgstr ""
-#: templates/js/translated/bom.js:1100 templates/js/translated/build.js:1155
+#: templates/js/translated/bom.js:1318 templates/js/translated/build.js:1377
msgid "Required Part"
msgstr ""
-#: templates/js/translated/bom.js:1122
+#: templates/js/translated/bom.js:1340
msgid "Inherited from parent BOM"
msgstr ""
-#: templates/js/translated/build.js:84
+#: templates/js/translated/build.js:85
msgid "Edit Build Order"
msgstr ""
-#: templates/js/translated/build.js:118
+#: templates/js/translated/build.js:119
msgid "Create Build Order"
msgstr ""
-#: templates/js/translated/build.js:139
+#: templates/js/translated/build.js:140
msgid "Build order is ready to be completed"
msgstr ""
-#: templates/js/translated/build.js:144
+#: templates/js/translated/build.js:145
msgid "Build Order is incomplete"
msgstr ""
-#: templates/js/translated/build.js:172
+#: templates/js/translated/build.js:173
msgid "Complete Build Order"
msgstr ""
-#: templates/js/translated/build.js:193
+#: templates/js/translated/build.js:214 templates/js/translated/stock.js:93
+#: templates/js/translated/stock.js:182
+msgid "Next available serial number"
+msgstr ""
+
+#: templates/js/translated/build.js:216 templates/js/translated/stock.js:95
+#: templates/js/translated/stock.js:184
+msgid "Latest serial number"
+msgstr ""
+
+#: templates/js/translated/build.js:225
+msgid "The Bill of Materials contains trackable parts"
+msgstr "La distinta base contiene articoli tracciabili"
+
+#: templates/js/translated/build.js:226
+msgid "Build outputs must be generated individually"
+msgstr ""
+
+#: templates/js/translated/build.js:234
+msgid "Trackable parts can have serial numbers specified"
+msgstr ""
+
+#: templates/js/translated/build.js:235
+msgid "Enter serial numbers to generate multiple single build outputs"
+msgstr ""
+
+#: templates/js/translated/build.js:242
+msgid "Create Build Output"
+msgstr ""
+
+#: templates/js/translated/build.js:273
msgid "Allocate stock items to this build output"
msgstr ""
-#: templates/js/translated/build.js:204
+#: templates/js/translated/build.js:284
msgid "Unallocate stock from build output"
msgstr ""
-#: templates/js/translated/build.js:213
+#: templates/js/translated/build.js:293
msgid "Complete build output"
msgstr ""
-#: templates/js/translated/build.js:221
+#: templates/js/translated/build.js:301
msgid "Delete build output"
msgstr ""
-#: templates/js/translated/build.js:244
+#: templates/js/translated/build.js:324
msgid "Are you sure you wish to unallocate stock items from this build?"
msgstr ""
-#: templates/js/translated/build.js:262
+#: templates/js/translated/build.js:342
msgid "Unallocate Stock Items"
msgstr ""
-#: templates/js/translated/build.js:280
+#: templates/js/translated/build.js:360 templates/js/translated/build.js:508
msgid "Select Build Outputs"
msgstr ""
-#: templates/js/translated/build.js:281
+#: templates/js/translated/build.js:361 templates/js/translated/build.js:509
msgid "At least one build output must be selected"
msgstr ""
-#: templates/js/translated/build.js:335
+#: templates/js/translated/build.js:415 templates/js/translated/build.js:563
msgid "Output"
msgstr ""
-#: templates/js/translated/build.js:351
+#: templates/js/translated/build.js:431
msgid "Complete Build Outputs"
msgstr ""
-#: templates/js/translated/build.js:446
+#: templates/js/translated/build.js:576
+msgid "Delete Build Outputs"
+msgstr ""
+
+#: templates/js/translated/build.js:665
msgid "No build order allocations found"
msgstr ""
-#: templates/js/translated/build.js:484 templates/js/translated/order.js:1848
+#: templates/js/translated/build.js:703 templates/js/translated/order.js:1848
msgid "Location not specified"
msgstr "Posizione non specificata"
-#: templates/js/translated/build.js:663
+#: templates/js/translated/build.js:885
msgid "No active build outputs found"
msgstr ""
-#: templates/js/translated/build.js:1112 templates/js/translated/build.js:1821
+#: templates/js/translated/build.js:1334 templates/js/translated/build.js:2059
#: templates/js/translated/order.js:1982
msgid "Edit stock allocation"
msgstr "Modifica allocazione magazzino"
-#: templates/js/translated/build.js:1114 templates/js/translated/build.js:1822
+#: templates/js/translated/build.js:1336 templates/js/translated/build.js:2060
#: templates/js/translated/order.js:1983
msgid "Delete stock allocation"
msgstr "Elimina posizione giacenza"
-#: templates/js/translated/build.js:1132
+#: templates/js/translated/build.js:1354
msgid "Edit Allocation"
msgstr "Modifica Posizione"
-#: templates/js/translated/build.js:1142
+#: templates/js/translated/build.js:1364
msgid "Remove Allocation"
msgstr "Rimuovi Posizione"
-#: templates/js/translated/build.js:1167
+#: templates/js/translated/build.js:1389
msgid "Substitute parts available"
msgstr ""
-#: templates/js/translated/build.js:1184
+#: templates/js/translated/build.js:1406
msgid "Quantity Per"
msgstr ""
-#: templates/js/translated/build.js:1194 templates/js/translated/build.js:1420
-#: templates/js/translated/build.js:1817 templates/js/translated/order.js:2227
+#: templates/js/translated/build.js:1416 templates/js/translated/build.js:1656
+#: templates/js/translated/build.js:2055 templates/js/translated/order.js:2227
msgid "Allocated"
msgstr ""
-#: templates/js/translated/build.js:1250 templates/js/translated/order.js:2307
+#: templates/js/translated/build.js:1472 templates/js/translated/order.js:2307
msgid "Build stock"
msgstr ""
-#: templates/js/translated/build.js:1254 templates/stock_table.html:53
+#: templates/js/translated/build.js:1476 templates/stock_table.html:53
msgid "Order stock"
msgstr ""
-#: templates/js/translated/build.js:1257 templates/js/translated/order.js:2300
+#: templates/js/translated/build.js:1479 templates/js/translated/order.js:2300
msgid "Allocate stock"
msgstr ""
-#: templates/js/translated/build.js:1322 templates/js/translated/order.js:1499
+#: templates/js/translated/build.js:1558 templates/js/translated/order.js:1499
msgid "Specify stock allocation quantity"
msgstr "Specificare il quantitativo assegnato allo stock"
-#: templates/js/translated/build.js:1393 templates/js/translated/label.js:134
+#: templates/js/translated/build.js:1629 templates/js/translated/label.js:134
#: templates/js/translated/order.js:1550 templates/js/translated/report.js:225
msgid "Select Parts"
msgstr "Seleziona Articoli"
-#: templates/js/translated/build.js:1394 templates/js/translated/order.js:1551
+#: templates/js/translated/build.js:1630 templates/js/translated/order.js:1551
msgid "You must select at least one part to allocate"
msgstr ""
-#: templates/js/translated/build.js:1408 templates/js/translated/order.js:1565
+#: templates/js/translated/build.js:1644 templates/js/translated/order.js:1565
msgid "Select source location (leave blank to take from all locations)"
msgstr "Seleziona la posizione di origine (lascia vuoto per prendere da tutte le posizioni)"
-#: templates/js/translated/build.js:1437 templates/js/translated/order.js:1600
+#: templates/js/translated/build.js:1673 templates/js/translated/order.js:1600
msgid "Confirm stock allocation"
msgstr "Conferma l'assegnazione della giacenza"
-#: templates/js/translated/build.js:1438
+#: templates/js/translated/build.js:1674
msgid "Allocate Stock Items to Build Order"
msgstr ""
-#: templates/js/translated/build.js:1449 templates/js/translated/order.js:1613
+#: templates/js/translated/build.js:1685 templates/js/translated/order.js:1613
msgid "No matching stock locations"
msgstr "Nessuna posizione di magazzino corrispondente"
-#: templates/js/translated/build.js:1519 templates/js/translated/order.js:1690
+#: templates/js/translated/build.js:1757 templates/js/translated/order.js:1690
msgid "No matching stock items"
msgstr ""
-#: templates/js/translated/build.js:1637
+#: templates/js/translated/build.js:1875
msgid "No builds matching query"
msgstr ""
-#: templates/js/translated/build.js:1654 templates/js/translated/part.js:1213
-#: templates/js/translated/part.js:1624 templates/js/translated/stock.js:1520
-#: templates/js/translated/stock.js:2479
+#: templates/js/translated/build.js:1892 templates/js/translated/part.js:1213
+#: templates/js/translated/part.js:1624 templates/js/translated/stock.js:1644
+#: templates/js/translated/stock.js:2603
msgid "Select"
msgstr ""
-#: templates/js/translated/build.js:1674
+#: templates/js/translated/build.js:1912
msgid "Build order is overdue"
msgstr ""
-#: templates/js/translated/build.js:1735 templates/js/translated/stock.js:2698
+#: templates/js/translated/build.js:1973 templates/js/translated/stock.js:2822
msgid "No user information"
msgstr ""
-#: templates/js/translated/build.js:1747
+#: templates/js/translated/build.js:1985
msgid "No information"
msgstr ""
-#: templates/js/translated/build.js:1798
+#: templates/js/translated/build.js:2036
msgid "No parts allocated for"
msgstr ""
@@ -7967,48 +8061,60 @@ msgstr "Cancella tutti i filtri"
msgid "Create filter"
msgstr "Crea filtro"
-#: templates/js/translated/forms.js:350 templates/js/translated/forms.js:365
-#: templates/js/translated/forms.js:379 templates/js/translated/forms.js:393
+#: templates/js/translated/forms.js:351 templates/js/translated/forms.js:366
+#: templates/js/translated/forms.js:380 templates/js/translated/forms.js:394
msgid "Action Prohibited"
msgstr "Azione Vietata"
-#: templates/js/translated/forms.js:352
+#: templates/js/translated/forms.js:353
msgid "Create operation not allowed"
msgstr "Crea operazione non consentita"
-#: templates/js/translated/forms.js:367
+#: templates/js/translated/forms.js:368
msgid "Update operation not allowed"
msgstr "Operazione di aggiornamento non consentita"
-#: templates/js/translated/forms.js:381
+#: templates/js/translated/forms.js:382
msgid "Delete operation not allowed"
msgstr "Operazione di eliminazione non consentita"
-#: templates/js/translated/forms.js:395
+#: templates/js/translated/forms.js:396
msgid "View operation not allowed"
msgstr "Mostra operazione non consentita"
-#: templates/js/translated/forms.js:680
+#: templates/js/translated/forms.js:681
msgid "Enter a valid number"
msgstr "Inserisci un numero valido"
-#: templates/js/translated/forms.js:1082 templates/modals.html:19
+#: templates/js/translated/forms.js:1129 templates/modals.html:19
#: templates/modals.html:43
msgid "Form errors exist"
msgstr ""
-#: templates/js/translated/forms.js:1487
+#: templates/js/translated/forms.js:1558
msgid "No results found"
msgstr "Nessun risultato trovato"
-#: templates/js/translated/forms.js:1691
+#: templates/js/translated/forms.js:1768
msgid "Searching"
msgstr "Ricerca"
-#: templates/js/translated/forms.js:1930
+#: templates/js/translated/forms.js:2013
msgid "Clear input"
msgstr "Cancella input"
+#: templates/js/translated/forms.js:2479
+msgid "File Column"
+msgstr ""
+
+#: templates/js/translated/forms.js:2479
+msgid "Field Name"
+msgstr ""
+
+#: templates/js/translated/forms.js:2491
+msgid "Select Columns"
+msgstr ""
+
#: templates/js/translated/helpers.js:19
msgid "YES"
msgstr "SÌ"
@@ -8018,7 +8124,7 @@ msgid "NO"
msgstr "NO"
#: templates/js/translated/label.js:29 templates/js/translated/report.js:118
-#: templates/js/translated/stock.js:1050
+#: templates/js/translated/stock.js:1051
msgid "Select Stock Items"
msgstr ""
@@ -8073,7 +8179,7 @@ msgid "Cancel"
msgstr "Annulla"
#: templates/js/translated/modals.js:77 templates/js/translated/modals.js:119
-#: templates/js/translated/modals.js:677 templates/js/translated/modals.js:982
+#: templates/js/translated/modals.js:677 templates/js/translated/modals.js:985
#: templates/modals.html:28 templates/modals.html:51
msgid "Submit"
msgstr "Invia"
@@ -8098,31 +8204,31 @@ msgstr "Accetta"
msgid "Loading Data"
msgstr ""
-#: templates/js/translated/modals.js:934
+#: templates/js/translated/modals.js:937
msgid "Invalid response from server"
msgstr "Risposta dal server non valida"
-#: templates/js/translated/modals.js:934
+#: templates/js/translated/modals.js:937
msgid "Form data missing from server response"
msgstr ""
-#: templates/js/translated/modals.js:946
+#: templates/js/translated/modals.js:949
msgid "Error posting form data"
msgstr ""
-#: templates/js/translated/modals.js:1043
+#: templates/js/translated/modals.js:1046
msgid "JSON response missing form data"
msgstr ""
-#: templates/js/translated/modals.js:1058
+#: templates/js/translated/modals.js:1061
msgid "Error 400: Bad Request"
msgstr ""
-#: templates/js/translated/modals.js:1059
+#: templates/js/translated/modals.js:1062
msgid "Server returned error code 400"
msgstr ""
-#: templates/js/translated/modals.js:1082
+#: templates/js/translated/modals.js:1085
msgid "Error requesting form data"
msgstr ""
@@ -8142,10 +8248,6 @@ msgstr "ID Posizione"
msgid "Build ID"
msgstr ""
-#: templates/js/translated/model_renderers.js:182
-msgid "Part ID"
-msgstr "Codice Articolo"
-
#: templates/js/translated/model_renderers.js:249
#: templates/js/translated/model_renderers.js:270
msgid "Order ID"
@@ -8211,7 +8313,7 @@ msgstr ""
msgid "Quantity to receive"
msgstr "Quantità da ricevere"
-#: templates/js/translated/order.js:520 templates/js/translated/stock.js:2131
+#: templates/js/translated/order.js:520 templates/js/translated/stock.js:2255
msgid "Stock Status"
msgstr "Stato giacenza"
@@ -8345,7 +8447,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:1436
+#: templates/js/translated/stock.js:1560
msgid "Shipped to customer"
msgstr "Spedito al cliente"
@@ -8546,12 +8648,12 @@ msgid "No category"
msgstr "Nessuna categoria"
#: templates/js/translated/part.js:1296
-#: templates/js/translated/table_filters.js:430
+#: templates/js/translated/table_filters.js:425
msgid "Low stock"
msgstr "In esaurimento"
#: templates/js/translated/part.js:1387 templates/js/translated/part.js:1559
-#: templates/js/translated/stock.js:2440
+#: templates/js/translated/stock.js:2564
msgid "Display as list"
msgstr "Visualizza come elenco"
@@ -8559,7 +8661,7 @@ msgstr "Visualizza come elenco"
msgid "Display as grid"
msgstr "Visualizza come griglia"
-#: templates/js/translated/part.js:1578 templates/js/translated/stock.js:2459
+#: templates/js/translated/part.js:1578 templates/js/translated/stock.js:2583
msgid "Display as tree"
msgstr "Visualizza come struttura ad albero"
@@ -8567,7 +8669,7 @@ msgstr "Visualizza come struttura ad albero"
msgid "Subscribed category"
msgstr "Categoria sottoscritta"
-#: templates/js/translated/part.js:1656 templates/js/translated/stock.js:2503
+#: templates/js/translated/part.js:1656 templates/js/translated/stock.js:2627
msgid "Path"
msgstr "Percorso"
@@ -8575,11 +8677,12 @@ msgstr "Percorso"
msgid "No test templates matching query"
msgstr "Nessun modello di test corrispondente"
-#: templates/js/translated/part.js:1751 templates/js/translated/stock.js:1242
+#: templates/js/translated/part.js:1751 templates/js/translated/stock.js:1271
msgid "Edit test result"
msgstr "Modificare il risultato del test"
-#: templates/js/translated/part.js:1752 templates/js/translated/stock.js:1243
+#: templates/js/translated/part.js:1752 templates/js/translated/stock.js:1272
+#: templates/js/translated/stock.js:1518
msgid "Delete test result"
msgstr "Cancellare il risultato del test"
@@ -8688,347 +8791,375 @@ msgstr ""
msgid "Sales Order(s) must be selected before printing report"
msgstr ""
-#: templates/js/translated/stock.js:74
+#: templates/js/translated/stock.js:75
msgid "Serialize Stock Item"
msgstr ""
-#: templates/js/translated/stock.js:92 templates/js/translated/stock.js:181
-msgid "Next available serial number"
-msgstr ""
-
-#: templates/js/translated/stock.js:94 templates/js/translated/stock.js:183
-msgid "Latest serial number"
-msgstr ""
-
-#: templates/js/translated/stock.js:102
+#: templates/js/translated/stock.js:103
msgid "Confirm Stock Serialization"
msgstr ""
-#: templates/js/translated/stock.js:111
+#: templates/js/translated/stock.js:112
msgid "Parent stock location"
msgstr "Posizione giacenza principale"
-#: templates/js/translated/stock.js:154
+#: templates/js/translated/stock.js:155
msgid "New Stock Location"
msgstr "Nuova posizione giacenza"
-#: templates/js/translated/stock.js:194
+#: templates/js/translated/stock.js:195
msgid "This part cannot be serialized"
msgstr ""
-#: templates/js/translated/stock.js:233
+#: templates/js/translated/stock.js:234
msgid "Enter initial quantity for this stock item"
msgstr "Inserisci quantità iniziale per questo articolo in giacenza"
-#: templates/js/translated/stock.js:239
+#: templates/js/translated/stock.js:240
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:382
+#: templates/js/translated/stock.js:383
msgid "Created new stock item"
msgstr "Crea nuova allocazione magazzino"
-#: templates/js/translated/stock.js:395
+#: templates/js/translated/stock.js:396
msgid "Created multiple stock items"
msgstr "Creato più elementi stock"
-#: templates/js/translated/stock.js:420
+#: templates/js/translated/stock.js:421
msgid "Find Serial Number"
msgstr ""
-#: templates/js/translated/stock.js:424 templates/js/translated/stock.js:425
+#: templates/js/translated/stock.js:425 templates/js/translated/stock.js:426
msgid "Enter serial number"
msgstr ""
-#: templates/js/translated/stock.js:441
+#: templates/js/translated/stock.js:442
msgid "Enter a serial number"
msgstr ""
-#: templates/js/translated/stock.js:461
+#: templates/js/translated/stock.js:462
msgid "No matching serial number"
msgstr ""
-#: templates/js/translated/stock.js:470
+#: templates/js/translated/stock.js:471
msgid "More than one matching result found"
msgstr ""
-#: templates/js/translated/stock.js:515
+#: templates/js/translated/stock.js:516
msgid "Export Stock"
msgstr "Esporta giacenza"
-#: templates/js/translated/stock.js:526
+#: templates/js/translated/stock.js:527
msgid "Include Sublocations"
msgstr "Includi sotto allocazioni"
-#: templates/js/translated/stock.js:527
+#: templates/js/translated/stock.js:528
msgid "Include stock items in sublocations"
msgstr "Includi elementi in giacenza nelle sottoallocazioni"
-#: templates/js/translated/stock.js:636
+#: templates/js/translated/stock.js:637
msgid "Confirm stock assignment"
msgstr ""
-#: templates/js/translated/stock.js:637
+#: templates/js/translated/stock.js:638
msgid "Assign Stock to Customer"
msgstr ""
-#: templates/js/translated/stock.js:714
+#: templates/js/translated/stock.js:715
msgid "Warning: Merge operation cannot be reversed"
msgstr ""
-#: templates/js/translated/stock.js:715
+#: templates/js/translated/stock.js:716
msgid "Some information will be lost when merging stock items"
msgstr ""
-#: templates/js/translated/stock.js:717
+#: templates/js/translated/stock.js:718
msgid "Stock transaction history will be deleted for merged items"
msgstr ""
-#: templates/js/translated/stock.js:718
+#: templates/js/translated/stock.js:719
msgid "Supplier part information will be deleted for merged items"
msgstr ""
-#: templates/js/translated/stock.js:804
+#: templates/js/translated/stock.js:805
msgid "Confirm stock item merge"
msgstr ""
-#: templates/js/translated/stock.js:805
+#: templates/js/translated/stock.js:806
msgid "Merge Stock Items"
msgstr ""
-#: templates/js/translated/stock.js:900
+#: templates/js/translated/stock.js:901
msgid "Transfer Stock"
msgstr "Trasferisci giacenza"
-#: templates/js/translated/stock.js:901
+#: templates/js/translated/stock.js:902
msgid "Move"
msgstr "Sposta"
-#: templates/js/translated/stock.js:907
+#: templates/js/translated/stock.js:908
msgid "Count Stock"
msgstr "Conta giacenza"
-#: templates/js/translated/stock.js:908
+#: templates/js/translated/stock.js:909
msgid "Count"
msgstr "Conta"
-#: templates/js/translated/stock.js:912
+#: templates/js/translated/stock.js:913
msgid "Remove Stock"
msgstr "Rimuovi giacenza"
-#: templates/js/translated/stock.js:913
+#: templates/js/translated/stock.js:914
msgid "Take"
msgstr "Prendi"
-#: templates/js/translated/stock.js:917
+#: templates/js/translated/stock.js:918
msgid "Add Stock"
msgstr "Aggiungi giacenza"
-#: templates/js/translated/stock.js:918 users/models.py:208
+#: templates/js/translated/stock.js:919 users/models.py:213
msgid "Add"
msgstr "Aggiungi"
-#: templates/js/translated/stock.js:922 templates/stock_table.html:58
+#: templates/js/translated/stock.js:923 templates/stock_table.html:58
msgid "Delete Stock"
msgstr "Elimina Stock"
-#: templates/js/translated/stock.js:1011
+#: templates/js/translated/stock.js:1012
msgid "Quantity cannot be adjusted for serialized stock"
msgstr ""
-#: templates/js/translated/stock.js:1011
+#: templates/js/translated/stock.js:1012
msgid "Specify stock quantity"
msgstr "Specificare la quantità di magazzino"
-#: templates/js/translated/stock.js:1051
+#: templates/js/translated/stock.js:1052
msgid "You must select at least one available stock item"
msgstr "Devi selezionare almeno un articolo disponibile"
-#: templates/js/translated/stock.js:1209
+#: templates/js/translated/stock.js:1210
msgid "PASS"
msgstr "PASS"
-#: templates/js/translated/stock.js:1211
+#: templates/js/translated/stock.js:1212
msgid "FAIL"
msgstr "FAIL"
-#: templates/js/translated/stock.js:1216
+#: templates/js/translated/stock.js:1217
msgid "NO RESULT"
msgstr "NESSUN RISULTATO"
-#: templates/js/translated/stock.js:1238
+#: templates/js/translated/stock.js:1264
+msgid "Pass test"
+msgstr ""
+
+#: templates/js/translated/stock.js:1267
msgid "Add test result"
msgstr "Aggiungi risultato test"
-#: templates/js/translated/stock.js:1264
+#: templates/js/translated/stock.js:1293
msgid "No test results found"
msgstr "Nessun risultato di prova trovato"
-#: templates/js/translated/stock.js:1321
+#: templates/js/translated/stock.js:1349
msgid "Test Date"
msgstr ""
-#: templates/js/translated/stock.js:1428
+#: templates/js/translated/stock.js:1501
+msgid "Edit Test Result"
+msgstr ""
+
+#: templates/js/translated/stock.js:1523
+msgid "Delete Test Result"
+msgstr ""
+
+#: templates/js/translated/stock.js:1552
msgid "In production"
msgstr "In produzione"
-#: templates/js/translated/stock.js:1432
+#: templates/js/translated/stock.js:1556
msgid "Installed in Stock Item"
msgstr "Installato nell'elemento stock"
-#: templates/js/translated/stock.js:1440
+#: templates/js/translated/stock.js:1564
msgid "Assigned to Sales Order"
msgstr "Assegnato all'ordine di vendita"
-#: templates/js/translated/stock.js:1446
+#: templates/js/translated/stock.js:1570
msgid "No stock location set"
msgstr "Nessuna giacenza impostata"
-#: templates/js/translated/stock.js:1604
+#: templates/js/translated/stock.js:1728
msgid "Stock item is in production"
msgstr "L'articolo di magazzino è in produzione"
-#: templates/js/translated/stock.js:1609
+#: templates/js/translated/stock.js:1733
msgid "Stock item assigned to sales order"
msgstr ""
-#: templates/js/translated/stock.js:1612
+#: templates/js/translated/stock.js:1736
msgid "Stock item assigned to customer"
msgstr "Articolo stock assegnato al cliente"
-#: templates/js/translated/stock.js:1616
+#: templates/js/translated/stock.js:1740
msgid "Stock item has expired"
msgstr "L'articolo stock è scaduto"
-#: templates/js/translated/stock.js:1618
+#: templates/js/translated/stock.js:1742
msgid "Stock item will expire soon"
msgstr "Articolo in giacenza prossimo alla scadenza"
-#: templates/js/translated/stock.js:1624
+#: templates/js/translated/stock.js:1748
msgid "Serialized stock item has been allocated"
msgstr ""
-#: templates/js/translated/stock.js:1626
+#: templates/js/translated/stock.js:1750
msgid "Stock item has been fully allocated"
msgstr ""
-#: templates/js/translated/stock.js:1628
+#: templates/js/translated/stock.js:1752
msgid "Stock item has been partially allocated"
msgstr ""
-#: templates/js/translated/stock.js:1633
+#: templates/js/translated/stock.js:1757
msgid "Stock item has been installed in another item"
msgstr "L'elemento stock è stato installato in un altro articolo"
-#: templates/js/translated/stock.js:1640
+#: templates/js/translated/stock.js:1764
msgid "Stock item has been rejected"
msgstr "L'articolo stock è stato rifiutato"
-#: templates/js/translated/stock.js:1642
+#: templates/js/translated/stock.js:1766
msgid "Stock item is lost"
msgstr ""
-#: templates/js/translated/stock.js:1644
+#: templates/js/translated/stock.js:1768
msgid "Stock item is destroyed"
msgstr ""
-#: templates/js/translated/stock.js:1648
+#: templates/js/translated/stock.js:1772
#: templates/js/translated/table_filters.js:188
msgid "Depleted"
msgstr "Esaurito"
-#: templates/js/translated/stock.js:1698
+#: templates/js/translated/stock.js:1822
msgid "Stocktake"
msgstr "Inventario"
-#: templates/js/translated/stock.js:1771
+#: templates/js/translated/stock.js:1895
msgid "Supplier part not specified"
msgstr ""
-#: templates/js/translated/stock.js:1809
+#: templates/js/translated/stock.js:1933
msgid "No stock items matching query"
msgstr ""
-#: templates/js/translated/stock.js:1830 templates/js/translated/stock.js:1878
+#: templates/js/translated/stock.js:1954 templates/js/translated/stock.js:2002
msgid "items"
msgstr "elementi"
-#: templates/js/translated/stock.js:1918
+#: templates/js/translated/stock.js:2042
msgid "batches"
msgstr ""
-#: templates/js/translated/stock.js:1945
+#: templates/js/translated/stock.js:2069
msgid "locations"
msgstr "posizione"
-#: templates/js/translated/stock.js:1947
+#: templates/js/translated/stock.js:2071
msgid "Undefined location"
msgstr "Posizione non definita"
-#: templates/js/translated/stock.js:2146
+#: templates/js/translated/stock.js:2270
msgid "Set Stock Status"
msgstr ""
-#: templates/js/translated/stock.js:2160
+#: templates/js/translated/stock.js:2284
msgid "Select Status Code"
msgstr ""
-#: templates/js/translated/stock.js:2161
+#: templates/js/translated/stock.js:2285
msgid "Status code must be selected"
msgstr ""
-#: templates/js/translated/stock.js:2340
+#: templates/js/translated/stock.js:2464
msgid "Allocated Quantity"
msgstr ""
-#: templates/js/translated/stock.js:2535
+#: templates/js/translated/stock.js:2659
msgid "Invalid date"
msgstr "Data non valida"
-#: templates/js/translated/stock.js:2557
+#: templates/js/translated/stock.js:2681
msgid "Details"
msgstr ""
-#: templates/js/translated/stock.js:2582
+#: templates/js/translated/stock.js:2706
msgid "Location no longer exists"
msgstr "La posizione non esiste più"
-#: templates/js/translated/stock.js:2601
+#: templates/js/translated/stock.js:2725
msgid "Purchase order no longer exists"
msgstr ""
-#: templates/js/translated/stock.js:2620
+#: templates/js/translated/stock.js:2744
msgid "Customer no longer exists"
msgstr ""
-#: templates/js/translated/stock.js:2638
+#: templates/js/translated/stock.js:2762
msgid "Stock item no longer exists"
msgstr ""
-#: templates/js/translated/stock.js:2661
+#: templates/js/translated/stock.js:2785
msgid "Added"
msgstr "Aggiunto"
-#: templates/js/translated/stock.js:2669
+#: templates/js/translated/stock.js:2793
msgid "Removed"
msgstr "Rimosso"
-#: templates/js/translated/stock.js:2710
+#: templates/js/translated/stock.js:2834
msgid "Edit tracking entry"
msgstr ""
-#: templates/js/translated/stock.js:2711
+#: templates/js/translated/stock.js:2835
msgid "Delete tracking entry"
msgstr ""
-#: templates/js/translated/stock.js:2762
+#: templates/js/translated/stock.js:2886
msgid "No installed items"
msgstr ""
-#: templates/js/translated/stock.js:2813
+#: templates/js/translated/stock.js:2937
msgid "Uninstall Stock Item"
msgstr ""
+#: templates/js/translated/stock.js:2973
+msgid "Install another stock item into this item"
+msgstr ""
+
+#: templates/js/translated/stock.js:2974
+msgid "Stock items can only be installed if they meet the following criteria"
+msgstr ""
+
+#: templates/js/translated/stock.js:2976
+msgid "The Stock Item links to a Part which is the BOM for this Stock Item"
+msgstr ""
+
+#: templates/js/translated/stock.js:2977
+msgid "The Stock Item is currently available in stock"
+msgstr ""
+
+#: templates/js/translated/stock.js:2978
+msgid "The Stock Item is serialized and does not belong to another item"
+msgstr ""
+
+#: templates/js/translated/stock.js:2991
+msgid "Select part to install"
+msgstr ""
+
#: templates/js/translated/table_filters.js:56
msgid "Trackable Part"
msgstr ""
@@ -9056,12 +9187,12 @@ msgstr "Includi posizioni"
#: templates/js/translated/table_filters.js:121
#: templates/js/translated/table_filters.js:122
-#: templates/js/translated/table_filters.js:407
+#: templates/js/translated/table_filters.js:402
msgid "Include subcategories"
msgstr "Includi sottocategorie"
#: templates/js/translated/table_filters.js:126
-#: templates/js/translated/table_filters.js:442
+#: templates/js/translated/table_filters.js:437
msgid "Subscribed"
msgstr "Sottoscritto"
@@ -9103,7 +9234,7 @@ msgid "Batch code"
msgstr "Codice Lotto"
#: templates/js/translated/table_filters.js:163
-#: templates/js/translated/table_filters.js:379
+#: templates/js/translated/table_filters.js:374
msgid "Active parts"
msgstr "Elementi attivi"
@@ -9188,47 +9319,47 @@ msgstr "Mostra gli elementi in giacenza scaduti"
msgid "Show stock which is close to expiring"
msgstr "Mostra giacenza prossima alla scadenza"
-#: templates/js/translated/table_filters.js:290
+#: templates/js/translated/table_filters.js:285
msgid "Build status"
msgstr "Stato Build"
-#: templates/js/translated/table_filters.js:303
-#: templates/js/translated/table_filters.js:344
+#: templates/js/translated/table_filters.js:298
+#: templates/js/translated/table_filters.js:339
msgid "Assigned to me"
msgstr ""
-#: templates/js/translated/table_filters.js:320
-#: templates/js/translated/table_filters.js:331
-#: templates/js/translated/table_filters.js:352
+#: templates/js/translated/table_filters.js:315
+#: templates/js/translated/table_filters.js:326
+#: templates/js/translated/table_filters.js:347
msgid "Order status"
msgstr "Stato dell'ordine"
-#: templates/js/translated/table_filters.js:336
-#: templates/js/translated/table_filters.js:357
+#: templates/js/translated/table_filters.js:331
+#: templates/js/translated/table_filters.js:352
msgid "Outstanding"
msgstr "In Sospeso"
-#: templates/js/translated/table_filters.js:408
+#: templates/js/translated/table_filters.js:403
msgid "Include parts in subcategories"
msgstr "Includi articoli nelle sottocategorie"
-#: templates/js/translated/table_filters.js:412
+#: templates/js/translated/table_filters.js:407
msgid "Has IPN"
msgstr "Ha IPN"
-#: templates/js/translated/table_filters.js:413
+#: templates/js/translated/table_filters.js:408
msgid "Part has internal part number"
msgstr "L'articolo possiede un part number interno"
-#: templates/js/translated/table_filters.js:418
+#: templates/js/translated/table_filters.js:413
msgid "Show active parts"
msgstr "Visualizza articoli attivi"
-#: templates/js/translated/table_filters.js:426
+#: templates/js/translated/table_filters.js:421
msgid "Stock available"
msgstr "Disponibilità"
-#: templates/js/translated/table_filters.js:454
+#: templates/js/translated/table_filters.js:449
msgid "Purchasable"
msgstr "Acquistabile"
@@ -9481,35 +9612,35 @@ msgstr "Permessi"
msgid "Important dates"
msgstr "Date Importanti"
-#: users/models.py:195
+#: users/models.py:200
msgid "Permission set"
msgstr "Impostazione autorizzazioni"
-#: users/models.py:203
+#: users/models.py:208
msgid "Group"
msgstr "Gruppo"
-#: users/models.py:206
+#: users/models.py:211
msgid "View"
msgstr "Visualizza"
-#: users/models.py:206
+#: users/models.py:211
msgid "Permission to view items"
msgstr "Autorizzazione a visualizzare gli articoli"
-#: users/models.py:208
+#: users/models.py:213
msgid "Permission to add items"
msgstr "Autorizzazione ad aggiungere elementi"
-#: users/models.py:210
+#: users/models.py:215
msgid "Change"
msgstr "Modificare"
-#: users/models.py:210
+#: users/models.py:215
msgid "Permissions to edit items"
msgstr "Permessi per modificare gli elementi"
-#: users/models.py:212
+#: users/models.py:217
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 463b23c3cf..6c39cc70ff 100644
--- a/InvenTree/locale/ja/LC_MESSAGES/django.po
+++ b/InvenTree/locale/ja/LC_MESSAGES/django.po
@@ -3,8 +3,8 @@ msgid ""
msgstr ""
"Project-Id-Version: inventree\n"
"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2022-01-29 00:17+0000\n"
-"PO-Revision-Date: 2022-01-29 01:11\n"
+"POT-Creation-Date: 2022-02-18 20:36+0000\n"
+"PO-Revision-Date: 2022-02-18 20:38\n"
"Last-Translator: \n"
"Language-Team: Japanese\n"
"Language: ja_JP\n"
@@ -34,9 +34,9 @@ msgstr "一致するアクションが見つかりませんでした"
msgid "Enter date"
msgstr "日付を入力する"
-#: InvenTree/forms.py:126 build/forms.py:48 build/forms.py:69 order/forms.py:24
-#: order/forms.py:35 order/forms.py:46 order/forms.py:57
-#: templates/account/email_confirm.html:20 templates/js/translated/forms.js:595
+#: InvenTree/forms.py:126 order/forms.py:24 order/forms.py:35 order/forms.py:46
+#: order/forms.py:57 templates/account/email_confirm.html:20
+#: templates/js/translated/forms.js:596
msgid "Confirm"
msgstr "確認"
@@ -86,7 +86,7 @@ msgid "Duplicate serial: {n}"
msgstr ""
#: InvenTree/helpers.py:446 order/models.py:282 order/models.py:425
-#: stock/views.py:1231
+#: stock/views.py:1082
msgid "Invalid quantity provided"
msgstr "数量コードが無効です"
@@ -119,133 +119,133 @@ msgstr "シリアル番号が見つかりません"
msgid "Number of unique serial number ({s}) must match quantity ({q})"
msgstr ""
-#: InvenTree/models.py:120
+#: InvenTree/models.py:176
msgid "Missing file"
msgstr ""
-#: InvenTree/models.py:121
+#: InvenTree/models.py:177
msgid "Missing external link"
msgstr ""
-#: InvenTree/models.py:132 stock/models.py:1995
+#: InvenTree/models.py:188 stock/models.py:1995
#: templates/js/translated/attachment.js:119
msgid "Attachment"
msgstr "添付ファイル"
-#: InvenTree/models.py:133
+#: InvenTree/models.py:189
msgid "Select file to attach"
msgstr "添付ファイルを選択"
-#: InvenTree/models.py:139 company/models.py:131 company/models.py:348
-#: company/models.py:564 order/models.py:127 part/models.py:830
+#: InvenTree/models.py:195 company/models.py:131 company/models.py:348
+#: company/models.py:564 order/models.py:127 part/models.py:860
#: report/templates/report/inventree_build_order_base.html:165
#: templates/js/translated/company.js:540
#: templates/js/translated/company.js:829 templates/js/translated/part.js:1324
msgid "Link"
msgstr ""
-#: InvenTree/models.py:140 build/models.py:332 part/models.py:831
+#: InvenTree/models.py:196 build/models.py:332 part/models.py:861
#: stock/models.py:529
msgid "Link to external URL"
msgstr ""
-#: InvenTree/models.py:143 templates/js/translated/attachment.js:163
+#: InvenTree/models.py:199 templates/js/translated/attachment.js:163
msgid "Comment"
msgstr "コメント:"
-#: InvenTree/models.py:143
+#: InvenTree/models.py:199
msgid "File comment"
msgstr "ファイルコメント"
-#: InvenTree/models.py:149 InvenTree/models.py:150 common/models.py:1223
-#: common/models.py:1224 common/models.py:1452 common/models.py:1453
-#: part/models.py:2265 part/models.py:2285
+#: InvenTree/models.py:205 InvenTree/models.py:206 common/models.py:1235
+#: common/models.py:1236 common/models.py:1464 common/models.py:1465
+#: part/models.py:2301 part/models.py:2321
#: report/templates/report/inventree_test_report_base.html:96
-#: templates/js/translated/stock.js:2692
+#: templates/js/translated/stock.js:2816
msgid "User"
msgstr "ユーザー"
-#: InvenTree/models.py:153
+#: InvenTree/models.py:209
msgid "upload date"
msgstr "アップロード日時"
-#: InvenTree/models.py:176
+#: InvenTree/models.py:232
msgid "Filename must not be empty"
msgstr ""
-#: InvenTree/models.py:199
+#: InvenTree/models.py:255
msgid "Invalid attachment directory"
msgstr ""
-#: InvenTree/models.py:209
+#: InvenTree/models.py:265
#, python-brace-format
msgid "Filename contains illegal character '{c}'"
msgstr ""
-#: InvenTree/models.py:212
+#: InvenTree/models.py:268
msgid "Filename missing extension"
msgstr ""
-#: InvenTree/models.py:219
+#: InvenTree/models.py:275
msgid "Attachment with this filename already exists"
msgstr ""
-#: InvenTree/models.py:226
+#: InvenTree/models.py:282
msgid "Error renaming file"
msgstr ""
-#: InvenTree/models.py:261
+#: InvenTree/models.py:317
msgid "Invalid choice"
msgstr "無効な選択です"
-#: InvenTree/models.py:277 InvenTree/models.py:278 common/models.py:1438
-#: company/models.py:415 label/models.py:112 part/models.py:774
-#: part/models.py:2449 plugin/models.py:40 report/models.py:181
+#: InvenTree/models.py:333 InvenTree/models.py:334 common/models.py:1450
+#: company/models.py:415 label/models.py:112 part/models.py:804
+#: part/models.py:2485 plugin/models.py:40 report/models.py:181
#: templates/InvenTree/settings/mixins/urls.html:13
#: templates/InvenTree/settings/plugin.html:48
#: templates/InvenTree/settings/plugin.html:125
#: templates/InvenTree/settings/plugin_settings.html:23
-#: templates/InvenTree/settings/settings.html:282
+#: templates/InvenTree/settings/settings.html:319
#: templates/js/translated/company.js:641 templates/js/translated/part.js:567
#: templates/js/translated/part.js:706 templates/js/translated/part.js:1631
-#: templates/js/translated/stock.js:2485
+#: templates/js/translated/stock.js:2609
msgid "Name"
msgstr "お名前"
-#: InvenTree/models.py:284 build/models.py:209
+#: InvenTree/models.py:340 build/models.py:209
#: build/templates/build/detail.html:25 company/models.py:354
#: company/models.py:570 company/templates/company/company_base.html:68
#: company/templates/company/manufacturer_part.html:76
#: company/templates/company/supplier_part.html:73 label/models.py:119
-#: order/models.py:125 part/models.py:797 part/templates/part/category.html:74
+#: order/models.py:125 part/models.py:827 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:93
#: templates/InvenTree/settings/plugin_settings.html:33
-#: templates/js/translated/bom.js:339 templates/js/translated/bom.js:552
-#: templates/js/translated/build.js:1682 templates/js/translated/company.js:345
+#: templates/js/translated/bom.js:552 templates/js/translated/bom.js:765
+#: templates/js/translated/build.js:1920 templates/js/translated/company.js:345
#: templates/js/translated/company.js:551
#: templates/js/translated/company.js:840 templates/js/translated/order.js:836
#: templates/js/translated/order.js:1019 templates/js/translated/order.js:1258
#: templates/js/translated/part.js:626 templates/js/translated/part.js:999
#: templates/js/translated/part.js:1084 templates/js/translated/part.js:1254
#: templates/js/translated/part.js:1650 templates/js/translated/part.js:1719
-#: templates/js/translated/stock.js:1577 templates/js/translated/stock.js:2314
-#: templates/js/translated/stock.js:2497 templates/js/translated/stock.js:2542
+#: templates/js/translated/stock.js:1701 templates/js/translated/stock.js:2438
+#: templates/js/translated/stock.js:2621 templates/js/translated/stock.js:2666
msgid "Description"
msgstr "説明"
-#: InvenTree/models.py:285
+#: InvenTree/models.py:341
msgid "Description (optional)"
msgstr "説明 (オプション)"
-#: InvenTree/models.py:293
+#: InvenTree/models.py:349
msgid "parent"
msgstr "親"
-#: InvenTree/serializers.py:65 part/models.py:2734
+#: InvenTree/serializers.py:65 part/models.py:2803
msgid "Must be a valid number"
msgstr "有効な数字でなければなりません"
@@ -253,83 +253,127 @@ msgstr "有効な数字でなければなりません"
msgid "Filename"
msgstr ""
-#: InvenTree/settings.py:661
+#: InvenTree/serializers.py:334
+msgid "Invalid value"
+msgstr ""
+
+#: InvenTree/serializers.py:355
+msgid "Data File"
+msgstr ""
+
+#: InvenTree/serializers.py:356
+msgid "Select data file for upload"
+msgstr ""
+
+#: InvenTree/serializers.py:380
+msgid "Unsupported file type"
+msgstr ""
+
+#: InvenTree/serializers.py:386
+msgid "File is too large"
+msgstr ""
+
+#: InvenTree/serializers.py:407
+msgid "No columns found in file"
+msgstr ""
+
+#: InvenTree/serializers.py:410
+msgid "No data rows found in file"
+msgstr ""
+
+#: InvenTree/serializers.py:533
+msgid "No data rows provided"
+msgstr ""
+
+#: InvenTree/serializers.py:536
+msgid "No data columns supplied"
+msgstr ""
+
+#: InvenTree/serializers.py:623
+msgid "Missing required column"
+msgstr ""
+
+#: InvenTree/serializers.py:632
+msgid "Duplicate column"
+msgstr ""
+
+#: InvenTree/settings.py:655
msgid "German"
msgstr "ドイツ語"
-#: InvenTree/settings.py:662
+#: InvenTree/settings.py:656
msgid "Greek"
msgstr ""
-#: InvenTree/settings.py:663
+#: InvenTree/settings.py:657
msgid "English"
msgstr "英語"
-#: InvenTree/settings.py:664
+#: InvenTree/settings.py:658
msgid "Spanish"
msgstr ""
-#: InvenTree/settings.py:665
+#: InvenTree/settings.py:659
msgid "Spanish (Mexican)"
msgstr ""
-#: InvenTree/settings.py:666
+#: InvenTree/settings.py:660
msgid "French"
msgstr "フランス語"
-#: InvenTree/settings.py:667
+#: InvenTree/settings.py:661
msgid "Hebrew"
msgstr ""
-#: InvenTree/settings.py:668
+#: InvenTree/settings.py:662
msgid "Italian"
msgstr ""
-#: InvenTree/settings.py:669
+#: InvenTree/settings.py:663
msgid "Japanese"
msgstr ""
-#: InvenTree/settings.py:670
+#: InvenTree/settings.py:664
msgid "Korean"
msgstr ""
-#: InvenTree/settings.py:671
+#: InvenTree/settings.py:665
msgid "Dutch"
msgstr ""
-#: InvenTree/settings.py:672
+#: InvenTree/settings.py:666
msgid "Norwegian"
msgstr ""
-#: InvenTree/settings.py:673
+#: InvenTree/settings.py:667
msgid "Polish"
msgstr "ポーランド語"
-#: InvenTree/settings.py:674
+#: InvenTree/settings.py:668
msgid "Portugese"
msgstr ""
-#: InvenTree/settings.py:675
+#: InvenTree/settings.py:669
msgid "Russian"
msgstr ""
-#: InvenTree/settings.py:676
+#: InvenTree/settings.py:670
msgid "Swedish"
msgstr ""
-#: InvenTree/settings.py:677
+#: InvenTree/settings.py:671
msgid "Thai"
msgstr ""
-#: InvenTree/settings.py:678
+#: InvenTree/settings.py:672
msgid "Turkish"
msgstr "トルコ語"
-#: InvenTree/settings.py:679
+#: InvenTree/settings.py:673
msgid "Vietnamese"
msgstr ""
-#: InvenTree/settings.py:680
+#: InvenTree/settings.py:674
msgid "Chinese"
msgstr ""
@@ -346,7 +390,7 @@ msgid "InvenTree system health checks failed"
msgstr "InvenTree システムのヘルスチェックに失敗しました"
#: InvenTree/status_codes.py:101 InvenTree/status_codes.py:142
-#: InvenTree/status_codes.py:316 templates/js/translated/table_filters.js:313
+#: InvenTree/status_codes.py:316 templates/js/translated/table_filters.js:308
msgid "Pending"
msgstr "処理待ち"
@@ -456,7 +500,7 @@ msgstr ""
msgid "Split child item"
msgstr ""
-#: InvenTree/status_codes.py:294 templates/js/translated/stock.js:2072
+#: InvenTree/status_codes.py:294 templates/js/translated/stock.js:2196
msgid "Merged stock items"
msgstr ""
@@ -484,40 +528,40 @@ msgstr ""
msgid "Production"
msgstr ""
-#: InvenTree/validators.py:23
+#: InvenTree/validators.py:25
msgid "Not a valid currency code"
msgstr ""
-#: InvenTree/validators.py:51
+#: InvenTree/validators.py:53
msgid "Invalid character in part name"
msgstr ""
-#: InvenTree/validators.py:64
+#: InvenTree/validators.py:66
#, python-brace-format
msgid "IPN must match regex pattern {pat}"
msgstr ""
-#: InvenTree/validators.py:78 InvenTree/validators.py:92
-#: InvenTree/validators.py:106
+#: InvenTree/validators.py:80 InvenTree/validators.py:94
+#: InvenTree/validators.py:108
#, python-brace-format
msgid "Reference must match pattern {pattern}"
msgstr ""
-#: InvenTree/validators.py:114
+#: InvenTree/validators.py:116
#, python-brace-format
msgid "Illegal character in name ({x})"
msgstr ""
-#: InvenTree/validators.py:133 InvenTree/validators.py:149
+#: InvenTree/validators.py:137 InvenTree/validators.py:153
msgid "Overage value must not be negative"
msgstr ""
-#: InvenTree/validators.py:151
+#: InvenTree/validators.py:155
msgid "Overage must not exceed 100%"
msgstr ""
-#: InvenTree/validators.py:158
-msgid "Overage must be an integer value or a percentage"
+#: InvenTree/validators.py:162
+msgid "Invalid value for overage"
msgstr ""
#: InvenTree/views.py:538
@@ -584,69 +628,11 @@ msgstr ""
msgid "Barcode associated with Stock Item"
msgstr ""
-#: build/forms.py:36 build/models.py:1293
-#: build/templates/build/build_base.html:82
-#: build/templates/build/detail.html:35 common/models.py:1263
-#: company/forms.py:42 company/templates/company/supplier_part.html:251
-#: order/models.py:805 order/models.py:1229 order/serializers.py:816
-#: order/templates/order/order_wizard/match_parts.html:30
-#: order/templates/order/order_wizard/select_parts.html:34 part/forms.py:144
-#: part/forms.py:160 part/forms.py:176 part/models.py:2636
-#: part/templates/part/bom_upload/match_parts.html:31
-#: part/templates/part/detail.html:992 part/templates/part/detail.html:1078
-#: part/templates/part/part_pricing.html:16
-#: report/templates/report/inventree_build_order_base.html:114
-#: report/templates/report/inventree_po_report.html:91
-#: report/templates/report/inventree_so_report.html:91
-#: report/templates/report/inventree_test_report_base.html:81
-#: report/templates/report/inventree_test_report_base.html:139
-#: stock/forms.py:142 stock/serializers.py:293
-#: stock/templates/stock/item_base.html:181
-#: stock/templates/stock/item_base.html:262
-#: stock/templates/stock/item_base.html:270
-#: templates/js/translated/barcode.js:385 templates/js/translated/bom.js:567
-#: templates/js/translated/build.js:295 templates/js/translated/build.js:495
-#: templates/js/translated/build.js:689 templates/js/translated/build.js:699
-#: templates/js/translated/build.js:1075 templates/js/translated/build.js:1422
-#: templates/js/translated/model_renderers.js:99
-#: templates/js/translated/order.js:101 templates/js/translated/order.js:1056
-#: 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:906
-#: templates/js/translated/part.js:1862 templates/js/translated/part.js:1985
-#: templates/js/translated/part.js:2063 templates/js/translated/stock.js:391
-#: templates/js/translated/stock.js:588 templates/js/translated/stock.js:758
-#: templates/js/translated/stock.js:2677 templates/js/translated/stock.js:2779
-msgid "Quantity"
-msgstr ""
-
-#: build/forms.py:37
-msgid "Enter quantity for build output"
-msgstr ""
-
-#: build/forms.py:41 order/serializers.py:820 stock/forms.py:81
-#: stock/serializers.py:314 templates/js/translated/stock.js:238
-#: templates/js/translated/stock.js:392
-msgid "Serial Numbers"
-msgstr ""
-
-#: build/forms.py:43
-msgid "Enter serial numbers for build outputs"
-msgstr ""
-
-#: build/forms.py:49
-msgid "Confirm creation of build output"
-msgstr ""
-
-#: build/forms.py:70
-msgid "Confirm deletion of build output"
-msgstr ""
-
-#: build/forms.py:89
+#: build/forms.py:20
msgid "Confirm cancel"
msgstr ""
-#: build/forms.py:89 build/views.py:65
+#: build/forms.py:20 build/views.py:62
msgid "Confirm build cancellation"
msgstr ""
@@ -657,7 +643,7 @@ msgstr ""
#: build/models.py:139 build/templates/build/build_base.html:9
#: build/templates/build/build_base.html:27
#: report/templates/report/inventree_build_order_base.html:106
-#: templates/js/translated/build.js:457 templates/js/translated/stock.js:2290
+#: templates/js/translated/build.js:676 templates/js/translated/stock.js:2414
msgid "Build Order"
msgstr ""
@@ -665,7 +651,7 @@ msgstr ""
#: 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
+#: part/templates/part/part_sidebar.html:21 templates/InvenTree/index.html:221
#: templates/InvenTree/search.html:139
#: templates/InvenTree/settings/sidebar.html:43 users/models.py:44
msgid "Build Orders"
@@ -676,11 +662,11 @@ msgid "Build Order Reference"
msgstr ""
#: build/models.py:201 order/models.py:213 order/models.py:541
-#: order/models.py:812 part/models.py:2645
-#: part/templates/part/bom_upload/match_parts.html:30
+#: order/models.py:812 part/models.py:2714
+#: part/templates/part/upload_bom.html:54
#: report/templates/report/inventree_po_report.html:92
#: report/templates/report/inventree_so_report.html:92
-#: templates/js/translated/bom.js:559 templates/js/translated/build.js:1179
+#: templates/js/translated/bom.js:772 templates/js/translated/build.js:1401
#: templates/js/translated/order.js:1050 templates/js/translated/order.js:2144
msgid "Reference"
msgstr ""
@@ -689,7 +675,7 @@ msgstr ""
msgid "Brief description of the build"
msgstr ""
-#: build/models.py:221 build/templates/build/build_base.html:164
+#: build/models.py:221 build/templates/build/build_base.html:169
#: build/templates/build/detail.html:88
msgid "Parent Build"
msgstr ""
@@ -702,30 +688,31 @@ msgstr ""
#: build/templates/build/detail.html:30 company/models.py:705
#: order/models.py:876 order/models.py:950
#: order/templates/order/order_wizard/select_parts.html:32 part/models.py:359
-#: part/models.py:2211 part/models.py:2227 part/models.py:2246
-#: part/models.py:2263 part/models.py:2365 part/models.py:2487
-#: part/models.py:2620 part/models.py:2927 part/serializers.py:658
-#: part/templates/part/part_app_base.html:8
+#: part/models.py:2247 part/models.py:2263 part/models.py:2282
+#: part/models.py:2299 part/models.py:2401 part/models.py:2523
+#: part/models.py:2613 part/models.py:2689 part/models.py:2996
+#: part/serializers.py:666 part/templates/part/part_app_base.html:8
#: part/templates/part/part_pricing.html:12
#: part/templates/part/set_category.html:13
+#: part/templates/part/upload_bom.html:52
#: 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: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:338
-#: templates/js/translated/bom.js:517 templates/js/translated/build.js:680
-#: templates/js/translated/build.js:1048 templates/js/translated/build.js:1419
-#: templates/js/translated/build.js:1687 templates/js/translated/company.js:492
+#: templates/js/translated/barcode.js:383 templates/js/translated/bom.js:551
+#: templates/js/translated/bom.js:730 templates/js/translated/build.js:902
+#: templates/js/translated/build.js:1270 templates/js/translated/build.js:1655
+#: templates/js/translated/build.js:1925 templates/js/translated/company.js:492
#: templates/js/translated/company.js:749 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:984
#: templates/js/translated/part.js:1065 templates/js/translated/part.js:1232
-#: templates/js/translated/stock.js:562 templates/js/translated/stock.js:727
-#: templates/js/translated/stock.js:934 templates/js/translated/stock.js:1534
-#: templates/js/translated/stock.js:2767
+#: templates/js/translated/stock.js:563 templates/js/translated/stock.js:728
+#: templates/js/translated/stock.js:935 templates/js/translated/stock.js:1658
+#: templates/js/translated/stock.js:2891 templates/js/translated/stock.js:2990
msgid "Part"
msgstr "パーツ"
@@ -741,7 +728,7 @@ msgstr ""
msgid "SalesOrder to which this build is allocated"
msgstr ""
-#: build/models.py:249 templates/js/translated/build.js:1407
+#: build/models.py:249 templates/js/translated/build.js:1643
#: templates/js/translated/order.js:1564
msgid "Source Location"
msgstr ""
@@ -782,15 +769,15 @@ msgstr ""
msgid "Build status code"
msgstr ""
-#: build/models.py:287 stock/models.py:533
+#: build/models.py:287 build/serializers.py:218 stock/models.py:533
msgid "Batch Code"
msgstr ""
-#: build/models.py:291
+#: build/models.py:291 build/serializers.py:219
msgid "Batch code for this build output"
msgstr ""
-#: build/models.py:294 order/models.py:129 part/models.py:969
+#: build/models.py:294 order/models.py:129 part/models.py:999
#: part/templates/part/part_base.html:313 templates/js/translated/order.js:1271
msgid "Creation Date"
msgstr ""
@@ -804,7 +791,7 @@ msgid "Target date for build completion. Build will be overdue after this date."
msgstr ""
#: build/models.py:302 order/models.py:255
-#: templates/js/translated/build.js:1758
+#: templates/js/translated/build.js:1996
msgid "Completion Date"
msgstr ""
@@ -812,7 +799,7 @@ msgstr ""
msgid "completed by"
msgstr ""
-#: build/models.py:316 templates/js/translated/build.js:1729
+#: build/models.py:316 templates/js/translated/build.js:1967
msgid "Issued by"
msgstr ""
@@ -820,12 +807,12 @@ msgstr ""
msgid "User who issued this build order"
msgstr ""
-#: build/models.py:325 build/templates/build/build_base.html:185
+#: build/models.py:325 build/templates/build/build_base.html:190
#: build/templates/build/detail.html:116 order/models.py:143
#: order/templates/order/order_base.html:170
-#: order/templates/order/sales_order_base.html:182 part/models.py:973
+#: order/templates/order/sales_order_base.html:182 part/models.py:1003
#: report/templates/report/inventree_build_order_base.html:159
-#: templates/js/translated/build.js:1741 templates/js/translated/order.js:864
+#: templates/js/translated/build.js:1979 templates/js/translated/order.js:864
msgid "Responsible"
msgstr ""
@@ -837,26 +824,26 @@ msgstr ""
#: company/templates/company/manufacturer_part.html:102
#: company/templates/company/supplier_part.html:126
#: part/templates/part/part_base.html:354 stock/models.py:527
-#: stock/templates/stock/item_base.html:373
+#: stock/templates/stock/item_base.html:375
msgid "External Link"
msgstr ""
-#: build/models.py:336 build/serializers.py:201
+#: build/models.py:336 build/serializers.py:380
#: build/templates/build/sidebar.html:21 company/models.py:142
#: company/models.py:577 company/templates/company/sidebar.html:25
#: order/models.py:147 order/models.py:814 order/models.py:1071
#: order/templates/order/po_sidebar.html:11
-#: order/templates/order/so_sidebar.html:17 part/models.py:958
-#: part/templates/part/detail.html:137 part/templates/part/part_sidebar.html:54
+#: order/templates/order/so_sidebar.html:17 part/models.py:988
+#: part/templates/part/detail.html:140 part/templates/part/part_sidebar.html:57
#: report/templates/report/inventree_build_order_base.html:173
-#: stock/forms.py:140 stock/forms.py:190 stock/forms.py:224 stock/models.py:599
+#: stock/forms.py:137 stock/forms.py:171 stock/models.py:599
#: stock/models.py:1895 stock/models.py:2001 stock/serializers.py:332
-#: stock/serializers.py:640 stock/serializers.py:738 stock/serializers.py:870
+#: stock/serializers.py:697 stock/serializers.py:795 stock/serializers.py:927
#: stock/templates/stock/stock_sidebar.html:25
-#: templates/js/translated/barcode.js:58 templates/js/translated/bom.js:723
+#: templates/js/translated/barcode.js:58 templates/js/translated/bom.js:936
#: templates/js/translated/company.js:845 templates/js/translated/order.js:1149
#: templates/js/translated/order.js:1445 templates/js/translated/order.js:2280
-#: templates/js/translated/stock.js:1317 templates/js/translated/stock.js:1803
+#: templates/js/translated/stock.js:1345 templates/js/translated/stock.js:1927
msgid "Notes"
msgstr ""
@@ -864,208 +851,284 @@ msgstr ""
msgid "Extra build notes"
msgstr ""
-#: build/models.py:717
+#: build/models.py:756
msgid "No build output specified"
msgstr ""
-#: build/models.py:720
+#: build/models.py:759
msgid "Build output is already completed"
msgstr ""
-#: build/models.py:723
+#: build/models.py:762
msgid "Build output does not match Build Order"
msgstr ""
-#: build/models.py:1115
+#: build/models.py:1154
msgid "Build item must specify a build output, as master part is marked as trackable"
msgstr ""
-#: build/models.py:1124
+#: build/models.py:1163
#, python-brace-format
msgid "Allocated quantity ({q}) must not execed available stock quantity ({a})"
msgstr ""
-#: build/models.py:1134
+#: build/models.py:1173
msgid "Stock item is over-allocated"
msgstr ""
-#: build/models.py:1140 order/models.py:1189
+#: build/models.py:1179 order/models.py:1189
msgid "Allocation quantity must be greater than zero"
msgstr ""
-#: build/models.py:1146
+#: build/models.py:1185
msgid "Quantity must be 1 for serialized stock"
msgstr ""
-#: build/models.py:1203
+#: build/models.py:1242
msgid "Selected stock item not found in BOM"
msgstr ""
-#: build/models.py:1263 stock/templates/stock/item_base.html:345
-#: templates/InvenTree/search.html:137 templates/js/translated/build.js:1660
+#: build/models.py:1302 stock/templates/stock/item_base.html:347
+#: templates/InvenTree/search.html:137 templates/js/translated/build.js:1898
#: templates/navbar.html:35
msgid "Build"
msgstr ""
-#: build/models.py:1264
+#: build/models.py:1303
msgid "Build to allocate parts"
msgstr "パーツを割り当てるためにビルドする"
-#: build/models.py:1280 build/serializers.py:388 order/serializers.py:696
-#: order/serializers.py:714 stock/serializers.py:578 stock/serializers.py:696
-#: stock/templates/stock/item_base.html:9
+#: build/models.py:1319 build/serializers.py:570 order/serializers.py:696
+#: order/serializers.py:714 stock/serializers.py:404 stock/serializers.py:635
+#: stock/serializers.py:753 stock/templates/stock/item_base.html:9
#: stock/templates/stock/item_base.html:23
-#: stock/templates/stock/item_base.html:367
-#: templates/js/translated/build.js:468 templates/js/translated/build.js:473
-#: templates/js/translated/build.js:1421 templates/js/translated/build.js:1803
+#: stock/templates/stock/item_base.html:369
+#: templates/js/translated/build.js:687 templates/js/translated/build.js:692
+#: templates/js/translated/build.js:1657 templates/js/translated/build.js:2041
#: 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:563 templates/js/translated/stock.js:728
-#: templates/js/translated/stock.js:2628
+#: templates/js/translated/stock.js:564 templates/js/translated/stock.js:729
+#: templates/js/translated/stock.js:2752
msgid "Stock Item"
msgstr ""
-#: build/models.py:1281
+#: build/models.py:1320
msgid "Source stock item"
msgstr ""
-#: build/models.py:1294
+#: build/models.py:1332 build/serializers.py:188
+#: build/templates/build/build_base.html:82
+#: build/templates/build/detail.html:35 common/models.py:1275
+#: company/forms.py:42 company/templates/company/supplier_part.html:251
+#: order/models.py:805 order/models.py:1229 order/serializers.py:816
+#: order/templates/order/order_wizard/match_parts.html:30
+#: order/templates/order/order_wizard/select_parts.html:34 part/forms.py:144
+#: part/forms.py:160 part/forms.py:176 part/models.py:2705
+#: part/templates/part/detail.html:995 part/templates/part/detail.html:1081
+#: part/templates/part/part_pricing.html:16
+#: part/templates/part/upload_bom.html:53
+#: report/templates/report/inventree_build_order_base.html:114
+#: report/templates/report/inventree_po_report.html:91
+#: report/templates/report/inventree_so_report.html:91
+#: report/templates/report/inventree_test_report_base.html:81
+#: report/templates/report/inventree_test_report_base.html:139
+#: stock/forms.py:139 stock/serializers.py:293
+#: stock/templates/stock/item_base.html:183
+#: stock/templates/stock/item_base.html:264
+#: stock/templates/stock/item_base.html:272
+#: templates/js/translated/barcode.js:385 templates/js/translated/bom.js:780
+#: templates/js/translated/build.js:375 templates/js/translated/build.js:523
+#: templates/js/translated/build.js:714 templates/js/translated/build.js:911
+#: templates/js/translated/build.js:921 templates/js/translated/build.js:1297
+#: templates/js/translated/build.js:1658
+#: templates/js/translated/model_renderers.js:99
+#: templates/js/translated/order.js:101 templates/js/translated/order.js:1056
+#: 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:906
+#: templates/js/translated/part.js:1862 templates/js/translated/part.js:1985
+#: templates/js/translated/part.js:2063 templates/js/translated/stock.js:392
+#: templates/js/translated/stock.js:589 templates/js/translated/stock.js:759
+#: templates/js/translated/stock.js:2801 templates/js/translated/stock.js:2903
+msgid "Quantity"
+msgstr ""
+
+#: build/models.py:1333
msgid "Stock quantity to allocate to build"
msgstr ""
-#: build/models.py:1302
+#: build/models.py:1341
msgid "Install into"
msgstr ""
-#: build/models.py:1303
+#: build/models.py:1342
msgid "Destination stock item"
msgstr ""
-#: build/serializers.py:137 build/serializers.py:417
+#: build/serializers.py:138 build/serializers.py:599
msgid "Build Output"
msgstr ""
-#: build/serializers.py:146
+#: build/serializers.py:150
msgid "Build output does not match the parent build"
msgstr ""
-#: build/serializers.py:150
+#: build/serializers.py:154
msgid "Output part does not match BuildOrder part"
msgstr ""
-#: build/serializers.py:154
+#: build/serializers.py:158
msgid "This build output has already been completed"
msgstr ""
-#: build/serializers.py:158
+#: build/serializers.py:164
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:731
-#: stock/serializers.py:972 stock/templates/stock/item_base.html:313
-#: templates/js/translated/barcode.js:384
-#: templates/js/translated/barcode.js:557 templates/js/translated/build.js:480
-#: templates/js/translated/build.js:1087 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:179 templates/js/translated/stock.js:564
-#: templates/js/translated/stock.js:729 templates/js/translated/stock.js:936
-#: templates/js/translated/stock.js:1684 templates/js/translated/stock.js:2569
-msgid "Location"
+#: build/serializers.py:189
+msgid "Enter quantity for build output"
msgstr ""
-#: build/serializers.py:191
-msgid "Location for completed build outputs"
-msgstr ""
-
-#: build/serializers.py:197 build/templates/build/build_base.html:137
-#: build/templates/build/detail.html:63 order/models.py:557
-#: order/serializers.py:247 stock/templates/stock/item_base.html:187
-#: templates/js/translated/barcode.js:140 templates/js/translated/build.js:1716
-#: templates/js/translated/order.js:591 templates/js/translated/order.js:840
-#: templates/js/translated/order.js:1263 templates/js/translated/stock.js:1659
-#: templates/js/translated/stock.js:2646 templates/js/translated/stock.js:2795
-msgid "Status"
-msgstr ""
-
-#: build/serializers.py:213
-msgid "A list of build outputs must be provided"
-msgstr ""
-
-#: build/serializers.py:249
-msgid "Accept Unallocated"
-msgstr ""
-
-#: build/serializers.py:250
-msgid "Accept that stock items have not been fully allocated to this build order"
-msgstr ""
-
-#: build/serializers.py:260 templates/js/translated/build.js:149
-msgid "Required stock has not been fully allocated"
-msgstr ""
-
-#: build/serializers.py:265
-msgid "Accept Incomplete"
-msgstr ""
-
-#: build/serializers.py:266
-msgid "Accept that the required number of build outputs have not been completed"
-msgstr ""
-
-#: build/serializers.py:276 templates/js/translated/build.js:153
-msgid "Required build quantity has not been completed"
-msgstr ""
-
-#: build/serializers.py:285
-msgid "Build order has incomplete outputs"
-msgstr ""
-
-#: build/serializers.py:313 build/serializers.py:362 part/models.py:2760
-#: part/models.py:2919
-msgid "BOM Item"
-msgstr ""
-
-#: build/serializers.py:323
-msgid "Build output"
-msgstr ""
-
-#: build/serializers.py:332
-msgid "Build output must point to the same build"
-msgstr ""
-
-#: build/serializers.py:379
-msgid "bom_item.part must point to the same part as the build order"
-msgstr ""
-
-#: build/serializers.py:394 stock/serializers.py:585
-msgid "Item must be in stock"
-msgstr ""
-
-#: build/serializers.py:408 order/models.py:280 order/serializers.py:240
+#: build/serializers.py:201 build/serializers.py:590 order/models.py:280
+#: order/serializers.py:240 part/serializers.py:471 part/serializers.py:827
#: stock/models.py:367 stock/models.py:1105 stock/serializers.py:305
msgid "Quantity must be greater than zero"
msgstr ""
-#: build/serializers.py:450 order/serializers.py:747
+#: build/serializers.py:208
+msgid "Integer quantity required for trackable parts"
+msgstr ""
+
+#: build/serializers.py:211
+msgid "Integer quantity required, as the bill of materials contains trackable parts"
+msgstr ""
+
+#: build/serializers.py:225 order/serializers.py:820 stock/forms.py:78
+#: stock/serializers.py:314 templates/js/translated/stock.js:239
+#: templates/js/translated/stock.js:393
+msgid "Serial Numbers"
+msgstr ""
+
+#: build/serializers.py:226
+msgid "Enter serial numbers for build outputs"
+msgstr ""
+
+#: build/serializers.py:239
+msgid "Auto Allocate Serial Numbers"
+msgstr ""
+
+#: build/serializers.py:240
+msgid "Automatically allocate required items with matching serial numbers"
+msgstr ""
+
+#: build/serializers.py:274 stock/api.py:551
+msgid "The following serial numbers already exist"
+msgstr ""
+
+#: build/serializers.py:327 build/serializers.py:392
+msgid "A list of build outputs must be provided"
+msgstr ""
+
+#: build/serializers.py:369 order/serializers.py:226 order/serializers.py:294
+#: stock/forms.py:169 stock/serializers.py:325 stock/serializers.py:788
+#: stock/serializers.py:1029 stock/templates/stock/item_base.html:315
+#: templates/js/translated/barcode.js:384
+#: templates/js/translated/barcode.js:557 templates/js/translated/build.js:699
+#: templates/js/translated/build.js:1309 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:179 templates/js/translated/stock.js:565
+#: templates/js/translated/stock.js:730 templates/js/translated/stock.js:937
+#: templates/js/translated/stock.js:1808 templates/js/translated/stock.js:2693
+msgid "Location"
+msgstr ""
+
+#: build/serializers.py:370
+msgid "Location for completed build outputs"
+msgstr ""
+
+#: build/serializers.py:376 build/templates/build/build_base.html:142
+#: build/templates/build/detail.html:63 order/models.py:557
+#: order/serializers.py:247 stock/templates/stock/item_base.html:189
+#: templates/js/translated/barcode.js:140 templates/js/translated/build.js:1954
+#: templates/js/translated/order.js:591 templates/js/translated/order.js:840
+#: templates/js/translated/order.js:1263 templates/js/translated/stock.js:1783
+#: templates/js/translated/stock.js:2770 templates/js/translated/stock.js:2919
+msgid "Status"
+msgstr ""
+
+#: build/serializers.py:428
+msgid "Accept Unallocated"
+msgstr ""
+
+#: build/serializers.py:429
+msgid "Accept that stock items have not been fully allocated to this build order"
+msgstr ""
+
+#: build/serializers.py:439 templates/js/translated/build.js:150
+msgid "Required stock has not been fully allocated"
+msgstr ""
+
+#: build/serializers.py:444
+msgid "Accept Incomplete"
+msgstr ""
+
+#: build/serializers.py:445
+msgid "Accept that the required number of build outputs have not been completed"
+msgstr ""
+
+#: build/serializers.py:455 templates/js/translated/build.js:154
+msgid "Required build quantity has not been completed"
+msgstr ""
+
+#: build/serializers.py:464
+msgid "Build order has incomplete outputs"
+msgstr ""
+
+#: build/serializers.py:467 build/templates/build/build_base.html:95
+msgid "No build outputs have been created for this build order"
+msgstr ""
+
+#: build/serializers.py:495 build/serializers.py:544 part/models.py:2829
+#: part/models.py:2988
+msgid "BOM Item"
+msgstr ""
+
+#: build/serializers.py:505
+msgid "Build output"
+msgstr ""
+
+#: build/serializers.py:514
+msgid "Build output must point to the same build"
+msgstr ""
+
+#: build/serializers.py:561
+msgid "bom_item.part must point to the same part as the build order"
+msgstr ""
+
+#: build/serializers.py:576 stock/serializers.py:642
+msgid "Item must be in stock"
+msgstr ""
+
+#: build/serializers.py:632 order/serializers.py:747
#, python-brace-format
msgid "Available quantity ({q}) exceeded"
msgstr ""
-#: build/serializers.py:456
+#: build/serializers.py:638
msgid "Build output must be specified for allocation of tracked parts"
msgstr ""
-#: build/serializers.py:463
+#: build/serializers.py:645
msgid "Build output cannot be specified for allocation of untracked parts"
msgstr ""
-#: build/serializers.py:491 order/serializers.py:990
+#: build/serializers.py:673 order/serializers.py:990
msgid "Allocation items must be provided"
msgstr ""
-#: build/tasks.py:92
+#: build/tasks.py:98
msgid "Stock required for build order"
msgstr ""
@@ -1088,7 +1151,7 @@ msgid "Edit Build"
msgstr ""
#: build/templates/build/build_base.html:56
-#: build/templates/build/build_base.html:215 build/views.py:56
+#: build/templates/build/build_base.html:220 build/views.py:53
msgid "Cancel Build"
msgstr ""
@@ -1105,110 +1168,90 @@ msgstr ""
msgid "Build Description"
msgstr ""
-#: build/templates/build/build_base.html:96
+#: build/templates/build/build_base.html:101
#, python-format
msgid "This Build Order is allocated to Sales Order %(link)s"
msgstr ""
-#: build/templates/build/build_base.html:103
+#: build/templates/build/build_base.html:108
#, python-format
msgid "This Build Order is a child of Build Order %(link)s"
msgstr ""
-#: build/templates/build/build_base.html:110
+#: build/templates/build/build_base.html:115
msgid "Build Order is ready to mark as completed"
msgstr ""
-#: build/templates/build/build_base.html:115
+#: build/templates/build/build_base.html:120
msgid "Build Order cannot be completed as outstanding outputs remain"
msgstr ""
-#: build/templates/build/build_base.html:120
+#: build/templates/build/build_base.html:125
msgid "Required build quantity has not yet been completed"
msgstr ""
-#: build/templates/build/build_base.html:125
+#: build/templates/build/build_base.html:130
msgid "Stock has not been fully allocated to this Build Order"
msgstr ""
-#: build/templates/build/build_base.html:146
+#: build/templates/build/build_base.html:151
#: build/templates/build/detail.html:132
#: order/templates/order/order_base.html:156
#: order/templates/order/sales_order_base.html:163
#: report/templates/report/inventree_build_order_base.html:126
-#: templates/js/translated/build.js:1753 templates/js/translated/order.js:854
+#: templates/js/translated/build.js:1991 templates/js/translated/order.js:854
#: templates/js/translated/order.js:1276
msgid "Target Date"
msgstr ""
-#: build/templates/build/build_base.html:151
+#: build/templates/build/build_base.html:156
#, python-format
msgid "This build was due on %(target)s"
msgstr ""
-#: build/templates/build/build_base.html:151
-#: build/templates/build/build_base.html:196
+#: build/templates/build/build_base.html:156
+#: build/templates/build/build_base.html:201
#: order/templates/order/order_base.html:98
#: order/templates/order/sales_order_base.html:93
-#: templates/js/translated/table_filters.js:299
-#: templates/js/translated/table_filters.js:340
-#: templates/js/translated/table_filters.js:361
+#: templates/js/translated/table_filters.js:294
+#: templates/js/translated/table_filters.js:335
+#: templates/js/translated/table_filters.js:356
msgid "Overdue"
msgstr ""
-#: build/templates/build/build_base.html:158
+#: build/templates/build/build_base.html:163
#: build/templates/build/detail.html:68 build/templates/build/detail.html:143
#: order/templates/order/sales_order_base.html:170
-#: templates/js/translated/build.js:1702
-#: templates/js/translated/table_filters.js:370
+#: templates/js/translated/build.js:1940
+#: templates/js/translated/table_filters.js:365
msgid "Completed"
msgstr ""
-#: build/templates/build/build_base.html:171
+#: build/templates/build/build_base.html:176
#: build/templates/build/detail.html:95 order/models.py:947
#: order/models.py:1043 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:307
-#: templates/js/translated/order.js:1218 templates/js/translated/stock.js:2304
+#: stock/templates/stock/item_base.html:309
+#: templates/js/translated/order.js:1218 templates/js/translated/stock.js:2428
msgid "Sales Order"
msgstr ""
-#: build/templates/build/build_base.html:178
+#: build/templates/build/build_base.html:183
#: build/templates/build/detail.html:109
#: report/templates/report/inventree_build_order_base.html:153
msgid "Issued By"
msgstr ""
-#: build/templates/build/build_base.html:223
+#: build/templates/build/build_base.html:228
msgid "Incomplete Outputs"
msgstr ""
-#: build/templates/build/build_base.html:224
+#: build/templates/build/build_base.html:229
msgid "Build Order cannot be completed as incomplete build outputs remain"
msgstr ""
-#: build/templates/build/build_output_create.html:7
-msgid "The Bill of Materials contains trackable parts"
-msgstr ""
-
-#: build/templates/build/build_output_create.html:8
-msgid "Build outputs must be generated individually."
-msgstr ""
-
-#: build/templates/build/build_output_create.html:9
-msgid "Multiple build outputs will be created based on the quantity specified."
-msgstr ""
-
-#: build/templates/build/build_output_create.html:15
-msgid "Trackable parts can have serial numbers specified"
-msgstr ""
-
-#: build/templates/build/build_output_create.html:16
-msgid "Enter serial numbers to generate multiple single build outputs"
-msgstr ""
-
#: build/templates/build/cancel.html:5
msgid "Are you sure you wish to cancel this build?"
msgstr ""
@@ -1225,7 +1268,7 @@ msgstr ""
msgid "Stock can be taken from any available location."
msgstr ""
-#: build/templates/build/detail.html:50 order/models.py:898 stock/forms.py:136
+#: build/templates/build/detail.html:50 order/models.py:898 stock/forms.py:133
#: templates/js/translated/order.js:592 templates/js/translated/order.js:1138
msgid "Destination"
msgstr ""
@@ -1234,13 +1277,13 @@ msgstr ""
msgid "Destination location not specified"
msgstr ""
-#: build/templates/build/detail.html:74 templates/js/translated/build.js:707
+#: build/templates/build/detail.html:74 templates/js/translated/build.js:929
msgid "Allocated Parts"
msgstr ""
#: build/templates/build/detail.html:81
-#: stock/templates/stock/item_base.html:331
-#: templates/js/translated/stock.js:1673 templates/js/translated/stock.js:2802
+#: stock/templates/stock/item_base.html:333
+#: templates/js/translated/stock.js:1797 templates/js/translated/stock.js:2926
#: templates/js/translated/table_filters.js:151
#: templates/js/translated/table_filters.js:238
msgid "Batch"
@@ -1249,7 +1292,7 @@ msgstr ""
#: build/templates/build/detail.html:127
#: order/templates/order/order_base.html:143
#: order/templates/order/sales_order_base.html:157
-#: templates/js/translated/build.js:1724
+#: templates/js/translated/build.js:1962
msgid "Created"
msgstr ""
@@ -1269,7 +1312,7 @@ msgstr ""
msgid "Allocate Stock to Build"
msgstr ""
-#: build/templates/build/detail.html:177 templates/js/translated/build.js:1262
+#: build/templates/build/detail.html:177 templates/js/translated/build.js:1484
msgid "Unallocate stock"
msgstr ""
@@ -1329,52 +1372,60 @@ msgid "Output Actions"
msgstr ""
#: build/templates/build/detail.html:250
-msgid "Complete selected items"
+msgid "Complete selected build outputs"
msgstr ""
#: build/templates/build/detail.html:251
msgid "Complete outputs"
msgstr ""
-#: build/templates/build/detail.html:266
+#: build/templates/build/detail.html:253
+msgid "Delete selected build outputs"
+msgstr ""
+
+#: build/templates/build/detail.html:254
+msgid "Delete outputs"
+msgstr ""
+
+#: build/templates/build/detail.html:270
msgid "Completed Build Outputs"
msgstr ""
-#: build/templates/build/detail.html:278 build/templates/build/sidebar.html:19
+#: build/templates/build/detail.html:282 build/templates/build/sidebar.html:19
#: order/templates/order/po_sidebar.html:9
#: order/templates/order/purchase_order_detail.html:60
#: order/templates/order/sales_order_detail.html:107
-#: order/templates/order/so_sidebar.html:15 part/templates/part/detail.html:213
-#: part/templates/part/part_sidebar.html:52 stock/templates/stock/item.html:112
+#: order/templates/order/so_sidebar.html:15 part/templates/part/detail.html:216
+#: part/templates/part/part_sidebar.html:55 stock/templates/stock/item.html:112
#: stock/templates/stock/stock_sidebar.html:23
msgid "Attachments"
msgstr ""
-#: build/templates/build/detail.html:294
+#: build/templates/build/detail.html:298
msgid "Build Notes"
msgstr ""
-#: build/templates/build/detail.html:298 build/templates/build/detail.html:453
+#: build/templates/build/detail.html:302 build/templates/build/detail.html:478
#: company/templates/company/detail.html:188
#: company/templates/company/detail.html:215
#: order/templates/order/purchase_order_detail.html:80
#: order/templates/order/purchase_order_detail.html:108
#: order/templates/order/sales_order_detail.html:127
#: order/templates/order/sales_order_detail.html:186
-#: part/templates/part/detail.html:141 stock/templates/stock/item.html:132
-#: stock/templates/stock/item.html:235
+#: part/templates/part/detail.html:144 stock/templates/stock/item.html:132
+#: stock/templates/stock/item.html:230
msgid "Edit Notes"
msgstr ""
-#: build/templates/build/detail.html:477
+#: build/templates/build/detail.html:502
msgid "Allocation Complete"
msgstr ""
-#: build/templates/build/detail.html:478
+#: build/templates/build/detail.html:503
msgid "All untracked stock items have been allocated"
msgstr ""
-#: build/templates/build/index.html:18 part/templates/part/detail.html:320
+#: build/templates/build/index.html:18 part/templates/part/detail.html:323
msgid "New Build Order"
msgstr ""
@@ -1406,51 +1457,11 @@ msgstr ""
msgid "Completed Items"
msgstr ""
-#: build/views.py:76
+#: build/views.py:73
msgid "Build was cancelled"
msgstr ""
-#: build/views.py:88
-msgid "Create Build Output"
-msgstr ""
-
-#: build/views.py:106
-msgid "Maximum output quantity is "
-msgstr ""
-
-#: build/views.py:122 stock/serializers.py:363 stock/views.py:1257
-msgid "Serial numbers already exist"
-msgstr ""
-
-#: build/views.py:131
-msgid "Serial numbers required for trackable build output"
-msgstr ""
-
-#: build/views.py:197
-msgid "Delete Build Output"
-msgstr ""
-
-#: build/views.py:218
-msgid "Confirm unallocation of build stock"
-msgstr ""
-
-#: build/views.py:219 stock/views.py:352
-msgid "Check the confirmation box"
-msgstr ""
-
-#: build/views.py:231
-msgid "Build output does not match build"
-msgstr ""
-
-#: build/views.py:233
-msgid "Build output must be specified"
-msgstr ""
-
-#: build/views.py:245
-msgid "Build output deleted"
-msgstr ""
-
-#: build/views.py:286
+#: build/views.py:114
msgid "Delete Build Order"
msgstr ""
@@ -1639,9 +1650,9 @@ msgstr ""
msgid "Copy category parameter templates when creating a part"
msgstr ""
-#: common/models.py:705 part/models.py:2489 report/models.py:187
+#: common/models.py:705 part/models.py:2525 report/models.py:187
#: templates/js/translated/table_filters.js:38
-#: templates/js/translated/table_filters.js:422
+#: templates/js/translated/table_filters.js:417
msgid "Template"
msgstr "テンプレート"
@@ -1649,9 +1660,9 @@ msgstr "テンプレート"
msgid "Parts are templates by default"
msgstr "パーツはデフォルトのテンプレートです"
-#: common/models.py:712 part/models.py:921 templates/js/translated/bom.js:1082
+#: common/models.py:712 part/models.py:951 templates/js/translated/bom.js:1300
#: templates/js/translated/table_filters.js:168
-#: templates/js/translated/table_filters.js:434
+#: templates/js/translated/table_filters.js:429
msgid "Assembly"
msgstr "アセンブリ"
@@ -1659,8 +1670,8 @@ msgstr "アセンブリ"
msgid "Parts can be assembled from other components by default"
msgstr "パーツはデフォルトで他のコンポーネントから組み立てることができます"
-#: common/models.py:719 part/models.py:927
-#: templates/js/translated/table_filters.js:438
+#: common/models.py:719 part/models.py:957
+#: templates/js/translated/table_filters.js:433
msgid "Component"
msgstr "コンポーネント"
@@ -1668,7 +1679,7 @@ msgstr "コンポーネント"
msgid "Parts can be used as sub-components by default"
msgstr "パーツはデフォルトでサブコンポーネントとして使用できます"
-#: common/models.py:726 part/models.py:938
+#: common/models.py:726 part/models.py:968
msgid "Purchaseable"
msgstr "購入可能"
@@ -1676,8 +1687,8 @@ msgstr "購入可能"
msgid "Parts are purchaseable by default"
msgstr "パーツはデフォルトで購入可能です"
-#: common/models.py:733 part/models.py:943
-#: templates/js/translated/table_filters.js:446
+#: common/models.py:733 part/models.py:973
+#: templates/js/translated/table_filters.js:441
msgid "Salable"
msgstr ""
@@ -1685,10 +1696,10 @@ msgstr ""
msgid "Parts are salable by default"
msgstr "パーツはデフォルトで販売可能です"
-#: common/models.py:740 part/models.py:933
+#: common/models.py:740 part/models.py:963
#: templates/js/translated/table_filters.js:46
#: templates/js/translated/table_filters.js:100
-#: templates/js/translated/table_filters.js:450
+#: templates/js/translated/table_filters.js:445
msgid "Trackable"
msgstr "追跡可能"
@@ -1696,7 +1707,7 @@ msgstr "追跡可能"
msgid "Parts are trackable by default"
msgstr "パーツはデフォルトで追跡可能です"
-#: common/models.py:747 part/models.py:953
+#: common/models.py:747 part/models.py:983
#: part/templates/part/part_base.html:147
#: templates/js/translated/table_filters.js:42
msgid "Virtual"
@@ -1730,589 +1741,595 @@ msgstr ""
msgid "Include pricing information in BOM tables"
msgstr ""
-#: common/models.py:780
+#: common/models.py:785
+msgid "Show Price History"
+msgstr ""
+
+#: common/models.py:786
+msgid "Display historical pricing for Part"
+msgstr ""
+
+#: common/models.py:792
msgid "Show related parts"
msgstr ""
-#: common/models.py:781
+#: common/models.py:793
msgid "Display related parts for a part"
msgstr ""
-#: common/models.py:787
+#: common/models.py:799
msgid "Create initial stock"
msgstr ""
-#: common/models.py:788
+#: common/models.py:800
msgid "Create initial stock on part creation"
msgstr ""
-#: common/models.py:794
+#: common/models.py:806
msgid "Internal Prices"
msgstr ""
-#: common/models.py:795
+#: common/models.py:807
msgid "Enable internal prices for parts"
msgstr ""
-#: common/models.py:801
+#: common/models.py:813
msgid "Internal Price as BOM-Price"
msgstr ""
-#: common/models.py:802
+#: common/models.py:814
msgid "Use the internal price (if set) in BOM-price calculations"
msgstr ""
-#: common/models.py:808
+#: common/models.py:820
msgid "Part Name Display Format"
msgstr ""
-#: common/models.py:809
+#: common/models.py:821
msgid "Format to display the part name"
msgstr ""
-#: common/models.py:816
+#: common/models.py:828
msgid "Enable Reports"
msgstr ""
-#: common/models.py:817
+#: common/models.py:829
msgid "Enable generation of reports"
msgstr ""
-#: common/models.py:823 templates/stats.html:25
+#: common/models.py:835 templates/stats.html:25
msgid "Debug Mode"
msgstr ""
-#: common/models.py:824
+#: common/models.py:836
msgid "Generate reports in debug mode (HTML output)"
msgstr ""
-#: common/models.py:830
+#: common/models.py:842
msgid "Page Size"
msgstr ""
-#: common/models.py:831
+#: common/models.py:843
msgid "Default page size for PDF reports"
msgstr ""
-#: common/models.py:841
+#: common/models.py:853
msgid "Test Reports"
msgstr ""
-#: common/models.py:842
+#: common/models.py:854
msgid "Enable generation of test reports"
msgstr ""
-#: common/models.py:848
+#: common/models.py:860
msgid "Stock Expiry"
msgstr ""
-#: common/models.py:849
+#: common/models.py:861
msgid "Enable stock expiry functionality"
msgstr ""
-#: common/models.py:855
+#: common/models.py:867
msgid "Sell Expired Stock"
msgstr ""
-#: common/models.py:856
+#: common/models.py:868
msgid "Allow sale of expired stock"
msgstr ""
-#: common/models.py:862
+#: common/models.py:874
msgid "Stock Stale Time"
msgstr ""
-#: common/models.py:863
+#: common/models.py:875
msgid "Number of days stock items are considered stale before expiring"
msgstr ""
-#: common/models.py:865
+#: common/models.py:877
msgid "days"
msgstr ""
-#: common/models.py:870
+#: common/models.py:882
msgid "Build Expired Stock"
msgstr ""
-#: common/models.py:871
+#: common/models.py:883
msgid "Allow building with expired stock"
msgstr ""
-#: common/models.py:877
+#: common/models.py:889
msgid "Stock Ownership Control"
msgstr ""
-#: common/models.py:878
+#: common/models.py:890
msgid "Enable ownership control over stock locations and items"
msgstr ""
-#: common/models.py:884
+#: common/models.py:896
msgid "Build Order Reference Prefix"
msgstr ""
-#: common/models.py:885
+#: common/models.py:897
msgid "Prefix value for build order reference"
msgstr ""
-#: common/models.py:890
+#: common/models.py:902
msgid "Build Order Reference Regex"
msgstr ""
-#: common/models.py:891
+#: common/models.py:903
msgid "Regular expression pattern for matching build order reference"
msgstr ""
-#: common/models.py:895
+#: common/models.py:907
msgid "Sales Order Reference Prefix"
msgstr ""
-#: common/models.py:896
+#: common/models.py:908
msgid "Prefix value for sales order reference"
msgstr ""
-#: common/models.py:901
+#: common/models.py:913
msgid "Purchase Order Reference Prefix"
msgstr ""
-#: common/models.py:902
+#: common/models.py:914
msgid "Prefix value for purchase order reference"
msgstr ""
-#: common/models.py:908
+#: common/models.py:920
msgid "Enable password forgot"
msgstr ""
-#: common/models.py:909
+#: common/models.py:921
msgid "Enable password forgot function on the login pages"
msgstr ""
-#: common/models.py:914
+#: common/models.py:926
msgid "Enable registration"
msgstr ""
-#: common/models.py:915
+#: common/models.py:927
msgid "Enable self-registration for users on the login pages"
msgstr ""
-#: common/models.py:920
+#: common/models.py:932
msgid "Enable SSO"
msgstr ""
-#: common/models.py:921
+#: common/models.py:933
msgid "Enable SSO on the login pages"
msgstr ""
-#: common/models.py:926
+#: common/models.py:938
msgid "Email required"
msgstr ""
-#: common/models.py:927
+#: common/models.py:939
msgid "Require user to supply mail on signup"
msgstr ""
-#: common/models.py:932
+#: common/models.py:944
msgid "Auto-fill SSO users"
msgstr ""
-#: common/models.py:933
+#: common/models.py:945
msgid "Automatically fill out user-details from SSO account-data"
msgstr ""
-#: common/models.py:938
+#: common/models.py:950
msgid "Mail twice"
msgstr ""
-#: common/models.py:939
+#: common/models.py:951
msgid "On signup ask users twice for their mail"
msgstr ""
-#: common/models.py:944
+#: common/models.py:956
msgid "Password twice"
msgstr ""
-#: common/models.py:945
+#: common/models.py:957
msgid "On signup ask users twice for their password"
msgstr ""
-#: common/models.py:950
+#: common/models.py:962
msgid "Group on signup"
msgstr ""
-#: common/models.py:951
+#: common/models.py:963
msgid "Group to which new users are assigned on registration"
msgstr ""
-#: common/models.py:956
+#: common/models.py:968
msgid "Enforce MFA"
msgstr ""
-#: common/models.py:957
+#: common/models.py:969
msgid "Users must use multifactor security."
msgstr ""
-#: common/models.py:964
+#: common/models.py:976
msgid "Enable URL integration"
msgstr ""
-#: common/models.py:965
+#: common/models.py:977
msgid "Enable plugins to add URL routes"
msgstr ""
-#: common/models.py:971
+#: common/models.py:983
msgid "Enable navigation integration"
msgstr ""
-#: common/models.py:972
+#: common/models.py:984
msgid "Enable plugins to integrate into navigation"
msgstr ""
-#: common/models.py:978
+#: common/models.py:990
msgid "Enable app integration"
msgstr ""
-#: common/models.py:979
+#: common/models.py:991
msgid "Enable plugins to add apps"
msgstr ""
-#: common/models.py:985
+#: common/models.py:997
msgid "Enable schedule integration"
msgstr ""
-#: common/models.py:986
+#: common/models.py:998
msgid "Enable plugins to run scheduled tasks"
msgstr ""
-#: common/models.py:992
+#: common/models.py:1004
msgid "Enable event integration"
msgstr ""
-#: common/models.py:993
+#: common/models.py:1005
msgid "Enable plugins to respond to internal events"
msgstr ""
-#: common/models.py:1008 common/models.py:1216
+#: common/models.py:1020 common/models.py:1228
msgid "Settings key (must be unique - case insensitive"
msgstr ""
-#: common/models.py:1039
+#: common/models.py:1051
msgid "Show subscribed parts"
msgstr ""
-#: common/models.py:1040
+#: common/models.py:1052
msgid "Show subscribed parts on the homepage"
msgstr ""
-#: common/models.py:1045
+#: common/models.py:1057
msgid "Show subscribed categories"
msgstr ""
-#: common/models.py:1046
+#: common/models.py:1058
msgid "Show subscribed part categories on the homepage"
msgstr ""
-#: common/models.py:1051
+#: common/models.py:1063
msgid "Show latest parts"
msgstr ""
-#: common/models.py:1052
+#: common/models.py:1064
msgid "Show latest parts on the homepage"
msgstr ""
-#: common/models.py:1057
+#: common/models.py:1069
msgid "Recent Part Count"
msgstr ""
-#: common/models.py:1058
+#: common/models.py:1070
msgid "Number of recent parts to display on index page"
msgstr ""
-#: common/models.py:1064
+#: common/models.py:1076
msgid "Show unvalidated BOMs"
msgstr ""
-#: common/models.py:1065
+#: common/models.py:1077
msgid "Show BOMs that await validation on the homepage"
msgstr ""
-#: common/models.py:1070
+#: common/models.py:1082
msgid "Show recent stock changes"
msgstr ""
-#: common/models.py:1071
+#: common/models.py:1083
msgid "Show recently changed stock items on the homepage"
msgstr ""
-#: common/models.py:1076
+#: common/models.py:1088
msgid "Recent Stock Count"
msgstr ""
-#: common/models.py:1077
+#: common/models.py:1089
msgid "Number of recent stock items to display on index page"
msgstr ""
-#: common/models.py:1082
+#: common/models.py:1094
msgid "Show low stock"
msgstr ""
-#: common/models.py:1083
+#: common/models.py:1095
msgid "Show low stock items on the homepage"
msgstr ""
-#: common/models.py:1088
+#: common/models.py:1100
msgid "Show depleted stock"
msgstr ""
-#: common/models.py:1089
+#: common/models.py:1101
msgid "Show depleted stock items on the homepage"
msgstr ""
-#: common/models.py:1094
+#: common/models.py:1106
msgid "Show needed stock"
msgstr ""
-#: common/models.py:1095
+#: common/models.py:1107
msgid "Show stock items needed for builds on the homepage"
msgstr ""
-#: common/models.py:1100
+#: common/models.py:1112
msgid "Show expired stock"
msgstr ""
-#: common/models.py:1101
+#: common/models.py:1113
msgid "Show expired stock items on the homepage"
msgstr ""
-#: common/models.py:1106
+#: common/models.py:1118
msgid "Show stale stock"
msgstr ""
-#: common/models.py:1107
+#: common/models.py:1119
msgid "Show stale stock items on the homepage"
msgstr ""
-#: common/models.py:1112
+#: common/models.py:1124
msgid "Show pending builds"
msgstr ""
-#: common/models.py:1113
+#: common/models.py:1125
msgid "Show pending builds on the homepage"
msgstr ""
-#: common/models.py:1118
+#: common/models.py:1130
msgid "Show overdue builds"
msgstr ""
-#: common/models.py:1119
+#: common/models.py:1131
msgid "Show overdue builds on the homepage"
msgstr ""
-#: common/models.py:1124
+#: common/models.py:1136
msgid "Show outstanding POs"
msgstr ""
-#: common/models.py:1125
+#: common/models.py:1137
msgid "Show outstanding POs on the homepage"
msgstr ""
-#: common/models.py:1130
+#: common/models.py:1142
msgid "Show overdue POs"
msgstr ""
-#: common/models.py:1131
+#: common/models.py:1143
msgid "Show overdue POs on the homepage"
msgstr ""
-#: common/models.py:1136
+#: common/models.py:1148
msgid "Show outstanding SOs"
msgstr ""
-#: common/models.py:1137
+#: common/models.py:1149
msgid "Show outstanding SOs on the homepage"
msgstr ""
-#: common/models.py:1142
+#: common/models.py:1154
msgid "Show overdue SOs"
msgstr ""
-#: common/models.py:1143
+#: common/models.py:1155
msgid "Show overdue SOs on the homepage"
msgstr ""
-#: common/models.py:1149
+#: common/models.py:1161
msgid "Inline label display"
msgstr ""
-#: common/models.py:1150
+#: common/models.py:1162
msgid "Display PDF labels in the browser, instead of downloading as a file"
msgstr ""
-#: common/models.py:1156
+#: common/models.py:1168
msgid "Inline report display"
msgstr ""
-#: common/models.py:1157
+#: common/models.py:1169
msgid "Display PDF reports in the browser, instead of downloading as a file"
msgstr ""
-#: common/models.py:1163
+#: common/models.py:1175
msgid "Search Preview Results"
msgstr ""
-#: common/models.py:1164
+#: common/models.py:1176
msgid "Number of results to show in search preview window"
msgstr ""
-#: common/models.py:1170
+#: common/models.py:1182
msgid "Search Show Stock"
msgstr ""
-#: common/models.py:1171
+#: common/models.py:1183
msgid "Display stock levels in search preview window"
msgstr ""
-#: common/models.py:1177
+#: common/models.py:1189
msgid "Hide Inactive Parts"
msgstr ""
-#: common/models.py:1178
+#: common/models.py:1190
msgid "Hide inactive parts in search preview window"
msgstr ""
-#: common/models.py:1184
+#: common/models.py:1196
msgid "Show Quantity in Forms"
msgstr ""
-#: common/models.py:1185
+#: common/models.py:1197
msgid "Display available part quantity in some forms"
msgstr ""
-#: common/models.py:1191
+#: common/models.py:1203
msgid "Escape Key Closes Forms"
msgstr ""
-#: common/models.py:1192
+#: common/models.py:1204
msgid "Use the escape key to close modal forms"
msgstr ""
-#: common/models.py:1198
+#: common/models.py:1210
msgid "Fixed Navbar"
msgstr ""
-#: common/models.py:1199
+#: common/models.py:1211
msgid "InvenTree navbar position is fixed to the top of the screen"
msgstr ""
-#: common/models.py:1264 company/forms.py:43
+#: common/models.py:1276 company/forms.py:43
msgid "Price break quantity"
msgstr ""
-#: common/models.py:1271 company/serializers.py:264
+#: common/models.py:1283 company/serializers.py:264
#: company/templates/company/supplier_part.html:256
#: templates/js/translated/part.js:915 templates/js/translated/part.js:1867
msgid "Price"
msgstr ""
-#: common/models.py:1272
+#: common/models.py:1284
msgid "Unit price at specified quantity"
msgstr ""
-#: common/models.py:1429 common/models.py:1568
+#: common/models.py:1441 common/models.py:1580
msgid "Endpoint"
msgstr ""
-#: common/models.py:1430
+#: common/models.py:1442
msgid "Endpoint at which this webhook is received"
msgstr ""
-#: common/models.py:1439
+#: common/models.py:1451
msgid "Name for this webhook"
msgstr ""
-#: common/models.py:1444 part/models.py:948 plugin/models.py:46
+#: common/models.py:1456 part/models.py:978 plugin/models.py:46
#: templates/js/translated/table_filters.js:34
#: templates/js/translated/table_filters.js:96
-#: templates/js/translated/table_filters.js:295
-#: templates/js/translated/table_filters.js:417
+#: templates/js/translated/table_filters.js:290
+#: templates/js/translated/table_filters.js:412
msgid "Active"
msgstr ""
-#: common/models.py:1445
+#: common/models.py:1457
msgid "Is this webhook active"
msgstr ""
-#: common/models.py:1459
+#: common/models.py:1471
msgid "Token"
msgstr ""
-#: common/models.py:1460
+#: common/models.py:1472
msgid "Token for access"
msgstr ""
-#: common/models.py:1467
+#: common/models.py:1479
msgid "Secret"
msgstr ""
-#: common/models.py:1468
+#: common/models.py:1480
msgid "Shared secret for HMAC"
msgstr ""
-#: common/models.py:1535
+#: common/models.py:1547
msgid "Message ID"
msgstr ""
-#: common/models.py:1536
+#: common/models.py:1548
msgid "Unique identifier for this message"
msgstr ""
-#: common/models.py:1544
+#: common/models.py:1556
msgid "Host"
msgstr ""
-#: common/models.py:1545
+#: common/models.py:1557
msgid "Host from which this message was received"
msgstr ""
-#: common/models.py:1552
+#: common/models.py:1564
msgid "Header"
msgstr ""
-#: common/models.py:1553
+#: common/models.py:1565
msgid "Header of this message"
msgstr ""
-#: common/models.py:1559
+#: common/models.py:1571
msgid "Body"
msgstr ""
-#: common/models.py:1560
+#: common/models.py:1572
msgid "Body of this message"
msgstr ""
-#: common/models.py:1569
+#: common/models.py:1581
msgid "Endpoint on which this message was received"
msgstr ""
-#: common/models.py:1574
+#: common/models.py:1586
msgid "Worked on"
msgstr ""
-#: common/models.py:1575
+#: common/models.py:1587
msgid "Was the work on this message finished?"
msgstr ""
#: common/views.py:93 order/templates/order/order_wizard/po_upload.html:49
#: order/templates/order/purchase_order_detail.html:24 order/views.py:243
-#: part/templates/part/bom_upload/upload_file.html:52
-#: part/templates/part/import_wizard/part_upload.html:47 part/views.py:213
-#: part/views.py:773
+#: part/templates/part/import_wizard/part_upload.html:47 part/views.py:210
+#: templates/patterns/wizard/upload.html:35
msgid "Upload File"
msgstr ""
-#: common/views.py:94 order/templates/order/order_wizard/match_fields.html:52
-#: order/views.py:244 part/templates/part/bom_upload/match_fields.html:52
+#: common/views.py:94 order/views.py:244
#: part/templates/part/import_wizard/ajax_match_fields.html:45
-#: part/templates/part/import_wizard/match_fields.html:52 part/views.py:214
-#: part/views.py:774
+#: part/templates/part/import_wizard/match_fields.html:52 part/views.py:211
+#: templates/patterns/wizard/match_fields.html:51
msgid "Match Fields"
msgstr ""
@@ -2328,15 +2345,13 @@ msgstr ""
msgid "Parts imported"
msgstr ""
-#: common/views.py:517 order/templates/order/order_wizard/match_fields.html:27
-#: order/templates/order/order_wizard/match_parts.html:19
+#: common/views.py:517 order/templates/order/order_wizard/match_parts.html:19
#: order/templates/order/order_wizard/po_upload.html:47
-#: part/templates/part/bom_upload/match_fields.html:27
-#: part/templates/part/bom_upload/match_parts.html:19
-#: part/templates/part/bom_upload/upload_file.html:50
#: part/templates/part/import_wizard/match_fields.html:27
#: part/templates/part/import_wizard/match_references.html:19
#: part/templates/part/import_wizard/part_upload.html:45
+#: templates/patterns/wizard/match_fields.html:26
+#: templates/patterns/wizard/upload.html:33
msgid "Previous Step"
msgstr ""
@@ -2404,7 +2419,7 @@ msgstr ""
msgid "Link to external company information"
msgstr ""
-#: company/models.py:139 part/models.py:840
+#: company/models.py:139 part/models.py:870
msgid "Image"
msgstr ""
@@ -2442,7 +2457,7 @@ msgid "Default currency used for this company"
msgstr ""
#: company/models.py:320 company/models.py:535 stock/models.py:471
-#: stock/templates/stock/item_base.html:142 templates/js/translated/bom.js:328
+#: stock/templates/stock/item_base.html:144 templates/js/translated/bom.js:541
msgid "Base Part"
msgstr ""
@@ -2453,11 +2468,11 @@ 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:380
+#: stock/templates/stock/item_base.html:382
#: templates/js/translated/company.js:333
#: templates/js/translated/company.js:517
#: templates/js/translated/company.js:800 templates/js/translated/part.js:234
-#: templates/js/translated/table_filters.js:389
+#: templates/js/translated/table_filters.js:384
msgid "Manufacturer"
msgstr ""
@@ -2488,7 +2503,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:390
+#: stock/templates/stock/item_base.html:392
msgid "Manufacturer Part"
msgstr "メーカー・パーツ"
@@ -2499,7 +2514,7 @@ msgstr ""
#: company/models.py:422
#: report/templates/report/inventree_test_report_base.html:95
#: stock/models.py:1988 templates/js/translated/company.js:647
-#: templates/js/translated/part.js:715 templates/js/translated/stock.js:1304
+#: templates/js/translated/part.js:715 templates/js/translated/stock.js:1332
msgid "Value"
msgstr ""
@@ -2507,9 +2522,9 @@ msgstr ""
msgid "Parameter value"
msgstr ""
-#: company/models.py:429 part/models.py:915 part/models.py:2457
+#: company/models.py:429 part/models.py:945 part/models.py:2493
#: part/templates/part/part_base.html:288
-#: templates/InvenTree/settings/settings.html:287
+#: templates/InvenTree/settings/settings.html:324
#: templates/js/translated/company.js:653 templates/js/translated/part.js:721
msgid "Units"
msgstr ""
@@ -2526,11 +2541,11 @@ msgstr ""
#: company/templates/company/supplier_part.html:87 order/models.py:227
#: order/templates/order/order_base.html:112
#: order/templates/order/order_wizard/select_pos.html:30 part/bom.py:237
-#: part/bom.py:265 stock/templates/stock/item_base.html:397
+#: part/bom.py:265 stock/templates/stock/item_base.html:399
#: templates/js/translated/company.js:337
#: templates/js/translated/company.js:774 templates/js/translated/order.js:823
#: templates/js/translated/part.js:215 templates/js/translated/part.js:863
-#: templates/js/translated/table_filters.js:393
+#: templates/js/translated/table_filters.js:388
msgid "Supplier"
msgstr ""
@@ -2561,22 +2576,23 @@ msgid "Supplier part description"
msgstr ""
#: company/models.py:576 company/templates/company/supplier_part.html:119
-#: part/models.py:2648 report/templates/report/inventree_po_report.html:93
-#: report/templates/report/inventree_so_report.html:93
+#: part/models.py:2717 part/templates/part/upload_bom.html:59
+#: report/templates/report/inventree_po_report.html:93
+#: report/templates/report/inventree_so_report.html:93 stock/serializers.py:409
msgid "Note"
msgstr ""
-#: company/models.py:580 part/models.py:1781
+#: company/models.py:580 part/models.py:1817
msgid "base cost"
msgstr ""
-#: company/models.py:580 part/models.py:1781
+#: company/models.py:580 part/models.py:1817
msgid "Minimum charge (e.g. stocking fee)"
msgstr ""
#: company/models.py:582 company/templates/company/supplier_part.html:112
-#: stock/models.py:495 stock/templates/stock/item_base.html:338
-#: templates/js/translated/company.js:850 templates/js/translated/stock.js:1799
+#: stock/models.py:495 stock/templates/stock/item_base.html:340
+#: templates/js/translated/company.js:850 templates/js/translated/stock.js:1923
msgid "Packaging"
msgstr ""
@@ -2584,7 +2600,7 @@ msgstr ""
msgid "Part packaging"
msgstr ""
-#: company/models.py:584 part/models.py:1783
+#: company/models.py:584 part/models.py:1819
msgid "multiple"
msgstr ""
@@ -2645,11 +2661,11 @@ msgstr ""
#: company/templates/company/company_base.html:83 order/models.py:552
#: order/templates/order/sales_order_base.html:115 stock/models.py:514
-#: stock/models.py:515 stock/serializers.py:626
-#: stock/templates/stock/item_base.html:290
+#: stock/models.py:515 stock/serializers.py:683
+#: stock/templates/stock/item_base.html:292
#: templates/js/translated/company.js:329 templates/js/translated/order.js:1240
-#: templates/js/translated/stock.js:2610
-#: templates/js/translated/table_filters.js:397
+#: templates/js/translated/stock.js:2734
+#: templates/js/translated/table_filters.js:392
msgid "Customer"
msgstr ""
@@ -2679,7 +2695,7 @@ msgstr "新しいサプライヤー・パーツを作成"
#: company/templates/company/detail.html:20
#: company/templates/company/manufacturer_part.html:118
-#: part/templates/part/detail.html:353
+#: part/templates/part/detail.html:356
msgid "New Supplier Part"
msgstr "新しいサプライヤー・パーツ"
@@ -2687,8 +2703,8 @@ msgstr "新しいサプライヤー・パーツ"
#: company/templates/company/detail.html:79
#: company/templates/company/manufacturer_part.html:127
#: company/templates/company/manufacturer_part.html:156
-#: part/templates/part/category.html:171 part/templates/part/detail.html:362
-#: part/templates/part/detail.html:391
+#: part/templates/part/category.html:171 part/templates/part/detail.html:365
+#: part/templates/part/detail.html:394
msgid "Options"
msgstr ""
@@ -2716,7 +2732,7 @@ msgstr "メーカー・パーツ"
msgid "Create new manufacturer part"
msgstr "新しいメーカー・パーツを作成"
-#: company/templates/company/detail.html:67 part/templates/part/detail.html:381
+#: company/templates/company/detail.html:67 part/templates/part/detail.html:384
msgid "New Manufacturer Part"
msgstr "新しいメーカ―・パーツ"
@@ -2730,7 +2746,7 @@ msgstr ""
#: order/templates/order/order_base.html:13
#: order/templates/order/purchase_orders.html:8
#: order/templates/order/purchase_orders.html:12
-#: part/templates/part/detail.html:85 part/templates/part/part_sidebar.html:37
+#: part/templates/part/detail.html:85 part/templates/part/part_sidebar.html:40
#: templates/InvenTree/index.html:252 templates/InvenTree/search.html:197
#: templates/InvenTree/settings/sidebar.html:45 templates/navbar.html:47
#: users/models.py:45
@@ -2752,7 +2768,7 @@ msgstr ""
#: order/templates/order/sales_order_base.html:13
#: order/templates/order/sales_orders.html:8
#: order/templates/order/sales_orders.html:15
-#: part/templates/part/detail.html:108 part/templates/part/part_sidebar.html:41
+#: part/templates/part/detail.html:108 part/templates/part/part_sidebar.html:44
#: templates/InvenTree/index.html:283 templates/InvenTree/search.html:217
#: templates/InvenTree/settings/sidebar.html:47 templates/navbar.html:58
#: users/models.py:46
@@ -2770,7 +2786,7 @@ msgid "New Sales Order"
msgstr ""
#: company/templates/company/detail.html:168
-#: templates/js/translated/build.js:1059
+#: templates/js/translated/build.js:1281
msgid "Assigned Stock"
msgstr ""
@@ -2780,13 +2796,13 @@ msgstr ""
#: company/templates/company/detail.html:384
#: company/templates/company/manufacturer_part.html:215
-#: part/templates/part/detail.html:435
+#: part/templates/part/detail.html:438
msgid "Delete Supplier Parts?"
msgstr ""
#: company/templates/company/detail.html:385
#: company/templates/company/manufacturer_part.html:216
-#: part/templates/part/detail.html:436
+#: part/templates/part/detail.html:439
msgid "All selected supplier parts will be deleted"
msgstr ""
@@ -2824,36 +2840,36 @@ 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:35 part/templates/part/prices.html:163
+#: part/templates/part/part_sidebar.html:38 part/templates/part/prices.html:163
#: templates/InvenTree/search.html:188 templates/navbar.html:45
msgid "Suppliers"
msgstr ""
#: company/templates/company/manufacturer_part.html:129
-#: part/templates/part/detail.html:364
+#: part/templates/part/detail.html:367
msgid "Delete supplier parts"
msgstr ""
#: company/templates/company/manufacturer_part.html:129
#: company/templates/company/manufacturer_part.html:158
#: company/templates/company/manufacturer_part.html:254
-#: part/templates/part/detail.html:364 part/templates/part/detail.html:393
+#: part/templates/part/detail.html:367 part/templates/part/detail.html:396
#: templates/js/translated/company.js:426 templates/js/translated/helpers.js:31
-#: users/models.py:212
+#: users/models.py:217
msgid "Delete"
msgstr ""
#: company/templates/company/manufacturer_part.html:143
#: company/templates/company/manufacturer_part_sidebar.html:5
#: part/templates/part/category_sidebar.html:17
-#: part/templates/part/detail.html:187 part/templates/part/part_sidebar.html:8
+#: part/templates/part/detail.html:190 part/templates/part/part_sidebar.html:9
msgid "Parameters"
msgstr ""
#: company/templates/company/manufacturer_part.html:147
-#: part/templates/part/detail.html:192
+#: part/templates/part/detail.html:195
#: templates/InvenTree/settings/category.html:12
-#: templates/InvenTree/settings/part.html:65
+#: templates/InvenTree/settings/part.html:66
msgid "New Parameter"
msgstr ""
@@ -2862,7 +2878,7 @@ msgid "Delete parameters"
msgstr ""
#: company/templates/company/manufacturer_part.html:191
-#: part/templates/part/detail.html:892
+#: part/templates/part/detail.html:895
msgid "Add Parameter"
msgstr ""
@@ -2892,8 +2908,8 @@ msgstr ""
#: company/templates/company/supplier_part.html:7
#: company/templates/company/supplier_part.html:24 stock/models.py:479
-#: stock/templates/stock/item_base.html:402
-#: templates/js/translated/company.js:790 templates/js/translated/stock.js:1756
+#: stock/templates/stock/item_base.html:404
+#: templates/js/translated/company.js:790 templates/js/translated/stock.js:1880
msgid "Supplier Part"
msgstr ""
@@ -2919,7 +2935,7 @@ msgstr ""
#: company/templates/company/supplier_part.html:142
#: part/templates/part/detail.html:25 stock/templates/stock/location.html:167
-#: templates/js/translated/stock.js:368
+#: templates/js/translated/stock.js:369
msgid "New Stock Item"
msgstr ""
@@ -2940,7 +2956,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:1628
+#: part/templates/part/prices.html:271 part/views.py:1319
msgid "Add Price Break"
msgstr ""
@@ -2948,11 +2964,11 @@ msgstr ""
msgid "No price break information found"
msgstr ""
-#: company/templates/company/supplier_part.html:224 part/views.py:1690
+#: company/templates/company/supplier_part.html:224 part/views.py:1381
msgid "Delete Price Break"
msgstr ""
-#: company/templates/company/supplier_part.html:238 part/views.py:1676
+#: company/templates/company/supplier_part.html:238 part/views.py:1367
msgid "Edit Price Break"
msgstr ""
@@ -2965,15 +2981,15 @@ msgid "Delete price break"
msgstr ""
#: company/templates/company/supplier_part_navbar.html:15
-#: part/templates/part/part_sidebar.html:14
+#: part/templates/part/part_sidebar.html:15
#: 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:150
#: templates/InvenTree/settings/sidebar.html:41
-#: templates/js/translated/bom.js:340 templates/js/translated/part.js:495
+#: templates/js/translated/bom.js:553 templates/js/translated/part.js:495
#: templates/js/translated/part.js:630 templates/js/translated/part.js:1125
-#: templates/js/translated/part.js:1286 templates/js/translated/stock.js:935
-#: templates/js/translated/stock.js:1588 templates/navbar.html:28
+#: templates/js/translated/part.js:1286 templates/js/translated/stock.js:936
+#: templates/js/translated/stock.js:1712 templates/navbar.html:28
msgid "Stock"
msgstr ""
@@ -2987,7 +3003,7 @@ msgid "Supplier Part Pricing"
msgstr ""
#: company/templates/company/supplier_part_navbar.html:29
-#: part/templates/part/part_sidebar.html:28
+#: part/templates/part/part_sidebar.html:30
msgid "Pricing"
msgstr ""
@@ -2996,7 +3012,7 @@ msgstr ""
#: stock/templates/stock/location.html:151
#: stock/templates/stock/location.html:163
#: stock/templates/stock/location_sidebar.html:7
-#: templates/InvenTree/search.html:152 templates/js/translated/stock.js:2509
+#: templates/InvenTree/search.html:152 templates/js/translated/stock.js:2633
#: templates/stats.html:105 templates/stats.html:114 users/models.py:43
msgid "Stock Items"
msgstr ""
@@ -3026,20 +3042,20 @@ msgstr ""
msgid "New Company"
msgstr ""
-#: company/views.py:129 part/views.py:593
+#: company/views.py:129 part/views.py:591
msgid "Download Image"
msgstr ""
-#: company/views.py:158 part/views.py:625
+#: company/views.py:158 part/views.py:623
msgid "Image size exceeds maximum allowable size for download"
msgstr ""
-#: company/views.py:165 part/views.py:632
+#: company/views.py:165 part/views.py:630
#, python-brace-format
msgid "Invalid response: {code}"
msgstr ""
-#: company/views.py:174 part/views.py:641
+#: company/views.py:174 part/views.py:639
msgid "Supplied URL is not a valid image file"
msgstr ""
@@ -3256,16 +3272,16 @@ msgid "Supplier part must match supplier"
msgstr ""
#: order/models.py:855 order/models.py:946 order/models.py:1042
-#: templates/js/translated/order.js:1820 templates/js/translated/stock.js:2271
+#: templates/js/translated/order.js:1820 templates/js/translated/stock.js:2395
msgid "Order"
msgstr ""
#: order/models.py:856 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:352
+#: stock/templates/stock/item_base.html:354
#: templates/js/translated/order.js:801 templates/js/translated/part.js:838
-#: templates/js/translated/stock.js:1733 templates/js/translated/stock.js:2591
+#: templates/js/translated/stock.js:1857 templates/js/translated/stock.js:2715
msgid "Purchase Order"
msgstr ""
@@ -3276,7 +3292,7 @@ msgstr ""
#: order/models.py:884 order/templates/order/order_base.html:163
#: templates/js/translated/order.js:589 templates/js/translated/order.js:1118
#: templates/js/translated/part.js:910 templates/js/translated/part.js:937
-#: templates/js/translated/table_filters.js:317
+#: templates/js/translated/table_filters.js:312
msgid "Received"
msgstr ""
@@ -3285,8 +3301,8 @@ msgid "Number of items received"
msgstr ""
#: order/models.py:892 part/templates/part/prices.html:176 stock/models.py:608
-#: stock/serializers.py:170 stock/templates/stock/item_base.html:359
-#: templates/js/translated/stock.js:1787
+#: stock/serializers.py:170 stock/templates/stock/item_base.html:361
+#: templates/js/translated/stock.js:1911
msgid "Purchase Price"
msgstr ""
@@ -3530,7 +3546,7 @@ msgstr ""
#: order/templates/order/order_base.html:94
#: order/templates/order/sales_order_base.html:89
-#: templates/js/translated/stock.js:2327
+#: templates/js/translated/stock.js:2451
msgid "Order Status"
msgstr ""
@@ -3574,73 +3590,20 @@ msgstr ""
msgid "After placing this purchase order, line items will no longer be editable."
msgstr ""
-#: order/templates/order/order_wizard/match_fields.html:9
-#: part/templates/part/bom_upload/match_fields.html:9
-#: part/templates/part/import_wizard/ajax_match_fields.html:9
-#: part/templates/part/import_wizard/match_fields.html:9
-msgid "Missing selections for the following required columns"
-msgstr ""
-
-#: order/templates/order/order_wizard/match_fields.html:20
-#: part/templates/part/bom_upload/match_fields.html:20
-#: part/templates/part/import_wizard/ajax_match_fields.html:20
-#: part/templates/part/import_wizard/match_fields.html:20
-msgid "Duplicate selections found, see below. Fix them then retry submitting."
-msgstr ""
-
-#: order/templates/order/order_wizard/match_fields.html:29
-#: order/templates/order/order_wizard/match_parts.html:21
-#: part/templates/part/bom_upload/match_fields.html:29
-#: part/templates/part/bom_upload/match_parts.html:21
-#: part/templates/part/import_wizard/match_fields.html:29
-#: part/templates/part/import_wizard/match_references.html:21
-msgid "Submit Selections"
-msgstr ""
-
-#: order/templates/order/order_wizard/match_fields.html:35
-#: part/templates/part/bom_upload/match_fields.html:35
-#: part/templates/part/import_wizard/ajax_match_fields.html:28
-#: part/templates/part/import_wizard/match_fields.html:35
-msgid "File Fields"
-msgstr ""
-
-#: order/templates/order/order_wizard/match_fields.html:42
-#: part/templates/part/bom_upload/match_fields.html:42
-#: part/templates/part/import_wizard/ajax_match_fields.html:35
-#: part/templates/part/import_wizard/match_fields.html:42
-msgid "Remove column"
-msgstr ""
-
-#: order/templates/order/order_wizard/match_fields.html:60
-#: part/templates/part/bom_upload/match_fields.html:60
-#: part/templates/part/import_wizard/ajax_match_fields.html:53
-#: part/templates/part/import_wizard/match_fields.html:60
-msgid "Duplicate selection"
-msgstr ""
-
-#: order/templates/order/order_wizard/match_fields.html:71
-#: order/templates/order/order_wizard/match_parts.html:52
-#: part/templates/part/bom_upload/match_fields.html:71
-#: part/templates/part/bom_upload/match_parts.html:53
-#: part/templates/part/import_wizard/ajax_match_fields.html:64
-#: part/templates/part/import_wizard/ajax_match_references.html:42
-#: part/templates/part/import_wizard/match_fields.html:71
-#: part/templates/part/import_wizard/match_references.html:49
-#: templates/js/translated/build.js:300 templates/js/translated/build.js:1311
-#: templates/js/translated/order.js:537 templates/js/translated/order.js:1488
-#: templates/js/translated/stock.js:601 templates/js/translated/stock.js:769
-msgid "Remove row"
-msgstr ""
-
#: order/templates/order/order_wizard/match_parts.html:12
-#: part/templates/part/bom_upload/match_parts.html:12
#: part/templates/part/import_wizard/ajax_match_references.html:12
#: part/templates/part/import_wizard/match_references.html:12
msgid "Errors exist in the submitted data"
msgstr ""
+#: order/templates/order/order_wizard/match_parts.html:21
+#: part/templates/part/import_wizard/match_fields.html:29
+#: part/templates/part/import_wizard/match_references.html:21
+#: templates/patterns/wizard/match_fields.html:28
+msgid "Submit Selections"
+msgstr ""
+
#: order/templates/order/order_wizard/match_parts.html:28
-#: part/templates/part/bom_upload/match_parts.html:28
#: part/templates/part/import_wizard/ajax_match_references.html:21
#: part/templates/part/import_wizard/match_references.html:28
msgid "Row"
@@ -3650,6 +3613,19 @@ msgstr ""
msgid "Select Supplier Part"
msgstr ""
+#: order/templates/order/order_wizard/match_parts.html:52
+#: part/templates/part/import_wizard/ajax_match_fields.html:64
+#: part/templates/part/import_wizard/ajax_match_references.html:42
+#: part/templates/part/import_wizard/match_fields.html:71
+#: part/templates/part/import_wizard/match_references.html:49
+#: templates/js/translated/bom.js:76 templates/js/translated/build.js:380
+#: templates/js/translated/build.js:528 templates/js/translated/build.js:1547
+#: templates/js/translated/order.js:537 templates/js/translated/order.js:1488
+#: templates/js/translated/stock.js:602 templates/js/translated/stock.js:770
+#: templates/patterns/wizard/match_fields.html:70
+msgid "Remove row"
+msgstr ""
+
#: order/templates/order/order_wizard/po_upload.html:8
msgid "Return to Orders"
msgstr ""
@@ -3659,9 +3635,9 @@ msgid "Upload File for Purchase Order"
msgstr ""
#: order/templates/order/order_wizard/po_upload.html:25
-#: part/templates/part/bom_upload/upload_file.html:21
#: part/templates/part/import_wizard/ajax_part_upload.html:10
#: part/templates/part/import_wizard/part_upload.html:23
+#: templates/patterns/wizard/upload.html:11
#, python-format
msgid "Step %(step)s of %(count)s"
msgstr ""
@@ -3819,7 +3795,7 @@ msgid "Pending Shipments"
msgstr ""
#: order/templates/order/sales_order_detail.html:48
-#: templates/js/translated/bom.js:732 templates/js/translated/build.js:1243
+#: templates/js/translated/bom.js:945 templates/js/translated/build.js:1465
msgid "Actions"
msgstr ""
@@ -3922,7 +3898,7 @@ msgstr ""
msgid "This field is required"
msgstr ""
-#: part/bom.py:125 part/models.py:83 part/models.py:849
+#: part/bom.py:125 part/models.py:83 part/models.py:879
#: part/templates/part/category.html:108 part/templates/part/part_base.html:338
msgid "Default Location"
msgstr ""
@@ -3968,7 +3944,7 @@ msgstr ""
msgid "Default keywords for parts in this category"
msgstr ""
-#: part/models.py:97 part/models.py:2533 part/templates/part/category.html:15
+#: part/models.py:97 part/models.py:2569 part/templates/part/category.html:15
#: part/templates/part/part_app_base.html:10
msgid "Part Category"
msgstr ""
@@ -3994,408 +3970,478 @@ msgstr "パーツ"
msgid "Invalid choice for parent part"
msgstr ""
-#: part/models.py:502 part/models.py:514
+#: part/models.py:532 part/models.py:544
#, python-brace-format
msgid "Part '{p1}' is used in BOM for '{p2}' (recursive)"
msgstr ""
-#: part/models.py:644
+#: part/models.py:674
msgid "Next available serial numbers are"
msgstr ""
-#: part/models.py:648
+#: part/models.py:678
msgid "Next available serial number is"
msgstr ""
-#: part/models.py:653
+#: part/models.py:683
msgid "Most recent serial number is"
msgstr ""
-#: part/models.py:748
+#: part/models.py:778
msgid "Duplicate IPN not allowed in part settings"
msgstr ""
-#: part/models.py:773
+#: part/models.py:803 part/models.py:2622
msgid "Part name"
msgstr ""
-#: part/models.py:780
+#: part/models.py:810
msgid "Is Template"
msgstr ""
-#: part/models.py:781
+#: part/models.py:811
msgid "Is this part a template part?"
msgstr ""
-#: part/models.py:791
+#: part/models.py:821
msgid "Is this part a variant of another part?"
msgstr ""
-#: part/models.py:792
+#: part/models.py:822
msgid "Variant Of"
msgstr ""
-#: part/models.py:798
+#: part/models.py:828
msgid "Part description"
msgstr ""
-#: part/models.py:803 part/templates/part/category.html:86
+#: part/models.py:833 part/templates/part/category.html:86
#: part/templates/part/part_base.html:302
msgid "Keywords"
msgstr ""
-#: part/models.py:804
+#: part/models.py:834
msgid "Part keywords to improve visibility in search results"
msgstr ""
-#: part/models.py:811 part/models.py:2283 part/models.py:2532
+#: part/models.py:841 part/models.py:2319 part/models.py:2568
#: part/templates/part/part_base.html:265
#: part/templates/part/set_category.html:15
-#: templates/InvenTree/settings/settings.html:186
+#: templates/InvenTree/settings/settings.html:223
#: templates/js/translated/part.js:1268
msgid "Category"
msgstr ""
-#: part/models.py:812
+#: part/models.py:842
msgid "Part category"
msgstr ""
-#: part/models.py:817 part/templates/part/part_base.html:274
+#: part/models.py:847 part/templates/part/part_base.html:274
#: templates/js/translated/part.js:618 templates/js/translated/part.js:1221
-#: templates/js/translated/stock.js:1560
+#: templates/js/translated/stock.js:1684
msgid "IPN"
msgstr ""
-#: part/models.py:818
+#: part/models.py:848
msgid "Internal Part Number"
msgstr ""
-#: part/models.py:824
+#: part/models.py:854
msgid "Part revision or version number"
msgstr ""
-#: part/models.py:825 part/templates/part/part_base.html:281
+#: part/models.py:855 part/templates/part/part_base.html:281
#: report/models.py:200 templates/js/translated/part.js:622
msgid "Revision"
msgstr ""
-#: part/models.py:847
+#: part/models.py:877
msgid "Where is this item normally stored?"
msgstr ""
-#: part/models.py:894 part/templates/part/part_base.html:347
+#: part/models.py:924 part/templates/part/part_base.html:347
msgid "Default Supplier"
msgstr ""
-#: part/models.py:895
+#: part/models.py:925
msgid "Default supplier part"
msgstr ""
-#: part/models.py:902
+#: part/models.py:932
msgid "Default Expiry"
msgstr ""
-#: part/models.py:903
+#: part/models.py:933
msgid "Expiry time (in days) for stock items of this part"
msgstr ""
-#: part/models.py:908 part/templates/part/part_base.html:196
+#: part/models.py:938 part/templates/part/part_base.html:196
msgid "Minimum Stock"
msgstr ""
-#: part/models.py:909
+#: part/models.py:939
msgid "Minimum allowed stock level"
msgstr ""
-#: part/models.py:916
+#: part/models.py:946
msgid "Stock keeping units for this part"
msgstr ""
-#: part/models.py:922
+#: part/models.py:952
msgid "Can this part be built from other parts?"
msgstr ""
-#: part/models.py:928
+#: part/models.py:958
msgid "Can this part be used to build other parts?"
msgstr ""
-#: part/models.py:934
+#: part/models.py:964
msgid "Does this part have tracking for unique items?"
msgstr ""
-#: part/models.py:939
+#: part/models.py:969
msgid "Can this part be purchased from external suppliers?"
msgstr ""
-#: part/models.py:944
+#: part/models.py:974
msgid "Can this part be sold to customers?"
msgstr ""
-#: part/models.py:949
+#: part/models.py:979
msgid "Is this part active?"
msgstr ""
-#: part/models.py:954
+#: part/models.py:984
msgid "Is this a virtual part, such as a software product or license?"
msgstr ""
-#: part/models.py:959
+#: part/models.py:989
msgid "Part notes - supports Markdown formatting"
msgstr ""
-#: part/models.py:962
+#: part/models.py:992
msgid "BOM checksum"
msgstr ""
-#: part/models.py:962
+#: part/models.py:992
msgid "Stored BOM checksum"
msgstr ""
-#: part/models.py:965
+#: part/models.py:995
msgid "BOM checked by"
msgstr ""
-#: part/models.py:967
+#: part/models.py:997
msgid "BOM checked date"
msgstr ""
-#: part/models.py:971
+#: part/models.py:1001
msgid "Creation User"
msgstr ""
-#: part/models.py:1783
+#: part/models.py:1819
msgid "Sell multiple"
msgstr ""
-#: part/models.py:2333
+#: part/models.py:2369
msgid "Test templates can only be created for trackable parts"
msgstr ""
-#: part/models.py:2350
+#: part/models.py:2386
msgid "Test with this name already exists for this part"
msgstr ""
-#: part/models.py:2370 templates/js/translated/part.js:1714
-#: templates/js/translated/stock.js:1284
+#: part/models.py:2406 templates/js/translated/part.js:1714
+#: templates/js/translated/stock.js:1312
msgid "Test Name"
msgstr ""
-#: part/models.py:2371
+#: part/models.py:2407
msgid "Enter a name for the test"
msgstr ""
-#: part/models.py:2376
+#: part/models.py:2412
msgid "Test Description"
msgstr ""
-#: part/models.py:2377
+#: part/models.py:2413
msgid "Enter description for this test"
msgstr ""
-#: part/models.py:2382 templates/js/translated/part.js:1723
-#: templates/js/translated/table_filters.js:281
+#: part/models.py:2418 templates/js/translated/part.js:1723
+#: templates/js/translated/table_filters.js:276
msgid "Required"
msgstr ""
-#: part/models.py:2383
+#: part/models.py:2419
msgid "Is this test required to pass?"
msgstr ""
-#: part/models.py:2388 templates/js/translated/part.js:1731
+#: part/models.py:2424 templates/js/translated/part.js:1731
msgid "Requires Value"
msgstr ""
-#: part/models.py:2389
+#: part/models.py:2425
msgid "Does this test require a value when adding a test result?"
msgstr ""
-#: part/models.py:2394 templates/js/translated/part.js:1738
+#: part/models.py:2430 templates/js/translated/part.js:1738
msgid "Requires Attachment"
msgstr ""
-#: part/models.py:2395
+#: part/models.py:2431
msgid "Does this test require a file attachment when adding a test result?"
msgstr ""
-#: part/models.py:2406
+#: part/models.py:2442
#, python-brace-format
msgid "Illegal character in template name ({c})"
msgstr ""
-#: part/models.py:2442
+#: part/models.py:2478
msgid "Parameter template name must be unique"
msgstr ""
-#: part/models.py:2450
+#: part/models.py:2486
msgid "Parameter Name"
msgstr ""
-#: part/models.py:2457
+#: part/models.py:2493
msgid "Parameter Units"
msgstr ""
-#: part/models.py:2487
+#: part/models.py:2523
msgid "Parent Part"
msgstr ""
-#: part/models.py:2489 part/models.py:2538 part/models.py:2539
-#: templates/InvenTree/settings/settings.html:181
+#: part/models.py:2525 part/models.py:2574 part/models.py:2575
+#: templates/InvenTree/settings/settings.html:218
msgid "Parameter Template"
msgstr ""
-#: part/models.py:2491
+#: part/models.py:2527
msgid "Data"
msgstr ""
-#: part/models.py:2491
+#: part/models.py:2527
msgid "Parameter Value"
msgstr ""
-#: part/models.py:2543 templates/InvenTree/settings/settings.html:190
+#: part/models.py:2579 templates/InvenTree/settings/settings.html:227
msgid "Default Value"
msgstr ""
-#: part/models.py:2544
+#: part/models.py:2580
msgid "Default Parameter Value"
msgstr ""
+#: part/models.py:2614
+msgid "Part ID or part name"
+msgstr ""
+
+#: part/models.py:2617 templates/js/translated/model_renderers.js:182
+msgid "Part ID"
+msgstr ""
+
+#: part/models.py:2618
+msgid "Unique part ID value"
+msgstr ""
+
#: part/models.py:2621
-msgid "Select parent part"
+msgid "Part Name"
+msgstr ""
+
+#: part/models.py:2625
+msgid "Part IPN"
+msgstr ""
+
+#: part/models.py:2626
+msgid "Part IPN value"
msgstr ""
#: part/models.py:2629
-msgid "Sub part"
+msgid "Level"
msgstr ""
#: part/models.py:2630
+msgid "BOM level"
+msgstr ""
+
+#: part/models.py:2690
+msgid "Select parent part"
+msgstr ""
+
+#: part/models.py:2698
+msgid "Sub part"
+msgstr ""
+
+#: part/models.py:2699
msgid "Select part to be used in BOM"
msgstr ""
-#: part/models.py:2636
+#: part/models.py:2705
msgid "BOM quantity for this BOM item"
msgstr ""
-#: part/models.py:2638 templates/js/translated/bom.js:578
-#: templates/js/translated/bom.js:652
+#: part/models.py:2707 part/templates/part/upload_bom.html:58
+#: templates/js/translated/bom.js:791 templates/js/translated/bom.js:865
#: templates/js/translated/table_filters.js:92
msgid "Optional"
msgstr ""
-#: part/models.py:2638
+#: part/models.py:2707
msgid "This BOM item is optional"
msgstr ""
-#: part/models.py:2641
+#: part/models.py:2710 part/templates/part/upload_bom.html:55
msgid "Overage"
msgstr ""
-#: part/models.py:2642
+#: part/models.py:2711
msgid "Estimated build wastage quantity (absolute or percentage)"
msgstr ""
-#: part/models.py:2645
+#: part/models.py:2714
msgid "BOM item reference"
msgstr ""
-#: part/models.py:2648
+#: part/models.py:2717
msgid "BOM item notes"
msgstr ""
-#: part/models.py:2650
+#: part/models.py:2719
msgid "Checksum"
msgstr ""
-#: part/models.py:2650
+#: part/models.py:2719
msgid "BOM line checksum"
msgstr ""
-#: part/models.py:2654 templates/js/translated/bom.js:669
+#: part/models.py:2723 part/templates/part/upload_bom.html:57
+#: templates/js/translated/bom.js:882
#: templates/js/translated/table_filters.js:68
#: templates/js/translated/table_filters.js:88
msgid "Inherited"
msgstr ""
-#: part/models.py:2655
+#: part/models.py:2724
msgid "This BOM item is inherited by BOMs for variant parts"
msgstr ""
-#: part/models.py:2660 templates/js/translated/bom.js:661
+#: part/models.py:2729 part/templates/part/upload_bom.html:56
+#: templates/js/translated/bom.js:874
msgid "Allow Variants"
msgstr ""
-#: part/models.py:2661
+#: part/models.py:2730
msgid "Stock items for variant parts can be used for this BOM item"
msgstr ""
-#: part/models.py:2746 stock/models.py:357
+#: part/models.py:2815 stock/models.py:357
msgid "Quantity must be integer value for trackable parts"
msgstr ""
-#: part/models.py:2755 part/models.py:2757
+#: part/models.py:2824 part/models.py:2826
msgid "Sub part must be specified"
msgstr ""
-#: part/models.py:2886
+#: part/models.py:2955
msgid "BOM Item Substitute"
msgstr ""
-#: part/models.py:2908
+#: part/models.py:2977
msgid "Substitute part cannot be the same as the master part"
msgstr ""
-#: part/models.py:2920
+#: part/models.py:2989
msgid "Parent BOM item"
msgstr ""
-#: part/models.py:2928
+#: part/models.py:2997
msgid "Substitute part"
msgstr ""
-#: part/models.py:2939
+#: part/models.py:3008
msgid "Part 1"
msgstr ""
-#: part/models.py:2943
+#: part/models.py:3012
msgid "Part 2"
msgstr ""
-#: part/models.py:2943
+#: part/models.py:3012
msgid "Select Related Part"
msgstr ""
-#: part/models.py:2975
+#: part/models.py:3044
msgid "Error creating relationship: check that the part is not related to itself and that the relationship is unique"
msgstr ""
-#: part/serializers.py:659
+#: part/serializers.py:667
msgid "Select part to copy BOM from"
msgstr ""
-#: part/serializers.py:670
+#: part/serializers.py:678
msgid "Remove Existing Data"
msgstr ""
-#: part/serializers.py:671
+#: part/serializers.py:679
msgid "Remove existing BOM items before copying"
msgstr ""
-#: part/serializers.py:676
+#: part/serializers.py:684
msgid "Include Inherited"
msgstr ""
-#: part/serializers.py:677
+#: part/serializers.py:685
msgid "Include BOM items which are inherited from templated parts"
msgstr ""
-#: part/serializers.py:682
+#: part/serializers.py:690
msgid "Skip Invalid Rows"
msgstr ""
-#: part/serializers.py:683
+#: part/serializers.py:691
msgid "Enable this option to skip invalid rows"
msgstr ""
-#: part/tasks.py:53
+#: part/serializers.py:734
+msgid "Clear Existing BOM"
+msgstr ""
+
+#: part/serializers.py:735
+msgid "Delete existing BOM items before uploading"
+msgstr ""
+
+#: part/serializers.py:762
+msgid "No part column specified"
+msgstr ""
+
+#: part/serializers.py:806
+msgid "Multiple matching parts found"
+msgstr ""
+
+#: part/serializers.py:809
+msgid "No matching part found"
+msgstr ""
+
+#: part/serializers.py:812
+msgid "Part is not designated as a component"
+msgstr ""
+
+#: part/serializers.py:821
+msgid "Quantity not provided"
+msgstr ""
+
+#: part/serializers.py:829
+msgid "Invalid quantity"
+msgstr ""
+
+#: part/serializers.py:848
+msgid "At least one BOM item is required"
+msgstr ""
+
+#: part/tasks.py:58
msgid "Low stock notification"
msgstr ""
@@ -4418,7 +4464,7 @@ msgstr ""
msgid "The BOM for %(part)s has not been validated."
msgstr ""
-#: part/templates/part/bom.html:30 part/templates/part/detail.html:270
+#: part/templates/part/bom.html:30 part/templates/part/detail.html:273
msgid "BOM actions"
msgstr ""
@@ -4426,34 +4472,6 @@ msgstr ""
msgid "Delete Items"
msgstr ""
-#: part/templates/part/bom_upload/match_parts.html:29
-msgid "Select Part"
-msgstr ""
-
-#: part/templates/part/bom_upload/upload_file.html:8
-msgid "Return to BOM"
-msgstr ""
-
-#: part/templates/part/bom_upload/upload_file.html:13
-msgid "Upload Bill of Materials"
-msgstr ""
-
-#: part/templates/part/bom_upload/upload_file.html:33
-msgid "Requirements for BOM upload"
-msgstr ""
-
-#: part/templates/part/bom_upload/upload_file.html:35
-msgid "The BOM file must contain the required named columns as provided in the "
-msgstr ""
-
-#: part/templates/part/bom_upload/upload_file.html:35
-msgid "BOM Upload Template"
-msgstr ""
-
-#: part/templates/part/bom_upload/upload_file.html:36
-msgid "Each part must already exist in the database"
-msgstr ""
-
#: part/templates/part/category.html:28 part/templates/part/category.html:32
msgid "You are subscribed to notifications for this category"
msgstr ""
@@ -4519,7 +4537,7 @@ msgstr ""
msgid "Create new part"
msgstr ""
-#: part/templates/part/category.html:161 templates/js/translated/bom.js:152
+#: part/templates/part/category.html:161 templates/js/translated/bom.js:365
msgid "New Part"
msgstr "新規パーツ"
@@ -4639,138 +4657,168 @@ msgstr ""
msgid "Sales Order Allocations"
msgstr ""
-#: part/templates/part/detail.html:159
+#: part/templates/part/detail.html:162
msgid "Part Variants"
msgstr ""
-#: part/templates/part/detail.html:163
+#: part/templates/part/detail.html:166
msgid "Create new variant"
msgstr ""
-#: part/templates/part/detail.html:164
+#: part/templates/part/detail.html:167
msgid "New Variant"
msgstr ""
-#: part/templates/part/detail.html:191
+#: part/templates/part/detail.html:194
msgid "Add new parameter"
msgstr ""
-#: part/templates/part/detail.html:228 part/templates/part/part_sidebar.html:49
+#: part/templates/part/detail.html:231 part/templates/part/part_sidebar.html:52
msgid "Related Parts"
msgstr ""
-#: part/templates/part/detail.html:232 part/templates/part/detail.html:233
+#: part/templates/part/detail.html:235 part/templates/part/detail.html:236
msgid "Add Related"
msgstr ""
-#: part/templates/part/detail.html:253 part/templates/part/part_sidebar.html:17
+#: part/templates/part/detail.html:256 part/templates/part/part_sidebar.html:18
msgid "Bill of Materials"
msgstr ""
-#: part/templates/part/detail.html:258
+#: part/templates/part/detail.html:261
msgid "Export actions"
msgstr ""
-#: part/templates/part/detail.html:262 templates/js/translated/bom.js:70
+#: part/templates/part/detail.html:265 templates/js/translated/bom.js:283
msgid "Export BOM"
msgstr ""
-#: part/templates/part/detail.html:264
+#: part/templates/part/detail.html:267
msgid "Print BOM Report"
msgstr ""
-#: part/templates/part/detail.html:274
+#: part/templates/part/detail.html:277
msgid "Upload BOM"
msgstr ""
-#: part/templates/part/detail.html:276 templates/js/translated/part.js:272
+#: part/templates/part/detail.html:279 templates/js/translated/part.js:272
msgid "Copy BOM"
msgstr ""
-#: part/templates/part/detail.html:278
+#: part/templates/part/detail.html:281
msgid "Validate BOM"
msgstr ""
-#: part/templates/part/detail.html:283
+#: part/templates/part/detail.html:286
msgid "New BOM Item"
msgstr ""
-#: part/templates/part/detail.html:284
+#: part/templates/part/detail.html:287
msgid "Add BOM Item"
msgstr ""
-#: part/templates/part/detail.html:297
+#: part/templates/part/detail.html:300
msgid "Assemblies"
msgstr ""
-#: part/templates/part/detail.html:314
+#: part/templates/part/detail.html:317
msgid "Part Builds"
msgstr ""
-#: part/templates/part/detail.html:339
+#: part/templates/part/detail.html:342
msgid "Build Order Allocations"
msgstr ""
-#: part/templates/part/detail.html:349
+#: part/templates/part/detail.html:352
msgid "Part Suppliers"
msgstr ""
-#: part/templates/part/detail.html:377
+#: part/templates/part/detail.html:380
msgid "Part Manufacturers"
msgstr ""
-#: part/templates/part/detail.html:393
+#: part/templates/part/detail.html:396
msgid "Delete manufacturer parts"
msgstr ""
-#: part/templates/part/detail.html:575
+#: part/templates/part/detail.html:578
msgid "Delete selected BOM items?"
msgstr ""
-#: part/templates/part/detail.html:576
+#: part/templates/part/detail.html:579
msgid "All selected BOM items will be deleted"
msgstr ""
-#: part/templates/part/detail.html:625
+#: part/templates/part/detail.html:628
msgid "Create BOM Item"
msgstr ""
-#: part/templates/part/detail.html:682
+#: part/templates/part/detail.html:685
msgid "Related Part"
msgstr ""
-#: part/templates/part/detail.html:690
+#: part/templates/part/detail.html:693
msgid "Add Related Part"
msgstr ""
-#: part/templates/part/detail.html:785
+#: part/templates/part/detail.html:788
msgid "Add Test Result Template"
msgstr ""
-#: part/templates/part/detail.html:842
+#: part/templates/part/detail.html:845
msgid "Edit Part Notes"
msgstr ""
-#: part/templates/part/detail.html:955
+#: part/templates/part/detail.html:958
#, python-format
msgid "Purchase Unit Price - %(currency)s"
msgstr ""
-#: part/templates/part/detail.html:967
+#: part/templates/part/detail.html:970
#, python-format
msgid "Unit Price-Cost Difference - %(currency)s"
msgstr ""
-#: part/templates/part/detail.html:979
+#: part/templates/part/detail.html:982
#, python-format
msgid "Supplier Unit Cost - %(currency)s"
msgstr ""
-#: part/templates/part/detail.html:1068
+#: part/templates/part/detail.html:1071
#, python-format
msgid "Unit Price - %(currency)s"
msgstr ""
+#: part/templates/part/import_wizard/ajax_match_fields.html:9
+#: part/templates/part/import_wizard/match_fields.html:9
+#: templates/patterns/wizard/match_fields.html:8
+msgid "Missing selections for the following required columns"
+msgstr ""
+
+#: part/templates/part/import_wizard/ajax_match_fields.html:20
+#: part/templates/part/import_wizard/match_fields.html:20
+#: templates/patterns/wizard/match_fields.html:19
+msgid "Duplicate selections found, see below. Fix them then retry submitting."
+msgstr ""
+
+#: part/templates/part/import_wizard/ajax_match_fields.html:28
+#: part/templates/part/import_wizard/match_fields.html:35
+#: templates/patterns/wizard/match_fields.html:34
+msgid "File Fields"
+msgstr ""
+
+#: part/templates/part/import_wizard/ajax_match_fields.html:35
+#: part/templates/part/import_wizard/match_fields.html:42
+#: templates/patterns/wizard/match_fields.html:41
+msgid "Remove column"
+msgstr ""
+
+#: part/templates/part/import_wizard/ajax_match_fields.html:53
+#: part/templates/part/import_wizard/match_fields.html:60
+#: templates/patterns/wizard/match_fields.html:59
+msgid "Duplicate selection"
+msgstr ""
+
#: part/templates/part/import_wizard/ajax_part_upload.html:29
#: part/templates/part/import_wizard/part_upload.html:53
msgid "Unsuffitient privileges."
@@ -4819,7 +4867,7 @@ msgid "Show pricing information"
msgstr ""
#: part/templates/part/part_base.html:56
-#: stock/templates/stock/item_base.html:110
+#: stock/templates/stock/item_base.html:112
#: stock/templates/stock/location.html:44
msgid "Stock actions"
msgstr ""
@@ -4912,7 +4960,7 @@ msgstr ""
msgid "Allocated to Orders"
msgstr ""
-#: part/templates/part/part_base.html:239 templates/js/translated/bom.js:690
+#: part/templates/part/part_base.html:239 templates/js/translated/bom.js:903
msgid "Can Build"
msgstr ""
@@ -4930,7 +4978,7 @@ msgid "Latest Serial Number"
msgstr ""
#: part/templates/part/part_base.html:328
-#: stock/templates/stock/item_base.html:166
+#: stock/templates/stock/item_base.html:168
msgid "Search for serial number"
msgstr ""
@@ -4969,7 +5017,7 @@ msgid "Total Cost"
msgstr ""
#: part/templates/part/part_pricing.html:40 part/templates/part/prices.html:40
-#: templates/js/translated/bom.js:644
+#: templates/js/translated/bom.js:857
msgid "No supplier pricing available"
msgstr ""
@@ -5003,20 +5051,20 @@ msgstr ""
msgid "No pricing information is available for this part."
msgstr ""
-#: part/templates/part/part_sidebar.html:11
+#: part/templates/part/part_sidebar.html:12
msgid "Variants"
msgstr ""
-#: part/templates/part/part_sidebar.html:25
+#: part/templates/part/part_sidebar.html:26
msgid "Used In"
msgstr ""
-#: part/templates/part/part_sidebar.html:31
+#: part/templates/part/part_sidebar.html:34
#: stock/templates/stock/stock_sidebar.html:8
msgid "Allocations"
msgstr ""
-#: part/templates/part/part_sidebar.html:45
+#: part/templates/part/part_sidebar.html:48
msgid "Test Templates"
msgstr ""
@@ -5089,7 +5137,7 @@ msgstr ""
msgid "Calculation parameters"
msgstr ""
-#: part/templates/part/prices.html:155 templates/js/translated/bom.js:638
+#: part/templates/part/prices.html:155 templates/js/translated/bom.js:851
msgid "Supplier Cost"
msgstr ""
@@ -5111,7 +5159,7 @@ msgstr ""
msgid "Internal Cost"
msgstr ""
-#: part/templates/part/prices.html:215 part/views.py:1699
+#: part/templates/part/prices.html:215 part/views.py:1390
msgid "Add Internal Price Break"
msgstr ""
@@ -5131,7 +5179,7 @@ msgstr ""
msgid "Set category for the following parts"
msgstr ""
-#: part/templates/part/stock_count.html:7 templates/js/translated/bom.js:600
+#: part/templates/part/stock_count.html:7 templates/js/translated/bom.js:813
#: templates/js/translated/part.js:497 templates/js/translated/part.js:1122
#: templates/js/translated/part.js:1309
msgid "No Stock"
@@ -5141,6 +5189,43 @@ msgstr ""
msgid "Low Stock"
msgstr ""
+#: part/templates/part/upload_bom.html:8
+msgid "Return to BOM"
+msgstr ""
+
+#: part/templates/part/upload_bom.html:13
+msgid "Upload Bill of Materials"
+msgstr ""
+
+#: part/templates/part/upload_bom.html:19
+msgid "BOM upload requirements"
+msgstr ""
+
+#: part/templates/part/upload_bom.html:23
+#: part/templates/part/upload_bom.html:90
+msgid "Upload BOM File"
+msgstr ""
+
+#: part/templates/part/upload_bom.html:29
+msgid "Submit BOM Data"
+msgstr ""
+
+#: part/templates/part/upload_bom.html:37
+msgid "Requirements for BOM upload"
+msgstr ""
+
+#: part/templates/part/upload_bom.html:39
+msgid "The BOM file must contain the required named columns as provided in the "
+msgstr ""
+
+#: part/templates/part/upload_bom.html:39
+msgid "BOM Upload Template"
+msgstr ""
+
+#: part/templates/part/upload_bom.html:40
+msgid "Each part must already exist in the database"
+msgstr ""
+
#: part/templates/part/variant_part.html:9
msgid "Create new part variant"
msgstr ""
@@ -5154,104 +5239,96 @@ msgstr ""
msgid "Unknown database"
msgstr ""
-#: part/views.py:93
+#: part/views.py:90
msgid "Set Part Category"
msgstr ""
-#: part/views.py:143
+#: part/views.py:140
#, python-brace-format
msgid "Set category for {n} parts"
msgstr ""
-#: part/views.py:215
+#: part/views.py:212
msgid "Match References"
msgstr ""
-#: part/views.py:511
+#: part/views.py:509
msgid "None"
msgstr ""
-#: part/views.py:570
+#: part/views.py:568
msgid "Part QR Code"
msgstr ""
-#: part/views.py:672
+#: part/views.py:670
msgid "Select Part Image"
msgstr ""
-#: part/views.py:698
+#: part/views.py:696
msgid "Updated part image"
msgstr ""
-#: part/views.py:701
+#: part/views.py:699
msgid "Part image not found"
msgstr ""
-#: part/views.py:775
-msgid "Match Parts"
-msgstr ""
-
-#: part/views.py:1110
-msgid "Export Bill of Materials"
-msgstr ""
-
-#: part/views.py:1159
+#: part/views.py:850
msgid "Confirm Part Deletion"
msgstr ""
-#: part/views.py:1166
+#: part/views.py:857
msgid "Part was deleted"
msgstr ""
-#: part/views.py:1175
+#: part/views.py:866
msgid "Part Pricing"
msgstr ""
-#: part/views.py:1324
+#: part/views.py:1015
msgid "Create Part Parameter Template"
msgstr ""
-#: part/views.py:1334
+#: part/views.py:1025
msgid "Edit Part Parameter Template"
msgstr ""
-#: part/views.py:1341
+#: part/views.py:1032
msgid "Delete Part Parameter Template"
msgstr ""
-#: part/views.py:1400 templates/js/translated/part.js:315
+#: part/views.py:1091 templates/js/translated/part.js:315
msgid "Edit Part Category"
msgstr ""
-#: part/views.py:1438
+#: part/views.py:1129
msgid "Delete Part Category"
msgstr ""
-#: part/views.py:1444
+#: part/views.py:1135
msgid "Part category was deleted"
msgstr ""
-#: part/views.py:1453
+#: part/views.py:1144
msgid "Create Category Parameter Template"
msgstr ""
-#: part/views.py:1554
+#: part/views.py:1245
msgid "Edit Category Parameter Template"
msgstr ""
-#: part/views.py:1610
+#: part/views.py:1301
msgid "Delete Category Parameter Template"
msgstr ""
-#: part/views.py:1632
+#: part/views.py:1323
msgid "Added new price break"
msgstr ""
-#: part/views.py:1708
+#: part/views.py:1399
msgid "Edit Internal Price Break"
msgstr ""
-#: part/views.py:1716
+#: part/views.py:1407
msgid "Delete Internal Price Break"
msgstr ""
@@ -5453,12 +5530,12 @@ msgid "Stock Item Test Report"
msgstr ""
#: report/templates/report/inventree_test_report_base.html:79
-#: stock/models.py:519 stock/templates/stock/item_base.html:156
-#: templates/js/translated/build.js:293 templates/js/translated/build.js:697
-#: templates/js/translated/build.js:1073
+#: stock/models.py:519 stock/templates/stock/item_base.html:158
+#: templates/js/translated/build.js:373 templates/js/translated/build.js:521
+#: templates/js/translated/build.js:919 templates/js/translated/build.js:1295
#: 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:423
+#: templates/js/translated/order.js:2034 templates/js/translated/stock.js:424
msgid "Serial Number"
msgstr ""
@@ -5479,7 +5556,7 @@ msgstr ""
#: report/templates/report/inventree_test_report_base.html:97
#: templates/InvenTree/settings/plugin.html:50
#: templates/InvenTree/settings/plugin_settings.html:38
-#: templates/js/translated/order.js:849 templates/js/translated/stock.js:2525
+#: templates/js/translated/order.js:849 templates/js/translated/stock.js:2649
msgid "Date"
msgstr ""
@@ -5497,71 +5574,67 @@ msgid "Installed Items"
msgstr ""
#: report/templates/report/inventree_test_report_base.html:137
-#: templates/js/translated/stock.js:586 templates/js/translated/stock.js:756
-#: templates/js/translated/stock.js:2785
+#: templates/js/translated/stock.js:587 templates/js/translated/stock.js:757
+#: templates/js/translated/stock.js:2909
msgid "Serial"
msgstr ""
-#: stock/api.py:476
+#: stock/api.py:501
msgid "Quantity is required"
msgstr ""
-#: stock/api.py:483
+#: stock/api.py:508
msgid "Valid part must be supplied"
msgstr ""
-#: stock/forms.py:77 stock/forms.py:251 stock/models.py:576
-#: stock/templates/stock/item_base.html:193
-#: templates/js/translated/stock.js:1709
+#: stock/api.py:535
+msgid "Serial numbers cannot be supplied for a non-trackable part"
+msgstr ""
+
+#: stock/forms.py:74 stock/forms.py:198 stock/models.py:576
+#: stock/templates/stock/item_base.html:195
+#: templates/js/translated/stock.js:1833
msgid "Expiry Date"
msgstr ""
-#: stock/forms.py:78 stock/forms.py:252
+#: stock/forms.py:75 stock/forms.py:199
msgid "Expiration date for this stock item"
msgstr ""
-#: stock/forms.py:81
+#: stock/forms.py:78
msgid "Enter unique serial numbers (or leave blank)"
msgstr ""
-#: stock/forms.py:136
+#: stock/forms.py:133
msgid "Destination for serialized stock (by default, will remain in current location)"
msgstr ""
-#: stock/forms.py:138
+#: stock/forms.py:135
msgid "Serial numbers"
msgstr ""
-#: stock/forms.py:138
+#: stock/forms.py:135
msgid "Unique serial numbers (must match quantity)"
msgstr ""
-#: stock/forms.py:140 stock/forms.py:224
+#: stock/forms.py:137 stock/forms.py:171
msgid "Add transaction note (optional)"
msgstr ""
-#: stock/forms.py:180
-msgid "Stock item to install"
-msgstr ""
-
-#: stock/forms.py:210
-msgid "Must not exceed available quantity"
-msgstr ""
-
-#: stock/forms.py:222
+#: stock/forms.py:169
msgid "Destination location for uninstalled items"
msgstr ""
-#: stock/forms.py:226
+#: stock/forms.py:173
msgid "Confirm uninstall"
msgstr ""
-#: stock/forms.py:226
+#: stock/forms.py:173
msgid "Confirm removal of installed stock items"
msgstr ""
#: stock/models.py:62 stock/models.py:613
-#: stock/templates/stock/item_base.html:416
+#: stock/templates/stock/item_base.html:418
msgid "Owner"
msgstr ""
@@ -5623,7 +5696,7 @@ msgstr ""
msgid "Packaging this stock item is stored in"
msgstr ""
-#: stock/models.py:502 stock/templates/stock/item_base.html:298
+#: stock/models.py:502 stock/templates/stock/item_base.html:300
msgid "Installed In"
msgstr ""
@@ -5733,7 +5806,7 @@ msgstr ""
msgid "Serialized stock cannot be merged"
msgstr ""
-#: stock/models.py:1214 stock/serializers.py:775
+#: stock/models.py:1214 stock/serializers.py:832
msgid "Duplicate stock items"
msgstr ""
@@ -5769,7 +5842,7 @@ msgstr ""
msgid "Test name"
msgstr ""
-#: stock/models.py:1983 templates/js/translated/table_filters.js:271
+#: stock/models.py:1983
msgid "Test result"
msgstr ""
@@ -5806,7 +5879,7 @@ msgstr ""
msgid "Enter serial numbers for new items"
msgstr ""
-#: stock/serializers.py:326 stock/serializers.py:732 stock/serializers.py:973
+#: stock/serializers.py:326 stock/serializers.py:789 stock/serializers.py:1030
msgid "Destination stock location"
msgstr ""
@@ -5818,63 +5891,79 @@ msgstr ""
msgid "Serial numbers cannot be assigned to this part"
msgstr ""
-#: stock/serializers.py:589
+#: stock/serializers.py:363 stock/views.py:1108
+msgid "Serial numbers already exist"
+msgstr ""
+
+#: stock/serializers.py:405
+msgid "Select stock item to install"
+msgstr ""
+
+#: stock/serializers.py:421
+msgid "Stock item is unavailable"
+msgstr ""
+
+#: stock/serializers.py:428
+msgid "Selected part is not in the Bill of Materials"
+msgstr ""
+
+#: stock/serializers.py:646
msgid "Part must be salable"
msgstr ""
-#: stock/serializers.py:593
+#: stock/serializers.py:650
msgid "Item is allocated to a sales order"
msgstr ""
-#: stock/serializers.py:597
+#: stock/serializers.py:654
msgid "Item is allocated to a build order"
msgstr ""
-#: stock/serializers.py:627
+#: stock/serializers.py:684
msgid "Customer to assign stock items"
msgstr ""
-#: stock/serializers.py:633
+#: stock/serializers.py:690
msgid "Selected company is not a customer"
msgstr ""
-#: stock/serializers.py:641
+#: stock/serializers.py:698
msgid "Stock assignment notes"
msgstr ""
-#: stock/serializers.py:651 stock/serializers.py:881
+#: stock/serializers.py:708 stock/serializers.py:938
msgid "A list of stock items must be provided"
msgstr ""
-#: stock/serializers.py:739
+#: stock/serializers.py:796
msgid "Stock merging notes"
msgstr ""
-#: stock/serializers.py:744
+#: stock/serializers.py:801
msgid "Allow mismatched suppliers"
msgstr ""
-#: stock/serializers.py:745
+#: stock/serializers.py:802
msgid "Allow stock items with different supplier parts to be merged"
msgstr ""
-#: stock/serializers.py:750
+#: stock/serializers.py:807
msgid "Allow mismatched status"
msgstr ""
-#: stock/serializers.py:751
+#: stock/serializers.py:808
msgid "Allow stock items with different status codes to be merged"
msgstr ""
-#: stock/serializers.py:761
+#: stock/serializers.py:818
msgid "At least two stock items must be provided"
msgstr ""
-#: stock/serializers.py:843
+#: stock/serializers.py:900
msgid "StockItem primary key value"
msgstr ""
-#: stock/serializers.py:871
+#: stock/serializers.py:928
msgid "Stock transaction notes"
msgstr ""
@@ -5919,22 +6008,14 @@ msgstr ""
msgid "Installed Stock Items"
msgstr ""
-#: stock/templates/stock/item.html:154 stock/views.py:482
+#: stock/templates/stock/item.html:154 templates/js/translated/stock.js:3018
msgid "Install Stock Item"
msgstr ""
-#: stock/templates/stock/item.html:309 stock/templates/stock/item.html:334
+#: stock/templates/stock/item.html:304 templates/js/translated/stock.js:1480
msgid "Add Test Result"
msgstr ""
-#: stock/templates/stock/item.html:354
-msgid "Edit Test Result"
-msgstr ""
-
-#: stock/templates/stock/item.html:368
-msgid "Delete Test Result"
-msgstr ""
-
#: stock/templates/stock/item_base.html:42
#: templates/js/translated/barcode.js:330
#: templates/js/translated/barcode.js:335
@@ -5995,129 +6076,129 @@ msgstr ""
msgid "Uninstall"
msgstr ""
-#: stock/templates/stock/item_base.html:101
+#: stock/templates/stock/item_base.html:102
msgid "Install stock item"
msgstr ""
-#: stock/templates/stock/item_base.html:101
+#: stock/templates/stock/item_base.html:102
msgid "Install"
msgstr ""
-#: stock/templates/stock/item_base.html:115
+#: stock/templates/stock/item_base.html:117
msgid "Convert to variant"
msgstr ""
-#: stock/templates/stock/item_base.html:118
+#: stock/templates/stock/item_base.html:120
msgid "Duplicate stock item"
msgstr ""
-#: stock/templates/stock/item_base.html:120
+#: stock/templates/stock/item_base.html:122
msgid "Edit stock item"
msgstr ""
-#: stock/templates/stock/item_base.html:123
+#: stock/templates/stock/item_base.html:125
msgid "Delete stock item"
msgstr ""
-#: stock/templates/stock/item_base.html:161
+#: stock/templates/stock/item_base.html:163
msgid "previous page"
msgstr ""
-#: stock/templates/stock/item_base.html:161
+#: stock/templates/stock/item_base.html:163
msgid "Navigate to previous serial number"
msgstr ""
-#: stock/templates/stock/item_base.html:170
+#: stock/templates/stock/item_base.html:172
msgid "next page"
msgstr ""
-#: stock/templates/stock/item_base.html:170
+#: stock/templates/stock/item_base.html:172
msgid "Navigate to next serial number"
msgstr ""
-#: stock/templates/stock/item_base.html:197
+#: stock/templates/stock/item_base.html:199
#, python-format
msgid "This StockItem expired on %(item.expiry_date)s"
msgstr ""
-#: stock/templates/stock/item_base.html:197
+#: stock/templates/stock/item_base.html:199
#: templates/js/translated/table_filters.js:252
msgid "Expired"
msgstr ""
-#: stock/templates/stock/item_base.html:199
+#: stock/templates/stock/item_base.html:201
#, python-format
msgid "This StockItem expires on %(item.expiry_date)s"
msgstr ""
-#: stock/templates/stock/item_base.html:199
+#: stock/templates/stock/item_base.html:201
#: templates/js/translated/table_filters.js:258
msgid "Stale"
msgstr ""
-#: stock/templates/stock/item_base.html:206
-#: templates/js/translated/stock.js:1722
+#: stock/templates/stock/item_base.html:208
+#: templates/js/translated/stock.js:1846
msgid "Last Updated"
msgstr ""
-#: stock/templates/stock/item_base.html:211
+#: stock/templates/stock/item_base.html:213
msgid "Last Stocktake"
msgstr ""
-#: stock/templates/stock/item_base.html:215
+#: stock/templates/stock/item_base.html:217
msgid "No stocktake performed"
msgstr ""
-#: stock/templates/stock/item_base.html:233
+#: stock/templates/stock/item_base.html:235
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:240
+#: stock/templates/stock/item_base.html:242
msgid "This stock item is in production and cannot be edited."
msgstr ""
-#: stock/templates/stock/item_base.html:241
+#: stock/templates/stock/item_base.html:243
msgid "Edit the stock item from the build view."
msgstr ""
-#: stock/templates/stock/item_base.html:254
+#: stock/templates/stock/item_base.html:256
msgid "This stock item has not passed all required tests"
msgstr ""
-#: stock/templates/stock/item_base.html:262
+#: stock/templates/stock/item_base.html:264
msgid "This stock item is allocated to Sales Order"
msgstr ""
-#: stock/templates/stock/item_base.html:270
+#: stock/templates/stock/item_base.html:272
msgid "This stock item is allocated to Build Order"
msgstr ""
-#: stock/templates/stock/item_base.html:276
+#: stock/templates/stock/item_base.html:278
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:317
-#: templates/js/translated/build.js:1095
+#: stock/templates/stock/item_base.html:319
+#: templates/js/translated/build.js:1317
msgid "No location set"
msgstr ""
-#: stock/templates/stock/item_base.html:324
+#: stock/templates/stock/item_base.html:326
msgid "Barcode Identifier"
msgstr ""
-#: stock/templates/stock/item_base.html:366
+#: stock/templates/stock/item_base.html:368
msgid "Parent Item"
msgstr ""
-#: stock/templates/stock/item_base.html:384
+#: stock/templates/stock/item_base.html:386
msgid "No manufacturer set"
msgstr ""
-#: stock/templates/stock/item_base.html:409
+#: stock/templates/stock/item_base.html:411
msgid "Tests"
msgstr ""
-#: stock/templates/stock/item_base.html:499
+#: stock/templates/stock/item_base.html:492
msgid "Edit Stock Status"
msgstr ""
@@ -6130,39 +6211,6 @@ msgstr ""
msgid "This will remove %(qty)s units of %(full_name)s from stock."
msgstr ""
-#: stock/templates/stock/item_install.html:8
-msgid "Install another Stock Item into this item."
-msgstr ""
-
-#: stock/templates/stock/item_install.html:11
-#: stock/templates/stock/item_install.html:24
-msgid "Stock items can only be installed if they meet the following criteria"
-msgstr ""
-
-#: stock/templates/stock/item_install.html:14
-msgid "The Stock Item links to a Part which is in the BOM for this Stock Item"
-msgstr ""
-
-#: stock/templates/stock/item_install.html:15
-msgid "The Stock Item is currently in stock"
-msgstr ""
-
-#: stock/templates/stock/item_install.html:16
-msgid "The Stock Item is serialized and does not belong to another item"
-msgstr ""
-
-#: stock/templates/stock/item_install.html:21
-msgid "Install this Stock Item in another stock item."
-msgstr ""
-
-#: stock/templates/stock/item_install.html:27
-msgid "The part associated to this Stock Item belongs to another part's BOM"
-msgstr ""
-
-#: stock/templates/stock/item_install.html:28
-msgid "This Stock Item is serialized and does not belong to another item"
-msgstr ""
-
#: stock/templates/stock/item_serialize.html:5
msgid "Create serialized items from this stock item."
msgstr ""
@@ -6247,7 +6295,7 @@ msgstr ""
msgid "The following stock items will be uninstalled"
msgstr ""
-#: stock/templates/stock/stockitem_convert.html:7 stock/views.py:879
+#: stock/templates/stock/stockitem_convert.html:7 stock/views.py:730
msgid "Convert Stock Item"
msgstr ""
@@ -6268,11 +6316,11 @@ msgstr ""
msgid "Are you sure you want to delete this stock tracking entry?"
msgstr ""
-#: stock/views.py:162 templates/js/translated/stock.js:139
+#: stock/views.py:162 templates/js/translated/stock.js:140
msgid "Edit Stock Location"
msgstr ""
-#: stock/views.py:269 stock/views.py:858 stock/views.py:984 stock/views.py:1266
+#: stock/views.py:269 stock/views.py:709 stock/views.py:835 stock/views.py:1117
msgid "Owner is required (ownership control is enabled)"
msgstr ""
@@ -6300,59 +6348,63 @@ msgstr ""
msgid "Confirm test data deletion"
msgstr ""
+#: stock/views.py:352
+msgid "Check the confirmation box"
+msgstr ""
+
#: stock/views.py:456
msgid "Stock Item QR Code"
msgstr ""
-#: stock/views.py:630
+#: stock/views.py:481
msgid "Uninstall Stock Items"
msgstr ""
-#: stock/views.py:727 templates/js/translated/stock.js:1074
+#: stock/views.py:578 templates/js/translated/stock.js:1075
msgid "Confirm stock adjustment"
msgstr ""
-#: stock/views.py:738
+#: stock/views.py:589
msgid "Uninstalled stock items"
msgstr ""
-#: stock/views.py:760 templates/js/translated/stock.js:332
+#: stock/views.py:611 templates/js/translated/stock.js:333
msgid "Edit Stock Item"
msgstr ""
-#: stock/views.py:910
+#: stock/views.py:761
msgid "Create new Stock Location"
msgstr ""
-#: stock/views.py:1011
+#: stock/views.py:862
msgid "Create new Stock Item"
msgstr ""
-#: stock/views.py:1153 templates/js/translated/stock.js:312
+#: stock/views.py:1004 templates/js/translated/stock.js:313
msgid "Duplicate Stock Item"
msgstr ""
-#: stock/views.py:1235
+#: stock/views.py:1086
msgid "Quantity cannot be negative"
msgstr ""
-#: stock/views.py:1335
+#: stock/views.py:1186
msgid "Delete Stock Location"
msgstr ""
-#: stock/views.py:1348
+#: stock/views.py:1199
msgid "Delete Stock Item"
msgstr ""
-#: stock/views.py:1359
+#: stock/views.py:1210
msgid "Delete Stock Tracking Entry"
msgstr ""
-#: stock/views.py:1366
+#: stock/views.py:1217
msgid "Edit Stock Tracking Entry"
msgstr ""
-#: stock/views.py:1375
+#: stock/views.py:1226
msgid "Add Stock Tracking Entry"
msgstr ""
@@ -6527,15 +6579,15 @@ msgstr ""
msgid "Part Settings"
msgstr ""
-#: templates/InvenTree/settings/part.html:43
+#: templates/InvenTree/settings/part.html:44
msgid "Part Import"
msgstr ""
-#: templates/InvenTree/settings/part.html:47
+#: templates/InvenTree/settings/part.html:48
msgid "Import Part"
msgstr ""
-#: templates/InvenTree/settings/part.html:61
+#: templates/InvenTree/settings/part.html:62
msgid "Part Parameter Templates"
msgstr ""
@@ -6663,45 +6715,45 @@ msgstr ""
msgid "Report Settings"
msgstr ""
-#: templates/InvenTree/settings/setting.html:30
+#: templates/InvenTree/settings/setting.html:33
msgid "No value set"
msgstr ""
-#: templates/InvenTree/settings/setting.html:41
+#: templates/InvenTree/settings/setting.html:38
msgid "Edit setting"
msgstr ""
-#: templates/InvenTree/settings/settings.html:78
+#: templates/InvenTree/settings/settings.html:115
msgid "Edit Plugin Setting"
msgstr ""
-#: templates/InvenTree/settings/settings.html:80
+#: templates/InvenTree/settings/settings.html:117
msgid "Edit Global Setting"
msgstr ""
-#: templates/InvenTree/settings/settings.html:82
+#: templates/InvenTree/settings/settings.html:119
msgid "Edit User Setting"
msgstr ""
-#: templates/InvenTree/settings/settings.html:171
+#: templates/InvenTree/settings/settings.html:208
msgid "No category parameter templates found"
msgstr ""
-#: templates/InvenTree/settings/settings.html:193
-#: templates/InvenTree/settings/settings.html:292
+#: templates/InvenTree/settings/settings.html:230
+#: templates/InvenTree/settings/settings.html:329
msgid "Edit Template"
msgstr ""
-#: templates/InvenTree/settings/settings.html:194
-#: templates/InvenTree/settings/settings.html:293
+#: templates/InvenTree/settings/settings.html:231
+#: templates/InvenTree/settings/settings.html:330
msgid "Delete Template"
msgstr ""
-#: templates/InvenTree/settings/settings.html:272
+#: templates/InvenTree/settings/settings.html:309
msgid "No part parameter templates found"
msgstr ""
-#: templates/InvenTree/settings/settings.html:276
+#: templates/InvenTree/settings/settings.html:313
msgid "ID"
msgstr ""
@@ -6996,10 +7048,11 @@ msgid "InvenTree Version Information"
msgstr ""
#: templates/about.html:11 templates/about.html:105
-#: templates/js/translated/bom.js:407 templates/js/translated/modals.js:53
-#: templates/js/translated/modals.js:584 templates/js/translated/modals.js:678
-#: templates/js/translated/modals.js:983 templates/modals.html:15
-#: templates/modals.html:27 templates/modals.html:39 templates/modals.html:50
+#: templates/js/translated/bom.js:132 templates/js/translated/bom.js:620
+#: templates/js/translated/modals.js:53 templates/js/translated/modals.js:584
+#: templates/js/translated/modals.js:678 templates/js/translated/modals.js:986
+#: templates/modals.html:15 templates/modals.html:27 templates/modals.html:39
+#: templates/modals.html:50
msgid "Close"
msgstr ""
@@ -7275,14 +7328,14 @@ msgid "The following parts are low on required stock"
msgstr ""
#: templates/email/build_order_required_stock.html:18
-#: templates/js/translated/bom.js:1117
+#: templates/js/translated/bom.js:1335
msgid "Required Quantity"
msgstr ""
#: templates/email/build_order_required_stock.html:19
#: templates/email/low_stock_notification.html:18
-#: templates/js/translated/bom.js:591 templates/js/translated/build.js:1189
-#: templates/js/translated/build.js:1810
+#: templates/js/translated/bom.js:804 templates/js/translated/build.js:1411
+#: templates/js/translated/build.js:2048
#: templates/js/translated/table_filters.js:178
msgid "Available"
msgstr ""
@@ -7325,11 +7378,11 @@ msgstr ""
msgid "Remote image must not exceed maximum allowable file size"
msgstr ""
-#: templates/js/translated/api.js:185 templates/js/translated/modals.js:1053
+#: templates/js/translated/api.js:185 templates/js/translated/modals.js:1056
msgid "No Response"
msgstr ""
-#: templates/js/translated/api.js:186 templates/js/translated/modals.js:1054
+#: templates/js/translated/api.js:186 templates/js/translated/modals.js:1057
msgid "No response from the InvenTree server"
msgstr ""
@@ -7341,27 +7394,27 @@ msgstr ""
msgid "API request returned error code 400"
msgstr ""
-#: templates/js/translated/api.js:197 templates/js/translated/modals.js:1063
+#: templates/js/translated/api.js:197 templates/js/translated/modals.js:1066
msgid "Error 401: Not Authenticated"
msgstr ""
-#: templates/js/translated/api.js:198 templates/js/translated/modals.js:1064
+#: templates/js/translated/api.js:198 templates/js/translated/modals.js:1067
msgid "Authentication credentials not supplied"
msgstr ""
-#: templates/js/translated/api.js:202 templates/js/translated/modals.js:1068
+#: templates/js/translated/api.js:202 templates/js/translated/modals.js:1071
msgid "Error 403: Permission Denied"
msgstr ""
-#: templates/js/translated/api.js:203 templates/js/translated/modals.js:1069
+#: templates/js/translated/api.js:203 templates/js/translated/modals.js:1072
msgid "You do not have the required permissions to access this function"
msgstr ""
-#: templates/js/translated/api.js:207 templates/js/translated/modals.js:1073
+#: templates/js/translated/api.js:207 templates/js/translated/modals.js:1076
msgid "Error 404: Resource Not Found"
msgstr ""
-#: templates/js/translated/api.js:208 templates/js/translated/modals.js:1074
+#: templates/js/translated/api.js:208 templates/js/translated/modals.js:1077
msgid "The requested resource could not be located on the server"
msgstr ""
@@ -7373,11 +7426,11 @@ msgstr ""
msgid "HTTP method not allowed at URL"
msgstr ""
-#: templates/js/translated/api.js:217 templates/js/translated/modals.js:1078
+#: templates/js/translated/api.js:217 templates/js/translated/modals.js:1081
msgid "Error 408: Timeout"
msgstr ""
-#: templates/js/translated/api.js:218 templates/js/translated/modals.js:1079
+#: templates/js/translated/api.js:218 templates/js/translated/modals.js:1082
msgid "Connection timeout while requesting data from server"
msgstr ""
@@ -7446,7 +7499,7 @@ msgid "Unknown response from server"
msgstr ""
#: templates/js/translated/barcode.js:140
-#: templates/js/translated/modals.js:1043
+#: templates/js/translated/modals.js:1046
msgid "Invalid server response"
msgstr ""
@@ -7474,7 +7527,7 @@ msgstr ""
msgid "Unlink"
msgstr ""
-#: templates/js/translated/barcode.js:397 templates/js/translated/stock.js:1026
+#: templates/js/translated/barcode.js:397 templates/js/translated/stock.js:1027
msgid "Remove stock item"
msgstr ""
@@ -7516,327 +7569,369 @@ msgstr ""
msgid "Barcode does not match a valid location"
msgstr ""
-#: templates/js/translated/bom.js:36
+#: templates/js/translated/bom.js:75
+msgid "Display row data"
+msgstr ""
+
+#: templates/js/translated/bom.js:131
+msgid "Row Data"
+msgstr ""
+
+#: templates/js/translated/bom.js:249
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:518
+#: templates/js/translated/bom.js:252 templates/js/translated/bom.js:286
+#: templates/js/translated/order.js:369 templates/js/translated/stock.js:519
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:519
+#: templates/js/translated/bom.js:253 templates/js/translated/bom.js:287
+#: templates/js/translated/order.js:370 templates/js/translated/stock.js:520
msgid "Select file format"
msgstr ""
-#: templates/js/translated/bom.js:81
+#: templates/js/translated/bom.js:294
msgid "Cascading"
msgstr ""
-#: templates/js/translated/bom.js:82
+#: templates/js/translated/bom.js:295
msgid "Download cascading / multi-level BOM"
msgstr ""
-#: templates/js/translated/bom.js:87
+#: templates/js/translated/bom.js:300
msgid "Levels"
msgstr ""
-#: templates/js/translated/bom.js:88
+#: templates/js/translated/bom.js:301
msgid "Select maximum number of BOM levels to export (0 = all levels)"
msgstr ""
-#: templates/js/translated/bom.js:94
+#: templates/js/translated/bom.js:307
msgid "Include Parameter Data"
msgstr ""
-#: templates/js/translated/bom.js:95
+#: templates/js/translated/bom.js:308
msgid "Include part parameter data in exported BOM"
msgstr ""
-#: templates/js/translated/bom.js:100
+#: templates/js/translated/bom.js:313
msgid "Include Stock Data"
msgstr ""
-#: templates/js/translated/bom.js:101
+#: templates/js/translated/bom.js:314
msgid "Include part stock data in exported BOM"
msgstr ""
-#: templates/js/translated/bom.js:106
+#: templates/js/translated/bom.js:319
msgid "Include Manufacturer Data"
msgstr ""
-#: templates/js/translated/bom.js:107
+#: templates/js/translated/bom.js:320
msgid "Include part manufacturer data in exported BOM"
msgstr ""
-#: templates/js/translated/bom.js:112
+#: templates/js/translated/bom.js:325
msgid "Include Supplier Data"
msgstr ""
-#: templates/js/translated/bom.js:113
+#: templates/js/translated/bom.js:326
msgid "Include part supplier data in exported BOM"
msgstr ""
-#: templates/js/translated/bom.js:296
+#: templates/js/translated/bom.js:509
msgid "Remove substitute part"
msgstr ""
-#: templates/js/translated/bom.js:352
+#: templates/js/translated/bom.js:565
msgid "Select and add a new substitute part using the input below"
msgstr ""
-#: templates/js/translated/bom.js:363
+#: templates/js/translated/bom.js:576
msgid "Are you sure you wish to remove this substitute part link?"
msgstr ""
-#: templates/js/translated/bom.js:369
+#: templates/js/translated/bom.js:582
msgid "Remove Substitute Part"
msgstr ""
-#: templates/js/translated/bom.js:408
+#: templates/js/translated/bom.js:621
msgid "Add Substitute"
msgstr ""
-#: templates/js/translated/bom.js:409
+#: templates/js/translated/bom.js:622
msgid "Edit BOM Item Substitutes"
msgstr ""
-#: templates/js/translated/bom.js:528
+#: templates/js/translated/bom.js:741
msgid "Substitutes Available"
msgstr ""
-#: templates/js/translated/bom.js:532 templates/js/translated/build.js:1171
+#: templates/js/translated/bom.js:745 templates/js/translated/build.js:1393
msgid "Variant stock allowed"
msgstr ""
-#: templates/js/translated/bom.js:537
+#: templates/js/translated/bom.js:750
msgid "Open subassembly"
msgstr ""
-#: templates/js/translated/bom.js:609
+#: templates/js/translated/bom.js:822
msgid "Substitutes"
msgstr ""
-#: templates/js/translated/bom.js:624
+#: templates/js/translated/bom.js:837
msgid "Purchase Price Range"
msgstr ""
-#: templates/js/translated/bom.js:631
+#: templates/js/translated/bom.js:844
msgid "Purchase Price Average"
msgstr ""
-#: templates/js/translated/bom.js:680 templates/js/translated/bom.js:769
+#: templates/js/translated/bom.js:893 templates/js/translated/bom.js:982
msgid "View BOM"
msgstr ""
-#: templates/js/translated/bom.js:740
+#: templates/js/translated/bom.js:953
msgid "Validate BOM Item"
msgstr ""
-#: templates/js/translated/bom.js:742
+#: templates/js/translated/bom.js:955
msgid "This line has been validated"
msgstr ""
-#: templates/js/translated/bom.js:744
+#: templates/js/translated/bom.js:957
msgid "Edit substitute parts"
msgstr ""
-#: templates/js/translated/bom.js:746 templates/js/translated/bom.js:920
+#: templates/js/translated/bom.js:959 templates/js/translated/bom.js:1138
msgid "Edit BOM Item"
msgstr ""
-#: templates/js/translated/bom.js:748 templates/js/translated/bom.js:903
+#: templates/js/translated/bom.js:961 templates/js/translated/bom.js:1121
msgid "Delete BOM Item"
msgstr ""
-#: templates/js/translated/bom.js:842 templates/js/translated/build.js:915
+#: templates/js/translated/bom.js:1060 templates/js/translated/build.js:1137
msgid "No BOM items found"
msgstr ""
-#: templates/js/translated/bom.js:898
+#: templates/js/translated/bom.js:1116
msgid "Are you sure you want to delete this BOM item?"
msgstr ""
-#: templates/js/translated/bom.js:1100 templates/js/translated/build.js:1155
+#: templates/js/translated/bom.js:1318 templates/js/translated/build.js:1377
msgid "Required Part"
msgstr ""
-#: templates/js/translated/bom.js:1122
+#: templates/js/translated/bom.js:1340
msgid "Inherited from parent BOM"
msgstr ""
-#: templates/js/translated/build.js:84
+#: templates/js/translated/build.js:85
msgid "Edit Build Order"
msgstr ""
-#: templates/js/translated/build.js:118
+#: templates/js/translated/build.js:119
msgid "Create Build Order"
msgstr ""
-#: templates/js/translated/build.js:139
+#: templates/js/translated/build.js:140
msgid "Build order is ready to be completed"
msgstr ""
-#: templates/js/translated/build.js:144
+#: templates/js/translated/build.js:145
msgid "Build Order is incomplete"
msgstr ""
-#: templates/js/translated/build.js:172
+#: templates/js/translated/build.js:173
msgid "Complete Build Order"
msgstr ""
-#: templates/js/translated/build.js:193
+#: templates/js/translated/build.js:214 templates/js/translated/stock.js:93
+#: templates/js/translated/stock.js:182
+msgid "Next available serial number"
+msgstr ""
+
+#: templates/js/translated/build.js:216 templates/js/translated/stock.js:95
+#: templates/js/translated/stock.js:184
+msgid "Latest serial number"
+msgstr ""
+
+#: templates/js/translated/build.js:225
+msgid "The Bill of Materials contains trackable parts"
+msgstr ""
+
+#: templates/js/translated/build.js:226
+msgid "Build outputs must be generated individually"
+msgstr ""
+
+#: templates/js/translated/build.js:234
+msgid "Trackable parts can have serial numbers specified"
+msgstr ""
+
+#: templates/js/translated/build.js:235
+msgid "Enter serial numbers to generate multiple single build outputs"
+msgstr ""
+
+#: templates/js/translated/build.js:242
+msgid "Create Build Output"
+msgstr ""
+
+#: templates/js/translated/build.js:273
msgid "Allocate stock items to this build output"
msgstr ""
-#: templates/js/translated/build.js:204
+#: templates/js/translated/build.js:284
msgid "Unallocate stock from build output"
msgstr ""
-#: templates/js/translated/build.js:213
+#: templates/js/translated/build.js:293
msgid "Complete build output"
msgstr ""
-#: templates/js/translated/build.js:221
+#: templates/js/translated/build.js:301
msgid "Delete build output"
msgstr ""
-#: templates/js/translated/build.js:244
+#: templates/js/translated/build.js:324
msgid "Are you sure you wish to unallocate stock items from this build?"
msgstr ""
-#: templates/js/translated/build.js:262
+#: templates/js/translated/build.js:342
msgid "Unallocate Stock Items"
msgstr ""
-#: templates/js/translated/build.js:280
+#: templates/js/translated/build.js:360 templates/js/translated/build.js:508
msgid "Select Build Outputs"
msgstr ""
-#: templates/js/translated/build.js:281
+#: templates/js/translated/build.js:361 templates/js/translated/build.js:509
msgid "At least one build output must be selected"
msgstr ""
-#: templates/js/translated/build.js:335
+#: templates/js/translated/build.js:415 templates/js/translated/build.js:563
msgid "Output"
msgstr ""
-#: templates/js/translated/build.js:351
+#: templates/js/translated/build.js:431
msgid "Complete Build Outputs"
msgstr ""
-#: templates/js/translated/build.js:446
+#: templates/js/translated/build.js:576
+msgid "Delete Build Outputs"
+msgstr ""
+
+#: templates/js/translated/build.js:665
msgid "No build order allocations found"
msgstr ""
-#: templates/js/translated/build.js:484 templates/js/translated/order.js:1848
+#: templates/js/translated/build.js:703 templates/js/translated/order.js:1848
msgid "Location not specified"
msgstr ""
-#: templates/js/translated/build.js:663
+#: templates/js/translated/build.js:885
msgid "No active build outputs found"
msgstr ""
-#: templates/js/translated/build.js:1112 templates/js/translated/build.js:1821
+#: templates/js/translated/build.js:1334 templates/js/translated/build.js:2059
#: templates/js/translated/order.js:1982
msgid "Edit stock allocation"
msgstr ""
-#: templates/js/translated/build.js:1114 templates/js/translated/build.js:1822
+#: templates/js/translated/build.js:1336 templates/js/translated/build.js:2060
#: templates/js/translated/order.js:1983
msgid "Delete stock allocation"
msgstr ""
-#: templates/js/translated/build.js:1132
+#: templates/js/translated/build.js:1354
msgid "Edit Allocation"
msgstr ""
-#: templates/js/translated/build.js:1142
+#: templates/js/translated/build.js:1364
msgid "Remove Allocation"
msgstr ""
-#: templates/js/translated/build.js:1167
+#: templates/js/translated/build.js:1389
msgid "Substitute parts available"
msgstr ""
-#: templates/js/translated/build.js:1184
+#: templates/js/translated/build.js:1406
msgid "Quantity Per"
msgstr ""
-#: templates/js/translated/build.js:1194 templates/js/translated/build.js:1420
-#: templates/js/translated/build.js:1817 templates/js/translated/order.js:2227
+#: templates/js/translated/build.js:1416 templates/js/translated/build.js:1656
+#: templates/js/translated/build.js:2055 templates/js/translated/order.js:2227
msgid "Allocated"
msgstr ""
-#: templates/js/translated/build.js:1250 templates/js/translated/order.js:2307
+#: templates/js/translated/build.js:1472 templates/js/translated/order.js:2307
msgid "Build stock"
msgstr ""
-#: templates/js/translated/build.js:1254 templates/stock_table.html:53
+#: templates/js/translated/build.js:1476 templates/stock_table.html:53
msgid "Order stock"
msgstr ""
-#: templates/js/translated/build.js:1257 templates/js/translated/order.js:2300
+#: templates/js/translated/build.js:1479 templates/js/translated/order.js:2300
msgid "Allocate stock"
msgstr ""
-#: templates/js/translated/build.js:1322 templates/js/translated/order.js:1499
+#: templates/js/translated/build.js:1558 templates/js/translated/order.js:1499
msgid "Specify stock allocation quantity"
msgstr ""
-#: templates/js/translated/build.js:1393 templates/js/translated/label.js:134
+#: templates/js/translated/build.js:1629 templates/js/translated/label.js:134
#: templates/js/translated/order.js:1550 templates/js/translated/report.js:225
msgid "Select Parts"
msgstr ""
-#: templates/js/translated/build.js:1394 templates/js/translated/order.js:1551
+#: templates/js/translated/build.js:1630 templates/js/translated/order.js:1551
msgid "You must select at least one part to allocate"
msgstr ""
-#: templates/js/translated/build.js:1408 templates/js/translated/order.js:1565
+#: templates/js/translated/build.js:1644 templates/js/translated/order.js:1565
msgid "Select source location (leave blank to take from all locations)"
msgstr ""
-#: templates/js/translated/build.js:1437 templates/js/translated/order.js:1600
+#: templates/js/translated/build.js:1673 templates/js/translated/order.js:1600
msgid "Confirm stock allocation"
msgstr ""
-#: templates/js/translated/build.js:1438
+#: templates/js/translated/build.js:1674
msgid "Allocate Stock Items to Build Order"
msgstr ""
-#: templates/js/translated/build.js:1449 templates/js/translated/order.js:1613
+#: templates/js/translated/build.js:1685 templates/js/translated/order.js:1613
msgid "No matching stock locations"
msgstr ""
-#: templates/js/translated/build.js:1519 templates/js/translated/order.js:1690
+#: templates/js/translated/build.js:1757 templates/js/translated/order.js:1690
msgid "No matching stock items"
msgstr ""
-#: templates/js/translated/build.js:1637
+#: templates/js/translated/build.js:1875
msgid "No builds matching query"
msgstr ""
-#: templates/js/translated/build.js:1654 templates/js/translated/part.js:1213
-#: templates/js/translated/part.js:1624 templates/js/translated/stock.js:1520
-#: templates/js/translated/stock.js:2479
+#: templates/js/translated/build.js:1892 templates/js/translated/part.js:1213
+#: templates/js/translated/part.js:1624 templates/js/translated/stock.js:1644
+#: templates/js/translated/stock.js:2603
msgid "Select"
msgstr ""
-#: templates/js/translated/build.js:1674
+#: templates/js/translated/build.js:1912
msgid "Build order is overdue"
msgstr ""
-#: templates/js/translated/build.js:1735 templates/js/translated/stock.js:2698
+#: templates/js/translated/build.js:1973 templates/js/translated/stock.js:2822
msgid "No user information"
msgstr ""
-#: templates/js/translated/build.js:1747
+#: templates/js/translated/build.js:1985
msgid "No information"
msgstr ""
-#: templates/js/translated/build.js:1798
+#: templates/js/translated/build.js:2036
msgid "No parts allocated for"
msgstr ""
@@ -7966,48 +8061,60 @@ msgstr ""
msgid "Create filter"
msgstr ""
-#: templates/js/translated/forms.js:350 templates/js/translated/forms.js:365
-#: templates/js/translated/forms.js:379 templates/js/translated/forms.js:393
+#: templates/js/translated/forms.js:351 templates/js/translated/forms.js:366
+#: templates/js/translated/forms.js:380 templates/js/translated/forms.js:394
msgid "Action Prohibited"
msgstr ""
-#: templates/js/translated/forms.js:352
+#: templates/js/translated/forms.js:353
msgid "Create operation not allowed"
msgstr ""
-#: templates/js/translated/forms.js:367
+#: templates/js/translated/forms.js:368
msgid "Update operation not allowed"
msgstr ""
-#: templates/js/translated/forms.js:381
+#: templates/js/translated/forms.js:382
msgid "Delete operation not allowed"
msgstr ""
-#: templates/js/translated/forms.js:395
+#: templates/js/translated/forms.js:396
msgid "View operation not allowed"
msgstr ""
-#: templates/js/translated/forms.js:680
+#: templates/js/translated/forms.js:681
msgid "Enter a valid number"
msgstr ""
-#: templates/js/translated/forms.js:1082 templates/modals.html:19
+#: templates/js/translated/forms.js:1129 templates/modals.html:19
#: templates/modals.html:43
msgid "Form errors exist"
msgstr ""
-#: templates/js/translated/forms.js:1487
+#: templates/js/translated/forms.js:1558
msgid "No results found"
msgstr ""
-#: templates/js/translated/forms.js:1691
+#: templates/js/translated/forms.js:1768
msgid "Searching"
msgstr ""
-#: templates/js/translated/forms.js:1930
+#: templates/js/translated/forms.js:2013
msgid "Clear input"
msgstr ""
+#: templates/js/translated/forms.js:2479
+msgid "File Column"
+msgstr ""
+
+#: templates/js/translated/forms.js:2479
+msgid "Field Name"
+msgstr ""
+
+#: templates/js/translated/forms.js:2491
+msgid "Select Columns"
+msgstr ""
+
#: templates/js/translated/helpers.js:19
msgid "YES"
msgstr ""
@@ -8017,7 +8124,7 @@ msgid "NO"
msgstr ""
#: templates/js/translated/label.js:29 templates/js/translated/report.js:118
-#: templates/js/translated/stock.js:1050
+#: templates/js/translated/stock.js:1051
msgid "Select Stock Items"
msgstr ""
@@ -8072,7 +8179,7 @@ msgid "Cancel"
msgstr ""
#: templates/js/translated/modals.js:77 templates/js/translated/modals.js:119
-#: templates/js/translated/modals.js:677 templates/js/translated/modals.js:982
+#: templates/js/translated/modals.js:677 templates/js/translated/modals.js:985
#: templates/modals.html:28 templates/modals.html:51
msgid "Submit"
msgstr ""
@@ -8097,31 +8204,31 @@ msgstr ""
msgid "Loading Data"
msgstr ""
-#: templates/js/translated/modals.js:934
+#: templates/js/translated/modals.js:937
msgid "Invalid response from server"
msgstr ""
-#: templates/js/translated/modals.js:934
+#: templates/js/translated/modals.js:937
msgid "Form data missing from server response"
msgstr ""
-#: templates/js/translated/modals.js:946
+#: templates/js/translated/modals.js:949
msgid "Error posting form data"
msgstr ""
-#: templates/js/translated/modals.js:1043
+#: templates/js/translated/modals.js:1046
msgid "JSON response missing form data"
msgstr ""
-#: templates/js/translated/modals.js:1058
+#: templates/js/translated/modals.js:1061
msgid "Error 400: Bad Request"
msgstr ""
-#: templates/js/translated/modals.js:1059
+#: templates/js/translated/modals.js:1062
msgid "Server returned error code 400"
msgstr ""
-#: templates/js/translated/modals.js:1082
+#: templates/js/translated/modals.js:1085
msgid "Error requesting form data"
msgstr ""
@@ -8141,10 +8248,6 @@ msgstr ""
msgid "Build ID"
msgstr ""
-#: templates/js/translated/model_renderers.js:182
-msgid "Part ID"
-msgstr ""
-
#: templates/js/translated/model_renderers.js:249
#: templates/js/translated/model_renderers.js:270
msgid "Order ID"
@@ -8210,7 +8313,7 @@ msgstr ""
msgid "Quantity to receive"
msgstr ""
-#: templates/js/translated/order.js:520 templates/js/translated/stock.js:2131
+#: templates/js/translated/order.js:520 templates/js/translated/stock.js:2255
msgid "Stock Status"
msgstr ""
@@ -8344,7 +8447,7 @@ msgid "Delete Stock Allocation"
msgstr ""
#: templates/js/translated/order.js:1959 templates/js/translated/order.js:2048
-#: templates/js/translated/stock.js:1436
+#: templates/js/translated/stock.js:1560
msgid "Shipped to customer"
msgstr ""
@@ -8545,12 +8648,12 @@ msgid "No category"
msgstr ""
#: templates/js/translated/part.js:1296
-#: templates/js/translated/table_filters.js:430
+#: templates/js/translated/table_filters.js:425
msgid "Low stock"
msgstr ""
#: templates/js/translated/part.js:1387 templates/js/translated/part.js:1559
-#: templates/js/translated/stock.js:2440
+#: templates/js/translated/stock.js:2564
msgid "Display as list"
msgstr ""
@@ -8558,7 +8661,7 @@ msgstr ""
msgid "Display as grid"
msgstr ""
-#: templates/js/translated/part.js:1578 templates/js/translated/stock.js:2459
+#: templates/js/translated/part.js:1578 templates/js/translated/stock.js:2583
msgid "Display as tree"
msgstr ""
@@ -8566,7 +8669,7 @@ msgstr ""
msgid "Subscribed category"
msgstr ""
-#: templates/js/translated/part.js:1656 templates/js/translated/stock.js:2503
+#: templates/js/translated/part.js:1656 templates/js/translated/stock.js:2627
msgid "Path"
msgstr ""
@@ -8574,11 +8677,12 @@ msgstr ""
msgid "No test templates matching query"
msgstr ""
-#: templates/js/translated/part.js:1751 templates/js/translated/stock.js:1242
+#: templates/js/translated/part.js:1751 templates/js/translated/stock.js:1271
msgid "Edit test result"
msgstr ""
-#: templates/js/translated/part.js:1752 templates/js/translated/stock.js:1243
+#: templates/js/translated/part.js:1752 templates/js/translated/stock.js:1272
+#: templates/js/translated/stock.js:1518
msgid "Delete test result"
msgstr ""
@@ -8687,347 +8791,375 @@ msgstr ""
msgid "Sales Order(s) must be selected before printing report"
msgstr ""
-#: templates/js/translated/stock.js:74
+#: templates/js/translated/stock.js:75
msgid "Serialize Stock Item"
msgstr ""
-#: templates/js/translated/stock.js:92 templates/js/translated/stock.js:181
-msgid "Next available serial number"
-msgstr ""
-
-#: templates/js/translated/stock.js:94 templates/js/translated/stock.js:183
-msgid "Latest serial number"
-msgstr ""
-
-#: templates/js/translated/stock.js:102
+#: templates/js/translated/stock.js:103
msgid "Confirm Stock Serialization"
msgstr ""
-#: templates/js/translated/stock.js:111
+#: templates/js/translated/stock.js:112
msgid "Parent stock location"
msgstr ""
-#: templates/js/translated/stock.js:154
+#: templates/js/translated/stock.js:155
msgid "New Stock Location"
msgstr ""
-#: templates/js/translated/stock.js:194
+#: templates/js/translated/stock.js:195
msgid "This part cannot be serialized"
msgstr ""
-#: templates/js/translated/stock.js:233
+#: templates/js/translated/stock.js:234
msgid "Enter initial quantity for this stock item"
msgstr ""
-#: templates/js/translated/stock.js:239
+#: templates/js/translated/stock.js:240
msgid "Enter serial numbers for new stock (or leave blank)"
msgstr ""
-#: templates/js/translated/stock.js:382
+#: templates/js/translated/stock.js:383
msgid "Created new stock item"
msgstr ""
-#: templates/js/translated/stock.js:395
+#: templates/js/translated/stock.js:396
msgid "Created multiple stock items"
msgstr ""
-#: templates/js/translated/stock.js:420
+#: templates/js/translated/stock.js:421
msgid "Find Serial Number"
msgstr ""
-#: templates/js/translated/stock.js:424 templates/js/translated/stock.js:425
+#: templates/js/translated/stock.js:425 templates/js/translated/stock.js:426
msgid "Enter serial number"
msgstr ""
-#: templates/js/translated/stock.js:441
+#: templates/js/translated/stock.js:442
msgid "Enter a serial number"
msgstr ""
-#: templates/js/translated/stock.js:461
+#: templates/js/translated/stock.js:462
msgid "No matching serial number"
msgstr ""
-#: templates/js/translated/stock.js:470
+#: templates/js/translated/stock.js:471
msgid "More than one matching result found"
msgstr ""
-#: templates/js/translated/stock.js:515
+#: templates/js/translated/stock.js:516
msgid "Export Stock"
msgstr ""
-#: templates/js/translated/stock.js:526
+#: templates/js/translated/stock.js:527
msgid "Include Sublocations"
msgstr ""
-#: templates/js/translated/stock.js:527
+#: templates/js/translated/stock.js:528
msgid "Include stock items in sublocations"
msgstr ""
-#: templates/js/translated/stock.js:636
+#: templates/js/translated/stock.js:637
msgid "Confirm stock assignment"
msgstr ""
-#: templates/js/translated/stock.js:637
+#: templates/js/translated/stock.js:638
msgid "Assign Stock to Customer"
msgstr ""
-#: templates/js/translated/stock.js:714
+#: templates/js/translated/stock.js:715
msgid "Warning: Merge operation cannot be reversed"
msgstr ""
-#: templates/js/translated/stock.js:715
+#: templates/js/translated/stock.js:716
msgid "Some information will be lost when merging stock items"
msgstr ""
-#: templates/js/translated/stock.js:717
+#: templates/js/translated/stock.js:718
msgid "Stock transaction history will be deleted for merged items"
msgstr ""
-#: templates/js/translated/stock.js:718
+#: templates/js/translated/stock.js:719
msgid "Supplier part information will be deleted for merged items"
msgstr ""
-#: templates/js/translated/stock.js:804
+#: templates/js/translated/stock.js:805
msgid "Confirm stock item merge"
msgstr ""
-#: templates/js/translated/stock.js:805
+#: templates/js/translated/stock.js:806
msgid "Merge Stock Items"
msgstr ""
-#: templates/js/translated/stock.js:900
+#: templates/js/translated/stock.js:901
msgid "Transfer Stock"
msgstr ""
-#: templates/js/translated/stock.js:901
+#: templates/js/translated/stock.js:902
msgid "Move"
msgstr ""
-#: templates/js/translated/stock.js:907
+#: templates/js/translated/stock.js:908
msgid "Count Stock"
msgstr ""
-#: templates/js/translated/stock.js:908
+#: templates/js/translated/stock.js:909
msgid "Count"
msgstr ""
-#: templates/js/translated/stock.js:912
+#: templates/js/translated/stock.js:913
msgid "Remove Stock"
msgstr ""
-#: templates/js/translated/stock.js:913
+#: templates/js/translated/stock.js:914
msgid "Take"
msgstr ""
-#: templates/js/translated/stock.js:917
+#: templates/js/translated/stock.js:918
msgid "Add Stock"
msgstr ""
-#: templates/js/translated/stock.js:918 users/models.py:208
+#: templates/js/translated/stock.js:919 users/models.py:213
msgid "Add"
msgstr ""
-#: templates/js/translated/stock.js:922 templates/stock_table.html:58
+#: templates/js/translated/stock.js:923 templates/stock_table.html:58
msgid "Delete Stock"
msgstr ""
-#: templates/js/translated/stock.js:1011
+#: templates/js/translated/stock.js:1012
msgid "Quantity cannot be adjusted for serialized stock"
msgstr ""
-#: templates/js/translated/stock.js:1011
+#: templates/js/translated/stock.js:1012
msgid "Specify stock quantity"
msgstr ""
-#: templates/js/translated/stock.js:1051
+#: templates/js/translated/stock.js:1052
msgid "You must select at least one available stock item"
msgstr ""
-#: templates/js/translated/stock.js:1209
+#: templates/js/translated/stock.js:1210
msgid "PASS"
msgstr ""
-#: templates/js/translated/stock.js:1211
+#: templates/js/translated/stock.js:1212
msgid "FAIL"
msgstr ""
-#: templates/js/translated/stock.js:1216
+#: templates/js/translated/stock.js:1217
msgid "NO RESULT"
msgstr ""
-#: templates/js/translated/stock.js:1238
+#: templates/js/translated/stock.js:1264
+msgid "Pass test"
+msgstr ""
+
+#: templates/js/translated/stock.js:1267
msgid "Add test result"
msgstr ""
-#: templates/js/translated/stock.js:1264
+#: templates/js/translated/stock.js:1293
msgid "No test results found"
msgstr ""
-#: templates/js/translated/stock.js:1321
+#: templates/js/translated/stock.js:1349
msgid "Test Date"
msgstr ""
-#: templates/js/translated/stock.js:1428
+#: templates/js/translated/stock.js:1501
+msgid "Edit Test Result"
+msgstr ""
+
+#: templates/js/translated/stock.js:1523
+msgid "Delete Test Result"
+msgstr ""
+
+#: templates/js/translated/stock.js:1552
msgid "In production"
msgstr ""
-#: templates/js/translated/stock.js:1432
+#: templates/js/translated/stock.js:1556
msgid "Installed in Stock Item"
msgstr ""
-#: templates/js/translated/stock.js:1440
+#: templates/js/translated/stock.js:1564
msgid "Assigned to Sales Order"
msgstr ""
-#: templates/js/translated/stock.js:1446
+#: templates/js/translated/stock.js:1570
msgid "No stock location set"
msgstr ""
-#: templates/js/translated/stock.js:1604
+#: templates/js/translated/stock.js:1728
msgid "Stock item is in production"
msgstr ""
-#: templates/js/translated/stock.js:1609
+#: templates/js/translated/stock.js:1733
msgid "Stock item assigned to sales order"
msgstr ""
-#: templates/js/translated/stock.js:1612
+#: templates/js/translated/stock.js:1736
msgid "Stock item assigned to customer"
msgstr ""
-#: templates/js/translated/stock.js:1616
+#: templates/js/translated/stock.js:1740
msgid "Stock item has expired"
msgstr ""
-#: templates/js/translated/stock.js:1618
+#: templates/js/translated/stock.js:1742
msgid "Stock item will expire soon"
msgstr ""
-#: templates/js/translated/stock.js:1624
+#: templates/js/translated/stock.js:1748
msgid "Serialized stock item has been allocated"
msgstr ""
-#: templates/js/translated/stock.js:1626
+#: templates/js/translated/stock.js:1750
msgid "Stock item has been fully allocated"
msgstr ""
-#: templates/js/translated/stock.js:1628
+#: templates/js/translated/stock.js:1752
msgid "Stock item has been partially allocated"
msgstr ""
-#: templates/js/translated/stock.js:1633
+#: templates/js/translated/stock.js:1757
msgid "Stock item has been installed in another item"
msgstr ""
-#: templates/js/translated/stock.js:1640
+#: templates/js/translated/stock.js:1764
msgid "Stock item has been rejected"
msgstr ""
-#: templates/js/translated/stock.js:1642
+#: templates/js/translated/stock.js:1766
msgid "Stock item is lost"
msgstr ""
-#: templates/js/translated/stock.js:1644
+#: templates/js/translated/stock.js:1768
msgid "Stock item is destroyed"
msgstr ""
-#: templates/js/translated/stock.js:1648
+#: templates/js/translated/stock.js:1772
#: templates/js/translated/table_filters.js:188
msgid "Depleted"
msgstr ""
-#: templates/js/translated/stock.js:1698
+#: templates/js/translated/stock.js:1822
msgid "Stocktake"
msgstr ""
-#: templates/js/translated/stock.js:1771
+#: templates/js/translated/stock.js:1895
msgid "Supplier part not specified"
msgstr ""
-#: templates/js/translated/stock.js:1809
+#: templates/js/translated/stock.js:1933
msgid "No stock items matching query"
msgstr ""
-#: templates/js/translated/stock.js:1830 templates/js/translated/stock.js:1878
+#: templates/js/translated/stock.js:1954 templates/js/translated/stock.js:2002
msgid "items"
msgstr ""
-#: templates/js/translated/stock.js:1918
+#: templates/js/translated/stock.js:2042
msgid "batches"
msgstr ""
-#: templates/js/translated/stock.js:1945
+#: templates/js/translated/stock.js:2069
msgid "locations"
msgstr ""
-#: templates/js/translated/stock.js:1947
+#: templates/js/translated/stock.js:2071
msgid "Undefined location"
msgstr ""
-#: templates/js/translated/stock.js:2146
+#: templates/js/translated/stock.js:2270
msgid "Set Stock Status"
msgstr ""
-#: templates/js/translated/stock.js:2160
+#: templates/js/translated/stock.js:2284
msgid "Select Status Code"
msgstr ""
-#: templates/js/translated/stock.js:2161
+#: templates/js/translated/stock.js:2285
msgid "Status code must be selected"
msgstr ""
-#: templates/js/translated/stock.js:2340
+#: templates/js/translated/stock.js:2464
msgid "Allocated Quantity"
msgstr ""
-#: templates/js/translated/stock.js:2535
+#: templates/js/translated/stock.js:2659
msgid "Invalid date"
msgstr ""
-#: templates/js/translated/stock.js:2557
+#: templates/js/translated/stock.js:2681
msgid "Details"
msgstr ""
-#: templates/js/translated/stock.js:2582
+#: templates/js/translated/stock.js:2706
msgid "Location no longer exists"
msgstr ""
-#: templates/js/translated/stock.js:2601
+#: templates/js/translated/stock.js:2725
msgid "Purchase order no longer exists"
msgstr ""
-#: templates/js/translated/stock.js:2620
+#: templates/js/translated/stock.js:2744
msgid "Customer no longer exists"
msgstr ""
-#: templates/js/translated/stock.js:2638
+#: templates/js/translated/stock.js:2762
msgid "Stock item no longer exists"
msgstr ""
-#: templates/js/translated/stock.js:2661
+#: templates/js/translated/stock.js:2785
msgid "Added"
msgstr ""
-#: templates/js/translated/stock.js:2669
+#: templates/js/translated/stock.js:2793
msgid "Removed"
msgstr ""
-#: templates/js/translated/stock.js:2710
+#: templates/js/translated/stock.js:2834
msgid "Edit tracking entry"
msgstr ""
-#: templates/js/translated/stock.js:2711
+#: templates/js/translated/stock.js:2835
msgid "Delete tracking entry"
msgstr ""
-#: templates/js/translated/stock.js:2762
+#: templates/js/translated/stock.js:2886
msgid "No installed items"
msgstr ""
-#: templates/js/translated/stock.js:2813
+#: templates/js/translated/stock.js:2937
msgid "Uninstall Stock Item"
msgstr ""
+#: templates/js/translated/stock.js:2973
+msgid "Install another stock item into this item"
+msgstr ""
+
+#: templates/js/translated/stock.js:2974
+msgid "Stock items can only be installed if they meet the following criteria"
+msgstr ""
+
+#: templates/js/translated/stock.js:2976
+msgid "The Stock Item links to a Part which is the BOM for this Stock Item"
+msgstr ""
+
+#: templates/js/translated/stock.js:2977
+msgid "The Stock Item is currently available in stock"
+msgstr ""
+
+#: templates/js/translated/stock.js:2978
+msgid "The Stock Item is serialized and does not belong to another item"
+msgstr ""
+
+#: templates/js/translated/stock.js:2991
+msgid "Select part to install"
+msgstr ""
+
#: templates/js/translated/table_filters.js:56
msgid "Trackable Part"
msgstr ""
@@ -9055,12 +9187,12 @@ msgstr ""
#: templates/js/translated/table_filters.js:121
#: templates/js/translated/table_filters.js:122
-#: templates/js/translated/table_filters.js:407
+#: templates/js/translated/table_filters.js:402
msgid "Include subcategories"
msgstr ""
#: templates/js/translated/table_filters.js:126
-#: templates/js/translated/table_filters.js:442
+#: templates/js/translated/table_filters.js:437
msgid "Subscribed"
msgstr ""
@@ -9102,7 +9234,7 @@ msgid "Batch code"
msgstr ""
#: templates/js/translated/table_filters.js:163
-#: templates/js/translated/table_filters.js:379
+#: templates/js/translated/table_filters.js:374
msgid "Active parts"
msgstr ""
@@ -9187,47 +9319,47 @@ msgstr ""
msgid "Show stock which is close to expiring"
msgstr ""
-#: templates/js/translated/table_filters.js:290
+#: templates/js/translated/table_filters.js:285
msgid "Build status"
msgstr ""
-#: templates/js/translated/table_filters.js:303
-#: templates/js/translated/table_filters.js:344
+#: templates/js/translated/table_filters.js:298
+#: templates/js/translated/table_filters.js:339
msgid "Assigned to me"
msgstr ""
-#: templates/js/translated/table_filters.js:320
-#: templates/js/translated/table_filters.js:331
-#: templates/js/translated/table_filters.js:352
+#: templates/js/translated/table_filters.js:315
+#: templates/js/translated/table_filters.js:326
+#: templates/js/translated/table_filters.js:347
msgid "Order status"
msgstr ""
-#: templates/js/translated/table_filters.js:336
-#: templates/js/translated/table_filters.js:357
+#: templates/js/translated/table_filters.js:331
+#: templates/js/translated/table_filters.js:352
msgid "Outstanding"
msgstr ""
-#: templates/js/translated/table_filters.js:408
+#: templates/js/translated/table_filters.js:403
msgid "Include parts in subcategories"
msgstr ""
-#: templates/js/translated/table_filters.js:412
+#: templates/js/translated/table_filters.js:407
msgid "Has IPN"
msgstr ""
-#: templates/js/translated/table_filters.js:413
+#: templates/js/translated/table_filters.js:408
msgid "Part has internal part number"
msgstr ""
-#: templates/js/translated/table_filters.js:418
+#: templates/js/translated/table_filters.js:413
msgid "Show active parts"
msgstr ""
-#: templates/js/translated/table_filters.js:426
+#: templates/js/translated/table_filters.js:421
msgid "Stock available"
msgstr ""
-#: templates/js/translated/table_filters.js:454
+#: templates/js/translated/table_filters.js:449
msgid "Purchasable"
msgstr ""
@@ -9480,35 +9612,35 @@ msgstr ""
msgid "Important dates"
msgstr ""
-#: users/models.py:195
+#: users/models.py:200
msgid "Permission set"
msgstr ""
-#: users/models.py:203
+#: users/models.py:208
msgid "Group"
msgstr ""
-#: users/models.py:206
+#: users/models.py:211
msgid "View"
msgstr ""
-#: users/models.py:206
+#: users/models.py:211
msgid "Permission to view items"
msgstr ""
-#: users/models.py:208
+#: users/models.py:213
msgid "Permission to add items"
msgstr ""
-#: users/models.py:210
+#: users/models.py:215
msgid "Change"
msgstr ""
-#: users/models.py:210
+#: users/models.py:215
msgid "Permissions to edit items"
msgstr ""
-#: users/models.py:212
+#: users/models.py:217
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 0d87fb8280..6a68799a65 100644
--- a/InvenTree/locale/ko/LC_MESSAGES/django.po
+++ b/InvenTree/locale/ko/LC_MESSAGES/django.po
@@ -3,8 +3,8 @@ msgid ""
msgstr ""
"Project-Id-Version: inventree\n"
"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2022-01-29 00:17+0000\n"
-"PO-Revision-Date: 2022-01-29 01:10\n"
+"POT-Creation-Date: 2022-02-18 20:36+0000\n"
+"PO-Revision-Date: 2022-02-18 20:38\n"
"Last-Translator: \n"
"Language-Team: Korean\n"
"Language: ko_KR\n"
@@ -34,11 +34,11 @@ msgstr ""
msgid "Enter date"
msgstr ""
-#: InvenTree/forms.py:126 build/forms.py:48 build/forms.py:69 order/forms.py:24
-#: order/forms.py:35 order/forms.py:46 order/forms.py:57
-#: templates/account/email_confirm.html:20 templates/js/translated/forms.js:595
+#: InvenTree/forms.py:126 order/forms.py:24 order/forms.py:35 order/forms.py:46
+#: order/forms.py:57 templates/account/email_confirm.html:20
+#: templates/js/translated/forms.js:596
msgid "Confirm"
-msgstr ""
+msgstr "확인"
#: InvenTree/forms.py:142
msgid "Confirm delete"
@@ -58,11 +58,11 @@ msgstr "새로운 비밀번호를 입력하세요"
#: InvenTree/forms.py:182
msgid "Confirm password"
-msgstr ""
+msgstr "비밀번호 확인"
#: InvenTree/forms.py:183
msgid "Confirm new password"
-msgstr ""
+msgstr "새 비밀번호 확인"
#: InvenTree/forms.py:215
msgid "Select Category"
@@ -70,7 +70,7 @@ msgstr ""
#: InvenTree/forms.py:236
msgid "Email (again)"
-msgstr ""
+msgstr "이메일 (다시 입력)"
#: InvenTree/forms.py:240
msgid "Email address confirmation"
@@ -86,7 +86,7 @@ msgid "Duplicate serial: {n}"
msgstr ""
#: InvenTree/helpers.py:446 order/models.py:282 order/models.py:425
-#: stock/views.py:1231
+#: stock/views.py:1082
msgid "Invalid quantity provided"
msgstr ""
@@ -119,217 +119,261 @@ msgstr ""
msgid "Number of unique serial number ({s}) must match quantity ({q})"
msgstr ""
-#: InvenTree/models.py:120
+#: InvenTree/models.py:176
msgid "Missing file"
msgstr ""
-#: InvenTree/models.py:121
+#: InvenTree/models.py:177
msgid "Missing external link"
msgstr ""
-#: InvenTree/models.py:132 stock/models.py:1995
+#: InvenTree/models.py:188 stock/models.py:1995
#: templates/js/translated/attachment.js:119
msgid "Attachment"
msgstr "첨부파일"
-#: InvenTree/models.py:133
+#: InvenTree/models.py:189
msgid "Select file to attach"
msgstr "첨부할 파일을 선택하세요"
-#: InvenTree/models.py:139 company/models.py:131 company/models.py:348
-#: company/models.py:564 order/models.py:127 part/models.py:830
+#: InvenTree/models.py:195 company/models.py:131 company/models.py:348
+#: company/models.py:564 order/models.py:127 part/models.py:860
#: report/templates/report/inventree_build_order_base.html:165
#: templates/js/translated/company.js:540
#: templates/js/translated/company.js:829 templates/js/translated/part.js:1324
msgid "Link"
msgstr "링크"
-#: InvenTree/models.py:140 build/models.py:332 part/models.py:831
+#: InvenTree/models.py:196 build/models.py:332 part/models.py:861
#: stock/models.py:529
msgid "Link to external URL"
msgstr "외부 URL로 링크"
-#: InvenTree/models.py:143 templates/js/translated/attachment.js:163
+#: InvenTree/models.py:199 templates/js/translated/attachment.js:163
msgid "Comment"
msgstr ""
-#: InvenTree/models.py:143
+#: InvenTree/models.py:199
msgid "File comment"
msgstr ""
-#: InvenTree/models.py:149 InvenTree/models.py:150 common/models.py:1223
-#: common/models.py:1224 common/models.py:1452 common/models.py:1453
-#: part/models.py:2265 part/models.py:2285
+#: InvenTree/models.py:205 InvenTree/models.py:206 common/models.py:1235
+#: common/models.py:1236 common/models.py:1464 common/models.py:1465
+#: part/models.py:2301 part/models.py:2321
#: report/templates/report/inventree_test_report_base.html:96
-#: templates/js/translated/stock.js:2692
+#: templates/js/translated/stock.js:2816
msgid "User"
msgstr "사용자"
-#: InvenTree/models.py:153
+#: InvenTree/models.py:209
msgid "upload date"
msgstr "업로드 날짜"
-#: InvenTree/models.py:176
+#: InvenTree/models.py:232
msgid "Filename must not be empty"
msgstr "파일명은 비워둘 수 없습니다"
-#: InvenTree/models.py:199
+#: InvenTree/models.py:255
msgid "Invalid attachment directory"
msgstr ""
-#: InvenTree/models.py:209
+#: InvenTree/models.py:265
#, python-brace-format
msgid "Filename contains illegal character '{c}'"
msgstr "파일명에 허용되지 않은 문자 '{c}'가 포함되어 있습니다"
-#: InvenTree/models.py:212
+#: InvenTree/models.py:268
msgid "Filename missing extension"
msgstr ""
-#: InvenTree/models.py:219
+#: InvenTree/models.py:275
msgid "Attachment with this filename already exists"
msgstr "같은 이름의 첨부파일이 이미 존재합니다"
-#: InvenTree/models.py:226
+#: InvenTree/models.py:282
msgid "Error renaming file"
msgstr "파일 이름 바꾸기 오류"
-#: InvenTree/models.py:261
+#: InvenTree/models.py:317
msgid "Invalid choice"
msgstr ""
-#: InvenTree/models.py:277 InvenTree/models.py:278 common/models.py:1438
-#: company/models.py:415 label/models.py:112 part/models.py:774
-#: part/models.py:2449 plugin/models.py:40 report/models.py:181
+#: InvenTree/models.py:333 InvenTree/models.py:334 common/models.py:1450
+#: company/models.py:415 label/models.py:112 part/models.py:804
+#: part/models.py:2485 plugin/models.py:40 report/models.py:181
#: templates/InvenTree/settings/mixins/urls.html:13
#: templates/InvenTree/settings/plugin.html:48
#: templates/InvenTree/settings/plugin.html:125
#: templates/InvenTree/settings/plugin_settings.html:23
-#: templates/InvenTree/settings/settings.html:282
+#: templates/InvenTree/settings/settings.html:319
#: templates/js/translated/company.js:641 templates/js/translated/part.js:567
#: templates/js/translated/part.js:706 templates/js/translated/part.js:1631
-#: templates/js/translated/stock.js:2485
+#: templates/js/translated/stock.js:2609
msgid "Name"
msgstr "이름"
-#: InvenTree/models.py:284 build/models.py:209
+#: InvenTree/models.py:340 build/models.py:209
#: build/templates/build/detail.html:25 company/models.py:354
#: company/models.py:570 company/templates/company/company_base.html:68
#: company/templates/company/manufacturer_part.html:76
#: company/templates/company/supplier_part.html:73 label/models.py:119
-#: order/models.py:125 part/models.py:797 part/templates/part/category.html:74
+#: order/models.py:125 part/models.py:827 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:93
#: templates/InvenTree/settings/plugin_settings.html:33
-#: templates/js/translated/bom.js:339 templates/js/translated/bom.js:552
-#: templates/js/translated/build.js:1682 templates/js/translated/company.js:345
+#: templates/js/translated/bom.js:552 templates/js/translated/bom.js:765
+#: templates/js/translated/build.js:1920 templates/js/translated/company.js:345
#: templates/js/translated/company.js:551
#: templates/js/translated/company.js:840 templates/js/translated/order.js:836
#: templates/js/translated/order.js:1019 templates/js/translated/order.js:1258
#: templates/js/translated/part.js:626 templates/js/translated/part.js:999
#: templates/js/translated/part.js:1084 templates/js/translated/part.js:1254
#: templates/js/translated/part.js:1650 templates/js/translated/part.js:1719
-#: templates/js/translated/stock.js:1577 templates/js/translated/stock.js:2314
-#: templates/js/translated/stock.js:2497 templates/js/translated/stock.js:2542
+#: templates/js/translated/stock.js:1701 templates/js/translated/stock.js:2438
+#: templates/js/translated/stock.js:2621 templates/js/translated/stock.js:2666
msgid "Description"
msgstr "설명"
-#: InvenTree/models.py:285
+#: InvenTree/models.py:341
msgid "Description (optional)"
msgstr "설명 (선택 사항)"
-#: InvenTree/models.py:293
+#: InvenTree/models.py:349
msgid "parent"
msgstr ""
-#: InvenTree/serializers.py:65 part/models.py:2734
+#: InvenTree/serializers.py:65 part/models.py:2803
msgid "Must be a valid number"
-msgstr ""
+msgstr "유효한 숫자여야 합니다"
#: InvenTree/serializers.py:299
msgid "Filename"
msgstr "파일명"
-#: InvenTree/settings.py:661
+#: InvenTree/serializers.py:334
+msgid "Invalid value"
+msgstr ""
+
+#: InvenTree/serializers.py:355
+msgid "Data File"
+msgstr ""
+
+#: InvenTree/serializers.py:356
+msgid "Select data file for upload"
+msgstr ""
+
+#: InvenTree/serializers.py:380
+msgid "Unsupported file type"
+msgstr ""
+
+#: InvenTree/serializers.py:386
+msgid "File is too large"
+msgstr ""
+
+#: InvenTree/serializers.py:407
+msgid "No columns found in file"
+msgstr ""
+
+#: InvenTree/serializers.py:410
+msgid "No data rows found in file"
+msgstr ""
+
+#: InvenTree/serializers.py:533
+msgid "No data rows provided"
+msgstr ""
+
+#: InvenTree/serializers.py:536
+msgid "No data columns supplied"
+msgstr ""
+
+#: InvenTree/serializers.py:623
+msgid "Missing required column"
+msgstr ""
+
+#: InvenTree/serializers.py:632
+msgid "Duplicate column"
+msgstr ""
+
+#: InvenTree/settings.py:655
msgid "German"
msgstr "독일어"
-#: InvenTree/settings.py:662
+#: InvenTree/settings.py:656
msgid "Greek"
msgstr "그리스어"
-#: InvenTree/settings.py:663
+#: InvenTree/settings.py:657
msgid "English"
msgstr "영어"
-#: InvenTree/settings.py:664
+#: InvenTree/settings.py:658
msgid "Spanish"
msgstr "스페인어"
-#: InvenTree/settings.py:665
+#: InvenTree/settings.py:659
msgid "Spanish (Mexican)"
msgstr "스페인어 (멕시코)"
-#: InvenTree/settings.py:666
+#: InvenTree/settings.py:660
msgid "French"
msgstr "프랑스어"
-#: InvenTree/settings.py:667
+#: InvenTree/settings.py:661
msgid "Hebrew"
msgstr "히브리어"
-#: InvenTree/settings.py:668
+#: InvenTree/settings.py:662
msgid "Italian"
msgstr "이탈리아어"
-#: InvenTree/settings.py:669
+#: InvenTree/settings.py:663
msgid "Japanese"
msgstr "일본어"
-#: InvenTree/settings.py:670
+#: InvenTree/settings.py:664
msgid "Korean"
msgstr "한국어"
-#: InvenTree/settings.py:671
+#: InvenTree/settings.py:665
msgid "Dutch"
msgstr "네덜란드어"
-#: InvenTree/settings.py:672
+#: InvenTree/settings.py:666
msgid "Norwegian"
msgstr "노르웨이어"
-#: InvenTree/settings.py:673
+#: InvenTree/settings.py:667
msgid "Polish"
msgstr "폴란드어"
-#: InvenTree/settings.py:674
+#: InvenTree/settings.py:668
msgid "Portugese"
msgstr "포르투갈어"
-#: InvenTree/settings.py:675
+#: InvenTree/settings.py:669
msgid "Russian"
msgstr "러시아어"
-#: InvenTree/settings.py:676
+#: InvenTree/settings.py:670
msgid "Swedish"
msgstr "스웨덴어"
-#: InvenTree/settings.py:677
+#: InvenTree/settings.py:671
msgid "Thai"
msgstr "태국어"
-#: InvenTree/settings.py:678
+#: InvenTree/settings.py:672
msgid "Turkish"
msgstr "터키어"
-#: InvenTree/settings.py:679
+#: InvenTree/settings.py:673
msgid "Vietnamese"
msgstr "베트남어"
-#: InvenTree/settings.py:680
+#: InvenTree/settings.py:674
msgid "Chinese"
msgstr "중국어"
@@ -346,7 +390,7 @@ msgid "InvenTree system health checks failed"
msgstr ""
#: InvenTree/status_codes.py:101 InvenTree/status_codes.py:142
-#: InvenTree/status_codes.py:316 templates/js/translated/table_filters.js:313
+#: InvenTree/status_codes.py:316 templates/js/translated/table_filters.js:308
msgid "Pending"
msgstr ""
@@ -363,7 +407,7 @@ msgstr ""
#: InvenTree/status_codes.py:104 InvenTree/status_codes.py:144
#: InvenTree/status_codes.py:318
msgid "Cancelled"
-msgstr ""
+msgstr "취소됨"
#: InvenTree/status_codes.py:105 InvenTree/status_codes.py:145
#: InvenTree/status_codes.py:187
@@ -390,11 +434,11 @@ msgstr ""
#: InvenTree/status_codes.py:185
msgid "Damaged"
-msgstr ""
+msgstr "파손됨"
#: InvenTree/status_codes.py:186
msgid "Destroyed"
-msgstr ""
+msgstr "파괴됨"
#: InvenTree/status_codes.py:188
msgid "Rejected"
@@ -456,7 +500,7 @@ msgstr ""
msgid "Split child item"
msgstr ""
-#: InvenTree/status_codes.py:294 templates/js/translated/stock.js:2072
+#: InvenTree/status_codes.py:294 templates/js/translated/stock.js:2196
msgid "Merged stock items"
msgstr ""
@@ -484,40 +528,40 @@ msgstr ""
msgid "Production"
msgstr ""
-#: InvenTree/validators.py:23
+#: InvenTree/validators.py:25
msgid "Not a valid currency code"
msgstr ""
-#: InvenTree/validators.py:51
+#: InvenTree/validators.py:53
msgid "Invalid character in part name"
msgstr ""
-#: InvenTree/validators.py:64
+#: InvenTree/validators.py:66
#, python-brace-format
msgid "IPN must match regex pattern {pat}"
msgstr ""
-#: InvenTree/validators.py:78 InvenTree/validators.py:92
-#: InvenTree/validators.py:106
+#: InvenTree/validators.py:80 InvenTree/validators.py:94
+#: InvenTree/validators.py:108
#, python-brace-format
msgid "Reference must match pattern {pattern}"
msgstr ""
-#: InvenTree/validators.py:114
+#: InvenTree/validators.py:116
#, python-brace-format
msgid "Illegal character in name ({x})"
msgstr ""
-#: InvenTree/validators.py:133 InvenTree/validators.py:149
+#: InvenTree/validators.py:137 InvenTree/validators.py:153
msgid "Overage value must not be negative"
msgstr ""
-#: InvenTree/validators.py:151
+#: InvenTree/validators.py:155
msgid "Overage must not exceed 100%"
msgstr ""
-#: InvenTree/validators.py:158
-msgid "Overage must be an integer value or a percentage"
+#: InvenTree/validators.py:162
+msgid "Invalid value for overage"
msgstr ""
#: InvenTree/views.py:538
@@ -530,7 +574,7 @@ msgstr ""
#: InvenTree/views.py:602 templates/InvenTree/settings/user.html:21
msgid "Edit User Information"
-msgstr ""
+msgstr "사용자 정보 수정"
#: InvenTree/views.py:613 templates/InvenTree/settings/user.html:19
msgid "Set Password"
@@ -584,69 +628,11 @@ msgstr ""
msgid "Barcode associated with Stock Item"
msgstr ""
-#: build/forms.py:36 build/models.py:1293
-#: build/templates/build/build_base.html:82
-#: build/templates/build/detail.html:35 common/models.py:1263
-#: company/forms.py:42 company/templates/company/supplier_part.html:251
-#: order/models.py:805 order/models.py:1229 order/serializers.py:816
-#: order/templates/order/order_wizard/match_parts.html:30
-#: order/templates/order/order_wizard/select_parts.html:34 part/forms.py:144
-#: part/forms.py:160 part/forms.py:176 part/models.py:2636
-#: part/templates/part/bom_upload/match_parts.html:31
-#: part/templates/part/detail.html:992 part/templates/part/detail.html:1078
-#: part/templates/part/part_pricing.html:16
-#: report/templates/report/inventree_build_order_base.html:114
-#: report/templates/report/inventree_po_report.html:91
-#: report/templates/report/inventree_so_report.html:91
-#: report/templates/report/inventree_test_report_base.html:81
-#: report/templates/report/inventree_test_report_base.html:139
-#: stock/forms.py:142 stock/serializers.py:293
-#: stock/templates/stock/item_base.html:181
-#: stock/templates/stock/item_base.html:262
-#: stock/templates/stock/item_base.html:270
-#: templates/js/translated/barcode.js:385 templates/js/translated/bom.js:567
-#: templates/js/translated/build.js:295 templates/js/translated/build.js:495
-#: templates/js/translated/build.js:689 templates/js/translated/build.js:699
-#: templates/js/translated/build.js:1075 templates/js/translated/build.js:1422
-#: templates/js/translated/model_renderers.js:99
-#: templates/js/translated/order.js:101 templates/js/translated/order.js:1056
-#: 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:906
-#: templates/js/translated/part.js:1862 templates/js/translated/part.js:1985
-#: templates/js/translated/part.js:2063 templates/js/translated/stock.js:391
-#: templates/js/translated/stock.js:588 templates/js/translated/stock.js:758
-#: templates/js/translated/stock.js:2677 templates/js/translated/stock.js:2779
-msgid "Quantity"
-msgstr "수량"
-
-#: build/forms.py:37
-msgid "Enter quantity for build output"
-msgstr ""
-
-#: build/forms.py:41 order/serializers.py:820 stock/forms.py:81
-#: stock/serializers.py:314 templates/js/translated/stock.js:238
-#: templates/js/translated/stock.js:392
-msgid "Serial Numbers"
-msgstr ""
-
-#: build/forms.py:43
-msgid "Enter serial numbers for build outputs"
-msgstr ""
-
-#: build/forms.py:49
-msgid "Confirm creation of build output"
-msgstr ""
-
-#: build/forms.py:70
-msgid "Confirm deletion of build output"
-msgstr ""
-
-#: build/forms.py:89
+#: build/forms.py:20
msgid "Confirm cancel"
msgstr ""
-#: build/forms.py:89 build/views.py:65
+#: build/forms.py:20 build/views.py:62
msgid "Confirm build cancellation"
msgstr ""
@@ -657,7 +643,7 @@ msgstr ""
#: build/models.py:139 build/templates/build/build_base.html:9
#: build/templates/build/build_base.html:27
#: report/templates/report/inventree_build_order_base.html:106
-#: templates/js/translated/build.js:457 templates/js/translated/stock.js:2290
+#: templates/js/translated/build.js:676 templates/js/translated/stock.js:2414
msgid "Build Order"
msgstr ""
@@ -665,7 +651,7 @@ msgstr ""
#: 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
+#: part/templates/part/part_sidebar.html:21 templates/InvenTree/index.html:221
#: templates/InvenTree/search.html:139
#: templates/InvenTree/settings/sidebar.html:43 users/models.py:44
msgid "Build Orders"
@@ -676,11 +662,11 @@ msgid "Build Order Reference"
msgstr ""
#: build/models.py:201 order/models.py:213 order/models.py:541
-#: order/models.py:812 part/models.py:2645
-#: part/templates/part/bom_upload/match_parts.html:30
+#: order/models.py:812 part/models.py:2714
+#: part/templates/part/upload_bom.html:54
#: report/templates/report/inventree_po_report.html:92
#: report/templates/report/inventree_so_report.html:92
-#: templates/js/translated/bom.js:559 templates/js/translated/build.js:1179
+#: templates/js/translated/bom.js:772 templates/js/translated/build.js:1401
#: templates/js/translated/order.js:1050 templates/js/translated/order.js:2144
msgid "Reference"
msgstr ""
@@ -689,7 +675,7 @@ msgstr ""
msgid "Brief description of the build"
msgstr ""
-#: build/models.py:221 build/templates/build/build_base.html:164
+#: build/models.py:221 build/templates/build/build_base.html:169
#: build/templates/build/detail.html:88
msgid "Parent Build"
msgstr ""
@@ -702,30 +688,31 @@ msgstr ""
#: build/templates/build/detail.html:30 company/models.py:705
#: order/models.py:876 order/models.py:950
#: order/templates/order/order_wizard/select_parts.html:32 part/models.py:359
-#: part/models.py:2211 part/models.py:2227 part/models.py:2246
-#: part/models.py:2263 part/models.py:2365 part/models.py:2487
-#: part/models.py:2620 part/models.py:2927 part/serializers.py:658
-#: part/templates/part/part_app_base.html:8
+#: part/models.py:2247 part/models.py:2263 part/models.py:2282
+#: part/models.py:2299 part/models.py:2401 part/models.py:2523
+#: part/models.py:2613 part/models.py:2689 part/models.py:2996
+#: part/serializers.py:666 part/templates/part/part_app_base.html:8
#: part/templates/part/part_pricing.html:12
#: part/templates/part/set_category.html:13
+#: part/templates/part/upload_bom.html:52
#: 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: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:338
-#: templates/js/translated/bom.js:517 templates/js/translated/build.js:680
-#: templates/js/translated/build.js:1048 templates/js/translated/build.js:1419
-#: templates/js/translated/build.js:1687 templates/js/translated/company.js:492
+#: templates/js/translated/barcode.js:383 templates/js/translated/bom.js:551
+#: templates/js/translated/bom.js:730 templates/js/translated/build.js:902
+#: templates/js/translated/build.js:1270 templates/js/translated/build.js:1655
+#: templates/js/translated/build.js:1925 templates/js/translated/company.js:492
#: templates/js/translated/company.js:749 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:984
#: templates/js/translated/part.js:1065 templates/js/translated/part.js:1232
-#: templates/js/translated/stock.js:562 templates/js/translated/stock.js:727
-#: templates/js/translated/stock.js:934 templates/js/translated/stock.js:1534
-#: templates/js/translated/stock.js:2767
+#: templates/js/translated/stock.js:563 templates/js/translated/stock.js:728
+#: templates/js/translated/stock.js:935 templates/js/translated/stock.js:1658
+#: templates/js/translated/stock.js:2891 templates/js/translated/stock.js:2990
msgid "Part"
msgstr ""
@@ -741,7 +728,7 @@ msgstr ""
msgid "SalesOrder to which this build is allocated"
msgstr ""
-#: build/models.py:249 templates/js/translated/build.js:1407
+#: build/models.py:249 templates/js/translated/build.js:1643
#: templates/js/translated/order.js:1564
msgid "Source Location"
msgstr ""
@@ -782,15 +769,15 @@ msgstr ""
msgid "Build status code"
msgstr ""
-#: build/models.py:287 stock/models.py:533
+#: build/models.py:287 build/serializers.py:218 stock/models.py:533
msgid "Batch Code"
msgstr ""
-#: build/models.py:291
+#: build/models.py:291 build/serializers.py:219
msgid "Batch code for this build output"
msgstr ""
-#: build/models.py:294 order/models.py:129 part/models.py:969
+#: build/models.py:294 order/models.py:129 part/models.py:999
#: part/templates/part/part_base.html:313 templates/js/translated/order.js:1271
msgid "Creation Date"
msgstr ""
@@ -804,7 +791,7 @@ msgid "Target date for build completion. Build will be overdue after this date."
msgstr ""
#: build/models.py:302 order/models.py:255
-#: templates/js/translated/build.js:1758
+#: templates/js/translated/build.js:1996
msgid "Completion Date"
msgstr ""
@@ -812,7 +799,7 @@ msgstr ""
msgid "completed by"
msgstr ""
-#: build/models.py:316 templates/js/translated/build.js:1729
+#: build/models.py:316 templates/js/translated/build.js:1967
msgid "Issued by"
msgstr ""
@@ -820,12 +807,12 @@ msgstr ""
msgid "User who issued this build order"
msgstr ""
-#: build/models.py:325 build/templates/build/build_base.html:185
+#: build/models.py:325 build/templates/build/build_base.html:190
#: build/templates/build/detail.html:116 order/models.py:143
#: order/templates/order/order_base.html:170
-#: order/templates/order/sales_order_base.html:182 part/models.py:973
+#: order/templates/order/sales_order_base.html:182 part/models.py:1003
#: report/templates/report/inventree_build_order_base.html:159
-#: templates/js/translated/build.js:1741 templates/js/translated/order.js:864
+#: templates/js/translated/build.js:1979 templates/js/translated/order.js:864
msgid "Responsible"
msgstr ""
@@ -837,26 +824,26 @@ msgstr ""
#: company/templates/company/manufacturer_part.html:102
#: company/templates/company/supplier_part.html:126
#: part/templates/part/part_base.html:354 stock/models.py:527
-#: stock/templates/stock/item_base.html:373
+#: stock/templates/stock/item_base.html:375
msgid "External Link"
msgstr "외부 링크"
-#: build/models.py:336 build/serializers.py:201
+#: build/models.py:336 build/serializers.py:380
#: build/templates/build/sidebar.html:21 company/models.py:142
#: company/models.py:577 company/templates/company/sidebar.html:25
#: order/models.py:147 order/models.py:814 order/models.py:1071
#: order/templates/order/po_sidebar.html:11
-#: order/templates/order/so_sidebar.html:17 part/models.py:958
-#: part/templates/part/detail.html:137 part/templates/part/part_sidebar.html:54
+#: order/templates/order/so_sidebar.html:17 part/models.py:988
+#: part/templates/part/detail.html:140 part/templates/part/part_sidebar.html:57
#: report/templates/report/inventree_build_order_base.html:173
-#: stock/forms.py:140 stock/forms.py:190 stock/forms.py:224 stock/models.py:599
+#: stock/forms.py:137 stock/forms.py:171 stock/models.py:599
#: stock/models.py:1895 stock/models.py:2001 stock/serializers.py:332
-#: stock/serializers.py:640 stock/serializers.py:738 stock/serializers.py:870
+#: stock/serializers.py:697 stock/serializers.py:795 stock/serializers.py:927
#: stock/templates/stock/stock_sidebar.html:25
-#: templates/js/translated/barcode.js:58 templates/js/translated/bom.js:723
+#: templates/js/translated/barcode.js:58 templates/js/translated/bom.js:936
#: templates/js/translated/company.js:845 templates/js/translated/order.js:1149
#: templates/js/translated/order.js:1445 templates/js/translated/order.js:2280
-#: templates/js/translated/stock.js:1317 templates/js/translated/stock.js:1803
+#: templates/js/translated/stock.js:1345 templates/js/translated/stock.js:1927
msgid "Notes"
msgstr ""
@@ -864,208 +851,284 @@ msgstr ""
msgid "Extra build notes"
msgstr ""
-#: build/models.py:717
+#: build/models.py:756
msgid "No build output specified"
msgstr ""
-#: build/models.py:720
+#: build/models.py:759
msgid "Build output is already completed"
msgstr ""
-#: build/models.py:723
+#: build/models.py:762
msgid "Build output does not match Build Order"
msgstr ""
-#: build/models.py:1115
+#: build/models.py:1154
msgid "Build item must specify a build output, as master part is marked as trackable"
msgstr ""
-#: build/models.py:1124
+#: build/models.py:1163
#, python-brace-format
msgid "Allocated quantity ({q}) must not execed available stock quantity ({a})"
msgstr ""
-#: build/models.py:1134
+#: build/models.py:1173
msgid "Stock item is over-allocated"
msgstr ""
-#: build/models.py:1140 order/models.py:1189
+#: build/models.py:1179 order/models.py:1189
msgid "Allocation quantity must be greater than zero"
msgstr ""
-#: build/models.py:1146
+#: build/models.py:1185
msgid "Quantity must be 1 for serialized stock"
msgstr ""
-#: build/models.py:1203
+#: build/models.py:1242
msgid "Selected stock item not found in BOM"
msgstr ""
-#: build/models.py:1263 stock/templates/stock/item_base.html:345
-#: templates/InvenTree/search.html:137 templates/js/translated/build.js:1660
+#: build/models.py:1302 stock/templates/stock/item_base.html:347
+#: templates/InvenTree/search.html:137 templates/js/translated/build.js:1898
#: templates/navbar.html:35
msgid "Build"
msgstr ""
-#: build/models.py:1264
+#: build/models.py:1303
msgid "Build to allocate parts"
msgstr ""
-#: build/models.py:1280 build/serializers.py:388 order/serializers.py:696
-#: order/serializers.py:714 stock/serializers.py:578 stock/serializers.py:696
-#: stock/templates/stock/item_base.html:9
+#: build/models.py:1319 build/serializers.py:570 order/serializers.py:696
+#: order/serializers.py:714 stock/serializers.py:404 stock/serializers.py:635
+#: stock/serializers.py:753 stock/templates/stock/item_base.html:9
#: stock/templates/stock/item_base.html:23
-#: stock/templates/stock/item_base.html:367
-#: templates/js/translated/build.js:468 templates/js/translated/build.js:473
-#: templates/js/translated/build.js:1421 templates/js/translated/build.js:1803
+#: stock/templates/stock/item_base.html:369
+#: templates/js/translated/build.js:687 templates/js/translated/build.js:692
+#: templates/js/translated/build.js:1657 templates/js/translated/build.js:2041
#: 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:563 templates/js/translated/stock.js:728
-#: templates/js/translated/stock.js:2628
+#: templates/js/translated/stock.js:564 templates/js/translated/stock.js:729
+#: templates/js/translated/stock.js:2752
msgid "Stock Item"
msgstr ""
-#: build/models.py:1281
+#: build/models.py:1320
msgid "Source stock item"
msgstr ""
-#: build/models.py:1294
+#: build/models.py:1332 build/serializers.py:188
+#: build/templates/build/build_base.html:82
+#: build/templates/build/detail.html:35 common/models.py:1275
+#: company/forms.py:42 company/templates/company/supplier_part.html:251
+#: order/models.py:805 order/models.py:1229 order/serializers.py:816
+#: order/templates/order/order_wizard/match_parts.html:30
+#: order/templates/order/order_wizard/select_parts.html:34 part/forms.py:144
+#: part/forms.py:160 part/forms.py:176 part/models.py:2705
+#: part/templates/part/detail.html:995 part/templates/part/detail.html:1081
+#: part/templates/part/part_pricing.html:16
+#: part/templates/part/upload_bom.html:53
+#: report/templates/report/inventree_build_order_base.html:114
+#: report/templates/report/inventree_po_report.html:91
+#: report/templates/report/inventree_so_report.html:91
+#: report/templates/report/inventree_test_report_base.html:81
+#: report/templates/report/inventree_test_report_base.html:139
+#: stock/forms.py:139 stock/serializers.py:293
+#: stock/templates/stock/item_base.html:183
+#: stock/templates/stock/item_base.html:264
+#: stock/templates/stock/item_base.html:272
+#: templates/js/translated/barcode.js:385 templates/js/translated/bom.js:780
+#: templates/js/translated/build.js:375 templates/js/translated/build.js:523
+#: templates/js/translated/build.js:714 templates/js/translated/build.js:911
+#: templates/js/translated/build.js:921 templates/js/translated/build.js:1297
+#: templates/js/translated/build.js:1658
+#: templates/js/translated/model_renderers.js:99
+#: templates/js/translated/order.js:101 templates/js/translated/order.js:1056
+#: 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:906
+#: templates/js/translated/part.js:1862 templates/js/translated/part.js:1985
+#: templates/js/translated/part.js:2063 templates/js/translated/stock.js:392
+#: templates/js/translated/stock.js:589 templates/js/translated/stock.js:759
+#: templates/js/translated/stock.js:2801 templates/js/translated/stock.js:2903
+msgid "Quantity"
+msgstr "수량"
+
+#: build/models.py:1333
msgid "Stock quantity to allocate to build"
msgstr ""
-#: build/models.py:1302
+#: build/models.py:1341
msgid "Install into"
msgstr ""
-#: build/models.py:1303
+#: build/models.py:1342
msgid "Destination stock item"
msgstr ""
-#: build/serializers.py:137 build/serializers.py:417
+#: build/serializers.py:138 build/serializers.py:599
msgid "Build Output"
msgstr ""
-#: build/serializers.py:146
+#: build/serializers.py:150
msgid "Build output does not match the parent build"
msgstr ""
-#: build/serializers.py:150
+#: build/serializers.py:154
msgid "Output part does not match BuildOrder part"
msgstr ""
-#: build/serializers.py:154
+#: build/serializers.py:158
msgid "This build output has already been completed"
msgstr ""
-#: build/serializers.py:158
+#: build/serializers.py:164
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:731
-#: stock/serializers.py:972 stock/templates/stock/item_base.html:313
-#: templates/js/translated/barcode.js:384
-#: templates/js/translated/barcode.js:557 templates/js/translated/build.js:480
-#: templates/js/translated/build.js:1087 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:179 templates/js/translated/stock.js:564
-#: templates/js/translated/stock.js:729 templates/js/translated/stock.js:936
-#: templates/js/translated/stock.js:1684 templates/js/translated/stock.js:2569
-msgid "Location"
-msgstr "위치"
-
-#: build/serializers.py:191
-msgid "Location for completed build outputs"
+#: build/serializers.py:189
+msgid "Enter quantity for build output"
msgstr ""
-#: build/serializers.py:197 build/templates/build/build_base.html:137
-#: build/templates/build/detail.html:63 order/models.py:557
-#: order/serializers.py:247 stock/templates/stock/item_base.html:187
-#: templates/js/translated/barcode.js:140 templates/js/translated/build.js:1716
-#: templates/js/translated/order.js:591 templates/js/translated/order.js:840
-#: templates/js/translated/order.js:1263 templates/js/translated/stock.js:1659
-#: templates/js/translated/stock.js:2646 templates/js/translated/stock.js:2795
-msgid "Status"
-msgstr "상태"
+#: build/serializers.py:201 build/serializers.py:590 order/models.py:280
+#: order/serializers.py:240 part/serializers.py:471 part/serializers.py:827
+#: stock/models.py:367 stock/models.py:1105 stock/serializers.py:305
+msgid "Quantity must be greater than zero"
+msgstr "수량 값은 0보다 커야 합니다"
-#: build/serializers.py:213
+#: build/serializers.py:208
+msgid "Integer quantity required for trackable parts"
+msgstr ""
+
+#: build/serializers.py:211
+msgid "Integer quantity required, as the bill of materials contains trackable parts"
+msgstr ""
+
+#: build/serializers.py:225 order/serializers.py:820 stock/forms.py:78
+#: stock/serializers.py:314 templates/js/translated/stock.js:239
+#: templates/js/translated/stock.js:393
+msgid "Serial Numbers"
+msgstr "일련번호"
+
+#: build/serializers.py:226
+msgid "Enter serial numbers for build outputs"
+msgstr ""
+
+#: build/serializers.py:239
+msgid "Auto Allocate Serial Numbers"
+msgstr ""
+
+#: build/serializers.py:240
+msgid "Automatically allocate required items with matching serial numbers"
+msgstr ""
+
+#: build/serializers.py:274 stock/api.py:551
+msgid "The following serial numbers already exist"
+msgstr ""
+
+#: build/serializers.py:327 build/serializers.py:392
msgid "A list of build outputs must be provided"
msgstr ""
-#: build/serializers.py:249
+#: build/serializers.py:369 order/serializers.py:226 order/serializers.py:294
+#: stock/forms.py:169 stock/serializers.py:325 stock/serializers.py:788
+#: stock/serializers.py:1029 stock/templates/stock/item_base.html:315
+#: templates/js/translated/barcode.js:384
+#: templates/js/translated/barcode.js:557 templates/js/translated/build.js:699
+#: templates/js/translated/build.js:1309 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:179 templates/js/translated/stock.js:565
+#: templates/js/translated/stock.js:730 templates/js/translated/stock.js:937
+#: templates/js/translated/stock.js:1808 templates/js/translated/stock.js:2693
+msgid "Location"
+msgstr "위치"
+
+#: build/serializers.py:370
+msgid "Location for completed build outputs"
+msgstr ""
+
+#: build/serializers.py:376 build/templates/build/build_base.html:142
+#: build/templates/build/detail.html:63 order/models.py:557
+#: order/serializers.py:247 stock/templates/stock/item_base.html:189
+#: templates/js/translated/barcode.js:140 templates/js/translated/build.js:1954
+#: templates/js/translated/order.js:591 templates/js/translated/order.js:840
+#: templates/js/translated/order.js:1263 templates/js/translated/stock.js:1783
+#: templates/js/translated/stock.js:2770 templates/js/translated/stock.js:2919
+msgid "Status"
+msgstr "상태"
+
+#: build/serializers.py:428
msgid "Accept Unallocated"
msgstr ""
-#: build/serializers.py:250
+#: build/serializers.py:429
msgid "Accept that stock items have not been fully allocated to this build order"
msgstr ""
-#: build/serializers.py:260 templates/js/translated/build.js:149
+#: build/serializers.py:439 templates/js/translated/build.js:150
msgid "Required stock has not been fully allocated"
msgstr ""
-#: build/serializers.py:265
+#: build/serializers.py:444
msgid "Accept Incomplete"
msgstr ""
-#: build/serializers.py:266
+#: build/serializers.py:445
msgid "Accept that the required number of build outputs have not been completed"
msgstr ""
-#: build/serializers.py:276 templates/js/translated/build.js:153
+#: build/serializers.py:455 templates/js/translated/build.js:154
msgid "Required build quantity has not been completed"
msgstr ""
-#: build/serializers.py:285
+#: build/serializers.py:464
msgid "Build order has incomplete outputs"
msgstr ""
-#: build/serializers.py:313 build/serializers.py:362 part/models.py:2760
-#: part/models.py:2919
+#: build/serializers.py:467 build/templates/build/build_base.html:95
+msgid "No build outputs have been created for this build order"
+msgstr ""
+
+#: build/serializers.py:495 build/serializers.py:544 part/models.py:2829
+#: part/models.py:2988
msgid "BOM Item"
msgstr ""
-#: build/serializers.py:323
+#: build/serializers.py:505
msgid "Build output"
msgstr ""
-#: build/serializers.py:332
+#: build/serializers.py:514
msgid "Build output must point to the same build"
msgstr ""
-#: build/serializers.py:379
+#: build/serializers.py:561
msgid "bom_item.part must point to the same part as the build order"
msgstr ""
-#: build/serializers.py:394 stock/serializers.py:585
+#: build/serializers.py:576 stock/serializers.py:642
msgid "Item must be in stock"
msgstr ""
-#: build/serializers.py:408 order/models.py:280 order/serializers.py:240
-#: stock/models.py:367 stock/models.py:1105 stock/serializers.py:305
-msgid "Quantity must be greater than zero"
-msgstr ""
-
-#: build/serializers.py:450 order/serializers.py:747
+#: build/serializers.py:632 order/serializers.py:747
#, python-brace-format
msgid "Available quantity ({q}) exceeded"
msgstr ""
-#: build/serializers.py:456
+#: build/serializers.py:638
msgid "Build output must be specified for allocation of tracked parts"
msgstr ""
-#: build/serializers.py:463
+#: build/serializers.py:645
msgid "Build output cannot be specified for allocation of untracked parts"
msgstr ""
-#: build/serializers.py:491 order/serializers.py:990
+#: build/serializers.py:673 order/serializers.py:990
msgid "Allocation items must be provided"
msgstr ""
-#: build/tasks.py:92
+#: build/tasks.py:98
msgid "Stock required for build order"
msgstr ""
@@ -1088,7 +1151,7 @@ msgid "Edit Build"
msgstr ""
#: build/templates/build/build_base.html:56
-#: build/templates/build/build_base.html:215 build/views.py:56
+#: build/templates/build/build_base.html:220 build/views.py:53
msgid "Cancel Build"
msgstr ""
@@ -1105,110 +1168,90 @@ msgstr ""
msgid "Build Description"
msgstr ""
-#: build/templates/build/build_base.html:96
+#: build/templates/build/build_base.html:101
#, python-format
msgid "This Build Order is allocated to Sales Order %(link)s"
msgstr ""
-#: build/templates/build/build_base.html:103
+#: build/templates/build/build_base.html:108
#, python-format
msgid "This Build Order is a child of Build Order %(link)s"
msgstr ""
-#: build/templates/build/build_base.html:110
+#: build/templates/build/build_base.html:115
msgid "Build Order is ready to mark as completed"
msgstr ""
-#: build/templates/build/build_base.html:115
+#: build/templates/build/build_base.html:120
msgid "Build Order cannot be completed as outstanding outputs remain"
msgstr ""
-#: build/templates/build/build_base.html:120
+#: build/templates/build/build_base.html:125
msgid "Required build quantity has not yet been completed"
msgstr ""
-#: build/templates/build/build_base.html:125
+#: build/templates/build/build_base.html:130
msgid "Stock has not been fully allocated to this Build Order"
msgstr ""
-#: build/templates/build/build_base.html:146
+#: build/templates/build/build_base.html:151
#: build/templates/build/detail.html:132
#: order/templates/order/order_base.html:156
#: order/templates/order/sales_order_base.html:163
#: report/templates/report/inventree_build_order_base.html:126
-#: templates/js/translated/build.js:1753 templates/js/translated/order.js:854
+#: templates/js/translated/build.js:1991 templates/js/translated/order.js:854
#: templates/js/translated/order.js:1276
msgid "Target Date"
msgstr ""
-#: build/templates/build/build_base.html:151
+#: build/templates/build/build_base.html:156
#, python-format
msgid "This build was due on %(target)s"
msgstr ""
-#: build/templates/build/build_base.html:151
-#: build/templates/build/build_base.html:196
+#: build/templates/build/build_base.html:156
+#: build/templates/build/build_base.html:201
#: order/templates/order/order_base.html:98
#: order/templates/order/sales_order_base.html:93
-#: templates/js/translated/table_filters.js:299
-#: templates/js/translated/table_filters.js:340
-#: templates/js/translated/table_filters.js:361
+#: templates/js/translated/table_filters.js:294
+#: templates/js/translated/table_filters.js:335
+#: templates/js/translated/table_filters.js:356
msgid "Overdue"
msgstr ""
-#: build/templates/build/build_base.html:158
+#: build/templates/build/build_base.html:163
#: build/templates/build/detail.html:68 build/templates/build/detail.html:143
#: order/templates/order/sales_order_base.html:170
-#: templates/js/translated/build.js:1702
-#: templates/js/translated/table_filters.js:370
+#: templates/js/translated/build.js:1940
+#: templates/js/translated/table_filters.js:365
msgid "Completed"
msgstr ""
-#: build/templates/build/build_base.html:171
+#: build/templates/build/build_base.html:176
#: build/templates/build/detail.html:95 order/models.py:947
#: order/models.py:1043 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:307
-#: templates/js/translated/order.js:1218 templates/js/translated/stock.js:2304
+#: stock/templates/stock/item_base.html:309
+#: templates/js/translated/order.js:1218 templates/js/translated/stock.js:2428
msgid "Sales Order"
msgstr ""
-#: build/templates/build/build_base.html:178
+#: build/templates/build/build_base.html:183
#: build/templates/build/detail.html:109
#: report/templates/report/inventree_build_order_base.html:153
msgid "Issued By"
msgstr ""
-#: build/templates/build/build_base.html:223
+#: build/templates/build/build_base.html:228
msgid "Incomplete Outputs"
msgstr ""
-#: build/templates/build/build_base.html:224
+#: build/templates/build/build_base.html:229
msgid "Build Order cannot be completed as incomplete build outputs remain"
msgstr ""
-#: build/templates/build/build_output_create.html:7
-msgid "The Bill of Materials contains trackable parts"
-msgstr ""
-
-#: build/templates/build/build_output_create.html:8
-msgid "Build outputs must be generated individually."
-msgstr ""
-
-#: build/templates/build/build_output_create.html:9
-msgid "Multiple build outputs will be created based on the quantity specified."
-msgstr ""
-
-#: build/templates/build/build_output_create.html:15
-msgid "Trackable parts can have serial numbers specified"
-msgstr ""
-
-#: build/templates/build/build_output_create.html:16
-msgid "Enter serial numbers to generate multiple single build outputs"
-msgstr ""
-
#: build/templates/build/cancel.html:5
msgid "Are you sure you wish to cancel this build?"
msgstr ""
@@ -1225,7 +1268,7 @@ msgstr ""
msgid "Stock can be taken from any available location."
msgstr ""
-#: build/templates/build/detail.html:50 order/models.py:898 stock/forms.py:136
+#: build/templates/build/detail.html:50 order/models.py:898 stock/forms.py:133
#: templates/js/translated/order.js:592 templates/js/translated/order.js:1138
msgid "Destination"
msgstr ""
@@ -1234,13 +1277,13 @@ msgstr ""
msgid "Destination location not specified"
msgstr ""
-#: build/templates/build/detail.html:74 templates/js/translated/build.js:707
+#: build/templates/build/detail.html:74 templates/js/translated/build.js:929
msgid "Allocated Parts"
msgstr ""
#: build/templates/build/detail.html:81
-#: stock/templates/stock/item_base.html:331
-#: templates/js/translated/stock.js:1673 templates/js/translated/stock.js:2802
+#: stock/templates/stock/item_base.html:333
+#: templates/js/translated/stock.js:1797 templates/js/translated/stock.js:2926
#: templates/js/translated/table_filters.js:151
#: templates/js/translated/table_filters.js:238
msgid "Batch"
@@ -1249,7 +1292,7 @@ msgstr ""
#: build/templates/build/detail.html:127
#: order/templates/order/order_base.html:143
#: order/templates/order/sales_order_base.html:157
-#: templates/js/translated/build.js:1724
+#: templates/js/translated/build.js:1962
msgid "Created"
msgstr ""
@@ -1269,7 +1312,7 @@ msgstr ""
msgid "Allocate Stock to Build"
msgstr ""
-#: build/templates/build/detail.html:177 templates/js/translated/build.js:1262
+#: build/templates/build/detail.html:177 templates/js/translated/build.js:1484
msgid "Unallocate stock"
msgstr ""
@@ -1329,52 +1372,60 @@ msgid "Output Actions"
msgstr ""
#: build/templates/build/detail.html:250
-msgid "Complete selected items"
+msgid "Complete selected build outputs"
msgstr ""
#: build/templates/build/detail.html:251
msgid "Complete outputs"
msgstr ""
-#: build/templates/build/detail.html:266
+#: build/templates/build/detail.html:253
+msgid "Delete selected build outputs"
+msgstr ""
+
+#: build/templates/build/detail.html:254
+msgid "Delete outputs"
+msgstr ""
+
+#: build/templates/build/detail.html:270
msgid "Completed Build Outputs"
msgstr ""
-#: build/templates/build/detail.html:278 build/templates/build/sidebar.html:19
+#: build/templates/build/detail.html:282 build/templates/build/sidebar.html:19
#: order/templates/order/po_sidebar.html:9
#: order/templates/order/purchase_order_detail.html:60
#: order/templates/order/sales_order_detail.html:107
-#: order/templates/order/so_sidebar.html:15 part/templates/part/detail.html:213
-#: part/templates/part/part_sidebar.html:52 stock/templates/stock/item.html:112
+#: order/templates/order/so_sidebar.html:15 part/templates/part/detail.html:216
+#: part/templates/part/part_sidebar.html:55 stock/templates/stock/item.html:112
#: stock/templates/stock/stock_sidebar.html:23
msgid "Attachments"
msgstr ""
-#: build/templates/build/detail.html:294
+#: build/templates/build/detail.html:298
msgid "Build Notes"
msgstr ""
-#: build/templates/build/detail.html:298 build/templates/build/detail.html:453
+#: build/templates/build/detail.html:302 build/templates/build/detail.html:478
#: company/templates/company/detail.html:188
#: company/templates/company/detail.html:215
#: order/templates/order/purchase_order_detail.html:80
#: order/templates/order/purchase_order_detail.html:108
#: order/templates/order/sales_order_detail.html:127
#: order/templates/order/sales_order_detail.html:186
-#: part/templates/part/detail.html:141 stock/templates/stock/item.html:132
-#: stock/templates/stock/item.html:235
+#: part/templates/part/detail.html:144 stock/templates/stock/item.html:132
+#: stock/templates/stock/item.html:230
msgid "Edit Notes"
msgstr ""
-#: build/templates/build/detail.html:477
+#: build/templates/build/detail.html:502
msgid "Allocation Complete"
msgstr ""
-#: build/templates/build/detail.html:478
+#: build/templates/build/detail.html:503
msgid "All untracked stock items have been allocated"
msgstr ""
-#: build/templates/build/index.html:18 part/templates/part/detail.html:320
+#: build/templates/build/index.html:18 part/templates/part/detail.html:323
msgid "New Build Order"
msgstr ""
@@ -1406,51 +1457,11 @@ msgstr ""
msgid "Completed Items"
msgstr ""
-#: build/views.py:76
+#: build/views.py:73
msgid "Build was cancelled"
msgstr ""
-#: build/views.py:88
-msgid "Create Build Output"
-msgstr ""
-
-#: build/views.py:106
-msgid "Maximum output quantity is "
-msgstr ""
-
-#: build/views.py:122 stock/serializers.py:363 stock/views.py:1257
-msgid "Serial numbers already exist"
-msgstr ""
-
-#: build/views.py:131
-msgid "Serial numbers required for trackable build output"
-msgstr ""
-
-#: build/views.py:197
-msgid "Delete Build Output"
-msgstr ""
-
-#: build/views.py:218
-msgid "Confirm unallocation of build stock"
-msgstr ""
-
-#: build/views.py:219 stock/views.py:352
-msgid "Check the confirmation box"
-msgstr ""
-
-#: build/views.py:231
-msgid "Build output does not match build"
-msgstr ""
-
-#: build/views.py:233
-msgid "Build output must be specified"
-msgstr ""
-
-#: build/views.py:245
-msgid "Build output deleted"
-msgstr ""
-
-#: build/views.py:286
+#: build/views.py:114
msgid "Delete Build Order"
msgstr ""
@@ -1484,12 +1495,12 @@ msgstr "업로드할 파일을 선택하세요"
#: common/forms.py:50
msgid "{name.title()} File"
-msgstr ""
+msgstr "{name.title()} 파일"
#: common/forms.py:51
#, python-brace-format
msgid "Select {name} file to upload"
-msgstr ""
+msgstr "업로드할 {name} 파일을 선택하세요"
#: common/models.py:352
msgid "Settings key (must be unique - case insensitive)"
@@ -1639,9 +1650,9 @@ msgstr ""
msgid "Copy category parameter templates when creating a part"
msgstr ""
-#: common/models.py:705 part/models.py:2489 report/models.py:187
+#: common/models.py:705 part/models.py:2525 report/models.py:187
#: templates/js/translated/table_filters.js:38
-#: templates/js/translated/table_filters.js:422
+#: templates/js/translated/table_filters.js:417
msgid "Template"
msgstr ""
@@ -1649,9 +1660,9 @@ msgstr ""
msgid "Parts are templates by default"
msgstr ""
-#: common/models.py:712 part/models.py:921 templates/js/translated/bom.js:1082
+#: common/models.py:712 part/models.py:951 templates/js/translated/bom.js:1300
#: templates/js/translated/table_filters.js:168
-#: templates/js/translated/table_filters.js:434
+#: templates/js/translated/table_filters.js:429
msgid "Assembly"
msgstr ""
@@ -1659,8 +1670,8 @@ msgstr ""
msgid "Parts can be assembled from other components by default"
msgstr ""
-#: common/models.py:719 part/models.py:927
-#: templates/js/translated/table_filters.js:438
+#: common/models.py:719 part/models.py:957
+#: templates/js/translated/table_filters.js:433
msgid "Component"
msgstr ""
@@ -1668,7 +1679,7 @@ msgstr ""
msgid "Parts can be used as sub-components by default"
msgstr ""
-#: common/models.py:726 part/models.py:938
+#: common/models.py:726 part/models.py:968
msgid "Purchaseable"
msgstr "구입 가능"
@@ -1676,8 +1687,8 @@ msgstr "구입 가능"
msgid "Parts are purchaseable by default"
msgstr ""
-#: common/models.py:733 part/models.py:943
-#: templates/js/translated/table_filters.js:446
+#: common/models.py:733 part/models.py:973
+#: templates/js/translated/table_filters.js:441
msgid "Salable"
msgstr "판매 가능"
@@ -1685,10 +1696,10 @@ msgstr "판매 가능"
msgid "Parts are salable by default"
msgstr ""
-#: common/models.py:740 part/models.py:933
+#: common/models.py:740 part/models.py:963
#: templates/js/translated/table_filters.js:46
#: templates/js/translated/table_filters.js:100
-#: templates/js/translated/table_filters.js:450
+#: templates/js/translated/table_filters.js:445
msgid "Trackable"
msgstr ""
@@ -1696,7 +1707,7 @@ msgstr ""
msgid "Parts are trackable by default"
msgstr ""
-#: common/models.py:747 part/models.py:953
+#: common/models.py:747 part/models.py:983
#: part/templates/part/part_base.html:147
#: templates/js/translated/table_filters.js:42
msgid "Virtual"
@@ -1730,589 +1741,595 @@ msgstr ""
msgid "Include pricing information in BOM tables"
msgstr ""
-#: common/models.py:780
+#: common/models.py:785
+msgid "Show Price History"
+msgstr ""
+
+#: common/models.py:786
+msgid "Display historical pricing for Part"
+msgstr ""
+
+#: common/models.py:792
msgid "Show related parts"
msgstr ""
-#: common/models.py:781
+#: common/models.py:793
msgid "Display related parts for a part"
msgstr ""
-#: common/models.py:787
+#: common/models.py:799
msgid "Create initial stock"
msgstr ""
-#: common/models.py:788
+#: common/models.py:800
msgid "Create initial stock on part creation"
msgstr ""
-#: common/models.py:794
+#: common/models.py:806
msgid "Internal Prices"
msgstr ""
-#: common/models.py:795
+#: common/models.py:807
msgid "Enable internal prices for parts"
msgstr ""
-#: common/models.py:801
+#: common/models.py:813
msgid "Internal Price as BOM-Price"
msgstr ""
-#: common/models.py:802
+#: common/models.py:814
msgid "Use the internal price (if set) in BOM-price calculations"
msgstr ""
-#: common/models.py:808
+#: common/models.py:820
msgid "Part Name Display Format"
msgstr ""
-#: common/models.py:809
+#: common/models.py:821
msgid "Format to display the part name"
msgstr ""
-#: common/models.py:816
+#: common/models.py:828
msgid "Enable Reports"
msgstr ""
-#: common/models.py:817
+#: common/models.py:829
msgid "Enable generation of reports"
msgstr ""
-#: common/models.py:823 templates/stats.html:25
+#: common/models.py:835 templates/stats.html:25
msgid "Debug Mode"
msgstr "디버그 모드"
-#: common/models.py:824
+#: common/models.py:836
msgid "Generate reports in debug mode (HTML output)"
msgstr ""
-#: common/models.py:830
+#: common/models.py:842
msgid "Page Size"
msgstr "페이지 크기"
-#: common/models.py:831
+#: common/models.py:843
msgid "Default page size for PDF reports"
msgstr "PDF 보고서 기본 페이지 크기"
-#: common/models.py:841
+#: common/models.py:853
msgid "Test Reports"
msgstr ""
-#: common/models.py:842
+#: common/models.py:854
msgid "Enable generation of test reports"
msgstr ""
-#: common/models.py:848
+#: common/models.py:860
msgid "Stock Expiry"
msgstr ""
-#: common/models.py:849
+#: common/models.py:861
msgid "Enable stock expiry functionality"
msgstr ""
-#: common/models.py:855
+#: common/models.py:867
msgid "Sell Expired Stock"
msgstr ""
-#: common/models.py:856
+#: common/models.py:868
msgid "Allow sale of expired stock"
msgstr ""
-#: common/models.py:862
+#: common/models.py:874
msgid "Stock Stale Time"
msgstr ""
-#: common/models.py:863
+#: common/models.py:875
msgid "Number of days stock items are considered stale before expiring"
msgstr ""
-#: common/models.py:865
+#: common/models.py:877
msgid "days"
msgstr ""
-#: common/models.py:870
+#: common/models.py:882
msgid "Build Expired Stock"
msgstr ""
-#: common/models.py:871
+#: common/models.py:883
msgid "Allow building with expired stock"
msgstr ""
-#: common/models.py:877
+#: common/models.py:889
msgid "Stock Ownership Control"
msgstr ""
-#: common/models.py:878
+#: common/models.py:890
msgid "Enable ownership control over stock locations and items"
msgstr ""
-#: common/models.py:884
+#: common/models.py:896
msgid "Build Order Reference Prefix"
msgstr ""
-#: common/models.py:885
+#: common/models.py:897
msgid "Prefix value for build order reference"
msgstr ""
-#: common/models.py:890
+#: common/models.py:902
msgid "Build Order Reference Regex"
msgstr ""
-#: common/models.py:891
+#: common/models.py:903
msgid "Regular expression pattern for matching build order reference"
msgstr ""
-#: common/models.py:895
+#: common/models.py:907
msgid "Sales Order Reference Prefix"
msgstr ""
-#: common/models.py:896
+#: common/models.py:908
msgid "Prefix value for sales order reference"
msgstr ""
-#: common/models.py:901
+#: common/models.py:913
msgid "Purchase Order Reference Prefix"
msgstr ""
-#: common/models.py:902
+#: common/models.py:914
msgid "Prefix value for purchase order reference"
msgstr ""
-#: common/models.py:908
+#: common/models.py:920
msgid "Enable password forgot"
msgstr ""
-#: common/models.py:909
+#: common/models.py:921
msgid "Enable password forgot function on the login pages"
msgstr ""
-#: common/models.py:914
+#: common/models.py:926
msgid "Enable registration"
msgstr ""
-#: common/models.py:915
+#: common/models.py:927
msgid "Enable self-registration for users on the login pages"
msgstr ""
-#: common/models.py:920
+#: common/models.py:932
msgid "Enable SSO"
msgstr "SSO 활성화"
-#: common/models.py:921
+#: common/models.py:933
msgid "Enable SSO on the login pages"
-msgstr ""
+msgstr "로그인 페이지에서 SSO 활성화"
-#: common/models.py:926
+#: common/models.py:938
msgid "Email required"
msgstr "이메일 필요"
-#: common/models.py:927
+#: common/models.py:939
msgid "Require user to supply mail on signup"
msgstr ""
-#: common/models.py:932
+#: common/models.py:944
msgid "Auto-fill SSO users"
msgstr ""
-#: common/models.py:933
+#: common/models.py:945
msgid "Automatically fill out user-details from SSO account-data"
msgstr ""
-#: common/models.py:938
+#: common/models.py:950
msgid "Mail twice"
-msgstr ""
+msgstr "두 번 보내기"
-#: common/models.py:939
+#: common/models.py:951
msgid "On signup ask users twice for their mail"
msgstr ""
-#: common/models.py:944
+#: common/models.py:956
msgid "Password twice"
msgstr ""
-#: common/models.py:945
+#: common/models.py:957
msgid "On signup ask users twice for their password"
msgstr ""
-#: common/models.py:950
+#: common/models.py:962
msgid "Group on signup"
msgstr ""
-#: common/models.py:951
+#: common/models.py:963
msgid "Group to which new users are assigned on registration"
msgstr ""
-#: common/models.py:956
+#: common/models.py:968
msgid "Enforce MFA"
msgstr ""
-#: common/models.py:957
+#: common/models.py:969
msgid "Users must use multifactor security."
msgstr ""
-#: common/models.py:964
+#: common/models.py:976
msgid "Enable URL integration"
msgstr ""
-#: common/models.py:965
+#: common/models.py:977
msgid "Enable plugins to add URL routes"
msgstr ""
-#: common/models.py:971
+#: common/models.py:983
msgid "Enable navigation integration"
msgstr ""
-#: common/models.py:972
+#: common/models.py:984
msgid "Enable plugins to integrate into navigation"
msgstr ""
-#: common/models.py:978
+#: common/models.py:990
msgid "Enable app integration"
msgstr ""
-#: common/models.py:979
+#: common/models.py:991
msgid "Enable plugins to add apps"
msgstr ""
-#: common/models.py:985
+#: common/models.py:997
msgid "Enable schedule integration"
msgstr ""
-#: common/models.py:986
+#: common/models.py:998
msgid "Enable plugins to run scheduled tasks"
msgstr ""
-#: common/models.py:992
+#: common/models.py:1004
msgid "Enable event integration"
msgstr ""
-#: common/models.py:993
+#: common/models.py:1005
msgid "Enable plugins to respond to internal events"
msgstr ""
-#: common/models.py:1008 common/models.py:1216
+#: common/models.py:1020 common/models.py:1228
msgid "Settings key (must be unique - case insensitive"
msgstr ""
-#: common/models.py:1039
+#: common/models.py:1051
msgid "Show subscribed parts"
msgstr ""
-#: common/models.py:1040
+#: common/models.py:1052
msgid "Show subscribed parts on the homepage"
msgstr ""
-#: common/models.py:1045
+#: common/models.py:1057
msgid "Show subscribed categories"
msgstr ""
-#: common/models.py:1046
+#: common/models.py:1058
msgid "Show subscribed part categories on the homepage"
msgstr ""
-#: common/models.py:1051
+#: common/models.py:1063
msgid "Show latest parts"
msgstr ""
-#: common/models.py:1052
+#: common/models.py:1064
msgid "Show latest parts on the homepage"
msgstr ""
-#: common/models.py:1057
+#: common/models.py:1069
msgid "Recent Part Count"
msgstr ""
-#: common/models.py:1058
+#: common/models.py:1070
msgid "Number of recent parts to display on index page"
msgstr ""
-#: common/models.py:1064
+#: common/models.py:1076
msgid "Show unvalidated BOMs"
msgstr ""
-#: common/models.py:1065
+#: common/models.py:1077
msgid "Show BOMs that await validation on the homepage"
msgstr ""
-#: common/models.py:1070
+#: common/models.py:1082
msgid "Show recent stock changes"
msgstr ""
-#: common/models.py:1071
+#: common/models.py:1083
msgid "Show recently changed stock items on the homepage"
msgstr ""
-#: common/models.py:1076
+#: common/models.py:1088
msgid "Recent Stock Count"
msgstr ""
-#: common/models.py:1077
+#: common/models.py:1089
msgid "Number of recent stock items to display on index page"
msgstr ""
-#: common/models.py:1082
+#: common/models.py:1094
msgid "Show low stock"
msgstr ""
-#: common/models.py:1083
+#: common/models.py:1095
msgid "Show low stock items on the homepage"
msgstr ""
-#: common/models.py:1088
+#: common/models.py:1100
msgid "Show depleted stock"
msgstr ""
-#: common/models.py:1089
+#: common/models.py:1101
msgid "Show depleted stock items on the homepage"
msgstr ""
-#: common/models.py:1094
+#: common/models.py:1106
msgid "Show needed stock"
msgstr ""
-#: common/models.py:1095
+#: common/models.py:1107
msgid "Show stock items needed for builds on the homepage"
msgstr ""
-#: common/models.py:1100
+#: common/models.py:1112
msgid "Show expired stock"
msgstr ""
-#: common/models.py:1101
+#: common/models.py:1113
msgid "Show expired stock items on the homepage"
msgstr ""
-#: common/models.py:1106
+#: common/models.py:1118
msgid "Show stale stock"
msgstr ""
-#: common/models.py:1107
+#: common/models.py:1119
msgid "Show stale stock items on the homepage"
msgstr ""
-#: common/models.py:1112
+#: common/models.py:1124
msgid "Show pending builds"
msgstr ""
-#: common/models.py:1113
+#: common/models.py:1125
msgid "Show pending builds on the homepage"
msgstr ""
-#: common/models.py:1118
+#: common/models.py:1130
msgid "Show overdue builds"
msgstr ""
-#: common/models.py:1119
+#: common/models.py:1131
msgid "Show overdue builds on the homepage"
msgstr ""
-#: common/models.py:1124
+#: common/models.py:1136
msgid "Show outstanding POs"
msgstr ""
-#: common/models.py:1125
+#: common/models.py:1137
msgid "Show outstanding POs on the homepage"
msgstr ""
-#: common/models.py:1130
+#: common/models.py:1142
msgid "Show overdue POs"
msgstr ""
-#: common/models.py:1131
+#: common/models.py:1143
msgid "Show overdue POs on the homepage"
msgstr ""
-#: common/models.py:1136
+#: common/models.py:1148
msgid "Show outstanding SOs"
msgstr ""
-#: common/models.py:1137
+#: common/models.py:1149
msgid "Show outstanding SOs on the homepage"
msgstr ""
-#: common/models.py:1142
+#: common/models.py:1154
msgid "Show overdue SOs"
msgstr ""
-#: common/models.py:1143
+#: common/models.py:1155
msgid "Show overdue SOs on the homepage"
msgstr ""
-#: common/models.py:1149
+#: common/models.py:1161
msgid "Inline label display"
msgstr ""
-#: common/models.py:1150
+#: common/models.py:1162
msgid "Display PDF labels in the browser, instead of downloading as a file"
msgstr ""
-#: common/models.py:1156
+#: common/models.py:1168
msgid "Inline report display"
msgstr ""
-#: common/models.py:1157
+#: common/models.py:1169
msgid "Display PDF reports in the browser, instead of downloading as a file"
msgstr ""
-#: common/models.py:1163
+#: common/models.py:1175
msgid "Search Preview Results"
msgstr ""
-#: common/models.py:1164
+#: common/models.py:1176
msgid "Number of results to show in search preview window"
msgstr ""
-#: common/models.py:1170
+#: common/models.py:1182
msgid "Search Show Stock"
msgstr ""
-#: common/models.py:1171
+#: common/models.py:1183
msgid "Display stock levels in search preview window"
msgstr ""
-#: common/models.py:1177
+#: common/models.py:1189
msgid "Hide Inactive Parts"
msgstr ""
-#: common/models.py:1178
+#: common/models.py:1190
msgid "Hide inactive parts in search preview window"
msgstr ""
-#: common/models.py:1184
+#: common/models.py:1196
msgid "Show Quantity in Forms"
msgstr ""
-#: common/models.py:1185
+#: common/models.py:1197
msgid "Display available part quantity in some forms"
msgstr ""
-#: common/models.py:1191
+#: common/models.py:1203
msgid "Escape Key Closes Forms"
msgstr ""
-#: common/models.py:1192
+#: common/models.py:1204
msgid "Use the escape key to close modal forms"
msgstr ""
-#: common/models.py:1198
+#: common/models.py:1210
msgid "Fixed Navbar"
msgstr ""
-#: common/models.py:1199
+#: common/models.py:1211
msgid "InvenTree navbar position is fixed to the top of the screen"
msgstr ""
-#: common/models.py:1264 company/forms.py:43
+#: common/models.py:1276 company/forms.py:43
msgid "Price break quantity"
msgstr ""
-#: common/models.py:1271 company/serializers.py:264
+#: common/models.py:1283 company/serializers.py:264
#: company/templates/company/supplier_part.html:256
#: templates/js/translated/part.js:915 templates/js/translated/part.js:1867
msgid "Price"
msgstr ""
-#: common/models.py:1272
+#: common/models.py:1284
msgid "Unit price at specified quantity"
msgstr ""
-#: common/models.py:1429 common/models.py:1568
+#: common/models.py:1441 common/models.py:1580
msgid "Endpoint"
msgstr ""
-#: common/models.py:1430
+#: common/models.py:1442
msgid "Endpoint at which this webhook is received"
msgstr ""
-#: common/models.py:1439
+#: common/models.py:1451
msgid "Name for this webhook"
msgstr ""
-#: common/models.py:1444 part/models.py:948 plugin/models.py:46
+#: common/models.py:1456 part/models.py:978 plugin/models.py:46
#: templates/js/translated/table_filters.js:34
#: templates/js/translated/table_filters.js:96
-#: templates/js/translated/table_filters.js:295
-#: templates/js/translated/table_filters.js:417
+#: templates/js/translated/table_filters.js:290
+#: templates/js/translated/table_filters.js:412
msgid "Active"
msgstr ""
-#: common/models.py:1445
+#: common/models.py:1457
msgid "Is this webhook active"
msgstr ""
-#: common/models.py:1459
+#: common/models.py:1471
msgid "Token"
msgstr ""
-#: common/models.py:1460
+#: common/models.py:1472
msgid "Token for access"
msgstr ""
-#: common/models.py:1467
+#: common/models.py:1479
msgid "Secret"
msgstr ""
-#: common/models.py:1468
+#: common/models.py:1480
msgid "Shared secret for HMAC"
msgstr ""
-#: common/models.py:1535
+#: common/models.py:1547
msgid "Message ID"
msgstr ""
-#: common/models.py:1536
+#: common/models.py:1548
msgid "Unique identifier for this message"
msgstr ""
-#: common/models.py:1544
+#: common/models.py:1556
msgid "Host"
msgstr ""
-#: common/models.py:1545
+#: common/models.py:1557
msgid "Host from which this message was received"
msgstr ""
-#: common/models.py:1552
+#: common/models.py:1564
msgid "Header"
msgstr ""
-#: common/models.py:1553
+#: common/models.py:1565
msgid "Header of this message"
msgstr ""
-#: common/models.py:1559
+#: common/models.py:1571
msgid "Body"
msgstr ""
-#: common/models.py:1560
+#: common/models.py:1572
msgid "Body of this message"
msgstr ""
-#: common/models.py:1569
+#: common/models.py:1581
msgid "Endpoint on which this message was received"
msgstr ""
-#: common/models.py:1574
+#: common/models.py:1586
msgid "Worked on"
msgstr ""
-#: common/models.py:1575
+#: common/models.py:1587
msgid "Was the work on this message finished?"
msgstr ""
#: common/views.py:93 order/templates/order/order_wizard/po_upload.html:49
#: order/templates/order/purchase_order_detail.html:24 order/views.py:243
-#: part/templates/part/bom_upload/upload_file.html:52
-#: part/templates/part/import_wizard/part_upload.html:47 part/views.py:213
-#: part/views.py:773
+#: part/templates/part/import_wizard/part_upload.html:47 part/views.py:210
+#: templates/patterns/wizard/upload.html:35
msgid "Upload File"
msgstr "파일 업로드"
-#: common/views.py:94 order/templates/order/order_wizard/match_fields.html:52
-#: order/views.py:244 part/templates/part/bom_upload/match_fields.html:52
+#: common/views.py:94 order/views.py:244
#: part/templates/part/import_wizard/ajax_match_fields.html:45
-#: part/templates/part/import_wizard/match_fields.html:52 part/views.py:214
-#: part/views.py:774
+#: part/templates/part/import_wizard/match_fields.html:52 part/views.py:211
+#: templates/patterns/wizard/match_fields.html:51
msgid "Match Fields"
msgstr ""
@@ -2328,15 +2345,13 @@ msgstr ""
msgid "Parts imported"
msgstr ""
-#: common/views.py:517 order/templates/order/order_wizard/match_fields.html:27
-#: order/templates/order/order_wizard/match_parts.html:19
+#: common/views.py:517 order/templates/order/order_wizard/match_parts.html:19
#: order/templates/order/order_wizard/po_upload.html:47
-#: part/templates/part/bom_upload/match_fields.html:27
-#: part/templates/part/bom_upload/match_parts.html:19
-#: part/templates/part/bom_upload/upload_file.html:50
#: part/templates/part/import_wizard/match_fields.html:27
#: part/templates/part/import_wizard/match_references.html:19
#: part/templates/part/import_wizard/part_upload.html:45
+#: templates/patterns/wizard/match_fields.html:26
+#: templates/patterns/wizard/upload.html:33
msgid "Previous Step"
msgstr ""
@@ -2404,7 +2419,7 @@ msgstr ""
msgid "Link to external company information"
msgstr ""
-#: company/models.py:139 part/models.py:840
+#: company/models.py:139 part/models.py:870
msgid "Image"
msgstr "이미지"
@@ -2442,7 +2457,7 @@ msgid "Default currency used for this company"
msgstr ""
#: company/models.py:320 company/models.py:535 stock/models.py:471
-#: stock/templates/stock/item_base.html:142 templates/js/translated/bom.js:328
+#: stock/templates/stock/item_base.html:144 templates/js/translated/bom.js:541
msgid "Base Part"
msgstr ""
@@ -2453,11 +2468,11 @@ 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:380
+#: stock/templates/stock/item_base.html:382
#: templates/js/translated/company.js:333
#: templates/js/translated/company.js:517
#: templates/js/translated/company.js:800 templates/js/translated/part.js:234
-#: templates/js/translated/table_filters.js:389
+#: templates/js/translated/table_filters.js:384
msgid "Manufacturer"
msgstr ""
@@ -2488,7 +2503,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:390
+#: stock/templates/stock/item_base.html:392
msgid "Manufacturer Part"
msgstr ""
@@ -2499,7 +2514,7 @@ msgstr ""
#: company/models.py:422
#: report/templates/report/inventree_test_report_base.html:95
#: stock/models.py:1988 templates/js/translated/company.js:647
-#: templates/js/translated/part.js:715 templates/js/translated/stock.js:1304
+#: templates/js/translated/part.js:715 templates/js/translated/stock.js:1332
msgid "Value"
msgstr ""
@@ -2507,9 +2522,9 @@ msgstr ""
msgid "Parameter value"
msgstr ""
-#: company/models.py:429 part/models.py:915 part/models.py:2457
+#: company/models.py:429 part/models.py:945 part/models.py:2493
#: part/templates/part/part_base.html:288
-#: templates/InvenTree/settings/settings.html:287
+#: templates/InvenTree/settings/settings.html:324
#: templates/js/translated/company.js:653 templates/js/translated/part.js:721
msgid "Units"
msgstr ""
@@ -2526,11 +2541,11 @@ msgstr ""
#: company/templates/company/supplier_part.html:87 order/models.py:227
#: order/templates/order/order_base.html:112
#: order/templates/order/order_wizard/select_pos.html:30 part/bom.py:237
-#: part/bom.py:265 stock/templates/stock/item_base.html:397
+#: part/bom.py:265 stock/templates/stock/item_base.html:399
#: templates/js/translated/company.js:337
#: templates/js/translated/company.js:774 templates/js/translated/order.js:823
#: templates/js/translated/part.js:215 templates/js/translated/part.js:863
-#: templates/js/translated/table_filters.js:393
+#: templates/js/translated/table_filters.js:388
msgid "Supplier"
msgstr ""
@@ -2561,22 +2576,23 @@ msgid "Supplier part description"
msgstr ""
#: company/models.py:576 company/templates/company/supplier_part.html:119
-#: part/models.py:2648 report/templates/report/inventree_po_report.html:93
-#: report/templates/report/inventree_so_report.html:93
+#: part/models.py:2717 part/templates/part/upload_bom.html:59
+#: report/templates/report/inventree_po_report.html:93
+#: report/templates/report/inventree_so_report.html:93 stock/serializers.py:409
msgid "Note"
msgstr ""
-#: company/models.py:580 part/models.py:1781
+#: company/models.py:580 part/models.py:1817
msgid "base cost"
msgstr ""
-#: company/models.py:580 part/models.py:1781
+#: company/models.py:580 part/models.py:1817
msgid "Minimum charge (e.g. stocking fee)"
msgstr ""
#: company/models.py:582 company/templates/company/supplier_part.html:112
-#: stock/models.py:495 stock/templates/stock/item_base.html:338
-#: templates/js/translated/company.js:850 templates/js/translated/stock.js:1799
+#: stock/models.py:495 stock/templates/stock/item_base.html:340
+#: templates/js/translated/company.js:850 templates/js/translated/stock.js:1923
msgid "Packaging"
msgstr ""
@@ -2584,7 +2600,7 @@ msgstr ""
msgid "Part packaging"
msgstr ""
-#: company/models.py:584 part/models.py:1783
+#: company/models.py:584 part/models.py:1819
msgid "multiple"
msgstr ""
@@ -2645,11 +2661,11 @@ msgstr "URL에서 이미지 다운로드"
#: company/templates/company/company_base.html:83 order/models.py:552
#: order/templates/order/sales_order_base.html:115 stock/models.py:514
-#: stock/models.py:515 stock/serializers.py:626
-#: stock/templates/stock/item_base.html:290
+#: stock/models.py:515 stock/serializers.py:683
+#: stock/templates/stock/item_base.html:292
#: templates/js/translated/company.js:329 templates/js/translated/order.js:1240
-#: templates/js/translated/stock.js:2610
-#: templates/js/translated/table_filters.js:397
+#: templates/js/translated/stock.js:2734
+#: templates/js/translated/table_filters.js:392
msgid "Customer"
msgstr "고객"
@@ -2679,7 +2695,7 @@ msgstr ""
#: company/templates/company/detail.html:20
#: company/templates/company/manufacturer_part.html:118
-#: part/templates/part/detail.html:353
+#: part/templates/part/detail.html:356
msgid "New Supplier Part"
msgstr ""
@@ -2687,8 +2703,8 @@ msgstr ""
#: company/templates/company/detail.html:79
#: company/templates/company/manufacturer_part.html:127
#: company/templates/company/manufacturer_part.html:156
-#: part/templates/part/category.html:171 part/templates/part/detail.html:362
-#: part/templates/part/detail.html:391
+#: part/templates/part/category.html:171 part/templates/part/detail.html:365
+#: part/templates/part/detail.html:394
msgid "Options"
msgstr ""
@@ -2716,7 +2732,7 @@ msgstr ""
msgid "Create new manufacturer part"
msgstr ""
-#: company/templates/company/detail.html:67 part/templates/part/detail.html:381
+#: company/templates/company/detail.html:67 part/templates/part/detail.html:384
msgid "New Manufacturer Part"
msgstr ""
@@ -2730,7 +2746,7 @@ msgstr ""
#: order/templates/order/order_base.html:13
#: order/templates/order/purchase_orders.html:8
#: order/templates/order/purchase_orders.html:12
-#: part/templates/part/detail.html:85 part/templates/part/part_sidebar.html:37
+#: part/templates/part/detail.html:85 part/templates/part/part_sidebar.html:40
#: templates/InvenTree/index.html:252 templates/InvenTree/search.html:197
#: templates/InvenTree/settings/sidebar.html:45 templates/navbar.html:47
#: users/models.py:45
@@ -2752,7 +2768,7 @@ msgstr ""
#: order/templates/order/sales_order_base.html:13
#: order/templates/order/sales_orders.html:8
#: order/templates/order/sales_orders.html:15
-#: part/templates/part/detail.html:108 part/templates/part/part_sidebar.html:41
+#: part/templates/part/detail.html:108 part/templates/part/part_sidebar.html:44
#: templates/InvenTree/index.html:283 templates/InvenTree/search.html:217
#: templates/InvenTree/settings/sidebar.html:47 templates/navbar.html:58
#: users/models.py:46
@@ -2770,7 +2786,7 @@ msgid "New Sales Order"
msgstr ""
#: company/templates/company/detail.html:168
-#: templates/js/translated/build.js:1059
+#: templates/js/translated/build.js:1281
msgid "Assigned Stock"
msgstr ""
@@ -2780,13 +2796,13 @@ msgstr ""
#: company/templates/company/detail.html:384
#: company/templates/company/manufacturer_part.html:215
-#: part/templates/part/detail.html:435
+#: part/templates/part/detail.html:438
msgid "Delete Supplier Parts?"
msgstr ""
#: company/templates/company/detail.html:385
#: company/templates/company/manufacturer_part.html:216
-#: part/templates/part/detail.html:436
+#: part/templates/part/detail.html:439
msgid "All selected supplier parts will be deleted"
msgstr ""
@@ -2824,36 +2840,36 @@ 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:35 part/templates/part/prices.html:163
+#: part/templates/part/part_sidebar.html:38 part/templates/part/prices.html:163
#: templates/InvenTree/search.html:188 templates/navbar.html:45
msgid "Suppliers"
msgstr ""
#: company/templates/company/manufacturer_part.html:129
-#: part/templates/part/detail.html:364
+#: part/templates/part/detail.html:367
msgid "Delete supplier parts"
msgstr ""
#: company/templates/company/manufacturer_part.html:129
#: company/templates/company/manufacturer_part.html:158
#: company/templates/company/manufacturer_part.html:254
-#: part/templates/part/detail.html:364 part/templates/part/detail.html:393
+#: part/templates/part/detail.html:367 part/templates/part/detail.html:396
#: templates/js/translated/company.js:426 templates/js/translated/helpers.js:31
-#: users/models.py:212
+#: users/models.py:217
msgid "Delete"
msgstr "삭제"
#: company/templates/company/manufacturer_part.html:143
#: company/templates/company/manufacturer_part_sidebar.html:5
#: part/templates/part/category_sidebar.html:17
-#: part/templates/part/detail.html:187 part/templates/part/part_sidebar.html:8
+#: part/templates/part/detail.html:190 part/templates/part/part_sidebar.html:9
msgid "Parameters"
msgstr ""
#: company/templates/company/manufacturer_part.html:147
-#: part/templates/part/detail.html:192
+#: part/templates/part/detail.html:195
#: templates/InvenTree/settings/category.html:12
-#: templates/InvenTree/settings/part.html:65
+#: templates/InvenTree/settings/part.html:66
msgid "New Parameter"
msgstr ""
@@ -2862,7 +2878,7 @@ msgid "Delete parameters"
msgstr ""
#: company/templates/company/manufacturer_part.html:191
-#: part/templates/part/detail.html:892
+#: part/templates/part/detail.html:895
msgid "Add Parameter"
msgstr ""
@@ -2892,8 +2908,8 @@ msgstr ""
#: company/templates/company/supplier_part.html:7
#: company/templates/company/supplier_part.html:24 stock/models.py:479
-#: stock/templates/stock/item_base.html:402
-#: templates/js/translated/company.js:790 templates/js/translated/stock.js:1756
+#: stock/templates/stock/item_base.html:404
+#: templates/js/translated/company.js:790 templates/js/translated/stock.js:1880
msgid "Supplier Part"
msgstr ""
@@ -2919,7 +2935,7 @@ msgstr ""
#: company/templates/company/supplier_part.html:142
#: part/templates/part/detail.html:25 stock/templates/stock/location.html:167
-#: templates/js/translated/stock.js:368
+#: templates/js/translated/stock.js:369
msgid "New Stock Item"
msgstr ""
@@ -2940,7 +2956,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:1628
+#: part/templates/part/prices.html:271 part/views.py:1319
msgid "Add Price Break"
msgstr ""
@@ -2948,11 +2964,11 @@ msgstr ""
msgid "No price break information found"
msgstr ""
-#: company/templates/company/supplier_part.html:224 part/views.py:1690
+#: company/templates/company/supplier_part.html:224 part/views.py:1381
msgid "Delete Price Break"
msgstr ""
-#: company/templates/company/supplier_part.html:238 part/views.py:1676
+#: company/templates/company/supplier_part.html:238 part/views.py:1367
msgid "Edit Price Break"
msgstr ""
@@ -2965,15 +2981,15 @@ msgid "Delete price break"
msgstr ""
#: company/templates/company/supplier_part_navbar.html:15
-#: part/templates/part/part_sidebar.html:14
+#: part/templates/part/part_sidebar.html:15
#: 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:150
#: templates/InvenTree/settings/sidebar.html:41
-#: templates/js/translated/bom.js:340 templates/js/translated/part.js:495
+#: templates/js/translated/bom.js:553 templates/js/translated/part.js:495
#: templates/js/translated/part.js:630 templates/js/translated/part.js:1125
-#: templates/js/translated/part.js:1286 templates/js/translated/stock.js:935
-#: templates/js/translated/stock.js:1588 templates/navbar.html:28
+#: templates/js/translated/part.js:1286 templates/js/translated/stock.js:936
+#: templates/js/translated/stock.js:1712 templates/navbar.html:28
msgid "Stock"
msgstr ""
@@ -2987,7 +3003,7 @@ msgid "Supplier Part Pricing"
msgstr ""
#: company/templates/company/supplier_part_navbar.html:29
-#: part/templates/part/part_sidebar.html:28
+#: part/templates/part/part_sidebar.html:30
msgid "Pricing"
msgstr ""
@@ -2996,7 +3012,7 @@ msgstr ""
#: stock/templates/stock/location.html:151
#: stock/templates/stock/location.html:163
#: stock/templates/stock/location_sidebar.html:7
-#: templates/InvenTree/search.html:152 templates/js/translated/stock.js:2509
+#: templates/InvenTree/search.html:152 templates/js/translated/stock.js:2633
#: templates/stats.html:105 templates/stats.html:114 users/models.py:43
msgid "Stock Items"
msgstr ""
@@ -3026,20 +3042,20 @@ msgstr ""
msgid "New Company"
msgstr "새 회사"
-#: company/views.py:129 part/views.py:593
+#: company/views.py:129 part/views.py:591
msgid "Download Image"
msgstr "이미지 다운로드"
-#: company/views.py:158 part/views.py:625
+#: company/views.py:158 part/views.py:623
msgid "Image size exceeds maximum allowable size for download"
msgstr ""
-#: company/views.py:165 part/views.py:632
+#: company/views.py:165 part/views.py:630
#, python-brace-format
msgid "Invalid response: {code}"
msgstr ""
-#: company/views.py:174 part/views.py:641
+#: company/views.py:174 part/views.py:639
msgid "Supplied URL is not a valid image file"
msgstr ""
@@ -3073,7 +3089,7 @@ msgstr ""
#: label/models.py:140
msgid "Width [mm]"
-msgstr ""
+msgstr "너비 [mm]"
#: label/models.py:141
msgid "Label width, specified in mm"
@@ -3081,7 +3097,7 @@ msgstr ""
#: label/models.py:147
msgid "Height [mm]"
-msgstr ""
+msgstr "높이 [mm]"
#: label/models.py:148
msgid "Label height, specified in mm"
@@ -3256,16 +3272,16 @@ msgid "Supplier part must match supplier"
msgstr ""
#: order/models.py:855 order/models.py:946 order/models.py:1042
-#: templates/js/translated/order.js:1820 templates/js/translated/stock.js:2271
+#: templates/js/translated/order.js:1820 templates/js/translated/stock.js:2395
msgid "Order"
msgstr ""
#: order/models.py:856 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:352
+#: stock/templates/stock/item_base.html:354
#: templates/js/translated/order.js:801 templates/js/translated/part.js:838
-#: templates/js/translated/stock.js:1733 templates/js/translated/stock.js:2591
+#: templates/js/translated/stock.js:1857 templates/js/translated/stock.js:2715
msgid "Purchase Order"
msgstr ""
@@ -3276,7 +3292,7 @@ msgstr ""
#: order/models.py:884 order/templates/order/order_base.html:163
#: templates/js/translated/order.js:589 templates/js/translated/order.js:1118
#: templates/js/translated/part.js:910 templates/js/translated/part.js:937
-#: templates/js/translated/table_filters.js:317
+#: templates/js/translated/table_filters.js:312
msgid "Received"
msgstr ""
@@ -3285,8 +3301,8 @@ msgid "Number of items received"
msgstr ""
#: order/models.py:892 part/templates/part/prices.html:176 stock/models.py:608
-#: stock/serializers.py:170 stock/templates/stock/item_base.html:359
-#: templates/js/translated/stock.js:1787
+#: stock/serializers.py:170 stock/templates/stock/item_base.html:361
+#: templates/js/translated/stock.js:1911
msgid "Purchase Price"
msgstr ""
@@ -3422,7 +3438,7 @@ msgstr ""
#: order/serializers.py:251
msgid "Barcode Hash"
-msgstr ""
+msgstr "바코드 해시"
#: order/serializers.py:252
msgid "Unique identifier field"
@@ -3430,7 +3446,7 @@ msgstr ""
#: order/serializers.py:269
msgid "Barcode is already in use"
-msgstr ""
+msgstr "이미 사용 중인 바코드입니다"
#: order/serializers.py:307
msgid "Line items must be provided"
@@ -3530,7 +3546,7 @@ msgstr ""
#: order/templates/order/order_base.html:94
#: order/templates/order/sales_order_base.html:89
-#: templates/js/translated/stock.js:2327
+#: templates/js/translated/stock.js:2451
msgid "Order Status"
msgstr ""
@@ -3574,73 +3590,20 @@ msgstr ""
msgid "After placing this purchase order, line items will no longer be editable."
msgstr ""
-#: order/templates/order/order_wizard/match_fields.html:9
-#: part/templates/part/bom_upload/match_fields.html:9
-#: part/templates/part/import_wizard/ajax_match_fields.html:9
-#: part/templates/part/import_wizard/match_fields.html:9
-msgid "Missing selections for the following required columns"
-msgstr ""
-
-#: order/templates/order/order_wizard/match_fields.html:20
-#: part/templates/part/bom_upload/match_fields.html:20
-#: part/templates/part/import_wizard/ajax_match_fields.html:20
-#: part/templates/part/import_wizard/match_fields.html:20
-msgid "Duplicate selections found, see below. Fix them then retry submitting."
-msgstr ""
-
-#: order/templates/order/order_wizard/match_fields.html:29
-#: order/templates/order/order_wizard/match_parts.html:21
-#: part/templates/part/bom_upload/match_fields.html:29
-#: part/templates/part/bom_upload/match_parts.html:21
-#: part/templates/part/import_wizard/match_fields.html:29
-#: part/templates/part/import_wizard/match_references.html:21
-msgid "Submit Selections"
-msgstr ""
-
-#: order/templates/order/order_wizard/match_fields.html:35
-#: part/templates/part/bom_upload/match_fields.html:35
-#: part/templates/part/import_wizard/ajax_match_fields.html:28
-#: part/templates/part/import_wizard/match_fields.html:35
-msgid "File Fields"
-msgstr ""
-
-#: order/templates/order/order_wizard/match_fields.html:42
-#: part/templates/part/bom_upload/match_fields.html:42
-#: part/templates/part/import_wizard/ajax_match_fields.html:35
-#: part/templates/part/import_wizard/match_fields.html:42
-msgid "Remove column"
-msgstr ""
-
-#: order/templates/order/order_wizard/match_fields.html:60
-#: part/templates/part/bom_upload/match_fields.html:60
-#: part/templates/part/import_wizard/ajax_match_fields.html:53
-#: part/templates/part/import_wizard/match_fields.html:60
-msgid "Duplicate selection"
-msgstr ""
-
-#: order/templates/order/order_wizard/match_fields.html:71
-#: order/templates/order/order_wizard/match_parts.html:52
-#: part/templates/part/bom_upload/match_fields.html:71
-#: part/templates/part/bom_upload/match_parts.html:53
-#: part/templates/part/import_wizard/ajax_match_fields.html:64
-#: part/templates/part/import_wizard/ajax_match_references.html:42
-#: part/templates/part/import_wizard/match_fields.html:71
-#: part/templates/part/import_wizard/match_references.html:49
-#: templates/js/translated/build.js:300 templates/js/translated/build.js:1311
-#: templates/js/translated/order.js:537 templates/js/translated/order.js:1488
-#: templates/js/translated/stock.js:601 templates/js/translated/stock.js:769
-msgid "Remove row"
-msgstr ""
-
#: order/templates/order/order_wizard/match_parts.html:12
-#: part/templates/part/bom_upload/match_parts.html:12
#: part/templates/part/import_wizard/ajax_match_references.html:12
#: part/templates/part/import_wizard/match_references.html:12
msgid "Errors exist in the submitted data"
msgstr ""
+#: order/templates/order/order_wizard/match_parts.html:21
+#: part/templates/part/import_wizard/match_fields.html:29
+#: part/templates/part/import_wizard/match_references.html:21
+#: templates/patterns/wizard/match_fields.html:28
+msgid "Submit Selections"
+msgstr ""
+
#: order/templates/order/order_wizard/match_parts.html:28
-#: part/templates/part/bom_upload/match_parts.html:28
#: part/templates/part/import_wizard/ajax_match_references.html:21
#: part/templates/part/import_wizard/match_references.html:28
msgid "Row"
@@ -3650,6 +3613,19 @@ msgstr ""
msgid "Select Supplier Part"
msgstr ""
+#: order/templates/order/order_wizard/match_parts.html:52
+#: part/templates/part/import_wizard/ajax_match_fields.html:64
+#: part/templates/part/import_wizard/ajax_match_references.html:42
+#: part/templates/part/import_wizard/match_fields.html:71
+#: part/templates/part/import_wizard/match_references.html:49
+#: templates/js/translated/bom.js:76 templates/js/translated/build.js:380
+#: templates/js/translated/build.js:528 templates/js/translated/build.js:1547
+#: templates/js/translated/order.js:537 templates/js/translated/order.js:1488
+#: templates/js/translated/stock.js:602 templates/js/translated/stock.js:770
+#: templates/patterns/wizard/match_fields.html:70
+msgid "Remove row"
+msgstr ""
+
#: order/templates/order/order_wizard/po_upload.html:8
msgid "Return to Orders"
msgstr ""
@@ -3659,9 +3635,9 @@ msgid "Upload File for Purchase Order"
msgstr ""
#: order/templates/order/order_wizard/po_upload.html:25
-#: part/templates/part/bom_upload/upload_file.html:21
#: part/templates/part/import_wizard/ajax_part_upload.html:10
#: part/templates/part/import_wizard/part_upload.html:23
+#: templates/patterns/wizard/upload.html:11
#, python-format
msgid "Step %(step)s of %(count)s"
msgstr ""
@@ -3819,7 +3795,7 @@ msgid "Pending Shipments"
msgstr ""
#: order/templates/order/sales_order_detail.html:48
-#: templates/js/translated/bom.js:732 templates/js/translated/build.js:1243
+#: templates/js/translated/bom.js:945 templates/js/translated/build.js:1465
msgid "Actions"
msgstr ""
@@ -3922,7 +3898,7 @@ msgstr ""
msgid "This field is required"
msgstr ""
-#: part/bom.py:125 part/models.py:83 part/models.py:849
+#: part/bom.py:125 part/models.py:83 part/models.py:879
#: part/templates/part/category.html:108 part/templates/part/part_base.html:338
msgid "Default Location"
msgstr ""
@@ -3968,7 +3944,7 @@ msgstr ""
msgid "Default keywords for parts in this category"
msgstr ""
-#: part/models.py:97 part/models.py:2533 part/templates/part/category.html:15
+#: part/models.py:97 part/models.py:2569 part/templates/part/category.html:15
#: part/templates/part/part_app_base.html:10
msgid "Part Category"
msgstr ""
@@ -3994,408 +3970,478 @@ msgstr ""
msgid "Invalid choice for parent part"
msgstr ""
-#: part/models.py:502 part/models.py:514
+#: part/models.py:532 part/models.py:544
#, python-brace-format
msgid "Part '{p1}' is used in BOM for '{p2}' (recursive)"
msgstr ""
-#: part/models.py:644
+#: part/models.py:674
msgid "Next available serial numbers are"
msgstr ""
-#: part/models.py:648
+#: part/models.py:678
msgid "Next available serial number is"
msgstr ""
-#: part/models.py:653
+#: part/models.py:683
msgid "Most recent serial number is"
msgstr ""
-#: part/models.py:748
+#: part/models.py:778
msgid "Duplicate IPN not allowed in part settings"
msgstr ""
-#: part/models.py:773
+#: part/models.py:803 part/models.py:2622
msgid "Part name"
msgstr ""
-#: part/models.py:780
+#: part/models.py:810
msgid "Is Template"
msgstr ""
-#: part/models.py:781
+#: part/models.py:811
msgid "Is this part a template part?"
msgstr ""
-#: part/models.py:791
+#: part/models.py:821
msgid "Is this part a variant of another part?"
msgstr ""
-#: part/models.py:792
+#: part/models.py:822
msgid "Variant Of"
msgstr ""
-#: part/models.py:798
+#: part/models.py:828
msgid "Part description"
msgstr ""
-#: part/models.py:803 part/templates/part/category.html:86
+#: part/models.py:833 part/templates/part/category.html:86
#: part/templates/part/part_base.html:302
msgid "Keywords"
msgstr ""
-#: part/models.py:804
+#: part/models.py:834
msgid "Part keywords to improve visibility in search results"
msgstr ""
-#: part/models.py:811 part/models.py:2283 part/models.py:2532
+#: part/models.py:841 part/models.py:2319 part/models.py:2568
#: part/templates/part/part_base.html:265
#: part/templates/part/set_category.html:15
-#: templates/InvenTree/settings/settings.html:186
+#: templates/InvenTree/settings/settings.html:223
#: templates/js/translated/part.js:1268
msgid "Category"
msgstr ""
-#: part/models.py:812
+#: part/models.py:842
msgid "Part category"
msgstr ""
-#: part/models.py:817 part/templates/part/part_base.html:274
+#: part/models.py:847 part/templates/part/part_base.html:274
#: templates/js/translated/part.js:618 templates/js/translated/part.js:1221
-#: templates/js/translated/stock.js:1560
+#: templates/js/translated/stock.js:1684
msgid "IPN"
msgstr ""
-#: part/models.py:818
+#: part/models.py:848
msgid "Internal Part Number"
msgstr ""
-#: part/models.py:824
+#: part/models.py:854
msgid "Part revision or version number"
msgstr ""
-#: part/models.py:825 part/templates/part/part_base.html:281
+#: part/models.py:855 part/templates/part/part_base.html:281
#: report/models.py:200 templates/js/translated/part.js:622
msgid "Revision"
msgstr ""
-#: part/models.py:847
+#: part/models.py:877
msgid "Where is this item normally stored?"
msgstr ""
-#: part/models.py:894 part/templates/part/part_base.html:347
+#: part/models.py:924 part/templates/part/part_base.html:347
msgid "Default Supplier"
msgstr ""
-#: part/models.py:895
+#: part/models.py:925
msgid "Default supplier part"
msgstr ""
-#: part/models.py:902
+#: part/models.py:932
msgid "Default Expiry"
msgstr ""
-#: part/models.py:903
+#: part/models.py:933
msgid "Expiry time (in days) for stock items of this part"
msgstr ""
-#: part/models.py:908 part/templates/part/part_base.html:196
+#: part/models.py:938 part/templates/part/part_base.html:196
msgid "Minimum Stock"
msgstr ""
-#: part/models.py:909
+#: part/models.py:939
msgid "Minimum allowed stock level"
msgstr ""
-#: part/models.py:916
+#: part/models.py:946
msgid "Stock keeping units for this part"
msgstr ""
-#: part/models.py:922
+#: part/models.py:952
msgid "Can this part be built from other parts?"
msgstr ""
-#: part/models.py:928
+#: part/models.py:958
msgid "Can this part be used to build other parts?"
msgstr ""
-#: part/models.py:934
+#: part/models.py:964
msgid "Does this part have tracking for unique items?"
msgstr ""
-#: part/models.py:939
+#: part/models.py:969
msgid "Can this part be purchased from external suppliers?"
msgstr ""
-#: part/models.py:944
+#: part/models.py:974
msgid "Can this part be sold to customers?"
msgstr ""
-#: part/models.py:949
+#: part/models.py:979
msgid "Is this part active?"
msgstr ""
-#: part/models.py:954
+#: part/models.py:984
msgid "Is this a virtual part, such as a software product or license?"
msgstr ""
-#: part/models.py:959
+#: part/models.py:989
msgid "Part notes - supports Markdown formatting"
msgstr ""
-#: part/models.py:962
+#: part/models.py:992
msgid "BOM checksum"
msgstr ""
-#: part/models.py:962
+#: part/models.py:992
msgid "Stored BOM checksum"
msgstr ""
-#: part/models.py:965
+#: part/models.py:995
msgid "BOM checked by"
msgstr ""
-#: part/models.py:967
+#: part/models.py:997
msgid "BOM checked date"
msgstr ""
-#: part/models.py:971
+#: part/models.py:1001
msgid "Creation User"
msgstr ""
-#: part/models.py:1783
+#: part/models.py:1819
msgid "Sell multiple"
msgstr ""
-#: part/models.py:2333
+#: part/models.py:2369
msgid "Test templates can only be created for trackable parts"
msgstr ""
-#: part/models.py:2350
+#: part/models.py:2386
msgid "Test with this name already exists for this part"
msgstr ""
-#: part/models.py:2370 templates/js/translated/part.js:1714
-#: templates/js/translated/stock.js:1284
+#: part/models.py:2406 templates/js/translated/part.js:1714
+#: templates/js/translated/stock.js:1312
msgid "Test Name"
msgstr ""
-#: part/models.py:2371
+#: part/models.py:2407
msgid "Enter a name for the test"
msgstr ""
-#: part/models.py:2376
+#: part/models.py:2412
msgid "Test Description"
msgstr ""
-#: part/models.py:2377
+#: part/models.py:2413
msgid "Enter description for this test"
msgstr ""
-#: part/models.py:2382 templates/js/translated/part.js:1723
-#: templates/js/translated/table_filters.js:281
+#: part/models.py:2418 templates/js/translated/part.js:1723
+#: templates/js/translated/table_filters.js:276
msgid "Required"
msgstr ""
-#: part/models.py:2383
+#: part/models.py:2419
msgid "Is this test required to pass?"
msgstr ""
-#: part/models.py:2388 templates/js/translated/part.js:1731
+#: part/models.py:2424 templates/js/translated/part.js:1731
msgid "Requires Value"
msgstr ""
-#: part/models.py:2389
+#: part/models.py:2425
msgid "Does this test require a value when adding a test result?"
msgstr ""
-#: part/models.py:2394 templates/js/translated/part.js:1738
+#: part/models.py:2430 templates/js/translated/part.js:1738
msgid "Requires Attachment"
msgstr ""
-#: part/models.py:2395
+#: part/models.py:2431
msgid "Does this test require a file attachment when adding a test result?"
msgstr ""
-#: part/models.py:2406
+#: part/models.py:2442
#, python-brace-format
msgid "Illegal character in template name ({c})"
msgstr ""
-#: part/models.py:2442
+#: part/models.py:2478
msgid "Parameter template name must be unique"
msgstr ""
-#: part/models.py:2450
+#: part/models.py:2486
msgid "Parameter Name"
msgstr ""
-#: part/models.py:2457
+#: part/models.py:2493
msgid "Parameter Units"
msgstr ""
-#: part/models.py:2487
+#: part/models.py:2523
msgid "Parent Part"
msgstr ""
-#: part/models.py:2489 part/models.py:2538 part/models.py:2539
-#: templates/InvenTree/settings/settings.html:181
+#: part/models.py:2525 part/models.py:2574 part/models.py:2575
+#: templates/InvenTree/settings/settings.html:218
msgid "Parameter Template"
msgstr ""
-#: part/models.py:2491
+#: part/models.py:2527
msgid "Data"
-msgstr ""
+msgstr "데이터"
-#: part/models.py:2491
+#: part/models.py:2527
msgid "Parameter Value"
msgstr ""
-#: part/models.py:2543 templates/InvenTree/settings/settings.html:190
+#: part/models.py:2579 templates/InvenTree/settings/settings.html:227
msgid "Default Value"
msgstr ""
-#: part/models.py:2544
+#: part/models.py:2580
msgid "Default Parameter Value"
msgstr ""
+#: part/models.py:2614
+msgid "Part ID or part name"
+msgstr ""
+
+#: part/models.py:2617 templates/js/translated/model_renderers.js:182
+msgid "Part ID"
+msgstr ""
+
+#: part/models.py:2618
+msgid "Unique part ID value"
+msgstr ""
+
#: part/models.py:2621
-msgid "Select parent part"
+msgid "Part Name"
+msgstr ""
+
+#: part/models.py:2625
+msgid "Part IPN"
+msgstr ""
+
+#: part/models.py:2626
+msgid "Part IPN value"
msgstr ""
#: part/models.py:2629
-msgid "Sub part"
+msgid "Level"
msgstr ""
#: part/models.py:2630
+msgid "BOM level"
+msgstr ""
+
+#: part/models.py:2690
+msgid "Select parent part"
+msgstr ""
+
+#: part/models.py:2698
+msgid "Sub part"
+msgstr ""
+
+#: part/models.py:2699
msgid "Select part to be used in BOM"
msgstr ""
-#: part/models.py:2636
+#: part/models.py:2705
msgid "BOM quantity for this BOM item"
msgstr ""
-#: part/models.py:2638 templates/js/translated/bom.js:578
-#: templates/js/translated/bom.js:652
+#: part/models.py:2707 part/templates/part/upload_bom.html:58
+#: templates/js/translated/bom.js:791 templates/js/translated/bom.js:865
#: templates/js/translated/table_filters.js:92
msgid "Optional"
msgstr ""
-#: part/models.py:2638
+#: part/models.py:2707
msgid "This BOM item is optional"
msgstr ""
-#: part/models.py:2641
+#: part/models.py:2710 part/templates/part/upload_bom.html:55
msgid "Overage"
msgstr ""
-#: part/models.py:2642
+#: part/models.py:2711
msgid "Estimated build wastage quantity (absolute or percentage)"
msgstr ""
-#: part/models.py:2645
+#: part/models.py:2714
msgid "BOM item reference"
msgstr ""
-#: part/models.py:2648
+#: part/models.py:2717
msgid "BOM item notes"
msgstr ""
-#: part/models.py:2650
+#: part/models.py:2719
msgid "Checksum"
msgstr ""
-#: part/models.py:2650
+#: part/models.py:2719
msgid "BOM line checksum"
msgstr ""
-#: part/models.py:2654 templates/js/translated/bom.js:669
+#: part/models.py:2723 part/templates/part/upload_bom.html:57
+#: templates/js/translated/bom.js:882
#: templates/js/translated/table_filters.js:68
#: templates/js/translated/table_filters.js:88
msgid "Inherited"
msgstr ""
-#: part/models.py:2655
+#: part/models.py:2724
msgid "This BOM item is inherited by BOMs for variant parts"
msgstr ""
-#: part/models.py:2660 templates/js/translated/bom.js:661
+#: part/models.py:2729 part/templates/part/upload_bom.html:56
+#: templates/js/translated/bom.js:874
msgid "Allow Variants"
msgstr ""
-#: part/models.py:2661
+#: part/models.py:2730
msgid "Stock items for variant parts can be used for this BOM item"
msgstr ""
-#: part/models.py:2746 stock/models.py:357
+#: part/models.py:2815 stock/models.py:357
msgid "Quantity must be integer value for trackable parts"
msgstr ""
-#: part/models.py:2755 part/models.py:2757
+#: part/models.py:2824 part/models.py:2826
msgid "Sub part must be specified"
msgstr ""
-#: part/models.py:2886
+#: part/models.py:2955
msgid "BOM Item Substitute"
msgstr ""
-#: part/models.py:2908
+#: part/models.py:2977
msgid "Substitute part cannot be the same as the master part"
msgstr ""
-#: part/models.py:2920
+#: part/models.py:2989
msgid "Parent BOM item"
msgstr ""
-#: part/models.py:2928
+#: part/models.py:2997
msgid "Substitute part"
msgstr ""
-#: part/models.py:2939
+#: part/models.py:3008
msgid "Part 1"
msgstr ""
-#: part/models.py:2943
+#: part/models.py:3012
msgid "Part 2"
msgstr ""
-#: part/models.py:2943
+#: part/models.py:3012
msgid "Select Related Part"
msgstr ""
-#: part/models.py:2975
+#: part/models.py:3044
msgid "Error creating relationship: check that the part is not related to itself and that the relationship is unique"
msgstr ""
-#: part/serializers.py:659
+#: part/serializers.py:667
msgid "Select part to copy BOM from"
msgstr ""
-#: part/serializers.py:670
+#: part/serializers.py:678
msgid "Remove Existing Data"
msgstr ""
-#: part/serializers.py:671
+#: part/serializers.py:679
msgid "Remove existing BOM items before copying"
msgstr ""
-#: part/serializers.py:676
+#: part/serializers.py:684
msgid "Include Inherited"
msgstr ""
-#: part/serializers.py:677
+#: part/serializers.py:685
msgid "Include BOM items which are inherited from templated parts"
msgstr ""
-#: part/serializers.py:682
+#: part/serializers.py:690
msgid "Skip Invalid Rows"
msgstr ""
-#: part/serializers.py:683
+#: part/serializers.py:691
msgid "Enable this option to skip invalid rows"
msgstr ""
-#: part/tasks.py:53
+#: part/serializers.py:734
+msgid "Clear Existing BOM"
+msgstr ""
+
+#: part/serializers.py:735
+msgid "Delete existing BOM items before uploading"
+msgstr ""
+
+#: part/serializers.py:762
+msgid "No part column specified"
+msgstr ""
+
+#: part/serializers.py:806
+msgid "Multiple matching parts found"
+msgstr ""
+
+#: part/serializers.py:809
+msgid "No matching part found"
+msgstr ""
+
+#: part/serializers.py:812
+msgid "Part is not designated as a component"
+msgstr ""
+
+#: part/serializers.py:821
+msgid "Quantity not provided"
+msgstr ""
+
+#: part/serializers.py:829
+msgid "Invalid quantity"
+msgstr ""
+
+#: part/serializers.py:848
+msgid "At least one BOM item is required"
+msgstr ""
+
+#: part/tasks.py:58
msgid "Low stock notification"
msgstr ""
@@ -4418,7 +4464,7 @@ msgstr ""
msgid "The BOM for %(part)s has not been validated."
msgstr ""
-#: part/templates/part/bom.html:30 part/templates/part/detail.html:270
+#: part/templates/part/bom.html:30 part/templates/part/detail.html:273
msgid "BOM actions"
msgstr ""
@@ -4426,34 +4472,6 @@ msgstr ""
msgid "Delete Items"
msgstr ""
-#: part/templates/part/bom_upload/match_parts.html:29
-msgid "Select Part"
-msgstr ""
-
-#: part/templates/part/bom_upload/upload_file.html:8
-msgid "Return to BOM"
-msgstr ""
-
-#: part/templates/part/bom_upload/upload_file.html:13
-msgid "Upload Bill of Materials"
-msgstr ""
-
-#: part/templates/part/bom_upload/upload_file.html:33
-msgid "Requirements for BOM upload"
-msgstr ""
-
-#: part/templates/part/bom_upload/upload_file.html:35
-msgid "The BOM file must contain the required named columns as provided in the "
-msgstr ""
-
-#: part/templates/part/bom_upload/upload_file.html:35
-msgid "BOM Upload Template"
-msgstr ""
-
-#: part/templates/part/bom_upload/upload_file.html:36
-msgid "Each part must already exist in the database"
-msgstr ""
-
#: part/templates/part/category.html:28 part/templates/part/category.html:32
msgid "You are subscribed to notifications for this category"
msgstr ""
@@ -4519,7 +4537,7 @@ msgstr ""
msgid "Create new part"
msgstr ""
-#: part/templates/part/category.html:161 templates/js/translated/bom.js:152
+#: part/templates/part/category.html:161 templates/js/translated/bom.js:365
msgid "New Part"
msgstr ""
@@ -4639,138 +4657,168 @@ msgstr ""
msgid "Sales Order Allocations"
msgstr ""
-#: part/templates/part/detail.html:159
+#: part/templates/part/detail.html:162
msgid "Part Variants"
msgstr ""
-#: part/templates/part/detail.html:163
+#: part/templates/part/detail.html:166
msgid "Create new variant"
msgstr ""
-#: part/templates/part/detail.html:164
+#: part/templates/part/detail.html:167
msgid "New Variant"
msgstr ""
-#: part/templates/part/detail.html:191
+#: part/templates/part/detail.html:194
msgid "Add new parameter"
msgstr ""
-#: part/templates/part/detail.html:228 part/templates/part/part_sidebar.html:49
+#: part/templates/part/detail.html:231 part/templates/part/part_sidebar.html:52
msgid "Related Parts"
msgstr ""
-#: part/templates/part/detail.html:232 part/templates/part/detail.html:233
+#: part/templates/part/detail.html:235 part/templates/part/detail.html:236
msgid "Add Related"
msgstr ""
-#: part/templates/part/detail.html:253 part/templates/part/part_sidebar.html:17
+#: part/templates/part/detail.html:256 part/templates/part/part_sidebar.html:18
msgid "Bill of Materials"
-msgstr ""
+msgstr "부품 명세서"
-#: part/templates/part/detail.html:258
+#: part/templates/part/detail.html:261
msgid "Export actions"
msgstr ""
-#: part/templates/part/detail.html:262 templates/js/translated/bom.js:70
+#: part/templates/part/detail.html:265 templates/js/translated/bom.js:283
msgid "Export BOM"
msgstr ""
-#: part/templates/part/detail.html:264
+#: part/templates/part/detail.html:267
msgid "Print BOM Report"
msgstr ""
-#: part/templates/part/detail.html:274
+#: part/templates/part/detail.html:277
msgid "Upload BOM"
msgstr ""
-#: part/templates/part/detail.html:276 templates/js/translated/part.js:272
+#: part/templates/part/detail.html:279 templates/js/translated/part.js:272
msgid "Copy BOM"
msgstr ""
-#: part/templates/part/detail.html:278
+#: part/templates/part/detail.html:281
msgid "Validate BOM"
msgstr ""
-#: part/templates/part/detail.html:283
+#: part/templates/part/detail.html:286
msgid "New BOM Item"
msgstr ""
-#: part/templates/part/detail.html:284
+#: part/templates/part/detail.html:287
msgid "Add BOM Item"
msgstr ""
-#: part/templates/part/detail.html:297
+#: part/templates/part/detail.html:300
msgid "Assemblies"
msgstr ""
-#: part/templates/part/detail.html:314
+#: part/templates/part/detail.html:317
msgid "Part Builds"
msgstr ""
-#: part/templates/part/detail.html:339
+#: part/templates/part/detail.html:342
msgid "Build Order Allocations"
msgstr ""
-#: part/templates/part/detail.html:349
+#: part/templates/part/detail.html:352
msgid "Part Suppliers"
msgstr ""
-#: part/templates/part/detail.html:377
+#: part/templates/part/detail.html:380
msgid "Part Manufacturers"
msgstr ""
-#: part/templates/part/detail.html:393
+#: part/templates/part/detail.html:396
msgid "Delete manufacturer parts"
msgstr ""
-#: part/templates/part/detail.html:575
+#: part/templates/part/detail.html:578
msgid "Delete selected BOM items?"
msgstr ""
-#: part/templates/part/detail.html:576
+#: part/templates/part/detail.html:579
msgid "All selected BOM items will be deleted"
msgstr ""
-#: part/templates/part/detail.html:625
+#: part/templates/part/detail.html:628
msgid "Create BOM Item"
msgstr ""
-#: part/templates/part/detail.html:682
+#: part/templates/part/detail.html:685
msgid "Related Part"
msgstr ""
-#: part/templates/part/detail.html:690
+#: part/templates/part/detail.html:693
msgid "Add Related Part"
msgstr ""
-#: part/templates/part/detail.html:785
+#: part/templates/part/detail.html:788
msgid "Add Test Result Template"
msgstr ""
-#: part/templates/part/detail.html:842
+#: part/templates/part/detail.html:845
msgid "Edit Part Notes"
msgstr ""
-#: part/templates/part/detail.html:955
+#: part/templates/part/detail.html:958
#, python-format
msgid "Purchase Unit Price - %(currency)s"
msgstr ""
-#: part/templates/part/detail.html:967
+#: part/templates/part/detail.html:970
#, python-format
msgid "Unit Price-Cost Difference - %(currency)s"
msgstr ""
-#: part/templates/part/detail.html:979
+#: part/templates/part/detail.html:982
#, python-format
msgid "Supplier Unit Cost - %(currency)s"
msgstr ""
-#: part/templates/part/detail.html:1068
+#: part/templates/part/detail.html:1071
#, python-format
msgid "Unit Price - %(currency)s"
msgstr ""
+#: part/templates/part/import_wizard/ajax_match_fields.html:9
+#: part/templates/part/import_wizard/match_fields.html:9
+#: templates/patterns/wizard/match_fields.html:8
+msgid "Missing selections for the following required columns"
+msgstr ""
+
+#: part/templates/part/import_wizard/ajax_match_fields.html:20
+#: part/templates/part/import_wizard/match_fields.html:20
+#: templates/patterns/wizard/match_fields.html:19
+msgid "Duplicate selections found, see below. Fix them then retry submitting."
+msgstr ""
+
+#: part/templates/part/import_wizard/ajax_match_fields.html:28
+#: part/templates/part/import_wizard/match_fields.html:35
+#: templates/patterns/wizard/match_fields.html:34
+msgid "File Fields"
+msgstr ""
+
+#: part/templates/part/import_wizard/ajax_match_fields.html:35
+#: part/templates/part/import_wizard/match_fields.html:42
+#: templates/patterns/wizard/match_fields.html:41
+msgid "Remove column"
+msgstr ""
+
+#: part/templates/part/import_wizard/ajax_match_fields.html:53
+#: part/templates/part/import_wizard/match_fields.html:60
+#: templates/patterns/wizard/match_fields.html:59
+msgid "Duplicate selection"
+msgstr ""
+
#: part/templates/part/import_wizard/ajax_part_upload.html:29
#: part/templates/part/import_wizard/part_upload.html:53
msgid "Unsuffitient privileges."
@@ -4806,7 +4854,7 @@ msgstr ""
#: stock/templates/stock/item_base.html:39
#: stock/templates/stock/location.html:35 templates/qr_button.html:1
msgid "Show QR Code"
-msgstr ""
+msgstr "QR 코드 보기"
#: part/templates/part/part_base.html:46
#: stock/templates/stock/item_base.html:55
@@ -4819,7 +4867,7 @@ msgid "Show pricing information"
msgstr ""
#: part/templates/part/part_base.html:56
-#: stock/templates/stock/item_base.html:110
+#: stock/templates/stock/item_base.html:112
#: stock/templates/stock/location.html:44
msgid "Stock actions"
msgstr ""
@@ -4912,7 +4960,7 @@ msgstr ""
msgid "Allocated to Orders"
msgstr ""
-#: part/templates/part/part_base.html:239 templates/js/translated/bom.js:690
+#: part/templates/part/part_base.html:239 templates/js/translated/bom.js:903
msgid "Can Build"
msgstr ""
@@ -4930,9 +4978,9 @@ msgid "Latest Serial Number"
msgstr ""
#: part/templates/part/part_base.html:328
-#: stock/templates/stock/item_base.html:166
+#: stock/templates/stock/item_base.html:168
msgid "Search for serial number"
-msgstr ""
+msgstr "일련번호 검색"
#: part/templates/part/part_base.html:449 part/templates/part/prices.html:144
msgid "Calculate"
@@ -4969,7 +5017,7 @@ msgid "Total Cost"
msgstr ""
#: part/templates/part/part_pricing.html:40 part/templates/part/prices.html:40
-#: templates/js/translated/bom.js:644
+#: templates/js/translated/bom.js:857
msgid "No supplier pricing available"
msgstr ""
@@ -5003,20 +5051,20 @@ msgstr ""
msgid "No pricing information is available for this part."
msgstr ""
-#: part/templates/part/part_sidebar.html:11
+#: part/templates/part/part_sidebar.html:12
msgid "Variants"
msgstr ""
-#: part/templates/part/part_sidebar.html:25
+#: part/templates/part/part_sidebar.html:26
msgid "Used In"
msgstr ""
-#: part/templates/part/part_sidebar.html:31
+#: part/templates/part/part_sidebar.html:34
#: stock/templates/stock/stock_sidebar.html:8
msgid "Allocations"
msgstr ""
-#: part/templates/part/part_sidebar.html:45
+#: part/templates/part/part_sidebar.html:48
msgid "Test Templates"
msgstr ""
@@ -5089,7 +5137,7 @@ msgstr ""
msgid "Calculation parameters"
msgstr ""
-#: part/templates/part/prices.html:155 templates/js/translated/bom.js:638
+#: part/templates/part/prices.html:155 templates/js/translated/bom.js:851
msgid "Supplier Cost"
msgstr ""
@@ -5111,7 +5159,7 @@ msgstr ""
msgid "Internal Cost"
msgstr ""
-#: part/templates/part/prices.html:215 part/views.py:1699
+#: part/templates/part/prices.html:215 part/views.py:1390
msgid "Add Internal Price Break"
msgstr ""
@@ -5131,7 +5179,7 @@ msgstr ""
msgid "Set category for the following parts"
msgstr ""
-#: part/templates/part/stock_count.html:7 templates/js/translated/bom.js:600
+#: part/templates/part/stock_count.html:7 templates/js/translated/bom.js:813
#: templates/js/translated/part.js:497 templates/js/translated/part.js:1122
#: templates/js/translated/part.js:1309
msgid "No Stock"
@@ -5141,6 +5189,43 @@ msgstr ""
msgid "Low Stock"
msgstr ""
+#: part/templates/part/upload_bom.html:8
+msgid "Return to BOM"
+msgstr ""
+
+#: part/templates/part/upload_bom.html:13
+msgid "Upload Bill of Materials"
+msgstr "부품 명세서 업로드"
+
+#: part/templates/part/upload_bom.html:19
+msgid "BOM upload requirements"
+msgstr ""
+
+#: part/templates/part/upload_bom.html:23
+#: part/templates/part/upload_bom.html:90
+msgid "Upload BOM File"
+msgstr ""
+
+#: part/templates/part/upload_bom.html:29
+msgid "Submit BOM Data"
+msgstr ""
+
+#: part/templates/part/upload_bom.html:37
+msgid "Requirements for BOM upload"
+msgstr ""
+
+#: part/templates/part/upload_bom.html:39
+msgid "The BOM file must contain the required named columns as provided in the "
+msgstr ""
+
+#: part/templates/part/upload_bom.html:39
+msgid "BOM Upload Template"
+msgstr ""
+
+#: part/templates/part/upload_bom.html:40
+msgid "Each part must already exist in the database"
+msgstr ""
+
#: part/templates/part/variant_part.html:9
msgid "Create new part variant"
msgstr ""
@@ -5154,104 +5239,96 @@ msgstr ""
msgid "Unknown database"
msgstr ""
-#: part/views.py:93
+#: part/views.py:90
msgid "Set Part Category"
msgstr ""
-#: part/views.py:143
+#: part/views.py:140
#, python-brace-format
msgid "Set category for {n} parts"
msgstr ""
-#: part/views.py:215
+#: part/views.py:212
msgid "Match References"
msgstr ""
-#: part/views.py:511
+#: part/views.py:509
msgid "None"
msgstr ""
-#: part/views.py:570
+#: part/views.py:568
msgid "Part QR Code"
msgstr ""
-#: part/views.py:672
+#: part/views.py:670
msgid "Select Part Image"
msgstr ""
-#: part/views.py:698
+#: part/views.py:696
msgid "Updated part image"
msgstr ""
-#: part/views.py:701
+#: part/views.py:699
msgid "Part image not found"
msgstr ""
-#: part/views.py:775
-msgid "Match Parts"
-msgstr ""
-
-#: part/views.py:1110
-msgid "Export Bill of Materials"
-msgstr ""
-
-#: part/views.py:1159
+#: part/views.py:850
msgid "Confirm Part Deletion"
msgstr ""
-#: part/views.py:1166
+#: part/views.py:857
msgid "Part was deleted"
msgstr ""
-#: part/views.py:1175
+#: part/views.py:866
msgid "Part Pricing"
msgstr ""
-#: part/views.py:1324
+#: part/views.py:1015
msgid "Create Part Parameter Template"
msgstr ""
-#: part/views.py:1334
+#: part/views.py:1025
msgid "Edit Part Parameter Template"
msgstr ""
-#: part/views.py:1341
+#: part/views.py:1032
msgid "Delete Part Parameter Template"
msgstr ""
-#: part/views.py:1400 templates/js/translated/part.js:315
+#: part/views.py:1091 templates/js/translated/part.js:315
msgid "Edit Part Category"
msgstr ""
-#: part/views.py:1438
+#: part/views.py:1129
msgid "Delete Part Category"
msgstr ""
-#: part/views.py:1444
+#: part/views.py:1135
msgid "Part category was deleted"
msgstr ""
-#: part/views.py:1453
+#: part/views.py:1144
msgid "Create Category Parameter Template"
msgstr ""
-#: part/views.py:1554
+#: part/views.py:1245
msgid "Edit Category Parameter Template"
msgstr ""
-#: part/views.py:1610
+#: part/views.py:1301
msgid "Delete Category Parameter Template"
msgstr ""
-#: part/views.py:1632
+#: part/views.py:1323
msgid "Added new price break"
msgstr ""
-#: part/views.py:1708
+#: part/views.py:1399
msgid "Edit Internal Price Break"
msgstr ""
-#: part/views.py:1716
+#: part/views.py:1407
msgid "Delete Internal Price Break"
msgstr ""
@@ -5273,7 +5350,7 @@ msgstr ""
#: plugin/models.py:32
msgid "Key"
-msgstr ""
+msgstr "키"
#: plugin/models.py:33
msgid "Key of plugin"
@@ -5301,7 +5378,7 @@ msgstr ""
#: plugin/samples/integration/sample.py:48
msgid "API Key"
-msgstr ""
+msgstr "API 키"
#: plugin/samples/integration/sample.py:49
msgid "Key required for accessing external API"
@@ -5453,12 +5530,12 @@ msgid "Stock Item Test Report"
msgstr ""
#: report/templates/report/inventree_test_report_base.html:79
-#: stock/models.py:519 stock/templates/stock/item_base.html:156
-#: templates/js/translated/build.js:293 templates/js/translated/build.js:697
-#: templates/js/translated/build.js:1073
+#: stock/models.py:519 stock/templates/stock/item_base.html:158
+#: templates/js/translated/build.js:373 templates/js/translated/build.js:521
+#: templates/js/translated/build.js:919 templates/js/translated/build.js:1295
#: 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:423
+#: templates/js/translated/order.js:2034 templates/js/translated/stock.js:424
msgid "Serial Number"
msgstr "일련번호"
@@ -5479,7 +5556,7 @@ msgstr ""
#: report/templates/report/inventree_test_report_base.html:97
#: templates/InvenTree/settings/plugin.html:50
#: templates/InvenTree/settings/plugin_settings.html:38
-#: templates/js/translated/order.js:849 templates/js/translated/stock.js:2525
+#: templates/js/translated/order.js:849 templates/js/translated/stock.js:2649
msgid "Date"
msgstr ""
@@ -5497,71 +5574,67 @@ msgid "Installed Items"
msgstr ""
#: report/templates/report/inventree_test_report_base.html:137
-#: templates/js/translated/stock.js:586 templates/js/translated/stock.js:756
-#: templates/js/translated/stock.js:2785
+#: templates/js/translated/stock.js:587 templates/js/translated/stock.js:757
+#: templates/js/translated/stock.js:2909
msgid "Serial"
msgstr ""
-#: stock/api.py:476
+#: stock/api.py:501
msgid "Quantity is required"
msgstr ""
-#: stock/api.py:483
+#: stock/api.py:508
msgid "Valid part must be supplied"
msgstr ""
-#: stock/forms.py:77 stock/forms.py:251 stock/models.py:576
-#: stock/templates/stock/item_base.html:193
-#: templates/js/translated/stock.js:1709
+#: stock/api.py:535
+msgid "Serial numbers cannot be supplied for a non-trackable part"
+msgstr ""
+
+#: stock/forms.py:74 stock/forms.py:198 stock/models.py:576
+#: stock/templates/stock/item_base.html:195
+#: templates/js/translated/stock.js:1833
msgid "Expiry Date"
msgstr ""
-#: stock/forms.py:78 stock/forms.py:252
+#: stock/forms.py:75 stock/forms.py:199
msgid "Expiration date for this stock item"
msgstr ""
-#: stock/forms.py:81
+#: stock/forms.py:78
msgid "Enter unique serial numbers (or leave blank)"
msgstr ""
-#: stock/forms.py:136
+#: stock/forms.py:133
msgid "Destination for serialized stock (by default, will remain in current location)"
msgstr ""
-#: stock/forms.py:138
+#: stock/forms.py:135
msgid "Serial numbers"
-msgstr ""
+msgstr "일련번호"
-#: stock/forms.py:138
+#: stock/forms.py:135
msgid "Unique serial numbers (must match quantity)"
msgstr ""
-#: stock/forms.py:140 stock/forms.py:224
+#: stock/forms.py:137 stock/forms.py:171
msgid "Add transaction note (optional)"
msgstr ""
-#: stock/forms.py:180
-msgid "Stock item to install"
-msgstr ""
-
-#: stock/forms.py:210
-msgid "Must not exceed available quantity"
-msgstr ""
-
-#: stock/forms.py:222
+#: stock/forms.py:169
msgid "Destination location for uninstalled items"
msgstr ""
-#: stock/forms.py:226
+#: stock/forms.py:173
msgid "Confirm uninstall"
msgstr ""
-#: stock/forms.py:226
+#: stock/forms.py:173
msgid "Confirm removal of installed stock items"
msgstr ""
#: stock/models.py:62 stock/models.py:613
-#: stock/templates/stock/item_base.html:416
+#: stock/templates/stock/item_base.html:418
msgid "Owner"
msgstr ""
@@ -5623,7 +5696,7 @@ msgstr ""
msgid "Packaging this stock item is stored in"
msgstr ""
-#: stock/models.py:502 stock/templates/stock/item_base.html:298
+#: stock/models.py:502 stock/templates/stock/item_base.html:300
msgid "Installed In"
msgstr ""
@@ -5733,7 +5806,7 @@ msgstr ""
msgid "Serialized stock cannot be merged"
msgstr ""
-#: stock/models.py:1214 stock/serializers.py:775
+#: stock/models.py:1214 stock/serializers.py:832
msgid "Duplicate stock items"
msgstr ""
@@ -5769,7 +5842,7 @@ msgstr ""
msgid "Test name"
msgstr ""
-#: stock/models.py:1983 templates/js/translated/table_filters.js:271
+#: stock/models.py:1983
msgid "Test result"
msgstr ""
@@ -5806,7 +5879,7 @@ msgstr ""
msgid "Enter serial numbers for new items"
msgstr ""
-#: stock/serializers.py:326 stock/serializers.py:732 stock/serializers.py:973
+#: stock/serializers.py:326 stock/serializers.py:789 stock/serializers.py:1030
msgid "Destination stock location"
msgstr ""
@@ -5818,63 +5891,79 @@ msgstr ""
msgid "Serial numbers cannot be assigned to this part"
msgstr ""
-#: stock/serializers.py:589
+#: stock/serializers.py:363 stock/views.py:1108
+msgid "Serial numbers already exist"
+msgstr "일련번호가 이미 존재합니다"
+
+#: stock/serializers.py:405
+msgid "Select stock item to install"
+msgstr ""
+
+#: stock/serializers.py:421
+msgid "Stock item is unavailable"
+msgstr ""
+
+#: stock/serializers.py:428
+msgid "Selected part is not in the Bill of Materials"
+msgstr ""
+
+#: stock/serializers.py:646
msgid "Part must be salable"
msgstr ""
-#: stock/serializers.py:593
+#: stock/serializers.py:650
msgid "Item is allocated to a sales order"
msgstr ""
-#: stock/serializers.py:597
+#: stock/serializers.py:654
msgid "Item is allocated to a build order"
msgstr ""
-#: stock/serializers.py:627
+#: stock/serializers.py:684
msgid "Customer to assign stock items"
msgstr ""
-#: stock/serializers.py:633
+#: stock/serializers.py:690
msgid "Selected company is not a customer"
msgstr ""
-#: stock/serializers.py:641
+#: stock/serializers.py:698
msgid "Stock assignment notes"
msgstr ""
-#: stock/serializers.py:651 stock/serializers.py:881
+#: stock/serializers.py:708 stock/serializers.py:938
msgid "A list of stock items must be provided"
msgstr ""
-#: stock/serializers.py:739
+#: stock/serializers.py:796
msgid "Stock merging notes"
msgstr ""
-#: stock/serializers.py:744
+#: stock/serializers.py:801
msgid "Allow mismatched suppliers"
msgstr ""
-#: stock/serializers.py:745
+#: stock/serializers.py:802
msgid "Allow stock items with different supplier parts to be merged"
msgstr ""
-#: stock/serializers.py:750
+#: stock/serializers.py:807
msgid "Allow mismatched status"
msgstr ""
-#: stock/serializers.py:751
+#: stock/serializers.py:808
msgid "Allow stock items with different status codes to be merged"
msgstr ""
-#: stock/serializers.py:761
+#: stock/serializers.py:818
msgid "At least two stock items must be provided"
msgstr ""
-#: stock/serializers.py:843
+#: stock/serializers.py:900
msgid "StockItem primary key value"
msgstr ""
-#: stock/serializers.py:871
+#: stock/serializers.py:928
msgid "Stock transaction notes"
msgstr ""
@@ -5919,22 +6008,14 @@ msgstr ""
msgid "Installed Stock Items"
msgstr ""
-#: stock/templates/stock/item.html:154 stock/views.py:482
+#: stock/templates/stock/item.html:154 templates/js/translated/stock.js:3018
msgid "Install Stock Item"
msgstr ""
-#: stock/templates/stock/item.html:309 stock/templates/stock/item.html:334
+#: stock/templates/stock/item.html:304 templates/js/translated/stock.js:1480
msgid "Add Test Result"
msgstr ""
-#: stock/templates/stock/item.html:354
-msgid "Edit Test Result"
-msgstr ""
-
-#: stock/templates/stock/item.html:368
-msgid "Delete Test Result"
-msgstr ""
-
#: stock/templates/stock/item_base.html:42
#: templates/js/translated/barcode.js:330
#: templates/js/translated/barcode.js:335
@@ -5995,129 +6076,129 @@ msgstr ""
msgid "Uninstall"
msgstr ""
-#: stock/templates/stock/item_base.html:101
+#: stock/templates/stock/item_base.html:102
msgid "Install stock item"
msgstr ""
-#: stock/templates/stock/item_base.html:101
+#: stock/templates/stock/item_base.html:102
msgid "Install"
msgstr ""
-#: stock/templates/stock/item_base.html:115
+#: stock/templates/stock/item_base.html:117
msgid "Convert to variant"
msgstr ""
-#: stock/templates/stock/item_base.html:118
+#: stock/templates/stock/item_base.html:120
msgid "Duplicate stock item"
msgstr ""
-#: stock/templates/stock/item_base.html:120
+#: stock/templates/stock/item_base.html:122
msgid "Edit stock item"
msgstr ""
-#: stock/templates/stock/item_base.html:123
+#: stock/templates/stock/item_base.html:125
msgid "Delete stock item"
msgstr ""
-#: stock/templates/stock/item_base.html:161
+#: stock/templates/stock/item_base.html:163
msgid "previous page"
msgstr ""
-#: stock/templates/stock/item_base.html:161
+#: stock/templates/stock/item_base.html:163
msgid "Navigate to previous serial number"
msgstr ""
-#: stock/templates/stock/item_base.html:170
+#: stock/templates/stock/item_base.html:172
msgid "next page"
msgstr ""
-#: stock/templates/stock/item_base.html:170
+#: stock/templates/stock/item_base.html:172
msgid "Navigate to next serial number"
msgstr ""
-#: stock/templates/stock/item_base.html:197
+#: stock/templates/stock/item_base.html:199
#, python-format
msgid "This StockItem expired on %(item.expiry_date)s"
msgstr ""
-#: stock/templates/stock/item_base.html:197
+#: stock/templates/stock/item_base.html:199
#: templates/js/translated/table_filters.js:252
msgid "Expired"
msgstr ""
-#: stock/templates/stock/item_base.html:199
+#: stock/templates/stock/item_base.html:201
#, python-format
msgid "This StockItem expires on %(item.expiry_date)s"
msgstr ""
-#: stock/templates/stock/item_base.html:199
+#: stock/templates/stock/item_base.html:201
#: templates/js/translated/table_filters.js:258
msgid "Stale"
msgstr ""
-#: stock/templates/stock/item_base.html:206
-#: templates/js/translated/stock.js:1722
+#: stock/templates/stock/item_base.html:208
+#: templates/js/translated/stock.js:1846
msgid "Last Updated"
msgstr ""
-#: stock/templates/stock/item_base.html:211
+#: stock/templates/stock/item_base.html:213
msgid "Last Stocktake"
msgstr ""
-#: stock/templates/stock/item_base.html:215
+#: stock/templates/stock/item_base.html:217
msgid "No stocktake performed"
msgstr ""
-#: stock/templates/stock/item_base.html:233
+#: stock/templates/stock/item_base.html:235
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:240
+#: stock/templates/stock/item_base.html:242
msgid "This stock item is in production and cannot be edited."
msgstr ""
-#: stock/templates/stock/item_base.html:241
+#: stock/templates/stock/item_base.html:243
msgid "Edit the stock item from the build view."
msgstr ""
-#: stock/templates/stock/item_base.html:254
+#: stock/templates/stock/item_base.html:256
msgid "This stock item has not passed all required tests"
msgstr ""
-#: stock/templates/stock/item_base.html:262
+#: stock/templates/stock/item_base.html:264
msgid "This stock item is allocated to Sales Order"
msgstr ""
-#: stock/templates/stock/item_base.html:270
+#: stock/templates/stock/item_base.html:272
msgid "This stock item is allocated to Build Order"
msgstr ""
-#: stock/templates/stock/item_base.html:276
+#: stock/templates/stock/item_base.html:278
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:317
-#: templates/js/translated/build.js:1095
+#: stock/templates/stock/item_base.html:319
+#: templates/js/translated/build.js:1317
msgid "No location set"
msgstr ""
-#: stock/templates/stock/item_base.html:324
+#: stock/templates/stock/item_base.html:326
msgid "Barcode Identifier"
msgstr ""
-#: stock/templates/stock/item_base.html:366
+#: stock/templates/stock/item_base.html:368
msgid "Parent Item"
msgstr ""
-#: stock/templates/stock/item_base.html:384
+#: stock/templates/stock/item_base.html:386
msgid "No manufacturer set"
msgstr ""
-#: stock/templates/stock/item_base.html:409
+#: stock/templates/stock/item_base.html:411
msgid "Tests"
msgstr ""
-#: stock/templates/stock/item_base.html:499
+#: stock/templates/stock/item_base.html:492
msgid "Edit Stock Status"
msgstr ""
@@ -6130,39 +6211,6 @@ msgstr ""
msgid "This will remove %(qty)s units of %(full_name)s from stock."
msgstr ""
-#: stock/templates/stock/item_install.html:8
-msgid "Install another Stock Item into this item."
-msgstr ""
-
-#: stock/templates/stock/item_install.html:11
-#: stock/templates/stock/item_install.html:24
-msgid "Stock items can only be installed if they meet the following criteria"
-msgstr ""
-
-#: stock/templates/stock/item_install.html:14
-msgid "The Stock Item links to a Part which is in the BOM for this Stock Item"
-msgstr ""
-
-#: stock/templates/stock/item_install.html:15
-msgid "The Stock Item is currently in stock"
-msgstr ""
-
-#: stock/templates/stock/item_install.html:16
-msgid "The Stock Item is serialized and does not belong to another item"
-msgstr ""
-
-#: stock/templates/stock/item_install.html:21
-msgid "Install this Stock Item in another stock item."
-msgstr ""
-
-#: stock/templates/stock/item_install.html:27
-msgid "The part associated to this Stock Item belongs to another part's BOM"
-msgstr ""
-
-#: stock/templates/stock/item_install.html:28
-msgid "This Stock Item is serialized and does not belong to another item"
-msgstr ""
-
#: stock/templates/stock/item_serialize.html:5
msgid "Create serialized items from this stock item."
msgstr ""
@@ -6247,7 +6295,7 @@ msgstr ""
msgid "The following stock items will be uninstalled"
msgstr ""
-#: stock/templates/stock/stockitem_convert.html:7 stock/views.py:879
+#: stock/templates/stock/stockitem_convert.html:7 stock/views.py:730
msgid "Convert Stock Item"
msgstr ""
@@ -6268,11 +6316,11 @@ msgstr ""
msgid "Are you sure you want to delete this stock tracking entry?"
msgstr ""
-#: stock/views.py:162 templates/js/translated/stock.js:139
+#: stock/views.py:162 templates/js/translated/stock.js:140
msgid "Edit Stock Location"
msgstr ""
-#: stock/views.py:269 stock/views.py:858 stock/views.py:984 stock/views.py:1266
+#: stock/views.py:269 stock/views.py:709 stock/views.py:835 stock/views.py:1117
msgid "Owner is required (ownership control is enabled)"
msgstr ""
@@ -6300,59 +6348,63 @@ msgstr ""
msgid "Confirm test data deletion"
msgstr ""
+#: stock/views.py:352
+msgid "Check the confirmation box"
+msgstr ""
+
#: stock/views.py:456
msgid "Stock Item QR Code"
msgstr ""
-#: stock/views.py:630
+#: stock/views.py:481
msgid "Uninstall Stock Items"
msgstr ""
-#: stock/views.py:727 templates/js/translated/stock.js:1074
+#: stock/views.py:578 templates/js/translated/stock.js:1075
msgid "Confirm stock adjustment"
msgstr ""
-#: stock/views.py:738
+#: stock/views.py:589
msgid "Uninstalled stock items"
msgstr ""
-#: stock/views.py:760 templates/js/translated/stock.js:332
+#: stock/views.py:611 templates/js/translated/stock.js:333
msgid "Edit Stock Item"
msgstr ""
-#: stock/views.py:910
+#: stock/views.py:761
msgid "Create new Stock Location"
msgstr ""
-#: stock/views.py:1011
+#: stock/views.py:862
msgid "Create new Stock Item"
msgstr ""
-#: stock/views.py:1153 templates/js/translated/stock.js:312
+#: stock/views.py:1004 templates/js/translated/stock.js:313
msgid "Duplicate Stock Item"
msgstr ""
-#: stock/views.py:1235
+#: stock/views.py:1086
msgid "Quantity cannot be negative"
msgstr ""
-#: stock/views.py:1335
+#: stock/views.py:1186
msgid "Delete Stock Location"
msgstr ""
-#: stock/views.py:1348
+#: stock/views.py:1199
msgid "Delete Stock Item"
msgstr ""
-#: stock/views.py:1359
+#: stock/views.py:1210
msgid "Delete Stock Tracking Entry"
msgstr ""
-#: stock/views.py:1366
+#: stock/views.py:1217
msgid "Edit Stock Tracking Entry"
msgstr ""
-#: stock/views.py:1375
+#: stock/views.py:1226
msgid "Add Stock Tracking Entry"
msgstr ""
@@ -6521,21 +6573,21 @@ msgstr ""
#: templates/InvenTree/settings/mixins/urls.html:23
msgid "Open in new tab"
-msgstr ""
+msgstr "새 탭에서 열기"
#: templates/InvenTree/settings/part.html:7
msgid "Part Settings"
msgstr ""
-#: templates/InvenTree/settings/part.html:43
+#: templates/InvenTree/settings/part.html:44
msgid "Part Import"
msgstr ""
-#: templates/InvenTree/settings/part.html:47
+#: templates/InvenTree/settings/part.html:48
msgid "Import Part"
msgstr ""
-#: templates/InvenTree/settings/part.html:61
+#: templates/InvenTree/settings/part.html:62
msgid "Part Parameter Templates"
msgstr ""
@@ -6559,12 +6611,12 @@ msgstr ""
#: templates/InvenTree/settings/plugin.html:47 templates/navbar.html:111
#: users/models.py:39
msgid "Admin"
-msgstr ""
+msgstr "관리자"
#: templates/InvenTree/settings/plugin.html:49
#: templates/InvenTree/settings/plugin_settings.html:28
msgid "Author"
-msgstr ""
+msgstr "작성자"
#: templates/InvenTree/settings/plugin.html:51
#: templates/InvenTree/settings/plugin_settings.html:43
@@ -6663,57 +6715,57 @@ msgstr ""
msgid "Report Settings"
msgstr ""
-#: templates/InvenTree/settings/setting.html:30
+#: templates/InvenTree/settings/setting.html:33
msgid "No value set"
msgstr ""
-#: templates/InvenTree/settings/setting.html:41
+#: templates/InvenTree/settings/setting.html:38
msgid "Edit setting"
msgstr ""
-#: templates/InvenTree/settings/settings.html:78
+#: templates/InvenTree/settings/settings.html:115
msgid "Edit Plugin Setting"
msgstr ""
-#: templates/InvenTree/settings/settings.html:80
+#: templates/InvenTree/settings/settings.html:117
msgid "Edit Global Setting"
msgstr ""
-#: templates/InvenTree/settings/settings.html:82
+#: templates/InvenTree/settings/settings.html:119
msgid "Edit User Setting"
msgstr ""
-#: templates/InvenTree/settings/settings.html:171
+#: templates/InvenTree/settings/settings.html:208
msgid "No category parameter templates found"
msgstr ""
-#: templates/InvenTree/settings/settings.html:193
-#: templates/InvenTree/settings/settings.html:292
+#: templates/InvenTree/settings/settings.html:230
+#: templates/InvenTree/settings/settings.html:329
msgid "Edit Template"
msgstr ""
-#: templates/InvenTree/settings/settings.html:194
-#: templates/InvenTree/settings/settings.html:293
+#: templates/InvenTree/settings/settings.html:231
+#: templates/InvenTree/settings/settings.html:330
msgid "Delete Template"
msgstr ""
-#: templates/InvenTree/settings/settings.html:272
+#: templates/InvenTree/settings/settings.html:309
msgid "No part parameter templates found"
msgstr ""
-#: templates/InvenTree/settings/settings.html:276
+#: templates/InvenTree/settings/settings.html:313
msgid "ID"
msgstr ""
#: templates/InvenTree/settings/sidebar.html:6
#: templates/InvenTree/settings/user_settings.html:9
msgid "User Settings"
-msgstr ""
+msgstr "사용자 설정"
#: templates/InvenTree/settings/sidebar.html:9
#: templates/InvenTree/settings/user.html:12
msgid "Account Settings"
-msgstr ""
+msgstr "계정 설정"
#: templates/InvenTree/settings/sidebar.html:11
#: templates/InvenTree/settings/user_display.html:9
@@ -6722,7 +6774,7 @@ msgstr ""
#: templates/InvenTree/settings/sidebar.html:13
msgid "Home Page"
-msgstr ""
+msgstr "홈페이지"
#: templates/InvenTree/settings/sidebar.html:15
#: templates/InvenTree/settings/user_search.html:9
@@ -6817,7 +6869,7 @@ msgstr ""
#: templates/InvenTree/settings/user.html:95
#: templates/InvenTree/settings/user.html:201
msgid "Warning:"
-msgstr ""
+msgstr "경고:"
#: 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."
@@ -6825,11 +6877,11 @@ msgstr ""
#: templates/InvenTree/settings/user.html:104
msgid "Add Email Address"
-msgstr ""
+msgstr "이메일 주소 추가"
#: templates/InvenTree/settings/user.html:109
msgid "Add Email"
-msgstr ""
+msgstr "이메일 추가"
#: templates/InvenTree/settings/user.html:117
msgid "Social Accounts"
@@ -6909,7 +6961,7 @@ msgstr ""
#: templates/InvenTree/settings/user.html:243
msgid "Last Activity"
-msgstr ""
+msgstr "마지막 활동"
#: templates/InvenTree/settings/user.html:252
#, python-format
@@ -6993,23 +7045,24 @@ msgstr ""
#: templates/about.html:10
msgid "InvenTree Version Information"
-msgstr ""
+msgstr "InvenTree 버전 정보"
#: templates/about.html:11 templates/about.html:105
-#: templates/js/translated/bom.js:407 templates/js/translated/modals.js:53
-#: templates/js/translated/modals.js:584 templates/js/translated/modals.js:678
-#: templates/js/translated/modals.js:983 templates/modals.html:15
-#: templates/modals.html:27 templates/modals.html:39 templates/modals.html:50
+#: templates/js/translated/bom.js:132 templates/js/translated/bom.js:620
+#: templates/js/translated/modals.js:53 templates/js/translated/modals.js:584
+#: templates/js/translated/modals.js:678 templates/js/translated/modals.js:986
+#: templates/modals.html:15 templates/modals.html:27 templates/modals.html:39
+#: templates/modals.html:50
msgid "Close"
msgstr ""
#: templates/about.html:20
msgid "InvenTree Version"
-msgstr ""
+msgstr "InvenTree 버전"
#: templates/about.html:25
msgid "Development Version"
-msgstr ""
+msgstr "개발 버전"
#: templates/about.html:28
msgid "Up to Date"
@@ -7021,7 +7074,7 @@ msgstr ""
#: templates/about.html:53
msgid "InvenTree Documentation"
-msgstr ""
+msgstr "InvenTree 문서"
#: templates/about.html:58
msgid "API Version"
@@ -7029,15 +7082,15 @@ msgstr "API 버전"
#: templates/about.html:63
msgid "Python Version"
-msgstr ""
+msgstr "Python 버전"
#: templates/about.html:68
msgid "Django Version"
-msgstr ""
+msgstr "Django 버전"
#: templates/about.html:73
msgid "View Code on GitHub"
-msgstr ""
+msgstr "GitHub에서 코드 보기"
#: templates/about.html:78
msgid "Credits"
@@ -7045,7 +7098,7 @@ msgstr ""
#: templates/about.html:83
msgid "Mobile App"
-msgstr ""
+msgstr "모바일 앱"
#: templates/about.html:88
msgid "Submit Bug Report"
@@ -7057,7 +7110,7 @@ msgstr ""
#: templates/about.html:95
msgid "copy version information"
-msgstr ""
+msgstr "버전 정보 복사"
#: templates/account/email_confirm.html:6
#: templates/account/email_confirm.html:10
@@ -7077,7 +7130,7 @@ msgstr ""
#: templates/account/login.html:6 templates/account/login.html:16
#: templates/account/login.html:39
msgid "Sign In"
-msgstr ""
+msgstr "로그인"
#: templates/account/login.html:21
#, python-format
@@ -7111,15 +7164,15 @@ msgstr ""
#: templates/account/logout.html:5 templates/account/logout.html:8
#: templates/account/logout.html:20
msgid "Sign Out"
-msgstr ""
+msgstr "로그아웃"
#: templates/account/logout.html:10
msgid "Are you sure you want to sign out?"
-msgstr ""
+msgstr "정말 로그아웃하시겠습니까?"
#: templates/account/logout.html:19
msgid "Back to Site"
-msgstr ""
+msgstr "사이트로 돌아가기"
#: templates/account/password_reset.html:5
#: templates/account/password_reset.html:12
@@ -7162,7 +7215,7 @@ msgstr ""
#: templates/account/signup.html:13
#, python-format
msgid "Already have an account? Then please sign in."
-msgstr "이미 계정을 가지고 계십니까? 그렇다면 로그인 하세요."
+msgstr ""
#: templates/account/signup.html:27
msgid "Or use a SSO-provider for signup"
@@ -7275,14 +7328,14 @@ msgid "The following parts are low on required stock"
msgstr ""
#: templates/email/build_order_required_stock.html:18
-#: templates/js/translated/bom.js:1117
+#: templates/js/translated/bom.js:1335
msgid "Required Quantity"
msgstr ""
#: templates/email/build_order_required_stock.html:19
#: templates/email/low_stock_notification.html:18
-#: templates/js/translated/bom.js:591 templates/js/translated/build.js:1189
-#: templates/js/translated/build.js:1810
+#: templates/js/translated/bom.js:804 templates/js/translated/build.js:1411
+#: templates/js/translated/build.js:2048
#: templates/js/translated/table_filters.js:178
msgid "Available"
msgstr ""
@@ -7294,7 +7347,7 @@ msgstr ""
#: templates/email/email.html:35
msgid "InvenTree version"
-msgstr ""
+msgstr "InvenTree 버전"
#: templates/email/low_stock_notification.html:7
#, python-format
@@ -7325,11 +7378,11 @@ msgstr ""
msgid "Remote image must not exceed maximum allowable file size"
msgstr ""
-#: templates/js/translated/api.js:185 templates/js/translated/modals.js:1053
+#: templates/js/translated/api.js:185 templates/js/translated/modals.js:1056
msgid "No Response"
msgstr ""
-#: templates/js/translated/api.js:186 templates/js/translated/modals.js:1054
+#: templates/js/translated/api.js:186 templates/js/translated/modals.js:1057
msgid "No response from the InvenTree server"
msgstr ""
@@ -7341,27 +7394,27 @@ msgstr ""
msgid "API request returned error code 400"
msgstr ""
-#: templates/js/translated/api.js:197 templates/js/translated/modals.js:1063
+#: templates/js/translated/api.js:197 templates/js/translated/modals.js:1066
msgid "Error 401: Not Authenticated"
msgstr ""
-#: templates/js/translated/api.js:198 templates/js/translated/modals.js:1064
+#: templates/js/translated/api.js:198 templates/js/translated/modals.js:1067
msgid "Authentication credentials not supplied"
msgstr ""
-#: templates/js/translated/api.js:202 templates/js/translated/modals.js:1068
+#: templates/js/translated/api.js:202 templates/js/translated/modals.js:1071
msgid "Error 403: Permission Denied"
msgstr ""
-#: templates/js/translated/api.js:203 templates/js/translated/modals.js:1069
+#: templates/js/translated/api.js:203 templates/js/translated/modals.js:1072
msgid "You do not have the required permissions to access this function"
msgstr ""
-#: templates/js/translated/api.js:207 templates/js/translated/modals.js:1073
+#: templates/js/translated/api.js:207 templates/js/translated/modals.js:1076
msgid "Error 404: Resource Not Found"
msgstr ""
-#: templates/js/translated/api.js:208 templates/js/translated/modals.js:1074
+#: templates/js/translated/api.js:208 templates/js/translated/modals.js:1077
msgid "The requested resource could not be located on the server"
msgstr ""
@@ -7373,11 +7426,11 @@ msgstr ""
msgid "HTTP method not allowed at URL"
msgstr ""
-#: templates/js/translated/api.js:217 templates/js/translated/modals.js:1078
+#: templates/js/translated/api.js:217 templates/js/translated/modals.js:1081
msgid "Error 408: Timeout"
-msgstr ""
+msgstr "오류 408: 시간 초과"
-#: templates/js/translated/api.js:218 templates/js/translated/modals.js:1079
+#: templates/js/translated/api.js:218 templates/js/translated/modals.js:1082
msgid "Connection timeout while requesting data from server"
msgstr ""
@@ -7427,7 +7480,7 @@ msgstr ""
#: templates/js/translated/barcode.js:35
msgid "Barcode"
-msgstr ""
+msgstr "바코드"
#: templates/js/translated/barcode.js:53
msgid "Enter optional notes for stock transfer"
@@ -7439,14 +7492,14 @@ msgstr ""
#: templates/js/translated/barcode.js:92
msgid "Server error"
-msgstr ""
+msgstr "서버 오류"
#: templates/js/translated/barcode.js:113
msgid "Unknown response from server"
msgstr ""
#: templates/js/translated/barcode.js:140
-#: templates/js/translated/modals.js:1043
+#: templates/js/translated/modals.js:1046
msgid "Invalid server response"
msgstr ""
@@ -7474,7 +7527,7 @@ msgstr ""
msgid "Unlink"
msgstr ""
-#: templates/js/translated/barcode.js:397 templates/js/translated/stock.js:1026
+#: templates/js/translated/barcode.js:397 templates/js/translated/stock.js:1027
msgid "Remove stock item"
msgstr ""
@@ -7516,327 +7569,369 @@ msgstr ""
msgid "Barcode does not match a valid location"
msgstr ""
-#: templates/js/translated/bom.js:36
+#: templates/js/translated/bom.js:75
+msgid "Display row data"
+msgstr ""
+
+#: templates/js/translated/bom.js:131
+msgid "Row Data"
+msgstr ""
+
+#: templates/js/translated/bom.js:249
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:518
+#: templates/js/translated/bom.js:252 templates/js/translated/bom.js:286
+#: templates/js/translated/order.js:369 templates/js/translated/stock.js:519
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:519
+#: templates/js/translated/bom.js:253 templates/js/translated/bom.js:287
+#: templates/js/translated/order.js:370 templates/js/translated/stock.js:520
msgid "Select file format"
msgstr ""
-#: templates/js/translated/bom.js:81
+#: templates/js/translated/bom.js:294
msgid "Cascading"
msgstr ""
-#: templates/js/translated/bom.js:82
+#: templates/js/translated/bom.js:295
msgid "Download cascading / multi-level BOM"
msgstr ""
-#: templates/js/translated/bom.js:87
+#: templates/js/translated/bom.js:300
msgid "Levels"
msgstr ""
-#: templates/js/translated/bom.js:88
+#: templates/js/translated/bom.js:301
msgid "Select maximum number of BOM levels to export (0 = all levels)"
msgstr ""
-#: templates/js/translated/bom.js:94
+#: templates/js/translated/bom.js:307
msgid "Include Parameter Data"
msgstr ""
-#: templates/js/translated/bom.js:95
+#: templates/js/translated/bom.js:308
msgid "Include part parameter data in exported BOM"
msgstr ""
-#: templates/js/translated/bom.js:100
+#: templates/js/translated/bom.js:313
msgid "Include Stock Data"
msgstr ""
-#: templates/js/translated/bom.js:101
+#: templates/js/translated/bom.js:314
msgid "Include part stock data in exported BOM"
msgstr ""
-#: templates/js/translated/bom.js:106
+#: templates/js/translated/bom.js:319
msgid "Include Manufacturer Data"
msgstr ""
-#: templates/js/translated/bom.js:107
+#: templates/js/translated/bom.js:320
msgid "Include part manufacturer data in exported BOM"
msgstr ""
-#: templates/js/translated/bom.js:112
+#: templates/js/translated/bom.js:325
msgid "Include Supplier Data"
msgstr ""
-#: templates/js/translated/bom.js:113
+#: templates/js/translated/bom.js:326
msgid "Include part supplier data in exported BOM"
msgstr ""
-#: templates/js/translated/bom.js:296
+#: templates/js/translated/bom.js:509
msgid "Remove substitute part"
msgstr ""
-#: templates/js/translated/bom.js:352
+#: templates/js/translated/bom.js:565
msgid "Select and add a new substitute part using the input below"
msgstr ""
-#: templates/js/translated/bom.js:363
+#: templates/js/translated/bom.js:576
msgid "Are you sure you wish to remove this substitute part link?"
msgstr ""
-#: templates/js/translated/bom.js:369
+#: templates/js/translated/bom.js:582
msgid "Remove Substitute Part"
msgstr ""
-#: templates/js/translated/bom.js:408
+#: templates/js/translated/bom.js:621
msgid "Add Substitute"
msgstr ""
-#: templates/js/translated/bom.js:409
+#: templates/js/translated/bom.js:622
msgid "Edit BOM Item Substitutes"
msgstr ""
-#: templates/js/translated/bom.js:528
+#: templates/js/translated/bom.js:741
msgid "Substitutes Available"
msgstr ""
-#: templates/js/translated/bom.js:532 templates/js/translated/build.js:1171
+#: templates/js/translated/bom.js:745 templates/js/translated/build.js:1393
msgid "Variant stock allowed"
msgstr ""
-#: templates/js/translated/bom.js:537
+#: templates/js/translated/bom.js:750
msgid "Open subassembly"
msgstr ""
-#: templates/js/translated/bom.js:609
+#: templates/js/translated/bom.js:822
msgid "Substitutes"
msgstr ""
-#: templates/js/translated/bom.js:624
+#: templates/js/translated/bom.js:837
msgid "Purchase Price Range"
msgstr ""
-#: templates/js/translated/bom.js:631
+#: templates/js/translated/bom.js:844
msgid "Purchase Price Average"
msgstr ""
-#: templates/js/translated/bom.js:680 templates/js/translated/bom.js:769
+#: templates/js/translated/bom.js:893 templates/js/translated/bom.js:982
msgid "View BOM"
msgstr ""
-#: templates/js/translated/bom.js:740
+#: templates/js/translated/bom.js:953
msgid "Validate BOM Item"
msgstr ""
-#: templates/js/translated/bom.js:742
+#: templates/js/translated/bom.js:955
msgid "This line has been validated"
msgstr ""
-#: templates/js/translated/bom.js:744
+#: templates/js/translated/bom.js:957
msgid "Edit substitute parts"
msgstr ""
-#: templates/js/translated/bom.js:746 templates/js/translated/bom.js:920
+#: templates/js/translated/bom.js:959 templates/js/translated/bom.js:1138
msgid "Edit BOM Item"
msgstr ""
-#: templates/js/translated/bom.js:748 templates/js/translated/bom.js:903
+#: templates/js/translated/bom.js:961 templates/js/translated/bom.js:1121
msgid "Delete BOM Item"
msgstr ""
-#: templates/js/translated/bom.js:842 templates/js/translated/build.js:915
+#: templates/js/translated/bom.js:1060 templates/js/translated/build.js:1137
msgid "No BOM items found"
msgstr ""
-#: templates/js/translated/bom.js:898
+#: templates/js/translated/bom.js:1116
msgid "Are you sure you want to delete this BOM item?"
msgstr ""
-#: templates/js/translated/bom.js:1100 templates/js/translated/build.js:1155
+#: templates/js/translated/bom.js:1318 templates/js/translated/build.js:1377
msgid "Required Part"
msgstr ""
-#: templates/js/translated/bom.js:1122
+#: templates/js/translated/bom.js:1340
msgid "Inherited from parent BOM"
msgstr ""
-#: templates/js/translated/build.js:84
+#: templates/js/translated/build.js:85
msgid "Edit Build Order"
msgstr ""
-#: templates/js/translated/build.js:118
+#: templates/js/translated/build.js:119
msgid "Create Build Order"
msgstr ""
-#: templates/js/translated/build.js:139
+#: templates/js/translated/build.js:140
msgid "Build order is ready to be completed"
msgstr ""
-#: templates/js/translated/build.js:144
+#: templates/js/translated/build.js:145
msgid "Build Order is incomplete"
msgstr ""
-#: templates/js/translated/build.js:172
+#: templates/js/translated/build.js:173
msgid "Complete Build Order"
msgstr ""
-#: templates/js/translated/build.js:193
+#: templates/js/translated/build.js:214 templates/js/translated/stock.js:93
+#: templates/js/translated/stock.js:182
+msgid "Next available serial number"
+msgstr ""
+
+#: templates/js/translated/build.js:216 templates/js/translated/stock.js:95
+#: templates/js/translated/stock.js:184
+msgid "Latest serial number"
+msgstr ""
+
+#: templates/js/translated/build.js:225
+msgid "The Bill of Materials contains trackable parts"
+msgstr ""
+
+#: templates/js/translated/build.js:226
+msgid "Build outputs must be generated individually"
+msgstr ""
+
+#: templates/js/translated/build.js:234
+msgid "Trackable parts can have serial numbers specified"
+msgstr ""
+
+#: templates/js/translated/build.js:235
+msgid "Enter serial numbers to generate multiple single build outputs"
+msgstr ""
+
+#: templates/js/translated/build.js:242
+msgid "Create Build Output"
+msgstr ""
+
+#: templates/js/translated/build.js:273
msgid "Allocate stock items to this build output"
msgstr ""
-#: templates/js/translated/build.js:204
+#: templates/js/translated/build.js:284
msgid "Unallocate stock from build output"
msgstr ""
-#: templates/js/translated/build.js:213
+#: templates/js/translated/build.js:293
msgid "Complete build output"
msgstr ""
-#: templates/js/translated/build.js:221
+#: templates/js/translated/build.js:301
msgid "Delete build output"
msgstr ""
-#: templates/js/translated/build.js:244
+#: templates/js/translated/build.js:324
msgid "Are you sure you wish to unallocate stock items from this build?"
msgstr ""
-#: templates/js/translated/build.js:262
+#: templates/js/translated/build.js:342
msgid "Unallocate Stock Items"
msgstr ""
-#: templates/js/translated/build.js:280
+#: templates/js/translated/build.js:360 templates/js/translated/build.js:508
msgid "Select Build Outputs"
msgstr ""
-#: templates/js/translated/build.js:281
+#: templates/js/translated/build.js:361 templates/js/translated/build.js:509
msgid "At least one build output must be selected"
msgstr ""
-#: templates/js/translated/build.js:335
+#: templates/js/translated/build.js:415 templates/js/translated/build.js:563
msgid "Output"
msgstr ""
-#: templates/js/translated/build.js:351
+#: templates/js/translated/build.js:431
msgid "Complete Build Outputs"
msgstr ""
-#: templates/js/translated/build.js:446
+#: templates/js/translated/build.js:576
+msgid "Delete Build Outputs"
+msgstr ""
+
+#: templates/js/translated/build.js:665
msgid "No build order allocations found"
msgstr ""
-#: templates/js/translated/build.js:484 templates/js/translated/order.js:1848
+#: templates/js/translated/build.js:703 templates/js/translated/order.js:1848
msgid "Location not specified"
msgstr ""
-#: templates/js/translated/build.js:663
+#: templates/js/translated/build.js:885
msgid "No active build outputs found"
msgstr ""
-#: templates/js/translated/build.js:1112 templates/js/translated/build.js:1821
+#: templates/js/translated/build.js:1334 templates/js/translated/build.js:2059
#: templates/js/translated/order.js:1982
msgid "Edit stock allocation"
msgstr ""
-#: templates/js/translated/build.js:1114 templates/js/translated/build.js:1822
+#: templates/js/translated/build.js:1336 templates/js/translated/build.js:2060
#: templates/js/translated/order.js:1983
msgid "Delete stock allocation"
msgstr ""
-#: templates/js/translated/build.js:1132
+#: templates/js/translated/build.js:1354
msgid "Edit Allocation"
msgstr ""
-#: templates/js/translated/build.js:1142
+#: templates/js/translated/build.js:1364
msgid "Remove Allocation"
msgstr ""
-#: templates/js/translated/build.js:1167
+#: templates/js/translated/build.js:1389
msgid "Substitute parts available"
msgstr ""
-#: templates/js/translated/build.js:1184
+#: templates/js/translated/build.js:1406
msgid "Quantity Per"
msgstr ""
-#: templates/js/translated/build.js:1194 templates/js/translated/build.js:1420
-#: templates/js/translated/build.js:1817 templates/js/translated/order.js:2227
+#: templates/js/translated/build.js:1416 templates/js/translated/build.js:1656
+#: templates/js/translated/build.js:2055 templates/js/translated/order.js:2227
msgid "Allocated"
msgstr ""
-#: templates/js/translated/build.js:1250 templates/js/translated/order.js:2307
+#: templates/js/translated/build.js:1472 templates/js/translated/order.js:2307
msgid "Build stock"
msgstr ""
-#: templates/js/translated/build.js:1254 templates/stock_table.html:53
+#: templates/js/translated/build.js:1476 templates/stock_table.html:53
msgid "Order stock"
msgstr ""
-#: templates/js/translated/build.js:1257 templates/js/translated/order.js:2300
+#: templates/js/translated/build.js:1479 templates/js/translated/order.js:2300
msgid "Allocate stock"
msgstr ""
-#: templates/js/translated/build.js:1322 templates/js/translated/order.js:1499
+#: templates/js/translated/build.js:1558 templates/js/translated/order.js:1499
msgid "Specify stock allocation quantity"
msgstr ""
-#: templates/js/translated/build.js:1393 templates/js/translated/label.js:134
+#: templates/js/translated/build.js:1629 templates/js/translated/label.js:134
#: templates/js/translated/order.js:1550 templates/js/translated/report.js:225
msgid "Select Parts"
msgstr ""
-#: templates/js/translated/build.js:1394 templates/js/translated/order.js:1551
+#: templates/js/translated/build.js:1630 templates/js/translated/order.js:1551
msgid "You must select at least one part to allocate"
msgstr ""
-#: templates/js/translated/build.js:1408 templates/js/translated/order.js:1565
+#: templates/js/translated/build.js:1644 templates/js/translated/order.js:1565
msgid "Select source location (leave blank to take from all locations)"
msgstr ""
-#: templates/js/translated/build.js:1437 templates/js/translated/order.js:1600
+#: templates/js/translated/build.js:1673 templates/js/translated/order.js:1600
msgid "Confirm stock allocation"
msgstr ""
-#: templates/js/translated/build.js:1438
+#: templates/js/translated/build.js:1674
msgid "Allocate Stock Items to Build Order"
msgstr ""
-#: templates/js/translated/build.js:1449 templates/js/translated/order.js:1613
+#: templates/js/translated/build.js:1685 templates/js/translated/order.js:1613
msgid "No matching stock locations"
msgstr ""
-#: templates/js/translated/build.js:1519 templates/js/translated/order.js:1690
+#: templates/js/translated/build.js:1757 templates/js/translated/order.js:1690
msgid "No matching stock items"
msgstr ""
-#: templates/js/translated/build.js:1637
+#: templates/js/translated/build.js:1875
msgid "No builds matching query"
msgstr ""
-#: templates/js/translated/build.js:1654 templates/js/translated/part.js:1213
-#: templates/js/translated/part.js:1624 templates/js/translated/stock.js:1520
-#: templates/js/translated/stock.js:2479
+#: templates/js/translated/build.js:1892 templates/js/translated/part.js:1213
+#: templates/js/translated/part.js:1624 templates/js/translated/stock.js:1644
+#: templates/js/translated/stock.js:2603
msgid "Select"
-msgstr ""
+msgstr "선택"
-#: templates/js/translated/build.js:1674
+#: templates/js/translated/build.js:1912
msgid "Build order is overdue"
msgstr ""
-#: templates/js/translated/build.js:1735 templates/js/translated/stock.js:2698
+#: templates/js/translated/build.js:1973 templates/js/translated/stock.js:2822
msgid "No user information"
msgstr ""
-#: templates/js/translated/build.js:1747
+#: templates/js/translated/build.js:1985
msgid "No information"
msgstr ""
-#: templates/js/translated/build.js:1798
+#: templates/js/translated/build.js:2036
msgid "No parts allocated for"
msgstr ""
@@ -7966,48 +8061,60 @@ msgstr ""
msgid "Create filter"
msgstr ""
-#: templates/js/translated/forms.js:350 templates/js/translated/forms.js:365
-#: templates/js/translated/forms.js:379 templates/js/translated/forms.js:393
+#: templates/js/translated/forms.js:351 templates/js/translated/forms.js:366
+#: templates/js/translated/forms.js:380 templates/js/translated/forms.js:394
msgid "Action Prohibited"
msgstr ""
-#: templates/js/translated/forms.js:352
+#: templates/js/translated/forms.js:353
msgid "Create operation not allowed"
msgstr ""
-#: templates/js/translated/forms.js:367
+#: templates/js/translated/forms.js:368
msgid "Update operation not allowed"
msgstr ""
-#: templates/js/translated/forms.js:381
+#: templates/js/translated/forms.js:382
msgid "Delete operation not allowed"
msgstr ""
-#: templates/js/translated/forms.js:395
+#: templates/js/translated/forms.js:396
msgid "View operation not allowed"
msgstr ""
-#: templates/js/translated/forms.js:680
+#: templates/js/translated/forms.js:681
msgid "Enter a valid number"
msgstr ""
-#: templates/js/translated/forms.js:1082 templates/modals.html:19
+#: templates/js/translated/forms.js:1129 templates/modals.html:19
#: templates/modals.html:43
msgid "Form errors exist"
msgstr ""
-#: templates/js/translated/forms.js:1487
+#: templates/js/translated/forms.js:1558
msgid "No results found"
msgstr ""
-#: templates/js/translated/forms.js:1691
+#: templates/js/translated/forms.js:1768
msgid "Searching"
msgstr ""
-#: templates/js/translated/forms.js:1930
+#: templates/js/translated/forms.js:2013
msgid "Clear input"
msgstr ""
+#: templates/js/translated/forms.js:2479
+msgid "File Column"
+msgstr ""
+
+#: templates/js/translated/forms.js:2479
+msgid "Field Name"
+msgstr ""
+
+#: templates/js/translated/forms.js:2491
+msgid "Select Columns"
+msgstr ""
+
#: templates/js/translated/helpers.js:19
msgid "YES"
msgstr "예"
@@ -8017,7 +8124,7 @@ msgid "NO"
msgstr "아니오"
#: templates/js/translated/label.js:29 templates/js/translated/report.js:118
-#: templates/js/translated/stock.js:1050
+#: templates/js/translated/stock.js:1051
msgid "Select Stock Items"
msgstr ""
@@ -8072,7 +8179,7 @@ msgid "Cancel"
msgstr "취소"
#: templates/js/translated/modals.js:77 templates/js/translated/modals.js:119
-#: templates/js/translated/modals.js:677 templates/js/translated/modals.js:982
+#: templates/js/translated/modals.js:677 templates/js/translated/modals.js:985
#: templates/modals.html:28 templates/modals.html:51
msgid "Submit"
msgstr "제출"
@@ -8097,31 +8204,31 @@ msgstr ""
msgid "Loading Data"
msgstr ""
-#: templates/js/translated/modals.js:934
+#: templates/js/translated/modals.js:937
msgid "Invalid response from server"
msgstr ""
-#: templates/js/translated/modals.js:934
+#: templates/js/translated/modals.js:937
msgid "Form data missing from server response"
msgstr ""
-#: templates/js/translated/modals.js:946
+#: templates/js/translated/modals.js:949
msgid "Error posting form data"
msgstr ""
-#: templates/js/translated/modals.js:1043
+#: templates/js/translated/modals.js:1046
msgid "JSON response missing form data"
msgstr ""
-#: templates/js/translated/modals.js:1058
+#: templates/js/translated/modals.js:1061
msgid "Error 400: Bad Request"
msgstr ""
-#: templates/js/translated/modals.js:1059
+#: templates/js/translated/modals.js:1062
msgid "Server returned error code 400"
msgstr ""
-#: templates/js/translated/modals.js:1082
+#: templates/js/translated/modals.js:1085
msgid "Error requesting form data"
msgstr ""
@@ -8141,10 +8248,6 @@ msgstr ""
msgid "Build ID"
msgstr ""
-#: templates/js/translated/model_renderers.js:182
-msgid "Part ID"
-msgstr ""
-
#: templates/js/translated/model_renderers.js:249
#: templates/js/translated/model_renderers.js:270
msgid "Order ID"
@@ -8210,7 +8313,7 @@ msgstr ""
msgid "Quantity to receive"
msgstr ""
-#: templates/js/translated/order.js:520 templates/js/translated/stock.js:2131
+#: templates/js/translated/order.js:520 templates/js/translated/stock.js:2255
msgid "Stock Status"
msgstr ""
@@ -8344,7 +8447,7 @@ msgid "Delete Stock Allocation"
msgstr ""
#: templates/js/translated/order.js:1959 templates/js/translated/order.js:2048
-#: templates/js/translated/stock.js:1436
+#: templates/js/translated/stock.js:1560
msgid "Shipped to customer"
msgstr ""
@@ -8506,7 +8609,7 @@ msgstr ""
#: templates/js/translated/part.js:481
msgid "Copy Bill of Materials"
-msgstr ""
+msgstr "부품 명세서 복사"
#: templates/js/translated/part.js:509 templates/js/translated/part.js:594
msgid "Trackable part"
@@ -8545,12 +8648,12 @@ msgid "No category"
msgstr ""
#: templates/js/translated/part.js:1296
-#: templates/js/translated/table_filters.js:430
+#: templates/js/translated/table_filters.js:425
msgid "Low stock"
msgstr ""
#: templates/js/translated/part.js:1387 templates/js/translated/part.js:1559
-#: templates/js/translated/stock.js:2440
+#: templates/js/translated/stock.js:2564
msgid "Display as list"
msgstr ""
@@ -8558,7 +8661,7 @@ msgstr ""
msgid "Display as grid"
msgstr ""
-#: templates/js/translated/part.js:1578 templates/js/translated/stock.js:2459
+#: templates/js/translated/part.js:1578 templates/js/translated/stock.js:2583
msgid "Display as tree"
msgstr ""
@@ -8566,7 +8669,7 @@ msgstr ""
msgid "Subscribed category"
msgstr ""
-#: templates/js/translated/part.js:1656 templates/js/translated/stock.js:2503
+#: templates/js/translated/part.js:1656 templates/js/translated/stock.js:2627
msgid "Path"
msgstr ""
@@ -8574,11 +8677,12 @@ msgstr ""
msgid "No test templates matching query"
msgstr ""
-#: templates/js/translated/part.js:1751 templates/js/translated/stock.js:1242
+#: templates/js/translated/part.js:1751 templates/js/translated/stock.js:1271
msgid "Edit test result"
msgstr ""
-#: templates/js/translated/part.js:1752 templates/js/translated/stock.js:1243
+#: templates/js/translated/part.js:1752 templates/js/translated/stock.js:1272
+#: templates/js/translated/stock.js:1518
msgid "Delete test result"
msgstr ""
@@ -8687,347 +8791,375 @@ msgstr ""
msgid "Sales Order(s) must be selected before printing report"
msgstr ""
-#: templates/js/translated/stock.js:74
+#: templates/js/translated/stock.js:75
msgid "Serialize Stock Item"
msgstr ""
-#: templates/js/translated/stock.js:92 templates/js/translated/stock.js:181
-msgid "Next available serial number"
-msgstr ""
-
-#: templates/js/translated/stock.js:94 templates/js/translated/stock.js:183
-msgid "Latest serial number"
-msgstr ""
-
-#: templates/js/translated/stock.js:102
+#: templates/js/translated/stock.js:103
msgid "Confirm Stock Serialization"
msgstr ""
-#: templates/js/translated/stock.js:111
+#: templates/js/translated/stock.js:112
msgid "Parent stock location"
msgstr ""
-#: templates/js/translated/stock.js:154
+#: templates/js/translated/stock.js:155
msgid "New Stock Location"
msgstr ""
-#: templates/js/translated/stock.js:194
+#: templates/js/translated/stock.js:195
msgid "This part cannot be serialized"
msgstr ""
-#: templates/js/translated/stock.js:233
+#: templates/js/translated/stock.js:234
msgid "Enter initial quantity for this stock item"
msgstr ""
-#: templates/js/translated/stock.js:239
+#: templates/js/translated/stock.js:240
msgid "Enter serial numbers for new stock (or leave blank)"
msgstr ""
-#: templates/js/translated/stock.js:382
+#: templates/js/translated/stock.js:383
msgid "Created new stock item"
msgstr ""
-#: templates/js/translated/stock.js:395
+#: templates/js/translated/stock.js:396
msgid "Created multiple stock items"
msgstr ""
-#: templates/js/translated/stock.js:420
+#: templates/js/translated/stock.js:421
msgid "Find Serial Number"
msgstr "일련번호 찾기"
-#: templates/js/translated/stock.js:424 templates/js/translated/stock.js:425
+#: templates/js/translated/stock.js:425 templates/js/translated/stock.js:426
msgid "Enter serial number"
msgstr "일련번호를 입력하세요"
-#: templates/js/translated/stock.js:441
+#: templates/js/translated/stock.js:442
msgid "Enter a serial number"
-msgstr ""
+msgstr "일련번호를 입력하세요"
-#: templates/js/translated/stock.js:461
+#: templates/js/translated/stock.js:462
msgid "No matching serial number"
-msgstr ""
+msgstr "일치하는 일련번호가 없습니다"
-#: templates/js/translated/stock.js:470
+#: templates/js/translated/stock.js:471
msgid "More than one matching result found"
msgstr ""
-#: templates/js/translated/stock.js:515
+#: templates/js/translated/stock.js:516
msgid "Export Stock"
msgstr ""
-#: templates/js/translated/stock.js:526
+#: templates/js/translated/stock.js:527
msgid "Include Sublocations"
msgstr ""
-#: templates/js/translated/stock.js:527
+#: templates/js/translated/stock.js:528
msgid "Include stock items in sublocations"
msgstr ""
-#: templates/js/translated/stock.js:636
+#: templates/js/translated/stock.js:637
msgid "Confirm stock assignment"
msgstr ""
-#: templates/js/translated/stock.js:637
+#: templates/js/translated/stock.js:638
msgid "Assign Stock to Customer"
msgstr ""
-#: templates/js/translated/stock.js:714
+#: templates/js/translated/stock.js:715
msgid "Warning: Merge operation cannot be reversed"
msgstr ""
-#: templates/js/translated/stock.js:715
+#: templates/js/translated/stock.js:716
msgid "Some information will be lost when merging stock items"
msgstr ""
-#: templates/js/translated/stock.js:717
+#: templates/js/translated/stock.js:718
msgid "Stock transaction history will be deleted for merged items"
msgstr ""
-#: templates/js/translated/stock.js:718
+#: templates/js/translated/stock.js:719
msgid "Supplier part information will be deleted for merged items"
msgstr ""
-#: templates/js/translated/stock.js:804
+#: templates/js/translated/stock.js:805
msgid "Confirm stock item merge"
msgstr ""
-#: templates/js/translated/stock.js:805
+#: templates/js/translated/stock.js:806
msgid "Merge Stock Items"
msgstr ""
-#: templates/js/translated/stock.js:900
+#: templates/js/translated/stock.js:901
msgid "Transfer Stock"
msgstr ""
-#: templates/js/translated/stock.js:901
+#: templates/js/translated/stock.js:902
msgid "Move"
msgstr ""
-#: templates/js/translated/stock.js:907
+#: templates/js/translated/stock.js:908
msgid "Count Stock"
msgstr ""
-#: templates/js/translated/stock.js:908
+#: templates/js/translated/stock.js:909
msgid "Count"
msgstr ""
-#: templates/js/translated/stock.js:912
+#: templates/js/translated/stock.js:913
msgid "Remove Stock"
msgstr ""
-#: templates/js/translated/stock.js:913
+#: templates/js/translated/stock.js:914
msgid "Take"
msgstr ""
-#: templates/js/translated/stock.js:917
+#: templates/js/translated/stock.js:918
msgid "Add Stock"
msgstr ""
-#: templates/js/translated/stock.js:918 users/models.py:208
+#: templates/js/translated/stock.js:919 users/models.py:213
msgid "Add"
msgstr ""
-#: templates/js/translated/stock.js:922 templates/stock_table.html:58
+#: templates/js/translated/stock.js:923 templates/stock_table.html:58
msgid "Delete Stock"
msgstr ""
-#: templates/js/translated/stock.js:1011
+#: templates/js/translated/stock.js:1012
msgid "Quantity cannot be adjusted for serialized stock"
msgstr ""
-#: templates/js/translated/stock.js:1011
+#: templates/js/translated/stock.js:1012
msgid "Specify stock quantity"
msgstr ""
-#: templates/js/translated/stock.js:1051
+#: templates/js/translated/stock.js:1052
msgid "You must select at least one available stock item"
msgstr ""
-#: templates/js/translated/stock.js:1209
+#: templates/js/translated/stock.js:1210
msgid "PASS"
msgstr ""
-#: templates/js/translated/stock.js:1211
+#: templates/js/translated/stock.js:1212
msgid "FAIL"
msgstr ""
-#: templates/js/translated/stock.js:1216
+#: templates/js/translated/stock.js:1217
msgid "NO RESULT"
msgstr ""
-#: templates/js/translated/stock.js:1238
+#: templates/js/translated/stock.js:1264
+msgid "Pass test"
+msgstr ""
+
+#: templates/js/translated/stock.js:1267
msgid "Add test result"
msgstr ""
-#: templates/js/translated/stock.js:1264
+#: templates/js/translated/stock.js:1293
msgid "No test results found"
msgstr ""
-#: templates/js/translated/stock.js:1321
+#: templates/js/translated/stock.js:1349
msgid "Test Date"
msgstr ""
-#: templates/js/translated/stock.js:1428
+#: templates/js/translated/stock.js:1501
+msgid "Edit Test Result"
+msgstr ""
+
+#: templates/js/translated/stock.js:1523
+msgid "Delete Test Result"
+msgstr ""
+
+#: templates/js/translated/stock.js:1552
msgid "In production"
msgstr ""
-#: templates/js/translated/stock.js:1432
+#: templates/js/translated/stock.js:1556
msgid "Installed in Stock Item"
msgstr ""
-#: templates/js/translated/stock.js:1440
+#: templates/js/translated/stock.js:1564
msgid "Assigned to Sales Order"
msgstr ""
-#: templates/js/translated/stock.js:1446
+#: templates/js/translated/stock.js:1570
msgid "No stock location set"
msgstr ""
-#: templates/js/translated/stock.js:1604
+#: templates/js/translated/stock.js:1728
msgid "Stock item is in production"
msgstr ""
-#: templates/js/translated/stock.js:1609
+#: templates/js/translated/stock.js:1733
msgid "Stock item assigned to sales order"
msgstr ""
-#: templates/js/translated/stock.js:1612
+#: templates/js/translated/stock.js:1736
msgid "Stock item assigned to customer"
msgstr ""
-#: templates/js/translated/stock.js:1616
+#: templates/js/translated/stock.js:1740
msgid "Stock item has expired"
msgstr ""
-#: templates/js/translated/stock.js:1618
+#: templates/js/translated/stock.js:1742
msgid "Stock item will expire soon"
msgstr ""
-#: templates/js/translated/stock.js:1624
+#: templates/js/translated/stock.js:1748
msgid "Serialized stock item has been allocated"
msgstr ""
-#: templates/js/translated/stock.js:1626
+#: templates/js/translated/stock.js:1750
msgid "Stock item has been fully allocated"
msgstr ""
-#: templates/js/translated/stock.js:1628
+#: templates/js/translated/stock.js:1752
msgid "Stock item has been partially allocated"
msgstr ""
-#: templates/js/translated/stock.js:1633
+#: templates/js/translated/stock.js:1757
msgid "Stock item has been installed in another item"
msgstr ""
-#: templates/js/translated/stock.js:1640
+#: templates/js/translated/stock.js:1764
msgid "Stock item has been rejected"
msgstr ""
-#: templates/js/translated/stock.js:1642
+#: templates/js/translated/stock.js:1766
msgid "Stock item is lost"
msgstr ""
-#: templates/js/translated/stock.js:1644
+#: templates/js/translated/stock.js:1768
msgid "Stock item is destroyed"
msgstr ""
-#: templates/js/translated/stock.js:1648
+#: templates/js/translated/stock.js:1772
#: templates/js/translated/table_filters.js:188
msgid "Depleted"
msgstr ""
-#: templates/js/translated/stock.js:1698
+#: templates/js/translated/stock.js:1822
msgid "Stocktake"
msgstr ""
-#: templates/js/translated/stock.js:1771
+#: templates/js/translated/stock.js:1895
msgid "Supplier part not specified"
msgstr ""
-#: templates/js/translated/stock.js:1809
+#: templates/js/translated/stock.js:1933
msgid "No stock items matching query"
msgstr ""
-#: templates/js/translated/stock.js:1830 templates/js/translated/stock.js:1878
+#: templates/js/translated/stock.js:1954 templates/js/translated/stock.js:2002
msgid "items"
msgstr ""
-#: templates/js/translated/stock.js:1918
+#: templates/js/translated/stock.js:2042
msgid "batches"
msgstr ""
-#: templates/js/translated/stock.js:1945
+#: templates/js/translated/stock.js:2069
msgid "locations"
msgstr ""
-#: templates/js/translated/stock.js:1947
+#: templates/js/translated/stock.js:2071
msgid "Undefined location"
msgstr ""
-#: templates/js/translated/stock.js:2146
+#: templates/js/translated/stock.js:2270
msgid "Set Stock Status"
msgstr ""
-#: templates/js/translated/stock.js:2160
+#: templates/js/translated/stock.js:2284
msgid "Select Status Code"
msgstr ""
-#: templates/js/translated/stock.js:2161
+#: templates/js/translated/stock.js:2285
msgid "Status code must be selected"
msgstr ""
-#: templates/js/translated/stock.js:2340
+#: templates/js/translated/stock.js:2464
msgid "Allocated Quantity"
msgstr ""
-#: templates/js/translated/stock.js:2535
+#: templates/js/translated/stock.js:2659
msgid "Invalid date"
msgstr ""
-#: templates/js/translated/stock.js:2557
+#: templates/js/translated/stock.js:2681
msgid "Details"
msgstr ""
-#: templates/js/translated/stock.js:2582
+#: templates/js/translated/stock.js:2706
msgid "Location no longer exists"
msgstr ""
-#: templates/js/translated/stock.js:2601
+#: templates/js/translated/stock.js:2725
msgid "Purchase order no longer exists"
msgstr ""
-#: templates/js/translated/stock.js:2620
+#: templates/js/translated/stock.js:2744
msgid "Customer no longer exists"
msgstr ""
-#: templates/js/translated/stock.js:2638
+#: templates/js/translated/stock.js:2762
msgid "Stock item no longer exists"
msgstr ""
-#: templates/js/translated/stock.js:2661
+#: templates/js/translated/stock.js:2785
msgid "Added"
msgstr ""
-#: templates/js/translated/stock.js:2669
+#: templates/js/translated/stock.js:2793
msgid "Removed"
msgstr ""
-#: templates/js/translated/stock.js:2710
+#: templates/js/translated/stock.js:2834
msgid "Edit tracking entry"
msgstr ""
-#: templates/js/translated/stock.js:2711
+#: templates/js/translated/stock.js:2835
msgid "Delete tracking entry"
msgstr ""
-#: templates/js/translated/stock.js:2762
+#: templates/js/translated/stock.js:2886
msgid "No installed items"
msgstr ""
-#: templates/js/translated/stock.js:2813
+#: templates/js/translated/stock.js:2937
msgid "Uninstall Stock Item"
msgstr ""
+#: templates/js/translated/stock.js:2973
+msgid "Install another stock item into this item"
+msgstr ""
+
+#: templates/js/translated/stock.js:2974
+msgid "Stock items can only be installed if they meet the following criteria"
+msgstr ""
+
+#: templates/js/translated/stock.js:2976
+msgid "The Stock Item links to a Part which is the BOM for this Stock Item"
+msgstr ""
+
+#: templates/js/translated/stock.js:2977
+msgid "The Stock Item is currently available in stock"
+msgstr ""
+
+#: templates/js/translated/stock.js:2978
+msgid "The Stock Item is serialized and does not belong to another item"
+msgstr ""
+
+#: templates/js/translated/stock.js:2991
+msgid "Select part to install"
+msgstr ""
+
#: templates/js/translated/table_filters.js:56
msgid "Trackable Part"
msgstr ""
@@ -9055,12 +9187,12 @@ msgstr ""
#: templates/js/translated/table_filters.js:121
#: templates/js/translated/table_filters.js:122
-#: templates/js/translated/table_filters.js:407
+#: templates/js/translated/table_filters.js:402
msgid "Include subcategories"
msgstr ""
#: templates/js/translated/table_filters.js:126
-#: templates/js/translated/table_filters.js:442
+#: templates/js/translated/table_filters.js:437
msgid "Subscribed"
msgstr ""
@@ -9094,7 +9226,7 @@ msgstr ""
#: templates/js/translated/table_filters.js:221
#: templates/js/translated/table_filters.js:222
msgid "Serial number"
-msgstr ""
+msgstr "일련번호"
#: templates/js/translated/table_filters.js:152
#: templates/js/translated/table_filters.js:239
@@ -9102,7 +9234,7 @@ msgid "Batch code"
msgstr ""
#: templates/js/translated/table_filters.js:163
-#: templates/js/translated/table_filters.js:379
+#: templates/js/translated/table_filters.js:374
msgid "Active parts"
msgstr ""
@@ -9187,47 +9319,47 @@ msgstr ""
msgid "Show stock which is close to expiring"
msgstr ""
-#: templates/js/translated/table_filters.js:290
+#: templates/js/translated/table_filters.js:285
msgid "Build status"
msgstr ""
-#: templates/js/translated/table_filters.js:303
-#: templates/js/translated/table_filters.js:344
+#: templates/js/translated/table_filters.js:298
+#: templates/js/translated/table_filters.js:339
msgid "Assigned to me"
msgstr ""
-#: templates/js/translated/table_filters.js:320
-#: templates/js/translated/table_filters.js:331
-#: templates/js/translated/table_filters.js:352
+#: templates/js/translated/table_filters.js:315
+#: templates/js/translated/table_filters.js:326
+#: templates/js/translated/table_filters.js:347
msgid "Order status"
msgstr ""
-#: templates/js/translated/table_filters.js:336
-#: templates/js/translated/table_filters.js:357
+#: templates/js/translated/table_filters.js:331
+#: templates/js/translated/table_filters.js:352
msgid "Outstanding"
msgstr ""
-#: templates/js/translated/table_filters.js:408
+#: templates/js/translated/table_filters.js:403
msgid "Include parts in subcategories"
msgstr ""
-#: templates/js/translated/table_filters.js:412
+#: templates/js/translated/table_filters.js:407
msgid "Has IPN"
msgstr ""
-#: templates/js/translated/table_filters.js:413
+#: templates/js/translated/table_filters.js:408
msgid "Part has internal part number"
msgstr ""
-#: templates/js/translated/table_filters.js:418
+#: templates/js/translated/table_filters.js:413
msgid "Show active parts"
msgstr ""
-#: templates/js/translated/table_filters.js:426
+#: templates/js/translated/table_filters.js:421
msgid "Stock available"
msgstr ""
-#: templates/js/translated/table_filters.js:454
+#: templates/js/translated/table_filters.js:449
msgid "Purchasable"
msgstr ""
@@ -9480,35 +9612,35 @@ msgstr ""
msgid "Important dates"
msgstr ""
-#: users/models.py:195
+#: users/models.py:200
msgid "Permission set"
msgstr ""
-#: users/models.py:203
+#: users/models.py:208
msgid "Group"
msgstr ""
-#: users/models.py:206
+#: users/models.py:211
msgid "View"
msgstr ""
-#: users/models.py:206
+#: users/models.py:211
msgid "Permission to view items"
msgstr ""
-#: users/models.py:208
+#: users/models.py:213
msgid "Permission to add items"
msgstr ""
-#: users/models.py:210
+#: users/models.py:215
msgid "Change"
msgstr ""
-#: users/models.py:210
+#: users/models.py:215
msgid "Permissions to edit items"
msgstr ""
-#: users/models.py:212
+#: users/models.py:217
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 73f5ea6755..64190d6ca7 100644
--- a/InvenTree/locale/nl/LC_MESSAGES/django.po
+++ b/InvenTree/locale/nl/LC_MESSAGES/django.po
@@ -3,8 +3,8 @@ msgid ""
msgstr ""
"Project-Id-Version: inventree\n"
"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2022-01-29 00:17+0000\n"
-"PO-Revision-Date: 2022-01-29 01:11\n"
+"POT-Creation-Date: 2022-02-18 20:36+0000\n"
+"PO-Revision-Date: 2022-02-18 20:38\n"
"Last-Translator: \n"
"Language-Team: Dutch\n"
"Language: nl_NL\n"
@@ -34,9 +34,9 @@ msgstr "Geen overeenkomende actie gevonden"
msgid "Enter date"
msgstr "Voer datum in"
-#: InvenTree/forms.py:126 build/forms.py:48 build/forms.py:69 order/forms.py:24
-#: order/forms.py:35 order/forms.py:46 order/forms.py:57
-#: templates/account/email_confirm.html:20 templates/js/translated/forms.js:595
+#: InvenTree/forms.py:126 order/forms.py:24 order/forms.py:35 order/forms.py:46
+#: order/forms.py:57 templates/account/email_confirm.html:20
+#: templates/js/translated/forms.js:596
msgid "Confirm"
msgstr "Bevestigen"
@@ -86,7 +86,7 @@ msgid "Duplicate serial: {n}"
msgstr "Dubbel serienummer: {n}"
#: InvenTree/helpers.py:446 order/models.py:282 order/models.py:425
-#: stock/views.py:1231
+#: stock/views.py:1082
msgid "Invalid quantity provided"
msgstr "Ongeldige hoeveeldheid ingevoerd"
@@ -119,133 +119,133 @@ msgstr "Geen serienummers gevonden"
msgid "Number of unique serial number ({s}) must match quantity ({q})"
msgstr "Aantal unieke serienummer ({s}) moet overeenkomen met de hoeveelheid ({q})"
-#: InvenTree/models.py:120
+#: InvenTree/models.py:176
msgid "Missing file"
msgstr "Ontbrekend bestand"
-#: InvenTree/models.py:121
+#: InvenTree/models.py:177
msgid "Missing external link"
msgstr "Externe link ontbreekt"
-#: InvenTree/models.py:132 stock/models.py:1995
+#: InvenTree/models.py:188 stock/models.py:1995
#: templates/js/translated/attachment.js:119
msgid "Attachment"
msgstr "Bijlage"
-#: InvenTree/models.py:133
+#: InvenTree/models.py:189
msgid "Select file to attach"
msgstr "Bestand als bijlage selecteren"
-#: InvenTree/models.py:139 company/models.py:131 company/models.py:348
-#: company/models.py:564 order/models.py:127 part/models.py:830
+#: InvenTree/models.py:195 company/models.py:131 company/models.py:348
+#: company/models.py:564 order/models.py:127 part/models.py:860
#: report/templates/report/inventree_build_order_base.html:165
#: templates/js/translated/company.js:540
#: templates/js/translated/company.js:829 templates/js/translated/part.js:1324
msgid "Link"
msgstr "Link"
-#: InvenTree/models.py:140 build/models.py:332 part/models.py:831
+#: InvenTree/models.py:196 build/models.py:332 part/models.py:861
#: stock/models.py:529
msgid "Link to external URL"
msgstr "Link naar externe URL"
-#: InvenTree/models.py:143 templates/js/translated/attachment.js:163
+#: InvenTree/models.py:199 templates/js/translated/attachment.js:163
msgid "Comment"
msgstr "Opmerking"
-#: InvenTree/models.py:143
+#: InvenTree/models.py:199
msgid "File comment"
msgstr "Bijlage opmerking"
-#: InvenTree/models.py:149 InvenTree/models.py:150 common/models.py:1223
-#: common/models.py:1224 common/models.py:1452 common/models.py:1453
-#: part/models.py:2265 part/models.py:2285
+#: InvenTree/models.py:205 InvenTree/models.py:206 common/models.py:1235
+#: common/models.py:1236 common/models.py:1464 common/models.py:1465
+#: part/models.py:2301 part/models.py:2321
#: report/templates/report/inventree_test_report_base.html:96
-#: templates/js/translated/stock.js:2692
+#: templates/js/translated/stock.js:2816
msgid "User"
msgstr "Gebruiker"
-#: InvenTree/models.py:153
+#: InvenTree/models.py:209
msgid "upload date"
msgstr "uploaddatum"
-#: InvenTree/models.py:176
+#: InvenTree/models.py:232
msgid "Filename must not be empty"
msgstr "Bestandsnaam mag niet leeg zijn"
-#: InvenTree/models.py:199
+#: InvenTree/models.py:255
msgid "Invalid attachment directory"
msgstr "Fout bijlagemap"
-#: InvenTree/models.py:209
+#: InvenTree/models.py:265
#, python-brace-format
msgid "Filename contains illegal character '{c}'"
msgstr "Bestandsnaam bevat illegale teken '{c}'"
-#: InvenTree/models.py:212
+#: InvenTree/models.py:268
msgid "Filename missing extension"
msgstr "Bestandsnaam mist extensie"
-#: InvenTree/models.py:219
+#: InvenTree/models.py:275
msgid "Attachment with this filename already exists"
msgstr "Bijlage met deze bestandsnaam bestaat al"
-#: InvenTree/models.py:226
+#: InvenTree/models.py:282
msgid "Error renaming file"
msgstr "Fout bij hernoemen bestand"
-#: InvenTree/models.py:261
+#: InvenTree/models.py:317
msgid "Invalid choice"
msgstr "Ongeldige keuze"
-#: InvenTree/models.py:277 InvenTree/models.py:278 common/models.py:1438
-#: company/models.py:415 label/models.py:112 part/models.py:774
-#: part/models.py:2449 plugin/models.py:40 report/models.py:181
+#: InvenTree/models.py:333 InvenTree/models.py:334 common/models.py:1450
+#: company/models.py:415 label/models.py:112 part/models.py:804
+#: part/models.py:2485 plugin/models.py:40 report/models.py:181
#: templates/InvenTree/settings/mixins/urls.html:13
#: templates/InvenTree/settings/plugin.html:48
#: templates/InvenTree/settings/plugin.html:125
#: templates/InvenTree/settings/plugin_settings.html:23
-#: templates/InvenTree/settings/settings.html:282
+#: templates/InvenTree/settings/settings.html:319
#: templates/js/translated/company.js:641 templates/js/translated/part.js:567
#: templates/js/translated/part.js:706 templates/js/translated/part.js:1631
-#: templates/js/translated/stock.js:2485
+#: templates/js/translated/stock.js:2609
msgid "Name"
msgstr "Naam"
-#: InvenTree/models.py:284 build/models.py:209
+#: InvenTree/models.py:340 build/models.py:209
#: build/templates/build/detail.html:25 company/models.py:354
#: company/models.py:570 company/templates/company/company_base.html:68
#: company/templates/company/manufacturer_part.html:76
#: company/templates/company/supplier_part.html:73 label/models.py:119
-#: order/models.py:125 part/models.py:797 part/templates/part/category.html:74
+#: order/models.py:125 part/models.py:827 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:93
#: templates/InvenTree/settings/plugin_settings.html:33
-#: templates/js/translated/bom.js:339 templates/js/translated/bom.js:552
-#: templates/js/translated/build.js:1682 templates/js/translated/company.js:345
+#: templates/js/translated/bom.js:552 templates/js/translated/bom.js:765
+#: templates/js/translated/build.js:1920 templates/js/translated/company.js:345
#: templates/js/translated/company.js:551
#: templates/js/translated/company.js:840 templates/js/translated/order.js:836
#: templates/js/translated/order.js:1019 templates/js/translated/order.js:1258
#: templates/js/translated/part.js:626 templates/js/translated/part.js:999
#: templates/js/translated/part.js:1084 templates/js/translated/part.js:1254
#: templates/js/translated/part.js:1650 templates/js/translated/part.js:1719
-#: templates/js/translated/stock.js:1577 templates/js/translated/stock.js:2314
-#: templates/js/translated/stock.js:2497 templates/js/translated/stock.js:2542
+#: templates/js/translated/stock.js:1701 templates/js/translated/stock.js:2438
+#: templates/js/translated/stock.js:2621 templates/js/translated/stock.js:2666
msgid "Description"
msgstr "Omschrijving"
-#: InvenTree/models.py:285
+#: InvenTree/models.py:341
msgid "Description (optional)"
msgstr "Omschrijving (optioneel)"
-#: InvenTree/models.py:293
+#: InvenTree/models.py:349
msgid "parent"
msgstr "overkoepelend"
-#: InvenTree/serializers.py:65 part/models.py:2734
+#: InvenTree/serializers.py:65 part/models.py:2803
msgid "Must be a valid number"
msgstr "Moet een geldig nummer zijn"
@@ -253,83 +253,127 @@ msgstr "Moet een geldig nummer zijn"
msgid "Filename"
msgstr "Bestandsnaam"
-#: InvenTree/settings.py:661
+#: InvenTree/serializers.py:334
+msgid "Invalid value"
+msgstr ""
+
+#: InvenTree/serializers.py:355
+msgid "Data File"
+msgstr ""
+
+#: InvenTree/serializers.py:356
+msgid "Select data file for upload"
+msgstr ""
+
+#: InvenTree/serializers.py:380
+msgid "Unsupported file type"
+msgstr ""
+
+#: InvenTree/serializers.py:386
+msgid "File is too large"
+msgstr ""
+
+#: InvenTree/serializers.py:407
+msgid "No columns found in file"
+msgstr ""
+
+#: InvenTree/serializers.py:410
+msgid "No data rows found in file"
+msgstr ""
+
+#: InvenTree/serializers.py:533
+msgid "No data rows provided"
+msgstr ""
+
+#: InvenTree/serializers.py:536
+msgid "No data columns supplied"
+msgstr ""
+
+#: InvenTree/serializers.py:623
+msgid "Missing required column"
+msgstr ""
+
+#: InvenTree/serializers.py:632
+msgid "Duplicate column"
+msgstr ""
+
+#: InvenTree/settings.py:655
msgid "German"
msgstr "Duits"
-#: InvenTree/settings.py:662
+#: InvenTree/settings.py:656
msgid "Greek"
msgstr "Grieks"
-#: InvenTree/settings.py:663
+#: InvenTree/settings.py:657
msgid "English"
msgstr "Engels"
-#: InvenTree/settings.py:664
+#: InvenTree/settings.py:658
msgid "Spanish"
msgstr "Spaans"
-#: InvenTree/settings.py:665
+#: InvenTree/settings.py:659
msgid "Spanish (Mexican)"
msgstr "Spaans (Mexicaans)"
-#: InvenTree/settings.py:666
+#: InvenTree/settings.py:660
msgid "French"
msgstr "Frans"
-#: InvenTree/settings.py:667
+#: InvenTree/settings.py:661
msgid "Hebrew"
msgstr "Hebreeuws"
-#: InvenTree/settings.py:668
+#: InvenTree/settings.py:662
msgid "Italian"
msgstr "Italiaans"
-#: InvenTree/settings.py:669
+#: InvenTree/settings.py:663
msgid "Japanese"
msgstr "Japans"
-#: InvenTree/settings.py:670
+#: InvenTree/settings.py:664
msgid "Korean"
msgstr "Koreaans"
-#: InvenTree/settings.py:671
+#: InvenTree/settings.py:665
msgid "Dutch"
msgstr "Nederlands"
-#: InvenTree/settings.py:672
+#: InvenTree/settings.py:666
msgid "Norwegian"
msgstr "Noors"
-#: InvenTree/settings.py:673
+#: InvenTree/settings.py:667
msgid "Polish"
msgstr "Pools"
-#: InvenTree/settings.py:674
+#: InvenTree/settings.py:668
msgid "Portugese"
msgstr "Portugees"
-#: InvenTree/settings.py:675
+#: InvenTree/settings.py:669
msgid "Russian"
msgstr "Russisch"
-#: InvenTree/settings.py:676
+#: InvenTree/settings.py:670
msgid "Swedish"
msgstr "Zweeds"
-#: InvenTree/settings.py:677
+#: InvenTree/settings.py:671
msgid "Thai"
msgstr "Thais"
-#: InvenTree/settings.py:678
+#: InvenTree/settings.py:672
msgid "Turkish"
msgstr "Turks"
-#: InvenTree/settings.py:679
+#: InvenTree/settings.py:673
msgid "Vietnamese"
msgstr "Vietnamees"
-#: InvenTree/settings.py:680
+#: InvenTree/settings.py:674
msgid "Chinese"
msgstr "Chinees"
@@ -346,7 +390,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:316 templates/js/translated/table_filters.js:313
+#: InvenTree/status_codes.py:316 templates/js/translated/table_filters.js:308
msgid "Pending"
msgstr "Bezig"
@@ -456,7 +500,7 @@ msgstr "Splits van bovenliggend item"
msgid "Split child item"
msgstr "Splits onderliggende item"
-#: InvenTree/status_codes.py:294 templates/js/translated/stock.js:2072
+#: InvenTree/status_codes.py:294 templates/js/translated/stock.js:2196
msgid "Merged stock items"
msgstr ""
@@ -484,40 +528,40 @@ msgstr "Ontvangen tegen inkoopopdracht"
msgid "Production"
msgstr "Productie"
-#: InvenTree/validators.py:23
+#: InvenTree/validators.py:25
msgid "Not a valid currency code"
msgstr "Foute valutacode"
-#: InvenTree/validators.py:51
+#: InvenTree/validators.py:53
msgid "Invalid character in part name"
msgstr "Foute letter in onderdeelnaam"
-#: InvenTree/validators.py:64
+#: InvenTree/validators.py:66
#, python-brace-format
msgid "IPN must match regex pattern {pat}"
msgstr "IPN moet overeenkomen met regex-patroon {pat}"
-#: InvenTree/validators.py:78 InvenTree/validators.py:92
-#: InvenTree/validators.py:106
+#: InvenTree/validators.py:80 InvenTree/validators.py:94
+#: InvenTree/validators.py:108
#, python-brace-format
msgid "Reference must match pattern {pattern}"
msgstr "Refernetie moet overeenkomen met patroon {pattern}"
-#: InvenTree/validators.py:114
+#: InvenTree/validators.py:116
#, python-brace-format
msgid "Illegal character in name ({x})"
msgstr "Illegale letter in naam ({x})"
-#: InvenTree/validators.py:133 InvenTree/validators.py:149
+#: InvenTree/validators.py:137 InvenTree/validators.py:153
msgid "Overage value must not be negative"
msgstr "Overschrijdingswaarde mag niet negatief zijn"
-#: InvenTree/validators.py:151
+#: InvenTree/validators.py:155
msgid "Overage must not exceed 100%"
msgstr ""
-#: InvenTree/validators.py:158
-msgid "Overage must be an integer value or a percentage"
+#: InvenTree/validators.py:162
+msgid "Invalid value for overage"
msgstr ""
#: InvenTree/views.py:538
@@ -584,69 +628,11 @@ msgstr ""
msgid "Barcode associated with Stock Item"
msgstr ""
-#: build/forms.py:36 build/models.py:1293
-#: build/templates/build/build_base.html:82
-#: build/templates/build/detail.html:35 common/models.py:1263
-#: company/forms.py:42 company/templates/company/supplier_part.html:251
-#: order/models.py:805 order/models.py:1229 order/serializers.py:816
-#: order/templates/order/order_wizard/match_parts.html:30
-#: order/templates/order/order_wizard/select_parts.html:34 part/forms.py:144
-#: part/forms.py:160 part/forms.py:176 part/models.py:2636
-#: part/templates/part/bom_upload/match_parts.html:31
-#: part/templates/part/detail.html:992 part/templates/part/detail.html:1078
-#: part/templates/part/part_pricing.html:16
-#: report/templates/report/inventree_build_order_base.html:114
-#: report/templates/report/inventree_po_report.html:91
-#: report/templates/report/inventree_so_report.html:91
-#: report/templates/report/inventree_test_report_base.html:81
-#: report/templates/report/inventree_test_report_base.html:139
-#: stock/forms.py:142 stock/serializers.py:293
-#: stock/templates/stock/item_base.html:181
-#: stock/templates/stock/item_base.html:262
-#: stock/templates/stock/item_base.html:270
-#: templates/js/translated/barcode.js:385 templates/js/translated/bom.js:567
-#: templates/js/translated/build.js:295 templates/js/translated/build.js:495
-#: templates/js/translated/build.js:689 templates/js/translated/build.js:699
-#: templates/js/translated/build.js:1075 templates/js/translated/build.js:1422
-#: templates/js/translated/model_renderers.js:99
-#: templates/js/translated/order.js:101 templates/js/translated/order.js:1056
-#: 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:906
-#: templates/js/translated/part.js:1862 templates/js/translated/part.js:1985
-#: templates/js/translated/part.js:2063 templates/js/translated/stock.js:391
-#: templates/js/translated/stock.js:588 templates/js/translated/stock.js:758
-#: templates/js/translated/stock.js:2677 templates/js/translated/stock.js:2779
-msgid "Quantity"
-msgstr "Aantal"
-
-#: build/forms.py:37
-msgid "Enter quantity for build output"
-msgstr "Voer hoeveelheid in voor build-output"
-
-#: build/forms.py:41 order/serializers.py:820 stock/forms.py:81
-#: stock/serializers.py:314 templates/js/translated/stock.js:238
-#: templates/js/translated/stock.js:392
-msgid "Serial Numbers"
-msgstr "Serienummers"
-
-#: build/forms.py:43
-msgid "Enter serial numbers for build outputs"
-msgstr "Voer serienummers in voor build-outputs"
-
-#: build/forms.py:49
-msgid "Confirm creation of build output"
-msgstr "Bevestig het maken van build-output"
-
-#: build/forms.py:70
-msgid "Confirm deletion of build output"
-msgstr "Bevestig verwijdering van build-output"
-
-#: build/forms.py:89
+#: build/forms.py:20
msgid "Confirm cancel"
msgstr "Annuleren bevestigen"
-#: build/forms.py:89 build/views.py:65
+#: build/forms.py:20 build/views.py:62
msgid "Confirm build cancellation"
msgstr "Bevestig annulering van de build"
@@ -657,7 +643,7 @@ msgstr "Ongeldige keuze voor bovenliggende build"
#: build/models.py:139 build/templates/build/build_base.html:9
#: build/templates/build/build_base.html:27
#: report/templates/report/inventree_build_order_base.html:106
-#: templates/js/translated/build.js:457 templates/js/translated/stock.js:2290
+#: templates/js/translated/build.js:676 templates/js/translated/stock.js:2414
msgid "Build Order"
msgstr "Productie-opdracht"
@@ -665,7 +651,7 @@ msgstr "Productie-opdracht"
#: 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
+#: part/templates/part/part_sidebar.html:21 templates/InvenTree/index.html:221
#: templates/InvenTree/search.html:139
#: templates/InvenTree/settings/sidebar.html:43 users/models.py:44
msgid "Build Orders"
@@ -676,11 +662,11 @@ msgid "Build Order Reference"
msgstr "Productie-opdracht referentie"
#: build/models.py:201 order/models.py:213 order/models.py:541
-#: order/models.py:812 part/models.py:2645
-#: part/templates/part/bom_upload/match_parts.html:30
+#: order/models.py:812 part/models.py:2714
+#: part/templates/part/upload_bom.html:54
#: report/templates/report/inventree_po_report.html:92
#: report/templates/report/inventree_so_report.html:92
-#: templates/js/translated/bom.js:559 templates/js/translated/build.js:1179
+#: templates/js/translated/bom.js:772 templates/js/translated/build.js:1401
#: templates/js/translated/order.js:1050 templates/js/translated/order.js:2144
msgid "Reference"
msgstr "Referentie"
@@ -689,7 +675,7 @@ msgstr "Referentie"
msgid "Brief description of the build"
msgstr "Korte beschrijving van de build"
-#: build/models.py:221 build/templates/build/build_base.html:164
+#: build/models.py:221 build/templates/build/build_base.html:169
#: build/templates/build/detail.html:88
msgid "Parent Build"
msgstr "Bovenliggende bouw"
@@ -702,30 +688,31 @@ msgstr "Productie-opdracht waar dit product aan is toegewezen"
#: build/templates/build/detail.html:30 company/models.py:705
#: order/models.py:876 order/models.py:950
#: order/templates/order/order_wizard/select_parts.html:32 part/models.py:359
-#: part/models.py:2211 part/models.py:2227 part/models.py:2246
-#: part/models.py:2263 part/models.py:2365 part/models.py:2487
-#: part/models.py:2620 part/models.py:2927 part/serializers.py:658
-#: part/templates/part/part_app_base.html:8
+#: part/models.py:2247 part/models.py:2263 part/models.py:2282
+#: part/models.py:2299 part/models.py:2401 part/models.py:2523
+#: part/models.py:2613 part/models.py:2689 part/models.py:2996
+#: part/serializers.py:666 part/templates/part/part_app_base.html:8
#: part/templates/part/part_pricing.html:12
#: part/templates/part/set_category.html:13
+#: part/templates/part/upload_bom.html:52
#: 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: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:338
-#: templates/js/translated/bom.js:517 templates/js/translated/build.js:680
-#: templates/js/translated/build.js:1048 templates/js/translated/build.js:1419
-#: templates/js/translated/build.js:1687 templates/js/translated/company.js:492
+#: templates/js/translated/barcode.js:383 templates/js/translated/bom.js:551
+#: templates/js/translated/bom.js:730 templates/js/translated/build.js:902
+#: templates/js/translated/build.js:1270 templates/js/translated/build.js:1655
+#: templates/js/translated/build.js:1925 templates/js/translated/company.js:492
#: templates/js/translated/company.js:749 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:984
#: templates/js/translated/part.js:1065 templates/js/translated/part.js:1232
-#: templates/js/translated/stock.js:562 templates/js/translated/stock.js:727
-#: templates/js/translated/stock.js:934 templates/js/translated/stock.js:1534
-#: templates/js/translated/stock.js:2767
+#: templates/js/translated/stock.js:563 templates/js/translated/stock.js:728
+#: templates/js/translated/stock.js:935 templates/js/translated/stock.js:1658
+#: templates/js/translated/stock.js:2891 templates/js/translated/stock.js:2990
msgid "Part"
msgstr "Onderdeel"
@@ -741,7 +728,7 @@ msgstr "Verkooporder referentie"
msgid "SalesOrder to which this build is allocated"
msgstr "Verkooporder waar dit product aan is toegewezen"
-#: build/models.py:249 templates/js/translated/build.js:1407
+#: build/models.py:249 templates/js/translated/build.js:1643
#: templates/js/translated/order.js:1564
msgid "Source Location"
msgstr "Bron Locatie"
@@ -782,15 +769,15 @@ msgstr "Bouwstatus"
msgid "Build status code"
msgstr "Bouwstatuscode"
-#: build/models.py:287 stock/models.py:533
+#: build/models.py:287 build/serializers.py:218 stock/models.py:533
msgid "Batch Code"
msgstr ""
-#: build/models.py:291
+#: build/models.py:291 build/serializers.py:219
msgid "Batch code for this build output"
msgstr ""
-#: build/models.py:294 order/models.py:129 part/models.py:969
+#: build/models.py:294 order/models.py:129 part/models.py:999
#: part/templates/part/part_base.html:313 templates/js/translated/order.js:1271
msgid "Creation Date"
msgstr "Aanmaakdatum"
@@ -804,7 +791,7 @@ msgid "Target date for build completion. Build will be overdue after this date."
msgstr ""
#: build/models.py:302 order/models.py:255
-#: templates/js/translated/build.js:1758
+#: templates/js/translated/build.js:1996
msgid "Completion Date"
msgstr "Opleveringsdatum"
@@ -812,7 +799,7 @@ msgstr "Opleveringsdatum"
msgid "completed by"
msgstr "voltooid door"
-#: build/models.py:316 templates/js/translated/build.js:1729
+#: build/models.py:316 templates/js/translated/build.js:1967
msgid "Issued by"
msgstr ""
@@ -820,12 +807,12 @@ msgstr ""
msgid "User who issued this build order"
msgstr "Gebruiker die de productie-opdracht heeft gegeven"
-#: build/models.py:325 build/templates/build/build_base.html:185
+#: build/models.py:325 build/templates/build/build_base.html:190
#: build/templates/build/detail.html:116 order/models.py:143
#: order/templates/order/order_base.html:170
-#: order/templates/order/sales_order_base.html:182 part/models.py:973
+#: order/templates/order/sales_order_base.html:182 part/models.py:1003
#: report/templates/report/inventree_build_order_base.html:159
-#: templates/js/translated/build.js:1741 templates/js/translated/order.js:864
+#: templates/js/translated/build.js:1979 templates/js/translated/order.js:864
msgid "Responsible"
msgstr "Verantwoordelijke"
@@ -837,26 +824,26 @@ msgstr "Gebruiker verantwoordelijk voor deze productie-opdracht"
#: company/templates/company/manufacturer_part.html:102
#: company/templates/company/supplier_part.html:126
#: part/templates/part/part_base.html:354 stock/models.py:527
-#: stock/templates/stock/item_base.html:373
+#: stock/templates/stock/item_base.html:375
msgid "External Link"
msgstr "Externe Link"
-#: build/models.py:336 build/serializers.py:201
+#: build/models.py:336 build/serializers.py:380
#: build/templates/build/sidebar.html:21 company/models.py:142
#: company/models.py:577 company/templates/company/sidebar.html:25
#: order/models.py:147 order/models.py:814 order/models.py:1071
#: order/templates/order/po_sidebar.html:11
-#: order/templates/order/so_sidebar.html:17 part/models.py:958
-#: part/templates/part/detail.html:137 part/templates/part/part_sidebar.html:54
+#: order/templates/order/so_sidebar.html:17 part/models.py:988
+#: part/templates/part/detail.html:140 part/templates/part/part_sidebar.html:57
#: report/templates/report/inventree_build_order_base.html:173
-#: stock/forms.py:140 stock/forms.py:190 stock/forms.py:224 stock/models.py:599
+#: stock/forms.py:137 stock/forms.py:171 stock/models.py:599
#: stock/models.py:1895 stock/models.py:2001 stock/serializers.py:332
-#: stock/serializers.py:640 stock/serializers.py:738 stock/serializers.py:870
+#: stock/serializers.py:697 stock/serializers.py:795 stock/serializers.py:927
#: stock/templates/stock/stock_sidebar.html:25
-#: templates/js/translated/barcode.js:58 templates/js/translated/bom.js:723
+#: templates/js/translated/barcode.js:58 templates/js/translated/bom.js:936
#: templates/js/translated/company.js:845 templates/js/translated/order.js:1149
#: templates/js/translated/order.js:1445 templates/js/translated/order.js:2280
-#: templates/js/translated/stock.js:1317 templates/js/translated/stock.js:1803
+#: templates/js/translated/stock.js:1345 templates/js/translated/stock.js:1927
msgid "Notes"
msgstr "Opmerkingen"
@@ -864,208 +851,284 @@ msgstr "Opmerkingen"
msgid "Extra build notes"
msgstr "Opmerkingen over de bouw"
-#: build/models.py:717
+#: build/models.py:756
msgid "No build output specified"
msgstr "Geen bouwuitvoer opgegeven"
-#: build/models.py:720
+#: build/models.py:759
msgid "Build output is already completed"
msgstr "Bouwuitvoer is al voltooid"
-#: build/models.py:723
+#: build/models.py:762
msgid "Build output does not match Build Order"
msgstr "Product komt niet overeen met de productie-opdracht"
-#: build/models.py:1115
+#: build/models.py:1154
msgid "Build item must specify a build output, as master part is marked as trackable"
msgstr ""
-#: build/models.py:1124
+#: build/models.py:1163
#, python-brace-format
msgid "Allocated quantity ({q}) must not execed available stock quantity ({a})"
msgstr ""
-#: build/models.py:1134
+#: build/models.py:1173
msgid "Stock item is over-allocated"
msgstr ""
-#: build/models.py:1140 order/models.py:1189
+#: build/models.py:1179 order/models.py:1189
msgid "Allocation quantity must be greater than zero"
msgstr ""
-#: build/models.py:1146
+#: build/models.py:1185
msgid "Quantity must be 1 for serialized stock"
msgstr ""
-#: build/models.py:1203
+#: build/models.py:1242
msgid "Selected stock item not found in BOM"
msgstr ""
-#: build/models.py:1263 stock/templates/stock/item_base.html:345
-#: templates/InvenTree/search.html:137 templates/js/translated/build.js:1660
+#: build/models.py:1302 stock/templates/stock/item_base.html:347
+#: templates/InvenTree/search.html:137 templates/js/translated/build.js:1898
#: templates/navbar.html:35
msgid "Build"
msgstr "Product"
-#: build/models.py:1264
+#: build/models.py:1303
msgid "Build to allocate parts"
msgstr "Bouw om onderdelen toe te wijzen"
-#: build/models.py:1280 build/serializers.py:388 order/serializers.py:696
-#: order/serializers.py:714 stock/serializers.py:578 stock/serializers.py:696
-#: stock/templates/stock/item_base.html:9
+#: build/models.py:1319 build/serializers.py:570 order/serializers.py:696
+#: order/serializers.py:714 stock/serializers.py:404 stock/serializers.py:635
+#: stock/serializers.py:753 stock/templates/stock/item_base.html:9
#: stock/templates/stock/item_base.html:23
-#: stock/templates/stock/item_base.html:367
-#: templates/js/translated/build.js:468 templates/js/translated/build.js:473
-#: templates/js/translated/build.js:1421 templates/js/translated/build.js:1803
+#: stock/templates/stock/item_base.html:369
+#: templates/js/translated/build.js:687 templates/js/translated/build.js:692
+#: templates/js/translated/build.js:1657 templates/js/translated/build.js:2041
#: 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:563 templates/js/translated/stock.js:728
-#: templates/js/translated/stock.js:2628
+#: templates/js/translated/stock.js:564 templates/js/translated/stock.js:729
+#: templates/js/translated/stock.js:2752
msgid "Stock Item"
msgstr "Voorraadartikel"
-#: build/models.py:1281
+#: build/models.py:1320
msgid "Source stock item"
msgstr "Bron voorraadartikel"
-#: build/models.py:1294
+#: build/models.py:1332 build/serializers.py:188
+#: build/templates/build/build_base.html:82
+#: build/templates/build/detail.html:35 common/models.py:1275
+#: company/forms.py:42 company/templates/company/supplier_part.html:251
+#: order/models.py:805 order/models.py:1229 order/serializers.py:816
+#: order/templates/order/order_wizard/match_parts.html:30
+#: order/templates/order/order_wizard/select_parts.html:34 part/forms.py:144
+#: part/forms.py:160 part/forms.py:176 part/models.py:2705
+#: part/templates/part/detail.html:995 part/templates/part/detail.html:1081
+#: part/templates/part/part_pricing.html:16
+#: part/templates/part/upload_bom.html:53
+#: report/templates/report/inventree_build_order_base.html:114
+#: report/templates/report/inventree_po_report.html:91
+#: report/templates/report/inventree_so_report.html:91
+#: report/templates/report/inventree_test_report_base.html:81
+#: report/templates/report/inventree_test_report_base.html:139
+#: stock/forms.py:139 stock/serializers.py:293
+#: stock/templates/stock/item_base.html:183
+#: stock/templates/stock/item_base.html:264
+#: stock/templates/stock/item_base.html:272
+#: templates/js/translated/barcode.js:385 templates/js/translated/bom.js:780
+#: templates/js/translated/build.js:375 templates/js/translated/build.js:523
+#: templates/js/translated/build.js:714 templates/js/translated/build.js:911
+#: templates/js/translated/build.js:921 templates/js/translated/build.js:1297
+#: templates/js/translated/build.js:1658
+#: templates/js/translated/model_renderers.js:99
+#: templates/js/translated/order.js:101 templates/js/translated/order.js:1056
+#: 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:906
+#: templates/js/translated/part.js:1862 templates/js/translated/part.js:1985
+#: templates/js/translated/part.js:2063 templates/js/translated/stock.js:392
+#: templates/js/translated/stock.js:589 templates/js/translated/stock.js:759
+#: templates/js/translated/stock.js:2801 templates/js/translated/stock.js:2903
+msgid "Quantity"
+msgstr "Aantal"
+
+#: build/models.py:1333
msgid "Stock quantity to allocate to build"
msgstr "Voorraad hoeveelheid te alloceren aan bouw"
-#: build/models.py:1302
+#: build/models.py:1341
msgid "Install into"
msgstr "Installeren in"
-#: build/models.py:1303
+#: build/models.py:1342
msgid "Destination stock item"
msgstr "Bestemming voorraadartikel"
-#: build/serializers.py:137 build/serializers.py:417
+#: build/serializers.py:138 build/serializers.py:599
msgid "Build Output"
msgstr ""
-#: build/serializers.py:146
+#: build/serializers.py:150
msgid "Build output does not match the parent build"
msgstr ""
-#: build/serializers.py:150
+#: build/serializers.py:154
msgid "Output part does not match BuildOrder part"
msgstr ""
-#: build/serializers.py:154
+#: build/serializers.py:158
msgid "This build output has already been completed"
msgstr ""
-#: build/serializers.py:158
+#: build/serializers.py:164
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:731
-#: stock/serializers.py:972 stock/templates/stock/item_base.html:313
-#: templates/js/translated/barcode.js:384
-#: templates/js/translated/barcode.js:557 templates/js/translated/build.js:480
-#: templates/js/translated/build.js:1087 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:179 templates/js/translated/stock.js:564
-#: templates/js/translated/stock.js:729 templates/js/translated/stock.js:936
-#: templates/js/translated/stock.js:1684 templates/js/translated/stock.js:2569
-msgid "Location"
-msgstr "Locatie"
+#: build/serializers.py:189
+msgid "Enter quantity for build output"
+msgstr "Voer hoeveelheid in voor build-output"
-#: build/serializers.py:191
-msgid "Location for completed build outputs"
-msgstr ""
-
-#: build/serializers.py:197 build/templates/build/build_base.html:137
-#: build/templates/build/detail.html:63 order/models.py:557
-#: order/serializers.py:247 stock/templates/stock/item_base.html:187
-#: templates/js/translated/barcode.js:140 templates/js/translated/build.js:1716
-#: templates/js/translated/order.js:591 templates/js/translated/order.js:840
-#: templates/js/translated/order.js:1263 templates/js/translated/stock.js:1659
-#: templates/js/translated/stock.js:2646 templates/js/translated/stock.js:2795
-msgid "Status"
-msgstr "Status"
-
-#: build/serializers.py:213
-msgid "A list of build outputs must be provided"
-msgstr ""
-
-#: build/serializers.py:249
-msgid "Accept Unallocated"
-msgstr ""
-
-#: build/serializers.py:250
-msgid "Accept that stock items have not been fully allocated to this build order"
-msgstr ""
-
-#: build/serializers.py:260 templates/js/translated/build.js:149
-msgid "Required stock has not been fully allocated"
-msgstr ""
-
-#: build/serializers.py:265
-msgid "Accept Incomplete"
-msgstr ""
-
-#: build/serializers.py:266
-msgid "Accept that the required number of build outputs have not been completed"
-msgstr ""
-
-#: build/serializers.py:276 templates/js/translated/build.js:153
-msgid "Required build quantity has not been completed"
-msgstr ""
-
-#: build/serializers.py:285
-msgid "Build order has incomplete outputs"
-msgstr ""
-
-#: build/serializers.py:313 build/serializers.py:362 part/models.py:2760
-#: part/models.py:2919
-msgid "BOM Item"
-msgstr ""
-
-#: build/serializers.py:323
-msgid "Build output"
-msgstr ""
-
-#: build/serializers.py:332
-msgid "Build output must point to the same build"
-msgstr ""
-
-#: build/serializers.py:379
-msgid "bom_item.part must point to the same part as the build order"
-msgstr ""
-
-#: build/serializers.py:394 stock/serializers.py:585
-msgid "Item must be in stock"
-msgstr ""
-
-#: build/serializers.py:408 order/models.py:280 order/serializers.py:240
+#: build/serializers.py:201 build/serializers.py:590 order/models.py:280
+#: order/serializers.py:240 part/serializers.py:471 part/serializers.py:827
#: stock/models.py:367 stock/models.py:1105 stock/serializers.py:305
msgid "Quantity must be greater than zero"
msgstr ""
-#: build/serializers.py:450 order/serializers.py:747
+#: build/serializers.py:208
+msgid "Integer quantity required for trackable parts"
+msgstr ""
+
+#: build/serializers.py:211
+msgid "Integer quantity required, as the bill of materials contains trackable parts"
+msgstr ""
+
+#: build/serializers.py:225 order/serializers.py:820 stock/forms.py:78
+#: stock/serializers.py:314 templates/js/translated/stock.js:239
+#: templates/js/translated/stock.js:393
+msgid "Serial Numbers"
+msgstr "Serienummers"
+
+#: build/serializers.py:226
+msgid "Enter serial numbers for build outputs"
+msgstr "Voer serienummers in voor build-outputs"
+
+#: build/serializers.py:239
+msgid "Auto Allocate Serial Numbers"
+msgstr ""
+
+#: build/serializers.py:240
+msgid "Automatically allocate required items with matching serial numbers"
+msgstr ""
+
+#: build/serializers.py:274 stock/api.py:551
+msgid "The following serial numbers already exist"
+msgstr ""
+
+#: build/serializers.py:327 build/serializers.py:392
+msgid "A list of build outputs must be provided"
+msgstr ""
+
+#: build/serializers.py:369 order/serializers.py:226 order/serializers.py:294
+#: stock/forms.py:169 stock/serializers.py:325 stock/serializers.py:788
+#: stock/serializers.py:1029 stock/templates/stock/item_base.html:315
+#: templates/js/translated/barcode.js:384
+#: templates/js/translated/barcode.js:557 templates/js/translated/build.js:699
+#: templates/js/translated/build.js:1309 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:179 templates/js/translated/stock.js:565
+#: templates/js/translated/stock.js:730 templates/js/translated/stock.js:937
+#: templates/js/translated/stock.js:1808 templates/js/translated/stock.js:2693
+msgid "Location"
+msgstr "Locatie"
+
+#: build/serializers.py:370
+msgid "Location for completed build outputs"
+msgstr ""
+
+#: build/serializers.py:376 build/templates/build/build_base.html:142
+#: build/templates/build/detail.html:63 order/models.py:557
+#: order/serializers.py:247 stock/templates/stock/item_base.html:189
+#: templates/js/translated/barcode.js:140 templates/js/translated/build.js:1954
+#: templates/js/translated/order.js:591 templates/js/translated/order.js:840
+#: templates/js/translated/order.js:1263 templates/js/translated/stock.js:1783
+#: templates/js/translated/stock.js:2770 templates/js/translated/stock.js:2919
+msgid "Status"
+msgstr "Status"
+
+#: build/serializers.py:428
+msgid "Accept Unallocated"
+msgstr ""
+
+#: build/serializers.py:429
+msgid "Accept that stock items have not been fully allocated to this build order"
+msgstr ""
+
+#: build/serializers.py:439 templates/js/translated/build.js:150
+msgid "Required stock has not been fully allocated"
+msgstr ""
+
+#: build/serializers.py:444
+msgid "Accept Incomplete"
+msgstr ""
+
+#: build/serializers.py:445
+msgid "Accept that the required number of build outputs have not been completed"
+msgstr ""
+
+#: build/serializers.py:455 templates/js/translated/build.js:154
+msgid "Required build quantity has not been completed"
+msgstr ""
+
+#: build/serializers.py:464
+msgid "Build order has incomplete outputs"
+msgstr ""
+
+#: build/serializers.py:467 build/templates/build/build_base.html:95
+msgid "No build outputs have been created for this build order"
+msgstr ""
+
+#: build/serializers.py:495 build/serializers.py:544 part/models.py:2829
+#: part/models.py:2988
+msgid "BOM Item"
+msgstr ""
+
+#: build/serializers.py:505
+msgid "Build output"
+msgstr ""
+
+#: build/serializers.py:514
+msgid "Build output must point to the same build"
+msgstr ""
+
+#: build/serializers.py:561
+msgid "bom_item.part must point to the same part as the build order"
+msgstr ""
+
+#: build/serializers.py:576 stock/serializers.py:642
+msgid "Item must be in stock"
+msgstr ""
+
+#: build/serializers.py:632 order/serializers.py:747
#, python-brace-format
msgid "Available quantity ({q}) exceeded"
msgstr ""
-#: build/serializers.py:456
+#: build/serializers.py:638
msgid "Build output must be specified for allocation of tracked parts"
msgstr ""
-#: build/serializers.py:463
+#: build/serializers.py:645
msgid "Build output cannot be specified for allocation of untracked parts"
msgstr ""
-#: build/serializers.py:491 order/serializers.py:990
+#: build/serializers.py:673 order/serializers.py:990
msgid "Allocation items must be provided"
msgstr ""
-#: build/tasks.py:92
+#: build/tasks.py:98
msgid "Stock required for build order"
msgstr ""
@@ -1088,7 +1151,7 @@ msgid "Edit Build"
msgstr "Bewerk Build"
#: build/templates/build/build_base.html:56
-#: build/templates/build/build_base.html:215 build/views.py:56
+#: build/templates/build/build_base.html:220 build/views.py:53
msgid "Cancel Build"
msgstr "Annuleer Build"
@@ -1105,110 +1168,90 @@ msgstr "Voltooi Build"
msgid "Build Description"
msgstr ""
-#: build/templates/build/build_base.html:96
+#: build/templates/build/build_base.html:101
#, python-format
msgid "This Build Order is allocated to Sales Order %(link)s"
msgstr "Deze productie-opdracht is toegewezen aan verkooporder %(link)s"
-#: build/templates/build/build_base.html:103
+#: build/templates/build/build_base.html:108
#, python-format
msgid "This Build Order is a child of Build Order %(link)s"
msgstr "Deze productie-opdracht is een onderdeel van productie-opdracht %(link)s"
-#: build/templates/build/build_base.html:110
+#: build/templates/build/build_base.html:115
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
+#: build/templates/build/build_base.html:120
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
+#: build/templates/build/build_base.html:125
msgid "Required build quantity has not yet been completed"
msgstr "Vereiste bouwhoeveelheid is nog niet bereikt"
-#: build/templates/build/build_base.html:125
+#: build/templates/build/build_base.html:130
msgid "Stock has not been fully allocated to this Build Order"
msgstr "Voorraad is niet volledig toegewezen aan deze productie-opdracht"
-#: build/templates/build/build_base.html:146
+#: build/templates/build/build_base.html:151
#: build/templates/build/detail.html:132
#: order/templates/order/order_base.html:156
#: order/templates/order/sales_order_base.html:163
#: report/templates/report/inventree_build_order_base.html:126
-#: templates/js/translated/build.js:1753 templates/js/translated/order.js:854
+#: templates/js/translated/build.js:1991 templates/js/translated/order.js:854
#: templates/js/translated/order.js:1276
msgid "Target Date"
msgstr "Streefdatum"
-#: build/templates/build/build_base.html:151
+#: build/templates/build/build_base.html:156
#, python-format
msgid "This build was due on %(target)s"
msgstr "Deze bouw was verwacht op %(target)s"
-#: build/templates/build/build_base.html:151
-#: build/templates/build/build_base.html:196
+#: build/templates/build/build_base.html:156
+#: build/templates/build/build_base.html:201
#: order/templates/order/order_base.html:98
#: order/templates/order/sales_order_base.html:93
-#: templates/js/translated/table_filters.js:299
-#: templates/js/translated/table_filters.js:340
-#: templates/js/translated/table_filters.js:361
+#: templates/js/translated/table_filters.js:294
+#: templates/js/translated/table_filters.js:335
+#: templates/js/translated/table_filters.js:356
msgid "Overdue"
msgstr "Achterstallig"
-#: build/templates/build/build_base.html:158
+#: build/templates/build/build_base.html:163
#: build/templates/build/detail.html:68 build/templates/build/detail.html:143
#: order/templates/order/sales_order_base.html:170
-#: templates/js/translated/build.js:1702
-#: templates/js/translated/table_filters.js:370
+#: templates/js/translated/build.js:1940
+#: templates/js/translated/table_filters.js:365
msgid "Completed"
msgstr "Voltooid"
-#: build/templates/build/build_base.html:171
+#: build/templates/build/build_base.html:176
#: build/templates/build/detail.html:95 order/models.py:947
#: order/models.py:1043 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:307
-#: templates/js/translated/order.js:1218 templates/js/translated/stock.js:2304
+#: stock/templates/stock/item_base.html:309
+#: templates/js/translated/order.js:1218 templates/js/translated/stock.js:2428
msgid "Sales Order"
msgstr "Verkooporder"
-#: build/templates/build/build_base.html:178
+#: build/templates/build/build_base.html:183
#: build/templates/build/detail.html:109
#: report/templates/report/inventree_build_order_base.html:153
msgid "Issued By"
msgstr "Uitgegeven door"
-#: build/templates/build/build_base.html:223
+#: build/templates/build/build_base.html:228
msgid "Incomplete Outputs"
msgstr "Onvolledige bouwuitvoer"
-#: build/templates/build/build_base.html:224
+#: build/templates/build/build_base.html:229
msgid "Build Order cannot be completed as incomplete build outputs remain"
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"
-msgstr "De stuklijst bevat traceerbare onderdelen"
-
-#: build/templates/build/build_output_create.html:8
-msgid "Build outputs must be generated individually."
-msgstr ""
-
-#: build/templates/build/build_output_create.html:9
-msgid "Multiple build outputs will be created based on the quantity specified."
-msgstr ""
-
-#: build/templates/build/build_output_create.html:15
-msgid "Trackable parts can have serial numbers specified"
-msgstr "Traceerbare onderdelen kunnen een serienummer hebben"
-
-#: build/templates/build/build_output_create.html:16
-msgid "Enter serial numbers to generate multiple single build outputs"
-msgstr "Voer serienummers in om meerdere bouw-outputs te genereren"
-
#: build/templates/build/cancel.html:5
msgid "Are you sure you wish to cancel this build?"
msgstr "Weet je zeker dat je de bouw wilt annuleren?"
@@ -1225,7 +1268,7 @@ msgstr "Voorraadbron"
msgid "Stock can be taken from any available location."
msgstr ""
-#: build/templates/build/detail.html:50 order/models.py:898 stock/forms.py:136
+#: build/templates/build/detail.html:50 order/models.py:898 stock/forms.py:133
#: templates/js/translated/order.js:592 templates/js/translated/order.js:1138
msgid "Destination"
msgstr "Bestemming"
@@ -1234,13 +1277,13 @@ msgstr "Bestemming"
msgid "Destination location not specified"
msgstr "Bestemmingslocatie niet opgegeven"
-#: build/templates/build/detail.html:74 templates/js/translated/build.js:707
+#: build/templates/build/detail.html:74 templates/js/translated/build.js:929
msgid "Allocated Parts"
msgstr "Toegewezen onderdelen"
#: build/templates/build/detail.html:81
-#: stock/templates/stock/item_base.html:331
-#: templates/js/translated/stock.js:1673 templates/js/translated/stock.js:2802
+#: stock/templates/stock/item_base.html:333
+#: templates/js/translated/stock.js:1797 templates/js/translated/stock.js:2926
#: templates/js/translated/table_filters.js:151
#: templates/js/translated/table_filters.js:238
msgid "Batch"
@@ -1249,7 +1292,7 @@ msgstr "Batch"
#: build/templates/build/detail.html:127
#: order/templates/order/order_base.html:143
#: order/templates/order/sales_order_base.html:157
-#: templates/js/translated/build.js:1724
+#: templates/js/translated/build.js:1962
msgid "Created"
msgstr "Gecreëerd"
@@ -1269,7 +1312,7 @@ msgstr ""
msgid "Allocate Stock to Build"
msgstr "Voorraad toewijzen aan Product"
-#: build/templates/build/detail.html:177 templates/js/translated/build.js:1262
+#: build/templates/build/detail.html:177 templates/js/translated/build.js:1484
msgid "Unallocate stock"
msgstr "Niet toegewezen voorraad"
@@ -1329,52 +1372,60 @@ msgid "Output Actions"
msgstr ""
#: build/templates/build/detail.html:250
-msgid "Complete selected items"
+msgid "Complete selected build outputs"
msgstr ""
#: build/templates/build/detail.html:251
msgid "Complete outputs"
msgstr ""
-#: build/templates/build/detail.html:266
+#: build/templates/build/detail.html:253
+msgid "Delete selected build outputs"
+msgstr ""
+
+#: build/templates/build/detail.html:254
+msgid "Delete outputs"
+msgstr ""
+
+#: build/templates/build/detail.html:270
msgid "Completed Build Outputs"
msgstr ""
-#: build/templates/build/detail.html:278 build/templates/build/sidebar.html:19
+#: build/templates/build/detail.html:282 build/templates/build/sidebar.html:19
#: order/templates/order/po_sidebar.html:9
#: order/templates/order/purchase_order_detail.html:60
#: order/templates/order/sales_order_detail.html:107
-#: order/templates/order/so_sidebar.html:15 part/templates/part/detail.html:213
-#: part/templates/part/part_sidebar.html:52 stock/templates/stock/item.html:112
+#: order/templates/order/so_sidebar.html:15 part/templates/part/detail.html:216
+#: part/templates/part/part_sidebar.html:55 stock/templates/stock/item.html:112
#: stock/templates/stock/stock_sidebar.html:23
msgid "Attachments"
msgstr "Bijlagen"
-#: build/templates/build/detail.html:294
+#: build/templates/build/detail.html:298
msgid "Build Notes"
msgstr "Bouw notities"
-#: build/templates/build/detail.html:298 build/templates/build/detail.html:453
+#: build/templates/build/detail.html:302 build/templates/build/detail.html:478
#: company/templates/company/detail.html:188
#: company/templates/company/detail.html:215
#: order/templates/order/purchase_order_detail.html:80
#: order/templates/order/purchase_order_detail.html:108
#: order/templates/order/sales_order_detail.html:127
#: order/templates/order/sales_order_detail.html:186
-#: part/templates/part/detail.html:141 stock/templates/stock/item.html:132
-#: stock/templates/stock/item.html:235
+#: part/templates/part/detail.html:144 stock/templates/stock/item.html:132
+#: stock/templates/stock/item.html:230
msgid "Edit Notes"
msgstr "Notities Bewerken"
-#: build/templates/build/detail.html:477
+#: build/templates/build/detail.html:502
msgid "Allocation Complete"
msgstr ""
-#: build/templates/build/detail.html:478
+#: build/templates/build/detail.html:503
msgid "All untracked stock items have been allocated"
msgstr ""
-#: build/templates/build/index.html:18 part/templates/part/detail.html:320
+#: build/templates/build/index.html:18 part/templates/part/detail.html:323
msgid "New Build Order"
msgstr ""
@@ -1406,51 +1457,11 @@ msgstr ""
msgid "Completed Items"
msgstr ""
-#: build/views.py:76
+#: build/views.py:73
msgid "Build was cancelled"
msgstr ""
-#: build/views.py:88
-msgid "Create Build Output"
-msgstr ""
-
-#: build/views.py:106
-msgid "Maximum output quantity is "
-msgstr ""
-
-#: build/views.py:122 stock/serializers.py:363 stock/views.py:1257
-msgid "Serial numbers already exist"
-msgstr ""
-
-#: build/views.py:131
-msgid "Serial numbers required for trackable build output"
-msgstr ""
-
-#: build/views.py:197
-msgid "Delete Build Output"
-msgstr ""
-
-#: build/views.py:218
-msgid "Confirm unallocation of build stock"
-msgstr ""
-
-#: build/views.py:219 stock/views.py:352
-msgid "Check the confirmation box"
-msgstr ""
-
-#: build/views.py:231
-msgid "Build output does not match build"
-msgstr ""
-
-#: build/views.py:233
-msgid "Build output must be specified"
-msgstr ""
-
-#: build/views.py:245
-msgid "Build output deleted"
-msgstr ""
-
-#: build/views.py:286
+#: build/views.py:114
msgid "Delete Build Order"
msgstr ""
@@ -1639,9 +1650,9 @@ msgstr ""
msgid "Copy category parameter templates when creating a part"
msgstr ""
-#: common/models.py:705 part/models.py:2489 report/models.py:187
+#: common/models.py:705 part/models.py:2525 report/models.py:187
#: templates/js/translated/table_filters.js:38
-#: templates/js/translated/table_filters.js:422
+#: templates/js/translated/table_filters.js:417
msgid "Template"
msgstr ""
@@ -1649,9 +1660,9 @@ msgstr ""
msgid "Parts are templates by default"
msgstr ""
-#: common/models.py:712 part/models.py:921 templates/js/translated/bom.js:1082
+#: common/models.py:712 part/models.py:951 templates/js/translated/bom.js:1300
#: templates/js/translated/table_filters.js:168
-#: templates/js/translated/table_filters.js:434
+#: templates/js/translated/table_filters.js:429
msgid "Assembly"
msgstr "Samenstelling"
@@ -1659,8 +1670,8 @@ msgstr "Samenstelling"
msgid "Parts can be assembled from other components by default"
msgstr "Onderdelen kunnen standaard vanuit andere delen worden samengesteld"
-#: common/models.py:719 part/models.py:927
-#: templates/js/translated/table_filters.js:438
+#: common/models.py:719 part/models.py:957
+#: templates/js/translated/table_filters.js:433
msgid "Component"
msgstr ""
@@ -1668,7 +1679,7 @@ msgstr ""
msgid "Parts can be used as sub-components by default"
msgstr ""
-#: common/models.py:726 part/models.py:938
+#: common/models.py:726 part/models.py:968
msgid "Purchaseable"
msgstr ""
@@ -1676,8 +1687,8 @@ msgstr ""
msgid "Parts are purchaseable by default"
msgstr ""
-#: common/models.py:733 part/models.py:943
-#: templates/js/translated/table_filters.js:446
+#: common/models.py:733 part/models.py:973
+#: templates/js/translated/table_filters.js:441
msgid "Salable"
msgstr ""
@@ -1685,10 +1696,10 @@ msgstr ""
msgid "Parts are salable by default"
msgstr ""
-#: common/models.py:740 part/models.py:933
+#: common/models.py:740 part/models.py:963
#: templates/js/translated/table_filters.js:46
#: templates/js/translated/table_filters.js:100
-#: templates/js/translated/table_filters.js:450
+#: templates/js/translated/table_filters.js:445
msgid "Trackable"
msgstr ""
@@ -1696,7 +1707,7 @@ msgstr ""
msgid "Parts are trackable by default"
msgstr ""
-#: common/models.py:747 part/models.py:953
+#: common/models.py:747 part/models.py:983
#: part/templates/part/part_base.html:147
#: templates/js/translated/table_filters.js:42
msgid "Virtual"
@@ -1730,589 +1741,595 @@ msgstr ""
msgid "Include pricing information in BOM tables"
msgstr ""
-#: common/models.py:780
+#: common/models.py:785
+msgid "Show Price History"
+msgstr ""
+
+#: common/models.py:786
+msgid "Display historical pricing for Part"
+msgstr ""
+
+#: common/models.py:792
msgid "Show related parts"
msgstr ""
-#: common/models.py:781
+#: common/models.py:793
msgid "Display related parts for a part"
msgstr ""
-#: common/models.py:787
+#: common/models.py:799
msgid "Create initial stock"
msgstr ""
-#: common/models.py:788
+#: common/models.py:800
msgid "Create initial stock on part creation"
msgstr ""
-#: common/models.py:794
+#: common/models.py:806
msgid "Internal Prices"
msgstr "Interne prijzen"
-#: common/models.py:795
+#: common/models.py:807
msgid "Enable internal prices for parts"
msgstr ""
-#: common/models.py:801
+#: common/models.py:813
msgid "Internal Price as BOM-Price"
msgstr ""
-#: common/models.py:802
+#: common/models.py:814
msgid "Use the internal price (if set) in BOM-price calculations"
msgstr ""
-#: common/models.py:808
+#: common/models.py:820
msgid "Part Name Display Format"
msgstr ""
-#: common/models.py:809
+#: common/models.py:821
msgid "Format to display the part name"
msgstr ""
-#: common/models.py:816
+#: common/models.py:828
msgid "Enable Reports"
msgstr ""
-#: common/models.py:817
+#: common/models.py:829
msgid "Enable generation of reports"
msgstr ""
-#: common/models.py:823 templates/stats.html:25
+#: common/models.py:835 templates/stats.html:25
msgid "Debug Mode"
msgstr "Foutopsporingsmodus"
-#: common/models.py:824
+#: common/models.py:836
msgid "Generate reports in debug mode (HTML output)"
msgstr ""
-#: common/models.py:830
+#: common/models.py:842
msgid "Page Size"
msgstr "Paginagrootte"
-#: common/models.py:831
+#: common/models.py:843
msgid "Default page size for PDF reports"
msgstr ""
-#: common/models.py:841
+#: common/models.py:853
msgid "Test Reports"
msgstr "Testrapport"
-#: common/models.py:842
+#: common/models.py:854
msgid "Enable generation of test reports"
msgstr ""
-#: common/models.py:848
+#: common/models.py:860
msgid "Stock Expiry"
msgstr "Verlopen voorraad"
-#: common/models.py:849
+#: common/models.py:861
msgid "Enable stock expiry functionality"
msgstr "Verlopen voorraad functionaliteit inschakelen"
-#: common/models.py:855
+#: common/models.py:867
msgid "Sell Expired Stock"
msgstr "Verkoop verlopen voorraad"
-#: common/models.py:856
+#: common/models.py:868
msgid "Allow sale of expired stock"
msgstr "Verkoop verlopen voorraad toestaan"
-#: common/models.py:862
+#: common/models.py:874
msgid "Stock Stale Time"
msgstr ""
-#: common/models.py:863
+#: common/models.py:875
msgid "Number of days stock items are considered stale before expiring"
msgstr ""
-#: common/models.py:865
+#: common/models.py:877
msgid "days"
msgstr "dagen"
-#: common/models.py:870
+#: common/models.py:882
msgid "Build Expired Stock"
msgstr ""
-#: common/models.py:871
+#: common/models.py:883
msgid "Allow building with expired stock"
msgstr ""
-#: common/models.py:877
+#: common/models.py:889
msgid "Stock Ownership Control"
msgstr ""
-#: common/models.py:878
+#: common/models.py:890
msgid "Enable ownership control over stock locations and items"
msgstr ""
-#: common/models.py:884
+#: common/models.py:896
msgid "Build Order Reference Prefix"
msgstr ""
-#: common/models.py:885
+#: common/models.py:897
msgid "Prefix value for build order reference"
msgstr ""
-#: common/models.py:890
+#: common/models.py:902
msgid "Build Order Reference Regex"
msgstr ""
-#: common/models.py:891
+#: common/models.py:903
msgid "Regular expression pattern for matching build order reference"
msgstr ""
-#: common/models.py:895
+#: common/models.py:907
msgid "Sales Order Reference Prefix"
msgstr ""
-#: common/models.py:896
+#: common/models.py:908
msgid "Prefix value for sales order reference"
msgstr ""
-#: common/models.py:901
+#: common/models.py:913
msgid "Purchase Order Reference Prefix"
msgstr ""
-#: common/models.py:902
+#: common/models.py:914
msgid "Prefix value for purchase order reference"
msgstr ""
-#: common/models.py:908
+#: common/models.py:920
msgid "Enable password forgot"
msgstr ""
-#: common/models.py:909
+#: common/models.py:921
msgid "Enable password forgot function on the login pages"
msgstr ""
-#: common/models.py:914
+#: common/models.py:926
msgid "Enable registration"
msgstr ""
-#: common/models.py:915
+#: common/models.py:927
msgid "Enable self-registration for users on the login pages"
msgstr ""
-#: common/models.py:920
+#: common/models.py:932
msgid "Enable SSO"
msgstr ""
-#: common/models.py:921
+#: common/models.py:933
msgid "Enable SSO on the login pages"
msgstr ""
-#: common/models.py:926
+#: common/models.py:938
msgid "Email required"
msgstr ""
-#: common/models.py:927
+#: common/models.py:939
msgid "Require user to supply mail on signup"
msgstr ""
-#: common/models.py:932
+#: common/models.py:944
msgid "Auto-fill SSO users"
msgstr ""
-#: common/models.py:933
+#: common/models.py:945
msgid "Automatically fill out user-details from SSO account-data"
msgstr ""
-#: common/models.py:938
+#: common/models.py:950
msgid "Mail twice"
msgstr ""
-#: common/models.py:939
+#: common/models.py:951
msgid "On signup ask users twice for their mail"
msgstr ""
-#: common/models.py:944
+#: common/models.py:956
msgid "Password twice"
msgstr ""
-#: common/models.py:945
+#: common/models.py:957
msgid "On signup ask users twice for their password"
msgstr ""
-#: common/models.py:950
+#: common/models.py:962
msgid "Group on signup"
msgstr ""
-#: common/models.py:951
+#: common/models.py:963
msgid "Group to which new users are assigned on registration"
msgstr ""
-#: common/models.py:956
+#: common/models.py:968
msgid "Enforce MFA"
msgstr ""
-#: common/models.py:957
+#: common/models.py:969
msgid "Users must use multifactor security."
msgstr ""
-#: common/models.py:964
+#: common/models.py:976
msgid "Enable URL integration"
msgstr ""
-#: common/models.py:965
+#: common/models.py:977
msgid "Enable plugins to add URL routes"
msgstr ""
-#: common/models.py:971
+#: common/models.py:983
msgid "Enable navigation integration"
msgstr ""
-#: common/models.py:972
+#: common/models.py:984
msgid "Enable plugins to integrate into navigation"
msgstr ""
-#: common/models.py:978
+#: common/models.py:990
msgid "Enable app integration"
msgstr ""
-#: common/models.py:979
+#: common/models.py:991
msgid "Enable plugins to add apps"
msgstr ""
-#: common/models.py:985
+#: common/models.py:997
msgid "Enable schedule integration"
msgstr ""
-#: common/models.py:986
+#: common/models.py:998
msgid "Enable plugins to run scheduled tasks"
msgstr ""
-#: common/models.py:992
+#: common/models.py:1004
msgid "Enable event integration"
msgstr ""
-#: common/models.py:993
+#: common/models.py:1005
msgid "Enable plugins to respond to internal events"
msgstr ""
-#: common/models.py:1008 common/models.py:1216
+#: common/models.py:1020 common/models.py:1228
msgid "Settings key (must be unique - case insensitive"
msgstr "Instellingssleutel (moet uniek zijn - hoofdletter ongevoelig"
-#: common/models.py:1039
+#: common/models.py:1051
msgid "Show subscribed parts"
msgstr ""
-#: common/models.py:1040
+#: common/models.py:1052
msgid "Show subscribed parts on the homepage"
msgstr ""
-#: common/models.py:1045
+#: common/models.py:1057
msgid "Show subscribed categories"
msgstr ""
-#: common/models.py:1046
+#: common/models.py:1058
msgid "Show subscribed part categories on the homepage"
msgstr ""
-#: common/models.py:1051
+#: common/models.py:1063
msgid "Show latest parts"
msgstr ""
-#: common/models.py:1052
+#: common/models.py:1064
msgid "Show latest parts on the homepage"
msgstr ""
-#: common/models.py:1057
+#: common/models.py:1069
msgid "Recent Part Count"
msgstr ""
-#: common/models.py:1058
+#: common/models.py:1070
msgid "Number of recent parts to display on index page"
msgstr ""
-#: common/models.py:1064
+#: common/models.py:1076
msgid "Show unvalidated BOMs"
msgstr ""
-#: common/models.py:1065
+#: common/models.py:1077
msgid "Show BOMs that await validation on the homepage"
msgstr ""
-#: common/models.py:1070
+#: common/models.py:1082
msgid "Show recent stock changes"
msgstr ""
-#: common/models.py:1071
+#: common/models.py:1083
msgid "Show recently changed stock items on the homepage"
msgstr ""
-#: common/models.py:1076
+#: common/models.py:1088
msgid "Recent Stock Count"
msgstr ""
-#: common/models.py:1077
+#: common/models.py:1089
msgid "Number of recent stock items to display on index page"
msgstr ""
-#: common/models.py:1082
+#: common/models.py:1094
msgid "Show low stock"
msgstr ""
-#: common/models.py:1083
+#: common/models.py:1095
msgid "Show low stock items on the homepage"
msgstr ""
-#: common/models.py:1088
+#: common/models.py:1100
msgid "Show depleted stock"
msgstr ""
-#: common/models.py:1089
+#: common/models.py:1101
msgid "Show depleted stock items on the homepage"
msgstr ""
-#: common/models.py:1094
+#: common/models.py:1106
msgid "Show needed stock"
msgstr ""
-#: common/models.py:1095
+#: common/models.py:1107
msgid "Show stock items needed for builds on the homepage"
msgstr ""
-#: common/models.py:1100
+#: common/models.py:1112
msgid "Show expired stock"
msgstr ""
-#: common/models.py:1101
+#: common/models.py:1113
msgid "Show expired stock items on the homepage"
msgstr ""
-#: common/models.py:1106
+#: common/models.py:1118
msgid "Show stale stock"
msgstr ""
-#: common/models.py:1107
+#: common/models.py:1119
msgid "Show stale stock items on the homepage"
msgstr ""
-#: common/models.py:1112
+#: common/models.py:1124
msgid "Show pending builds"
msgstr ""
-#: common/models.py:1113
+#: common/models.py:1125
msgid "Show pending builds on the homepage"
msgstr ""
-#: common/models.py:1118
+#: common/models.py:1130
msgid "Show overdue builds"
msgstr ""
-#: common/models.py:1119
+#: common/models.py:1131
msgid "Show overdue builds on the homepage"
msgstr ""
-#: common/models.py:1124
+#: common/models.py:1136
msgid "Show outstanding POs"
msgstr ""
-#: common/models.py:1125
+#: common/models.py:1137
msgid "Show outstanding POs on the homepage"
msgstr ""
-#: common/models.py:1130
+#: common/models.py:1142
msgid "Show overdue POs"
msgstr ""
-#: common/models.py:1131
+#: common/models.py:1143
msgid "Show overdue POs on the homepage"
msgstr ""
-#: common/models.py:1136
+#: common/models.py:1148
msgid "Show outstanding SOs"
msgstr ""
-#: common/models.py:1137
+#: common/models.py:1149
msgid "Show outstanding SOs on the homepage"
msgstr ""
-#: common/models.py:1142
+#: common/models.py:1154
msgid "Show overdue SOs"
msgstr ""
-#: common/models.py:1143
+#: common/models.py:1155
msgid "Show overdue SOs on the homepage"
msgstr ""
-#: common/models.py:1149
+#: common/models.py:1161
msgid "Inline label display"
msgstr ""
-#: common/models.py:1150
+#: common/models.py:1162
msgid "Display PDF labels in the browser, instead of downloading as a file"
msgstr ""
-#: common/models.py:1156
+#: common/models.py:1168
msgid "Inline report display"
msgstr ""
-#: common/models.py:1157
+#: common/models.py:1169
msgid "Display PDF reports in the browser, instead of downloading as a file"
msgstr ""
-#: common/models.py:1163
+#: common/models.py:1175
msgid "Search Preview Results"
msgstr ""
-#: common/models.py:1164
+#: common/models.py:1176
msgid "Number of results to show in search preview window"
msgstr ""
-#: common/models.py:1170
+#: common/models.py:1182
msgid "Search Show Stock"
msgstr ""
-#: common/models.py:1171
+#: common/models.py:1183
msgid "Display stock levels in search preview window"
msgstr ""
-#: common/models.py:1177
+#: common/models.py:1189
msgid "Hide Inactive Parts"
msgstr ""
-#: common/models.py:1178
+#: common/models.py:1190
msgid "Hide inactive parts in search preview window"
msgstr ""
-#: common/models.py:1184
+#: common/models.py:1196
msgid "Show Quantity in Forms"
msgstr ""
-#: common/models.py:1185
+#: common/models.py:1197
msgid "Display available part quantity in some forms"
msgstr ""
-#: common/models.py:1191
+#: common/models.py:1203
msgid "Escape Key Closes Forms"
msgstr ""
-#: common/models.py:1192
+#: common/models.py:1204
msgid "Use the escape key to close modal forms"
msgstr ""
-#: common/models.py:1198
+#: common/models.py:1210
msgid "Fixed Navbar"
msgstr ""
-#: common/models.py:1199
+#: common/models.py:1211
msgid "InvenTree navbar position is fixed to the top of the screen"
msgstr ""
-#: common/models.py:1264 company/forms.py:43
+#: common/models.py:1276 company/forms.py:43
msgid "Price break quantity"
msgstr ""
-#: common/models.py:1271 company/serializers.py:264
+#: common/models.py:1283 company/serializers.py:264
#: company/templates/company/supplier_part.html:256
#: templates/js/translated/part.js:915 templates/js/translated/part.js:1867
msgid "Price"
msgstr ""
-#: common/models.py:1272
+#: common/models.py:1284
msgid "Unit price at specified quantity"
msgstr ""
-#: common/models.py:1429 common/models.py:1568
+#: common/models.py:1441 common/models.py:1580
msgid "Endpoint"
msgstr ""
-#: common/models.py:1430
+#: common/models.py:1442
msgid "Endpoint at which this webhook is received"
msgstr ""
-#: common/models.py:1439
+#: common/models.py:1451
msgid "Name for this webhook"
msgstr ""
-#: common/models.py:1444 part/models.py:948 plugin/models.py:46
+#: common/models.py:1456 part/models.py:978 plugin/models.py:46
#: templates/js/translated/table_filters.js:34
#: templates/js/translated/table_filters.js:96
-#: templates/js/translated/table_filters.js:295
-#: templates/js/translated/table_filters.js:417
+#: templates/js/translated/table_filters.js:290
+#: templates/js/translated/table_filters.js:412
msgid "Active"
msgstr ""
-#: common/models.py:1445
+#: common/models.py:1457
msgid "Is this webhook active"
msgstr ""
-#: common/models.py:1459
+#: common/models.py:1471
msgid "Token"
msgstr ""
-#: common/models.py:1460
+#: common/models.py:1472
msgid "Token for access"
msgstr ""
-#: common/models.py:1467
+#: common/models.py:1479
msgid "Secret"
msgstr ""
-#: common/models.py:1468
+#: common/models.py:1480
msgid "Shared secret for HMAC"
msgstr ""
-#: common/models.py:1535
+#: common/models.py:1547
msgid "Message ID"
msgstr ""
-#: common/models.py:1536
+#: common/models.py:1548
msgid "Unique identifier for this message"
msgstr ""
-#: common/models.py:1544
+#: common/models.py:1556
msgid "Host"
msgstr ""
-#: common/models.py:1545
+#: common/models.py:1557
msgid "Host from which this message was received"
msgstr ""
-#: common/models.py:1552
+#: common/models.py:1564
msgid "Header"
msgstr ""
-#: common/models.py:1553
+#: common/models.py:1565
msgid "Header of this message"
msgstr ""
-#: common/models.py:1559
+#: common/models.py:1571
msgid "Body"
msgstr ""
-#: common/models.py:1560
+#: common/models.py:1572
msgid "Body of this message"
msgstr ""
-#: common/models.py:1569
+#: common/models.py:1581
msgid "Endpoint on which this message was received"
msgstr ""
-#: common/models.py:1574
+#: common/models.py:1586
msgid "Worked on"
msgstr ""
-#: common/models.py:1575
+#: common/models.py:1587
msgid "Was the work on this message finished?"
msgstr ""
#: common/views.py:93 order/templates/order/order_wizard/po_upload.html:49
#: order/templates/order/purchase_order_detail.html:24 order/views.py:243
-#: part/templates/part/bom_upload/upload_file.html:52
-#: part/templates/part/import_wizard/part_upload.html:47 part/views.py:213
-#: part/views.py:773
+#: part/templates/part/import_wizard/part_upload.html:47 part/views.py:210
+#: templates/patterns/wizard/upload.html:35
msgid "Upload File"
msgstr ""
-#: common/views.py:94 order/templates/order/order_wizard/match_fields.html:52
-#: order/views.py:244 part/templates/part/bom_upload/match_fields.html:52
+#: common/views.py:94 order/views.py:244
#: part/templates/part/import_wizard/ajax_match_fields.html:45
-#: part/templates/part/import_wizard/match_fields.html:52 part/views.py:214
-#: part/views.py:774
+#: part/templates/part/import_wizard/match_fields.html:52 part/views.py:211
+#: templates/patterns/wizard/match_fields.html:51
msgid "Match Fields"
msgstr ""
@@ -2328,15 +2345,13 @@ msgstr ""
msgid "Parts imported"
msgstr ""
-#: common/views.py:517 order/templates/order/order_wizard/match_fields.html:27
-#: order/templates/order/order_wizard/match_parts.html:19
+#: common/views.py:517 order/templates/order/order_wizard/match_parts.html:19
#: order/templates/order/order_wizard/po_upload.html:47
-#: part/templates/part/bom_upload/match_fields.html:27
-#: part/templates/part/bom_upload/match_parts.html:19
-#: part/templates/part/bom_upload/upload_file.html:50
#: part/templates/part/import_wizard/match_fields.html:27
#: part/templates/part/import_wizard/match_references.html:19
#: part/templates/part/import_wizard/part_upload.html:45
+#: templates/patterns/wizard/match_fields.html:26
+#: templates/patterns/wizard/upload.html:33
msgid "Previous Step"
msgstr ""
@@ -2404,7 +2419,7 @@ msgstr ""
msgid "Link to external company information"
msgstr ""
-#: company/models.py:139 part/models.py:840
+#: company/models.py:139 part/models.py:870
msgid "Image"
msgstr ""
@@ -2442,7 +2457,7 @@ msgid "Default currency used for this company"
msgstr ""
#: company/models.py:320 company/models.py:535 stock/models.py:471
-#: stock/templates/stock/item_base.html:142 templates/js/translated/bom.js:328
+#: stock/templates/stock/item_base.html:144 templates/js/translated/bom.js:541
msgid "Base Part"
msgstr ""
@@ -2453,11 +2468,11 @@ 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:380
+#: stock/templates/stock/item_base.html:382
#: templates/js/translated/company.js:333
#: templates/js/translated/company.js:517
#: templates/js/translated/company.js:800 templates/js/translated/part.js:234
-#: templates/js/translated/table_filters.js:389
+#: templates/js/translated/table_filters.js:384
msgid "Manufacturer"
msgstr "Fabrikant"
@@ -2488,7 +2503,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:390
+#: stock/templates/stock/item_base.html:392
msgid "Manufacturer Part"
msgstr "Fabrikant onderdeel"
@@ -2499,7 +2514,7 @@ msgstr ""
#: company/models.py:422
#: report/templates/report/inventree_test_report_base.html:95
#: stock/models.py:1988 templates/js/translated/company.js:647
-#: templates/js/translated/part.js:715 templates/js/translated/stock.js:1304
+#: templates/js/translated/part.js:715 templates/js/translated/stock.js:1332
msgid "Value"
msgstr ""
@@ -2507,9 +2522,9 @@ msgstr ""
msgid "Parameter value"
msgstr ""
-#: company/models.py:429 part/models.py:915 part/models.py:2457
+#: company/models.py:429 part/models.py:945 part/models.py:2493
#: part/templates/part/part_base.html:288
-#: templates/InvenTree/settings/settings.html:287
+#: templates/InvenTree/settings/settings.html:324
#: templates/js/translated/company.js:653 templates/js/translated/part.js:721
msgid "Units"
msgstr ""
@@ -2526,11 +2541,11 @@ msgstr "Gekoppeld fabrikant onderdeel moet verwijzen naar hetzelfde basis onderd
#: company/templates/company/supplier_part.html:87 order/models.py:227
#: order/templates/order/order_base.html:112
#: order/templates/order/order_wizard/select_pos.html:30 part/bom.py:237
-#: part/bom.py:265 stock/templates/stock/item_base.html:397
+#: part/bom.py:265 stock/templates/stock/item_base.html:399
#: templates/js/translated/company.js:337
#: templates/js/translated/company.js:774 templates/js/translated/order.js:823
#: templates/js/translated/part.js:215 templates/js/translated/part.js:863
-#: templates/js/translated/table_filters.js:393
+#: templates/js/translated/table_filters.js:388
msgid "Supplier"
msgstr ""
@@ -2561,22 +2576,23 @@ msgid "Supplier part description"
msgstr ""
#: company/models.py:576 company/templates/company/supplier_part.html:119
-#: part/models.py:2648 report/templates/report/inventree_po_report.html:93
-#: report/templates/report/inventree_so_report.html:93
+#: part/models.py:2717 part/templates/part/upload_bom.html:59
+#: report/templates/report/inventree_po_report.html:93
+#: report/templates/report/inventree_so_report.html:93 stock/serializers.py:409
msgid "Note"
msgstr ""
-#: company/models.py:580 part/models.py:1781
+#: company/models.py:580 part/models.py:1817
msgid "base cost"
msgstr ""
-#: company/models.py:580 part/models.py:1781
+#: company/models.py:580 part/models.py:1817
msgid "Minimum charge (e.g. stocking fee)"
msgstr ""
#: company/models.py:582 company/templates/company/supplier_part.html:112
-#: stock/models.py:495 stock/templates/stock/item_base.html:338
-#: templates/js/translated/company.js:850 templates/js/translated/stock.js:1799
+#: stock/models.py:495 stock/templates/stock/item_base.html:340
+#: templates/js/translated/company.js:850 templates/js/translated/stock.js:1923
msgid "Packaging"
msgstr ""
@@ -2584,7 +2600,7 @@ msgstr ""
msgid "Part packaging"
msgstr ""
-#: company/models.py:584 part/models.py:1783
+#: company/models.py:584 part/models.py:1819
msgid "multiple"
msgstr ""
@@ -2645,11 +2661,11 @@ msgstr ""
#: company/templates/company/company_base.html:83 order/models.py:552
#: order/templates/order/sales_order_base.html:115 stock/models.py:514
-#: stock/models.py:515 stock/serializers.py:626
-#: stock/templates/stock/item_base.html:290
+#: stock/models.py:515 stock/serializers.py:683
+#: stock/templates/stock/item_base.html:292
#: templates/js/translated/company.js:329 templates/js/translated/order.js:1240
-#: templates/js/translated/stock.js:2610
-#: templates/js/translated/table_filters.js:397
+#: templates/js/translated/stock.js:2734
+#: templates/js/translated/table_filters.js:392
msgid "Customer"
msgstr ""
@@ -2679,7 +2695,7 @@ msgstr ""
#: company/templates/company/detail.html:20
#: company/templates/company/manufacturer_part.html:118
-#: part/templates/part/detail.html:353
+#: part/templates/part/detail.html:356
msgid "New Supplier Part"
msgstr ""
@@ -2687,8 +2703,8 @@ msgstr ""
#: company/templates/company/detail.html:79
#: company/templates/company/manufacturer_part.html:127
#: company/templates/company/manufacturer_part.html:156
-#: part/templates/part/category.html:171 part/templates/part/detail.html:362
-#: part/templates/part/detail.html:391
+#: part/templates/part/category.html:171 part/templates/part/detail.html:365
+#: part/templates/part/detail.html:394
msgid "Options"
msgstr ""
@@ -2716,7 +2732,7 @@ msgstr "Fabrikant onderdelen"
msgid "Create new manufacturer part"
msgstr "Maak nieuw fabrikant onderdeel"
-#: company/templates/company/detail.html:67 part/templates/part/detail.html:381
+#: company/templates/company/detail.html:67 part/templates/part/detail.html:384
msgid "New Manufacturer Part"
msgstr "Nieuw fabrikant onderdeel"
@@ -2730,7 +2746,7 @@ msgstr ""
#: order/templates/order/order_base.html:13
#: order/templates/order/purchase_orders.html:8
#: order/templates/order/purchase_orders.html:12
-#: part/templates/part/detail.html:85 part/templates/part/part_sidebar.html:37
+#: part/templates/part/detail.html:85 part/templates/part/part_sidebar.html:40
#: templates/InvenTree/index.html:252 templates/InvenTree/search.html:197
#: templates/InvenTree/settings/sidebar.html:45 templates/navbar.html:47
#: users/models.py:45
@@ -2752,7 +2768,7 @@ msgstr ""
#: order/templates/order/sales_order_base.html:13
#: order/templates/order/sales_orders.html:8
#: order/templates/order/sales_orders.html:15
-#: part/templates/part/detail.html:108 part/templates/part/part_sidebar.html:41
+#: part/templates/part/detail.html:108 part/templates/part/part_sidebar.html:44
#: templates/InvenTree/index.html:283 templates/InvenTree/search.html:217
#: templates/InvenTree/settings/sidebar.html:47 templates/navbar.html:58
#: users/models.py:46
@@ -2770,7 +2786,7 @@ msgid "New Sales Order"
msgstr ""
#: company/templates/company/detail.html:168
-#: templates/js/translated/build.js:1059
+#: templates/js/translated/build.js:1281
msgid "Assigned Stock"
msgstr ""
@@ -2780,13 +2796,13 @@ msgstr ""
#: company/templates/company/detail.html:384
#: company/templates/company/manufacturer_part.html:215
-#: part/templates/part/detail.html:435
+#: part/templates/part/detail.html:438
msgid "Delete Supplier Parts?"
msgstr ""
#: company/templates/company/detail.html:385
#: company/templates/company/manufacturer_part.html:216
-#: part/templates/part/detail.html:436
+#: part/templates/part/detail.html:439
msgid "All selected supplier parts will be deleted"
msgstr ""
@@ -2824,36 +2840,36 @@ 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:35 part/templates/part/prices.html:163
+#: part/templates/part/part_sidebar.html:38 part/templates/part/prices.html:163
#: templates/InvenTree/search.html:188 templates/navbar.html:45
msgid "Suppliers"
msgstr ""
#: company/templates/company/manufacturer_part.html:129
-#: part/templates/part/detail.html:364
+#: part/templates/part/detail.html:367
msgid "Delete supplier parts"
msgstr ""
#: company/templates/company/manufacturer_part.html:129
#: company/templates/company/manufacturer_part.html:158
#: company/templates/company/manufacturer_part.html:254
-#: part/templates/part/detail.html:364 part/templates/part/detail.html:393
+#: part/templates/part/detail.html:367 part/templates/part/detail.html:396
#: templates/js/translated/company.js:426 templates/js/translated/helpers.js:31
-#: users/models.py:212
+#: users/models.py:217
msgid "Delete"
msgstr ""
#: company/templates/company/manufacturer_part.html:143
#: company/templates/company/manufacturer_part_sidebar.html:5
#: part/templates/part/category_sidebar.html:17
-#: part/templates/part/detail.html:187 part/templates/part/part_sidebar.html:8
+#: part/templates/part/detail.html:190 part/templates/part/part_sidebar.html:9
msgid "Parameters"
msgstr ""
#: company/templates/company/manufacturer_part.html:147
-#: part/templates/part/detail.html:192
+#: part/templates/part/detail.html:195
#: templates/InvenTree/settings/category.html:12
-#: templates/InvenTree/settings/part.html:65
+#: templates/InvenTree/settings/part.html:66
msgid "New Parameter"
msgstr ""
@@ -2862,7 +2878,7 @@ msgid "Delete parameters"
msgstr ""
#: company/templates/company/manufacturer_part.html:191
-#: part/templates/part/detail.html:892
+#: part/templates/part/detail.html:895
msgid "Add Parameter"
msgstr ""
@@ -2892,8 +2908,8 @@ msgstr ""
#: company/templates/company/supplier_part.html:7
#: company/templates/company/supplier_part.html:24 stock/models.py:479
-#: stock/templates/stock/item_base.html:402
-#: templates/js/translated/company.js:790 templates/js/translated/stock.js:1756
+#: stock/templates/stock/item_base.html:404
+#: templates/js/translated/company.js:790 templates/js/translated/stock.js:1880
msgid "Supplier Part"
msgstr ""
@@ -2919,7 +2935,7 @@ msgstr ""
#: company/templates/company/supplier_part.html:142
#: part/templates/part/detail.html:25 stock/templates/stock/location.html:167
-#: templates/js/translated/stock.js:368
+#: templates/js/translated/stock.js:369
msgid "New Stock Item"
msgstr ""
@@ -2940,7 +2956,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:1628
+#: part/templates/part/prices.html:271 part/views.py:1319
msgid "Add Price Break"
msgstr ""
@@ -2948,11 +2964,11 @@ msgstr ""
msgid "No price break information found"
msgstr ""
-#: company/templates/company/supplier_part.html:224 part/views.py:1690
+#: company/templates/company/supplier_part.html:224 part/views.py:1381
msgid "Delete Price Break"
msgstr ""
-#: company/templates/company/supplier_part.html:238 part/views.py:1676
+#: company/templates/company/supplier_part.html:238 part/views.py:1367
msgid "Edit Price Break"
msgstr ""
@@ -2965,15 +2981,15 @@ msgid "Delete price break"
msgstr ""
#: company/templates/company/supplier_part_navbar.html:15
-#: part/templates/part/part_sidebar.html:14
+#: part/templates/part/part_sidebar.html:15
#: 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:150
#: templates/InvenTree/settings/sidebar.html:41
-#: templates/js/translated/bom.js:340 templates/js/translated/part.js:495
+#: templates/js/translated/bom.js:553 templates/js/translated/part.js:495
#: templates/js/translated/part.js:630 templates/js/translated/part.js:1125
-#: templates/js/translated/part.js:1286 templates/js/translated/stock.js:935
-#: templates/js/translated/stock.js:1588 templates/navbar.html:28
+#: templates/js/translated/part.js:1286 templates/js/translated/stock.js:936
+#: templates/js/translated/stock.js:1712 templates/navbar.html:28
msgid "Stock"
msgstr ""
@@ -2987,7 +3003,7 @@ msgid "Supplier Part Pricing"
msgstr ""
#: company/templates/company/supplier_part_navbar.html:29
-#: part/templates/part/part_sidebar.html:28
+#: part/templates/part/part_sidebar.html:30
msgid "Pricing"
msgstr ""
@@ -2996,7 +3012,7 @@ msgstr ""
#: stock/templates/stock/location.html:151
#: stock/templates/stock/location.html:163
#: stock/templates/stock/location_sidebar.html:7
-#: templates/InvenTree/search.html:152 templates/js/translated/stock.js:2509
+#: templates/InvenTree/search.html:152 templates/js/translated/stock.js:2633
#: templates/stats.html:105 templates/stats.html:114 users/models.py:43
msgid "Stock Items"
msgstr ""
@@ -3026,20 +3042,20 @@ msgstr ""
msgid "New Company"
msgstr ""
-#: company/views.py:129 part/views.py:593
+#: company/views.py:129 part/views.py:591
msgid "Download Image"
msgstr ""
-#: company/views.py:158 part/views.py:625
+#: company/views.py:158 part/views.py:623
msgid "Image size exceeds maximum allowable size for download"
msgstr ""
-#: company/views.py:165 part/views.py:632
+#: company/views.py:165 part/views.py:630
#, python-brace-format
msgid "Invalid response: {code}"
msgstr ""
-#: company/views.py:174 part/views.py:641
+#: company/views.py:174 part/views.py:639
msgid "Supplied URL is not a valid image file"
msgstr ""
@@ -3256,16 +3272,16 @@ msgid "Supplier part must match supplier"
msgstr ""
#: order/models.py:855 order/models.py:946 order/models.py:1042
-#: templates/js/translated/order.js:1820 templates/js/translated/stock.js:2271
+#: templates/js/translated/order.js:1820 templates/js/translated/stock.js:2395
msgid "Order"
msgstr ""
#: order/models.py:856 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:352
+#: stock/templates/stock/item_base.html:354
#: templates/js/translated/order.js:801 templates/js/translated/part.js:838
-#: templates/js/translated/stock.js:1733 templates/js/translated/stock.js:2591
+#: templates/js/translated/stock.js:1857 templates/js/translated/stock.js:2715
msgid "Purchase Order"
msgstr ""
@@ -3276,7 +3292,7 @@ msgstr ""
#: order/models.py:884 order/templates/order/order_base.html:163
#: templates/js/translated/order.js:589 templates/js/translated/order.js:1118
#: templates/js/translated/part.js:910 templates/js/translated/part.js:937
-#: templates/js/translated/table_filters.js:317
+#: templates/js/translated/table_filters.js:312
msgid "Received"
msgstr ""
@@ -3285,8 +3301,8 @@ msgid "Number of items received"
msgstr ""
#: order/models.py:892 part/templates/part/prices.html:176 stock/models.py:608
-#: stock/serializers.py:170 stock/templates/stock/item_base.html:359
-#: templates/js/translated/stock.js:1787
+#: stock/serializers.py:170 stock/templates/stock/item_base.html:361
+#: templates/js/translated/stock.js:1911
msgid "Purchase Price"
msgstr ""
@@ -3530,7 +3546,7 @@ msgstr ""
#: order/templates/order/order_base.html:94
#: order/templates/order/sales_order_base.html:89
-#: templates/js/translated/stock.js:2327
+#: templates/js/translated/stock.js:2451
msgid "Order Status"
msgstr ""
@@ -3574,73 +3590,20 @@ msgstr ""
msgid "After placing this purchase order, line items will no longer be editable."
msgstr ""
-#: order/templates/order/order_wizard/match_fields.html:9
-#: part/templates/part/bom_upload/match_fields.html:9
-#: part/templates/part/import_wizard/ajax_match_fields.html:9
-#: part/templates/part/import_wizard/match_fields.html:9
-msgid "Missing selections for the following required columns"
-msgstr ""
-
-#: order/templates/order/order_wizard/match_fields.html:20
-#: part/templates/part/bom_upload/match_fields.html:20
-#: part/templates/part/import_wizard/ajax_match_fields.html:20
-#: part/templates/part/import_wizard/match_fields.html:20
-msgid "Duplicate selections found, see below. Fix them then retry submitting."
-msgstr ""
-
-#: order/templates/order/order_wizard/match_fields.html:29
-#: order/templates/order/order_wizard/match_parts.html:21
-#: part/templates/part/bom_upload/match_fields.html:29
-#: part/templates/part/bom_upload/match_parts.html:21
-#: part/templates/part/import_wizard/match_fields.html:29
-#: part/templates/part/import_wizard/match_references.html:21
-msgid "Submit Selections"
-msgstr ""
-
-#: order/templates/order/order_wizard/match_fields.html:35
-#: part/templates/part/bom_upload/match_fields.html:35
-#: part/templates/part/import_wizard/ajax_match_fields.html:28
-#: part/templates/part/import_wizard/match_fields.html:35
-msgid "File Fields"
-msgstr ""
-
-#: order/templates/order/order_wizard/match_fields.html:42
-#: part/templates/part/bom_upload/match_fields.html:42
-#: part/templates/part/import_wizard/ajax_match_fields.html:35
-#: part/templates/part/import_wizard/match_fields.html:42
-msgid "Remove column"
-msgstr ""
-
-#: order/templates/order/order_wizard/match_fields.html:60
-#: part/templates/part/bom_upload/match_fields.html:60
-#: part/templates/part/import_wizard/ajax_match_fields.html:53
-#: part/templates/part/import_wizard/match_fields.html:60
-msgid "Duplicate selection"
-msgstr ""
-
-#: order/templates/order/order_wizard/match_fields.html:71
-#: order/templates/order/order_wizard/match_parts.html:52
-#: part/templates/part/bom_upload/match_fields.html:71
-#: part/templates/part/bom_upload/match_parts.html:53
-#: part/templates/part/import_wizard/ajax_match_fields.html:64
-#: part/templates/part/import_wizard/ajax_match_references.html:42
-#: part/templates/part/import_wizard/match_fields.html:71
-#: part/templates/part/import_wizard/match_references.html:49
-#: templates/js/translated/build.js:300 templates/js/translated/build.js:1311
-#: templates/js/translated/order.js:537 templates/js/translated/order.js:1488
-#: templates/js/translated/stock.js:601 templates/js/translated/stock.js:769
-msgid "Remove row"
-msgstr ""
-
#: order/templates/order/order_wizard/match_parts.html:12
-#: part/templates/part/bom_upload/match_parts.html:12
#: part/templates/part/import_wizard/ajax_match_references.html:12
#: part/templates/part/import_wizard/match_references.html:12
msgid "Errors exist in the submitted data"
msgstr ""
+#: order/templates/order/order_wizard/match_parts.html:21
+#: part/templates/part/import_wizard/match_fields.html:29
+#: part/templates/part/import_wizard/match_references.html:21
+#: templates/patterns/wizard/match_fields.html:28
+msgid "Submit Selections"
+msgstr ""
+
#: order/templates/order/order_wizard/match_parts.html:28
-#: part/templates/part/bom_upload/match_parts.html:28
#: part/templates/part/import_wizard/ajax_match_references.html:21
#: part/templates/part/import_wizard/match_references.html:28
msgid "Row"
@@ -3650,6 +3613,19 @@ msgstr ""
msgid "Select Supplier Part"
msgstr ""
+#: order/templates/order/order_wizard/match_parts.html:52
+#: part/templates/part/import_wizard/ajax_match_fields.html:64
+#: part/templates/part/import_wizard/ajax_match_references.html:42
+#: part/templates/part/import_wizard/match_fields.html:71
+#: part/templates/part/import_wizard/match_references.html:49
+#: templates/js/translated/bom.js:76 templates/js/translated/build.js:380
+#: templates/js/translated/build.js:528 templates/js/translated/build.js:1547
+#: templates/js/translated/order.js:537 templates/js/translated/order.js:1488
+#: templates/js/translated/stock.js:602 templates/js/translated/stock.js:770
+#: templates/patterns/wizard/match_fields.html:70
+msgid "Remove row"
+msgstr ""
+
#: order/templates/order/order_wizard/po_upload.html:8
msgid "Return to Orders"
msgstr ""
@@ -3659,9 +3635,9 @@ msgid "Upload File for Purchase Order"
msgstr ""
#: order/templates/order/order_wizard/po_upload.html:25
-#: part/templates/part/bom_upload/upload_file.html:21
#: part/templates/part/import_wizard/ajax_part_upload.html:10
#: part/templates/part/import_wizard/part_upload.html:23
+#: templates/patterns/wizard/upload.html:11
#, python-format
msgid "Step %(step)s of %(count)s"
msgstr ""
@@ -3819,7 +3795,7 @@ msgid "Pending Shipments"
msgstr ""
#: order/templates/order/sales_order_detail.html:48
-#: templates/js/translated/bom.js:732 templates/js/translated/build.js:1243
+#: templates/js/translated/bom.js:945 templates/js/translated/build.js:1465
msgid "Actions"
msgstr ""
@@ -3922,7 +3898,7 @@ msgstr ""
msgid "This field is required"
msgstr ""
-#: part/bom.py:125 part/models.py:83 part/models.py:849
+#: part/bom.py:125 part/models.py:83 part/models.py:879
#: part/templates/part/category.html:108 part/templates/part/part_base.html:338
msgid "Default Location"
msgstr "Standaard locatie"
@@ -3968,7 +3944,7 @@ msgstr ""
msgid "Default keywords for parts in this category"
msgstr ""
-#: part/models.py:97 part/models.py:2533 part/templates/part/category.html:15
+#: part/models.py:97 part/models.py:2569 part/templates/part/category.html:15
#: part/templates/part/part_app_base.html:10
msgid "Part Category"
msgstr ""
@@ -3994,408 +3970,478 @@ msgstr ""
msgid "Invalid choice for parent part"
msgstr ""
-#: part/models.py:502 part/models.py:514
+#: part/models.py:532 part/models.py:544
#, python-brace-format
msgid "Part '{p1}' is used in BOM for '{p2}' (recursive)"
msgstr ""
-#: part/models.py:644
+#: part/models.py:674
msgid "Next available serial numbers are"
msgstr ""
-#: part/models.py:648
+#: part/models.py:678
msgid "Next available serial number is"
msgstr ""
-#: part/models.py:653
+#: part/models.py:683
msgid "Most recent serial number is"
msgstr ""
-#: part/models.py:748
+#: part/models.py:778
msgid "Duplicate IPN not allowed in part settings"
msgstr ""
-#: part/models.py:773
+#: part/models.py:803 part/models.py:2622
msgid "Part name"
msgstr ""
-#: part/models.py:780
+#: part/models.py:810
msgid "Is Template"
msgstr ""
-#: part/models.py:781
+#: part/models.py:811
msgid "Is this part a template part?"
msgstr ""
-#: part/models.py:791
+#: part/models.py:821
msgid "Is this part a variant of another part?"
msgstr ""
-#: part/models.py:792
+#: part/models.py:822
msgid "Variant Of"
msgstr ""
-#: part/models.py:798
+#: part/models.py:828
msgid "Part description"
msgstr ""
-#: part/models.py:803 part/templates/part/category.html:86
+#: part/models.py:833 part/templates/part/category.html:86
#: part/templates/part/part_base.html:302
msgid "Keywords"
msgstr ""
-#: part/models.py:804
+#: part/models.py:834
msgid "Part keywords to improve visibility in search results"
msgstr ""
-#: part/models.py:811 part/models.py:2283 part/models.py:2532
+#: part/models.py:841 part/models.py:2319 part/models.py:2568
#: part/templates/part/part_base.html:265
#: part/templates/part/set_category.html:15
-#: templates/InvenTree/settings/settings.html:186
+#: templates/InvenTree/settings/settings.html:223
#: templates/js/translated/part.js:1268
msgid "Category"
msgstr ""
-#: part/models.py:812
+#: part/models.py:842
msgid "Part category"
msgstr ""
-#: part/models.py:817 part/templates/part/part_base.html:274
+#: part/models.py:847 part/templates/part/part_base.html:274
#: templates/js/translated/part.js:618 templates/js/translated/part.js:1221
-#: templates/js/translated/stock.js:1560
+#: templates/js/translated/stock.js:1684
msgid "IPN"
msgstr ""
-#: part/models.py:818
+#: part/models.py:848
msgid "Internal Part Number"
msgstr ""
-#: part/models.py:824
+#: part/models.py:854
msgid "Part revision or version number"
msgstr ""
-#: part/models.py:825 part/templates/part/part_base.html:281
+#: part/models.py:855 part/templates/part/part_base.html:281
#: report/models.py:200 templates/js/translated/part.js:622
msgid "Revision"
msgstr ""
-#: part/models.py:847
+#: part/models.py:877
msgid "Where is this item normally stored?"
msgstr ""
-#: part/models.py:894 part/templates/part/part_base.html:347
+#: part/models.py:924 part/templates/part/part_base.html:347
msgid "Default Supplier"
msgstr ""
-#: part/models.py:895
+#: part/models.py:925
msgid "Default supplier part"
msgstr ""
-#: part/models.py:902
+#: part/models.py:932
msgid "Default Expiry"
msgstr ""
-#: part/models.py:903
+#: part/models.py:933
msgid "Expiry time (in days) for stock items of this part"
msgstr ""
-#: part/models.py:908 part/templates/part/part_base.html:196
+#: part/models.py:938 part/templates/part/part_base.html:196
msgid "Minimum Stock"
msgstr ""
-#: part/models.py:909
+#: part/models.py:939
msgid "Minimum allowed stock level"
msgstr ""
-#: part/models.py:916
+#: part/models.py:946
msgid "Stock keeping units for this part"
msgstr ""
-#: part/models.py:922
+#: part/models.py:952
msgid "Can this part be built from other parts?"
msgstr ""
-#: part/models.py:928
+#: part/models.py:958
msgid "Can this part be used to build other parts?"
msgstr ""
-#: part/models.py:934
+#: part/models.py:964
msgid "Does this part have tracking for unique items?"
msgstr ""
-#: part/models.py:939
+#: part/models.py:969
msgid "Can this part be purchased from external suppliers?"
msgstr ""
-#: part/models.py:944
+#: part/models.py:974
msgid "Can this part be sold to customers?"
msgstr ""
-#: part/models.py:949
+#: part/models.py:979
msgid "Is this part active?"
msgstr ""
-#: part/models.py:954
+#: part/models.py:984
msgid "Is this a virtual part, such as a software product or license?"
msgstr ""
-#: part/models.py:959
+#: part/models.py:989
msgid "Part notes - supports Markdown formatting"
msgstr ""
-#: part/models.py:962
+#: part/models.py:992
msgid "BOM checksum"
msgstr ""
-#: part/models.py:962
+#: part/models.py:992
msgid "Stored BOM checksum"
msgstr ""
-#: part/models.py:965
+#: part/models.py:995
msgid "BOM checked by"
msgstr ""
-#: part/models.py:967
+#: part/models.py:997
msgid "BOM checked date"
msgstr ""
-#: part/models.py:971
+#: part/models.py:1001
msgid "Creation User"
msgstr ""
-#: part/models.py:1783
+#: part/models.py:1819
msgid "Sell multiple"
msgstr ""
-#: part/models.py:2333
+#: part/models.py:2369
msgid "Test templates can only be created for trackable parts"
msgstr ""
-#: part/models.py:2350
+#: part/models.py:2386
msgid "Test with this name already exists for this part"
msgstr ""
-#: part/models.py:2370 templates/js/translated/part.js:1714
-#: templates/js/translated/stock.js:1284
+#: part/models.py:2406 templates/js/translated/part.js:1714
+#: templates/js/translated/stock.js:1312
msgid "Test Name"
msgstr ""
-#: part/models.py:2371
+#: part/models.py:2407
msgid "Enter a name for the test"
msgstr ""
-#: part/models.py:2376
+#: part/models.py:2412
msgid "Test Description"
msgstr ""
-#: part/models.py:2377
+#: part/models.py:2413
msgid "Enter description for this test"
msgstr ""
-#: part/models.py:2382 templates/js/translated/part.js:1723
-#: templates/js/translated/table_filters.js:281
+#: part/models.py:2418 templates/js/translated/part.js:1723
+#: templates/js/translated/table_filters.js:276
msgid "Required"
msgstr ""
-#: part/models.py:2383
+#: part/models.py:2419
msgid "Is this test required to pass?"
msgstr ""
-#: part/models.py:2388 templates/js/translated/part.js:1731
+#: part/models.py:2424 templates/js/translated/part.js:1731
msgid "Requires Value"
msgstr ""
-#: part/models.py:2389
+#: part/models.py:2425
msgid "Does this test require a value when adding a test result?"
msgstr ""
-#: part/models.py:2394 templates/js/translated/part.js:1738
+#: part/models.py:2430 templates/js/translated/part.js:1738
msgid "Requires Attachment"
msgstr ""
-#: part/models.py:2395
+#: part/models.py:2431
msgid "Does this test require a file attachment when adding a test result?"
msgstr ""
-#: part/models.py:2406
+#: part/models.py:2442
#, python-brace-format
msgid "Illegal character in template name ({c})"
msgstr ""
-#: part/models.py:2442
+#: part/models.py:2478
msgid "Parameter template name must be unique"
msgstr ""
-#: part/models.py:2450
+#: part/models.py:2486
msgid "Parameter Name"
msgstr ""
-#: part/models.py:2457
+#: part/models.py:2493
msgid "Parameter Units"
msgstr ""
-#: part/models.py:2487
+#: part/models.py:2523
msgid "Parent Part"
msgstr ""
-#: part/models.py:2489 part/models.py:2538 part/models.py:2539
-#: templates/InvenTree/settings/settings.html:181
+#: part/models.py:2525 part/models.py:2574 part/models.py:2575
+#: templates/InvenTree/settings/settings.html:218
msgid "Parameter Template"
msgstr ""
-#: part/models.py:2491
+#: part/models.py:2527
msgid "Data"
msgstr ""
-#: part/models.py:2491
+#: part/models.py:2527
msgid "Parameter Value"
msgstr ""
-#: part/models.py:2543 templates/InvenTree/settings/settings.html:190
+#: part/models.py:2579 templates/InvenTree/settings/settings.html:227
msgid "Default Value"
msgstr ""
-#: part/models.py:2544
+#: part/models.py:2580
msgid "Default Parameter Value"
msgstr ""
+#: part/models.py:2614
+msgid "Part ID or part name"
+msgstr ""
+
+#: part/models.py:2617 templates/js/translated/model_renderers.js:182
+msgid "Part ID"
+msgstr ""
+
+#: part/models.py:2618
+msgid "Unique part ID value"
+msgstr ""
+
#: part/models.py:2621
-msgid "Select parent part"
+msgid "Part Name"
+msgstr ""
+
+#: part/models.py:2625
+msgid "Part IPN"
+msgstr ""
+
+#: part/models.py:2626
+msgid "Part IPN value"
msgstr ""
#: part/models.py:2629
-msgid "Sub part"
+msgid "Level"
msgstr ""
#: part/models.py:2630
+msgid "BOM level"
+msgstr ""
+
+#: part/models.py:2690
+msgid "Select parent part"
+msgstr ""
+
+#: part/models.py:2698
+msgid "Sub part"
+msgstr ""
+
+#: part/models.py:2699
msgid "Select part to be used in BOM"
msgstr ""
-#: part/models.py:2636
+#: part/models.py:2705
msgid "BOM quantity for this BOM item"
msgstr ""
-#: part/models.py:2638 templates/js/translated/bom.js:578
-#: templates/js/translated/bom.js:652
+#: part/models.py:2707 part/templates/part/upload_bom.html:58
+#: templates/js/translated/bom.js:791 templates/js/translated/bom.js:865
#: templates/js/translated/table_filters.js:92
msgid "Optional"
msgstr ""
-#: part/models.py:2638
+#: part/models.py:2707
msgid "This BOM item is optional"
msgstr ""
-#: part/models.py:2641
+#: part/models.py:2710 part/templates/part/upload_bom.html:55
msgid "Overage"
msgstr ""
-#: part/models.py:2642
+#: part/models.py:2711
msgid "Estimated build wastage quantity (absolute or percentage)"
msgstr ""
-#: part/models.py:2645
+#: part/models.py:2714
msgid "BOM item reference"
msgstr ""
-#: part/models.py:2648
+#: part/models.py:2717
msgid "BOM item notes"
msgstr ""
-#: part/models.py:2650
+#: part/models.py:2719
msgid "Checksum"
msgstr ""
-#: part/models.py:2650
+#: part/models.py:2719
msgid "BOM line checksum"
msgstr ""
-#: part/models.py:2654 templates/js/translated/bom.js:669
+#: part/models.py:2723 part/templates/part/upload_bom.html:57
+#: templates/js/translated/bom.js:882
#: templates/js/translated/table_filters.js:68
#: templates/js/translated/table_filters.js:88
msgid "Inherited"
msgstr ""
-#: part/models.py:2655
+#: part/models.py:2724
msgid "This BOM item is inherited by BOMs for variant parts"
msgstr ""
-#: part/models.py:2660 templates/js/translated/bom.js:661
+#: part/models.py:2729 part/templates/part/upload_bom.html:56
+#: templates/js/translated/bom.js:874
msgid "Allow Variants"
msgstr ""
-#: part/models.py:2661
+#: part/models.py:2730
msgid "Stock items for variant parts can be used for this BOM item"
msgstr ""
-#: part/models.py:2746 stock/models.py:357
+#: part/models.py:2815 stock/models.py:357
msgid "Quantity must be integer value for trackable parts"
msgstr ""
-#: part/models.py:2755 part/models.py:2757
+#: part/models.py:2824 part/models.py:2826
msgid "Sub part must be specified"
msgstr ""
-#: part/models.py:2886
+#: part/models.py:2955
msgid "BOM Item Substitute"
msgstr ""
-#: part/models.py:2908
+#: part/models.py:2977
msgid "Substitute part cannot be the same as the master part"
msgstr ""
-#: part/models.py:2920
+#: part/models.py:2989
msgid "Parent BOM item"
msgstr ""
-#: part/models.py:2928
+#: part/models.py:2997
msgid "Substitute part"
msgstr ""
-#: part/models.py:2939
+#: part/models.py:3008
msgid "Part 1"
msgstr ""
-#: part/models.py:2943
+#: part/models.py:3012
msgid "Part 2"
msgstr ""
-#: part/models.py:2943
+#: part/models.py:3012
msgid "Select Related Part"
msgstr ""
-#: part/models.py:2975
+#: part/models.py:3044
msgid "Error creating relationship: check that the part is not related to itself and that the relationship is unique"
msgstr ""
-#: part/serializers.py:659
+#: part/serializers.py:667
msgid "Select part to copy BOM from"
msgstr ""
-#: part/serializers.py:670
+#: part/serializers.py:678
msgid "Remove Existing Data"
msgstr ""
-#: part/serializers.py:671
+#: part/serializers.py:679
msgid "Remove existing BOM items before copying"
msgstr ""
-#: part/serializers.py:676
+#: part/serializers.py:684
msgid "Include Inherited"
msgstr ""
-#: part/serializers.py:677
+#: part/serializers.py:685
msgid "Include BOM items which are inherited from templated parts"
msgstr ""
-#: part/serializers.py:682
+#: part/serializers.py:690
msgid "Skip Invalid Rows"
msgstr ""
-#: part/serializers.py:683
+#: part/serializers.py:691
msgid "Enable this option to skip invalid rows"
msgstr ""
-#: part/tasks.py:53
+#: part/serializers.py:734
+msgid "Clear Existing BOM"
+msgstr ""
+
+#: part/serializers.py:735
+msgid "Delete existing BOM items before uploading"
+msgstr ""
+
+#: part/serializers.py:762
+msgid "No part column specified"
+msgstr ""
+
+#: part/serializers.py:806
+msgid "Multiple matching parts found"
+msgstr ""
+
+#: part/serializers.py:809
+msgid "No matching part found"
+msgstr ""
+
+#: part/serializers.py:812
+msgid "Part is not designated as a component"
+msgstr ""
+
+#: part/serializers.py:821
+msgid "Quantity not provided"
+msgstr ""
+
+#: part/serializers.py:829
+msgid "Invalid quantity"
+msgstr ""
+
+#: part/serializers.py:848
+msgid "At least one BOM item is required"
+msgstr ""
+
+#: part/tasks.py:58
msgid "Low stock notification"
msgstr ""
@@ -4418,7 +4464,7 @@ msgstr ""
msgid "The BOM for %(part)s has not been validated."
msgstr ""
-#: part/templates/part/bom.html:30 part/templates/part/detail.html:270
+#: part/templates/part/bom.html:30 part/templates/part/detail.html:273
msgid "BOM actions"
msgstr ""
@@ -4426,34 +4472,6 @@ msgstr ""
msgid "Delete Items"
msgstr ""
-#: part/templates/part/bom_upload/match_parts.html:29
-msgid "Select Part"
-msgstr ""
-
-#: part/templates/part/bom_upload/upload_file.html:8
-msgid "Return to BOM"
-msgstr ""
-
-#: part/templates/part/bom_upload/upload_file.html:13
-msgid "Upload Bill of Materials"
-msgstr ""
-
-#: part/templates/part/bom_upload/upload_file.html:33
-msgid "Requirements for BOM upload"
-msgstr ""
-
-#: part/templates/part/bom_upload/upload_file.html:35
-msgid "The BOM file must contain the required named columns as provided in the "
-msgstr ""
-
-#: part/templates/part/bom_upload/upload_file.html:35
-msgid "BOM Upload Template"
-msgstr ""
-
-#: part/templates/part/bom_upload/upload_file.html:36
-msgid "Each part must already exist in the database"
-msgstr ""
-
#: part/templates/part/category.html:28 part/templates/part/category.html:32
msgid "You are subscribed to notifications for this category"
msgstr ""
@@ -4519,7 +4537,7 @@ msgstr ""
msgid "Create new part"
msgstr ""
-#: part/templates/part/category.html:161 templates/js/translated/bom.js:152
+#: part/templates/part/category.html:161 templates/js/translated/bom.js:365
msgid "New Part"
msgstr ""
@@ -4639,138 +4657,168 @@ msgstr ""
msgid "Sales Order Allocations"
msgstr "Toewijzingen verkoopopdracht"
-#: part/templates/part/detail.html:159
+#: part/templates/part/detail.html:162
msgid "Part Variants"
msgstr ""
-#: part/templates/part/detail.html:163
+#: part/templates/part/detail.html:166
msgid "Create new variant"
msgstr ""
-#: part/templates/part/detail.html:164
+#: part/templates/part/detail.html:167
msgid "New Variant"
msgstr ""
-#: part/templates/part/detail.html:191
+#: part/templates/part/detail.html:194
msgid "Add new parameter"
msgstr ""
-#: part/templates/part/detail.html:228 part/templates/part/part_sidebar.html:49
+#: part/templates/part/detail.html:231 part/templates/part/part_sidebar.html:52
msgid "Related Parts"
msgstr ""
-#: part/templates/part/detail.html:232 part/templates/part/detail.html:233
+#: part/templates/part/detail.html:235 part/templates/part/detail.html:236
msgid "Add Related"
msgstr ""
-#: part/templates/part/detail.html:253 part/templates/part/part_sidebar.html:17
+#: part/templates/part/detail.html:256 part/templates/part/part_sidebar.html:18
msgid "Bill of Materials"
msgstr ""
-#: part/templates/part/detail.html:258
+#: part/templates/part/detail.html:261
msgid "Export actions"
msgstr ""
-#: part/templates/part/detail.html:262 templates/js/translated/bom.js:70
+#: part/templates/part/detail.html:265 templates/js/translated/bom.js:283
msgid "Export BOM"
msgstr ""
-#: part/templates/part/detail.html:264
+#: part/templates/part/detail.html:267
msgid "Print BOM Report"
msgstr ""
-#: part/templates/part/detail.html:274
+#: part/templates/part/detail.html:277
msgid "Upload BOM"
msgstr ""
-#: part/templates/part/detail.html:276 templates/js/translated/part.js:272
+#: part/templates/part/detail.html:279 templates/js/translated/part.js:272
msgid "Copy BOM"
msgstr ""
-#: part/templates/part/detail.html:278
+#: part/templates/part/detail.html:281
msgid "Validate BOM"
msgstr ""
-#: part/templates/part/detail.html:283
+#: part/templates/part/detail.html:286
msgid "New BOM Item"
msgstr "Nieuw stuklijstitem"
-#: part/templates/part/detail.html:284
+#: part/templates/part/detail.html:287
msgid "Add BOM Item"
msgstr ""
-#: part/templates/part/detail.html:297
+#: part/templates/part/detail.html:300
msgid "Assemblies"
msgstr "Samenstellingen"
-#: part/templates/part/detail.html:314
+#: part/templates/part/detail.html:317
msgid "Part Builds"
msgstr ""
-#: part/templates/part/detail.html:339
+#: part/templates/part/detail.html:342
msgid "Build Order Allocations"
msgstr "Productie-opdracht toewijzingen"
-#: part/templates/part/detail.html:349
+#: part/templates/part/detail.html:352
msgid "Part Suppliers"
msgstr ""
-#: part/templates/part/detail.html:377
+#: part/templates/part/detail.html:380
msgid "Part Manufacturers"
msgstr "Fabrikanten"
-#: part/templates/part/detail.html:393
+#: part/templates/part/detail.html:396
msgid "Delete manufacturer parts"
msgstr "Fabrikant onderdeel verwijderen"
-#: part/templates/part/detail.html:575
+#: part/templates/part/detail.html:578
msgid "Delete selected BOM items?"
msgstr ""
-#: part/templates/part/detail.html:576
+#: part/templates/part/detail.html:579
msgid "All selected BOM items will be deleted"
msgstr ""
-#: part/templates/part/detail.html:625
+#: part/templates/part/detail.html:628
msgid "Create BOM Item"
msgstr ""
-#: part/templates/part/detail.html:682
+#: part/templates/part/detail.html:685
msgid "Related Part"
msgstr ""
-#: part/templates/part/detail.html:690
+#: part/templates/part/detail.html:693
msgid "Add Related Part"
msgstr ""
-#: part/templates/part/detail.html:785
+#: part/templates/part/detail.html:788
msgid "Add Test Result Template"
msgstr ""
-#: part/templates/part/detail.html:842
+#: part/templates/part/detail.html:845
msgid "Edit Part Notes"
msgstr ""
-#: part/templates/part/detail.html:955
+#: part/templates/part/detail.html:958
#, python-format
msgid "Purchase Unit Price - %(currency)s"
msgstr ""
-#: part/templates/part/detail.html:967
+#: part/templates/part/detail.html:970
#, python-format
msgid "Unit Price-Cost Difference - %(currency)s"
msgstr ""
-#: part/templates/part/detail.html:979
+#: part/templates/part/detail.html:982
#, python-format
msgid "Supplier Unit Cost - %(currency)s"
msgstr ""
-#: part/templates/part/detail.html:1068
+#: part/templates/part/detail.html:1071
#, python-format
msgid "Unit Price - %(currency)s"
msgstr ""
+#: part/templates/part/import_wizard/ajax_match_fields.html:9
+#: part/templates/part/import_wizard/match_fields.html:9
+#: templates/patterns/wizard/match_fields.html:8
+msgid "Missing selections for the following required columns"
+msgstr ""
+
+#: part/templates/part/import_wizard/ajax_match_fields.html:20
+#: part/templates/part/import_wizard/match_fields.html:20
+#: templates/patterns/wizard/match_fields.html:19
+msgid "Duplicate selections found, see below. Fix them then retry submitting."
+msgstr ""
+
+#: part/templates/part/import_wizard/ajax_match_fields.html:28
+#: part/templates/part/import_wizard/match_fields.html:35
+#: templates/patterns/wizard/match_fields.html:34
+msgid "File Fields"
+msgstr ""
+
+#: part/templates/part/import_wizard/ajax_match_fields.html:35
+#: part/templates/part/import_wizard/match_fields.html:42
+#: templates/patterns/wizard/match_fields.html:41
+msgid "Remove column"
+msgstr ""
+
+#: part/templates/part/import_wizard/ajax_match_fields.html:53
+#: part/templates/part/import_wizard/match_fields.html:60
+#: templates/patterns/wizard/match_fields.html:59
+msgid "Duplicate selection"
+msgstr ""
+
#: part/templates/part/import_wizard/ajax_part_upload.html:29
#: part/templates/part/import_wizard/part_upload.html:53
msgid "Unsuffitient privileges."
@@ -4819,7 +4867,7 @@ msgid "Show pricing information"
msgstr ""
#: part/templates/part/part_base.html:56
-#: stock/templates/stock/item_base.html:110
+#: stock/templates/stock/item_base.html:112
#: stock/templates/stock/location.html:44
msgid "Stock actions"
msgstr "Voorraad acties"
@@ -4912,7 +4960,7 @@ msgstr ""
msgid "Allocated to Orders"
msgstr ""
-#: part/templates/part/part_base.html:239 templates/js/translated/bom.js:690
+#: part/templates/part/part_base.html:239 templates/js/translated/bom.js:903
msgid "Can Build"
msgstr ""
@@ -4930,7 +4978,7 @@ msgid "Latest Serial Number"
msgstr ""
#: part/templates/part/part_base.html:328
-#: stock/templates/stock/item_base.html:166
+#: stock/templates/stock/item_base.html:168
msgid "Search for serial number"
msgstr ""
@@ -4969,7 +5017,7 @@ msgid "Total Cost"
msgstr ""
#: part/templates/part/part_pricing.html:40 part/templates/part/prices.html:40
-#: templates/js/translated/bom.js:644
+#: templates/js/translated/bom.js:857
msgid "No supplier pricing available"
msgstr ""
@@ -5003,20 +5051,20 @@ msgstr ""
msgid "No pricing information is available for this part."
msgstr ""
-#: part/templates/part/part_sidebar.html:11
+#: part/templates/part/part_sidebar.html:12
msgid "Variants"
msgstr ""
-#: part/templates/part/part_sidebar.html:25
+#: part/templates/part/part_sidebar.html:26
msgid "Used In"
msgstr ""
-#: part/templates/part/part_sidebar.html:31
+#: part/templates/part/part_sidebar.html:34
#: stock/templates/stock/stock_sidebar.html:8
msgid "Allocations"
msgstr ""
-#: part/templates/part/part_sidebar.html:45
+#: part/templates/part/part_sidebar.html:48
msgid "Test Templates"
msgstr ""
@@ -5089,7 +5137,7 @@ msgstr ""
msgid "Calculation parameters"
msgstr ""
-#: part/templates/part/prices.html:155 templates/js/translated/bom.js:638
+#: part/templates/part/prices.html:155 templates/js/translated/bom.js:851
msgid "Supplier Cost"
msgstr ""
@@ -5111,7 +5159,7 @@ msgstr ""
msgid "Internal Cost"
msgstr ""
-#: part/templates/part/prices.html:215 part/views.py:1699
+#: part/templates/part/prices.html:215 part/views.py:1390
msgid "Add Internal Price Break"
msgstr ""
@@ -5131,7 +5179,7 @@ msgstr ""
msgid "Set category for the following parts"
msgstr ""
-#: part/templates/part/stock_count.html:7 templates/js/translated/bom.js:600
+#: part/templates/part/stock_count.html:7 templates/js/translated/bom.js:813
#: templates/js/translated/part.js:497 templates/js/translated/part.js:1122
#: templates/js/translated/part.js:1309
msgid "No Stock"
@@ -5141,6 +5189,43 @@ msgstr ""
msgid "Low Stock"
msgstr ""
+#: part/templates/part/upload_bom.html:8
+msgid "Return to BOM"
+msgstr ""
+
+#: part/templates/part/upload_bom.html:13
+msgid "Upload Bill of Materials"
+msgstr ""
+
+#: part/templates/part/upload_bom.html:19
+msgid "BOM upload requirements"
+msgstr ""
+
+#: part/templates/part/upload_bom.html:23
+#: part/templates/part/upload_bom.html:90
+msgid "Upload BOM File"
+msgstr ""
+
+#: part/templates/part/upload_bom.html:29
+msgid "Submit BOM Data"
+msgstr ""
+
+#: part/templates/part/upload_bom.html:37
+msgid "Requirements for BOM upload"
+msgstr ""
+
+#: part/templates/part/upload_bom.html:39
+msgid "The BOM file must contain the required named columns as provided in the "
+msgstr ""
+
+#: part/templates/part/upload_bom.html:39
+msgid "BOM Upload Template"
+msgstr ""
+
+#: part/templates/part/upload_bom.html:40
+msgid "Each part must already exist in the database"
+msgstr ""
+
#: part/templates/part/variant_part.html:9
msgid "Create new part variant"
msgstr ""
@@ -5154,104 +5239,96 @@ msgstr ""
msgid "Unknown database"
msgstr ""
-#: part/views.py:93
+#: part/views.py:90
msgid "Set Part Category"
msgstr ""
-#: part/views.py:143
+#: part/views.py:140
#, python-brace-format
msgid "Set category for {n} parts"
msgstr ""
-#: part/views.py:215
+#: part/views.py:212
msgid "Match References"
msgstr ""
-#: part/views.py:511
+#: part/views.py:509
msgid "None"
msgstr ""
-#: part/views.py:570
+#: part/views.py:568
msgid "Part QR Code"
msgstr ""
-#: part/views.py:672
+#: part/views.py:670
msgid "Select Part Image"
msgstr ""
-#: part/views.py:698
+#: part/views.py:696
msgid "Updated part image"
msgstr ""
-#: part/views.py:701
+#: part/views.py:699
msgid "Part image not found"
msgstr ""
-#: part/views.py:775
-msgid "Match Parts"
-msgstr ""
-
-#: part/views.py:1110
-msgid "Export Bill of Materials"
-msgstr ""
-
-#: part/views.py:1159
+#: part/views.py:850
msgid "Confirm Part Deletion"
msgstr ""
-#: part/views.py:1166
+#: part/views.py:857
msgid "Part was deleted"
msgstr ""
-#: part/views.py:1175
+#: part/views.py:866
msgid "Part Pricing"
msgstr ""
-#: part/views.py:1324
+#: part/views.py:1015
msgid "Create Part Parameter Template"
msgstr ""
-#: part/views.py:1334
+#: part/views.py:1025
msgid "Edit Part Parameter Template"
msgstr ""
-#: part/views.py:1341
+#: part/views.py:1032
msgid "Delete Part Parameter Template"
msgstr ""
-#: part/views.py:1400 templates/js/translated/part.js:315
+#: part/views.py:1091 templates/js/translated/part.js:315
msgid "Edit Part Category"
msgstr ""
-#: part/views.py:1438
+#: part/views.py:1129
msgid "Delete Part Category"
msgstr ""
-#: part/views.py:1444
+#: part/views.py:1135
msgid "Part category was deleted"
msgstr ""
-#: part/views.py:1453
+#: part/views.py:1144
msgid "Create Category Parameter Template"
msgstr ""
-#: part/views.py:1554
+#: part/views.py:1245
msgid "Edit Category Parameter Template"
msgstr ""
-#: part/views.py:1610
+#: part/views.py:1301
msgid "Delete Category Parameter Template"
msgstr ""
-#: part/views.py:1632
+#: part/views.py:1323
msgid "Added new price break"
msgstr ""
-#: part/views.py:1708
+#: part/views.py:1399
msgid "Edit Internal Price Break"
msgstr ""
-#: part/views.py:1716
+#: part/views.py:1407
msgid "Delete Internal Price Break"
msgstr ""
@@ -5453,12 +5530,12 @@ msgid "Stock Item Test Report"
msgstr ""
#: report/templates/report/inventree_test_report_base.html:79
-#: stock/models.py:519 stock/templates/stock/item_base.html:156
-#: templates/js/translated/build.js:293 templates/js/translated/build.js:697
-#: templates/js/translated/build.js:1073
+#: stock/models.py:519 stock/templates/stock/item_base.html:158
+#: templates/js/translated/build.js:373 templates/js/translated/build.js:521
+#: templates/js/translated/build.js:919 templates/js/translated/build.js:1295
#: 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:423
+#: templates/js/translated/order.js:2034 templates/js/translated/stock.js:424
msgid "Serial Number"
msgstr "Serienummer"
@@ -5479,7 +5556,7 @@ msgstr ""
#: report/templates/report/inventree_test_report_base.html:97
#: templates/InvenTree/settings/plugin.html:50
#: templates/InvenTree/settings/plugin_settings.html:38
-#: templates/js/translated/order.js:849 templates/js/translated/stock.js:2525
+#: templates/js/translated/order.js:849 templates/js/translated/stock.js:2649
msgid "Date"
msgstr ""
@@ -5497,71 +5574,67 @@ msgid "Installed Items"
msgstr ""
#: report/templates/report/inventree_test_report_base.html:137
-#: templates/js/translated/stock.js:586 templates/js/translated/stock.js:756
-#: templates/js/translated/stock.js:2785
+#: templates/js/translated/stock.js:587 templates/js/translated/stock.js:757
+#: templates/js/translated/stock.js:2909
msgid "Serial"
msgstr ""
-#: stock/api.py:476
+#: stock/api.py:501
msgid "Quantity is required"
msgstr ""
-#: stock/api.py:483
+#: stock/api.py:508
msgid "Valid part must be supplied"
msgstr ""
-#: stock/forms.py:77 stock/forms.py:251 stock/models.py:576
-#: stock/templates/stock/item_base.html:193
-#: templates/js/translated/stock.js:1709
+#: stock/api.py:535
+msgid "Serial numbers cannot be supplied for a non-trackable part"
+msgstr ""
+
+#: stock/forms.py:74 stock/forms.py:198 stock/models.py:576
+#: stock/templates/stock/item_base.html:195
+#: templates/js/translated/stock.js:1833
msgid "Expiry Date"
msgstr ""
-#: stock/forms.py:78 stock/forms.py:252
+#: stock/forms.py:75 stock/forms.py:199
msgid "Expiration date for this stock item"
msgstr ""
-#: stock/forms.py:81
+#: stock/forms.py:78
msgid "Enter unique serial numbers (or leave blank)"
msgstr ""
-#: stock/forms.py:136
+#: stock/forms.py:133
msgid "Destination for serialized stock (by default, will remain in current location)"
msgstr ""
-#: stock/forms.py:138
+#: stock/forms.py:135
msgid "Serial numbers"
msgstr ""
-#: stock/forms.py:138
+#: stock/forms.py:135
msgid "Unique serial numbers (must match quantity)"
msgstr ""
-#: stock/forms.py:140 stock/forms.py:224
+#: stock/forms.py:137 stock/forms.py:171
msgid "Add transaction note (optional)"
msgstr ""
-#: stock/forms.py:180
-msgid "Stock item to install"
-msgstr ""
-
-#: stock/forms.py:210
-msgid "Must not exceed available quantity"
-msgstr ""
-
-#: stock/forms.py:222
+#: stock/forms.py:169
msgid "Destination location for uninstalled items"
msgstr ""
-#: stock/forms.py:226
+#: stock/forms.py:173
msgid "Confirm uninstall"
msgstr ""
-#: stock/forms.py:226
+#: stock/forms.py:173
msgid "Confirm removal of installed stock items"
msgstr ""
#: stock/models.py:62 stock/models.py:613
-#: stock/templates/stock/item_base.html:416
+#: stock/templates/stock/item_base.html:418
msgid "Owner"
msgstr ""
@@ -5623,7 +5696,7 @@ msgstr ""
msgid "Packaging this stock item is stored in"
msgstr ""
-#: stock/models.py:502 stock/templates/stock/item_base.html:298
+#: stock/models.py:502 stock/templates/stock/item_base.html:300
msgid "Installed In"
msgstr ""
@@ -5733,7 +5806,7 @@ msgstr ""
msgid "Serialized stock cannot be merged"
msgstr ""
-#: stock/models.py:1214 stock/serializers.py:775
+#: stock/models.py:1214 stock/serializers.py:832
msgid "Duplicate stock items"
msgstr ""
@@ -5769,7 +5842,7 @@ msgstr ""
msgid "Test name"
msgstr ""
-#: stock/models.py:1983 templates/js/translated/table_filters.js:271
+#: stock/models.py:1983
msgid "Test result"
msgstr ""
@@ -5806,7 +5879,7 @@ msgstr ""
msgid "Enter serial numbers for new items"
msgstr ""
-#: stock/serializers.py:326 stock/serializers.py:732 stock/serializers.py:973
+#: stock/serializers.py:326 stock/serializers.py:789 stock/serializers.py:1030
msgid "Destination stock location"
msgstr ""
@@ -5818,63 +5891,79 @@ msgstr ""
msgid "Serial numbers cannot be assigned to this part"
msgstr ""
-#: stock/serializers.py:589
+#: stock/serializers.py:363 stock/views.py:1108
+msgid "Serial numbers already exist"
+msgstr ""
+
+#: stock/serializers.py:405
+msgid "Select stock item to install"
+msgstr ""
+
+#: stock/serializers.py:421
+msgid "Stock item is unavailable"
+msgstr ""
+
+#: stock/serializers.py:428
+msgid "Selected part is not in the Bill of Materials"
+msgstr ""
+
+#: stock/serializers.py:646
msgid "Part must be salable"
msgstr ""
-#: stock/serializers.py:593
+#: stock/serializers.py:650
msgid "Item is allocated to a sales order"
msgstr ""
-#: stock/serializers.py:597
+#: stock/serializers.py:654
msgid "Item is allocated to a build order"
msgstr ""
-#: stock/serializers.py:627
+#: stock/serializers.py:684
msgid "Customer to assign stock items"
msgstr ""
-#: stock/serializers.py:633
+#: stock/serializers.py:690
msgid "Selected company is not a customer"
msgstr ""
-#: stock/serializers.py:641
+#: stock/serializers.py:698
msgid "Stock assignment notes"
msgstr ""
-#: stock/serializers.py:651 stock/serializers.py:881
+#: stock/serializers.py:708 stock/serializers.py:938
msgid "A list of stock items must be provided"
msgstr ""
-#: stock/serializers.py:739
+#: stock/serializers.py:796
msgid "Stock merging notes"
msgstr ""
-#: stock/serializers.py:744
+#: stock/serializers.py:801
msgid "Allow mismatched suppliers"
msgstr ""
-#: stock/serializers.py:745
+#: stock/serializers.py:802
msgid "Allow stock items with different supplier parts to be merged"
msgstr ""
-#: stock/serializers.py:750
+#: stock/serializers.py:807
msgid "Allow mismatched status"
msgstr ""
-#: stock/serializers.py:751
+#: stock/serializers.py:808
msgid "Allow stock items with different status codes to be merged"
msgstr ""
-#: stock/serializers.py:761
+#: stock/serializers.py:818
msgid "At least two stock items must be provided"
msgstr ""
-#: stock/serializers.py:843
+#: stock/serializers.py:900
msgid "StockItem primary key value"
msgstr ""
-#: stock/serializers.py:871
+#: stock/serializers.py:928
msgid "Stock transaction notes"
msgstr ""
@@ -5919,22 +6008,14 @@ msgstr ""
msgid "Installed Stock Items"
msgstr ""
-#: stock/templates/stock/item.html:154 stock/views.py:482
+#: stock/templates/stock/item.html:154 templates/js/translated/stock.js:3018
msgid "Install Stock Item"
msgstr ""
-#: stock/templates/stock/item.html:309 stock/templates/stock/item.html:334
+#: stock/templates/stock/item.html:304 templates/js/translated/stock.js:1480
msgid "Add Test Result"
msgstr ""
-#: stock/templates/stock/item.html:354
-msgid "Edit Test Result"
-msgstr ""
-
-#: stock/templates/stock/item.html:368
-msgid "Delete Test Result"
-msgstr ""
-
#: stock/templates/stock/item_base.html:42
#: templates/js/translated/barcode.js:330
#: templates/js/translated/barcode.js:335
@@ -5995,129 +6076,129 @@ msgstr ""
msgid "Uninstall"
msgstr ""
-#: stock/templates/stock/item_base.html:101
+#: stock/templates/stock/item_base.html:102
msgid "Install stock item"
msgstr ""
-#: stock/templates/stock/item_base.html:101
+#: stock/templates/stock/item_base.html:102
msgid "Install"
msgstr ""
-#: stock/templates/stock/item_base.html:115
+#: stock/templates/stock/item_base.html:117
msgid "Convert to variant"
msgstr ""
-#: stock/templates/stock/item_base.html:118
+#: stock/templates/stock/item_base.html:120
msgid "Duplicate stock item"
msgstr ""
-#: stock/templates/stock/item_base.html:120
+#: stock/templates/stock/item_base.html:122
msgid "Edit stock item"
msgstr ""
-#: stock/templates/stock/item_base.html:123
+#: stock/templates/stock/item_base.html:125
msgid "Delete stock item"
msgstr ""
-#: stock/templates/stock/item_base.html:161
+#: stock/templates/stock/item_base.html:163
msgid "previous page"
msgstr ""
-#: stock/templates/stock/item_base.html:161
+#: stock/templates/stock/item_base.html:163
msgid "Navigate to previous serial number"
msgstr ""
-#: stock/templates/stock/item_base.html:170
+#: stock/templates/stock/item_base.html:172
msgid "next page"
msgstr ""
-#: stock/templates/stock/item_base.html:170
+#: stock/templates/stock/item_base.html:172
msgid "Navigate to next serial number"
msgstr ""
-#: stock/templates/stock/item_base.html:197
+#: stock/templates/stock/item_base.html:199
#, python-format
msgid "This StockItem expired on %(item.expiry_date)s"
msgstr ""
-#: stock/templates/stock/item_base.html:197
+#: stock/templates/stock/item_base.html:199
#: templates/js/translated/table_filters.js:252
msgid "Expired"
msgstr ""
-#: stock/templates/stock/item_base.html:199
+#: stock/templates/stock/item_base.html:201
#, python-format
msgid "This StockItem expires on %(item.expiry_date)s"
msgstr ""
-#: stock/templates/stock/item_base.html:199
+#: stock/templates/stock/item_base.html:201
#: templates/js/translated/table_filters.js:258
msgid "Stale"
msgstr ""
-#: stock/templates/stock/item_base.html:206
-#: templates/js/translated/stock.js:1722
+#: stock/templates/stock/item_base.html:208
+#: templates/js/translated/stock.js:1846
msgid "Last Updated"
msgstr ""
-#: stock/templates/stock/item_base.html:211
+#: stock/templates/stock/item_base.html:213
msgid "Last Stocktake"
msgstr ""
-#: stock/templates/stock/item_base.html:215
+#: stock/templates/stock/item_base.html:217
msgid "No stocktake performed"
msgstr ""
-#: stock/templates/stock/item_base.html:233
+#: stock/templates/stock/item_base.html:235
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:240
+#: stock/templates/stock/item_base.html:242
msgid "This stock item is in production and cannot be edited."
msgstr ""
-#: stock/templates/stock/item_base.html:241
+#: stock/templates/stock/item_base.html:243
msgid "Edit the stock item from the build view."
msgstr ""
-#: stock/templates/stock/item_base.html:254
+#: stock/templates/stock/item_base.html:256
msgid "This stock item has not passed all required tests"
msgstr ""
-#: stock/templates/stock/item_base.html:262
+#: stock/templates/stock/item_base.html:264
msgid "This stock item is allocated to Sales Order"
msgstr ""
-#: stock/templates/stock/item_base.html:270
+#: stock/templates/stock/item_base.html:272
msgid "This stock item is allocated to Build Order"
msgstr ""
-#: stock/templates/stock/item_base.html:276
+#: stock/templates/stock/item_base.html:278
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:317
-#: templates/js/translated/build.js:1095
+#: stock/templates/stock/item_base.html:319
+#: templates/js/translated/build.js:1317
msgid "No location set"
msgstr "Geen Locatie ingesteld"
-#: stock/templates/stock/item_base.html:324
+#: stock/templates/stock/item_base.html:326
msgid "Barcode Identifier"
msgstr ""
-#: stock/templates/stock/item_base.html:366
+#: stock/templates/stock/item_base.html:368
msgid "Parent Item"
msgstr ""
-#: stock/templates/stock/item_base.html:384
+#: stock/templates/stock/item_base.html:386
msgid "No manufacturer set"
msgstr "Geen fabrikant geselecteerd"
-#: stock/templates/stock/item_base.html:409
+#: stock/templates/stock/item_base.html:411
msgid "Tests"
msgstr ""
-#: stock/templates/stock/item_base.html:499
+#: stock/templates/stock/item_base.html:492
msgid "Edit Stock Status"
msgstr ""
@@ -6130,39 +6211,6 @@ msgstr ""
msgid "This will remove %(qty)s units of %(full_name)s from stock."
msgstr ""
-#: stock/templates/stock/item_install.html:8
-msgid "Install another Stock Item into this item."
-msgstr ""
-
-#: stock/templates/stock/item_install.html:11
-#: stock/templates/stock/item_install.html:24
-msgid "Stock items can only be installed if they meet the following criteria"
-msgstr ""
-
-#: stock/templates/stock/item_install.html:14
-msgid "The Stock Item links to a Part which is in the BOM for this Stock Item"
-msgstr ""
-
-#: stock/templates/stock/item_install.html:15
-msgid "The Stock Item is currently in stock"
-msgstr ""
-
-#: stock/templates/stock/item_install.html:16
-msgid "The Stock Item is serialized and does not belong to another item"
-msgstr ""
-
-#: stock/templates/stock/item_install.html:21
-msgid "Install this Stock Item in another stock item."
-msgstr ""
-
-#: stock/templates/stock/item_install.html:27
-msgid "The part associated to this Stock Item belongs to another part's BOM"
-msgstr ""
-
-#: stock/templates/stock/item_install.html:28
-msgid "This Stock Item is serialized and does not belong to another item"
-msgstr ""
-
#: stock/templates/stock/item_serialize.html:5
msgid "Create serialized items from this stock item."
msgstr ""
@@ -6247,7 +6295,7 @@ msgstr ""
msgid "The following stock items will be uninstalled"
msgstr ""
-#: stock/templates/stock/stockitem_convert.html:7 stock/views.py:879
+#: stock/templates/stock/stockitem_convert.html:7 stock/views.py:730
msgid "Convert Stock Item"
msgstr ""
@@ -6268,11 +6316,11 @@ msgstr ""
msgid "Are you sure you want to delete this stock tracking entry?"
msgstr ""
-#: stock/views.py:162 templates/js/translated/stock.js:139
+#: stock/views.py:162 templates/js/translated/stock.js:140
msgid "Edit Stock Location"
msgstr "Bewerk voorraadlocatie"
-#: stock/views.py:269 stock/views.py:858 stock/views.py:984 stock/views.py:1266
+#: stock/views.py:269 stock/views.py:709 stock/views.py:835 stock/views.py:1117
msgid "Owner is required (ownership control is enabled)"
msgstr ""
@@ -6300,59 +6348,63 @@ msgstr ""
msgid "Confirm test data deletion"
msgstr ""
+#: stock/views.py:352
+msgid "Check the confirmation box"
+msgstr ""
+
#: stock/views.py:456
msgid "Stock Item QR Code"
msgstr ""
-#: stock/views.py:630
+#: stock/views.py:481
msgid "Uninstall Stock Items"
msgstr ""
-#: stock/views.py:727 templates/js/translated/stock.js:1074
+#: stock/views.py:578 templates/js/translated/stock.js:1075
msgid "Confirm stock adjustment"
msgstr ""
-#: stock/views.py:738
+#: stock/views.py:589
msgid "Uninstalled stock items"
msgstr ""
-#: stock/views.py:760 templates/js/translated/stock.js:332
+#: stock/views.py:611 templates/js/translated/stock.js:333
msgid "Edit Stock Item"
msgstr ""
-#: stock/views.py:910
+#: stock/views.py:761
msgid "Create new Stock Location"
msgstr "Maak nieuwe voorraadlocatie"
-#: stock/views.py:1011
+#: stock/views.py:862
msgid "Create new Stock Item"
msgstr ""
-#: stock/views.py:1153 templates/js/translated/stock.js:312
+#: stock/views.py:1004 templates/js/translated/stock.js:313
msgid "Duplicate Stock Item"
msgstr ""
-#: stock/views.py:1235
+#: stock/views.py:1086
msgid "Quantity cannot be negative"
msgstr ""
-#: stock/views.py:1335
+#: stock/views.py:1186
msgid "Delete Stock Location"
msgstr "Verwijder voorraadlocatie"
-#: stock/views.py:1348
+#: stock/views.py:1199
msgid "Delete Stock Item"
msgstr ""
-#: stock/views.py:1359
+#: stock/views.py:1210
msgid "Delete Stock Tracking Entry"
msgstr ""
-#: stock/views.py:1366
+#: stock/views.py:1217
msgid "Edit Stock Tracking Entry"
msgstr ""
-#: stock/views.py:1375
+#: stock/views.py:1226
msgid "Add Stock Tracking Entry"
msgstr ""
@@ -6527,15 +6579,15 @@ msgstr ""
msgid "Part Settings"
msgstr ""
-#: templates/InvenTree/settings/part.html:43
+#: templates/InvenTree/settings/part.html:44
msgid "Part Import"
msgstr ""
-#: templates/InvenTree/settings/part.html:47
+#: templates/InvenTree/settings/part.html:48
msgid "Import Part"
msgstr ""
-#: templates/InvenTree/settings/part.html:61
+#: templates/InvenTree/settings/part.html:62
msgid "Part Parameter Templates"
msgstr ""
@@ -6663,45 +6715,45 @@ msgstr ""
msgid "Report Settings"
msgstr ""
-#: templates/InvenTree/settings/setting.html:30
+#: templates/InvenTree/settings/setting.html:33
msgid "No value set"
msgstr ""
-#: templates/InvenTree/settings/setting.html:41
+#: templates/InvenTree/settings/setting.html:38
msgid "Edit setting"
msgstr ""
-#: templates/InvenTree/settings/settings.html:78
+#: templates/InvenTree/settings/settings.html:115
msgid "Edit Plugin Setting"
msgstr ""
-#: templates/InvenTree/settings/settings.html:80
+#: templates/InvenTree/settings/settings.html:117
msgid "Edit Global Setting"
msgstr ""
-#: templates/InvenTree/settings/settings.html:82
+#: templates/InvenTree/settings/settings.html:119
msgid "Edit User Setting"
msgstr ""
-#: templates/InvenTree/settings/settings.html:171
+#: templates/InvenTree/settings/settings.html:208
msgid "No category parameter templates found"
msgstr ""
-#: templates/InvenTree/settings/settings.html:193
-#: templates/InvenTree/settings/settings.html:292
+#: templates/InvenTree/settings/settings.html:230
+#: templates/InvenTree/settings/settings.html:329
msgid "Edit Template"
msgstr ""
-#: templates/InvenTree/settings/settings.html:194
-#: templates/InvenTree/settings/settings.html:293
+#: templates/InvenTree/settings/settings.html:231
+#: templates/InvenTree/settings/settings.html:330
msgid "Delete Template"
msgstr ""
-#: templates/InvenTree/settings/settings.html:272
+#: templates/InvenTree/settings/settings.html:309
msgid "No part parameter templates found"
msgstr ""
-#: templates/InvenTree/settings/settings.html:276
+#: templates/InvenTree/settings/settings.html:313
msgid "ID"
msgstr ""
@@ -6996,10 +7048,11 @@ msgid "InvenTree Version Information"
msgstr ""
#: templates/about.html:11 templates/about.html:105
-#: templates/js/translated/bom.js:407 templates/js/translated/modals.js:53
-#: templates/js/translated/modals.js:584 templates/js/translated/modals.js:678
-#: templates/js/translated/modals.js:983 templates/modals.html:15
-#: templates/modals.html:27 templates/modals.html:39 templates/modals.html:50
+#: templates/js/translated/bom.js:132 templates/js/translated/bom.js:620
+#: templates/js/translated/modals.js:53 templates/js/translated/modals.js:584
+#: templates/js/translated/modals.js:678 templates/js/translated/modals.js:986
+#: templates/modals.html:15 templates/modals.html:27 templates/modals.html:39
+#: templates/modals.html:50
msgid "Close"
msgstr ""
@@ -7275,14 +7328,14 @@ msgid "The following parts are low on required stock"
msgstr ""
#: templates/email/build_order_required_stock.html:18
-#: templates/js/translated/bom.js:1117
+#: templates/js/translated/bom.js:1335
msgid "Required Quantity"
msgstr ""
#: templates/email/build_order_required_stock.html:19
#: templates/email/low_stock_notification.html:18
-#: templates/js/translated/bom.js:591 templates/js/translated/build.js:1189
-#: templates/js/translated/build.js:1810
+#: templates/js/translated/bom.js:804 templates/js/translated/build.js:1411
+#: templates/js/translated/build.js:2048
#: templates/js/translated/table_filters.js:178
msgid "Available"
msgstr "Beschikbaar"
@@ -7325,11 +7378,11 @@ msgstr ""
msgid "Remote image must not exceed maximum allowable file size"
msgstr ""
-#: templates/js/translated/api.js:185 templates/js/translated/modals.js:1053
+#: templates/js/translated/api.js:185 templates/js/translated/modals.js:1056
msgid "No Response"
msgstr ""
-#: templates/js/translated/api.js:186 templates/js/translated/modals.js:1054
+#: templates/js/translated/api.js:186 templates/js/translated/modals.js:1057
msgid "No response from the InvenTree server"
msgstr ""
@@ -7341,27 +7394,27 @@ msgstr ""
msgid "API request returned error code 400"
msgstr ""
-#: templates/js/translated/api.js:197 templates/js/translated/modals.js:1063
+#: templates/js/translated/api.js:197 templates/js/translated/modals.js:1066
msgid "Error 401: Not Authenticated"
msgstr ""
-#: templates/js/translated/api.js:198 templates/js/translated/modals.js:1064
+#: templates/js/translated/api.js:198 templates/js/translated/modals.js:1067
msgid "Authentication credentials not supplied"
msgstr ""
-#: templates/js/translated/api.js:202 templates/js/translated/modals.js:1068
+#: templates/js/translated/api.js:202 templates/js/translated/modals.js:1071
msgid "Error 403: Permission Denied"
msgstr ""
-#: templates/js/translated/api.js:203 templates/js/translated/modals.js:1069
+#: templates/js/translated/api.js:203 templates/js/translated/modals.js:1072
msgid "You do not have the required permissions to access this function"
msgstr ""
-#: templates/js/translated/api.js:207 templates/js/translated/modals.js:1073
+#: templates/js/translated/api.js:207 templates/js/translated/modals.js:1076
msgid "Error 404: Resource Not Found"
msgstr ""
-#: templates/js/translated/api.js:208 templates/js/translated/modals.js:1074
+#: templates/js/translated/api.js:208 templates/js/translated/modals.js:1077
msgid "The requested resource could not be located on the server"
msgstr ""
@@ -7373,11 +7426,11 @@ msgstr ""
msgid "HTTP method not allowed at URL"
msgstr ""
-#: templates/js/translated/api.js:217 templates/js/translated/modals.js:1078
+#: templates/js/translated/api.js:217 templates/js/translated/modals.js:1081
msgid "Error 408: Timeout"
msgstr ""
-#: templates/js/translated/api.js:218 templates/js/translated/modals.js:1079
+#: templates/js/translated/api.js:218 templates/js/translated/modals.js:1082
msgid "Connection timeout while requesting data from server"
msgstr ""
@@ -7446,7 +7499,7 @@ msgid "Unknown response from server"
msgstr ""
#: templates/js/translated/barcode.js:140
-#: templates/js/translated/modals.js:1043
+#: templates/js/translated/modals.js:1046
msgid "Invalid server response"
msgstr ""
@@ -7474,7 +7527,7 @@ msgstr ""
msgid "Unlink"
msgstr ""
-#: templates/js/translated/barcode.js:397 templates/js/translated/stock.js:1026
+#: templates/js/translated/barcode.js:397 templates/js/translated/stock.js:1027
msgid "Remove stock item"
msgstr ""
@@ -7516,327 +7569,369 @@ msgstr ""
msgid "Barcode does not match a valid location"
msgstr ""
-#: templates/js/translated/bom.js:36
+#: templates/js/translated/bom.js:75
+msgid "Display row data"
+msgstr ""
+
+#: templates/js/translated/bom.js:131
+msgid "Row Data"
+msgstr ""
+
+#: templates/js/translated/bom.js:249
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:518
+#: templates/js/translated/bom.js:252 templates/js/translated/bom.js:286
+#: templates/js/translated/order.js:369 templates/js/translated/stock.js:519
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:519
+#: templates/js/translated/bom.js:253 templates/js/translated/bom.js:287
+#: templates/js/translated/order.js:370 templates/js/translated/stock.js:520
msgid "Select file format"
msgstr ""
-#: templates/js/translated/bom.js:81
+#: templates/js/translated/bom.js:294
msgid "Cascading"
msgstr ""
-#: templates/js/translated/bom.js:82
+#: templates/js/translated/bom.js:295
msgid "Download cascading / multi-level BOM"
msgstr ""
-#: templates/js/translated/bom.js:87
+#: templates/js/translated/bom.js:300
msgid "Levels"
msgstr ""
-#: templates/js/translated/bom.js:88
+#: templates/js/translated/bom.js:301
msgid "Select maximum number of BOM levels to export (0 = all levels)"
msgstr ""
-#: templates/js/translated/bom.js:94
+#: templates/js/translated/bom.js:307
msgid "Include Parameter Data"
msgstr ""
-#: templates/js/translated/bom.js:95
+#: templates/js/translated/bom.js:308
msgid "Include part parameter data in exported BOM"
msgstr ""
-#: templates/js/translated/bom.js:100
+#: templates/js/translated/bom.js:313
msgid "Include Stock Data"
msgstr ""
-#: templates/js/translated/bom.js:101
+#: templates/js/translated/bom.js:314
msgid "Include part stock data in exported BOM"
msgstr ""
-#: templates/js/translated/bom.js:106
+#: templates/js/translated/bom.js:319
msgid "Include Manufacturer Data"
msgstr "Voeg fabrikantgegevens toe"
-#: templates/js/translated/bom.js:107
+#: templates/js/translated/bom.js:320
msgid "Include part manufacturer data in exported BOM"
msgstr "Voeg fabrikantgegevens toe aan geëxporteerde BOM"
-#: templates/js/translated/bom.js:112
+#: templates/js/translated/bom.js:325
msgid "Include Supplier Data"
msgstr ""
-#: templates/js/translated/bom.js:113
+#: templates/js/translated/bom.js:326
msgid "Include part supplier data in exported BOM"
msgstr ""
-#: templates/js/translated/bom.js:296
+#: templates/js/translated/bom.js:509
msgid "Remove substitute part"
msgstr ""
-#: templates/js/translated/bom.js:352
+#: templates/js/translated/bom.js:565
msgid "Select and add a new substitute part using the input below"
msgstr ""
-#: templates/js/translated/bom.js:363
+#: templates/js/translated/bom.js:576
msgid "Are you sure you wish to remove this substitute part link?"
msgstr ""
-#: templates/js/translated/bom.js:369
+#: templates/js/translated/bom.js:582
msgid "Remove Substitute Part"
msgstr ""
-#: templates/js/translated/bom.js:408
+#: templates/js/translated/bom.js:621
msgid "Add Substitute"
msgstr ""
-#: templates/js/translated/bom.js:409
+#: templates/js/translated/bom.js:622
msgid "Edit BOM Item Substitutes"
msgstr ""
-#: templates/js/translated/bom.js:528
+#: templates/js/translated/bom.js:741
msgid "Substitutes Available"
msgstr ""
-#: templates/js/translated/bom.js:532 templates/js/translated/build.js:1171
+#: templates/js/translated/bom.js:745 templates/js/translated/build.js:1393
msgid "Variant stock allowed"
msgstr ""
-#: templates/js/translated/bom.js:537
+#: templates/js/translated/bom.js:750
msgid "Open subassembly"
msgstr ""
-#: templates/js/translated/bom.js:609
+#: templates/js/translated/bom.js:822
msgid "Substitutes"
msgstr ""
-#: templates/js/translated/bom.js:624
+#: templates/js/translated/bom.js:837
msgid "Purchase Price Range"
msgstr ""
-#: templates/js/translated/bom.js:631
+#: templates/js/translated/bom.js:844
msgid "Purchase Price Average"
msgstr ""
-#: templates/js/translated/bom.js:680 templates/js/translated/bom.js:769
+#: templates/js/translated/bom.js:893 templates/js/translated/bom.js:982
msgid "View BOM"
msgstr ""
-#: templates/js/translated/bom.js:740
+#: templates/js/translated/bom.js:953
msgid "Validate BOM Item"
msgstr ""
-#: templates/js/translated/bom.js:742
+#: templates/js/translated/bom.js:955
msgid "This line has been validated"
msgstr ""
-#: templates/js/translated/bom.js:744
+#: templates/js/translated/bom.js:957
msgid "Edit substitute parts"
msgstr ""
-#: templates/js/translated/bom.js:746 templates/js/translated/bom.js:920
+#: templates/js/translated/bom.js:959 templates/js/translated/bom.js:1138
msgid "Edit BOM Item"
msgstr ""
-#: templates/js/translated/bom.js:748 templates/js/translated/bom.js:903
+#: templates/js/translated/bom.js:961 templates/js/translated/bom.js:1121
msgid "Delete BOM Item"
msgstr ""
-#: templates/js/translated/bom.js:842 templates/js/translated/build.js:915
+#: templates/js/translated/bom.js:1060 templates/js/translated/build.js:1137
msgid "No BOM items found"
msgstr ""
-#: templates/js/translated/bom.js:898
+#: templates/js/translated/bom.js:1116
msgid "Are you sure you want to delete this BOM item?"
msgstr ""
-#: templates/js/translated/bom.js:1100 templates/js/translated/build.js:1155
+#: templates/js/translated/bom.js:1318 templates/js/translated/build.js:1377
msgid "Required Part"
msgstr ""
-#: templates/js/translated/bom.js:1122
+#: templates/js/translated/bom.js:1340
msgid "Inherited from parent BOM"
msgstr ""
-#: templates/js/translated/build.js:84
+#: templates/js/translated/build.js:85
msgid "Edit Build Order"
msgstr ""
-#: templates/js/translated/build.js:118
+#: templates/js/translated/build.js:119
msgid "Create Build Order"
msgstr ""
-#: templates/js/translated/build.js:139
+#: templates/js/translated/build.js:140
msgid "Build order is ready to be completed"
msgstr ""
-#: templates/js/translated/build.js:144
+#: templates/js/translated/build.js:145
msgid "Build Order is incomplete"
msgstr "Productie-opdracht is onvolledig"
-#: templates/js/translated/build.js:172
+#: templates/js/translated/build.js:173
msgid "Complete Build Order"
msgstr ""
-#: templates/js/translated/build.js:193
+#: templates/js/translated/build.js:214 templates/js/translated/stock.js:93
+#: templates/js/translated/stock.js:182
+msgid "Next available serial number"
+msgstr ""
+
+#: templates/js/translated/build.js:216 templates/js/translated/stock.js:95
+#: templates/js/translated/stock.js:184
+msgid "Latest serial number"
+msgstr ""
+
+#: templates/js/translated/build.js:225
+msgid "The Bill of Materials contains trackable parts"
+msgstr "De stuklijst bevat traceerbare onderdelen"
+
+#: templates/js/translated/build.js:226
+msgid "Build outputs must be generated individually"
+msgstr ""
+
+#: templates/js/translated/build.js:234
+msgid "Trackable parts can have serial numbers specified"
+msgstr "Traceerbare onderdelen kunnen een serienummer hebben"
+
+#: templates/js/translated/build.js:235
+msgid "Enter serial numbers to generate multiple single build outputs"
+msgstr "Voer serienummers in om meerdere bouw-outputs te genereren"
+
+#: templates/js/translated/build.js:242
+msgid "Create Build Output"
+msgstr ""
+
+#: templates/js/translated/build.js:273
msgid "Allocate stock items to this build output"
msgstr ""
-#: templates/js/translated/build.js:204
+#: templates/js/translated/build.js:284
msgid "Unallocate stock from build output"
msgstr ""
-#: templates/js/translated/build.js:213
+#: templates/js/translated/build.js:293
msgid "Complete build output"
msgstr ""
-#: templates/js/translated/build.js:221
+#: templates/js/translated/build.js:301
msgid "Delete build output"
msgstr ""
-#: templates/js/translated/build.js:244
+#: templates/js/translated/build.js:324
msgid "Are you sure you wish to unallocate stock items from this build?"
msgstr ""
-#: templates/js/translated/build.js:262
+#: templates/js/translated/build.js:342
msgid "Unallocate Stock Items"
msgstr ""
-#: templates/js/translated/build.js:280
+#: templates/js/translated/build.js:360 templates/js/translated/build.js:508
msgid "Select Build Outputs"
msgstr ""
-#: templates/js/translated/build.js:281
+#: templates/js/translated/build.js:361 templates/js/translated/build.js:509
msgid "At least one build output must be selected"
msgstr ""
-#: templates/js/translated/build.js:335
+#: templates/js/translated/build.js:415 templates/js/translated/build.js:563
msgid "Output"
msgstr ""
-#: templates/js/translated/build.js:351
+#: templates/js/translated/build.js:431
msgid "Complete Build Outputs"
msgstr ""
-#: templates/js/translated/build.js:446
+#: templates/js/translated/build.js:576
+msgid "Delete Build Outputs"
+msgstr ""
+
+#: templates/js/translated/build.js:665
msgid "No build order allocations found"
msgstr ""
-#: templates/js/translated/build.js:484 templates/js/translated/order.js:1848
+#: templates/js/translated/build.js:703 templates/js/translated/order.js:1848
msgid "Location not specified"
msgstr "Locatie is niet opgegeven"
-#: templates/js/translated/build.js:663
+#: templates/js/translated/build.js:885
msgid "No active build outputs found"
msgstr ""
-#: templates/js/translated/build.js:1112 templates/js/translated/build.js:1821
+#: templates/js/translated/build.js:1334 templates/js/translated/build.js:2059
#: templates/js/translated/order.js:1982
msgid "Edit stock allocation"
msgstr "Voorraadtoewijzing bewerken"
-#: templates/js/translated/build.js:1114 templates/js/translated/build.js:1822
+#: templates/js/translated/build.js:1336 templates/js/translated/build.js:2060
#: templates/js/translated/order.js:1983
msgid "Delete stock allocation"
msgstr "Voorraadtoewijzing verwijderen"
-#: templates/js/translated/build.js:1132
+#: templates/js/translated/build.js:1354
msgid "Edit Allocation"
msgstr ""
-#: templates/js/translated/build.js:1142
+#: templates/js/translated/build.js:1364
msgid "Remove Allocation"
msgstr ""
-#: templates/js/translated/build.js:1167
+#: templates/js/translated/build.js:1389
msgid "Substitute parts available"
msgstr ""
-#: templates/js/translated/build.js:1184
+#: templates/js/translated/build.js:1406
msgid "Quantity Per"
msgstr ""
-#: templates/js/translated/build.js:1194 templates/js/translated/build.js:1420
-#: templates/js/translated/build.js:1817 templates/js/translated/order.js:2227
+#: templates/js/translated/build.js:1416 templates/js/translated/build.js:1656
+#: templates/js/translated/build.js:2055 templates/js/translated/order.js:2227
msgid "Allocated"
msgstr "Toegewezen"
-#: templates/js/translated/build.js:1250 templates/js/translated/order.js:2307
+#: templates/js/translated/build.js:1472 templates/js/translated/order.js:2307
msgid "Build stock"
msgstr ""
-#: templates/js/translated/build.js:1254 templates/stock_table.html:53
+#: templates/js/translated/build.js:1476 templates/stock_table.html:53
msgid "Order stock"
msgstr ""
-#: templates/js/translated/build.js:1257 templates/js/translated/order.js:2300
+#: templates/js/translated/build.js:1479 templates/js/translated/order.js:2300
msgid "Allocate stock"
msgstr "Voorraad toewijzen"
-#: templates/js/translated/build.js:1322 templates/js/translated/order.js:1499
+#: templates/js/translated/build.js:1558 templates/js/translated/order.js:1499
msgid "Specify stock allocation quantity"
msgstr ""
-#: templates/js/translated/build.js:1393 templates/js/translated/label.js:134
+#: templates/js/translated/build.js:1629 templates/js/translated/label.js:134
#: templates/js/translated/order.js:1550 templates/js/translated/report.js:225
msgid "Select Parts"
msgstr "Onderdelen selecteren"
-#: templates/js/translated/build.js:1394 templates/js/translated/order.js:1551
+#: templates/js/translated/build.js:1630 templates/js/translated/order.js:1551
msgid "You must select at least one part to allocate"
msgstr "Er moet op zijn minst één onderdeel toegewezen worden"
-#: templates/js/translated/build.js:1408 templates/js/translated/order.js:1565
+#: templates/js/translated/build.js:1644 templates/js/translated/order.js:1565
msgid "Select source location (leave blank to take from all locations)"
msgstr "Selecteer bron locatie (laat het veld leeg om iedere locatie te gebruiken)"
-#: templates/js/translated/build.js:1437 templates/js/translated/order.js:1600
+#: templates/js/translated/build.js:1673 templates/js/translated/order.js:1600
msgid "Confirm stock allocation"
msgstr "Bevestig de voorraadtoewijzing"
-#: templates/js/translated/build.js:1438
+#: templates/js/translated/build.js:1674
msgid "Allocate Stock Items to Build Order"
msgstr ""
-#: templates/js/translated/build.js:1449 templates/js/translated/order.js:1613
+#: templates/js/translated/build.js:1685 templates/js/translated/order.js:1613
msgid "No matching stock locations"
msgstr ""
-#: templates/js/translated/build.js:1519 templates/js/translated/order.js:1690
+#: templates/js/translated/build.js:1757 templates/js/translated/order.js:1690
msgid "No matching stock items"
msgstr ""
-#: templates/js/translated/build.js:1637
+#: templates/js/translated/build.js:1875
msgid "No builds matching query"
msgstr ""
-#: templates/js/translated/build.js:1654 templates/js/translated/part.js:1213
-#: templates/js/translated/part.js:1624 templates/js/translated/stock.js:1520
-#: templates/js/translated/stock.js:2479
+#: templates/js/translated/build.js:1892 templates/js/translated/part.js:1213
+#: templates/js/translated/part.js:1624 templates/js/translated/stock.js:1644
+#: templates/js/translated/stock.js:2603
msgid "Select"
msgstr ""
-#: templates/js/translated/build.js:1674
+#: templates/js/translated/build.js:1912
msgid "Build order is overdue"
msgstr ""
-#: templates/js/translated/build.js:1735 templates/js/translated/stock.js:2698
+#: templates/js/translated/build.js:1973 templates/js/translated/stock.js:2822
msgid "No user information"
msgstr ""
-#: templates/js/translated/build.js:1747
+#: templates/js/translated/build.js:1985
msgid "No information"
msgstr ""
-#: templates/js/translated/build.js:1798
+#: templates/js/translated/build.js:2036
msgid "No parts allocated for"
msgstr ""
@@ -7966,48 +8061,60 @@ msgstr ""
msgid "Create filter"
msgstr ""
-#: templates/js/translated/forms.js:350 templates/js/translated/forms.js:365
-#: templates/js/translated/forms.js:379 templates/js/translated/forms.js:393
+#: templates/js/translated/forms.js:351 templates/js/translated/forms.js:366
+#: templates/js/translated/forms.js:380 templates/js/translated/forms.js:394
msgid "Action Prohibited"
msgstr ""
-#: templates/js/translated/forms.js:352
+#: templates/js/translated/forms.js:353
msgid "Create operation not allowed"
msgstr ""
-#: templates/js/translated/forms.js:367
+#: templates/js/translated/forms.js:368
msgid "Update operation not allowed"
msgstr ""
-#: templates/js/translated/forms.js:381
+#: templates/js/translated/forms.js:382
msgid "Delete operation not allowed"
msgstr ""
-#: templates/js/translated/forms.js:395
+#: templates/js/translated/forms.js:396
msgid "View operation not allowed"
msgstr ""
-#: templates/js/translated/forms.js:680
+#: templates/js/translated/forms.js:681
msgid "Enter a valid number"
msgstr ""
-#: templates/js/translated/forms.js:1082 templates/modals.html:19
+#: templates/js/translated/forms.js:1129 templates/modals.html:19
#: templates/modals.html:43
msgid "Form errors exist"
msgstr ""
-#: templates/js/translated/forms.js:1487
+#: templates/js/translated/forms.js:1558
msgid "No results found"
msgstr ""
-#: templates/js/translated/forms.js:1691
+#: templates/js/translated/forms.js:1768
msgid "Searching"
msgstr ""
-#: templates/js/translated/forms.js:1930
+#: templates/js/translated/forms.js:2013
msgid "Clear input"
msgstr ""
+#: templates/js/translated/forms.js:2479
+msgid "File Column"
+msgstr ""
+
+#: templates/js/translated/forms.js:2479
+msgid "Field Name"
+msgstr ""
+
+#: templates/js/translated/forms.js:2491
+msgid "Select Columns"
+msgstr ""
+
#: templates/js/translated/helpers.js:19
msgid "YES"
msgstr ""
@@ -8017,7 +8124,7 @@ msgid "NO"
msgstr ""
#: templates/js/translated/label.js:29 templates/js/translated/report.js:118
-#: templates/js/translated/stock.js:1050
+#: templates/js/translated/stock.js:1051
msgid "Select Stock Items"
msgstr ""
@@ -8072,7 +8179,7 @@ msgid "Cancel"
msgstr ""
#: templates/js/translated/modals.js:77 templates/js/translated/modals.js:119
-#: templates/js/translated/modals.js:677 templates/js/translated/modals.js:982
+#: templates/js/translated/modals.js:677 templates/js/translated/modals.js:985
#: templates/modals.html:28 templates/modals.html:51
msgid "Submit"
msgstr ""
@@ -8097,31 +8204,31 @@ msgstr ""
msgid "Loading Data"
msgstr ""
-#: templates/js/translated/modals.js:934
+#: templates/js/translated/modals.js:937
msgid "Invalid response from server"
msgstr ""
-#: templates/js/translated/modals.js:934
+#: templates/js/translated/modals.js:937
msgid "Form data missing from server response"
msgstr ""
-#: templates/js/translated/modals.js:946
+#: templates/js/translated/modals.js:949
msgid "Error posting form data"
msgstr ""
-#: templates/js/translated/modals.js:1043
+#: templates/js/translated/modals.js:1046
msgid "JSON response missing form data"
msgstr ""
-#: templates/js/translated/modals.js:1058
+#: templates/js/translated/modals.js:1061
msgid "Error 400: Bad Request"
msgstr ""
-#: templates/js/translated/modals.js:1059
+#: templates/js/translated/modals.js:1062
msgid "Server returned error code 400"
msgstr ""
-#: templates/js/translated/modals.js:1082
+#: templates/js/translated/modals.js:1085
msgid "Error requesting form data"
msgstr ""
@@ -8141,10 +8248,6 @@ msgstr ""
msgid "Build ID"
msgstr ""
-#: templates/js/translated/model_renderers.js:182
-msgid "Part ID"
-msgstr ""
-
#: templates/js/translated/model_renderers.js:249
#: templates/js/translated/model_renderers.js:270
msgid "Order ID"
@@ -8210,7 +8313,7 @@ msgstr ""
msgid "Quantity to receive"
msgstr ""
-#: templates/js/translated/order.js:520 templates/js/translated/stock.js:2131
+#: templates/js/translated/order.js:520 templates/js/translated/stock.js:2255
msgid "Stock Status"
msgstr ""
@@ -8344,7 +8447,7 @@ msgid "Delete Stock Allocation"
msgstr ""
#: templates/js/translated/order.js:1959 templates/js/translated/order.js:2048
-#: templates/js/translated/stock.js:1436
+#: templates/js/translated/stock.js:1560
msgid "Shipped to customer"
msgstr ""
@@ -8545,12 +8648,12 @@ msgid "No category"
msgstr ""
#: templates/js/translated/part.js:1296
-#: templates/js/translated/table_filters.js:430
+#: templates/js/translated/table_filters.js:425
msgid "Low stock"
msgstr ""
#: templates/js/translated/part.js:1387 templates/js/translated/part.js:1559
-#: templates/js/translated/stock.js:2440
+#: templates/js/translated/stock.js:2564
msgid "Display as list"
msgstr ""
@@ -8558,7 +8661,7 @@ msgstr ""
msgid "Display as grid"
msgstr ""
-#: templates/js/translated/part.js:1578 templates/js/translated/stock.js:2459
+#: templates/js/translated/part.js:1578 templates/js/translated/stock.js:2583
msgid "Display as tree"
msgstr ""
@@ -8566,7 +8669,7 @@ msgstr ""
msgid "Subscribed category"
msgstr ""
-#: templates/js/translated/part.js:1656 templates/js/translated/stock.js:2503
+#: templates/js/translated/part.js:1656 templates/js/translated/stock.js:2627
msgid "Path"
msgstr ""
@@ -8574,11 +8677,12 @@ msgstr ""
msgid "No test templates matching query"
msgstr ""
-#: templates/js/translated/part.js:1751 templates/js/translated/stock.js:1242
+#: templates/js/translated/part.js:1751 templates/js/translated/stock.js:1271
msgid "Edit test result"
msgstr ""
-#: templates/js/translated/part.js:1752 templates/js/translated/stock.js:1243
+#: templates/js/translated/part.js:1752 templates/js/translated/stock.js:1272
+#: templates/js/translated/stock.js:1518
msgid "Delete test result"
msgstr ""
@@ -8687,347 +8791,375 @@ msgstr ""
msgid "Sales Order(s) must be selected before printing report"
msgstr ""
-#: templates/js/translated/stock.js:74
+#: templates/js/translated/stock.js:75
msgid "Serialize Stock Item"
msgstr ""
-#: templates/js/translated/stock.js:92 templates/js/translated/stock.js:181
-msgid "Next available serial number"
-msgstr ""
-
-#: templates/js/translated/stock.js:94 templates/js/translated/stock.js:183
-msgid "Latest serial number"
-msgstr ""
-
-#: templates/js/translated/stock.js:102
+#: templates/js/translated/stock.js:103
msgid "Confirm Stock Serialization"
msgstr ""
-#: templates/js/translated/stock.js:111
+#: templates/js/translated/stock.js:112
msgid "Parent stock location"
msgstr ""
-#: templates/js/translated/stock.js:154
+#: templates/js/translated/stock.js:155
msgid "New Stock Location"
msgstr ""
-#: templates/js/translated/stock.js:194
+#: templates/js/translated/stock.js:195
msgid "This part cannot be serialized"
msgstr ""
-#: templates/js/translated/stock.js:233
+#: templates/js/translated/stock.js:234
msgid "Enter initial quantity for this stock item"
msgstr ""
-#: templates/js/translated/stock.js:239
+#: templates/js/translated/stock.js:240
msgid "Enter serial numbers for new stock (or leave blank)"
msgstr ""
-#: templates/js/translated/stock.js:382
+#: templates/js/translated/stock.js:383
msgid "Created new stock item"
msgstr ""
-#: templates/js/translated/stock.js:395
+#: templates/js/translated/stock.js:396
msgid "Created multiple stock items"
msgstr ""
-#: templates/js/translated/stock.js:420
+#: templates/js/translated/stock.js:421
msgid "Find Serial Number"
msgstr ""
-#: templates/js/translated/stock.js:424 templates/js/translated/stock.js:425
+#: templates/js/translated/stock.js:425 templates/js/translated/stock.js:426
msgid "Enter serial number"
msgstr ""
-#: templates/js/translated/stock.js:441
+#: templates/js/translated/stock.js:442
msgid "Enter a serial number"
msgstr ""
-#: templates/js/translated/stock.js:461
+#: templates/js/translated/stock.js:462
msgid "No matching serial number"
msgstr ""
-#: templates/js/translated/stock.js:470
+#: templates/js/translated/stock.js:471
msgid "More than one matching result found"
msgstr ""
-#: templates/js/translated/stock.js:515
+#: templates/js/translated/stock.js:516
msgid "Export Stock"
msgstr ""
-#: templates/js/translated/stock.js:526
+#: templates/js/translated/stock.js:527
msgid "Include Sublocations"
msgstr ""
-#: templates/js/translated/stock.js:527
+#: templates/js/translated/stock.js:528
msgid "Include stock items in sublocations"
msgstr ""
-#: templates/js/translated/stock.js:636
+#: templates/js/translated/stock.js:637
msgid "Confirm stock assignment"
msgstr ""
-#: templates/js/translated/stock.js:637
+#: templates/js/translated/stock.js:638
msgid "Assign Stock to Customer"
msgstr ""
-#: templates/js/translated/stock.js:714
+#: templates/js/translated/stock.js:715
msgid "Warning: Merge operation cannot be reversed"
msgstr ""
-#: templates/js/translated/stock.js:715
+#: templates/js/translated/stock.js:716
msgid "Some information will be lost when merging stock items"
msgstr ""
-#: templates/js/translated/stock.js:717
+#: templates/js/translated/stock.js:718
msgid "Stock transaction history will be deleted for merged items"
msgstr ""
-#: templates/js/translated/stock.js:718
+#: templates/js/translated/stock.js:719
msgid "Supplier part information will be deleted for merged items"
msgstr ""
-#: templates/js/translated/stock.js:804
+#: templates/js/translated/stock.js:805
msgid "Confirm stock item merge"
msgstr ""
-#: templates/js/translated/stock.js:805
+#: templates/js/translated/stock.js:806
msgid "Merge Stock Items"
msgstr ""
-#: templates/js/translated/stock.js:900
+#: templates/js/translated/stock.js:901
msgid "Transfer Stock"
msgstr ""
-#: templates/js/translated/stock.js:901
+#: templates/js/translated/stock.js:902
msgid "Move"
msgstr ""
-#: templates/js/translated/stock.js:907
+#: templates/js/translated/stock.js:908
msgid "Count Stock"
msgstr ""
-#: templates/js/translated/stock.js:908
+#: templates/js/translated/stock.js:909
msgid "Count"
msgstr ""
-#: templates/js/translated/stock.js:912
+#: templates/js/translated/stock.js:913
msgid "Remove Stock"
msgstr ""
-#: templates/js/translated/stock.js:913
+#: templates/js/translated/stock.js:914
msgid "Take"
msgstr ""
-#: templates/js/translated/stock.js:917
+#: templates/js/translated/stock.js:918
msgid "Add Stock"
msgstr ""
-#: templates/js/translated/stock.js:918 users/models.py:208
+#: templates/js/translated/stock.js:919 users/models.py:213
msgid "Add"
msgstr ""
-#: templates/js/translated/stock.js:922 templates/stock_table.html:58
+#: templates/js/translated/stock.js:923 templates/stock_table.html:58
msgid "Delete Stock"
msgstr ""
-#: templates/js/translated/stock.js:1011
+#: templates/js/translated/stock.js:1012
msgid "Quantity cannot be adjusted for serialized stock"
msgstr ""
-#: templates/js/translated/stock.js:1011
+#: templates/js/translated/stock.js:1012
msgid "Specify stock quantity"
msgstr ""
-#: templates/js/translated/stock.js:1051
+#: templates/js/translated/stock.js:1052
msgid "You must select at least one available stock item"
msgstr ""
-#: templates/js/translated/stock.js:1209
+#: templates/js/translated/stock.js:1210
msgid "PASS"
msgstr ""
-#: templates/js/translated/stock.js:1211
+#: templates/js/translated/stock.js:1212
msgid "FAIL"
msgstr ""
-#: templates/js/translated/stock.js:1216
+#: templates/js/translated/stock.js:1217
msgid "NO RESULT"
msgstr ""
-#: templates/js/translated/stock.js:1238
+#: templates/js/translated/stock.js:1264
+msgid "Pass test"
+msgstr ""
+
+#: templates/js/translated/stock.js:1267
msgid "Add test result"
msgstr ""
-#: templates/js/translated/stock.js:1264
+#: templates/js/translated/stock.js:1293
msgid "No test results found"
msgstr ""
-#: templates/js/translated/stock.js:1321
+#: templates/js/translated/stock.js:1349
msgid "Test Date"
msgstr ""
-#: templates/js/translated/stock.js:1428
+#: templates/js/translated/stock.js:1501
+msgid "Edit Test Result"
+msgstr ""
+
+#: templates/js/translated/stock.js:1523
+msgid "Delete Test Result"
+msgstr ""
+
+#: templates/js/translated/stock.js:1552
msgid "In production"
msgstr ""
-#: templates/js/translated/stock.js:1432
+#: templates/js/translated/stock.js:1556
msgid "Installed in Stock Item"
msgstr ""
-#: templates/js/translated/stock.js:1440
+#: templates/js/translated/stock.js:1564
msgid "Assigned to Sales Order"
msgstr ""
-#: templates/js/translated/stock.js:1446
+#: templates/js/translated/stock.js:1570
msgid "No stock location set"
msgstr "Geen voorraadlocatie ingesteld"
-#: templates/js/translated/stock.js:1604
+#: templates/js/translated/stock.js:1728
msgid "Stock item is in production"
msgstr ""
-#: templates/js/translated/stock.js:1609
+#: templates/js/translated/stock.js:1733
msgid "Stock item assigned to sales order"
msgstr ""
-#: templates/js/translated/stock.js:1612
+#: templates/js/translated/stock.js:1736
msgid "Stock item assigned to customer"
msgstr ""
-#: templates/js/translated/stock.js:1616
+#: templates/js/translated/stock.js:1740
msgid "Stock item has expired"
msgstr ""
-#: templates/js/translated/stock.js:1618
+#: templates/js/translated/stock.js:1742
msgid "Stock item will expire soon"
msgstr ""
-#: templates/js/translated/stock.js:1624
+#: templates/js/translated/stock.js:1748
msgid "Serialized stock item has been allocated"
msgstr ""
-#: templates/js/translated/stock.js:1626
+#: templates/js/translated/stock.js:1750
msgid "Stock item has been fully allocated"
msgstr ""
-#: templates/js/translated/stock.js:1628
+#: templates/js/translated/stock.js:1752
msgid "Stock item has been partially allocated"
msgstr ""
-#: templates/js/translated/stock.js:1633
+#: templates/js/translated/stock.js:1757
msgid "Stock item has been installed in another item"
msgstr ""
-#: templates/js/translated/stock.js:1640
+#: templates/js/translated/stock.js:1764
msgid "Stock item has been rejected"
msgstr ""
-#: templates/js/translated/stock.js:1642
+#: templates/js/translated/stock.js:1766
msgid "Stock item is lost"
msgstr ""
-#: templates/js/translated/stock.js:1644
+#: templates/js/translated/stock.js:1768
msgid "Stock item is destroyed"
msgstr ""
-#: templates/js/translated/stock.js:1648
+#: templates/js/translated/stock.js:1772
#: templates/js/translated/table_filters.js:188
msgid "Depleted"
msgstr ""
-#: templates/js/translated/stock.js:1698
+#: templates/js/translated/stock.js:1822
msgid "Stocktake"
msgstr ""
-#: templates/js/translated/stock.js:1771
+#: templates/js/translated/stock.js:1895
msgid "Supplier part not specified"
msgstr ""
-#: templates/js/translated/stock.js:1809
+#: templates/js/translated/stock.js:1933
msgid "No stock items matching query"
msgstr ""
-#: templates/js/translated/stock.js:1830 templates/js/translated/stock.js:1878
+#: templates/js/translated/stock.js:1954 templates/js/translated/stock.js:2002
msgid "items"
msgstr ""
-#: templates/js/translated/stock.js:1918
+#: templates/js/translated/stock.js:2042
msgid "batches"
msgstr ""
-#: templates/js/translated/stock.js:1945
+#: templates/js/translated/stock.js:2069
msgid "locations"
msgstr ""
-#: templates/js/translated/stock.js:1947
+#: templates/js/translated/stock.js:2071
msgid "Undefined location"
msgstr ""
-#: templates/js/translated/stock.js:2146
+#: templates/js/translated/stock.js:2270
msgid "Set Stock Status"
msgstr ""
-#: templates/js/translated/stock.js:2160
+#: templates/js/translated/stock.js:2284
msgid "Select Status Code"
msgstr ""
-#: templates/js/translated/stock.js:2161
+#: templates/js/translated/stock.js:2285
msgid "Status code must be selected"
msgstr ""
-#: templates/js/translated/stock.js:2340
+#: templates/js/translated/stock.js:2464
msgid "Allocated Quantity"
msgstr ""
-#: templates/js/translated/stock.js:2535
+#: templates/js/translated/stock.js:2659
msgid "Invalid date"
msgstr ""
-#: templates/js/translated/stock.js:2557
+#: templates/js/translated/stock.js:2681
msgid "Details"
msgstr ""
-#: templates/js/translated/stock.js:2582
+#: templates/js/translated/stock.js:2706
msgid "Location no longer exists"
msgstr ""
-#: templates/js/translated/stock.js:2601
+#: templates/js/translated/stock.js:2725
msgid "Purchase order no longer exists"
msgstr ""
-#: templates/js/translated/stock.js:2620
+#: templates/js/translated/stock.js:2744
msgid "Customer no longer exists"
msgstr ""
-#: templates/js/translated/stock.js:2638
+#: templates/js/translated/stock.js:2762
msgid "Stock item no longer exists"
msgstr ""
-#: templates/js/translated/stock.js:2661
+#: templates/js/translated/stock.js:2785
msgid "Added"
msgstr ""
-#: templates/js/translated/stock.js:2669
+#: templates/js/translated/stock.js:2793
msgid "Removed"
msgstr ""
-#: templates/js/translated/stock.js:2710
+#: templates/js/translated/stock.js:2834
msgid "Edit tracking entry"
msgstr ""
-#: templates/js/translated/stock.js:2711
+#: templates/js/translated/stock.js:2835
msgid "Delete tracking entry"
msgstr ""
-#: templates/js/translated/stock.js:2762
+#: templates/js/translated/stock.js:2886
msgid "No installed items"
msgstr ""
-#: templates/js/translated/stock.js:2813
+#: templates/js/translated/stock.js:2937
msgid "Uninstall Stock Item"
msgstr ""
+#: templates/js/translated/stock.js:2973
+msgid "Install another stock item into this item"
+msgstr ""
+
+#: templates/js/translated/stock.js:2974
+msgid "Stock items can only be installed if they meet the following criteria"
+msgstr ""
+
+#: templates/js/translated/stock.js:2976
+msgid "The Stock Item links to a Part which is the BOM for this Stock Item"
+msgstr ""
+
+#: templates/js/translated/stock.js:2977
+msgid "The Stock Item is currently available in stock"
+msgstr ""
+
+#: templates/js/translated/stock.js:2978
+msgid "The Stock Item is serialized and does not belong to another item"
+msgstr ""
+
+#: templates/js/translated/stock.js:2991
+msgid "Select part to install"
+msgstr ""
+
#: templates/js/translated/table_filters.js:56
msgid "Trackable Part"
msgstr ""
@@ -9055,12 +9187,12 @@ msgstr ""
#: templates/js/translated/table_filters.js:121
#: templates/js/translated/table_filters.js:122
-#: templates/js/translated/table_filters.js:407
+#: templates/js/translated/table_filters.js:402
msgid "Include subcategories"
msgstr ""
#: templates/js/translated/table_filters.js:126
-#: templates/js/translated/table_filters.js:442
+#: templates/js/translated/table_filters.js:437
msgid "Subscribed"
msgstr ""
@@ -9102,7 +9234,7 @@ msgid "Batch code"
msgstr ""
#: templates/js/translated/table_filters.js:163
-#: templates/js/translated/table_filters.js:379
+#: templates/js/translated/table_filters.js:374
msgid "Active parts"
msgstr ""
@@ -9187,47 +9319,47 @@ msgstr ""
msgid "Show stock which is close to expiring"
msgstr ""
-#: templates/js/translated/table_filters.js:290
+#: templates/js/translated/table_filters.js:285
msgid "Build status"
msgstr ""
-#: templates/js/translated/table_filters.js:303
-#: templates/js/translated/table_filters.js:344
+#: templates/js/translated/table_filters.js:298
+#: templates/js/translated/table_filters.js:339
msgid "Assigned to me"
msgstr ""
-#: templates/js/translated/table_filters.js:320
-#: templates/js/translated/table_filters.js:331
-#: templates/js/translated/table_filters.js:352
+#: templates/js/translated/table_filters.js:315
+#: templates/js/translated/table_filters.js:326
+#: templates/js/translated/table_filters.js:347
msgid "Order status"
msgstr ""
-#: templates/js/translated/table_filters.js:336
-#: templates/js/translated/table_filters.js:357
+#: templates/js/translated/table_filters.js:331
+#: templates/js/translated/table_filters.js:352
msgid "Outstanding"
msgstr ""
-#: templates/js/translated/table_filters.js:408
+#: templates/js/translated/table_filters.js:403
msgid "Include parts in subcategories"
msgstr ""
-#: templates/js/translated/table_filters.js:412
+#: templates/js/translated/table_filters.js:407
msgid "Has IPN"
msgstr ""
-#: templates/js/translated/table_filters.js:413
+#: templates/js/translated/table_filters.js:408
msgid "Part has internal part number"
msgstr ""
-#: templates/js/translated/table_filters.js:418
+#: templates/js/translated/table_filters.js:413
msgid "Show active parts"
msgstr ""
-#: templates/js/translated/table_filters.js:426
+#: templates/js/translated/table_filters.js:421
msgid "Stock available"
msgstr ""
-#: templates/js/translated/table_filters.js:454
+#: templates/js/translated/table_filters.js:449
msgid "Purchasable"
msgstr ""
@@ -9480,35 +9612,35 @@ msgstr ""
msgid "Important dates"
msgstr ""
-#: users/models.py:195
+#: users/models.py:200
msgid "Permission set"
msgstr ""
-#: users/models.py:203
+#: users/models.py:208
msgid "Group"
msgstr ""
-#: users/models.py:206
+#: users/models.py:211
msgid "View"
msgstr ""
-#: users/models.py:206
+#: users/models.py:211
msgid "Permission to view items"
msgstr ""
-#: users/models.py:208
+#: users/models.py:213
msgid "Permission to add items"
msgstr ""
-#: users/models.py:210
+#: users/models.py:215
msgid "Change"
msgstr ""
-#: users/models.py:210
+#: users/models.py:215
msgid "Permissions to edit items"
msgstr ""
-#: users/models.py:212
+#: users/models.py:217
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 9af733aa18..590cd9fe2c 100644
--- a/InvenTree/locale/no/LC_MESSAGES/django.po
+++ b/InvenTree/locale/no/LC_MESSAGES/django.po
@@ -3,8 +3,8 @@ msgid ""
msgstr ""
"Project-Id-Version: inventree\n"
"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2022-01-29 00:17+0000\n"
-"PO-Revision-Date: 2022-01-29 01:11\n"
+"POT-Creation-Date: 2022-02-18 20:36+0000\n"
+"PO-Revision-Date: 2022-02-18 20:38\n"
"Last-Translator: \n"
"Language-Team: Norwegian\n"
"Language: no_NO\n"
@@ -34,9 +34,9 @@ msgstr "Ingen samsvarende handling funnet"
msgid "Enter date"
msgstr "Oppgi dato"
-#: InvenTree/forms.py:126 build/forms.py:48 build/forms.py:69 order/forms.py:24
-#: order/forms.py:35 order/forms.py:46 order/forms.py:57
-#: templates/account/email_confirm.html:20 templates/js/translated/forms.js:595
+#: InvenTree/forms.py:126 order/forms.py:24 order/forms.py:35 order/forms.py:46
+#: order/forms.py:57 templates/account/email_confirm.html:20
+#: templates/js/translated/forms.js:596
msgid "Confirm"
msgstr "Bekreft"
@@ -86,7 +86,7 @@ msgid "Duplicate serial: {n}"
msgstr "Dupliser serie: {n}"
#: InvenTree/helpers.py:446 order/models.py:282 order/models.py:425
-#: stock/views.py:1231
+#: stock/views.py:1082
msgid "Invalid quantity provided"
msgstr "Ugyldig mengde oppgitt"
@@ -119,133 +119,133 @@ msgstr "Ingen serienummer funnet"
msgid "Number of unique serial number ({s}) must match quantity ({q})"
msgstr "Antall unike serienummer ({s}) må samsvare mengde ({q})"
-#: InvenTree/models.py:120
+#: InvenTree/models.py:176
msgid "Missing file"
msgstr "Fil mangler"
-#: InvenTree/models.py:121
+#: InvenTree/models.py:177
msgid "Missing external link"
msgstr "Mangler eksternlenke"
-#: InvenTree/models.py:132 stock/models.py:1995
+#: InvenTree/models.py:188 stock/models.py:1995
#: templates/js/translated/attachment.js:119
msgid "Attachment"
msgstr "Vedlegg"
-#: InvenTree/models.py:133
+#: InvenTree/models.py:189
msgid "Select file to attach"
msgstr "Velg fil å legge ved"
-#: InvenTree/models.py:139 company/models.py:131 company/models.py:348
-#: company/models.py:564 order/models.py:127 part/models.py:830
+#: InvenTree/models.py:195 company/models.py:131 company/models.py:348
+#: company/models.py:564 order/models.py:127 part/models.py:860
#: report/templates/report/inventree_build_order_base.html:165
#: templates/js/translated/company.js:540
#: templates/js/translated/company.js:829 templates/js/translated/part.js:1324
msgid "Link"
msgstr "Lenke"
-#: InvenTree/models.py:140 build/models.py:332 part/models.py:831
+#: InvenTree/models.py:196 build/models.py:332 part/models.py:861
#: stock/models.py:529
msgid "Link to external URL"
msgstr "Lenke til ekstern URL"
-#: InvenTree/models.py:143 templates/js/translated/attachment.js:163
+#: InvenTree/models.py:199 templates/js/translated/attachment.js:163
msgid "Comment"
msgstr "Kommenter"
-#: InvenTree/models.py:143
+#: InvenTree/models.py:199
msgid "File comment"
msgstr "Kommentar til fil"
-#: InvenTree/models.py:149 InvenTree/models.py:150 common/models.py:1223
-#: common/models.py:1224 common/models.py:1452 common/models.py:1453
-#: part/models.py:2265 part/models.py:2285
+#: InvenTree/models.py:205 InvenTree/models.py:206 common/models.py:1235
+#: common/models.py:1236 common/models.py:1464 common/models.py:1465
+#: part/models.py:2301 part/models.py:2321
#: report/templates/report/inventree_test_report_base.html:96
-#: templates/js/translated/stock.js:2692
+#: templates/js/translated/stock.js:2816
msgid "User"
msgstr "Bruker"
-#: InvenTree/models.py:153
+#: InvenTree/models.py:209
msgid "upload date"
msgstr "opplastet dato"
-#: InvenTree/models.py:176
+#: InvenTree/models.py:232
msgid "Filename must not be empty"
msgstr "Filnavn må ikke være tom"
-#: InvenTree/models.py:199
+#: InvenTree/models.py:255
msgid "Invalid attachment directory"
msgstr "Ugyldig vedleggskatalog"
-#: InvenTree/models.py:209
+#: InvenTree/models.py:265
#, python-brace-format
msgid "Filename contains illegal character '{c}'"
msgstr "Filnavn inneholder ugyldig tegn '{c}'"
-#: InvenTree/models.py:212
+#: InvenTree/models.py:268
msgid "Filename missing extension"
msgstr "Filnavn mangler filtype"
-#: InvenTree/models.py:219
+#: InvenTree/models.py:275
msgid "Attachment with this filename already exists"
msgstr "Vedlegg med dette filnavnet finnes allerede"
-#: InvenTree/models.py:226
+#: InvenTree/models.py:282
msgid "Error renaming file"
msgstr "Feil ved endring av navn"
-#: InvenTree/models.py:261
+#: InvenTree/models.py:317
msgid "Invalid choice"
msgstr "Ugyldig valg"
-#: InvenTree/models.py:277 InvenTree/models.py:278 common/models.py:1438
-#: company/models.py:415 label/models.py:112 part/models.py:774
-#: part/models.py:2449 plugin/models.py:40 report/models.py:181
+#: InvenTree/models.py:333 InvenTree/models.py:334 common/models.py:1450
+#: company/models.py:415 label/models.py:112 part/models.py:804
+#: part/models.py:2485 plugin/models.py:40 report/models.py:181
#: templates/InvenTree/settings/mixins/urls.html:13
#: templates/InvenTree/settings/plugin.html:48
#: templates/InvenTree/settings/plugin.html:125
#: templates/InvenTree/settings/plugin_settings.html:23
-#: templates/InvenTree/settings/settings.html:282
+#: templates/InvenTree/settings/settings.html:319
#: templates/js/translated/company.js:641 templates/js/translated/part.js:567
#: templates/js/translated/part.js:706 templates/js/translated/part.js:1631
-#: templates/js/translated/stock.js:2485
+#: templates/js/translated/stock.js:2609
msgid "Name"
msgstr "Navn"
-#: InvenTree/models.py:284 build/models.py:209
+#: InvenTree/models.py:340 build/models.py:209
#: build/templates/build/detail.html:25 company/models.py:354
#: company/models.py:570 company/templates/company/company_base.html:68
#: company/templates/company/manufacturer_part.html:76
#: company/templates/company/supplier_part.html:73 label/models.py:119
-#: order/models.py:125 part/models.py:797 part/templates/part/category.html:74
+#: order/models.py:125 part/models.py:827 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:93
#: templates/InvenTree/settings/plugin_settings.html:33
-#: templates/js/translated/bom.js:339 templates/js/translated/bom.js:552
-#: templates/js/translated/build.js:1682 templates/js/translated/company.js:345
+#: templates/js/translated/bom.js:552 templates/js/translated/bom.js:765
+#: templates/js/translated/build.js:1920 templates/js/translated/company.js:345
#: templates/js/translated/company.js:551
#: templates/js/translated/company.js:840 templates/js/translated/order.js:836
#: templates/js/translated/order.js:1019 templates/js/translated/order.js:1258
#: templates/js/translated/part.js:626 templates/js/translated/part.js:999
#: templates/js/translated/part.js:1084 templates/js/translated/part.js:1254
#: templates/js/translated/part.js:1650 templates/js/translated/part.js:1719
-#: templates/js/translated/stock.js:1577 templates/js/translated/stock.js:2314
-#: templates/js/translated/stock.js:2497 templates/js/translated/stock.js:2542
+#: templates/js/translated/stock.js:1701 templates/js/translated/stock.js:2438
+#: templates/js/translated/stock.js:2621 templates/js/translated/stock.js:2666
msgid "Description"
msgstr "Beskrivelse"
-#: InvenTree/models.py:285
+#: InvenTree/models.py:341
msgid "Description (optional)"
msgstr "Beskrivelse (valgfritt)"
-#: InvenTree/models.py:293
+#: InvenTree/models.py:349
msgid "parent"
msgstr "overkategori"
-#: InvenTree/serializers.py:65 part/models.py:2734
+#: InvenTree/serializers.py:65 part/models.py:2803
msgid "Must be a valid number"
msgstr "Nummer må være gyldig"
@@ -253,83 +253,127 @@ msgstr "Nummer må være gyldig"
msgid "Filename"
msgstr "Filnavn"
-#: InvenTree/settings.py:661
+#: InvenTree/serializers.py:334
+msgid "Invalid value"
+msgstr ""
+
+#: InvenTree/serializers.py:355
+msgid "Data File"
+msgstr ""
+
+#: InvenTree/serializers.py:356
+msgid "Select data file for upload"
+msgstr ""
+
+#: InvenTree/serializers.py:380
+msgid "Unsupported file type"
+msgstr ""
+
+#: InvenTree/serializers.py:386
+msgid "File is too large"
+msgstr ""
+
+#: InvenTree/serializers.py:407
+msgid "No columns found in file"
+msgstr ""
+
+#: InvenTree/serializers.py:410
+msgid "No data rows found in file"
+msgstr ""
+
+#: InvenTree/serializers.py:533
+msgid "No data rows provided"
+msgstr ""
+
+#: InvenTree/serializers.py:536
+msgid "No data columns supplied"
+msgstr ""
+
+#: InvenTree/serializers.py:623
+msgid "Missing required column"
+msgstr ""
+
+#: InvenTree/serializers.py:632
+msgid "Duplicate column"
+msgstr ""
+
+#: InvenTree/settings.py:655
msgid "German"
msgstr "Tysk"
-#: InvenTree/settings.py:662
+#: InvenTree/settings.py:656
msgid "Greek"
msgstr "Gresk"
-#: InvenTree/settings.py:663
+#: InvenTree/settings.py:657
msgid "English"
msgstr "Engelsk"
-#: InvenTree/settings.py:664
+#: InvenTree/settings.py:658
msgid "Spanish"
msgstr "Spansk"
-#: InvenTree/settings.py:665
+#: InvenTree/settings.py:659
msgid "Spanish (Mexican)"
msgstr "Spansk (Meksikansk)"
-#: InvenTree/settings.py:666
+#: InvenTree/settings.py:660
msgid "French"
msgstr "Fransk"
-#: InvenTree/settings.py:667
+#: InvenTree/settings.py:661
msgid "Hebrew"
msgstr "Hebraisk"
-#: InvenTree/settings.py:668
+#: InvenTree/settings.py:662
msgid "Italian"
msgstr "Italiensk"
-#: InvenTree/settings.py:669
+#: InvenTree/settings.py:663
msgid "Japanese"
msgstr "Japansk"
-#: InvenTree/settings.py:670
+#: InvenTree/settings.py:664
msgid "Korean"
msgstr "Koreansk"
-#: InvenTree/settings.py:671
+#: InvenTree/settings.py:665
msgid "Dutch"
msgstr "Nederlandsk"
-#: InvenTree/settings.py:672
+#: InvenTree/settings.py:666
msgid "Norwegian"
msgstr "Norsk"
-#: InvenTree/settings.py:673
+#: InvenTree/settings.py:667
msgid "Polish"
msgstr "Polsk"
-#: InvenTree/settings.py:674
+#: InvenTree/settings.py:668
msgid "Portugese"
msgstr "Portugesisk"
-#: InvenTree/settings.py:675
+#: InvenTree/settings.py:669
msgid "Russian"
msgstr "Russisk"
-#: InvenTree/settings.py:676
+#: InvenTree/settings.py:670
msgid "Swedish"
msgstr "Svensk"
-#: InvenTree/settings.py:677
+#: InvenTree/settings.py:671
msgid "Thai"
msgstr "Thailandsk"
-#: InvenTree/settings.py:678
+#: InvenTree/settings.py:672
msgid "Turkish"
msgstr "Tyrkisk"
-#: InvenTree/settings.py:679
+#: InvenTree/settings.py:673
msgid "Vietnamese"
msgstr "Vietnamesisk"
-#: InvenTree/settings.py:680
+#: InvenTree/settings.py:674
msgid "Chinese"
msgstr "Kinesisk"
@@ -346,7 +390,7 @@ msgid "InvenTree system health checks failed"
msgstr "Helsekontroll av IvenTree system mislyktes"
#: InvenTree/status_codes.py:101 InvenTree/status_codes.py:142
-#: InvenTree/status_codes.py:316 templates/js/translated/table_filters.js:313
+#: InvenTree/status_codes.py:316 templates/js/translated/table_filters.js:308
msgid "Pending"
msgstr "Ventende"
@@ -456,7 +500,7 @@ msgstr "Delt fra overordnet element"
msgid "Split child item"
msgstr "Delt fra underelement"
-#: InvenTree/status_codes.py:294 templates/js/translated/stock.js:2072
+#: InvenTree/status_codes.py:294 templates/js/translated/stock.js:2196
msgid "Merged stock items"
msgstr "Sammenslått lagervare"
@@ -484,41 +528,41 @@ msgstr "Mottatt mot innkjøpsordre"
msgid "Production"
msgstr "Produksjon"
-#: InvenTree/validators.py:23
+#: InvenTree/validators.py:25
msgid "Not a valid currency code"
msgstr "Ikke en gyldig valutanr"
-#: InvenTree/validators.py:51
+#: InvenTree/validators.py:53
msgid "Invalid character in part name"
msgstr "Ugylding tegn i varenavn"
-#: InvenTree/validators.py:64
+#: InvenTree/validators.py:66
#, python-brace-format
msgid "IPN must match regex pattern {pat}"
msgstr "IPN må matche regex-mønster {pat}"
-#: InvenTree/validators.py:78 InvenTree/validators.py:92
-#: InvenTree/validators.py:106
+#: InvenTree/validators.py:80 InvenTree/validators.py:94
+#: InvenTree/validators.py:108
#, python-brace-format
msgid "Reference must match pattern {pattern}"
msgstr "Referansen må samsvare med mønster {pattern}"
-#: InvenTree/validators.py:114
+#: InvenTree/validators.py:116
#, python-brace-format
msgid "Illegal character in name ({x})"
msgstr "Ugyldig tegn i navn ({x})"
-#: InvenTree/validators.py:133 InvenTree/validators.py:149
+#: InvenTree/validators.py:137 InvenTree/validators.py:153
msgid "Overage value must not be negative"
msgstr "Overde-verdien må ikke være negativ"
-#: InvenTree/validators.py:151
+#: InvenTree/validators.py:155
msgid "Overage must not exceed 100%"
msgstr "Overde må ikke overstige 100%"
-#: InvenTree/validators.py:158
-msgid "Overage must be an integer value or a percentage"
-msgstr "Overde må være en heltallsverdi eller en prosentandel"
+#: InvenTree/validators.py:162
+msgid "Invalid value for overage"
+msgstr ""
#: InvenTree/views.py:538
msgid "Delete Item"
@@ -578,193 +622,136 @@ msgstr "Strekkode samsvarer allerede med delen"
#: barcodes/api.py:207 barcodes/api.py:219
msgid "Barcode hash already matches Stock Item"
-msgstr ""
+msgstr "Strekkkoden hash samsvarer allerede med lagervare"
#: barcodes/api.py:225
msgid "Barcode associated with Stock Item"
msgstr "Strekkode tilknyttet lagervare"
-#: build/forms.py:36 build/models.py:1293
-#: build/templates/build/build_base.html:82
-#: build/templates/build/detail.html:35 common/models.py:1263
-#: company/forms.py:42 company/templates/company/supplier_part.html:251
-#: order/models.py:805 order/models.py:1229 order/serializers.py:816
-#: order/templates/order/order_wizard/match_parts.html:30
-#: order/templates/order/order_wizard/select_parts.html:34 part/forms.py:144
-#: part/forms.py:160 part/forms.py:176 part/models.py:2636
-#: part/templates/part/bom_upload/match_parts.html:31
-#: part/templates/part/detail.html:992 part/templates/part/detail.html:1078
-#: part/templates/part/part_pricing.html:16
-#: report/templates/report/inventree_build_order_base.html:114
-#: report/templates/report/inventree_po_report.html:91
-#: report/templates/report/inventree_so_report.html:91
-#: report/templates/report/inventree_test_report_base.html:81
-#: report/templates/report/inventree_test_report_base.html:139
-#: stock/forms.py:142 stock/serializers.py:293
-#: stock/templates/stock/item_base.html:181
-#: stock/templates/stock/item_base.html:262
-#: stock/templates/stock/item_base.html:270
-#: templates/js/translated/barcode.js:385 templates/js/translated/bom.js:567
-#: templates/js/translated/build.js:295 templates/js/translated/build.js:495
-#: templates/js/translated/build.js:689 templates/js/translated/build.js:699
-#: templates/js/translated/build.js:1075 templates/js/translated/build.js:1422
-#: templates/js/translated/model_renderers.js:99
-#: templates/js/translated/order.js:101 templates/js/translated/order.js:1056
-#: 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:906
-#: templates/js/translated/part.js:1862 templates/js/translated/part.js:1985
-#: templates/js/translated/part.js:2063 templates/js/translated/stock.js:391
-#: templates/js/translated/stock.js:588 templates/js/translated/stock.js:758
-#: templates/js/translated/stock.js:2677 templates/js/translated/stock.js:2779
-msgid "Quantity"
-msgstr "Antall"
-
-#: build/forms.py:37
-msgid "Enter quantity for build output"
-msgstr "Angi antall for build utgang"
-
-#: build/forms.py:41 order/serializers.py:820 stock/forms.py:81
-#: stock/serializers.py:314 templates/js/translated/stock.js:238
-#: templates/js/translated/stock.js:392
-msgid "Serial Numbers"
-msgstr "Serienummer"
-
-#: build/forms.py:43
-msgid "Enter serial numbers for build outputs"
-msgstr ""
-
-#: build/forms.py:49
-msgid "Confirm creation of build output"
-msgstr ""
-
-#: build/forms.py:70
-msgid "Confirm deletion of build output"
-msgstr ""
-
-#: build/forms.py:89
+#: build/forms.py:20
msgid "Confirm cancel"
-msgstr ""
+msgstr "Bekreft avbestilling"
-#: build/forms.py:89 build/views.py:65
+#: build/forms.py:20 build/views.py:62
msgid "Confirm build cancellation"
-msgstr ""
+msgstr "Bekfret build avbestilling"
#: build/models.py:135
msgid "Invalid choice for parent build"
-msgstr ""
+msgstr "Ugylding valg for overordnet build"
#: build/models.py:139 build/templates/build/build_base.html:9
#: build/templates/build/build_base.html:27
#: report/templates/report/inventree_build_order_base.html:106
-#: templates/js/translated/build.js:457 templates/js/translated/stock.js:2290
+#: templates/js/translated/build.js:676 templates/js/translated/stock.js:2414
msgid "Build Order"
-msgstr ""
+msgstr "Build ordre"
#: build/models.py:140 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
+#: part/templates/part/part_sidebar.html:21 templates/InvenTree/index.html:221
#: templates/InvenTree/search.html:139
#: templates/InvenTree/settings/sidebar.html:43 users/models.py:44
msgid "Build Orders"
-msgstr ""
+msgstr "Build Ordre"
#: build/models.py:200
msgid "Build Order Reference"
-msgstr ""
+msgstr "Bygg ordrereferanse"
#: build/models.py:201 order/models.py:213 order/models.py:541
-#: order/models.py:812 part/models.py:2645
-#: part/templates/part/bom_upload/match_parts.html:30
+#: order/models.py:812 part/models.py:2714
+#: part/templates/part/upload_bom.html:54
#: report/templates/report/inventree_po_report.html:92
#: report/templates/report/inventree_so_report.html:92
-#: templates/js/translated/bom.js:559 templates/js/translated/build.js:1179
+#: templates/js/translated/bom.js:772 templates/js/translated/build.js:1401
#: templates/js/translated/order.js:1050 templates/js/translated/order.js:2144
msgid "Reference"
-msgstr ""
+msgstr "Referanse"
#: build/models.py:212
msgid "Brief description of the build"
-msgstr ""
+msgstr "Kort beskrivelse av build"
-#: build/models.py:221 build/templates/build/build_base.html:164
+#: build/models.py:221 build/templates/build/build_base.html:169
#: build/templates/build/detail.html:88
msgid "Parent Build"
-msgstr ""
+msgstr "Overordnet build"
#: build/models.py:222
msgid "BuildOrder to which this build is allocated"
-msgstr ""
+msgstr "Build order som denne build er tildelt til"
#: build/models.py:227 build/templates/build/build_base.html:77
#: build/templates/build/detail.html:30 company/models.py:705
#: order/models.py:876 order/models.py:950
#: order/templates/order/order_wizard/select_parts.html:32 part/models.py:359
-#: part/models.py:2211 part/models.py:2227 part/models.py:2246
-#: part/models.py:2263 part/models.py:2365 part/models.py:2487
-#: part/models.py:2620 part/models.py:2927 part/serializers.py:658
-#: part/templates/part/part_app_base.html:8
+#: part/models.py:2247 part/models.py:2263 part/models.py:2282
+#: part/models.py:2299 part/models.py:2401 part/models.py:2523
+#: part/models.py:2613 part/models.py:2689 part/models.py:2996
+#: part/serializers.py:666 part/templates/part/part_app_base.html:8
#: part/templates/part/part_pricing.html:12
#: part/templates/part/set_category.html:13
+#: part/templates/part/upload_bom.html:52
#: 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: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:338
-#: templates/js/translated/bom.js:517 templates/js/translated/build.js:680
-#: templates/js/translated/build.js:1048 templates/js/translated/build.js:1419
-#: templates/js/translated/build.js:1687 templates/js/translated/company.js:492
+#: templates/js/translated/barcode.js:383 templates/js/translated/bom.js:551
+#: templates/js/translated/bom.js:730 templates/js/translated/build.js:902
+#: templates/js/translated/build.js:1270 templates/js/translated/build.js:1655
+#: templates/js/translated/build.js:1925 templates/js/translated/company.js:492
#: templates/js/translated/company.js:749 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:984
#: templates/js/translated/part.js:1065 templates/js/translated/part.js:1232
-#: templates/js/translated/stock.js:562 templates/js/translated/stock.js:727
-#: templates/js/translated/stock.js:934 templates/js/translated/stock.js:1534
-#: templates/js/translated/stock.js:2767
+#: templates/js/translated/stock.js:563 templates/js/translated/stock.js:728
+#: templates/js/translated/stock.js:935 templates/js/translated/stock.js:1658
+#: templates/js/translated/stock.js:2891 templates/js/translated/stock.js:2990
msgid "Part"
-msgstr ""
+msgstr "Del"
#: build/models.py:235
msgid "Select part to build"
-msgstr ""
+msgstr "Valg del å bygge"
#: build/models.py:240
msgid "Sales Order Reference"
-msgstr ""
+msgstr "Salg order referanse"
#: build/models.py:244
msgid "SalesOrder to which this build is allocated"
-msgstr ""
+msgstr "Salgorder som denne build er tildelt til"
-#: build/models.py:249 templates/js/translated/build.js:1407
+#: build/models.py:249 templates/js/translated/build.js:1643
#: templates/js/translated/order.js:1564
msgid "Source Location"
-msgstr ""
+msgstr "Kilde plassering"
#: build/models.py:253
msgid "Select location to take stock from for this build (leave blank to take from any stock location)"
-msgstr ""
+msgstr "Valg sted for å ta lagervare fra for dette prosjektet (la stå tomt for a ta fra hvilken som helst sted)"
#: build/models.py:258
msgid "Destination Location"
-msgstr ""
+msgstr "Sted for destinasjon"
#: build/models.py:262
msgid "Select location where the completed items will be stored"
-msgstr ""
+msgstr "Velg sted hvor fulførte elementer vil bli lagret"
#: build/models.py:266
msgid "Build Quantity"
-msgstr ""
+msgstr "Prosjekt mengde"
#: build/models.py:269
msgid "Number of stock items to build"
-msgstr ""
+msgstr "Antall lagervare til prosjektet"
#: build/models.py:273
msgid "Completed items"
@@ -782,15 +769,15 @@ msgstr "Byggstatus"
msgid "Build status code"
msgstr "Byggstatuskode"
-#: build/models.py:287 stock/models.py:533
+#: build/models.py:287 build/serializers.py:218 stock/models.py:533
msgid "Batch Code"
msgstr "Batch kode"
-#: build/models.py:291
+#: build/models.py:291 build/serializers.py:219
msgid "Batch code for this build output"
msgstr "Batch kode for denne build output"
-#: build/models.py:294 order/models.py:129 part/models.py:969
+#: build/models.py:294 order/models.py:129 part/models.py:999
#: part/templates/part/part_base.html:313 templates/js/translated/order.js:1271
msgid "Creation Date"
msgstr "Opprettelsesdato"
@@ -804,268 +791,344 @@ msgid "Target date for build completion. Build will be overdue after this date."
msgstr "Forventet dato for ferdigstillelse. Build er forvalt etter denne datoen."
#: build/models.py:302 order/models.py:255
-#: templates/js/translated/build.js:1758
+#: templates/js/translated/build.js:1996
msgid "Completion Date"
msgstr "Fullført dato"
#: build/models.py:308
msgid "completed by"
-msgstr ""
+msgstr "fullført av"
-#: build/models.py:316 templates/js/translated/build.js:1729
+#: build/models.py:316 templates/js/translated/build.js:1967
msgid "Issued by"
-msgstr ""
+msgstr "Utstedt av"
#: build/models.py:317
msgid "User who issued this build order"
-msgstr ""
+msgstr "Brukeren som utstede denne prosjekt order"
-#: build/models.py:325 build/templates/build/build_base.html:185
+#: build/models.py:325 build/templates/build/build_base.html:190
#: build/templates/build/detail.html:116 order/models.py:143
#: order/templates/order/order_base.html:170
-#: order/templates/order/sales_order_base.html:182 part/models.py:973
+#: order/templates/order/sales_order_base.html:182 part/models.py:1003
#: report/templates/report/inventree_build_order_base.html:159
-#: templates/js/translated/build.js:1741 templates/js/translated/order.js:864
+#: templates/js/translated/build.js:1979 templates/js/translated/order.js:864
msgid "Responsible"
-msgstr ""
+msgstr "Ansvarlig"
#: build/models.py:326
msgid "User responsible for this build order"
-msgstr ""
+msgstr "Bruker ansvarlig for denne prosjekt order"
#: build/models.py:331 build/templates/build/detail.html:102
#: company/templates/company/manufacturer_part.html:102
#: company/templates/company/supplier_part.html:126
#: part/templates/part/part_base.html:354 stock/models.py:527
-#: stock/templates/stock/item_base.html:373
+#: stock/templates/stock/item_base.html:375
msgid "External Link"
-msgstr ""
+msgstr "Ekstern link"
-#: build/models.py:336 build/serializers.py:201
+#: build/models.py:336 build/serializers.py:380
#: build/templates/build/sidebar.html:21 company/models.py:142
#: company/models.py:577 company/templates/company/sidebar.html:25
#: order/models.py:147 order/models.py:814 order/models.py:1071
#: order/templates/order/po_sidebar.html:11
-#: order/templates/order/so_sidebar.html:17 part/models.py:958
-#: part/templates/part/detail.html:137 part/templates/part/part_sidebar.html:54
+#: order/templates/order/so_sidebar.html:17 part/models.py:988
+#: part/templates/part/detail.html:140 part/templates/part/part_sidebar.html:57
#: report/templates/report/inventree_build_order_base.html:173
-#: stock/forms.py:140 stock/forms.py:190 stock/forms.py:224 stock/models.py:599
+#: stock/forms.py:137 stock/forms.py:171 stock/models.py:599
#: stock/models.py:1895 stock/models.py:2001 stock/serializers.py:332
-#: stock/serializers.py:640 stock/serializers.py:738 stock/serializers.py:870
+#: stock/serializers.py:697 stock/serializers.py:795 stock/serializers.py:927
#: stock/templates/stock/stock_sidebar.html:25
-#: templates/js/translated/barcode.js:58 templates/js/translated/bom.js:723
+#: templates/js/translated/barcode.js:58 templates/js/translated/bom.js:936
#: templates/js/translated/company.js:845 templates/js/translated/order.js:1149
#: templates/js/translated/order.js:1445 templates/js/translated/order.js:2280
-#: templates/js/translated/stock.js:1317 templates/js/translated/stock.js:1803
+#: templates/js/translated/stock.js:1345 templates/js/translated/stock.js:1927
msgid "Notes"
-msgstr ""
+msgstr "Notater"
#: build/models.py:337
msgid "Extra build notes"
-msgstr ""
+msgstr "Ekstra prosjekt notater"
-#: build/models.py:717
+#: build/models.py:756
msgid "No build output specified"
-msgstr ""
+msgstr "Ingen prosjekt utgang"
-#: build/models.py:720
+#: build/models.py:759
msgid "Build output is already completed"
-msgstr ""
+msgstr "Prosjekt utdata er allerede utfylt"
-#: build/models.py:723
+#: build/models.py:762
msgid "Build output does not match Build Order"
-msgstr ""
+msgstr "Prosjekt utdata samsvarer ikke Prosjekt Order"
-#: build/models.py:1115
+#: build/models.py:1154
msgid "Build item must specify a build output, as master part is marked as trackable"
-msgstr ""
+msgstr "Prosjektvare må spesifisere en prosjekt utdata, siden hovedvaren er markert som sporbar"
-#: build/models.py:1124
+#: build/models.py:1163
#, python-brace-format
msgid "Allocated quantity ({q}) must not execed available stock quantity ({a})"
-msgstr ""
+msgstr "Tildelt antall ({q}) kan ikke overstige tilgjengelige lager mengde ({a})"
-#: build/models.py:1134
+#: build/models.py:1173
msgid "Stock item is over-allocated"
-msgstr ""
+msgstr "Lagervare er overtildelt"
-#: build/models.py:1140 order/models.py:1189
+#: build/models.py:1179 order/models.py:1189
msgid "Allocation quantity must be greater than zero"
-msgstr ""
+msgstr "Tildeling antallet må være større enn null"
-#: build/models.py:1146
+#: build/models.py:1185
msgid "Quantity must be 1 for serialized stock"
-msgstr ""
+msgstr "Mengden må væew 1 for serialisert lagervare"
-#: build/models.py:1203
+#: build/models.py:1242
msgid "Selected stock item not found in BOM"
-msgstr ""
+msgstr "Valgt lagevare ikke funnet i BOM"
-#: build/models.py:1263 stock/templates/stock/item_base.html:345
-#: templates/InvenTree/search.html:137 templates/js/translated/build.js:1660
+#: build/models.py:1302 stock/templates/stock/item_base.html:347
+#: templates/InvenTree/search.html:137 templates/js/translated/build.js:1898
#: templates/navbar.html:35
msgid "Build"
-msgstr ""
+msgstr "Prosjekt"
-#: build/models.py:1264
+#: build/models.py:1303
msgid "Build to allocate parts"
-msgstr ""
+msgstr "Bygge for å tildele deler"
-#: build/models.py:1280 build/serializers.py:388 order/serializers.py:696
-#: order/serializers.py:714 stock/serializers.py:578 stock/serializers.py:696
-#: stock/templates/stock/item_base.html:9
+#: build/models.py:1319 build/serializers.py:570 order/serializers.py:696
+#: order/serializers.py:714 stock/serializers.py:404 stock/serializers.py:635
+#: stock/serializers.py:753 stock/templates/stock/item_base.html:9
#: stock/templates/stock/item_base.html:23
-#: stock/templates/stock/item_base.html:367
-#: templates/js/translated/build.js:468 templates/js/translated/build.js:473
-#: templates/js/translated/build.js:1421 templates/js/translated/build.js:1803
+#: stock/templates/stock/item_base.html:369
+#: templates/js/translated/build.js:687 templates/js/translated/build.js:692
+#: templates/js/translated/build.js:1657 templates/js/translated/build.js:2041
#: 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:563 templates/js/translated/stock.js:728
-#: templates/js/translated/stock.js:2628
+#: templates/js/translated/stock.js:564 templates/js/translated/stock.js:729
+#: templates/js/translated/stock.js:2752
msgid "Stock Item"
-msgstr ""
+msgstr "Lagervare"
-#: build/models.py:1281
+#: build/models.py:1320
msgid "Source stock item"
-msgstr ""
+msgstr "Kilde lagervare"
-#: build/models.py:1294
+#: build/models.py:1332 build/serializers.py:188
+#: build/templates/build/build_base.html:82
+#: build/templates/build/detail.html:35 common/models.py:1275
+#: company/forms.py:42 company/templates/company/supplier_part.html:251
+#: order/models.py:805 order/models.py:1229 order/serializers.py:816
+#: order/templates/order/order_wizard/match_parts.html:30
+#: order/templates/order/order_wizard/select_parts.html:34 part/forms.py:144
+#: part/forms.py:160 part/forms.py:176 part/models.py:2705
+#: part/templates/part/detail.html:995 part/templates/part/detail.html:1081
+#: part/templates/part/part_pricing.html:16
+#: part/templates/part/upload_bom.html:53
+#: report/templates/report/inventree_build_order_base.html:114
+#: report/templates/report/inventree_po_report.html:91
+#: report/templates/report/inventree_so_report.html:91
+#: report/templates/report/inventree_test_report_base.html:81
+#: report/templates/report/inventree_test_report_base.html:139
+#: stock/forms.py:139 stock/serializers.py:293
+#: stock/templates/stock/item_base.html:183
+#: stock/templates/stock/item_base.html:264
+#: stock/templates/stock/item_base.html:272
+#: templates/js/translated/barcode.js:385 templates/js/translated/bom.js:780
+#: templates/js/translated/build.js:375 templates/js/translated/build.js:523
+#: templates/js/translated/build.js:714 templates/js/translated/build.js:911
+#: templates/js/translated/build.js:921 templates/js/translated/build.js:1297
+#: templates/js/translated/build.js:1658
+#: templates/js/translated/model_renderers.js:99
+#: templates/js/translated/order.js:101 templates/js/translated/order.js:1056
+#: 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:906
+#: templates/js/translated/part.js:1862 templates/js/translated/part.js:1985
+#: templates/js/translated/part.js:2063 templates/js/translated/stock.js:392
+#: templates/js/translated/stock.js:589 templates/js/translated/stock.js:759
+#: templates/js/translated/stock.js:2801 templates/js/translated/stock.js:2903
+msgid "Quantity"
+msgstr "Antall"
+
+#: build/models.py:1333
msgid "Stock quantity to allocate to build"
msgstr ""
-#: build/models.py:1302
+#: build/models.py:1341
msgid "Install into"
-msgstr ""
+msgstr "Installerings informasjon"
-#: build/models.py:1303
+#: build/models.py:1342
msgid "Destination stock item"
-msgstr ""
+msgstr "Målets lagervare"
-#: build/serializers.py:137 build/serializers.py:417
+#: build/serializers.py:138 build/serializers.py:599
msgid "Build Output"
msgstr ""
-#: build/serializers.py:146
+#: build/serializers.py:150
msgid "Build output does not match the parent build"
msgstr ""
-#: build/serializers.py:150
+#: build/serializers.py:154
msgid "Output part does not match BuildOrder part"
msgstr ""
-#: build/serializers.py:154
+#: build/serializers.py:158
msgid "This build output has already been completed"
msgstr ""
-#: build/serializers.py:158
+#: build/serializers.py:164
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:731
-#: stock/serializers.py:972 stock/templates/stock/item_base.html:313
-#: templates/js/translated/barcode.js:384
-#: templates/js/translated/barcode.js:557 templates/js/translated/build.js:480
-#: templates/js/translated/build.js:1087 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:179 templates/js/translated/stock.js:564
-#: templates/js/translated/stock.js:729 templates/js/translated/stock.js:936
-#: templates/js/translated/stock.js:1684 templates/js/translated/stock.js:2569
-msgid "Location"
+#: build/serializers.py:189
+msgid "Enter quantity for build output"
+msgstr "Angi antall for build utgang"
+
+#: build/serializers.py:201 build/serializers.py:590 order/models.py:280
+#: order/serializers.py:240 part/serializers.py:471 part/serializers.py:827
+#: stock/models.py:367 stock/models.py:1105 stock/serializers.py:305
+msgid "Quantity must be greater than zero"
+msgstr "Mengden må være større enn null"
+
+#: build/serializers.py:208
+msgid "Integer quantity required for trackable parts"
msgstr ""
-#: build/serializers.py:191
-msgid "Location for completed build outputs"
+#: build/serializers.py:211
+msgid "Integer quantity required, as the bill of materials contains trackable parts"
msgstr ""
-#: build/serializers.py:197 build/templates/build/build_base.html:137
-#: build/templates/build/detail.html:63 order/models.py:557
-#: order/serializers.py:247 stock/templates/stock/item_base.html:187
-#: templates/js/translated/barcode.js:140 templates/js/translated/build.js:1716
-#: templates/js/translated/order.js:591 templates/js/translated/order.js:840
-#: templates/js/translated/order.js:1263 templates/js/translated/stock.js:1659
-#: templates/js/translated/stock.js:2646 templates/js/translated/stock.js:2795
-msgid "Status"
+#: build/serializers.py:225 order/serializers.py:820 stock/forms.py:78
+#: stock/serializers.py:314 templates/js/translated/stock.js:239
+#: templates/js/translated/stock.js:393
+msgid "Serial Numbers"
+msgstr "Serienummer"
+
+#: build/serializers.py:226
+msgid "Enter serial numbers for build outputs"
+msgstr "Angi serienummer for bygge-utganger"
+
+#: build/serializers.py:239
+msgid "Auto Allocate Serial Numbers"
msgstr ""
-#: build/serializers.py:213
+#: build/serializers.py:240
+msgid "Automatically allocate required items with matching serial numbers"
+msgstr ""
+
+#: build/serializers.py:274 stock/api.py:551
+msgid "The following serial numbers already exist"
+msgstr ""
+
+#: build/serializers.py:327 build/serializers.py:392
msgid "A list of build outputs must be provided"
msgstr ""
-#: build/serializers.py:249
+#: build/serializers.py:369 order/serializers.py:226 order/serializers.py:294
+#: stock/forms.py:169 stock/serializers.py:325 stock/serializers.py:788
+#: stock/serializers.py:1029 stock/templates/stock/item_base.html:315
+#: templates/js/translated/barcode.js:384
+#: templates/js/translated/barcode.js:557 templates/js/translated/build.js:699
+#: templates/js/translated/build.js:1309 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:179 templates/js/translated/stock.js:565
+#: templates/js/translated/stock.js:730 templates/js/translated/stock.js:937
+#: templates/js/translated/stock.js:1808 templates/js/translated/stock.js:2693
+msgid "Location"
+msgstr "Beliggenhet"
+
+#: build/serializers.py:370
+msgid "Location for completed build outputs"
+msgstr ""
+
+#: build/serializers.py:376 build/templates/build/build_base.html:142
+#: build/templates/build/detail.html:63 order/models.py:557
+#: order/serializers.py:247 stock/templates/stock/item_base.html:189
+#: templates/js/translated/barcode.js:140 templates/js/translated/build.js:1954
+#: templates/js/translated/order.js:591 templates/js/translated/order.js:840
+#: templates/js/translated/order.js:1263 templates/js/translated/stock.js:1783
+#: templates/js/translated/stock.js:2770 templates/js/translated/stock.js:2919
+msgid "Status"
+msgstr "Status"
+
+#: build/serializers.py:428
msgid "Accept Unallocated"
msgstr ""
-#: build/serializers.py:250
+#: build/serializers.py:429
msgid "Accept that stock items have not been fully allocated to this build order"
msgstr ""
-#: build/serializers.py:260 templates/js/translated/build.js:149
+#: build/serializers.py:439 templates/js/translated/build.js:150
msgid "Required stock has not been fully allocated"
-msgstr ""
+msgstr "Påkrevd varer er ikke fullt tildelt"
-#: build/serializers.py:265
+#: build/serializers.py:444
msgid "Accept Incomplete"
msgstr ""
-#: build/serializers.py:266
+#: build/serializers.py:445
msgid "Accept that the required number of build outputs have not been completed"
msgstr ""
-#: build/serializers.py:276 templates/js/translated/build.js:153
+#: build/serializers.py:455 templates/js/translated/build.js:154
msgid "Required build quantity has not been completed"
msgstr ""
-#: build/serializers.py:285
+#: build/serializers.py:464
msgid "Build order has incomplete outputs"
msgstr ""
-#: build/serializers.py:313 build/serializers.py:362 part/models.py:2760
-#: part/models.py:2919
-msgid "BOM Item"
+#: build/serializers.py:467 build/templates/build/build_base.html:95
+msgid "No build outputs have been created for this build order"
msgstr ""
-#: build/serializers.py:323
+#: build/serializers.py:495 build/serializers.py:544 part/models.py:2829
+#: part/models.py:2988
+msgid "BOM Item"
+msgstr "BOM varer"
+
+#: build/serializers.py:505
msgid "Build output"
msgstr ""
-#: build/serializers.py:332
+#: build/serializers.py:514
msgid "Build output must point to the same build"
msgstr ""
-#: build/serializers.py:379
+#: build/serializers.py:561
msgid "bom_item.part must point to the same part as the build order"
msgstr ""
-#: build/serializers.py:394 stock/serializers.py:585
+#: build/serializers.py:576 stock/serializers.py:642
msgid "Item must be in stock"
-msgstr ""
+msgstr "Varen må være på lager"
-#: build/serializers.py:408 order/models.py:280 order/serializers.py:240
-#: stock/models.py:367 stock/models.py:1105 stock/serializers.py:305
-msgid "Quantity must be greater than zero"
-msgstr ""
-
-#: build/serializers.py:450 order/serializers.py:747
+#: build/serializers.py:632 order/serializers.py:747
#, python-brace-format
msgid "Available quantity ({q}) exceeded"
-msgstr ""
+msgstr "Tilgjengelig mengde ({q}) overskredet"
-#: build/serializers.py:456
+#: build/serializers.py:638
msgid "Build output must be specified for allocation of tracked parts"
msgstr ""
-#: build/serializers.py:463
+#: build/serializers.py:645
msgid "Build output cannot be specified for allocation of untracked parts"
msgstr ""
-#: build/serializers.py:491 order/serializers.py:990
+#: build/serializers.py:673 order/serializers.py:990
msgid "Allocation items must be provided"
msgstr ""
-#: build/tasks.py:92
+#: build/tasks.py:98
msgid "Stock required for build order"
msgstr ""
@@ -1088,7 +1151,7 @@ msgid "Edit Build"
msgstr ""
#: build/templates/build/build_base.html:56
-#: build/templates/build/build_base.html:215 build/views.py:56
+#: build/templates/build/build_base.html:220 build/views.py:53
msgid "Cancel Build"
msgstr ""
@@ -1105,113 +1168,93 @@ msgstr ""
msgid "Build Description"
msgstr ""
-#: build/templates/build/build_base.html:96
+#: build/templates/build/build_base.html:101
#, python-format
msgid "This Build Order is allocated to Sales Order %(link)s"
msgstr ""
-#: build/templates/build/build_base.html:103
+#: build/templates/build/build_base.html:108
#, python-format
msgid "This Build Order is a child of Build Order %(link)s"
msgstr ""
-#: build/templates/build/build_base.html:110
+#: build/templates/build/build_base.html:115
msgid "Build Order is ready to mark as completed"
msgstr ""
-#: build/templates/build/build_base.html:115
+#: build/templates/build/build_base.html:120
msgid "Build Order cannot be completed as outstanding outputs remain"
msgstr ""
-#: build/templates/build/build_base.html:120
+#: build/templates/build/build_base.html:125
msgid "Required build quantity has not yet been completed"
msgstr ""
-#: build/templates/build/build_base.html:125
+#: build/templates/build/build_base.html:130
msgid "Stock has not been fully allocated to this Build Order"
msgstr ""
-#: build/templates/build/build_base.html:146
+#: build/templates/build/build_base.html:151
#: build/templates/build/detail.html:132
#: order/templates/order/order_base.html:156
#: order/templates/order/sales_order_base.html:163
#: report/templates/report/inventree_build_order_base.html:126
-#: templates/js/translated/build.js:1753 templates/js/translated/order.js:854
+#: templates/js/translated/build.js:1991 templates/js/translated/order.js:854
#: templates/js/translated/order.js:1276
msgid "Target Date"
-msgstr ""
+msgstr "Måldato"
-#: build/templates/build/build_base.html:151
+#: build/templates/build/build_base.html:156
#, python-format
msgid "This build was due on %(target)s"
msgstr ""
-#: build/templates/build/build_base.html:151
-#: build/templates/build/build_base.html:196
+#: build/templates/build/build_base.html:156
+#: build/templates/build/build_base.html:201
#: order/templates/order/order_base.html:98
#: order/templates/order/sales_order_base.html:93
-#: templates/js/translated/table_filters.js:299
-#: templates/js/translated/table_filters.js:340
-#: templates/js/translated/table_filters.js:361
+#: templates/js/translated/table_filters.js:294
+#: templates/js/translated/table_filters.js:335
+#: templates/js/translated/table_filters.js:356
msgid "Overdue"
msgstr ""
-#: build/templates/build/build_base.html:158
+#: build/templates/build/build_base.html:163
#: build/templates/build/detail.html:68 build/templates/build/detail.html:143
#: order/templates/order/sales_order_base.html:170
-#: templates/js/translated/build.js:1702
-#: templates/js/translated/table_filters.js:370
+#: templates/js/translated/build.js:1940
+#: templates/js/translated/table_filters.js:365
msgid "Completed"
-msgstr ""
+msgstr "Fullført"
-#: build/templates/build/build_base.html:171
+#: build/templates/build/build_base.html:176
#: build/templates/build/detail.html:95 order/models.py:947
#: order/models.py:1043 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:307
-#: templates/js/translated/order.js:1218 templates/js/translated/stock.js:2304
+#: stock/templates/stock/item_base.html:309
+#: templates/js/translated/order.js:1218 templates/js/translated/stock.js:2428
msgid "Sales Order"
-msgstr ""
+msgstr "Salgsorder"
-#: build/templates/build/build_base.html:178
+#: build/templates/build/build_base.html:183
#: build/templates/build/detail.html:109
#: report/templates/report/inventree_build_order_base.html:153
msgid "Issued By"
-msgstr ""
+msgstr "Utstedt av"
-#: build/templates/build/build_base.html:223
+#: build/templates/build/build_base.html:228
msgid "Incomplete Outputs"
msgstr ""
-#: build/templates/build/build_base.html:224
+#: build/templates/build/build_base.html:229
msgid "Build Order cannot be completed as incomplete build outputs remain"
msgstr ""
-#: build/templates/build/build_output_create.html:7
-msgid "The Bill of Materials contains trackable parts"
-msgstr ""
-
-#: build/templates/build/build_output_create.html:8
-msgid "Build outputs must be generated individually."
-msgstr ""
-
-#: build/templates/build/build_output_create.html:9
-msgid "Multiple build outputs will be created based on the quantity specified."
-msgstr ""
-
-#: build/templates/build/build_output_create.html:15
-msgid "Trackable parts can have serial numbers specified"
-msgstr ""
-
-#: build/templates/build/build_output_create.html:16
-msgid "Enter serial numbers to generate multiple single build outputs"
-msgstr ""
-
#: build/templates/build/cancel.html:5
msgid "Are you sure you wish to cancel this build?"
-msgstr ""
+msgstr "Er du sikker du vil kansellere?"
#: build/templates/build/detail.html:16
msgid "Build Details"
@@ -1219,28 +1262,28 @@ msgstr ""
#: build/templates/build/detail.html:39
msgid "Stock Source"
-msgstr ""
+msgstr "Lager kilde"
#: build/templates/build/detail.html:44
msgid "Stock can be taken from any available location."
-msgstr ""
+msgstr "Lagervare kan hentes fra alle tilgengelige steder."
-#: build/templates/build/detail.html:50 order/models.py:898 stock/forms.py:136
+#: build/templates/build/detail.html:50 order/models.py:898 stock/forms.py:133
#: templates/js/translated/order.js:592 templates/js/translated/order.js:1138
msgid "Destination"
-msgstr ""
+msgstr "Destinasjon"
#: build/templates/build/detail.html:57
msgid "Destination location not specified"
-msgstr ""
+msgstr "Målplassering er ikke spesifisert"
-#: build/templates/build/detail.html:74 templates/js/translated/build.js:707
+#: build/templates/build/detail.html:74 templates/js/translated/build.js:929
msgid "Allocated Parts"
-msgstr ""
+msgstr "Tildelte deler"
#: build/templates/build/detail.html:81
-#: stock/templates/stock/item_base.html:331
-#: templates/js/translated/stock.js:1673 templates/js/translated/stock.js:2802
+#: stock/templates/stock/item_base.html:333
+#: templates/js/translated/stock.js:1797 templates/js/translated/stock.js:2926
#: templates/js/translated/table_filters.js:151
#: templates/js/translated/table_filters.js:238
msgid "Batch"
@@ -1249,13 +1292,13 @@ msgstr ""
#: build/templates/build/detail.html:127
#: order/templates/order/order_base.html:143
#: order/templates/order/sales_order_base.html:157
-#: templates/js/translated/build.js:1724
+#: templates/js/translated/build.js:1962
msgid "Created"
-msgstr ""
+msgstr "Opprettet"
#: build/templates/build/detail.html:138
msgid "No target date set"
-msgstr ""
+msgstr "Ingen måldato satt"
#: build/templates/build/detail.html:147
msgid "Build not complete"
@@ -1269,13 +1312,13 @@ msgstr ""
msgid "Allocate Stock to Build"
msgstr ""
-#: build/templates/build/detail.html:177 templates/js/translated/build.js:1262
+#: build/templates/build/detail.html:177 templates/js/translated/build.js:1484
msgid "Unallocate stock"
-msgstr ""
+msgstr "Fjern lager allokering"
#: build/templates/build/detail.html:178
msgid "Unallocate Stock"
-msgstr ""
+msgstr "Fjern lager allokering"
#: build/templates/build/detail.html:180
msgid "Allocate stock to build"
@@ -1283,18 +1326,18 @@ msgstr ""
#: build/templates/build/detail.html:181 build/templates/build/sidebar.html:8
msgid "Allocate Stock"
-msgstr ""
+msgstr "Tildele lager"
#: build/templates/build/detail.html:184
msgid "Order required parts"
-msgstr ""
+msgstr "Bestill nødvendige deler"
#: 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:177
msgid "Order Parts"
-msgstr ""
+msgstr "Bestill deler"
#: build/templates/build/detail.html:197
msgid "Untracked stock has been fully allocated for this Build Order"
@@ -1306,7 +1349,7 @@ msgstr ""
#: build/templates/build/detail.html:208
msgid "Allocate selected items"
-msgstr ""
+msgstr "Tildel valgte varer"
#: build/templates/build/detail.html:218
msgid "This Build Order does not have any associated untracked BOM items"
@@ -1329,52 +1372,60 @@ msgid "Output Actions"
msgstr ""
#: build/templates/build/detail.html:250
-msgid "Complete selected items"
+msgid "Complete selected build outputs"
msgstr ""
#: build/templates/build/detail.html:251
msgid "Complete outputs"
msgstr ""
-#: build/templates/build/detail.html:266
+#: build/templates/build/detail.html:253
+msgid "Delete selected build outputs"
+msgstr ""
+
+#: build/templates/build/detail.html:254
+msgid "Delete outputs"
+msgstr ""
+
+#: build/templates/build/detail.html:270
msgid "Completed Build Outputs"
msgstr ""
-#: build/templates/build/detail.html:278 build/templates/build/sidebar.html:19
+#: build/templates/build/detail.html:282 build/templates/build/sidebar.html:19
#: order/templates/order/po_sidebar.html:9
#: order/templates/order/purchase_order_detail.html:60
#: order/templates/order/sales_order_detail.html:107
-#: order/templates/order/so_sidebar.html:15 part/templates/part/detail.html:213
-#: part/templates/part/part_sidebar.html:52 stock/templates/stock/item.html:112
+#: order/templates/order/so_sidebar.html:15 part/templates/part/detail.html:216
+#: part/templates/part/part_sidebar.html:55 stock/templates/stock/item.html:112
#: stock/templates/stock/stock_sidebar.html:23
msgid "Attachments"
-msgstr ""
+msgstr "Vedlegg"
-#: build/templates/build/detail.html:294
+#: build/templates/build/detail.html:298
msgid "Build Notes"
msgstr ""
-#: build/templates/build/detail.html:298 build/templates/build/detail.html:453
+#: build/templates/build/detail.html:302 build/templates/build/detail.html:478
#: company/templates/company/detail.html:188
#: company/templates/company/detail.html:215
#: order/templates/order/purchase_order_detail.html:80
#: order/templates/order/purchase_order_detail.html:108
#: order/templates/order/sales_order_detail.html:127
#: order/templates/order/sales_order_detail.html:186
-#: part/templates/part/detail.html:141 stock/templates/stock/item.html:132
-#: stock/templates/stock/item.html:235
+#: part/templates/part/detail.html:144 stock/templates/stock/item.html:132
+#: stock/templates/stock/item.html:230
msgid "Edit Notes"
-msgstr ""
+msgstr "Rediger notater"
-#: build/templates/build/detail.html:477
+#: build/templates/build/detail.html:502
msgid "Allocation Complete"
-msgstr ""
+msgstr "Tildeling fullført"
-#: build/templates/build/detail.html:478
+#: build/templates/build/detail.html:503
msgid "All untracked stock items have been allocated"
-msgstr ""
+msgstr "Alle usporbar lagervarer har tildelt"
-#: build/templates/build/index.html:18 part/templates/part/detail.html:320
+#: build/templates/build/index.html:18 part/templates/part/detail.html:323
msgid "New Build Order"
msgstr ""
@@ -1386,13 +1437,13 @@ msgstr ""
#: order/templates/order/purchase_orders.html:34
#: order/templates/order/sales_orders.html:37
msgid "Display calendar view"
-msgstr ""
+msgstr "Vis kalender"
#: build/templates/build/index.html:47
#: order/templates/order/purchase_orders.html:37
#: order/templates/order/sales_orders.html:40
msgid "Display list view"
-msgstr ""
+msgstr "Vis liste"
#: build/templates/build/sidebar.html:5
msgid "Build Order Details"
@@ -1400,87 +1451,47 @@ msgstr ""
#: build/templates/build/sidebar.html:12
msgid "Pending Items"
-msgstr ""
+msgstr "Ventende elementer"
#: build/templates/build/sidebar.html:15
msgid "Completed Items"
-msgstr ""
+msgstr "Fullført elementer"
-#: build/views.py:76
+#: build/views.py:73
msgid "Build was cancelled"
msgstr ""
-#: build/views.py:88
-msgid "Create Build Output"
-msgstr ""
-
-#: build/views.py:106
-msgid "Maximum output quantity is "
-msgstr ""
-
-#: build/views.py:122 stock/serializers.py:363 stock/views.py:1257
-msgid "Serial numbers already exist"
-msgstr ""
-
-#: build/views.py:131
-msgid "Serial numbers required for trackable build output"
-msgstr ""
-
-#: build/views.py:197
-msgid "Delete Build Output"
-msgstr ""
-
-#: build/views.py:218
-msgid "Confirm unallocation of build stock"
-msgstr ""
-
-#: build/views.py:219 stock/views.py:352
-msgid "Check the confirmation box"
-msgstr ""
-
-#: build/views.py:231
-msgid "Build output does not match build"
-msgstr ""
-
-#: build/views.py:233
-msgid "Build output must be specified"
-msgstr ""
-
-#: build/views.py:245
-msgid "Build output deleted"
-msgstr ""
-
-#: build/views.py:286
+#: build/views.py:114
msgid "Delete Build Order"
msgstr ""
#: common/files.py:65
msgid "Unsupported file format: {ext.upper()}"
-msgstr ""
+msgstr "Filformatet støttes ikke: {ext.upper()}"
#: common/files.py:67
msgid "Error reading file (invalid encoding)"
-msgstr ""
+msgstr "Feil under lesing av fil (ugyldig koding)"
#: common/files.py:72
msgid "Error reading file (invalid format)"
-msgstr ""
+msgstr "Feil under lesing av fil (ugyldig format)"
#: common/files.py:74
msgid "Error reading file (incorrect dimension)"
-msgstr ""
+msgstr "Feil under lesing av fil (feil dimensjon)"
#: common/files.py:76
msgid "Error reading file (data could be corrupted)"
-msgstr ""
+msgstr "Feil under lesing av fil (data kan være skadet)"
#: common/forms.py:34
msgid "File"
-msgstr ""
+msgstr "Fil"
#: common/forms.py:35
msgid "Select file to upload"
-msgstr ""
+msgstr "Velg fil å laste opp"
#: common/forms.py:50
msgid "{name.title()} File"
@@ -1489,11 +1500,11 @@ msgstr ""
#: common/forms.py:51
#, python-brace-format
msgid "Select {name} file to upload"
-msgstr ""
+msgstr "Velg {name} fil som skal lastes opp"
#: common/models.py:352
msgid "Settings key (must be unique - case insensitive)"
-msgstr ""
+msgstr "Innstillingsnøkkel (må være unik - ufølsom for store of små bokstaver)"
#: common/models.py:354
msgid "Settings value"
@@ -1501,11 +1512,11 @@ msgstr ""
#: common/models.py:388
msgid "Chosen value is not a valid option"
-msgstr ""
+msgstr "Valgt verdi er ikke et gyldig alternativ"
#: common/models.py:408
msgid "Value must be a boolean value"
-msgstr ""
+msgstr "Verdien må være en boolsk verdi"
#: common/models.py:419
msgid "Value must be an integer value"
@@ -1517,15 +1528,15 @@ msgstr ""
#: common/models.py:561
msgid "No group"
-msgstr ""
+msgstr "Ingen gruppe"
#: common/models.py:603
msgid "Restart required"
-msgstr ""
+msgstr "Omstart påkrevd"
#: common/models.py:604
msgid "A setting has been changed which requires a server restart"
-msgstr ""
+msgstr "En innstilling har blitt endrett som krever en serveromstart"
#: common/models.py:611
msgid "InvenTree Instance Name"
@@ -1545,11 +1556,11 @@ msgstr ""
#: common/models.py:624 company/models.py:100 company/models.py:101
msgid "Company name"
-msgstr ""
+msgstr "Firmanavn"
#: common/models.py:625
msgid "Internal company name"
-msgstr ""
+msgstr "Internt firmanavn"
#: common/models.py:630
msgid "Base URL"
@@ -1561,27 +1572,27 @@ msgstr ""
#: common/models.py:637
msgid "Default Currency"
-msgstr ""
+msgstr "Standardvaluta"
#: common/models.py:638
msgid "Default currency"
-msgstr ""
+msgstr "Standardvaluta"
#: common/models.py:644
msgid "Download from URL"
-msgstr ""
+msgstr "Last ned fra URL"
#: common/models.py:645
msgid "Allow download of remote images and files from external URL"
-msgstr ""
+msgstr "Tilat nedlastning av eksterne bilder og filer fra ekstern URL"
#: common/models.py:651 templates/InvenTree/settings/sidebar.html:31
msgid "Barcode Support"
-msgstr ""
+msgstr "Strekkode støtte"
#: common/models.py:652
msgid "Enable barcode scanner support"
-msgstr ""
+msgstr "Aktiver skrekkodeleser støtte"
#: common/models.py:658
msgid "IPN Regex"
@@ -1593,19 +1604,19 @@ msgstr ""
#: common/models.py:663
msgid "Allow Duplicate IPN"
-msgstr ""
+msgstr "Tilat duplisert IPN"
#: common/models.py:664
msgid "Allow multiple parts to share the same IPN"
-msgstr ""
+msgstr "Tillat flere deler å dele samme IPN"
#: common/models.py:670
msgid "Allow Editing IPN"
-msgstr ""
+msgstr "Tillat redigering av IPN"
#: common/models.py:671
msgid "Allow changing the IPN value while editing a part"
-msgstr ""
+msgstr "Tillat å endre IPN-verdien mens du redigerer en del"
#: common/models.py:677
msgid "Copy Part BOM Data"
@@ -1629,7 +1640,7 @@ msgstr ""
#: common/models.py:692
msgid "Copy test data by default when duplicating a part"
-msgstr ""
+msgstr "Kopier testdata som standard ved duplisering av en del"
#: common/models.py:698
msgid "Copy Category Parameter Templates"
@@ -1637,90 +1648,90 @@ msgstr ""
#: common/models.py:699
msgid "Copy category parameter templates when creating a part"
-msgstr ""
+msgstr "Kopier kategori parametermaler ved oppretting av en del"
-#: common/models.py:705 part/models.py:2489 report/models.py:187
+#: common/models.py:705 part/models.py:2525 report/models.py:187
#: templates/js/translated/table_filters.js:38
-#: templates/js/translated/table_filters.js:422
+#: templates/js/translated/table_filters.js:417
msgid "Template"
-msgstr ""
+msgstr "Mal"
#: common/models.py:706
msgid "Parts are templates by default"
-msgstr ""
+msgstr "Deler er maler som standard"
-#: common/models.py:712 part/models.py:921 templates/js/translated/bom.js:1082
+#: common/models.py:712 part/models.py:951 templates/js/translated/bom.js:1300
#: templates/js/translated/table_filters.js:168
-#: templates/js/translated/table_filters.js:434
+#: templates/js/translated/table_filters.js:429
msgid "Assembly"
-msgstr ""
+msgstr "Montering"
#: common/models.py:713
msgid "Parts can be assembled from other components by default"
-msgstr ""
+msgstr "Deler kan settes sammen fra andre komponenter som standard"
-#: common/models.py:719 part/models.py:927
-#: templates/js/translated/table_filters.js:438
+#: common/models.py:719 part/models.py:957
+#: templates/js/translated/table_filters.js:433
msgid "Component"
-msgstr ""
+msgstr "Komponent"
#: common/models.py:720
msgid "Parts can be used as sub-components by default"
-msgstr ""
+msgstr "Deler kan bli brukt som underkomponenter som standard"
-#: common/models.py:726 part/models.py:938
+#: common/models.py:726 part/models.py:968
msgid "Purchaseable"
-msgstr ""
+msgstr "Kjøpbar"
#: common/models.py:727
msgid "Parts are purchaseable by default"
-msgstr ""
+msgstr "Deler er kjøpbare som standard"
-#: common/models.py:733 part/models.py:943
-#: templates/js/translated/table_filters.js:446
+#: common/models.py:733 part/models.py:973
+#: templates/js/translated/table_filters.js:441
msgid "Salable"
-msgstr ""
+msgstr "Salgbar"
#: common/models.py:734
msgid "Parts are salable by default"
-msgstr ""
+msgstr "Deler er salgbare som standard"
-#: common/models.py:740 part/models.py:933
+#: common/models.py:740 part/models.py:963
#: templates/js/translated/table_filters.js:46
#: templates/js/translated/table_filters.js:100
-#: templates/js/translated/table_filters.js:450
+#: templates/js/translated/table_filters.js:445
msgid "Trackable"
-msgstr ""
+msgstr "Sporbar"
#: common/models.py:741
msgid "Parts are trackable by default"
-msgstr ""
+msgstr "Deler er sporbare som standard"
-#: common/models.py:747 part/models.py:953
+#: common/models.py:747 part/models.py:983
#: part/templates/part/part_base.html:147
#: templates/js/translated/table_filters.js:42
msgid "Virtual"
-msgstr ""
+msgstr "Virtuelle"
#: common/models.py:748
msgid "Parts are virtual by default"
-msgstr ""
+msgstr "Deler er virtuelle som standard"
#: common/models.py:754
msgid "Show Import in Views"
-msgstr ""
+msgstr "Vis import i visninger"
#: common/models.py:755
msgid "Display the import wizard in some part views"
-msgstr ""
+msgstr "Vis importveiviseren i noen deler visninger"
#: common/models.py:761
msgid "Show Price in Forms"
-msgstr ""
+msgstr "Vis pris i skjemaer"
#: common/models.py:762
msgid "Display part price in some forms"
-msgstr ""
+msgstr "Vis delpris i noen skjemaer"
#: common/models.py:773
msgid "Show Price in BOM"
@@ -1730,595 +1741,601 @@ msgstr ""
msgid "Include pricing information in BOM tables"
msgstr ""
-#: common/models.py:780
+#: common/models.py:785
+msgid "Show Price History"
+msgstr ""
+
+#: common/models.py:786
+msgid "Display historical pricing for Part"
+msgstr ""
+
+#: common/models.py:792
msgid "Show related parts"
msgstr ""
-#: common/models.py:781
+#: common/models.py:793
msgid "Display related parts for a part"
msgstr ""
-#: common/models.py:787
+#: common/models.py:799
msgid "Create initial stock"
msgstr ""
-#: common/models.py:788
+#: common/models.py:800
msgid "Create initial stock on part creation"
msgstr ""
-#: common/models.py:794
+#: common/models.py:806
msgid "Internal Prices"
msgstr ""
-#: common/models.py:795
+#: common/models.py:807
msgid "Enable internal prices for parts"
msgstr ""
-#: common/models.py:801
+#: common/models.py:813
msgid "Internal Price as BOM-Price"
msgstr ""
-#: common/models.py:802
+#: common/models.py:814
msgid "Use the internal price (if set) in BOM-price calculations"
msgstr ""
-#: common/models.py:808
+#: common/models.py:820
msgid "Part Name Display Format"
msgstr ""
-#: common/models.py:809
+#: common/models.py:821
msgid "Format to display the part name"
msgstr ""
-#: common/models.py:816
+#: common/models.py:828
msgid "Enable Reports"
msgstr ""
-#: common/models.py:817
+#: common/models.py:829
msgid "Enable generation of reports"
msgstr ""
-#: common/models.py:823 templates/stats.html:25
+#: common/models.py:835 templates/stats.html:25
msgid "Debug Mode"
msgstr ""
-#: common/models.py:824
+#: common/models.py:836
msgid "Generate reports in debug mode (HTML output)"
msgstr ""
-#: common/models.py:830
+#: common/models.py:842
msgid "Page Size"
msgstr ""
-#: common/models.py:831
+#: common/models.py:843
msgid "Default page size for PDF reports"
msgstr ""
-#: common/models.py:841
+#: common/models.py:853
msgid "Test Reports"
msgstr ""
-#: common/models.py:842
+#: common/models.py:854
msgid "Enable generation of test reports"
msgstr ""
-#: common/models.py:848
+#: common/models.py:860
msgid "Stock Expiry"
msgstr ""
-#: common/models.py:849
+#: common/models.py:861
msgid "Enable stock expiry functionality"
msgstr ""
-#: common/models.py:855
+#: common/models.py:867
msgid "Sell Expired Stock"
msgstr ""
-#: common/models.py:856
+#: common/models.py:868
msgid "Allow sale of expired stock"
msgstr ""
-#: common/models.py:862
+#: common/models.py:874
msgid "Stock Stale Time"
msgstr ""
-#: common/models.py:863
+#: common/models.py:875
msgid "Number of days stock items are considered stale before expiring"
msgstr ""
-#: common/models.py:865
+#: common/models.py:877
msgid "days"
msgstr ""
-#: common/models.py:870
+#: common/models.py:882
msgid "Build Expired Stock"
msgstr ""
-#: common/models.py:871
+#: common/models.py:883
msgid "Allow building with expired stock"
msgstr ""
-#: common/models.py:877
+#: common/models.py:889
msgid "Stock Ownership Control"
msgstr ""
-#: common/models.py:878
+#: common/models.py:890
msgid "Enable ownership control over stock locations and items"
msgstr ""
-#: common/models.py:884
+#: common/models.py:896
msgid "Build Order Reference Prefix"
msgstr ""
-#: common/models.py:885
+#: common/models.py:897
msgid "Prefix value for build order reference"
msgstr ""
-#: common/models.py:890
+#: common/models.py:902
msgid "Build Order Reference Regex"
msgstr ""
-#: common/models.py:891
+#: common/models.py:903
msgid "Regular expression pattern for matching build order reference"
msgstr ""
-#: common/models.py:895
+#: common/models.py:907
msgid "Sales Order Reference Prefix"
-msgstr ""
-
-#: common/models.py:896
-msgid "Prefix value for sales order reference"
-msgstr ""
-
-#: common/models.py:901
-msgid "Purchase Order Reference Prefix"
-msgstr ""
-
-#: common/models.py:902
-msgid "Prefix value for purchase order reference"
-msgstr ""
+msgstr "Salgsorder referanse prefiks"
#: common/models.py:908
-msgid "Enable password forgot"
-msgstr ""
+msgid "Prefix value for sales order reference"
+msgstr "Prefiks verdi for salgsorder referanse"
-#: common/models.py:909
-msgid "Enable password forgot function on the login pages"
-msgstr ""
+#: common/models.py:913
+msgid "Purchase Order Reference Prefix"
+msgstr "Salgsorder referanse prefiks"
#: common/models.py:914
-msgid "Enable registration"
-msgstr ""
-
-#: common/models.py:915
-msgid "Enable self-registration for users on the login pages"
-msgstr ""
+msgid "Prefix value for purchase order reference"
+msgstr "Prefiks verdi for salgsorder referanse"
#: common/models.py:920
-msgid "Enable SSO"
-msgstr ""
+msgid "Enable password forgot"
+msgstr "Aktiver passord glemt"
#: common/models.py:921
-msgid "Enable SSO on the login pages"
-msgstr ""
+msgid "Enable password forgot function on the login pages"
+msgstr "Ativer funskjon for glemt passord på innloggingssidene"
#: common/models.py:926
-msgid "Email required"
-msgstr ""
+msgid "Enable registration"
+msgstr "Aktiver registrering"
#: common/models.py:927
-msgid "Require user to supply mail on signup"
-msgstr ""
+msgid "Enable self-registration for users on the login pages"
+msgstr "Aktiver egenregistrerting for brukerer på påloggingssidene"
#: common/models.py:932
-msgid "Auto-fill SSO users"
-msgstr ""
+msgid "Enable SSO"
+msgstr "Aktiver SSO"
#: common/models.py:933
-msgid "Automatically fill out user-details from SSO account-data"
-msgstr ""
+msgid "Enable SSO on the login pages"
+msgstr "Aktiver SSO på innloggingssidene"
#: common/models.py:938
-msgid "Mail twice"
-msgstr ""
+msgid "Email required"
+msgstr "E-postadresse kreves"
#: common/models.py:939
-msgid "On signup ask users twice for their mail"
-msgstr ""
+msgid "Require user to supply mail on signup"
+msgstr "Krevt at brukeren angi e-post ved registrering"
#: common/models.py:944
-msgid "Password twice"
-msgstr ""
+msgid "Auto-fill SSO users"
+msgstr "Auto-utfyll SSO brukere"
#: common/models.py:945
-msgid "On signup ask users twice for their password"
-msgstr ""
+msgid "Automatically fill out user-details from SSO account-data"
+msgstr "Fyll automatisk ut brukeropplysninger fra SSO kontodata"
#: common/models.py:950
+msgid "Mail twice"
+msgstr "E-post to ganger"
+
+#: common/models.py:951
+msgid "On signup ask users twice for their mail"
+msgstr "Ved registrering spør brukere to ganger for e-posten"
+
+#: common/models.py:956
+msgid "Password twice"
+msgstr "Passord to ganger"
+
+#: common/models.py:957
+msgid "On signup ask users twice for their password"
+msgstr "Ved registrerting, spør brukere to ganger for passord"
+
+#: common/models.py:962
msgid "Group on signup"
msgstr ""
-#: common/models.py:951
+#: common/models.py:963
msgid "Group to which new users are assigned on registration"
-msgstr ""
+msgstr "Gruppe for hvilke nye brukere som er tilknyttet registrering"
-#: common/models.py:956
+#: common/models.py:968
msgid "Enforce MFA"
msgstr ""
-#: common/models.py:957
+#: common/models.py:969
msgid "Users must use multifactor security."
-msgstr ""
+msgstr "Brukere må bruke flerfaktorsikkerhet."
-#: common/models.py:964
+#: common/models.py:976
msgid "Enable URL integration"
-msgstr ""
+msgstr "Aktiver URL integrering"
-#: common/models.py:965
+#: common/models.py:977
msgid "Enable plugins to add URL routes"
msgstr ""
-#: common/models.py:971
+#: common/models.py:983
msgid "Enable navigation integration"
-msgstr ""
+msgstr "Aktiver navigasjonsintegrering"
-#: common/models.py:972
+#: common/models.py:984
msgid "Enable plugins to integrate into navigation"
msgstr ""
-#: common/models.py:978
+#: common/models.py:990
msgid "Enable app integration"
-msgstr ""
+msgstr "Aktiver app integrasjon"
-#: common/models.py:979
+#: common/models.py:991
msgid "Enable plugins to add apps"
msgstr ""
-#: common/models.py:985
+#: common/models.py:997
msgid "Enable schedule integration"
msgstr ""
-#: common/models.py:986
+#: common/models.py:998
msgid "Enable plugins to run scheduled tasks"
msgstr ""
-#: common/models.py:992
+#: common/models.py:1004
msgid "Enable event integration"
msgstr ""
-#: common/models.py:993
+#: common/models.py:1005
msgid "Enable plugins to respond to internal events"
msgstr ""
-#: common/models.py:1008 common/models.py:1216
+#: common/models.py:1020 common/models.py:1228
msgid "Settings key (must be unique - case insensitive"
msgstr ""
-#: common/models.py:1039
-msgid "Show subscribed parts"
-msgstr ""
-
-#: common/models.py:1040
-msgid "Show subscribed parts on the homepage"
-msgstr ""
-
-#: common/models.py:1045
-msgid "Show subscribed categories"
-msgstr ""
-
-#: common/models.py:1046
-msgid "Show subscribed part categories on the homepage"
-msgstr ""
-
#: common/models.py:1051
-msgid "Show latest parts"
-msgstr ""
+msgid "Show subscribed parts"
+msgstr "Vis abbonerte deler"
#: common/models.py:1052
-msgid "Show latest parts on the homepage"
-msgstr ""
+msgid "Show subscribed parts on the homepage"
+msgstr "Vis abbonerte deler på hjemmesiden"
#: common/models.py:1057
-msgid "Recent Part Count"
-msgstr ""
+msgid "Show subscribed categories"
+msgstr "Vis abbonerte kategorier"
#: common/models.py:1058
+msgid "Show subscribed part categories on the homepage"
+msgstr "Vis abbonerte delkatekorier på hjemmesiden"
+
+#: common/models.py:1063
+msgid "Show latest parts"
+msgstr "Vis nyeste deler"
+
+#: common/models.py:1064
+msgid "Show latest parts on the homepage"
+msgstr "Vis nyeste deler på hjemmesiden"
+
+#: common/models.py:1069
+msgid "Recent Part Count"
+msgstr "Antall nylig deler"
+
+#: common/models.py:1070
msgid "Number of recent parts to display on index page"
msgstr ""
-#: common/models.py:1064
-msgid "Show unvalidated BOMs"
-msgstr ""
-
-#: common/models.py:1065
-msgid "Show BOMs that await validation on the homepage"
-msgstr ""
-
-#: common/models.py:1070
-msgid "Show recent stock changes"
-msgstr ""
-
-#: common/models.py:1071
-msgid "Show recently changed stock items on the homepage"
-msgstr ""
-
#: common/models.py:1076
-msgid "Recent Stock Count"
-msgstr ""
+msgid "Show unvalidated BOMs"
+msgstr "Vis uvaliderte BOMs"
#: common/models.py:1077
-msgid "Number of recent stock items to display on index page"
-msgstr ""
+msgid "Show BOMs that await validation on the homepage"
+msgstr "Vis BOMs som venter validering på hjemmesiden"
#: common/models.py:1082
-msgid "Show low stock"
-msgstr ""
+msgid "Show recent stock changes"
+msgstr "Vis nylige lagerendringer"
#: common/models.py:1083
-msgid "Show low stock items on the homepage"
-msgstr ""
+msgid "Show recently changed stock items on the homepage"
+msgstr "Vis nylig endret lagervarer på hjemmesiden"
#: common/models.py:1088
-msgid "Show depleted stock"
-msgstr ""
+msgid "Recent Stock Count"
+msgstr "Siste lagertelling"
#: common/models.py:1089
+msgid "Number of recent stock items to display on index page"
+msgstr "Antall nylige lagervarer som skal vises på indeksside"
+
+#: common/models.py:1094
+msgid "Show low stock"
+msgstr "Vis lav lager"
+
+#: common/models.py:1095
+msgid "Show low stock items on the homepage"
+msgstr "Vis lav lagervarer på hjemmesiden"
+
+#: common/models.py:1100
+msgid "Show depleted stock"
+msgstr "Vis tom lagervarer"
+
+#: common/models.py:1101
msgid "Show depleted stock items on the homepage"
msgstr ""
-#: common/models.py:1094
+#: common/models.py:1106
msgid "Show needed stock"
msgstr ""
-#: common/models.py:1095
+#: common/models.py:1107
msgid "Show stock items needed for builds on the homepage"
msgstr ""
-#: common/models.py:1100
+#: common/models.py:1112
msgid "Show expired stock"
msgstr ""
-#: common/models.py:1101
+#: common/models.py:1113
msgid "Show expired stock items on the homepage"
msgstr ""
-#: common/models.py:1106
+#: common/models.py:1118
msgid "Show stale stock"
msgstr ""
-#: common/models.py:1107
+#: common/models.py:1119
msgid "Show stale stock items on the homepage"
msgstr ""
-#: common/models.py:1112
+#: common/models.py:1124
msgid "Show pending builds"
msgstr ""
-#: common/models.py:1113
+#: common/models.py:1125
msgid "Show pending builds on the homepage"
msgstr ""
-#: common/models.py:1118
+#: common/models.py:1130
msgid "Show overdue builds"
msgstr ""
-#: common/models.py:1119
+#: common/models.py:1131
msgid "Show overdue builds on the homepage"
msgstr ""
-#: common/models.py:1124
+#: common/models.py:1136
msgid "Show outstanding POs"
msgstr ""
-#: common/models.py:1125
+#: common/models.py:1137
msgid "Show outstanding POs on the homepage"
msgstr ""
-#: common/models.py:1130
+#: common/models.py:1142
msgid "Show overdue POs"
msgstr ""
-#: common/models.py:1131
+#: common/models.py:1143
msgid "Show overdue POs on the homepage"
msgstr ""
-#: common/models.py:1136
+#: common/models.py:1148
msgid "Show outstanding SOs"
msgstr ""
-#: common/models.py:1137
+#: common/models.py:1149
msgid "Show outstanding SOs on the homepage"
msgstr ""
-#: common/models.py:1142
+#: common/models.py:1154
msgid "Show overdue SOs"
msgstr ""
-#: common/models.py:1143
+#: common/models.py:1155
msgid "Show overdue SOs on the homepage"
msgstr ""
-#: common/models.py:1149
+#: common/models.py:1161
msgid "Inline label display"
msgstr ""
-#: common/models.py:1150
+#: common/models.py:1162
msgid "Display PDF labels in the browser, instead of downloading as a file"
msgstr ""
-#: common/models.py:1156
+#: common/models.py:1168
msgid "Inline report display"
msgstr ""
-#: common/models.py:1157
+#: common/models.py:1169
msgid "Display PDF reports in the browser, instead of downloading as a file"
msgstr ""
-#: common/models.py:1163
+#: common/models.py:1175
msgid "Search Preview Results"
msgstr ""
-#: common/models.py:1164
+#: common/models.py:1176
msgid "Number of results to show in search preview window"
msgstr ""
-#: common/models.py:1170
+#: common/models.py:1182
msgid "Search Show Stock"
msgstr ""
-#: common/models.py:1171
+#: common/models.py:1183
msgid "Display stock levels in search preview window"
msgstr ""
-#: common/models.py:1177
+#: common/models.py:1189
msgid "Hide Inactive Parts"
msgstr ""
-#: common/models.py:1178
+#: common/models.py:1190
msgid "Hide inactive parts in search preview window"
msgstr ""
-#: common/models.py:1184
+#: common/models.py:1196
msgid "Show Quantity in Forms"
msgstr ""
-#: common/models.py:1185
+#: common/models.py:1197
msgid "Display available part quantity in some forms"
msgstr ""
-#: common/models.py:1191
+#: common/models.py:1203
msgid "Escape Key Closes Forms"
msgstr ""
-#: common/models.py:1192
+#: common/models.py:1204
msgid "Use the escape key to close modal forms"
msgstr ""
-#: common/models.py:1198
+#: common/models.py:1210
msgid "Fixed Navbar"
msgstr ""
-#: common/models.py:1199
+#: common/models.py:1211
msgid "InvenTree navbar position is fixed to the top of the screen"
msgstr ""
-#: common/models.py:1264 company/forms.py:43
+#: common/models.py:1276 company/forms.py:43
msgid "Price break quantity"
msgstr ""
-#: common/models.py:1271 company/serializers.py:264
+#: common/models.py:1283 company/serializers.py:264
#: company/templates/company/supplier_part.html:256
#: templates/js/translated/part.js:915 templates/js/translated/part.js:1867
msgid "Price"
msgstr ""
-#: common/models.py:1272
+#: common/models.py:1284
msgid "Unit price at specified quantity"
msgstr ""
-#: common/models.py:1429 common/models.py:1568
+#: common/models.py:1441 common/models.py:1580
msgid "Endpoint"
msgstr ""
-#: common/models.py:1430
+#: common/models.py:1442
msgid "Endpoint at which this webhook is received"
msgstr ""
-#: common/models.py:1439
+#: common/models.py:1451
msgid "Name for this webhook"
msgstr ""
-#: common/models.py:1444 part/models.py:948 plugin/models.py:46
+#: common/models.py:1456 part/models.py:978 plugin/models.py:46
#: templates/js/translated/table_filters.js:34
#: templates/js/translated/table_filters.js:96
-#: templates/js/translated/table_filters.js:295
-#: templates/js/translated/table_filters.js:417
+#: templates/js/translated/table_filters.js:290
+#: templates/js/translated/table_filters.js:412
msgid "Active"
-msgstr ""
+msgstr "Aktiv"
-#: common/models.py:1445
+#: common/models.py:1457
msgid "Is this webhook active"
msgstr ""
-#: common/models.py:1459
+#: common/models.py:1471
msgid "Token"
-msgstr ""
+msgstr "Sjetong"
-#: common/models.py:1460
+#: common/models.py:1472
msgid "Token for access"
-msgstr ""
+msgstr "Nøkkel for tilgang"
-#: common/models.py:1467
+#: common/models.py:1479
msgid "Secret"
-msgstr ""
+msgstr "Hemmelig"
-#: common/models.py:1468
+#: common/models.py:1480
msgid "Shared secret for HMAC"
-msgstr ""
+msgstr "Delt hemmlighet for HMAC"
-#: common/models.py:1535
+#: common/models.py:1547
msgid "Message ID"
-msgstr ""
+msgstr "Melding ID"
-#: common/models.py:1536
+#: common/models.py:1548
msgid "Unique identifier for this message"
-msgstr ""
+msgstr "Unik Id for denne meldingen"
-#: common/models.py:1544
+#: common/models.py:1556
msgid "Host"
-msgstr ""
+msgstr "Vert"
-#: common/models.py:1545
+#: common/models.py:1557
msgid "Host from which this message was received"
msgstr ""
-#: common/models.py:1552
+#: common/models.py:1564
msgid "Header"
-msgstr ""
+msgstr "Tittel"
-#: common/models.py:1553
+#: common/models.py:1565
msgid "Header of this message"
-msgstr ""
+msgstr "Overskrift for denne meldingen"
-#: common/models.py:1559
+#: common/models.py:1571
msgid "Body"
-msgstr ""
+msgstr "Brødtekst"
-#: common/models.py:1560
+#: common/models.py:1572
msgid "Body of this message"
msgstr ""
-#: common/models.py:1569
+#: common/models.py:1581
msgid "Endpoint on which this message was received"
msgstr ""
-#: common/models.py:1574
+#: common/models.py:1586
msgid "Worked on"
-msgstr ""
+msgstr "Arbeidet med"
-#: common/models.py:1575
+#: common/models.py:1587
msgid "Was the work on this message finished?"
-msgstr ""
+msgstr "Var arbeidet med denne meldingen ferdig?"
#: common/views.py:93 order/templates/order/order_wizard/po_upload.html:49
#: order/templates/order/purchase_order_detail.html:24 order/views.py:243
-#: part/templates/part/bom_upload/upload_file.html:52
-#: part/templates/part/import_wizard/part_upload.html:47 part/views.py:213
-#: part/views.py:773
+#: part/templates/part/import_wizard/part_upload.html:47 part/views.py:210
+#: templates/patterns/wizard/upload.html:35
msgid "Upload File"
-msgstr ""
+msgstr "Last opp fil"
-#: common/views.py:94 order/templates/order/order_wizard/match_fields.html:52
-#: order/views.py:244 part/templates/part/bom_upload/match_fields.html:52
+#: common/views.py:94 order/views.py:244
#: part/templates/part/import_wizard/ajax_match_fields.html:45
-#: part/templates/part/import_wizard/match_fields.html:52 part/views.py:214
-#: part/views.py:774
+#: part/templates/part/import_wizard/match_fields.html:52 part/views.py:211
+#: templates/patterns/wizard/match_fields.html:51
msgid "Match Fields"
-msgstr ""
+msgstr "Sammelign felter"
#: common/views.py:95
msgid "Match Items"
-msgstr ""
+msgstr "Sammenlign varer"
#: common/views.py:440
msgid "Fields matching failed"
@@ -2326,75 +2343,73 @@ msgstr ""
#: common/views.py:495
msgid "Parts imported"
-msgstr ""
+msgstr "Deler importert"
-#: common/views.py:517 order/templates/order/order_wizard/match_fields.html:27
-#: order/templates/order/order_wizard/match_parts.html:19
+#: common/views.py:517 order/templates/order/order_wizard/match_parts.html:19
#: order/templates/order/order_wizard/po_upload.html:47
-#: part/templates/part/bom_upload/match_fields.html:27
-#: part/templates/part/bom_upload/match_parts.html:19
-#: part/templates/part/bom_upload/upload_file.html:50
#: part/templates/part/import_wizard/match_fields.html:27
#: part/templates/part/import_wizard/match_references.html:19
#: part/templates/part/import_wizard/part_upload.html:45
+#: templates/patterns/wizard/match_fields.html:26
+#: templates/patterns/wizard/upload.html:33
msgid "Previous Step"
-msgstr ""
+msgstr "Forrige trinn"
#: company/forms.py:24 part/forms.py:46
#: templates/InvenTree/settings/mixins/urls.html:14
msgid "URL"
-msgstr ""
+msgstr "URL"
#: company/forms.py:25 part/forms.py:47
msgid "Image URL"
-msgstr ""
+msgstr "Bilde URL"
#: company/models.py:105
msgid "Company description"
-msgstr ""
+msgstr "Beskrivelse av firma"
#: company/models.py:106
msgid "Description of the company"
-msgstr ""
+msgstr "Beskrivelse av firmaet"
#: company/models.py:112 company/templates/company/company_base.html:97
#: templates/InvenTree/settings/plugin_settings.html:55
#: templates/js/translated/company.js:349
msgid "Website"
-msgstr ""
+msgstr "Nettside"
#: company/models.py:113
msgid "Company website URL"
-msgstr ""
+msgstr "Bedriftens nettside URL"
#: company/models.py:117 company/templates/company/company_base.html:115
msgid "Address"
-msgstr ""
+msgstr "Adresse"
#: company/models.py:118
msgid "Company address"
-msgstr ""
+msgstr "Firmaet adresse"
#: company/models.py:121
msgid "Phone number"
-msgstr ""
+msgstr "Telefonnummer"
#: company/models.py:122
msgid "Contact phone number"
-msgstr ""
+msgstr "Kontakt-telefonnummer"
#: company/models.py:125 company/templates/company/company_base.html:129
#: templates/InvenTree/settings/user.html:48
msgid "Email"
-msgstr ""
+msgstr "E-post"
#: company/models.py:125
msgid "Contact email address"
-msgstr ""
+msgstr "Kontakt e-post"
#: company/models.py:128 company/templates/company/company_base.html:136
msgid "Contact"
-msgstr ""
+msgstr "Kontakt"
#: company/models.py:129
msgid "Point of contact"
@@ -2402,11 +2417,11 @@ msgstr ""
#: company/models.py:131
msgid "Link to external company information"
-msgstr ""
+msgstr "Link til ekstern bedriftsinformasjon"
-#: company/models.py:139 part/models.py:840
+#: company/models.py:139 part/models.py:870
msgid "Image"
-msgstr ""
+msgstr "Bilde"
#: company/models.py:144
msgid "is customer"
@@ -2414,7 +2429,7 @@ msgstr ""
#: company/models.py:144
msgid "Do you sell items to this company?"
-msgstr ""
+msgstr "Selger du varer til dette firmaet?"
#: company/models.py:146
msgid "is supplier"
@@ -2422,7 +2437,7 @@ msgstr ""
#: company/models.py:146
msgid "Do you purchase items from this company?"
-msgstr ""
+msgstr "Kjøper du varer fra dette firmaet?"
#: company/models.py:148
msgid "is manufacturer"
@@ -2430,19 +2445,19 @@ msgstr ""
#: company/models.py:148
msgid "Does this company manufacture parts?"
-msgstr ""
+msgstr "Produserer dette firmaet deler?"
#: company/models.py:152 company/serializers.py:270
#: company/templates/company/company_base.html:103 stock/serializers.py:179
msgid "Currency"
-msgstr ""
+msgstr "Valuta"
#: company/models.py:155
msgid "Default currency used for this company"
-msgstr ""
+msgstr "Standardvaluta brukt for dette firmaet"
#: company/models.py:320 company/models.py:535 stock/models.py:471
-#: stock/templates/stock/item_base.html:142 templates/js/translated/bom.js:328
+#: stock/templates/stock/item_base.html:144 templates/js/translated/bom.js:541
msgid "Base Part"
msgstr ""
@@ -2453,11 +2468,11 @@ 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:380
+#: stock/templates/stock/item_base.html:382
#: templates/js/translated/company.js:333
#: templates/js/translated/company.js:517
#: templates/js/translated/company.js:800 templates/js/translated/part.js:234
-#: templates/js/translated/table_filters.js:389
+#: templates/js/translated/table_filters.js:384
msgid "Manufacturer"
msgstr ""
@@ -2488,7 +2503,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:390
+#: stock/templates/stock/item_base.html:392
msgid "Manufacturer Part"
msgstr ""
@@ -2499,7 +2514,7 @@ msgstr ""
#: company/models.py:422
#: report/templates/report/inventree_test_report_base.html:95
#: stock/models.py:1988 templates/js/translated/company.js:647
-#: templates/js/translated/part.js:715 templates/js/translated/stock.js:1304
+#: templates/js/translated/part.js:715 templates/js/translated/stock.js:1332
msgid "Value"
msgstr ""
@@ -2507,9 +2522,9 @@ msgstr ""
msgid "Parameter value"
msgstr ""
-#: company/models.py:429 part/models.py:915 part/models.py:2457
+#: company/models.py:429 part/models.py:945 part/models.py:2493
#: part/templates/part/part_base.html:288
-#: templates/InvenTree/settings/settings.html:287
+#: templates/InvenTree/settings/settings.html:324
#: templates/js/translated/company.js:653 templates/js/translated/part.js:721
msgid "Units"
msgstr ""
@@ -2526,11 +2541,11 @@ msgstr ""
#: company/templates/company/supplier_part.html:87 order/models.py:227
#: order/templates/order/order_base.html:112
#: order/templates/order/order_wizard/select_pos.html:30 part/bom.py:237
-#: part/bom.py:265 stock/templates/stock/item_base.html:397
+#: part/bom.py:265 stock/templates/stock/item_base.html:399
#: templates/js/translated/company.js:337
#: templates/js/translated/company.js:774 templates/js/translated/order.js:823
#: templates/js/translated/part.js:215 templates/js/translated/part.js:863
-#: templates/js/translated/table_filters.js:393
+#: templates/js/translated/table_filters.js:388
msgid "Supplier"
msgstr ""
@@ -2561,22 +2576,23 @@ msgid "Supplier part description"
msgstr ""
#: company/models.py:576 company/templates/company/supplier_part.html:119
-#: part/models.py:2648 report/templates/report/inventree_po_report.html:93
-#: report/templates/report/inventree_so_report.html:93
+#: part/models.py:2717 part/templates/part/upload_bom.html:59
+#: report/templates/report/inventree_po_report.html:93
+#: report/templates/report/inventree_so_report.html:93 stock/serializers.py:409
msgid "Note"
msgstr ""
-#: company/models.py:580 part/models.py:1781
+#: company/models.py:580 part/models.py:1817
msgid "base cost"
msgstr ""
-#: company/models.py:580 part/models.py:1781
+#: company/models.py:580 part/models.py:1817
msgid "Minimum charge (e.g. stocking fee)"
msgstr ""
#: company/models.py:582 company/templates/company/supplier_part.html:112
-#: stock/models.py:495 stock/templates/stock/item_base.html:338
-#: templates/js/translated/company.js:850 templates/js/translated/stock.js:1799
+#: stock/models.py:495 stock/templates/stock/item_base.html:340
+#: templates/js/translated/company.js:850 templates/js/translated/stock.js:1923
msgid "Packaging"
msgstr ""
@@ -2584,7 +2600,7 @@ msgstr ""
msgid "Part packaging"
msgstr ""
-#: company/models.py:584 part/models.py:1783
+#: company/models.py:584 part/models.py:1819
msgid "multiple"
msgstr ""
@@ -2641,88 +2657,88 @@ msgstr ""
#: company/templates/company/company_base.html:56
#: part/templates/part/part_thumb.html:14
msgid "Download image from URL"
-msgstr ""
+msgstr "Last ned bilde fra URL"
#: company/templates/company/company_base.html:83 order/models.py:552
#: order/templates/order/sales_order_base.html:115 stock/models.py:514
-#: stock/models.py:515 stock/serializers.py:626
-#: stock/templates/stock/item_base.html:290
+#: stock/models.py:515 stock/serializers.py:683
+#: stock/templates/stock/item_base.html:292
#: templates/js/translated/company.js:329 templates/js/translated/order.js:1240
-#: templates/js/translated/stock.js:2610
-#: templates/js/translated/table_filters.js:397
+#: templates/js/translated/stock.js:2734
+#: templates/js/translated/table_filters.js:392
msgid "Customer"
-msgstr ""
+msgstr "Kunde"
#: company/templates/company/company_base.html:108
msgid "Uses default currency"
-msgstr ""
+msgstr "Bruker standardvaluta"
#: company/templates/company/company_base.html:122
msgid "Phone"
-msgstr ""
+msgstr "Telefon"
#: company/templates/company/company_base.html:205
#: part/templates/part/part_base.html:471
msgid "Upload Image"
-msgstr ""
+msgstr "Last opp bilde"
#: company/templates/company/detail.html:15
#: company/templates/company/manufacturer_part_sidebar.html:7
#: templates/InvenTree/search.html:118
msgid "Supplier Parts"
-msgstr ""
+msgstr "Leverandør deler"
#: company/templates/company/detail.html:19
#: order/templates/order/order_wizard/select_parts.html:44
msgid "Create new supplier part"
-msgstr ""
+msgstr "Oprett ny leverandørdel"
#: company/templates/company/detail.html:20
#: company/templates/company/manufacturer_part.html:118
-#: part/templates/part/detail.html:353
+#: part/templates/part/detail.html:356
msgid "New Supplier Part"
-msgstr ""
+msgstr "Ny leverandørdel"
#: company/templates/company/detail.html:32
#: 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:171 part/templates/part/detail.html:362
-#: part/templates/part/detail.html:391
+#: part/templates/part/category.html:171 part/templates/part/detail.html:365
+#: part/templates/part/detail.html:394
msgid "Options"
-msgstr ""
+msgstr "Valgmuligheter"
#: company/templates/company/detail.html:37
#: company/templates/company/detail.html:84
#: part/templates/part/category.html:177
msgid "Order parts"
-msgstr ""
+msgstr "Bestill deler"
#: company/templates/company/detail.html:42
#: company/templates/company/detail.html:89
msgid "Delete parts"
-msgstr ""
+msgstr "Slett deler"
#: company/templates/company/detail.html:43
#: company/templates/company/detail.html:90
msgid "Delete Parts"
-msgstr ""
+msgstr "Slett deler"
#: company/templates/company/detail.html:62 templates/InvenTree/search.html:103
msgid "Manufacturer Parts"
-msgstr ""
+msgstr "Produsentdeler"
#: company/templates/company/detail.html:66
msgid "Create new manufacturer part"
-msgstr ""
+msgstr "Opprett ny produsentdeler"
-#: company/templates/company/detail.html:67 part/templates/part/detail.html:381
+#: company/templates/company/detail.html:67 part/templates/part/detail.html:384
msgid "New Manufacturer Part"
-msgstr ""
+msgstr "Ny produsentdel"
#: company/templates/company/detail.html:107
msgid "Supplier Stock"
-msgstr ""
+msgstr "Leverandør lager"
#: company/templates/company/detail.html:117
#: company/templates/company/sidebar.html:12
@@ -2730,130 +2746,130 @@ 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:85 part/templates/part/part_sidebar.html:37
+#: part/templates/part/detail.html:85 part/templates/part/part_sidebar.html:40
#: templates/InvenTree/index.html:252 templates/InvenTree/search.html:197
#: templates/InvenTree/settings/sidebar.html:45 templates/navbar.html:47
#: users/models.py:45
msgid "Purchase Orders"
-msgstr ""
+msgstr "Bestillingsorder"
#: company/templates/company/detail.html:121
#: order/templates/order/purchase_orders.html:17
msgid "Create new purchase order"
-msgstr ""
+msgstr "Opprett ny bestillingsorder"
#: company/templates/company/detail.html:122
#: order/templates/order/purchase_orders.html:18
msgid "New Purchase Order"
-msgstr ""
+msgstr "Ny bestillingsorder"
#: company/templates/company/detail.html:143
#: company/templates/company/sidebar.html:20
#: 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:108 part/templates/part/part_sidebar.html:41
+#: part/templates/part/detail.html:108 part/templates/part/part_sidebar.html:44
#: templates/InvenTree/index.html:283 templates/InvenTree/search.html:217
#: templates/InvenTree/settings/sidebar.html:47 templates/navbar.html:58
#: users/models.py:46
msgid "Sales Orders"
-msgstr ""
+msgstr "Salgsordre"
#: company/templates/company/detail.html:147
#: order/templates/order/sales_orders.html:20
msgid "Create new sales order"
-msgstr ""
+msgstr "Opprett ny salgsordre"
#: company/templates/company/detail.html:148
#: order/templates/order/sales_orders.html:21
msgid "New Sales Order"
-msgstr ""
+msgstr "Ny salgsorder"
#: company/templates/company/detail.html:168
-#: templates/js/translated/build.js:1059
+#: templates/js/translated/build.js:1281
msgid "Assigned Stock"
-msgstr ""
+msgstr "Tildelt lagervare"
#: company/templates/company/detail.html:184
msgid "Company Notes"
-msgstr ""
+msgstr "Notater til firma"
#: company/templates/company/detail.html:384
#: company/templates/company/manufacturer_part.html:215
-#: part/templates/part/detail.html:435
+#: part/templates/part/detail.html:438
msgid "Delete Supplier Parts?"
-msgstr ""
+msgstr "Slett leverandørdeler?"
#: company/templates/company/detail.html:385
#: company/templates/company/manufacturer_part.html:216
-#: part/templates/part/detail.html:436
+#: part/templates/part/detail.html:439
msgid "All selected supplier parts will be deleted"
-msgstr ""
+msgstr "Alle valgte leverandørdeler vil slettes"
#: company/templates/company/index.html:8
msgid "Supplier List"
-msgstr ""
+msgstr "Leverandørliste"
#: company/templates/company/manufacturer_part.html:14 company/views.py:55
#: part/templates/part/prices.html:167 templates/InvenTree/search.html:178
#: templates/navbar.html:46
msgid "Manufacturers"
-msgstr ""
+msgstr "Produsenter"
#: company/templates/company/manufacturer_part.html:35
#: company/templates/company/supplier_part.html:34
#: company/templates/company/supplier_part.html:159
#: part/templates/part/detail.html:88 part/templates/part/part_base.html:76
msgid "Order part"
-msgstr ""
+msgstr "Bestill del"
#: company/templates/company/manufacturer_part.html:40
#: templates/js/translated/company.js:565
msgid "Edit manufacturer part"
-msgstr ""
+msgstr "Endre produsent del"
#: company/templates/company/manufacturer_part.html:44
#: templates/js/translated/company.js:566
msgid "Delete manufacturer part"
-msgstr ""
+msgstr "Slett produsentdel"
#: company/templates/company/manufacturer_part.html:66
#: company/templates/company/supplier_part.html:63
msgid "Internal Part"
-msgstr ""
+msgstr "Intern del"
#: company/templates/company/manufacturer_part.html:114
#: company/templates/company/supplier_part.html:15 company/views.py:49
-#: part/templates/part/part_sidebar.html:35 part/templates/part/prices.html:163
+#: part/templates/part/part_sidebar.html:38 part/templates/part/prices.html:163
#: templates/InvenTree/search.html:188 templates/navbar.html:45
msgid "Suppliers"
-msgstr ""
+msgstr "Leverandører"
#: company/templates/company/manufacturer_part.html:129
-#: part/templates/part/detail.html:364
+#: part/templates/part/detail.html:367
msgid "Delete supplier parts"
-msgstr ""
+msgstr "Slett leverandørdeler"
#: company/templates/company/manufacturer_part.html:129
#: company/templates/company/manufacturer_part.html:158
#: company/templates/company/manufacturer_part.html:254
-#: part/templates/part/detail.html:364 part/templates/part/detail.html:393
+#: part/templates/part/detail.html:367 part/templates/part/detail.html:396
#: templates/js/translated/company.js:426 templates/js/translated/helpers.js:31
-#: users/models.py:212
+#: users/models.py:217
msgid "Delete"
-msgstr ""
+msgstr "Slett"
#: company/templates/company/manufacturer_part.html:143
#: company/templates/company/manufacturer_part_sidebar.html:5
#: part/templates/part/category_sidebar.html:17
-#: part/templates/part/detail.html:187 part/templates/part/part_sidebar.html:8
+#: part/templates/part/detail.html:190 part/templates/part/part_sidebar.html:9
msgid "Parameters"
msgstr ""
#: company/templates/company/manufacturer_part.html:147
-#: part/templates/part/detail.html:192
+#: part/templates/part/detail.html:195
#: templates/InvenTree/settings/category.html:12
-#: templates/InvenTree/settings/part.html:65
+#: templates/InvenTree/settings/part.html:66
msgid "New Parameter"
msgstr ""
@@ -2862,7 +2878,7 @@ msgid "Delete parameters"
msgstr ""
#: company/templates/company/manufacturer_part.html:191
-#: part/templates/part/detail.html:892
+#: part/templates/part/detail.html:895
msgid "Add Parameter"
msgstr ""
@@ -2876,7 +2892,7 @@ msgstr ""
#: company/templates/company/sidebar.html:6
msgid "Manufactured Parts"
-msgstr ""
+msgstr "Produserte deler"
#: company/templates/company/sidebar.html:10
msgid "Supplied Parts"
@@ -2888,12 +2904,12 @@ msgstr ""
#: company/templates/company/sidebar.html:22
msgid "Assigned Stock Items"
-msgstr ""
+msgstr "Tildelt lagervarer"
#: company/templates/company/supplier_part.html:7
#: company/templates/company/supplier_part.html:24 stock/models.py:479
-#: stock/templates/stock/item_base.html:402
-#: templates/js/translated/company.js:790 templates/js/translated/stock.js:1756
+#: stock/templates/stock/item_base.html:404
+#: templates/js/translated/company.js:790 templates/js/translated/stock.js:1880
msgid "Supplier Part"
msgstr ""
@@ -2919,7 +2935,7 @@ msgstr ""
#: company/templates/company/supplier_part.html:142
#: part/templates/part/detail.html:25 stock/templates/stock/location.html:167
-#: templates/js/translated/stock.js:368
+#: templates/js/translated/stock.js:369
msgid "New Stock Item"
msgstr ""
@@ -2940,7 +2956,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:1628
+#: part/templates/part/prices.html:271 part/views.py:1319
msgid "Add Price Break"
msgstr ""
@@ -2948,11 +2964,11 @@ msgstr ""
msgid "No price break information found"
msgstr ""
-#: company/templates/company/supplier_part.html:224 part/views.py:1690
+#: company/templates/company/supplier_part.html:224 part/views.py:1381
msgid "Delete Price Break"
msgstr ""
-#: company/templates/company/supplier_part.html:238 part/views.py:1676
+#: company/templates/company/supplier_part.html:238 part/views.py:1367
msgid "Edit Price Break"
msgstr ""
@@ -2965,15 +2981,15 @@ msgid "Delete price break"
msgstr ""
#: company/templates/company/supplier_part_navbar.html:15
-#: part/templates/part/part_sidebar.html:14
+#: part/templates/part/part_sidebar.html:15
#: 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:150
#: templates/InvenTree/settings/sidebar.html:41
-#: templates/js/translated/bom.js:340 templates/js/translated/part.js:495
+#: templates/js/translated/bom.js:553 templates/js/translated/part.js:495
#: templates/js/translated/part.js:630 templates/js/translated/part.js:1125
-#: templates/js/translated/part.js:1286 templates/js/translated/stock.js:935
-#: templates/js/translated/stock.js:1588 templates/navbar.html:28
+#: templates/js/translated/part.js:1286 templates/js/translated/stock.js:936
+#: templates/js/translated/stock.js:1712 templates/navbar.html:28
msgid "Stock"
msgstr ""
@@ -2987,7 +3003,7 @@ msgid "Supplier Part Pricing"
msgstr ""
#: company/templates/company/supplier_part_navbar.html:29
-#: part/templates/part/part_sidebar.html:28
+#: part/templates/part/part_sidebar.html:30
msgid "Pricing"
msgstr ""
@@ -2996,7 +3012,7 @@ msgstr ""
#: stock/templates/stock/location.html:151
#: stock/templates/stock/location.html:163
#: stock/templates/stock/location_sidebar.html:7
-#: templates/InvenTree/search.html:152 templates/js/translated/stock.js:2509
+#: templates/InvenTree/search.html:152 templates/js/translated/stock.js:2633
#: templates/stats.html:105 templates/stats.html:114 users/models.py:43
msgid "Stock Items"
msgstr ""
@@ -3026,20 +3042,20 @@ msgstr ""
msgid "New Company"
msgstr ""
-#: company/views.py:129 part/views.py:593
+#: company/views.py:129 part/views.py:591
msgid "Download Image"
msgstr ""
-#: company/views.py:158 part/views.py:625
+#: company/views.py:158 part/views.py:623
msgid "Image size exceeds maximum allowable size for download"
msgstr ""
-#: company/views.py:165 part/views.py:632
+#: company/views.py:165 part/views.py:630
#, python-brace-format
msgid "Invalid response: {code}"
msgstr ""
-#: company/views.py:174 part/views.py:641
+#: company/views.py:174 part/views.py:639
msgid "Supplied URL is not a valid image file"
msgstr ""
@@ -3097,12 +3113,12 @@ msgstr ""
#: label/models.py:258
msgid "Query filters (comma-separated list of key=value pairs),"
-msgstr ""
+msgstr "Spørrefilter (kommaseparert liste over nøkkel=verdiparer),"
#: label/models.py:259 label/models.py:319 label/models.py:366
#: report/models.py:322 report/models.py:459 report/models.py:497
msgid "Filters"
-msgstr ""
+msgstr "Filtre"
#: label/models.py:318
msgid "Query filters (comma-separated list of key=value pairs"
@@ -3256,16 +3272,16 @@ msgid "Supplier part must match supplier"
msgstr ""
#: order/models.py:855 order/models.py:946 order/models.py:1042
-#: templates/js/translated/order.js:1820 templates/js/translated/stock.js:2271
+#: templates/js/translated/order.js:1820 templates/js/translated/stock.js:2395
msgid "Order"
msgstr ""
#: order/models.py:856 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:352
+#: stock/templates/stock/item_base.html:354
#: templates/js/translated/order.js:801 templates/js/translated/part.js:838
-#: templates/js/translated/stock.js:1733 templates/js/translated/stock.js:2591
+#: templates/js/translated/stock.js:1857 templates/js/translated/stock.js:2715
msgid "Purchase Order"
msgstr ""
@@ -3276,7 +3292,7 @@ msgstr ""
#: order/models.py:884 order/templates/order/order_base.html:163
#: templates/js/translated/order.js:589 templates/js/translated/order.js:1118
#: templates/js/translated/part.js:910 templates/js/translated/part.js:937
-#: templates/js/translated/table_filters.js:317
+#: templates/js/translated/table_filters.js:312
msgid "Received"
msgstr ""
@@ -3285,8 +3301,8 @@ msgid "Number of items received"
msgstr ""
#: order/models.py:892 part/templates/part/prices.html:176 stock/models.py:608
-#: stock/serializers.py:170 stock/templates/stock/item_base.html:359
-#: templates/js/translated/stock.js:1787
+#: stock/serializers.py:170 stock/templates/stock/item_base.html:361
+#: templates/js/translated/stock.js:1911
msgid "Purchase Price"
msgstr ""
@@ -3530,7 +3546,7 @@ msgstr ""
#: order/templates/order/order_base.html:94
#: order/templates/order/sales_order_base.html:89
-#: templates/js/translated/stock.js:2327
+#: templates/js/translated/stock.js:2451
msgid "Order Status"
msgstr ""
@@ -3574,73 +3590,20 @@ msgstr ""
msgid "After placing this purchase order, line items will no longer be editable."
msgstr ""
-#: order/templates/order/order_wizard/match_fields.html:9
-#: part/templates/part/bom_upload/match_fields.html:9
-#: part/templates/part/import_wizard/ajax_match_fields.html:9
-#: part/templates/part/import_wizard/match_fields.html:9
-msgid "Missing selections for the following required columns"
-msgstr ""
-
-#: order/templates/order/order_wizard/match_fields.html:20
-#: part/templates/part/bom_upload/match_fields.html:20
-#: part/templates/part/import_wizard/ajax_match_fields.html:20
-#: part/templates/part/import_wizard/match_fields.html:20
-msgid "Duplicate selections found, see below. Fix them then retry submitting."
-msgstr ""
-
-#: order/templates/order/order_wizard/match_fields.html:29
-#: order/templates/order/order_wizard/match_parts.html:21
-#: part/templates/part/bom_upload/match_fields.html:29
-#: part/templates/part/bom_upload/match_parts.html:21
-#: part/templates/part/import_wizard/match_fields.html:29
-#: part/templates/part/import_wizard/match_references.html:21
-msgid "Submit Selections"
-msgstr ""
-
-#: order/templates/order/order_wizard/match_fields.html:35
-#: part/templates/part/bom_upload/match_fields.html:35
-#: part/templates/part/import_wizard/ajax_match_fields.html:28
-#: part/templates/part/import_wizard/match_fields.html:35
-msgid "File Fields"
-msgstr ""
-
-#: order/templates/order/order_wizard/match_fields.html:42
-#: part/templates/part/bom_upload/match_fields.html:42
-#: part/templates/part/import_wizard/ajax_match_fields.html:35
-#: part/templates/part/import_wizard/match_fields.html:42
-msgid "Remove column"
-msgstr ""
-
-#: order/templates/order/order_wizard/match_fields.html:60
-#: part/templates/part/bom_upload/match_fields.html:60
-#: part/templates/part/import_wizard/ajax_match_fields.html:53
-#: part/templates/part/import_wizard/match_fields.html:60
-msgid "Duplicate selection"
-msgstr ""
-
-#: order/templates/order/order_wizard/match_fields.html:71
-#: order/templates/order/order_wizard/match_parts.html:52
-#: part/templates/part/bom_upload/match_fields.html:71
-#: part/templates/part/bom_upload/match_parts.html:53
-#: part/templates/part/import_wizard/ajax_match_fields.html:64
-#: part/templates/part/import_wizard/ajax_match_references.html:42
-#: part/templates/part/import_wizard/match_fields.html:71
-#: part/templates/part/import_wizard/match_references.html:49
-#: templates/js/translated/build.js:300 templates/js/translated/build.js:1311
-#: templates/js/translated/order.js:537 templates/js/translated/order.js:1488
-#: templates/js/translated/stock.js:601 templates/js/translated/stock.js:769
-msgid "Remove row"
-msgstr ""
-
#: order/templates/order/order_wizard/match_parts.html:12
-#: part/templates/part/bom_upload/match_parts.html:12
#: part/templates/part/import_wizard/ajax_match_references.html:12
#: part/templates/part/import_wizard/match_references.html:12
msgid "Errors exist in the submitted data"
msgstr ""
+#: order/templates/order/order_wizard/match_parts.html:21
+#: part/templates/part/import_wizard/match_fields.html:29
+#: part/templates/part/import_wizard/match_references.html:21
+#: templates/patterns/wizard/match_fields.html:28
+msgid "Submit Selections"
+msgstr ""
+
#: order/templates/order/order_wizard/match_parts.html:28
-#: part/templates/part/bom_upload/match_parts.html:28
#: part/templates/part/import_wizard/ajax_match_references.html:21
#: part/templates/part/import_wizard/match_references.html:28
msgid "Row"
@@ -3650,6 +3613,19 @@ msgstr ""
msgid "Select Supplier Part"
msgstr ""
+#: order/templates/order/order_wizard/match_parts.html:52
+#: part/templates/part/import_wizard/ajax_match_fields.html:64
+#: part/templates/part/import_wizard/ajax_match_references.html:42
+#: part/templates/part/import_wizard/match_fields.html:71
+#: part/templates/part/import_wizard/match_references.html:49
+#: templates/js/translated/bom.js:76 templates/js/translated/build.js:380
+#: templates/js/translated/build.js:528 templates/js/translated/build.js:1547
+#: templates/js/translated/order.js:537 templates/js/translated/order.js:1488
+#: templates/js/translated/stock.js:602 templates/js/translated/stock.js:770
+#: templates/patterns/wizard/match_fields.html:70
+msgid "Remove row"
+msgstr ""
+
#: order/templates/order/order_wizard/po_upload.html:8
msgid "Return to Orders"
msgstr ""
@@ -3659,9 +3635,9 @@ msgid "Upload File for Purchase Order"
msgstr ""
#: order/templates/order/order_wizard/po_upload.html:25
-#: part/templates/part/bom_upload/upload_file.html:21
#: part/templates/part/import_wizard/ajax_part_upload.html:10
#: part/templates/part/import_wizard/part_upload.html:23
+#: templates/patterns/wizard/upload.html:11
#, python-format
msgid "Step %(step)s of %(count)s"
msgstr ""
@@ -3819,7 +3795,7 @@ msgid "Pending Shipments"
msgstr ""
#: order/templates/order/sales_order_detail.html:48
-#: templates/js/translated/bom.js:732 templates/js/translated/build.js:1243
+#: templates/js/translated/bom.js:945 templates/js/translated/build.js:1465
msgid "Actions"
msgstr ""
@@ -3922,7 +3898,7 @@ msgstr ""
msgid "This field is required"
msgstr ""
-#: part/bom.py:125 part/models.py:83 part/models.py:849
+#: part/bom.py:125 part/models.py:83 part/models.py:879
#: part/templates/part/category.html:108 part/templates/part/part_base.html:338
msgid "Default Location"
msgstr ""
@@ -3968,7 +3944,7 @@ msgstr ""
msgid "Default keywords for parts in this category"
msgstr ""
-#: part/models.py:97 part/models.py:2533 part/templates/part/category.html:15
+#: part/models.py:97 part/models.py:2569 part/templates/part/category.html:15
#: part/templates/part/part_app_base.html:10
msgid "Part Category"
msgstr ""
@@ -3994,408 +3970,478 @@ msgstr ""
msgid "Invalid choice for parent part"
msgstr ""
-#: part/models.py:502 part/models.py:514
+#: part/models.py:532 part/models.py:544
#, python-brace-format
msgid "Part '{p1}' is used in BOM for '{p2}' (recursive)"
msgstr ""
-#: part/models.py:644
+#: part/models.py:674
msgid "Next available serial numbers are"
msgstr ""
-#: part/models.py:648
+#: part/models.py:678
msgid "Next available serial number is"
msgstr ""
-#: part/models.py:653
+#: part/models.py:683
msgid "Most recent serial number is"
msgstr ""
-#: part/models.py:748
+#: part/models.py:778
msgid "Duplicate IPN not allowed in part settings"
msgstr ""
-#: part/models.py:773
+#: part/models.py:803 part/models.py:2622
msgid "Part name"
msgstr ""
-#: part/models.py:780
+#: part/models.py:810
msgid "Is Template"
msgstr ""
-#: part/models.py:781
+#: part/models.py:811
msgid "Is this part a template part?"
msgstr ""
-#: part/models.py:791
+#: part/models.py:821
msgid "Is this part a variant of another part?"
msgstr ""
-#: part/models.py:792
+#: part/models.py:822
msgid "Variant Of"
msgstr ""
-#: part/models.py:798
+#: part/models.py:828
msgid "Part description"
msgstr ""
-#: part/models.py:803 part/templates/part/category.html:86
+#: part/models.py:833 part/templates/part/category.html:86
#: part/templates/part/part_base.html:302
msgid "Keywords"
msgstr ""
-#: part/models.py:804
+#: part/models.py:834
msgid "Part keywords to improve visibility in search results"
msgstr ""
-#: part/models.py:811 part/models.py:2283 part/models.py:2532
+#: part/models.py:841 part/models.py:2319 part/models.py:2568
#: part/templates/part/part_base.html:265
#: part/templates/part/set_category.html:15
-#: templates/InvenTree/settings/settings.html:186
+#: templates/InvenTree/settings/settings.html:223
#: templates/js/translated/part.js:1268
msgid "Category"
msgstr ""
-#: part/models.py:812
+#: part/models.py:842
msgid "Part category"
msgstr ""
-#: part/models.py:817 part/templates/part/part_base.html:274
+#: part/models.py:847 part/templates/part/part_base.html:274
#: templates/js/translated/part.js:618 templates/js/translated/part.js:1221
-#: templates/js/translated/stock.js:1560
+#: templates/js/translated/stock.js:1684
msgid "IPN"
msgstr ""
-#: part/models.py:818
+#: part/models.py:848
msgid "Internal Part Number"
msgstr ""
-#: part/models.py:824
+#: part/models.py:854
msgid "Part revision or version number"
msgstr ""
-#: part/models.py:825 part/templates/part/part_base.html:281
+#: part/models.py:855 part/templates/part/part_base.html:281
#: report/models.py:200 templates/js/translated/part.js:622
msgid "Revision"
msgstr ""
-#: part/models.py:847
+#: part/models.py:877
msgid "Where is this item normally stored?"
msgstr ""
-#: part/models.py:894 part/templates/part/part_base.html:347
+#: part/models.py:924 part/templates/part/part_base.html:347
msgid "Default Supplier"
msgstr ""
-#: part/models.py:895
+#: part/models.py:925
msgid "Default supplier part"
msgstr ""
-#: part/models.py:902
+#: part/models.py:932
msgid "Default Expiry"
msgstr ""
-#: part/models.py:903
+#: part/models.py:933
msgid "Expiry time (in days) for stock items of this part"
msgstr ""
-#: part/models.py:908 part/templates/part/part_base.html:196
+#: part/models.py:938 part/templates/part/part_base.html:196
msgid "Minimum Stock"
msgstr ""
-#: part/models.py:909
+#: part/models.py:939
msgid "Minimum allowed stock level"
msgstr ""
-#: part/models.py:916
+#: part/models.py:946
msgid "Stock keeping units for this part"
msgstr ""
-#: part/models.py:922
+#: part/models.py:952
msgid "Can this part be built from other parts?"
msgstr ""
-#: part/models.py:928
+#: part/models.py:958
msgid "Can this part be used to build other parts?"
msgstr ""
-#: part/models.py:934
+#: part/models.py:964
msgid "Does this part have tracking for unique items?"
msgstr ""
-#: part/models.py:939
+#: part/models.py:969
msgid "Can this part be purchased from external suppliers?"
msgstr ""
-#: part/models.py:944
+#: part/models.py:974
msgid "Can this part be sold to customers?"
msgstr ""
-#: part/models.py:949
+#: part/models.py:979
msgid "Is this part active?"
msgstr ""
-#: part/models.py:954
+#: part/models.py:984
msgid "Is this a virtual part, such as a software product or license?"
msgstr ""
-#: part/models.py:959
+#: part/models.py:989
msgid "Part notes - supports Markdown formatting"
msgstr ""
-#: part/models.py:962
+#: part/models.py:992
msgid "BOM checksum"
msgstr ""
-#: part/models.py:962
+#: part/models.py:992
msgid "Stored BOM checksum"
msgstr ""
-#: part/models.py:965
+#: part/models.py:995
msgid "BOM checked by"
msgstr ""
-#: part/models.py:967
+#: part/models.py:997
msgid "BOM checked date"
msgstr ""
-#: part/models.py:971
+#: part/models.py:1001
msgid "Creation User"
msgstr ""
-#: part/models.py:1783
+#: part/models.py:1819
msgid "Sell multiple"
msgstr ""
-#: part/models.py:2333
+#: part/models.py:2369
msgid "Test templates can only be created for trackable parts"
msgstr ""
-#: part/models.py:2350
+#: part/models.py:2386
msgid "Test with this name already exists for this part"
msgstr ""
-#: part/models.py:2370 templates/js/translated/part.js:1714
-#: templates/js/translated/stock.js:1284
+#: part/models.py:2406 templates/js/translated/part.js:1714
+#: templates/js/translated/stock.js:1312
msgid "Test Name"
msgstr ""
-#: part/models.py:2371
+#: part/models.py:2407
msgid "Enter a name for the test"
msgstr ""
-#: part/models.py:2376
+#: part/models.py:2412
msgid "Test Description"
msgstr ""
-#: part/models.py:2377
+#: part/models.py:2413
msgid "Enter description for this test"
msgstr ""
-#: part/models.py:2382 templates/js/translated/part.js:1723
-#: templates/js/translated/table_filters.js:281
+#: part/models.py:2418 templates/js/translated/part.js:1723
+#: templates/js/translated/table_filters.js:276
msgid "Required"
msgstr ""
-#: part/models.py:2383
+#: part/models.py:2419
msgid "Is this test required to pass?"
msgstr ""
-#: part/models.py:2388 templates/js/translated/part.js:1731
+#: part/models.py:2424 templates/js/translated/part.js:1731
msgid "Requires Value"
msgstr ""
-#: part/models.py:2389
+#: part/models.py:2425
msgid "Does this test require a value when adding a test result?"
msgstr ""
-#: part/models.py:2394 templates/js/translated/part.js:1738
+#: part/models.py:2430 templates/js/translated/part.js:1738
msgid "Requires Attachment"
msgstr ""
-#: part/models.py:2395
+#: part/models.py:2431
msgid "Does this test require a file attachment when adding a test result?"
msgstr ""
-#: part/models.py:2406
+#: part/models.py:2442
#, python-brace-format
msgid "Illegal character in template name ({c})"
msgstr ""
-#: part/models.py:2442
+#: part/models.py:2478
msgid "Parameter template name must be unique"
msgstr ""
-#: part/models.py:2450
+#: part/models.py:2486
msgid "Parameter Name"
msgstr ""
-#: part/models.py:2457
+#: part/models.py:2493
msgid "Parameter Units"
msgstr ""
-#: part/models.py:2487
+#: part/models.py:2523
msgid "Parent Part"
msgstr ""
-#: part/models.py:2489 part/models.py:2538 part/models.py:2539
-#: templates/InvenTree/settings/settings.html:181
+#: part/models.py:2525 part/models.py:2574 part/models.py:2575
+#: templates/InvenTree/settings/settings.html:218
msgid "Parameter Template"
msgstr ""
-#: part/models.py:2491
+#: part/models.py:2527
msgid "Data"
msgstr ""
-#: part/models.py:2491
+#: part/models.py:2527
msgid "Parameter Value"
msgstr ""
-#: part/models.py:2543 templates/InvenTree/settings/settings.html:190
+#: part/models.py:2579 templates/InvenTree/settings/settings.html:227
msgid "Default Value"
msgstr ""
-#: part/models.py:2544
+#: part/models.py:2580
msgid "Default Parameter Value"
msgstr ""
+#: part/models.py:2614
+msgid "Part ID or part name"
+msgstr ""
+
+#: part/models.py:2617 templates/js/translated/model_renderers.js:182
+msgid "Part ID"
+msgstr ""
+
+#: part/models.py:2618
+msgid "Unique part ID value"
+msgstr ""
+
#: part/models.py:2621
-msgid "Select parent part"
+msgid "Part Name"
+msgstr ""
+
+#: part/models.py:2625
+msgid "Part IPN"
+msgstr ""
+
+#: part/models.py:2626
+msgid "Part IPN value"
msgstr ""
#: part/models.py:2629
-msgid "Sub part"
+msgid "Level"
msgstr ""
#: part/models.py:2630
+msgid "BOM level"
+msgstr ""
+
+#: part/models.py:2690
+msgid "Select parent part"
+msgstr ""
+
+#: part/models.py:2698
+msgid "Sub part"
+msgstr ""
+
+#: part/models.py:2699
msgid "Select part to be used in BOM"
msgstr ""
-#: part/models.py:2636
+#: part/models.py:2705
msgid "BOM quantity for this BOM item"
msgstr ""
-#: part/models.py:2638 templates/js/translated/bom.js:578
-#: templates/js/translated/bom.js:652
+#: part/models.py:2707 part/templates/part/upload_bom.html:58
+#: templates/js/translated/bom.js:791 templates/js/translated/bom.js:865
#: templates/js/translated/table_filters.js:92
msgid "Optional"
msgstr ""
-#: part/models.py:2638
+#: part/models.py:2707
msgid "This BOM item is optional"
msgstr ""
-#: part/models.py:2641
+#: part/models.py:2710 part/templates/part/upload_bom.html:55
msgid "Overage"
msgstr ""
-#: part/models.py:2642
+#: part/models.py:2711
msgid "Estimated build wastage quantity (absolute or percentage)"
msgstr ""
-#: part/models.py:2645
+#: part/models.py:2714
msgid "BOM item reference"
msgstr ""
-#: part/models.py:2648
+#: part/models.py:2717
msgid "BOM item notes"
msgstr ""
-#: part/models.py:2650
+#: part/models.py:2719
msgid "Checksum"
msgstr ""
-#: part/models.py:2650
+#: part/models.py:2719
msgid "BOM line checksum"
msgstr ""
-#: part/models.py:2654 templates/js/translated/bom.js:669
+#: part/models.py:2723 part/templates/part/upload_bom.html:57
+#: templates/js/translated/bom.js:882
#: templates/js/translated/table_filters.js:68
#: templates/js/translated/table_filters.js:88
msgid "Inherited"
msgstr ""
-#: part/models.py:2655
+#: part/models.py:2724
msgid "This BOM item is inherited by BOMs for variant parts"
msgstr ""
-#: part/models.py:2660 templates/js/translated/bom.js:661
+#: part/models.py:2729 part/templates/part/upload_bom.html:56
+#: templates/js/translated/bom.js:874
msgid "Allow Variants"
msgstr ""
-#: part/models.py:2661
+#: part/models.py:2730
msgid "Stock items for variant parts can be used for this BOM item"
msgstr ""
-#: part/models.py:2746 stock/models.py:357
+#: part/models.py:2815 stock/models.py:357
msgid "Quantity must be integer value for trackable parts"
msgstr ""
-#: part/models.py:2755 part/models.py:2757
+#: part/models.py:2824 part/models.py:2826
msgid "Sub part must be specified"
msgstr ""
-#: part/models.py:2886
+#: part/models.py:2955
msgid "BOM Item Substitute"
msgstr ""
-#: part/models.py:2908
+#: part/models.py:2977
msgid "Substitute part cannot be the same as the master part"
msgstr ""
-#: part/models.py:2920
+#: part/models.py:2989
msgid "Parent BOM item"
msgstr ""
-#: part/models.py:2928
+#: part/models.py:2997
msgid "Substitute part"
msgstr ""
-#: part/models.py:2939
+#: part/models.py:3008
msgid "Part 1"
msgstr ""
-#: part/models.py:2943
+#: part/models.py:3012
msgid "Part 2"
msgstr ""
-#: part/models.py:2943
+#: part/models.py:3012
msgid "Select Related Part"
msgstr ""
-#: part/models.py:2975
+#: part/models.py:3044
msgid "Error creating relationship: check that the part is not related to itself and that the relationship is unique"
msgstr ""
-#: part/serializers.py:659
+#: part/serializers.py:667
msgid "Select part to copy BOM from"
msgstr ""
-#: part/serializers.py:670
+#: part/serializers.py:678
msgid "Remove Existing Data"
msgstr ""
-#: part/serializers.py:671
+#: part/serializers.py:679
msgid "Remove existing BOM items before copying"
msgstr ""
-#: part/serializers.py:676
+#: part/serializers.py:684
msgid "Include Inherited"
msgstr ""
-#: part/serializers.py:677
+#: part/serializers.py:685
msgid "Include BOM items which are inherited from templated parts"
msgstr ""
-#: part/serializers.py:682
+#: part/serializers.py:690
msgid "Skip Invalid Rows"
msgstr ""
-#: part/serializers.py:683
+#: part/serializers.py:691
msgid "Enable this option to skip invalid rows"
msgstr ""
-#: part/tasks.py:53
+#: part/serializers.py:734
+msgid "Clear Existing BOM"
+msgstr ""
+
+#: part/serializers.py:735
+msgid "Delete existing BOM items before uploading"
+msgstr ""
+
+#: part/serializers.py:762
+msgid "No part column specified"
+msgstr ""
+
+#: part/serializers.py:806
+msgid "Multiple matching parts found"
+msgstr ""
+
+#: part/serializers.py:809
+msgid "No matching part found"
+msgstr ""
+
+#: part/serializers.py:812
+msgid "Part is not designated as a component"
+msgstr ""
+
+#: part/serializers.py:821
+msgid "Quantity not provided"
+msgstr ""
+
+#: part/serializers.py:829
+msgid "Invalid quantity"
+msgstr ""
+
+#: part/serializers.py:848
+msgid "At least one BOM item is required"
+msgstr ""
+
+#: part/tasks.py:58
msgid "Low stock notification"
msgstr ""
@@ -4418,7 +4464,7 @@ msgstr ""
msgid "The BOM for %(part)s has not been validated."
msgstr ""
-#: part/templates/part/bom.html:30 part/templates/part/detail.html:270
+#: part/templates/part/bom.html:30 part/templates/part/detail.html:273
msgid "BOM actions"
msgstr ""
@@ -4426,34 +4472,6 @@ msgstr ""
msgid "Delete Items"
msgstr ""
-#: part/templates/part/bom_upload/match_parts.html:29
-msgid "Select Part"
-msgstr ""
-
-#: part/templates/part/bom_upload/upload_file.html:8
-msgid "Return to BOM"
-msgstr ""
-
-#: part/templates/part/bom_upload/upload_file.html:13
-msgid "Upload Bill of Materials"
-msgstr ""
-
-#: part/templates/part/bom_upload/upload_file.html:33
-msgid "Requirements for BOM upload"
-msgstr ""
-
-#: part/templates/part/bom_upload/upload_file.html:35
-msgid "The BOM file must contain the required named columns as provided in the "
-msgstr ""
-
-#: part/templates/part/bom_upload/upload_file.html:35
-msgid "BOM Upload Template"
-msgstr ""
-
-#: part/templates/part/bom_upload/upload_file.html:36
-msgid "Each part must already exist in the database"
-msgstr ""
-
#: part/templates/part/category.html:28 part/templates/part/category.html:32
msgid "You are subscribed to notifications for this category"
msgstr ""
@@ -4519,7 +4537,7 @@ msgstr ""
msgid "Create new part"
msgstr ""
-#: part/templates/part/category.html:161 templates/js/translated/bom.js:152
+#: part/templates/part/category.html:161 templates/js/translated/bom.js:365
msgid "New Part"
msgstr ""
@@ -4639,138 +4657,168 @@ msgstr ""
msgid "Sales Order Allocations"
msgstr ""
-#: part/templates/part/detail.html:159
+#: part/templates/part/detail.html:162
msgid "Part Variants"
msgstr ""
-#: part/templates/part/detail.html:163
+#: part/templates/part/detail.html:166
msgid "Create new variant"
msgstr ""
-#: part/templates/part/detail.html:164
+#: part/templates/part/detail.html:167
msgid "New Variant"
msgstr ""
-#: part/templates/part/detail.html:191
+#: part/templates/part/detail.html:194
msgid "Add new parameter"
msgstr ""
-#: part/templates/part/detail.html:228 part/templates/part/part_sidebar.html:49
+#: part/templates/part/detail.html:231 part/templates/part/part_sidebar.html:52
msgid "Related Parts"
msgstr ""
-#: part/templates/part/detail.html:232 part/templates/part/detail.html:233
+#: part/templates/part/detail.html:235 part/templates/part/detail.html:236
msgid "Add Related"
msgstr ""
-#: part/templates/part/detail.html:253 part/templates/part/part_sidebar.html:17
+#: part/templates/part/detail.html:256 part/templates/part/part_sidebar.html:18
msgid "Bill of Materials"
msgstr ""
-#: part/templates/part/detail.html:258
+#: part/templates/part/detail.html:261
msgid "Export actions"
msgstr ""
-#: part/templates/part/detail.html:262 templates/js/translated/bom.js:70
+#: part/templates/part/detail.html:265 templates/js/translated/bom.js:283
msgid "Export BOM"
msgstr ""
-#: part/templates/part/detail.html:264
+#: part/templates/part/detail.html:267
msgid "Print BOM Report"
msgstr ""
-#: part/templates/part/detail.html:274
+#: part/templates/part/detail.html:277
msgid "Upload BOM"
msgstr ""
-#: part/templates/part/detail.html:276 templates/js/translated/part.js:272
+#: part/templates/part/detail.html:279 templates/js/translated/part.js:272
msgid "Copy BOM"
msgstr ""
-#: part/templates/part/detail.html:278
+#: part/templates/part/detail.html:281
msgid "Validate BOM"
msgstr ""
-#: part/templates/part/detail.html:283
+#: part/templates/part/detail.html:286
msgid "New BOM Item"
msgstr ""
-#: part/templates/part/detail.html:284
+#: part/templates/part/detail.html:287
msgid "Add BOM Item"
msgstr ""
-#: part/templates/part/detail.html:297
+#: part/templates/part/detail.html:300
msgid "Assemblies"
msgstr ""
-#: part/templates/part/detail.html:314
+#: part/templates/part/detail.html:317
msgid "Part Builds"
msgstr ""
-#: part/templates/part/detail.html:339
+#: part/templates/part/detail.html:342
msgid "Build Order Allocations"
msgstr ""
-#: part/templates/part/detail.html:349
+#: part/templates/part/detail.html:352
msgid "Part Suppliers"
msgstr ""
-#: part/templates/part/detail.html:377
+#: part/templates/part/detail.html:380
msgid "Part Manufacturers"
msgstr ""
-#: part/templates/part/detail.html:393
+#: part/templates/part/detail.html:396
msgid "Delete manufacturer parts"
msgstr ""
-#: part/templates/part/detail.html:575
+#: part/templates/part/detail.html:578
msgid "Delete selected BOM items?"
msgstr ""
-#: part/templates/part/detail.html:576
+#: part/templates/part/detail.html:579
msgid "All selected BOM items will be deleted"
msgstr ""
-#: part/templates/part/detail.html:625
+#: part/templates/part/detail.html:628
msgid "Create BOM Item"
msgstr ""
-#: part/templates/part/detail.html:682
+#: part/templates/part/detail.html:685
msgid "Related Part"
msgstr ""
-#: part/templates/part/detail.html:690
+#: part/templates/part/detail.html:693
msgid "Add Related Part"
msgstr ""
-#: part/templates/part/detail.html:785
+#: part/templates/part/detail.html:788
msgid "Add Test Result Template"
msgstr ""
-#: part/templates/part/detail.html:842
+#: part/templates/part/detail.html:845
msgid "Edit Part Notes"
msgstr ""
-#: part/templates/part/detail.html:955
+#: part/templates/part/detail.html:958
#, python-format
msgid "Purchase Unit Price - %(currency)s"
msgstr ""
-#: part/templates/part/detail.html:967
+#: part/templates/part/detail.html:970
#, python-format
msgid "Unit Price-Cost Difference - %(currency)s"
msgstr ""
-#: part/templates/part/detail.html:979
+#: part/templates/part/detail.html:982
#, python-format
msgid "Supplier Unit Cost - %(currency)s"
msgstr ""
-#: part/templates/part/detail.html:1068
+#: part/templates/part/detail.html:1071
#, python-format
msgid "Unit Price - %(currency)s"
msgstr ""
+#: part/templates/part/import_wizard/ajax_match_fields.html:9
+#: part/templates/part/import_wizard/match_fields.html:9
+#: templates/patterns/wizard/match_fields.html:8
+msgid "Missing selections for the following required columns"
+msgstr ""
+
+#: part/templates/part/import_wizard/ajax_match_fields.html:20
+#: part/templates/part/import_wizard/match_fields.html:20
+#: templates/patterns/wizard/match_fields.html:19
+msgid "Duplicate selections found, see below. Fix them then retry submitting."
+msgstr ""
+
+#: part/templates/part/import_wizard/ajax_match_fields.html:28
+#: part/templates/part/import_wizard/match_fields.html:35
+#: templates/patterns/wizard/match_fields.html:34
+msgid "File Fields"
+msgstr ""
+
+#: part/templates/part/import_wizard/ajax_match_fields.html:35
+#: part/templates/part/import_wizard/match_fields.html:42
+#: templates/patterns/wizard/match_fields.html:41
+msgid "Remove column"
+msgstr ""
+
+#: part/templates/part/import_wizard/ajax_match_fields.html:53
+#: part/templates/part/import_wizard/match_fields.html:60
+#: templates/patterns/wizard/match_fields.html:59
+msgid "Duplicate selection"
+msgstr ""
+
#: part/templates/part/import_wizard/ajax_part_upload.html:29
#: part/templates/part/import_wizard/part_upload.html:53
msgid "Unsuffitient privileges."
@@ -4819,7 +4867,7 @@ msgid "Show pricing information"
msgstr ""
#: part/templates/part/part_base.html:56
-#: stock/templates/stock/item_base.html:110
+#: stock/templates/stock/item_base.html:112
#: stock/templates/stock/location.html:44
msgid "Stock actions"
msgstr ""
@@ -4912,7 +4960,7 @@ msgstr ""
msgid "Allocated to Orders"
msgstr ""
-#: part/templates/part/part_base.html:239 templates/js/translated/bom.js:690
+#: part/templates/part/part_base.html:239 templates/js/translated/bom.js:903
msgid "Can Build"
msgstr ""
@@ -4930,7 +4978,7 @@ msgid "Latest Serial Number"
msgstr ""
#: part/templates/part/part_base.html:328
-#: stock/templates/stock/item_base.html:166
+#: stock/templates/stock/item_base.html:168
msgid "Search for serial number"
msgstr ""
@@ -4969,7 +5017,7 @@ msgid "Total Cost"
msgstr ""
#: part/templates/part/part_pricing.html:40 part/templates/part/prices.html:40
-#: templates/js/translated/bom.js:644
+#: templates/js/translated/bom.js:857
msgid "No supplier pricing available"
msgstr ""
@@ -5003,20 +5051,20 @@ msgstr ""
msgid "No pricing information is available for this part."
msgstr ""
-#: part/templates/part/part_sidebar.html:11
+#: part/templates/part/part_sidebar.html:12
msgid "Variants"
msgstr ""
-#: part/templates/part/part_sidebar.html:25
+#: part/templates/part/part_sidebar.html:26
msgid "Used In"
msgstr ""
-#: part/templates/part/part_sidebar.html:31
+#: part/templates/part/part_sidebar.html:34
#: stock/templates/stock/stock_sidebar.html:8
msgid "Allocations"
msgstr ""
-#: part/templates/part/part_sidebar.html:45
+#: part/templates/part/part_sidebar.html:48
msgid "Test Templates"
msgstr ""
@@ -5089,7 +5137,7 @@ msgstr ""
msgid "Calculation parameters"
msgstr ""
-#: part/templates/part/prices.html:155 templates/js/translated/bom.js:638
+#: part/templates/part/prices.html:155 templates/js/translated/bom.js:851
msgid "Supplier Cost"
msgstr ""
@@ -5111,7 +5159,7 @@ msgstr ""
msgid "Internal Cost"
msgstr ""
-#: part/templates/part/prices.html:215 part/views.py:1699
+#: part/templates/part/prices.html:215 part/views.py:1390
msgid "Add Internal Price Break"
msgstr ""
@@ -5131,7 +5179,7 @@ msgstr ""
msgid "Set category for the following parts"
msgstr ""
-#: part/templates/part/stock_count.html:7 templates/js/translated/bom.js:600
+#: part/templates/part/stock_count.html:7 templates/js/translated/bom.js:813
#: templates/js/translated/part.js:497 templates/js/translated/part.js:1122
#: templates/js/translated/part.js:1309
msgid "No Stock"
@@ -5141,6 +5189,43 @@ msgstr ""
msgid "Low Stock"
msgstr ""
+#: part/templates/part/upload_bom.html:8
+msgid "Return to BOM"
+msgstr ""
+
+#: part/templates/part/upload_bom.html:13
+msgid "Upload Bill of Materials"
+msgstr ""
+
+#: part/templates/part/upload_bom.html:19
+msgid "BOM upload requirements"
+msgstr ""
+
+#: part/templates/part/upload_bom.html:23
+#: part/templates/part/upload_bom.html:90
+msgid "Upload BOM File"
+msgstr ""
+
+#: part/templates/part/upload_bom.html:29
+msgid "Submit BOM Data"
+msgstr ""
+
+#: part/templates/part/upload_bom.html:37
+msgid "Requirements for BOM upload"
+msgstr ""
+
+#: part/templates/part/upload_bom.html:39
+msgid "The BOM file must contain the required named columns as provided in the "
+msgstr ""
+
+#: part/templates/part/upload_bom.html:39
+msgid "BOM Upload Template"
+msgstr ""
+
+#: part/templates/part/upload_bom.html:40
+msgid "Each part must already exist in the database"
+msgstr ""
+
#: part/templates/part/variant_part.html:9
msgid "Create new part variant"
msgstr ""
@@ -5154,104 +5239,96 @@ msgstr ""
msgid "Unknown database"
msgstr ""
-#: part/views.py:93
+#: part/views.py:90
msgid "Set Part Category"
msgstr ""
-#: part/views.py:143
+#: part/views.py:140
#, python-brace-format
msgid "Set category for {n} parts"
msgstr ""
-#: part/views.py:215
+#: part/views.py:212
msgid "Match References"
msgstr ""
-#: part/views.py:511
+#: part/views.py:509
msgid "None"
msgstr ""
-#: part/views.py:570
+#: part/views.py:568
msgid "Part QR Code"
msgstr ""
-#: part/views.py:672
+#: part/views.py:670
msgid "Select Part Image"
msgstr ""
-#: part/views.py:698
+#: part/views.py:696
msgid "Updated part image"
msgstr ""
-#: part/views.py:701
+#: part/views.py:699
msgid "Part image not found"
msgstr ""
-#: part/views.py:775
-msgid "Match Parts"
-msgstr ""
-
-#: part/views.py:1110
-msgid "Export Bill of Materials"
-msgstr ""
-
-#: part/views.py:1159
+#: part/views.py:850
msgid "Confirm Part Deletion"
msgstr ""
-#: part/views.py:1166
+#: part/views.py:857
msgid "Part was deleted"
msgstr ""
-#: part/views.py:1175
+#: part/views.py:866
msgid "Part Pricing"
msgstr ""
-#: part/views.py:1324
+#: part/views.py:1015
msgid "Create Part Parameter Template"
msgstr ""
-#: part/views.py:1334
+#: part/views.py:1025
msgid "Edit Part Parameter Template"
msgstr ""
-#: part/views.py:1341
+#: part/views.py:1032
msgid "Delete Part Parameter Template"
msgstr ""
-#: part/views.py:1400 templates/js/translated/part.js:315
+#: part/views.py:1091 templates/js/translated/part.js:315
msgid "Edit Part Category"
msgstr ""
-#: part/views.py:1438
+#: part/views.py:1129
msgid "Delete Part Category"
msgstr ""
-#: part/views.py:1444
+#: part/views.py:1135
msgid "Part category was deleted"
msgstr ""
-#: part/views.py:1453
+#: part/views.py:1144
msgid "Create Category Parameter Template"
msgstr ""
-#: part/views.py:1554
+#: part/views.py:1245
msgid "Edit Category Parameter Template"
msgstr ""
-#: part/views.py:1610
+#: part/views.py:1301
msgid "Delete Category Parameter Template"
msgstr ""
-#: part/views.py:1632
+#: part/views.py:1323
msgid "Added new price break"
msgstr ""
-#: part/views.py:1708
+#: part/views.py:1399
msgid "Edit Internal Price Break"
msgstr ""
-#: part/views.py:1716
+#: part/views.py:1407
msgid "Delete Internal Price Break"
msgstr ""
@@ -5453,12 +5530,12 @@ msgid "Stock Item Test Report"
msgstr ""
#: report/templates/report/inventree_test_report_base.html:79
-#: stock/models.py:519 stock/templates/stock/item_base.html:156
-#: templates/js/translated/build.js:293 templates/js/translated/build.js:697
-#: templates/js/translated/build.js:1073
+#: stock/models.py:519 stock/templates/stock/item_base.html:158
+#: templates/js/translated/build.js:373 templates/js/translated/build.js:521
+#: templates/js/translated/build.js:919 templates/js/translated/build.js:1295
#: 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:423
+#: templates/js/translated/order.js:2034 templates/js/translated/stock.js:424
msgid "Serial Number"
msgstr ""
@@ -5479,7 +5556,7 @@ msgstr ""
#: report/templates/report/inventree_test_report_base.html:97
#: templates/InvenTree/settings/plugin.html:50
#: templates/InvenTree/settings/plugin_settings.html:38
-#: templates/js/translated/order.js:849 templates/js/translated/stock.js:2525
+#: templates/js/translated/order.js:849 templates/js/translated/stock.js:2649
msgid "Date"
msgstr ""
@@ -5497,71 +5574,67 @@ msgid "Installed Items"
msgstr ""
#: report/templates/report/inventree_test_report_base.html:137
-#: templates/js/translated/stock.js:586 templates/js/translated/stock.js:756
-#: templates/js/translated/stock.js:2785
+#: templates/js/translated/stock.js:587 templates/js/translated/stock.js:757
+#: templates/js/translated/stock.js:2909
msgid "Serial"
msgstr ""
-#: stock/api.py:476
+#: stock/api.py:501
msgid "Quantity is required"
msgstr ""
-#: stock/api.py:483
+#: stock/api.py:508
msgid "Valid part must be supplied"
msgstr ""
-#: stock/forms.py:77 stock/forms.py:251 stock/models.py:576
-#: stock/templates/stock/item_base.html:193
-#: templates/js/translated/stock.js:1709
+#: stock/api.py:535
+msgid "Serial numbers cannot be supplied for a non-trackable part"
+msgstr ""
+
+#: stock/forms.py:74 stock/forms.py:198 stock/models.py:576
+#: stock/templates/stock/item_base.html:195
+#: templates/js/translated/stock.js:1833
msgid "Expiry Date"
msgstr ""
-#: stock/forms.py:78 stock/forms.py:252
+#: stock/forms.py:75 stock/forms.py:199
msgid "Expiration date for this stock item"
msgstr ""
-#: stock/forms.py:81
+#: stock/forms.py:78
msgid "Enter unique serial numbers (or leave blank)"
msgstr ""
-#: stock/forms.py:136
+#: stock/forms.py:133
msgid "Destination for serialized stock (by default, will remain in current location)"
msgstr ""
-#: stock/forms.py:138
+#: stock/forms.py:135
msgid "Serial numbers"
msgstr ""
-#: stock/forms.py:138
+#: stock/forms.py:135
msgid "Unique serial numbers (must match quantity)"
msgstr ""
-#: stock/forms.py:140 stock/forms.py:224
+#: stock/forms.py:137 stock/forms.py:171
msgid "Add transaction note (optional)"
msgstr ""
-#: stock/forms.py:180
-msgid "Stock item to install"
-msgstr ""
-
-#: stock/forms.py:210
-msgid "Must not exceed available quantity"
-msgstr ""
-
-#: stock/forms.py:222
+#: stock/forms.py:169
msgid "Destination location for uninstalled items"
msgstr ""
-#: stock/forms.py:226
+#: stock/forms.py:173
msgid "Confirm uninstall"
msgstr ""
-#: stock/forms.py:226
+#: stock/forms.py:173
msgid "Confirm removal of installed stock items"
msgstr ""
#: stock/models.py:62 stock/models.py:613
-#: stock/templates/stock/item_base.html:416
+#: stock/templates/stock/item_base.html:418
msgid "Owner"
msgstr ""
@@ -5623,7 +5696,7 @@ msgstr ""
msgid "Packaging this stock item is stored in"
msgstr ""
-#: stock/models.py:502 stock/templates/stock/item_base.html:298
+#: stock/models.py:502 stock/templates/stock/item_base.html:300
msgid "Installed In"
msgstr ""
@@ -5733,7 +5806,7 @@ msgstr ""
msgid "Serialized stock cannot be merged"
msgstr ""
-#: stock/models.py:1214 stock/serializers.py:775
+#: stock/models.py:1214 stock/serializers.py:832
msgid "Duplicate stock items"
msgstr ""
@@ -5769,7 +5842,7 @@ msgstr ""
msgid "Test name"
msgstr ""
-#: stock/models.py:1983 templates/js/translated/table_filters.js:271
+#: stock/models.py:1983
msgid "Test result"
msgstr ""
@@ -5806,7 +5879,7 @@ msgstr ""
msgid "Enter serial numbers for new items"
msgstr ""
-#: stock/serializers.py:326 stock/serializers.py:732 stock/serializers.py:973
+#: stock/serializers.py:326 stock/serializers.py:789 stock/serializers.py:1030
msgid "Destination stock location"
msgstr ""
@@ -5818,63 +5891,79 @@ msgstr ""
msgid "Serial numbers cannot be assigned to this part"
msgstr ""
-#: stock/serializers.py:589
+#: stock/serializers.py:363 stock/views.py:1108
+msgid "Serial numbers already exist"
+msgstr "Seriernummer eksisterer allerede"
+
+#: stock/serializers.py:405
+msgid "Select stock item to install"
+msgstr ""
+
+#: stock/serializers.py:421
+msgid "Stock item is unavailable"
+msgstr ""
+
+#: stock/serializers.py:428
+msgid "Selected part is not in the Bill of Materials"
+msgstr ""
+
+#: stock/serializers.py:646
msgid "Part must be salable"
msgstr ""
-#: stock/serializers.py:593
+#: stock/serializers.py:650
msgid "Item is allocated to a sales order"
msgstr ""
-#: stock/serializers.py:597
+#: stock/serializers.py:654
msgid "Item is allocated to a build order"
msgstr ""
-#: stock/serializers.py:627
+#: stock/serializers.py:684
msgid "Customer to assign stock items"
msgstr ""
-#: stock/serializers.py:633
+#: stock/serializers.py:690
msgid "Selected company is not a customer"
msgstr ""
-#: stock/serializers.py:641
+#: stock/serializers.py:698
msgid "Stock assignment notes"
msgstr ""
-#: stock/serializers.py:651 stock/serializers.py:881
+#: stock/serializers.py:708 stock/serializers.py:938
msgid "A list of stock items must be provided"
msgstr ""
-#: stock/serializers.py:739
+#: stock/serializers.py:796
msgid "Stock merging notes"
msgstr ""
-#: stock/serializers.py:744
+#: stock/serializers.py:801
msgid "Allow mismatched suppliers"
msgstr ""
-#: stock/serializers.py:745
+#: stock/serializers.py:802
msgid "Allow stock items with different supplier parts to be merged"
msgstr ""
-#: stock/serializers.py:750
+#: stock/serializers.py:807
msgid "Allow mismatched status"
msgstr ""
-#: stock/serializers.py:751
+#: stock/serializers.py:808
msgid "Allow stock items with different status codes to be merged"
msgstr ""
-#: stock/serializers.py:761
+#: stock/serializers.py:818
msgid "At least two stock items must be provided"
msgstr ""
-#: stock/serializers.py:843
+#: stock/serializers.py:900
msgid "StockItem primary key value"
msgstr ""
-#: stock/serializers.py:871
+#: stock/serializers.py:928
msgid "Stock transaction notes"
msgstr ""
@@ -5919,22 +6008,14 @@ msgstr ""
msgid "Installed Stock Items"
msgstr ""
-#: stock/templates/stock/item.html:154 stock/views.py:482
+#: stock/templates/stock/item.html:154 templates/js/translated/stock.js:3018
msgid "Install Stock Item"
msgstr ""
-#: stock/templates/stock/item.html:309 stock/templates/stock/item.html:334
+#: stock/templates/stock/item.html:304 templates/js/translated/stock.js:1480
msgid "Add Test Result"
msgstr ""
-#: stock/templates/stock/item.html:354
-msgid "Edit Test Result"
-msgstr ""
-
-#: stock/templates/stock/item.html:368
-msgid "Delete Test Result"
-msgstr ""
-
#: stock/templates/stock/item_base.html:42
#: templates/js/translated/barcode.js:330
#: templates/js/translated/barcode.js:335
@@ -5995,129 +6076,129 @@ msgstr ""
msgid "Uninstall"
msgstr ""
-#: stock/templates/stock/item_base.html:101
+#: stock/templates/stock/item_base.html:102
msgid "Install stock item"
msgstr ""
-#: stock/templates/stock/item_base.html:101
+#: stock/templates/stock/item_base.html:102
msgid "Install"
msgstr ""
-#: stock/templates/stock/item_base.html:115
+#: stock/templates/stock/item_base.html:117
msgid "Convert to variant"
msgstr ""
-#: stock/templates/stock/item_base.html:118
+#: stock/templates/stock/item_base.html:120
msgid "Duplicate stock item"
msgstr ""
-#: stock/templates/stock/item_base.html:120
+#: stock/templates/stock/item_base.html:122
msgid "Edit stock item"
msgstr ""
-#: stock/templates/stock/item_base.html:123
+#: stock/templates/stock/item_base.html:125
msgid "Delete stock item"
msgstr ""
-#: stock/templates/stock/item_base.html:161
+#: stock/templates/stock/item_base.html:163
msgid "previous page"
msgstr ""
-#: stock/templates/stock/item_base.html:161
+#: stock/templates/stock/item_base.html:163
msgid "Navigate to previous serial number"
msgstr ""
-#: stock/templates/stock/item_base.html:170
+#: stock/templates/stock/item_base.html:172
msgid "next page"
msgstr ""
-#: stock/templates/stock/item_base.html:170
+#: stock/templates/stock/item_base.html:172
msgid "Navigate to next serial number"
msgstr ""
-#: stock/templates/stock/item_base.html:197
+#: stock/templates/stock/item_base.html:199
#, python-format
msgid "This StockItem expired on %(item.expiry_date)s"
msgstr ""
-#: stock/templates/stock/item_base.html:197
+#: stock/templates/stock/item_base.html:199
#: templates/js/translated/table_filters.js:252
msgid "Expired"
msgstr ""
-#: stock/templates/stock/item_base.html:199
+#: stock/templates/stock/item_base.html:201
#, python-format
msgid "This StockItem expires on %(item.expiry_date)s"
msgstr ""
-#: stock/templates/stock/item_base.html:199
+#: stock/templates/stock/item_base.html:201
#: templates/js/translated/table_filters.js:258
msgid "Stale"
msgstr ""
-#: stock/templates/stock/item_base.html:206
-#: templates/js/translated/stock.js:1722
+#: stock/templates/stock/item_base.html:208
+#: templates/js/translated/stock.js:1846
msgid "Last Updated"
msgstr ""
-#: stock/templates/stock/item_base.html:211
+#: stock/templates/stock/item_base.html:213
msgid "Last Stocktake"
msgstr ""
-#: stock/templates/stock/item_base.html:215
+#: stock/templates/stock/item_base.html:217
msgid "No stocktake performed"
msgstr ""
-#: stock/templates/stock/item_base.html:233
+#: stock/templates/stock/item_base.html:235
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:240
+#: stock/templates/stock/item_base.html:242
msgid "This stock item is in production and cannot be edited."
msgstr ""
-#: stock/templates/stock/item_base.html:241
+#: stock/templates/stock/item_base.html:243
msgid "Edit the stock item from the build view."
msgstr ""
-#: stock/templates/stock/item_base.html:254
+#: stock/templates/stock/item_base.html:256
msgid "This stock item has not passed all required tests"
msgstr ""
-#: stock/templates/stock/item_base.html:262
+#: stock/templates/stock/item_base.html:264
msgid "This stock item is allocated to Sales Order"
msgstr ""
-#: stock/templates/stock/item_base.html:270
+#: stock/templates/stock/item_base.html:272
msgid "This stock item is allocated to Build Order"
msgstr ""
-#: stock/templates/stock/item_base.html:276
+#: stock/templates/stock/item_base.html:278
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:317
-#: templates/js/translated/build.js:1095
+#: stock/templates/stock/item_base.html:319
+#: templates/js/translated/build.js:1317
msgid "No location set"
msgstr ""
-#: stock/templates/stock/item_base.html:324
+#: stock/templates/stock/item_base.html:326
msgid "Barcode Identifier"
msgstr ""
-#: stock/templates/stock/item_base.html:366
+#: stock/templates/stock/item_base.html:368
msgid "Parent Item"
msgstr ""
-#: stock/templates/stock/item_base.html:384
+#: stock/templates/stock/item_base.html:386
msgid "No manufacturer set"
msgstr ""
-#: stock/templates/stock/item_base.html:409
+#: stock/templates/stock/item_base.html:411
msgid "Tests"
msgstr ""
-#: stock/templates/stock/item_base.html:499
+#: stock/templates/stock/item_base.html:492
msgid "Edit Stock Status"
msgstr ""
@@ -6130,39 +6211,6 @@ msgstr ""
msgid "This will remove %(qty)s units of %(full_name)s from stock."
msgstr ""
-#: stock/templates/stock/item_install.html:8
-msgid "Install another Stock Item into this item."
-msgstr ""
-
-#: stock/templates/stock/item_install.html:11
-#: stock/templates/stock/item_install.html:24
-msgid "Stock items can only be installed if they meet the following criteria"
-msgstr ""
-
-#: stock/templates/stock/item_install.html:14
-msgid "The Stock Item links to a Part which is in the BOM for this Stock Item"
-msgstr ""
-
-#: stock/templates/stock/item_install.html:15
-msgid "The Stock Item is currently in stock"
-msgstr ""
-
-#: stock/templates/stock/item_install.html:16
-msgid "The Stock Item is serialized and does not belong to another item"
-msgstr ""
-
-#: stock/templates/stock/item_install.html:21
-msgid "Install this Stock Item in another stock item."
-msgstr ""
-
-#: stock/templates/stock/item_install.html:27
-msgid "The part associated to this Stock Item belongs to another part's BOM"
-msgstr ""
-
-#: stock/templates/stock/item_install.html:28
-msgid "This Stock Item is serialized and does not belong to another item"
-msgstr ""
-
#: stock/templates/stock/item_serialize.html:5
msgid "Create serialized items from this stock item."
msgstr ""
@@ -6247,7 +6295,7 @@ msgstr ""
msgid "The following stock items will be uninstalled"
msgstr ""
-#: stock/templates/stock/stockitem_convert.html:7 stock/views.py:879
+#: stock/templates/stock/stockitem_convert.html:7 stock/views.py:730
msgid "Convert Stock Item"
msgstr ""
@@ -6268,11 +6316,11 @@ msgstr ""
msgid "Are you sure you want to delete this stock tracking entry?"
msgstr ""
-#: stock/views.py:162 templates/js/translated/stock.js:139
+#: stock/views.py:162 templates/js/translated/stock.js:140
msgid "Edit Stock Location"
msgstr ""
-#: stock/views.py:269 stock/views.py:858 stock/views.py:984 stock/views.py:1266
+#: stock/views.py:269 stock/views.py:709 stock/views.py:835 stock/views.py:1117
msgid "Owner is required (ownership control is enabled)"
msgstr ""
@@ -6300,59 +6348,63 @@ msgstr ""
msgid "Confirm test data deletion"
msgstr ""
+#: stock/views.py:352
+msgid "Check the confirmation box"
+msgstr "Sjekk bekreftelsesboksen"
+
#: stock/views.py:456
msgid "Stock Item QR Code"
msgstr ""
-#: stock/views.py:630
+#: stock/views.py:481
msgid "Uninstall Stock Items"
msgstr ""
-#: stock/views.py:727 templates/js/translated/stock.js:1074
+#: stock/views.py:578 templates/js/translated/stock.js:1075
msgid "Confirm stock adjustment"
msgstr ""
-#: stock/views.py:738
+#: stock/views.py:589
msgid "Uninstalled stock items"
msgstr ""
-#: stock/views.py:760 templates/js/translated/stock.js:332
+#: stock/views.py:611 templates/js/translated/stock.js:333
msgid "Edit Stock Item"
msgstr ""
-#: stock/views.py:910
+#: stock/views.py:761
msgid "Create new Stock Location"
msgstr ""
-#: stock/views.py:1011
+#: stock/views.py:862
msgid "Create new Stock Item"
msgstr ""
-#: stock/views.py:1153 templates/js/translated/stock.js:312
+#: stock/views.py:1004 templates/js/translated/stock.js:313
msgid "Duplicate Stock Item"
msgstr ""
-#: stock/views.py:1235
+#: stock/views.py:1086
msgid "Quantity cannot be negative"
msgstr ""
-#: stock/views.py:1335
+#: stock/views.py:1186
msgid "Delete Stock Location"
msgstr ""
-#: stock/views.py:1348
+#: stock/views.py:1199
msgid "Delete Stock Item"
msgstr ""
-#: stock/views.py:1359
+#: stock/views.py:1210
msgid "Delete Stock Tracking Entry"
msgstr ""
-#: stock/views.py:1366
+#: stock/views.py:1217
msgid "Edit Stock Tracking Entry"
msgstr ""
-#: stock/views.py:1375
+#: stock/views.py:1226
msgid "Add Stock Tracking Entry"
msgstr ""
@@ -6527,15 +6579,15 @@ msgstr ""
msgid "Part Settings"
msgstr ""
-#: templates/InvenTree/settings/part.html:43
+#: templates/InvenTree/settings/part.html:44
msgid "Part Import"
msgstr ""
-#: templates/InvenTree/settings/part.html:47
+#: templates/InvenTree/settings/part.html:48
msgid "Import Part"
msgstr ""
-#: templates/InvenTree/settings/part.html:61
+#: templates/InvenTree/settings/part.html:62
msgid "Part Parameter Templates"
msgstr ""
@@ -6663,45 +6715,45 @@ msgstr ""
msgid "Report Settings"
msgstr ""
-#: templates/InvenTree/settings/setting.html:30
+#: templates/InvenTree/settings/setting.html:33
msgid "No value set"
msgstr ""
-#: templates/InvenTree/settings/setting.html:41
+#: templates/InvenTree/settings/setting.html:38
msgid "Edit setting"
msgstr ""
-#: templates/InvenTree/settings/settings.html:78
+#: templates/InvenTree/settings/settings.html:115
msgid "Edit Plugin Setting"
msgstr ""
-#: templates/InvenTree/settings/settings.html:80
+#: templates/InvenTree/settings/settings.html:117
msgid "Edit Global Setting"
msgstr ""
-#: templates/InvenTree/settings/settings.html:82
+#: templates/InvenTree/settings/settings.html:119
msgid "Edit User Setting"
msgstr ""
-#: templates/InvenTree/settings/settings.html:171
+#: templates/InvenTree/settings/settings.html:208
msgid "No category parameter templates found"
msgstr ""
-#: templates/InvenTree/settings/settings.html:193
-#: templates/InvenTree/settings/settings.html:292
+#: templates/InvenTree/settings/settings.html:230
+#: templates/InvenTree/settings/settings.html:329
msgid "Edit Template"
msgstr ""
-#: templates/InvenTree/settings/settings.html:194
-#: templates/InvenTree/settings/settings.html:293
+#: templates/InvenTree/settings/settings.html:231
+#: templates/InvenTree/settings/settings.html:330
msgid "Delete Template"
msgstr ""
-#: templates/InvenTree/settings/settings.html:272
+#: templates/InvenTree/settings/settings.html:309
msgid "No part parameter templates found"
msgstr ""
-#: templates/InvenTree/settings/settings.html:276
+#: templates/InvenTree/settings/settings.html:313
msgid "ID"
msgstr ""
@@ -6996,10 +7048,11 @@ msgid "InvenTree Version Information"
msgstr ""
#: templates/about.html:11 templates/about.html:105
-#: templates/js/translated/bom.js:407 templates/js/translated/modals.js:53
-#: templates/js/translated/modals.js:584 templates/js/translated/modals.js:678
-#: templates/js/translated/modals.js:983 templates/modals.html:15
-#: templates/modals.html:27 templates/modals.html:39 templates/modals.html:50
+#: templates/js/translated/bom.js:132 templates/js/translated/bom.js:620
+#: templates/js/translated/modals.js:53 templates/js/translated/modals.js:584
+#: templates/js/translated/modals.js:678 templates/js/translated/modals.js:986
+#: templates/modals.html:15 templates/modals.html:27 templates/modals.html:39
+#: templates/modals.html:50
msgid "Close"
msgstr ""
@@ -7275,14 +7328,14 @@ msgid "The following parts are low on required stock"
msgstr ""
#: templates/email/build_order_required_stock.html:18
-#: templates/js/translated/bom.js:1117
+#: templates/js/translated/bom.js:1335
msgid "Required Quantity"
msgstr ""
#: templates/email/build_order_required_stock.html:19
#: templates/email/low_stock_notification.html:18
-#: templates/js/translated/bom.js:591 templates/js/translated/build.js:1189
-#: templates/js/translated/build.js:1810
+#: templates/js/translated/bom.js:804 templates/js/translated/build.js:1411
+#: templates/js/translated/build.js:2048
#: templates/js/translated/table_filters.js:178
msgid "Available"
msgstr ""
@@ -7325,11 +7378,11 @@ msgstr ""
msgid "Remote image must not exceed maximum allowable file size"
msgstr ""
-#: templates/js/translated/api.js:185 templates/js/translated/modals.js:1053
+#: templates/js/translated/api.js:185 templates/js/translated/modals.js:1056
msgid "No Response"
msgstr ""
-#: templates/js/translated/api.js:186 templates/js/translated/modals.js:1054
+#: templates/js/translated/api.js:186 templates/js/translated/modals.js:1057
msgid "No response from the InvenTree server"
msgstr ""
@@ -7341,27 +7394,27 @@ msgstr ""
msgid "API request returned error code 400"
msgstr ""
-#: templates/js/translated/api.js:197 templates/js/translated/modals.js:1063
+#: templates/js/translated/api.js:197 templates/js/translated/modals.js:1066
msgid "Error 401: Not Authenticated"
msgstr ""
-#: templates/js/translated/api.js:198 templates/js/translated/modals.js:1064
+#: templates/js/translated/api.js:198 templates/js/translated/modals.js:1067
msgid "Authentication credentials not supplied"
msgstr ""
-#: templates/js/translated/api.js:202 templates/js/translated/modals.js:1068
+#: templates/js/translated/api.js:202 templates/js/translated/modals.js:1071
msgid "Error 403: Permission Denied"
msgstr ""
-#: templates/js/translated/api.js:203 templates/js/translated/modals.js:1069
+#: templates/js/translated/api.js:203 templates/js/translated/modals.js:1072
msgid "You do not have the required permissions to access this function"
msgstr ""
-#: templates/js/translated/api.js:207 templates/js/translated/modals.js:1073
+#: templates/js/translated/api.js:207 templates/js/translated/modals.js:1076
msgid "Error 404: Resource Not Found"
msgstr ""
-#: templates/js/translated/api.js:208 templates/js/translated/modals.js:1074
+#: templates/js/translated/api.js:208 templates/js/translated/modals.js:1077
msgid "The requested resource could not be located on the server"
msgstr ""
@@ -7373,11 +7426,11 @@ msgstr ""
msgid "HTTP method not allowed at URL"
msgstr ""
-#: templates/js/translated/api.js:217 templates/js/translated/modals.js:1078
+#: templates/js/translated/api.js:217 templates/js/translated/modals.js:1081
msgid "Error 408: Timeout"
msgstr ""
-#: templates/js/translated/api.js:218 templates/js/translated/modals.js:1079
+#: templates/js/translated/api.js:218 templates/js/translated/modals.js:1082
msgid "Connection timeout while requesting data from server"
msgstr ""
@@ -7446,7 +7499,7 @@ msgid "Unknown response from server"
msgstr ""
#: templates/js/translated/barcode.js:140
-#: templates/js/translated/modals.js:1043
+#: templates/js/translated/modals.js:1046
msgid "Invalid server response"
msgstr ""
@@ -7474,7 +7527,7 @@ msgstr ""
msgid "Unlink"
msgstr ""
-#: templates/js/translated/barcode.js:397 templates/js/translated/stock.js:1026
+#: templates/js/translated/barcode.js:397 templates/js/translated/stock.js:1027
msgid "Remove stock item"
msgstr ""
@@ -7516,327 +7569,369 @@ msgstr ""
msgid "Barcode does not match a valid location"
msgstr ""
-#: templates/js/translated/bom.js:36
+#: templates/js/translated/bom.js:75
+msgid "Display row data"
+msgstr ""
+
+#: templates/js/translated/bom.js:131
+msgid "Row Data"
+msgstr ""
+
+#: templates/js/translated/bom.js:249
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:518
+#: templates/js/translated/bom.js:252 templates/js/translated/bom.js:286
+#: templates/js/translated/order.js:369 templates/js/translated/stock.js:519
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:519
+#: templates/js/translated/bom.js:253 templates/js/translated/bom.js:287
+#: templates/js/translated/order.js:370 templates/js/translated/stock.js:520
msgid "Select file format"
msgstr ""
-#: templates/js/translated/bom.js:81
+#: templates/js/translated/bom.js:294
msgid "Cascading"
msgstr ""
-#: templates/js/translated/bom.js:82
+#: templates/js/translated/bom.js:295
msgid "Download cascading / multi-level BOM"
msgstr ""
-#: templates/js/translated/bom.js:87
+#: templates/js/translated/bom.js:300
msgid "Levels"
msgstr ""
-#: templates/js/translated/bom.js:88
+#: templates/js/translated/bom.js:301
msgid "Select maximum number of BOM levels to export (0 = all levels)"
msgstr ""
-#: templates/js/translated/bom.js:94
+#: templates/js/translated/bom.js:307
msgid "Include Parameter Data"
msgstr ""
-#: templates/js/translated/bom.js:95
+#: templates/js/translated/bom.js:308
msgid "Include part parameter data in exported BOM"
msgstr ""
-#: templates/js/translated/bom.js:100
+#: templates/js/translated/bom.js:313
msgid "Include Stock Data"
msgstr ""
-#: templates/js/translated/bom.js:101
+#: templates/js/translated/bom.js:314
msgid "Include part stock data in exported BOM"
msgstr ""
-#: templates/js/translated/bom.js:106
+#: templates/js/translated/bom.js:319
msgid "Include Manufacturer Data"
msgstr ""
-#: templates/js/translated/bom.js:107
+#: templates/js/translated/bom.js:320
msgid "Include part manufacturer data in exported BOM"
msgstr ""
-#: templates/js/translated/bom.js:112
+#: templates/js/translated/bom.js:325
msgid "Include Supplier Data"
msgstr ""
-#: templates/js/translated/bom.js:113
+#: templates/js/translated/bom.js:326
msgid "Include part supplier data in exported BOM"
msgstr ""
-#: templates/js/translated/bom.js:296
+#: templates/js/translated/bom.js:509
msgid "Remove substitute part"
msgstr ""
-#: templates/js/translated/bom.js:352
+#: templates/js/translated/bom.js:565
msgid "Select and add a new substitute part using the input below"
msgstr ""
-#: templates/js/translated/bom.js:363
+#: templates/js/translated/bom.js:576
msgid "Are you sure you wish to remove this substitute part link?"
msgstr ""
-#: templates/js/translated/bom.js:369
+#: templates/js/translated/bom.js:582
msgid "Remove Substitute Part"
msgstr ""
-#: templates/js/translated/bom.js:408
+#: templates/js/translated/bom.js:621
msgid "Add Substitute"
msgstr ""
-#: templates/js/translated/bom.js:409
+#: templates/js/translated/bom.js:622
msgid "Edit BOM Item Substitutes"
msgstr ""
-#: templates/js/translated/bom.js:528
+#: templates/js/translated/bom.js:741
msgid "Substitutes Available"
msgstr ""
-#: templates/js/translated/bom.js:532 templates/js/translated/build.js:1171
+#: templates/js/translated/bom.js:745 templates/js/translated/build.js:1393
msgid "Variant stock allowed"
msgstr ""
-#: templates/js/translated/bom.js:537
+#: templates/js/translated/bom.js:750
msgid "Open subassembly"
msgstr ""
-#: templates/js/translated/bom.js:609
+#: templates/js/translated/bom.js:822
msgid "Substitutes"
msgstr ""
-#: templates/js/translated/bom.js:624
+#: templates/js/translated/bom.js:837
msgid "Purchase Price Range"
msgstr ""
-#: templates/js/translated/bom.js:631
+#: templates/js/translated/bom.js:844
msgid "Purchase Price Average"
msgstr ""
-#: templates/js/translated/bom.js:680 templates/js/translated/bom.js:769
+#: templates/js/translated/bom.js:893 templates/js/translated/bom.js:982
msgid "View BOM"
msgstr ""
-#: templates/js/translated/bom.js:740
+#: templates/js/translated/bom.js:953
msgid "Validate BOM Item"
msgstr ""
-#: templates/js/translated/bom.js:742
+#: templates/js/translated/bom.js:955
msgid "This line has been validated"
msgstr ""
-#: templates/js/translated/bom.js:744
+#: templates/js/translated/bom.js:957
msgid "Edit substitute parts"
msgstr ""
-#: templates/js/translated/bom.js:746 templates/js/translated/bom.js:920
+#: templates/js/translated/bom.js:959 templates/js/translated/bom.js:1138
msgid "Edit BOM Item"
msgstr ""
-#: templates/js/translated/bom.js:748 templates/js/translated/bom.js:903
+#: templates/js/translated/bom.js:961 templates/js/translated/bom.js:1121
msgid "Delete BOM Item"
msgstr ""
-#: templates/js/translated/bom.js:842 templates/js/translated/build.js:915
+#: templates/js/translated/bom.js:1060 templates/js/translated/build.js:1137
msgid "No BOM items found"
msgstr ""
-#: templates/js/translated/bom.js:898
+#: templates/js/translated/bom.js:1116
msgid "Are you sure you want to delete this BOM item?"
msgstr ""
-#: templates/js/translated/bom.js:1100 templates/js/translated/build.js:1155
+#: templates/js/translated/bom.js:1318 templates/js/translated/build.js:1377
msgid "Required Part"
msgstr ""
-#: templates/js/translated/bom.js:1122
+#: templates/js/translated/bom.js:1340
msgid "Inherited from parent BOM"
msgstr ""
-#: templates/js/translated/build.js:84
+#: templates/js/translated/build.js:85
msgid "Edit Build Order"
msgstr ""
-#: templates/js/translated/build.js:118
+#: templates/js/translated/build.js:119
msgid "Create Build Order"
msgstr ""
-#: templates/js/translated/build.js:139
+#: templates/js/translated/build.js:140
msgid "Build order is ready to be completed"
msgstr ""
-#: templates/js/translated/build.js:144
+#: templates/js/translated/build.js:145
msgid "Build Order is incomplete"
msgstr ""
-#: templates/js/translated/build.js:172
+#: templates/js/translated/build.js:173
msgid "Complete Build Order"
msgstr ""
-#: templates/js/translated/build.js:193
+#: templates/js/translated/build.js:214 templates/js/translated/stock.js:93
+#: templates/js/translated/stock.js:182
+msgid "Next available serial number"
+msgstr ""
+
+#: templates/js/translated/build.js:216 templates/js/translated/stock.js:95
+#: templates/js/translated/stock.js:184
+msgid "Latest serial number"
+msgstr ""
+
+#: templates/js/translated/build.js:225
+msgid "The Bill of Materials contains trackable parts"
+msgstr ""
+
+#: templates/js/translated/build.js:226
+msgid "Build outputs must be generated individually"
+msgstr ""
+
+#: templates/js/translated/build.js:234
+msgid "Trackable parts can have serial numbers specified"
+msgstr "Sporbare varer kan ha angitte serienummer"
+
+#: templates/js/translated/build.js:235
+msgid "Enter serial numbers to generate multiple single build outputs"
+msgstr ""
+
+#: templates/js/translated/build.js:242
+msgid "Create Build Output"
+msgstr ""
+
+#: templates/js/translated/build.js:273
msgid "Allocate stock items to this build output"
msgstr ""
-#: templates/js/translated/build.js:204
+#: templates/js/translated/build.js:284
msgid "Unallocate stock from build output"
msgstr ""
-#: templates/js/translated/build.js:213
+#: templates/js/translated/build.js:293
msgid "Complete build output"
msgstr ""
-#: templates/js/translated/build.js:221
+#: templates/js/translated/build.js:301
msgid "Delete build output"
msgstr ""
-#: templates/js/translated/build.js:244
+#: templates/js/translated/build.js:324
msgid "Are you sure you wish to unallocate stock items from this build?"
msgstr ""
-#: templates/js/translated/build.js:262
+#: templates/js/translated/build.js:342
msgid "Unallocate Stock Items"
msgstr ""
-#: templates/js/translated/build.js:280
+#: templates/js/translated/build.js:360 templates/js/translated/build.js:508
msgid "Select Build Outputs"
msgstr ""
-#: templates/js/translated/build.js:281
+#: templates/js/translated/build.js:361 templates/js/translated/build.js:509
msgid "At least one build output must be selected"
msgstr ""
-#: templates/js/translated/build.js:335
+#: templates/js/translated/build.js:415 templates/js/translated/build.js:563
msgid "Output"
msgstr ""
-#: templates/js/translated/build.js:351
+#: templates/js/translated/build.js:431
msgid "Complete Build Outputs"
msgstr ""
-#: templates/js/translated/build.js:446
+#: templates/js/translated/build.js:576
+msgid "Delete Build Outputs"
+msgstr ""
+
+#: templates/js/translated/build.js:665
msgid "No build order allocations found"
msgstr ""
-#: templates/js/translated/build.js:484 templates/js/translated/order.js:1848
+#: templates/js/translated/build.js:703 templates/js/translated/order.js:1848
msgid "Location not specified"
msgstr ""
-#: templates/js/translated/build.js:663
+#: templates/js/translated/build.js:885
msgid "No active build outputs found"
msgstr ""
-#: templates/js/translated/build.js:1112 templates/js/translated/build.js:1821
+#: templates/js/translated/build.js:1334 templates/js/translated/build.js:2059
#: templates/js/translated/order.js:1982
msgid "Edit stock allocation"
msgstr ""
-#: templates/js/translated/build.js:1114 templates/js/translated/build.js:1822
+#: templates/js/translated/build.js:1336 templates/js/translated/build.js:2060
#: templates/js/translated/order.js:1983
msgid "Delete stock allocation"
msgstr ""
-#: templates/js/translated/build.js:1132
+#: templates/js/translated/build.js:1354
msgid "Edit Allocation"
msgstr ""
-#: templates/js/translated/build.js:1142
+#: templates/js/translated/build.js:1364
msgid "Remove Allocation"
msgstr ""
-#: templates/js/translated/build.js:1167
+#: templates/js/translated/build.js:1389
msgid "Substitute parts available"
msgstr ""
-#: templates/js/translated/build.js:1184
+#: templates/js/translated/build.js:1406
msgid "Quantity Per"
msgstr ""
-#: templates/js/translated/build.js:1194 templates/js/translated/build.js:1420
-#: templates/js/translated/build.js:1817 templates/js/translated/order.js:2227
+#: templates/js/translated/build.js:1416 templates/js/translated/build.js:1656
+#: templates/js/translated/build.js:2055 templates/js/translated/order.js:2227
msgid "Allocated"
msgstr ""
-#: templates/js/translated/build.js:1250 templates/js/translated/order.js:2307
+#: templates/js/translated/build.js:1472 templates/js/translated/order.js:2307
msgid "Build stock"
msgstr ""
-#: templates/js/translated/build.js:1254 templates/stock_table.html:53
+#: templates/js/translated/build.js:1476 templates/stock_table.html:53
msgid "Order stock"
msgstr ""
-#: templates/js/translated/build.js:1257 templates/js/translated/order.js:2300
+#: templates/js/translated/build.js:1479 templates/js/translated/order.js:2300
msgid "Allocate stock"
msgstr ""
-#: templates/js/translated/build.js:1322 templates/js/translated/order.js:1499
+#: templates/js/translated/build.js:1558 templates/js/translated/order.js:1499
msgid "Specify stock allocation quantity"
msgstr ""
-#: templates/js/translated/build.js:1393 templates/js/translated/label.js:134
+#: templates/js/translated/build.js:1629 templates/js/translated/label.js:134
#: templates/js/translated/order.js:1550 templates/js/translated/report.js:225
msgid "Select Parts"
msgstr ""
-#: templates/js/translated/build.js:1394 templates/js/translated/order.js:1551
+#: templates/js/translated/build.js:1630 templates/js/translated/order.js:1551
msgid "You must select at least one part to allocate"
msgstr ""
-#: templates/js/translated/build.js:1408 templates/js/translated/order.js:1565
+#: templates/js/translated/build.js:1644 templates/js/translated/order.js:1565
msgid "Select source location (leave blank to take from all locations)"
msgstr ""
-#: templates/js/translated/build.js:1437 templates/js/translated/order.js:1600
+#: templates/js/translated/build.js:1673 templates/js/translated/order.js:1600
msgid "Confirm stock allocation"
msgstr ""
-#: templates/js/translated/build.js:1438
+#: templates/js/translated/build.js:1674
msgid "Allocate Stock Items to Build Order"
msgstr ""
-#: templates/js/translated/build.js:1449 templates/js/translated/order.js:1613
+#: templates/js/translated/build.js:1685 templates/js/translated/order.js:1613
msgid "No matching stock locations"
msgstr ""
-#: templates/js/translated/build.js:1519 templates/js/translated/order.js:1690
+#: templates/js/translated/build.js:1757 templates/js/translated/order.js:1690
msgid "No matching stock items"
msgstr ""
-#: templates/js/translated/build.js:1637
+#: templates/js/translated/build.js:1875
msgid "No builds matching query"
msgstr ""
-#: templates/js/translated/build.js:1654 templates/js/translated/part.js:1213
-#: templates/js/translated/part.js:1624 templates/js/translated/stock.js:1520
-#: templates/js/translated/stock.js:2479
+#: templates/js/translated/build.js:1892 templates/js/translated/part.js:1213
+#: templates/js/translated/part.js:1624 templates/js/translated/stock.js:1644
+#: templates/js/translated/stock.js:2603
msgid "Select"
msgstr ""
-#: templates/js/translated/build.js:1674
+#: templates/js/translated/build.js:1912
msgid "Build order is overdue"
msgstr ""
-#: templates/js/translated/build.js:1735 templates/js/translated/stock.js:2698
+#: templates/js/translated/build.js:1973 templates/js/translated/stock.js:2822
msgid "No user information"
msgstr ""
-#: templates/js/translated/build.js:1747
+#: templates/js/translated/build.js:1985
msgid "No information"
msgstr ""
-#: templates/js/translated/build.js:1798
+#: templates/js/translated/build.js:2036
msgid "No parts allocated for"
msgstr ""
@@ -7966,48 +8061,60 @@ msgstr ""
msgid "Create filter"
msgstr ""
-#: templates/js/translated/forms.js:350 templates/js/translated/forms.js:365
-#: templates/js/translated/forms.js:379 templates/js/translated/forms.js:393
+#: templates/js/translated/forms.js:351 templates/js/translated/forms.js:366
+#: templates/js/translated/forms.js:380 templates/js/translated/forms.js:394
msgid "Action Prohibited"
msgstr ""
-#: templates/js/translated/forms.js:352
+#: templates/js/translated/forms.js:353
msgid "Create operation not allowed"
msgstr ""
-#: templates/js/translated/forms.js:367
+#: templates/js/translated/forms.js:368
msgid "Update operation not allowed"
msgstr ""
-#: templates/js/translated/forms.js:381
+#: templates/js/translated/forms.js:382
msgid "Delete operation not allowed"
msgstr ""
-#: templates/js/translated/forms.js:395
+#: templates/js/translated/forms.js:396
msgid "View operation not allowed"
msgstr ""
-#: templates/js/translated/forms.js:680
+#: templates/js/translated/forms.js:681
msgid "Enter a valid number"
msgstr ""
-#: templates/js/translated/forms.js:1082 templates/modals.html:19
+#: templates/js/translated/forms.js:1129 templates/modals.html:19
#: templates/modals.html:43
msgid "Form errors exist"
msgstr ""
-#: templates/js/translated/forms.js:1487
+#: templates/js/translated/forms.js:1558
msgid "No results found"
msgstr ""
-#: templates/js/translated/forms.js:1691
+#: templates/js/translated/forms.js:1768
msgid "Searching"
msgstr ""
-#: templates/js/translated/forms.js:1930
+#: templates/js/translated/forms.js:2013
msgid "Clear input"
msgstr ""
+#: templates/js/translated/forms.js:2479
+msgid "File Column"
+msgstr ""
+
+#: templates/js/translated/forms.js:2479
+msgid "Field Name"
+msgstr ""
+
+#: templates/js/translated/forms.js:2491
+msgid "Select Columns"
+msgstr ""
+
#: templates/js/translated/helpers.js:19
msgid "YES"
msgstr ""
@@ -8017,7 +8124,7 @@ msgid "NO"
msgstr ""
#: templates/js/translated/label.js:29 templates/js/translated/report.js:118
-#: templates/js/translated/stock.js:1050
+#: templates/js/translated/stock.js:1051
msgid "Select Stock Items"
msgstr ""
@@ -8072,7 +8179,7 @@ msgid "Cancel"
msgstr ""
#: templates/js/translated/modals.js:77 templates/js/translated/modals.js:119
-#: templates/js/translated/modals.js:677 templates/js/translated/modals.js:982
+#: templates/js/translated/modals.js:677 templates/js/translated/modals.js:985
#: templates/modals.html:28 templates/modals.html:51
msgid "Submit"
msgstr ""
@@ -8097,31 +8204,31 @@ msgstr ""
msgid "Loading Data"
msgstr ""
-#: templates/js/translated/modals.js:934
+#: templates/js/translated/modals.js:937
msgid "Invalid response from server"
msgstr ""
-#: templates/js/translated/modals.js:934
+#: templates/js/translated/modals.js:937
msgid "Form data missing from server response"
msgstr ""
-#: templates/js/translated/modals.js:946
+#: templates/js/translated/modals.js:949
msgid "Error posting form data"
msgstr ""
-#: templates/js/translated/modals.js:1043
+#: templates/js/translated/modals.js:1046
msgid "JSON response missing form data"
msgstr ""
-#: templates/js/translated/modals.js:1058
+#: templates/js/translated/modals.js:1061
msgid "Error 400: Bad Request"
msgstr ""
-#: templates/js/translated/modals.js:1059
+#: templates/js/translated/modals.js:1062
msgid "Server returned error code 400"
msgstr ""
-#: templates/js/translated/modals.js:1082
+#: templates/js/translated/modals.js:1085
msgid "Error requesting form data"
msgstr ""
@@ -8141,10 +8248,6 @@ msgstr ""
msgid "Build ID"
msgstr ""
-#: templates/js/translated/model_renderers.js:182
-msgid "Part ID"
-msgstr ""
-
#: templates/js/translated/model_renderers.js:249
#: templates/js/translated/model_renderers.js:270
msgid "Order ID"
@@ -8210,7 +8313,7 @@ msgstr ""
msgid "Quantity to receive"
msgstr ""
-#: templates/js/translated/order.js:520 templates/js/translated/stock.js:2131
+#: templates/js/translated/order.js:520 templates/js/translated/stock.js:2255
msgid "Stock Status"
msgstr ""
@@ -8344,7 +8447,7 @@ msgid "Delete Stock Allocation"
msgstr ""
#: templates/js/translated/order.js:1959 templates/js/translated/order.js:2048
-#: templates/js/translated/stock.js:1436
+#: templates/js/translated/stock.js:1560
msgid "Shipped to customer"
msgstr ""
@@ -8545,12 +8648,12 @@ msgid "No category"
msgstr ""
#: templates/js/translated/part.js:1296
-#: templates/js/translated/table_filters.js:430
+#: templates/js/translated/table_filters.js:425
msgid "Low stock"
msgstr ""
#: templates/js/translated/part.js:1387 templates/js/translated/part.js:1559
-#: templates/js/translated/stock.js:2440
+#: templates/js/translated/stock.js:2564
msgid "Display as list"
msgstr ""
@@ -8558,7 +8661,7 @@ msgstr ""
msgid "Display as grid"
msgstr ""
-#: templates/js/translated/part.js:1578 templates/js/translated/stock.js:2459
+#: templates/js/translated/part.js:1578 templates/js/translated/stock.js:2583
msgid "Display as tree"
msgstr ""
@@ -8566,7 +8669,7 @@ msgstr ""
msgid "Subscribed category"
msgstr ""
-#: templates/js/translated/part.js:1656 templates/js/translated/stock.js:2503
+#: templates/js/translated/part.js:1656 templates/js/translated/stock.js:2627
msgid "Path"
msgstr ""
@@ -8574,11 +8677,12 @@ msgstr ""
msgid "No test templates matching query"
msgstr ""
-#: templates/js/translated/part.js:1751 templates/js/translated/stock.js:1242
+#: templates/js/translated/part.js:1751 templates/js/translated/stock.js:1271
msgid "Edit test result"
msgstr ""
-#: templates/js/translated/part.js:1752 templates/js/translated/stock.js:1243
+#: templates/js/translated/part.js:1752 templates/js/translated/stock.js:1272
+#: templates/js/translated/stock.js:1518
msgid "Delete test result"
msgstr ""
@@ -8687,347 +8791,375 @@ msgstr ""
msgid "Sales Order(s) must be selected before printing report"
msgstr ""
-#: templates/js/translated/stock.js:74
+#: templates/js/translated/stock.js:75
msgid "Serialize Stock Item"
msgstr ""
-#: templates/js/translated/stock.js:92 templates/js/translated/stock.js:181
-msgid "Next available serial number"
-msgstr ""
-
-#: templates/js/translated/stock.js:94 templates/js/translated/stock.js:183
-msgid "Latest serial number"
-msgstr ""
-
-#: templates/js/translated/stock.js:102
+#: templates/js/translated/stock.js:103
msgid "Confirm Stock Serialization"
msgstr ""
-#: templates/js/translated/stock.js:111
+#: templates/js/translated/stock.js:112
msgid "Parent stock location"
msgstr ""
-#: templates/js/translated/stock.js:154
+#: templates/js/translated/stock.js:155
msgid "New Stock Location"
msgstr ""
-#: templates/js/translated/stock.js:194
+#: templates/js/translated/stock.js:195
msgid "This part cannot be serialized"
msgstr ""
-#: templates/js/translated/stock.js:233
+#: templates/js/translated/stock.js:234
msgid "Enter initial quantity for this stock item"
msgstr ""
-#: templates/js/translated/stock.js:239
+#: templates/js/translated/stock.js:240
msgid "Enter serial numbers for new stock (or leave blank)"
msgstr ""
-#: templates/js/translated/stock.js:382
+#: templates/js/translated/stock.js:383
msgid "Created new stock item"
msgstr ""
-#: templates/js/translated/stock.js:395
+#: templates/js/translated/stock.js:396
msgid "Created multiple stock items"
msgstr ""
-#: templates/js/translated/stock.js:420
+#: templates/js/translated/stock.js:421
msgid "Find Serial Number"
msgstr ""
-#: templates/js/translated/stock.js:424 templates/js/translated/stock.js:425
+#: templates/js/translated/stock.js:425 templates/js/translated/stock.js:426
msgid "Enter serial number"
msgstr ""
-#: templates/js/translated/stock.js:441
+#: templates/js/translated/stock.js:442
msgid "Enter a serial number"
msgstr ""
-#: templates/js/translated/stock.js:461
+#: templates/js/translated/stock.js:462
msgid "No matching serial number"
msgstr ""
-#: templates/js/translated/stock.js:470
+#: templates/js/translated/stock.js:471
msgid "More than one matching result found"
msgstr ""
-#: templates/js/translated/stock.js:515
+#: templates/js/translated/stock.js:516
msgid "Export Stock"
msgstr ""
-#: templates/js/translated/stock.js:526
+#: templates/js/translated/stock.js:527
msgid "Include Sublocations"
msgstr ""
-#: templates/js/translated/stock.js:527
+#: templates/js/translated/stock.js:528
msgid "Include stock items in sublocations"
msgstr ""
-#: templates/js/translated/stock.js:636
+#: templates/js/translated/stock.js:637
msgid "Confirm stock assignment"
msgstr ""
-#: templates/js/translated/stock.js:637
+#: templates/js/translated/stock.js:638
msgid "Assign Stock to Customer"
msgstr ""
-#: templates/js/translated/stock.js:714
+#: templates/js/translated/stock.js:715
msgid "Warning: Merge operation cannot be reversed"
msgstr ""
-#: templates/js/translated/stock.js:715
+#: templates/js/translated/stock.js:716
msgid "Some information will be lost when merging stock items"
msgstr ""
-#: templates/js/translated/stock.js:717
+#: templates/js/translated/stock.js:718
msgid "Stock transaction history will be deleted for merged items"
msgstr ""
-#: templates/js/translated/stock.js:718
+#: templates/js/translated/stock.js:719
msgid "Supplier part information will be deleted for merged items"
msgstr ""
-#: templates/js/translated/stock.js:804
+#: templates/js/translated/stock.js:805
msgid "Confirm stock item merge"
msgstr ""
-#: templates/js/translated/stock.js:805
+#: templates/js/translated/stock.js:806
msgid "Merge Stock Items"
msgstr ""
-#: templates/js/translated/stock.js:900
+#: templates/js/translated/stock.js:901
msgid "Transfer Stock"
msgstr ""
-#: templates/js/translated/stock.js:901
+#: templates/js/translated/stock.js:902
msgid "Move"
msgstr ""
-#: templates/js/translated/stock.js:907
+#: templates/js/translated/stock.js:908
msgid "Count Stock"
msgstr ""
-#: templates/js/translated/stock.js:908
+#: templates/js/translated/stock.js:909
msgid "Count"
msgstr ""
-#: templates/js/translated/stock.js:912
+#: templates/js/translated/stock.js:913
msgid "Remove Stock"
msgstr ""
-#: templates/js/translated/stock.js:913
+#: templates/js/translated/stock.js:914
msgid "Take"
msgstr ""
-#: templates/js/translated/stock.js:917
+#: templates/js/translated/stock.js:918
msgid "Add Stock"
msgstr ""
-#: templates/js/translated/stock.js:918 users/models.py:208
+#: templates/js/translated/stock.js:919 users/models.py:213
msgid "Add"
msgstr ""
-#: templates/js/translated/stock.js:922 templates/stock_table.html:58
+#: templates/js/translated/stock.js:923 templates/stock_table.html:58
msgid "Delete Stock"
msgstr ""
-#: templates/js/translated/stock.js:1011
+#: templates/js/translated/stock.js:1012
msgid "Quantity cannot be adjusted for serialized stock"
msgstr ""
-#: templates/js/translated/stock.js:1011
+#: templates/js/translated/stock.js:1012
msgid "Specify stock quantity"
msgstr ""
-#: templates/js/translated/stock.js:1051
+#: templates/js/translated/stock.js:1052
msgid "You must select at least one available stock item"
msgstr ""
-#: templates/js/translated/stock.js:1209
+#: templates/js/translated/stock.js:1210
msgid "PASS"
msgstr ""
-#: templates/js/translated/stock.js:1211
+#: templates/js/translated/stock.js:1212
msgid "FAIL"
msgstr ""
-#: templates/js/translated/stock.js:1216
+#: templates/js/translated/stock.js:1217
msgid "NO RESULT"
msgstr ""
-#: templates/js/translated/stock.js:1238
+#: templates/js/translated/stock.js:1264
+msgid "Pass test"
+msgstr ""
+
+#: templates/js/translated/stock.js:1267
msgid "Add test result"
msgstr ""
-#: templates/js/translated/stock.js:1264
+#: templates/js/translated/stock.js:1293
msgid "No test results found"
msgstr ""
-#: templates/js/translated/stock.js:1321
+#: templates/js/translated/stock.js:1349
msgid "Test Date"
msgstr ""
-#: templates/js/translated/stock.js:1428
+#: templates/js/translated/stock.js:1501
+msgid "Edit Test Result"
+msgstr ""
+
+#: templates/js/translated/stock.js:1523
+msgid "Delete Test Result"
+msgstr ""
+
+#: templates/js/translated/stock.js:1552
msgid "In production"
msgstr ""
-#: templates/js/translated/stock.js:1432
+#: templates/js/translated/stock.js:1556
msgid "Installed in Stock Item"
msgstr ""
-#: templates/js/translated/stock.js:1440
+#: templates/js/translated/stock.js:1564
msgid "Assigned to Sales Order"
msgstr ""
-#: templates/js/translated/stock.js:1446
+#: templates/js/translated/stock.js:1570
msgid "No stock location set"
msgstr ""
-#: templates/js/translated/stock.js:1604
+#: templates/js/translated/stock.js:1728
msgid "Stock item is in production"
msgstr ""
-#: templates/js/translated/stock.js:1609
+#: templates/js/translated/stock.js:1733
msgid "Stock item assigned to sales order"
msgstr ""
-#: templates/js/translated/stock.js:1612
+#: templates/js/translated/stock.js:1736
msgid "Stock item assigned to customer"
msgstr ""
-#: templates/js/translated/stock.js:1616
+#: templates/js/translated/stock.js:1740
msgid "Stock item has expired"
msgstr ""
-#: templates/js/translated/stock.js:1618
+#: templates/js/translated/stock.js:1742
msgid "Stock item will expire soon"
msgstr ""
-#: templates/js/translated/stock.js:1624
+#: templates/js/translated/stock.js:1748
msgid "Serialized stock item has been allocated"
msgstr ""
-#: templates/js/translated/stock.js:1626
+#: templates/js/translated/stock.js:1750
msgid "Stock item has been fully allocated"
msgstr ""
-#: templates/js/translated/stock.js:1628
+#: templates/js/translated/stock.js:1752
msgid "Stock item has been partially allocated"
msgstr ""
-#: templates/js/translated/stock.js:1633
+#: templates/js/translated/stock.js:1757
msgid "Stock item has been installed in another item"
msgstr ""
-#: templates/js/translated/stock.js:1640
+#: templates/js/translated/stock.js:1764
msgid "Stock item has been rejected"
msgstr ""
-#: templates/js/translated/stock.js:1642
+#: templates/js/translated/stock.js:1766
msgid "Stock item is lost"
msgstr ""
-#: templates/js/translated/stock.js:1644
+#: templates/js/translated/stock.js:1768
msgid "Stock item is destroyed"
msgstr ""
-#: templates/js/translated/stock.js:1648
+#: templates/js/translated/stock.js:1772
#: templates/js/translated/table_filters.js:188
msgid "Depleted"
msgstr ""
-#: templates/js/translated/stock.js:1698
+#: templates/js/translated/stock.js:1822
msgid "Stocktake"
msgstr ""
-#: templates/js/translated/stock.js:1771
+#: templates/js/translated/stock.js:1895
msgid "Supplier part not specified"
msgstr ""
-#: templates/js/translated/stock.js:1809
+#: templates/js/translated/stock.js:1933
msgid "No stock items matching query"
msgstr ""
-#: templates/js/translated/stock.js:1830 templates/js/translated/stock.js:1878
+#: templates/js/translated/stock.js:1954 templates/js/translated/stock.js:2002
msgid "items"
msgstr ""
-#: templates/js/translated/stock.js:1918
+#: templates/js/translated/stock.js:2042
msgid "batches"
msgstr ""
-#: templates/js/translated/stock.js:1945
+#: templates/js/translated/stock.js:2069
msgid "locations"
msgstr ""
-#: templates/js/translated/stock.js:1947
+#: templates/js/translated/stock.js:2071
msgid "Undefined location"
msgstr ""
-#: templates/js/translated/stock.js:2146
+#: templates/js/translated/stock.js:2270
msgid "Set Stock Status"
msgstr ""
-#: templates/js/translated/stock.js:2160
+#: templates/js/translated/stock.js:2284
msgid "Select Status Code"
msgstr ""
-#: templates/js/translated/stock.js:2161
+#: templates/js/translated/stock.js:2285
msgid "Status code must be selected"
msgstr ""
-#: templates/js/translated/stock.js:2340
+#: templates/js/translated/stock.js:2464
msgid "Allocated Quantity"
msgstr ""
-#: templates/js/translated/stock.js:2535
+#: templates/js/translated/stock.js:2659
msgid "Invalid date"
msgstr ""
-#: templates/js/translated/stock.js:2557
+#: templates/js/translated/stock.js:2681
msgid "Details"
msgstr ""
-#: templates/js/translated/stock.js:2582
+#: templates/js/translated/stock.js:2706
msgid "Location no longer exists"
msgstr ""
-#: templates/js/translated/stock.js:2601
+#: templates/js/translated/stock.js:2725
msgid "Purchase order no longer exists"
msgstr ""
-#: templates/js/translated/stock.js:2620
+#: templates/js/translated/stock.js:2744
msgid "Customer no longer exists"
msgstr ""
-#: templates/js/translated/stock.js:2638
+#: templates/js/translated/stock.js:2762
msgid "Stock item no longer exists"
msgstr ""
-#: templates/js/translated/stock.js:2661
+#: templates/js/translated/stock.js:2785
msgid "Added"
msgstr ""
-#: templates/js/translated/stock.js:2669
+#: templates/js/translated/stock.js:2793
msgid "Removed"
msgstr ""
-#: templates/js/translated/stock.js:2710
+#: templates/js/translated/stock.js:2834
msgid "Edit tracking entry"
msgstr ""
-#: templates/js/translated/stock.js:2711
+#: templates/js/translated/stock.js:2835
msgid "Delete tracking entry"
msgstr ""
-#: templates/js/translated/stock.js:2762
+#: templates/js/translated/stock.js:2886
msgid "No installed items"
msgstr ""
-#: templates/js/translated/stock.js:2813
+#: templates/js/translated/stock.js:2937
msgid "Uninstall Stock Item"
msgstr ""
+#: templates/js/translated/stock.js:2973
+msgid "Install another stock item into this item"
+msgstr ""
+
+#: templates/js/translated/stock.js:2974
+msgid "Stock items can only be installed if they meet the following criteria"
+msgstr ""
+
+#: templates/js/translated/stock.js:2976
+msgid "The Stock Item links to a Part which is the BOM for this Stock Item"
+msgstr ""
+
+#: templates/js/translated/stock.js:2977
+msgid "The Stock Item is currently available in stock"
+msgstr ""
+
+#: templates/js/translated/stock.js:2978
+msgid "The Stock Item is serialized and does not belong to another item"
+msgstr ""
+
+#: templates/js/translated/stock.js:2991
+msgid "Select part to install"
+msgstr ""
+
#: templates/js/translated/table_filters.js:56
msgid "Trackable Part"
msgstr ""
@@ -9055,12 +9187,12 @@ msgstr ""
#: templates/js/translated/table_filters.js:121
#: templates/js/translated/table_filters.js:122
-#: templates/js/translated/table_filters.js:407
+#: templates/js/translated/table_filters.js:402
msgid "Include subcategories"
msgstr ""
#: templates/js/translated/table_filters.js:126
-#: templates/js/translated/table_filters.js:442
+#: templates/js/translated/table_filters.js:437
msgid "Subscribed"
msgstr ""
@@ -9102,7 +9234,7 @@ msgid "Batch code"
msgstr ""
#: templates/js/translated/table_filters.js:163
-#: templates/js/translated/table_filters.js:379
+#: templates/js/translated/table_filters.js:374
msgid "Active parts"
msgstr ""
@@ -9187,47 +9319,47 @@ msgstr ""
msgid "Show stock which is close to expiring"
msgstr ""
-#: templates/js/translated/table_filters.js:290
+#: templates/js/translated/table_filters.js:285
msgid "Build status"
msgstr ""
-#: templates/js/translated/table_filters.js:303
-#: templates/js/translated/table_filters.js:344
+#: templates/js/translated/table_filters.js:298
+#: templates/js/translated/table_filters.js:339
msgid "Assigned to me"
msgstr ""
-#: templates/js/translated/table_filters.js:320
-#: templates/js/translated/table_filters.js:331
-#: templates/js/translated/table_filters.js:352
+#: templates/js/translated/table_filters.js:315
+#: templates/js/translated/table_filters.js:326
+#: templates/js/translated/table_filters.js:347
msgid "Order status"
msgstr ""
-#: templates/js/translated/table_filters.js:336
-#: templates/js/translated/table_filters.js:357
+#: templates/js/translated/table_filters.js:331
+#: templates/js/translated/table_filters.js:352
msgid "Outstanding"
msgstr ""
-#: templates/js/translated/table_filters.js:408
+#: templates/js/translated/table_filters.js:403
msgid "Include parts in subcategories"
msgstr ""
-#: templates/js/translated/table_filters.js:412
+#: templates/js/translated/table_filters.js:407
msgid "Has IPN"
msgstr ""
-#: templates/js/translated/table_filters.js:413
+#: templates/js/translated/table_filters.js:408
msgid "Part has internal part number"
msgstr ""
-#: templates/js/translated/table_filters.js:418
+#: templates/js/translated/table_filters.js:413
msgid "Show active parts"
msgstr ""
-#: templates/js/translated/table_filters.js:426
+#: templates/js/translated/table_filters.js:421
msgid "Stock available"
msgstr ""
-#: templates/js/translated/table_filters.js:454
+#: templates/js/translated/table_filters.js:449
msgid "Purchasable"
msgstr ""
@@ -9480,35 +9612,35 @@ msgstr ""
msgid "Important dates"
msgstr ""
-#: users/models.py:195
+#: users/models.py:200
msgid "Permission set"
msgstr ""
-#: users/models.py:203
+#: users/models.py:208
msgid "Group"
msgstr ""
-#: users/models.py:206
+#: users/models.py:211
msgid "View"
msgstr ""
-#: users/models.py:206
+#: users/models.py:211
msgid "Permission to view items"
msgstr ""
-#: users/models.py:208
+#: users/models.py:213
msgid "Permission to add items"
msgstr ""
-#: users/models.py:210
+#: users/models.py:215
msgid "Change"
msgstr ""
-#: users/models.py:210
+#: users/models.py:215
msgid "Permissions to edit items"
msgstr ""
-#: users/models.py:212
+#: users/models.py:217
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 672efaf6e8..74d0d6091d 100644
--- a/InvenTree/locale/pl/LC_MESSAGES/django.po
+++ b/InvenTree/locale/pl/LC_MESSAGES/django.po
@@ -3,8 +3,8 @@ msgid ""
msgstr ""
"Project-Id-Version: inventree\n"
"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2022-01-29 00:17+0000\n"
-"PO-Revision-Date: 2022-01-29 01:11\n"
+"POT-Creation-Date: 2022-02-18 20:36+0000\n"
+"PO-Revision-Date: 2022-02-18 20:38\n"
"Last-Translator: \n"
"Language-Team: Polish\n"
"Language: pl_PL\n"
@@ -34,9 +34,9 @@ msgstr "Nie znaleziono pasującej akcji"
msgid "Enter date"
msgstr "Wprowadź dane"
-#: InvenTree/forms.py:126 build/forms.py:48 build/forms.py:69 order/forms.py:24
-#: order/forms.py:35 order/forms.py:46 order/forms.py:57
-#: templates/account/email_confirm.html:20 templates/js/translated/forms.js:595
+#: InvenTree/forms.py:126 order/forms.py:24 order/forms.py:35 order/forms.py:46
+#: order/forms.py:57 templates/account/email_confirm.html:20
+#: templates/js/translated/forms.js:596
msgid "Confirm"
msgstr "Potwierdź"
@@ -86,7 +86,7 @@ msgid "Duplicate serial: {n}"
msgstr "Powtórzony numer seryjny: {n}"
#: InvenTree/helpers.py:446 order/models.py:282 order/models.py:425
-#: stock/views.py:1231
+#: stock/views.py:1082
msgid "Invalid quantity provided"
msgstr "Podano nieprawidłową ilość"
@@ -119,133 +119,133 @@ msgstr "Nie znaleziono numerów seryjnych"
msgid "Number of unique serial number ({s}) must match quantity ({q})"
msgstr "Ilość numerów seryjnych ({s}) musi odpowiadać ilości ({q})"
-#: InvenTree/models.py:120
+#: InvenTree/models.py:176
msgid "Missing file"
msgstr "Brak pliku"
-#: InvenTree/models.py:121
+#: InvenTree/models.py:177
msgid "Missing external link"
msgstr "Brak zewnętrznego odnośnika"
-#: InvenTree/models.py:132 stock/models.py:1995
+#: InvenTree/models.py:188 stock/models.py:1995
#: templates/js/translated/attachment.js:119
msgid "Attachment"
msgstr "Załącznik"
-#: InvenTree/models.py:133
+#: InvenTree/models.py:189
msgid "Select file to attach"
msgstr "Wybierz plik do załączenia"
-#: InvenTree/models.py:139 company/models.py:131 company/models.py:348
-#: company/models.py:564 order/models.py:127 part/models.py:830
+#: InvenTree/models.py:195 company/models.py:131 company/models.py:348
+#: company/models.py:564 order/models.py:127 part/models.py:860
#: report/templates/report/inventree_build_order_base.html:165
#: templates/js/translated/company.js:540
#: templates/js/translated/company.js:829 templates/js/translated/part.js:1324
msgid "Link"
msgstr "Łącze"
-#: InvenTree/models.py:140 build/models.py:332 part/models.py:831
+#: InvenTree/models.py:196 build/models.py:332 part/models.py:861
#: stock/models.py:529
msgid "Link to external URL"
msgstr "Link do zewnętrznego adresu URL"
-#: InvenTree/models.py:143 templates/js/translated/attachment.js:163
+#: InvenTree/models.py:199 templates/js/translated/attachment.js:163
msgid "Comment"
msgstr "Komentarz"
-#: InvenTree/models.py:143
+#: InvenTree/models.py:199
msgid "File comment"
msgstr "Komentarz pliku"
-#: InvenTree/models.py:149 InvenTree/models.py:150 common/models.py:1223
-#: common/models.py:1224 common/models.py:1452 common/models.py:1453
-#: part/models.py:2265 part/models.py:2285
+#: InvenTree/models.py:205 InvenTree/models.py:206 common/models.py:1235
+#: common/models.py:1236 common/models.py:1464 common/models.py:1465
+#: part/models.py:2301 part/models.py:2321
#: report/templates/report/inventree_test_report_base.html:96
-#: templates/js/translated/stock.js:2692
+#: templates/js/translated/stock.js:2816
msgid "User"
msgstr "Użytkownik"
-#: InvenTree/models.py:153
+#: InvenTree/models.py:209
msgid "upload date"
msgstr "data przesłania"
-#: InvenTree/models.py:176
+#: InvenTree/models.py:232
msgid "Filename must not be empty"
msgstr "Nazwa pliku nie może być pusta"
-#: InvenTree/models.py:199
+#: InvenTree/models.py:255
msgid "Invalid attachment directory"
msgstr "Nieprawidłowy katalog załącznika"
-#: InvenTree/models.py:209
+#: InvenTree/models.py:265
#, python-brace-format
msgid "Filename contains illegal character '{c}'"
msgstr "Nazwa pliku zawiera niedozwolony znak '{c}'"
-#: InvenTree/models.py:212
+#: InvenTree/models.py:268
msgid "Filename missing extension"
msgstr "Brak rozszerzenia w nazwie pliku"
-#: InvenTree/models.py:219
+#: InvenTree/models.py:275
msgid "Attachment with this filename already exists"
msgstr "Załącznik o tej nazwie już istnieje"
-#: InvenTree/models.py:226
+#: InvenTree/models.py:282
msgid "Error renaming file"
msgstr "Błąd zmiany nazwy pliku"
-#: InvenTree/models.py:261
+#: InvenTree/models.py:317
msgid "Invalid choice"
msgstr "Błędny wybór"
-#: InvenTree/models.py:277 InvenTree/models.py:278 common/models.py:1438
-#: company/models.py:415 label/models.py:112 part/models.py:774
-#: part/models.py:2449 plugin/models.py:40 report/models.py:181
+#: InvenTree/models.py:333 InvenTree/models.py:334 common/models.py:1450
+#: company/models.py:415 label/models.py:112 part/models.py:804
+#: part/models.py:2485 plugin/models.py:40 report/models.py:181
#: templates/InvenTree/settings/mixins/urls.html:13
#: templates/InvenTree/settings/plugin.html:48
#: templates/InvenTree/settings/plugin.html:125
#: templates/InvenTree/settings/plugin_settings.html:23
-#: templates/InvenTree/settings/settings.html:282
+#: templates/InvenTree/settings/settings.html:319
#: templates/js/translated/company.js:641 templates/js/translated/part.js:567
#: templates/js/translated/part.js:706 templates/js/translated/part.js:1631
-#: templates/js/translated/stock.js:2485
+#: templates/js/translated/stock.js:2609
msgid "Name"
msgstr "Nazwa"
-#: InvenTree/models.py:284 build/models.py:209
+#: InvenTree/models.py:340 build/models.py:209
#: build/templates/build/detail.html:25 company/models.py:354
#: company/models.py:570 company/templates/company/company_base.html:68
#: company/templates/company/manufacturer_part.html:76
#: company/templates/company/supplier_part.html:73 label/models.py:119
-#: order/models.py:125 part/models.py:797 part/templates/part/category.html:74
+#: order/models.py:125 part/models.py:827 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:93
#: templates/InvenTree/settings/plugin_settings.html:33
-#: templates/js/translated/bom.js:339 templates/js/translated/bom.js:552
-#: templates/js/translated/build.js:1682 templates/js/translated/company.js:345
+#: templates/js/translated/bom.js:552 templates/js/translated/bom.js:765
+#: templates/js/translated/build.js:1920 templates/js/translated/company.js:345
#: templates/js/translated/company.js:551
#: templates/js/translated/company.js:840 templates/js/translated/order.js:836
#: templates/js/translated/order.js:1019 templates/js/translated/order.js:1258
#: templates/js/translated/part.js:626 templates/js/translated/part.js:999
#: templates/js/translated/part.js:1084 templates/js/translated/part.js:1254
#: templates/js/translated/part.js:1650 templates/js/translated/part.js:1719
-#: templates/js/translated/stock.js:1577 templates/js/translated/stock.js:2314
-#: templates/js/translated/stock.js:2497 templates/js/translated/stock.js:2542
+#: templates/js/translated/stock.js:1701 templates/js/translated/stock.js:2438
+#: templates/js/translated/stock.js:2621 templates/js/translated/stock.js:2666
msgid "Description"
msgstr "Opis"
-#: InvenTree/models.py:285
+#: InvenTree/models.py:341
msgid "Description (optional)"
msgstr "Opis (opcjonalny)"
-#: InvenTree/models.py:293
+#: InvenTree/models.py:349
msgid "parent"
msgstr "nadrzędny"
-#: InvenTree/serializers.py:65 part/models.py:2734
+#: InvenTree/serializers.py:65 part/models.py:2803
msgid "Must be a valid number"
msgstr "Numer musi być prawidłowy"
@@ -253,83 +253,127 @@ msgstr "Numer musi być prawidłowy"
msgid "Filename"
msgstr "Nazwa pliku"
-#: InvenTree/settings.py:661
+#: InvenTree/serializers.py:334
+msgid "Invalid value"
+msgstr ""
+
+#: InvenTree/serializers.py:355
+msgid "Data File"
+msgstr ""
+
+#: InvenTree/serializers.py:356
+msgid "Select data file for upload"
+msgstr ""
+
+#: InvenTree/serializers.py:380
+msgid "Unsupported file type"
+msgstr ""
+
+#: InvenTree/serializers.py:386
+msgid "File is too large"
+msgstr ""
+
+#: InvenTree/serializers.py:407
+msgid "No columns found in file"
+msgstr ""
+
+#: InvenTree/serializers.py:410
+msgid "No data rows found in file"
+msgstr ""
+
+#: InvenTree/serializers.py:533
+msgid "No data rows provided"
+msgstr ""
+
+#: InvenTree/serializers.py:536
+msgid "No data columns supplied"
+msgstr ""
+
+#: InvenTree/serializers.py:623
+msgid "Missing required column"
+msgstr ""
+
+#: InvenTree/serializers.py:632
+msgid "Duplicate column"
+msgstr ""
+
+#: InvenTree/settings.py:655
msgid "German"
msgstr "Niemiecki"
-#: InvenTree/settings.py:662
+#: InvenTree/settings.py:656
msgid "Greek"
msgstr "Grecki"
-#: InvenTree/settings.py:663
+#: InvenTree/settings.py:657
msgid "English"
msgstr "Angielski"
-#: InvenTree/settings.py:664
+#: InvenTree/settings.py:658
msgid "Spanish"
msgstr "Hiszpański"
-#: InvenTree/settings.py:665
+#: InvenTree/settings.py:659
msgid "Spanish (Mexican)"
msgstr "Hiszpański (Meksyk)"
-#: InvenTree/settings.py:666
+#: InvenTree/settings.py:660
msgid "French"
msgstr "Francuski"
-#: InvenTree/settings.py:667
+#: InvenTree/settings.py:661
msgid "Hebrew"
msgstr "Hebrajski"
-#: InvenTree/settings.py:668
+#: InvenTree/settings.py:662
msgid "Italian"
msgstr "Włoski"
-#: InvenTree/settings.py:669
+#: InvenTree/settings.py:663
msgid "Japanese"
msgstr "Japoński"
-#: InvenTree/settings.py:670
+#: InvenTree/settings.py:664
msgid "Korean"
msgstr "Koreański"
-#: InvenTree/settings.py:671
+#: InvenTree/settings.py:665
msgid "Dutch"
msgstr "Holenderski"
-#: InvenTree/settings.py:672
+#: InvenTree/settings.py:666
msgid "Norwegian"
msgstr "Norweski"
-#: InvenTree/settings.py:673
+#: InvenTree/settings.py:667
msgid "Polish"
msgstr "Polski"
-#: InvenTree/settings.py:674
+#: InvenTree/settings.py:668
msgid "Portugese"
msgstr "Portugalski"
-#: InvenTree/settings.py:675
+#: InvenTree/settings.py:669
msgid "Russian"
msgstr "Rosyjski"
-#: InvenTree/settings.py:676
+#: InvenTree/settings.py:670
msgid "Swedish"
msgstr "Szwedzki"
-#: InvenTree/settings.py:677
+#: InvenTree/settings.py:671
msgid "Thai"
msgstr "Tajski"
-#: InvenTree/settings.py:678
+#: InvenTree/settings.py:672
msgid "Turkish"
msgstr "Turecki"
-#: InvenTree/settings.py:679
+#: InvenTree/settings.py:673
msgid "Vietnamese"
msgstr "Wietnamski"
-#: InvenTree/settings.py:680
+#: InvenTree/settings.py:674
msgid "Chinese"
msgstr "Chiński"
@@ -346,7 +390,7 @@ msgid "InvenTree system health checks failed"
msgstr ""
#: InvenTree/status_codes.py:101 InvenTree/status_codes.py:142
-#: InvenTree/status_codes.py:316 templates/js/translated/table_filters.js:313
+#: InvenTree/status_codes.py:316 templates/js/translated/table_filters.js:308
msgid "Pending"
msgstr "W toku"
@@ -456,7 +500,7 @@ msgstr ""
msgid "Split child item"
msgstr "Podziel element podrzędny"
-#: InvenTree/status_codes.py:294 templates/js/translated/stock.js:2072
+#: InvenTree/status_codes.py:294 templates/js/translated/stock.js:2196
msgid "Merged stock items"
msgstr ""
@@ -484,40 +528,40 @@ msgstr ""
msgid "Production"
msgstr "Produkcja"
-#: InvenTree/validators.py:23
+#: InvenTree/validators.py:25
msgid "Not a valid currency code"
msgstr "Nieprawidłowy kod waluty"
-#: InvenTree/validators.py:51
+#: InvenTree/validators.py:53
msgid "Invalid character in part name"
msgstr "Błędny znak w nazwie elementu"
-#: InvenTree/validators.py:64
+#: InvenTree/validators.py:66
#, python-brace-format
msgid "IPN must match regex pattern {pat}"
msgstr "IPN musi być zgodny z wyrażeniem regularnym {pat}"
-#: InvenTree/validators.py:78 InvenTree/validators.py:92
-#: InvenTree/validators.py:106
+#: InvenTree/validators.py:80 InvenTree/validators.py:94
+#: InvenTree/validators.py:108
#, python-brace-format
msgid "Reference must match pattern {pattern}"
msgstr ""
-#: InvenTree/validators.py:114
+#: InvenTree/validators.py:116
#, python-brace-format
msgid "Illegal character in name ({x})"
msgstr "Niedozwolony znak w nazwie ({x})"
-#: InvenTree/validators.py:133 InvenTree/validators.py:149
+#: InvenTree/validators.py:137 InvenTree/validators.py:153
msgid "Overage value must not be negative"
msgstr ""
-#: InvenTree/validators.py:151
+#: InvenTree/validators.py:155
msgid "Overage must not exceed 100%"
msgstr ""
-#: InvenTree/validators.py:158
-msgid "Overage must be an integer value or a percentage"
+#: InvenTree/validators.py:162
+msgid "Invalid value for overage"
msgstr ""
#: InvenTree/views.py:538
@@ -584,69 +628,11 @@ msgstr ""
msgid "Barcode associated with Stock Item"
msgstr ""
-#: build/forms.py:36 build/models.py:1293
-#: build/templates/build/build_base.html:82
-#: build/templates/build/detail.html:35 common/models.py:1263
-#: company/forms.py:42 company/templates/company/supplier_part.html:251
-#: order/models.py:805 order/models.py:1229 order/serializers.py:816
-#: order/templates/order/order_wizard/match_parts.html:30
-#: order/templates/order/order_wizard/select_parts.html:34 part/forms.py:144
-#: part/forms.py:160 part/forms.py:176 part/models.py:2636
-#: part/templates/part/bom_upload/match_parts.html:31
-#: part/templates/part/detail.html:992 part/templates/part/detail.html:1078
-#: part/templates/part/part_pricing.html:16
-#: report/templates/report/inventree_build_order_base.html:114
-#: report/templates/report/inventree_po_report.html:91
-#: report/templates/report/inventree_so_report.html:91
-#: report/templates/report/inventree_test_report_base.html:81
-#: report/templates/report/inventree_test_report_base.html:139
-#: stock/forms.py:142 stock/serializers.py:293
-#: stock/templates/stock/item_base.html:181
-#: stock/templates/stock/item_base.html:262
-#: stock/templates/stock/item_base.html:270
-#: templates/js/translated/barcode.js:385 templates/js/translated/bom.js:567
-#: templates/js/translated/build.js:295 templates/js/translated/build.js:495
-#: templates/js/translated/build.js:689 templates/js/translated/build.js:699
-#: templates/js/translated/build.js:1075 templates/js/translated/build.js:1422
-#: templates/js/translated/model_renderers.js:99
-#: templates/js/translated/order.js:101 templates/js/translated/order.js:1056
-#: 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:906
-#: templates/js/translated/part.js:1862 templates/js/translated/part.js:1985
-#: templates/js/translated/part.js:2063 templates/js/translated/stock.js:391
-#: templates/js/translated/stock.js:588 templates/js/translated/stock.js:758
-#: templates/js/translated/stock.js:2677 templates/js/translated/stock.js:2779
-msgid "Quantity"
-msgstr "Ilość"
-
-#: build/forms.py:37
-msgid "Enter quantity for build output"
-msgstr ""
-
-#: build/forms.py:41 order/serializers.py:820 stock/forms.py:81
-#: stock/serializers.py:314 templates/js/translated/stock.js:238
-#: templates/js/translated/stock.js:392
-msgid "Serial Numbers"
-msgstr "Numer seryjny"
-
-#: build/forms.py:43
-msgid "Enter serial numbers for build outputs"
-msgstr ""
-
-#: build/forms.py:49
-msgid "Confirm creation of build output"
-msgstr ""
-
-#: build/forms.py:70
-msgid "Confirm deletion of build output"
-msgstr ""
-
-#: build/forms.py:89
+#: build/forms.py:20
msgid "Confirm cancel"
msgstr "Na pewno anulować?"
-#: build/forms.py:89 build/views.py:65
+#: build/forms.py:20 build/views.py:62
msgid "Confirm build cancellation"
msgstr ""
@@ -657,7 +643,7 @@ msgstr ""
#: build/models.py:139 build/templates/build/build_base.html:9
#: build/templates/build/build_base.html:27
#: report/templates/report/inventree_build_order_base.html:106
-#: templates/js/translated/build.js:457 templates/js/translated/stock.js:2290
+#: templates/js/translated/build.js:676 templates/js/translated/stock.js:2414
msgid "Build Order"
msgstr "Zlecenie Budowy"
@@ -665,7 +651,7 @@ msgstr "Zlecenie Budowy"
#: 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
+#: part/templates/part/part_sidebar.html:21 templates/InvenTree/index.html:221
#: templates/InvenTree/search.html:139
#: templates/InvenTree/settings/sidebar.html:43 users/models.py:44
msgid "Build Orders"
@@ -676,11 +662,11 @@ msgid "Build Order Reference"
msgstr "Odwołanie do zamówienia wykonania"
#: build/models.py:201 order/models.py:213 order/models.py:541
-#: order/models.py:812 part/models.py:2645
-#: part/templates/part/bom_upload/match_parts.html:30
+#: order/models.py:812 part/models.py:2714
+#: part/templates/part/upload_bom.html:54
#: report/templates/report/inventree_po_report.html:92
#: report/templates/report/inventree_so_report.html:92
-#: templates/js/translated/bom.js:559 templates/js/translated/build.js:1179
+#: templates/js/translated/bom.js:772 templates/js/translated/build.js:1401
#: templates/js/translated/order.js:1050 templates/js/translated/order.js:2144
msgid "Reference"
msgstr "Referencja"
@@ -689,7 +675,7 @@ msgstr "Referencja"
msgid "Brief description of the build"
msgstr "Krótki opis budowy"
-#: build/models.py:221 build/templates/build/build_base.html:164
+#: build/models.py:221 build/templates/build/build_base.html:169
#: build/templates/build/detail.html:88
msgid "Parent Build"
msgstr "Budowa nadrzędna"
@@ -702,30 +688,31 @@ msgstr "Zamówienie budowy, do którego budowa jest przypisana"
#: build/templates/build/detail.html:30 company/models.py:705
#: order/models.py:876 order/models.py:950
#: order/templates/order/order_wizard/select_parts.html:32 part/models.py:359
-#: part/models.py:2211 part/models.py:2227 part/models.py:2246
-#: part/models.py:2263 part/models.py:2365 part/models.py:2487
-#: part/models.py:2620 part/models.py:2927 part/serializers.py:658
-#: part/templates/part/part_app_base.html:8
+#: part/models.py:2247 part/models.py:2263 part/models.py:2282
+#: part/models.py:2299 part/models.py:2401 part/models.py:2523
+#: part/models.py:2613 part/models.py:2689 part/models.py:2996
+#: part/serializers.py:666 part/templates/part/part_app_base.html:8
#: part/templates/part/part_pricing.html:12
#: part/templates/part/set_category.html:13
+#: part/templates/part/upload_bom.html:52
#: 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: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:338
-#: templates/js/translated/bom.js:517 templates/js/translated/build.js:680
-#: templates/js/translated/build.js:1048 templates/js/translated/build.js:1419
-#: templates/js/translated/build.js:1687 templates/js/translated/company.js:492
+#: templates/js/translated/barcode.js:383 templates/js/translated/bom.js:551
+#: templates/js/translated/bom.js:730 templates/js/translated/build.js:902
+#: templates/js/translated/build.js:1270 templates/js/translated/build.js:1655
+#: templates/js/translated/build.js:1925 templates/js/translated/company.js:492
#: templates/js/translated/company.js:749 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:984
#: templates/js/translated/part.js:1065 templates/js/translated/part.js:1232
-#: templates/js/translated/stock.js:562 templates/js/translated/stock.js:727
-#: templates/js/translated/stock.js:934 templates/js/translated/stock.js:1534
-#: templates/js/translated/stock.js:2767
+#: templates/js/translated/stock.js:563 templates/js/translated/stock.js:728
+#: templates/js/translated/stock.js:935 templates/js/translated/stock.js:1658
+#: templates/js/translated/stock.js:2891 templates/js/translated/stock.js:2990
msgid "Part"
msgstr "Część"
@@ -741,7 +728,7 @@ msgstr "Odwołanie do zamówienia sprzedaży"
msgid "SalesOrder to which this build is allocated"
msgstr "Zamówienie sprzedaży, do którego budowa jest przypisana"
-#: build/models.py:249 templates/js/translated/build.js:1407
+#: build/models.py:249 templates/js/translated/build.js:1643
#: templates/js/translated/order.js:1564
msgid "Source Location"
msgstr "Lokalizacja źródła"
@@ -782,15 +769,15 @@ msgstr "Status budowania"
msgid "Build status code"
msgstr "Kod statusu budowania"
-#: build/models.py:287 stock/models.py:533
+#: build/models.py:287 build/serializers.py:218 stock/models.py:533
msgid "Batch Code"
msgstr "Kod partii"
-#: build/models.py:291
+#: build/models.py:291 build/serializers.py:219
msgid "Batch code for this build output"
msgstr "Kod partii dla wyjścia budowy"
-#: build/models.py:294 order/models.py:129 part/models.py:969
+#: build/models.py:294 order/models.py:129 part/models.py:999
#: part/templates/part/part_base.html:313 templates/js/translated/order.js:1271
msgid "Creation Date"
msgstr "Data utworzenia"
@@ -804,7 +791,7 @@ msgid "Target date for build completion. Build will be overdue after this date."
msgstr ""
#: build/models.py:302 order/models.py:255
-#: templates/js/translated/build.js:1758
+#: templates/js/translated/build.js:1996
msgid "Completion Date"
msgstr "Data zakończenia"
@@ -812,7 +799,7 @@ msgstr "Data zakończenia"
msgid "completed by"
msgstr "zrealizowane przez"
-#: build/models.py:316 templates/js/translated/build.js:1729
+#: build/models.py:316 templates/js/translated/build.js:1967
msgid "Issued by"
msgstr "Wydany przez"
@@ -820,12 +807,12 @@ msgstr "Wydany przez"
msgid "User who issued this build order"
msgstr "Użytkownik, który wydał to zamówienie"
-#: build/models.py:325 build/templates/build/build_base.html:185
+#: build/models.py:325 build/templates/build/build_base.html:190
#: build/templates/build/detail.html:116 order/models.py:143
#: order/templates/order/order_base.html:170
-#: order/templates/order/sales_order_base.html:182 part/models.py:973
+#: order/templates/order/sales_order_base.html:182 part/models.py:1003
#: report/templates/report/inventree_build_order_base.html:159
-#: templates/js/translated/build.js:1741 templates/js/translated/order.js:864
+#: templates/js/translated/build.js:1979 templates/js/translated/order.js:864
msgid "Responsible"
msgstr "Odpowiedzialny"
@@ -837,26 +824,26 @@ msgstr "Użytkownik odpowiedzialny za to zamówienie budowy"
#: company/templates/company/manufacturer_part.html:102
#: company/templates/company/supplier_part.html:126
#: part/templates/part/part_base.html:354 stock/models.py:527
-#: stock/templates/stock/item_base.html:373
+#: stock/templates/stock/item_base.html:375
msgid "External Link"
msgstr "Link Zewnętrzny"
-#: build/models.py:336 build/serializers.py:201
+#: build/models.py:336 build/serializers.py:380
#: build/templates/build/sidebar.html:21 company/models.py:142
#: company/models.py:577 company/templates/company/sidebar.html:25
#: order/models.py:147 order/models.py:814 order/models.py:1071
#: order/templates/order/po_sidebar.html:11
-#: order/templates/order/so_sidebar.html:17 part/models.py:958
-#: part/templates/part/detail.html:137 part/templates/part/part_sidebar.html:54
+#: order/templates/order/so_sidebar.html:17 part/models.py:988
+#: part/templates/part/detail.html:140 part/templates/part/part_sidebar.html:57
#: report/templates/report/inventree_build_order_base.html:173
-#: stock/forms.py:140 stock/forms.py:190 stock/forms.py:224 stock/models.py:599
+#: stock/forms.py:137 stock/forms.py:171 stock/models.py:599
#: stock/models.py:1895 stock/models.py:2001 stock/serializers.py:332
-#: stock/serializers.py:640 stock/serializers.py:738 stock/serializers.py:870
+#: stock/serializers.py:697 stock/serializers.py:795 stock/serializers.py:927
#: stock/templates/stock/stock_sidebar.html:25
-#: templates/js/translated/barcode.js:58 templates/js/translated/bom.js:723
+#: templates/js/translated/barcode.js:58 templates/js/translated/bom.js:936
#: templates/js/translated/company.js:845 templates/js/translated/order.js:1149
#: templates/js/translated/order.js:1445 templates/js/translated/order.js:2280
-#: templates/js/translated/stock.js:1317 templates/js/translated/stock.js:1803
+#: templates/js/translated/stock.js:1345 templates/js/translated/stock.js:1927
msgid "Notes"
msgstr "Uwagi"
@@ -864,208 +851,284 @@ msgstr "Uwagi"
msgid "Extra build notes"
msgstr "Dodatkowe notatki do budowy"
-#: build/models.py:717
+#: build/models.py:756
msgid "No build output specified"
msgstr "Nie określono danych wyjściowych budowy"
-#: build/models.py:720
+#: build/models.py:759
msgid "Build output is already completed"
msgstr "Budowanie wyjścia jest już ukończone"
-#: build/models.py:723
+#: build/models.py:762
msgid "Build output does not match Build Order"
msgstr ""
-#: build/models.py:1115
+#: build/models.py:1154
msgid "Build item must specify a build output, as master part is marked as trackable"
msgstr ""
-#: build/models.py:1124
+#: build/models.py:1163
#, python-brace-format
msgid "Allocated quantity ({q}) must not execed available stock quantity ({a})"
msgstr ""
-#: build/models.py:1134
+#: build/models.py:1173
msgid "Stock item is over-allocated"
msgstr ""
-#: build/models.py:1140 order/models.py:1189
+#: build/models.py:1179 order/models.py:1189
msgid "Allocation quantity must be greater than zero"
msgstr "Alokowana ilość musi być większa niż zero"
-#: build/models.py:1146
+#: build/models.py:1185
msgid "Quantity must be 1 for serialized stock"
msgstr ""
-#: build/models.py:1203
+#: build/models.py:1242
msgid "Selected stock item not found in BOM"
msgstr ""
-#: build/models.py:1263 stock/templates/stock/item_base.html:345
-#: templates/InvenTree/search.html:137 templates/js/translated/build.js:1660
+#: build/models.py:1302 stock/templates/stock/item_base.html:347
+#: templates/InvenTree/search.html:137 templates/js/translated/build.js:1898
#: templates/navbar.html:35
msgid "Build"
msgstr "Budowa"
-#: build/models.py:1264
+#: build/models.py:1303
msgid "Build to allocate parts"
msgstr ""
-#: build/models.py:1280 build/serializers.py:388 order/serializers.py:696
-#: order/serializers.py:714 stock/serializers.py:578 stock/serializers.py:696
-#: stock/templates/stock/item_base.html:9
+#: build/models.py:1319 build/serializers.py:570 order/serializers.py:696
+#: order/serializers.py:714 stock/serializers.py:404 stock/serializers.py:635
+#: stock/serializers.py:753 stock/templates/stock/item_base.html:9
#: stock/templates/stock/item_base.html:23
-#: stock/templates/stock/item_base.html:367
-#: templates/js/translated/build.js:468 templates/js/translated/build.js:473
-#: templates/js/translated/build.js:1421 templates/js/translated/build.js:1803
+#: stock/templates/stock/item_base.html:369
+#: templates/js/translated/build.js:687 templates/js/translated/build.js:692
+#: templates/js/translated/build.js:1657 templates/js/translated/build.js:2041
#: 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:563 templates/js/translated/stock.js:728
-#: templates/js/translated/stock.js:2628
+#: templates/js/translated/stock.js:564 templates/js/translated/stock.js:729
+#: templates/js/translated/stock.js:2752
msgid "Stock Item"
msgstr "Element magazynowy"
-#: build/models.py:1281
+#: build/models.py:1320
msgid "Source stock item"
msgstr "Lokalizacja magazynowania przedmiotu"
-#: build/models.py:1294
+#: build/models.py:1332 build/serializers.py:188
+#: build/templates/build/build_base.html:82
+#: build/templates/build/detail.html:35 common/models.py:1275
+#: company/forms.py:42 company/templates/company/supplier_part.html:251
+#: order/models.py:805 order/models.py:1229 order/serializers.py:816
+#: order/templates/order/order_wizard/match_parts.html:30
+#: order/templates/order/order_wizard/select_parts.html:34 part/forms.py:144
+#: part/forms.py:160 part/forms.py:176 part/models.py:2705
+#: part/templates/part/detail.html:995 part/templates/part/detail.html:1081
+#: part/templates/part/part_pricing.html:16
+#: part/templates/part/upload_bom.html:53
+#: report/templates/report/inventree_build_order_base.html:114
+#: report/templates/report/inventree_po_report.html:91
+#: report/templates/report/inventree_so_report.html:91
+#: report/templates/report/inventree_test_report_base.html:81
+#: report/templates/report/inventree_test_report_base.html:139
+#: stock/forms.py:139 stock/serializers.py:293
+#: stock/templates/stock/item_base.html:183
+#: stock/templates/stock/item_base.html:264
+#: stock/templates/stock/item_base.html:272
+#: templates/js/translated/barcode.js:385 templates/js/translated/bom.js:780
+#: templates/js/translated/build.js:375 templates/js/translated/build.js:523
+#: templates/js/translated/build.js:714 templates/js/translated/build.js:911
+#: templates/js/translated/build.js:921 templates/js/translated/build.js:1297
+#: templates/js/translated/build.js:1658
+#: templates/js/translated/model_renderers.js:99
+#: templates/js/translated/order.js:101 templates/js/translated/order.js:1056
+#: 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:906
+#: templates/js/translated/part.js:1862 templates/js/translated/part.js:1985
+#: templates/js/translated/part.js:2063 templates/js/translated/stock.js:392
+#: templates/js/translated/stock.js:589 templates/js/translated/stock.js:759
+#: templates/js/translated/stock.js:2801 templates/js/translated/stock.js:2903
+msgid "Quantity"
+msgstr "Ilość"
+
+#: build/models.py:1333
msgid "Stock quantity to allocate to build"
msgstr ""
-#: build/models.py:1302
+#: build/models.py:1341
msgid "Install into"
msgstr "Zainstaluj do"
-#: build/models.py:1303
+#: build/models.py:1342
msgid "Destination stock item"
msgstr "Docelowa lokalizacja magazynowa przedmiotu"
-#: build/serializers.py:137 build/serializers.py:417
+#: build/serializers.py:138 build/serializers.py:599
msgid "Build Output"
msgstr ""
-#: build/serializers.py:146
+#: build/serializers.py:150
msgid "Build output does not match the parent build"
msgstr ""
-#: build/serializers.py:150
+#: build/serializers.py:154
msgid "Output part does not match BuildOrder part"
msgstr ""
-#: build/serializers.py:154
+#: build/serializers.py:158
msgid "This build output has already been completed"
msgstr ""
-#: build/serializers.py:158
+#: build/serializers.py:164
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:731
-#: stock/serializers.py:972 stock/templates/stock/item_base.html:313
-#: templates/js/translated/barcode.js:384
-#: templates/js/translated/barcode.js:557 templates/js/translated/build.js:480
-#: templates/js/translated/build.js:1087 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:179 templates/js/translated/stock.js:564
-#: templates/js/translated/stock.js:729 templates/js/translated/stock.js:936
-#: templates/js/translated/stock.js:1684 templates/js/translated/stock.js:2569
-msgid "Location"
-msgstr "Lokalizacja"
-
-#: build/serializers.py:191
-msgid "Location for completed build outputs"
+#: build/serializers.py:189
+msgid "Enter quantity for build output"
msgstr ""
-#: build/serializers.py:197 build/templates/build/build_base.html:137
-#: build/templates/build/detail.html:63 order/models.py:557
-#: order/serializers.py:247 stock/templates/stock/item_base.html:187
-#: templates/js/translated/barcode.js:140 templates/js/translated/build.js:1716
-#: templates/js/translated/order.js:591 templates/js/translated/order.js:840
-#: templates/js/translated/order.js:1263 templates/js/translated/stock.js:1659
-#: templates/js/translated/stock.js:2646 templates/js/translated/stock.js:2795
-msgid "Status"
-msgstr "Status"
-
-#: build/serializers.py:213
-msgid "A list of build outputs must be provided"
-msgstr ""
-
-#: build/serializers.py:249
-msgid "Accept Unallocated"
-msgstr ""
-
-#: build/serializers.py:250
-msgid "Accept that stock items have not been fully allocated to this build order"
-msgstr ""
-
-#: build/serializers.py:260 templates/js/translated/build.js:149
-msgid "Required stock has not been fully allocated"
-msgstr ""
-
-#: build/serializers.py:265
-msgid "Accept Incomplete"
-msgstr ""
-
-#: build/serializers.py:266
-msgid "Accept that the required number of build outputs have not been completed"
-msgstr ""
-
-#: build/serializers.py:276 templates/js/translated/build.js:153
-msgid "Required build quantity has not been completed"
-msgstr ""
-
-#: build/serializers.py:285
-msgid "Build order has incomplete outputs"
-msgstr ""
-
-#: build/serializers.py:313 build/serializers.py:362 part/models.py:2760
-#: part/models.py:2919
-msgid "BOM Item"
-msgstr ""
-
-#: build/serializers.py:323
-msgid "Build output"
-msgstr ""
-
-#: build/serializers.py:332
-msgid "Build output must point to the same build"
-msgstr ""
-
-#: build/serializers.py:379
-msgid "bom_item.part must point to the same part as the build order"
-msgstr ""
-
-#: build/serializers.py:394 stock/serializers.py:585
-msgid "Item must be in stock"
-msgstr "Towar musi znajdować się w magazynie"
-
-#: build/serializers.py:408 order/models.py:280 order/serializers.py:240
+#: build/serializers.py:201 build/serializers.py:590 order/models.py:280
+#: order/serializers.py:240 part/serializers.py:471 part/serializers.py:827
#: stock/models.py:367 stock/models.py:1105 stock/serializers.py:305
msgid "Quantity must be greater than zero"
msgstr "Ilość musi być większa niż zero"
-#: build/serializers.py:450 order/serializers.py:747
+#: build/serializers.py:208
+msgid "Integer quantity required for trackable parts"
+msgstr ""
+
+#: build/serializers.py:211
+msgid "Integer quantity required, as the bill of materials contains trackable parts"
+msgstr ""
+
+#: build/serializers.py:225 order/serializers.py:820 stock/forms.py:78
+#: stock/serializers.py:314 templates/js/translated/stock.js:239
+#: templates/js/translated/stock.js:393
+msgid "Serial Numbers"
+msgstr "Numer seryjny"
+
+#: build/serializers.py:226
+msgid "Enter serial numbers for build outputs"
+msgstr ""
+
+#: build/serializers.py:239
+msgid "Auto Allocate Serial Numbers"
+msgstr ""
+
+#: build/serializers.py:240
+msgid "Automatically allocate required items with matching serial numbers"
+msgstr ""
+
+#: build/serializers.py:274 stock/api.py:551
+msgid "The following serial numbers already exist"
+msgstr ""
+
+#: build/serializers.py:327 build/serializers.py:392
+msgid "A list of build outputs must be provided"
+msgstr ""
+
+#: build/serializers.py:369 order/serializers.py:226 order/serializers.py:294
+#: stock/forms.py:169 stock/serializers.py:325 stock/serializers.py:788
+#: stock/serializers.py:1029 stock/templates/stock/item_base.html:315
+#: templates/js/translated/barcode.js:384
+#: templates/js/translated/barcode.js:557 templates/js/translated/build.js:699
+#: templates/js/translated/build.js:1309 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:179 templates/js/translated/stock.js:565
+#: templates/js/translated/stock.js:730 templates/js/translated/stock.js:937
+#: templates/js/translated/stock.js:1808 templates/js/translated/stock.js:2693
+msgid "Location"
+msgstr "Lokalizacja"
+
+#: build/serializers.py:370
+msgid "Location for completed build outputs"
+msgstr ""
+
+#: build/serializers.py:376 build/templates/build/build_base.html:142
+#: build/templates/build/detail.html:63 order/models.py:557
+#: order/serializers.py:247 stock/templates/stock/item_base.html:189
+#: templates/js/translated/barcode.js:140 templates/js/translated/build.js:1954
+#: templates/js/translated/order.js:591 templates/js/translated/order.js:840
+#: templates/js/translated/order.js:1263 templates/js/translated/stock.js:1783
+#: templates/js/translated/stock.js:2770 templates/js/translated/stock.js:2919
+msgid "Status"
+msgstr "Status"
+
+#: build/serializers.py:428
+msgid "Accept Unallocated"
+msgstr ""
+
+#: build/serializers.py:429
+msgid "Accept that stock items have not been fully allocated to this build order"
+msgstr ""
+
+#: build/serializers.py:439 templates/js/translated/build.js:150
+msgid "Required stock has not been fully allocated"
+msgstr ""
+
+#: build/serializers.py:444
+msgid "Accept Incomplete"
+msgstr ""
+
+#: build/serializers.py:445
+msgid "Accept that the required number of build outputs have not been completed"
+msgstr ""
+
+#: build/serializers.py:455 templates/js/translated/build.js:154
+msgid "Required build quantity has not been completed"
+msgstr ""
+
+#: build/serializers.py:464
+msgid "Build order has incomplete outputs"
+msgstr ""
+
+#: build/serializers.py:467 build/templates/build/build_base.html:95
+msgid "No build outputs have been created for this build order"
+msgstr ""
+
+#: build/serializers.py:495 build/serializers.py:544 part/models.py:2829
+#: part/models.py:2988
+msgid "BOM Item"
+msgstr ""
+
+#: build/serializers.py:505
+msgid "Build output"
+msgstr ""
+
+#: build/serializers.py:514
+msgid "Build output must point to the same build"
+msgstr ""
+
+#: build/serializers.py:561
+msgid "bom_item.part must point to the same part as the build order"
+msgstr ""
+
+#: build/serializers.py:576 stock/serializers.py:642
+msgid "Item must be in stock"
+msgstr "Towar musi znajdować się w magazynie"
+
+#: build/serializers.py:632 order/serializers.py:747
#, python-brace-format
msgid "Available quantity ({q}) exceeded"
msgstr ""
-#: build/serializers.py:456
+#: build/serializers.py:638
msgid "Build output must be specified for allocation of tracked parts"
msgstr ""
-#: build/serializers.py:463
+#: build/serializers.py:645
msgid "Build output cannot be specified for allocation of untracked parts"
msgstr ""
-#: build/serializers.py:491 order/serializers.py:990
+#: build/serializers.py:673 order/serializers.py:990
msgid "Allocation items must be provided"
msgstr ""
-#: build/tasks.py:92
+#: build/tasks.py:98
msgid "Stock required for build order"
msgstr ""
@@ -1088,7 +1151,7 @@ msgid "Edit Build"
msgstr "Edytuj Budowę"
#: build/templates/build/build_base.html:56
-#: build/templates/build/build_base.html:215 build/views.py:56
+#: build/templates/build/build_base.html:220 build/views.py:53
msgid "Cancel Build"
msgstr "Anuluj Budowę"
@@ -1105,110 +1168,90 @@ msgstr ""
msgid "Build Description"
msgstr ""
-#: build/templates/build/build_base.html:96
+#: build/templates/build/build_base.html:101
#, python-format
msgid "This Build Order is allocated to Sales Order %(link)s"
msgstr ""
-#: build/templates/build/build_base.html:103
+#: build/templates/build/build_base.html:108
#, python-format
msgid "This Build Order is a child of Build Order %(link)s"
msgstr ""
-#: build/templates/build/build_base.html:110
+#: build/templates/build/build_base.html:115
msgid "Build Order is ready to mark as completed"
msgstr ""
-#: build/templates/build/build_base.html:115
+#: build/templates/build/build_base.html:120
msgid "Build Order cannot be completed as outstanding outputs remain"
msgstr ""
-#: build/templates/build/build_base.html:120
+#: build/templates/build/build_base.html:125
msgid "Required build quantity has not yet been completed"
msgstr ""
-#: build/templates/build/build_base.html:125
+#: build/templates/build/build_base.html:130
msgid "Stock has not been fully allocated to this Build Order"
msgstr ""
-#: build/templates/build/build_base.html:146
+#: build/templates/build/build_base.html:151
#: build/templates/build/detail.html:132
#: order/templates/order/order_base.html:156
#: order/templates/order/sales_order_base.html:163
#: report/templates/report/inventree_build_order_base.html:126
-#: templates/js/translated/build.js:1753 templates/js/translated/order.js:854
+#: templates/js/translated/build.js:1991 templates/js/translated/order.js:854
#: templates/js/translated/order.js:1276
msgid "Target Date"
msgstr "Data docelowa"
-#: build/templates/build/build_base.html:151
+#: build/templates/build/build_base.html:156
#, python-format
msgid "This build was due on %(target)s"
msgstr ""
-#: build/templates/build/build_base.html:151
-#: build/templates/build/build_base.html:196
+#: build/templates/build/build_base.html:156
+#: build/templates/build/build_base.html:201
#: order/templates/order/order_base.html:98
#: order/templates/order/sales_order_base.html:93
-#: templates/js/translated/table_filters.js:299
-#: templates/js/translated/table_filters.js:340
-#: templates/js/translated/table_filters.js:361
+#: templates/js/translated/table_filters.js:294
+#: templates/js/translated/table_filters.js:335
+#: templates/js/translated/table_filters.js:356
msgid "Overdue"
msgstr "Zaległe"
-#: build/templates/build/build_base.html:158
+#: build/templates/build/build_base.html:163
#: build/templates/build/detail.html:68 build/templates/build/detail.html:143
#: order/templates/order/sales_order_base.html:170
-#: templates/js/translated/build.js:1702
-#: templates/js/translated/table_filters.js:370
+#: templates/js/translated/build.js:1940
+#: templates/js/translated/table_filters.js:365
msgid "Completed"
msgstr "Zakończone"
-#: build/templates/build/build_base.html:171
+#: build/templates/build/build_base.html:176
#: build/templates/build/detail.html:95 order/models.py:947
#: order/models.py:1043 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:307
-#: templates/js/translated/order.js:1218 templates/js/translated/stock.js:2304
+#: stock/templates/stock/item_base.html:309
+#: templates/js/translated/order.js:1218 templates/js/translated/stock.js:2428
msgid "Sales Order"
msgstr "Zamówienie zakupu"
-#: build/templates/build/build_base.html:178
+#: build/templates/build/build_base.html:183
#: build/templates/build/detail.html:109
#: report/templates/report/inventree_build_order_base.html:153
msgid "Issued By"
msgstr "Dodane przez"
-#: build/templates/build/build_base.html:223
+#: build/templates/build/build_base.html:228
msgid "Incomplete Outputs"
msgstr ""
-#: build/templates/build/build_base.html:224
+#: build/templates/build/build_base.html:229
msgid "Build Order cannot be completed as incomplete build outputs remain"
msgstr ""
-#: build/templates/build/build_output_create.html:7
-msgid "The Bill of Materials contains trackable parts"
-msgstr ""
-
-#: build/templates/build/build_output_create.html:8
-msgid "Build outputs must be generated individually."
-msgstr ""
-
-#: build/templates/build/build_output_create.html:9
-msgid "Multiple build outputs will be created based on the quantity specified."
-msgstr ""
-
-#: build/templates/build/build_output_create.html:15
-msgid "Trackable parts can have serial numbers specified"
-msgstr ""
-
-#: build/templates/build/build_output_create.html:16
-msgid "Enter serial numbers to generate multiple single build outputs"
-msgstr ""
-
#: build/templates/build/cancel.html:5
msgid "Are you sure you wish to cancel this build?"
msgstr "Czy na pewno przerwać tę budowę?"
@@ -1225,7 +1268,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:898 stock/forms.py:136
+#: build/templates/build/detail.html:50 order/models.py:898 stock/forms.py:133
#: templates/js/translated/order.js:592 templates/js/translated/order.js:1138
msgid "Destination"
msgstr "Przeznaczenie"
@@ -1234,13 +1277,13 @@ msgstr "Przeznaczenie"
msgid "Destination location not specified"
msgstr "Nie określono lokalizacji docelowej"
-#: build/templates/build/detail.html:74 templates/js/translated/build.js:707
+#: build/templates/build/detail.html:74 templates/js/translated/build.js:929
msgid "Allocated Parts"
msgstr ""
#: build/templates/build/detail.html:81
-#: stock/templates/stock/item_base.html:331
-#: templates/js/translated/stock.js:1673 templates/js/translated/stock.js:2802
+#: stock/templates/stock/item_base.html:333
+#: templates/js/translated/stock.js:1797 templates/js/translated/stock.js:2926
#: templates/js/translated/table_filters.js:151
#: templates/js/translated/table_filters.js:238
msgid "Batch"
@@ -1249,7 +1292,7 @@ msgstr "Partia"
#: build/templates/build/detail.html:127
#: order/templates/order/order_base.html:143
#: order/templates/order/sales_order_base.html:157
-#: templates/js/translated/build.js:1724
+#: templates/js/translated/build.js:1962
msgid "Created"
msgstr "Utworzony"
@@ -1269,7 +1312,7 @@ msgstr ""
msgid "Allocate Stock to Build"
msgstr "Przydziel zapasy do budowy"
-#: build/templates/build/detail.html:177 templates/js/translated/build.js:1262
+#: build/templates/build/detail.html:177 templates/js/translated/build.js:1484
msgid "Unallocate stock"
msgstr "Cofnij przydział zapasów"
@@ -1329,52 +1372,60 @@ msgid "Output Actions"
msgstr ""
#: build/templates/build/detail.html:250
-msgid "Complete selected items"
+msgid "Complete selected build outputs"
msgstr ""
#: build/templates/build/detail.html:251
msgid "Complete outputs"
msgstr ""
-#: build/templates/build/detail.html:266
+#: build/templates/build/detail.html:253
+msgid "Delete selected build outputs"
+msgstr ""
+
+#: build/templates/build/detail.html:254
+msgid "Delete outputs"
+msgstr ""
+
+#: build/templates/build/detail.html:270
msgid "Completed Build Outputs"
msgstr ""
-#: build/templates/build/detail.html:278 build/templates/build/sidebar.html:19
+#: build/templates/build/detail.html:282 build/templates/build/sidebar.html:19
#: order/templates/order/po_sidebar.html:9
#: order/templates/order/purchase_order_detail.html:60
#: order/templates/order/sales_order_detail.html:107
-#: order/templates/order/so_sidebar.html:15 part/templates/part/detail.html:213
-#: part/templates/part/part_sidebar.html:52 stock/templates/stock/item.html:112
+#: order/templates/order/so_sidebar.html:15 part/templates/part/detail.html:216
+#: part/templates/part/part_sidebar.html:55 stock/templates/stock/item.html:112
#: stock/templates/stock/stock_sidebar.html:23
msgid "Attachments"
msgstr "Załączniki"
-#: build/templates/build/detail.html:294
+#: build/templates/build/detail.html:298
msgid "Build Notes"
msgstr "Notatki tworzenia"
-#: build/templates/build/detail.html:298 build/templates/build/detail.html:453
+#: build/templates/build/detail.html:302 build/templates/build/detail.html:478
#: company/templates/company/detail.html:188
#: company/templates/company/detail.html:215
#: order/templates/order/purchase_order_detail.html:80
#: order/templates/order/purchase_order_detail.html:108
#: order/templates/order/sales_order_detail.html:127
#: order/templates/order/sales_order_detail.html:186
-#: part/templates/part/detail.html:141 stock/templates/stock/item.html:132
-#: stock/templates/stock/item.html:235
+#: part/templates/part/detail.html:144 stock/templates/stock/item.html:132
+#: stock/templates/stock/item.html:230
msgid "Edit Notes"
msgstr ""
-#: build/templates/build/detail.html:477
+#: build/templates/build/detail.html:502
msgid "Allocation Complete"
msgstr ""
-#: build/templates/build/detail.html:478
+#: build/templates/build/detail.html:503
msgid "All untracked stock items have been allocated"
msgstr ""
-#: build/templates/build/index.html:18 part/templates/part/detail.html:320
+#: build/templates/build/index.html:18 part/templates/part/detail.html:323
msgid "New Build Order"
msgstr "Nowe zlecenie budowy"
@@ -1406,51 +1457,11 @@ msgstr ""
msgid "Completed Items"
msgstr ""
-#: build/views.py:76
+#: build/views.py:73
msgid "Build was cancelled"
msgstr "Tworzenie zostało przerwane"
-#: build/views.py:88
-msgid "Create Build Output"
-msgstr "Utwórz zlecenie budowy"
-
-#: build/views.py:106
-msgid "Maximum output quantity is "
-msgstr ""
-
-#: build/views.py:122 stock/serializers.py:363 stock/views.py:1257
-msgid "Serial numbers already exist"
-msgstr "Numer seryjny już istnieje"
-
-#: build/views.py:131
-msgid "Serial numbers required for trackable build output"
-msgstr ""
-
-#: build/views.py:197
-msgid "Delete Build Output"
-msgstr ""
-
-#: build/views.py:218
-msgid "Confirm unallocation of build stock"
-msgstr ""
-
-#: build/views.py:219 stock/views.py:352
-msgid "Check the confirmation box"
-msgstr ""
-
-#: build/views.py:231
-msgid "Build output does not match build"
-msgstr ""
-
-#: build/views.py:233
-msgid "Build output must be specified"
-msgstr ""
-
-#: build/views.py:245
-msgid "Build output deleted"
-msgstr ""
-
-#: build/views.py:286
+#: build/views.py:114
msgid "Delete Build Order"
msgstr ""
@@ -1639,9 +1650,9 @@ msgstr ""
msgid "Copy category parameter templates when creating a part"
msgstr ""
-#: common/models.py:705 part/models.py:2489 report/models.py:187
+#: common/models.py:705 part/models.py:2525 report/models.py:187
#: templates/js/translated/table_filters.js:38
-#: templates/js/translated/table_filters.js:422
+#: templates/js/translated/table_filters.js:417
msgid "Template"
msgstr "Szablon"
@@ -1649,9 +1660,9 @@ msgstr "Szablon"
msgid "Parts are templates by default"
msgstr ""
-#: common/models.py:712 part/models.py:921 templates/js/translated/bom.js:1082
+#: common/models.py:712 part/models.py:951 templates/js/translated/bom.js:1300
#: templates/js/translated/table_filters.js:168
-#: templates/js/translated/table_filters.js:434
+#: templates/js/translated/table_filters.js:429
msgid "Assembly"
msgstr "Złożenie"
@@ -1659,8 +1670,8 @@ msgstr "Złożenie"
msgid "Parts can be assembled from other components by default"
msgstr ""
-#: common/models.py:719 part/models.py:927
-#: templates/js/translated/table_filters.js:438
+#: common/models.py:719 part/models.py:957
+#: templates/js/translated/table_filters.js:433
msgid "Component"
msgstr "Komponent"
@@ -1668,7 +1679,7 @@ msgstr "Komponent"
msgid "Parts can be used as sub-components by default"
msgstr ""
-#: common/models.py:726 part/models.py:938
+#: common/models.py:726 part/models.py:968
msgid "Purchaseable"
msgstr "Możliwość zakupu"
@@ -1676,8 +1687,8 @@ msgstr "Możliwość zakupu"
msgid "Parts are purchaseable by default"
msgstr "Części są domyślnie z możliwością zakupu"
-#: common/models.py:733 part/models.py:943
-#: templates/js/translated/table_filters.js:446
+#: common/models.py:733 part/models.py:973
+#: templates/js/translated/table_filters.js:441
msgid "Salable"
msgstr "Możliwość sprzedaży"
@@ -1685,10 +1696,10 @@ msgstr "Możliwość sprzedaży"
msgid "Parts are salable by default"
msgstr "Części są domyślnie z możliwością sprzedaży"
-#: common/models.py:740 part/models.py:933
+#: common/models.py:740 part/models.py:963
#: templates/js/translated/table_filters.js:46
#: templates/js/translated/table_filters.js:100
-#: templates/js/translated/table_filters.js:450
+#: templates/js/translated/table_filters.js:445
msgid "Trackable"
msgstr "Możliwość śledzenia"
@@ -1696,7 +1707,7 @@ msgstr "Możliwość śledzenia"
msgid "Parts are trackable by default"
msgstr "Części są domyślnie z możliwością śledzenia"
-#: common/models.py:747 part/models.py:953
+#: common/models.py:747 part/models.py:983
#: part/templates/part/part_base.html:147
#: templates/js/translated/table_filters.js:42
msgid "Virtual"
@@ -1730,589 +1741,595 @@ msgstr ""
msgid "Include pricing information in BOM tables"
msgstr ""
-#: common/models.py:780
+#: common/models.py:785
+msgid "Show Price History"
+msgstr ""
+
+#: common/models.py:786
+msgid "Display historical pricing for Part"
+msgstr ""
+
+#: common/models.py:792
msgid "Show related parts"
msgstr ""
-#: common/models.py:781
+#: common/models.py:793
msgid "Display related parts for a part"
msgstr ""
-#: common/models.py:787
+#: common/models.py:799
msgid "Create initial stock"
msgstr ""
-#: common/models.py:788
+#: common/models.py:800
msgid "Create initial stock on part creation"
msgstr ""
-#: common/models.py:794
+#: common/models.py:806
msgid "Internal Prices"
msgstr ""
-#: common/models.py:795
+#: common/models.py:807
msgid "Enable internal prices for parts"
msgstr ""
-#: common/models.py:801
+#: common/models.py:813
msgid "Internal Price as BOM-Price"
msgstr ""
-#: common/models.py:802
+#: common/models.py:814
msgid "Use the internal price (if set) in BOM-price calculations"
msgstr ""
-#: common/models.py:808
+#: common/models.py:820
msgid "Part Name Display Format"
msgstr ""
-#: common/models.py:809
+#: common/models.py:821
msgid "Format to display the part name"
msgstr ""
-#: common/models.py:816
+#: common/models.py:828
msgid "Enable Reports"
msgstr ""
-#: common/models.py:817
+#: common/models.py:829
msgid "Enable generation of reports"
msgstr ""
-#: common/models.py:823 templates/stats.html:25
+#: common/models.py:835 templates/stats.html:25
msgid "Debug Mode"
msgstr "Tryb Debugowania"
-#: common/models.py:824
+#: common/models.py:836
msgid "Generate reports in debug mode (HTML output)"
msgstr ""
-#: common/models.py:830
+#: common/models.py:842
msgid "Page Size"
msgstr "Rozmiar strony"
-#: common/models.py:831
+#: common/models.py:843
msgid "Default page size for PDF reports"
msgstr ""
-#: common/models.py:841
+#: common/models.py:853
msgid "Test Reports"
msgstr "Raporty testów"
-#: common/models.py:842
+#: common/models.py:854
msgid "Enable generation of test reports"
msgstr "Włącz generowanie raportów testów"
-#: common/models.py:848
+#: common/models.py:860
msgid "Stock Expiry"
msgstr ""
-#: common/models.py:849
+#: common/models.py:861
msgid "Enable stock expiry functionality"
msgstr ""
-#: common/models.py:855
+#: common/models.py:867
msgid "Sell Expired Stock"
msgstr ""
-#: common/models.py:856
+#: common/models.py:868
msgid "Allow sale of expired stock"
msgstr ""
-#: common/models.py:862
+#: common/models.py:874
msgid "Stock Stale Time"
msgstr ""
-#: common/models.py:863
+#: common/models.py:875
msgid "Number of days stock items are considered stale before expiring"
msgstr ""
-#: common/models.py:865
+#: common/models.py:877
msgid "days"
msgstr "dni"
-#: common/models.py:870
+#: common/models.py:882
msgid "Build Expired Stock"
msgstr ""
-#: common/models.py:871
+#: common/models.py:883
msgid "Allow building with expired stock"
msgstr ""
-#: common/models.py:877
+#: common/models.py:889
msgid "Stock Ownership Control"
msgstr ""
-#: common/models.py:878
+#: common/models.py:890
msgid "Enable ownership control over stock locations and items"
msgstr ""
-#: common/models.py:884
+#: common/models.py:896
msgid "Build Order Reference Prefix"
msgstr ""
-#: common/models.py:885
+#: common/models.py:897
msgid "Prefix value for build order reference"
msgstr ""
-#: common/models.py:890
+#: common/models.py:902
msgid "Build Order Reference Regex"
msgstr ""
-#: common/models.py:891
+#: common/models.py:903
msgid "Regular expression pattern for matching build order reference"
msgstr ""
-#: common/models.py:895
+#: common/models.py:907
msgid "Sales Order Reference Prefix"
msgstr ""
-#: common/models.py:896
+#: common/models.py:908
msgid "Prefix value for sales order reference"
msgstr ""
-#: common/models.py:901
+#: common/models.py:913
msgid "Purchase Order Reference Prefix"
msgstr ""
-#: common/models.py:902
+#: common/models.py:914
msgid "Prefix value for purchase order reference"
msgstr ""
-#: common/models.py:908
+#: common/models.py:920
msgid "Enable password forgot"
msgstr ""
-#: common/models.py:909
+#: common/models.py:921
msgid "Enable password forgot function on the login pages"
msgstr ""
-#: common/models.py:914
+#: common/models.py:926
msgid "Enable registration"
msgstr ""
-#: common/models.py:915
+#: common/models.py:927
msgid "Enable self-registration for users on the login pages"
msgstr ""
-#: common/models.py:920
+#: common/models.py:932
msgid "Enable SSO"
msgstr ""
-#: common/models.py:921
+#: common/models.py:933
msgid "Enable SSO on the login pages"
msgstr ""
-#: common/models.py:926
+#: common/models.py:938
msgid "Email required"
msgstr ""
-#: common/models.py:927
+#: common/models.py:939
msgid "Require user to supply mail on signup"
msgstr ""
-#: common/models.py:932
+#: common/models.py:944
msgid "Auto-fill SSO users"
msgstr ""
-#: common/models.py:933
+#: common/models.py:945
msgid "Automatically fill out user-details from SSO account-data"
msgstr ""
-#: common/models.py:938
+#: common/models.py:950
msgid "Mail twice"
msgstr ""
-#: common/models.py:939
+#: common/models.py:951
msgid "On signup ask users twice for their mail"
msgstr ""
-#: common/models.py:944
+#: common/models.py:956
msgid "Password twice"
msgstr ""
-#: common/models.py:945
+#: common/models.py:957
msgid "On signup ask users twice for their password"
msgstr ""
-#: common/models.py:950
+#: common/models.py:962
msgid "Group on signup"
msgstr ""
-#: common/models.py:951
+#: common/models.py:963
msgid "Group to which new users are assigned on registration"
msgstr ""
-#: common/models.py:956
+#: common/models.py:968
msgid "Enforce MFA"
msgstr ""
-#: common/models.py:957
+#: common/models.py:969
msgid "Users must use multifactor security."
msgstr ""
-#: common/models.py:964
+#: common/models.py:976
msgid "Enable URL integration"
msgstr ""
-#: common/models.py:965
+#: common/models.py:977
msgid "Enable plugins to add URL routes"
msgstr ""
-#: common/models.py:971
+#: common/models.py:983
msgid "Enable navigation integration"
msgstr ""
-#: common/models.py:972
+#: common/models.py:984
msgid "Enable plugins to integrate into navigation"
msgstr ""
-#: common/models.py:978
+#: common/models.py:990
msgid "Enable app integration"
msgstr ""
-#: common/models.py:979
+#: common/models.py:991
msgid "Enable plugins to add apps"
msgstr ""
-#: common/models.py:985
+#: common/models.py:997
msgid "Enable schedule integration"
msgstr ""
-#: common/models.py:986
+#: common/models.py:998
msgid "Enable plugins to run scheduled tasks"
msgstr ""
-#: common/models.py:992
+#: common/models.py:1004
msgid "Enable event integration"
msgstr ""
-#: common/models.py:993
+#: common/models.py:1005
msgid "Enable plugins to respond to internal events"
msgstr ""
-#: common/models.py:1008 common/models.py:1216
+#: common/models.py:1020 common/models.py:1228
msgid "Settings key (must be unique - case insensitive"
msgstr ""
-#: common/models.py:1039
+#: common/models.py:1051
msgid "Show subscribed parts"
msgstr ""
-#: common/models.py:1040
+#: common/models.py:1052
msgid "Show subscribed parts on the homepage"
msgstr ""
-#: common/models.py:1045
+#: common/models.py:1057
msgid "Show subscribed categories"
msgstr ""
-#: common/models.py:1046
+#: common/models.py:1058
msgid "Show subscribed part categories on the homepage"
msgstr ""
-#: common/models.py:1051
+#: common/models.py:1063
msgid "Show latest parts"
msgstr ""
-#: common/models.py:1052
+#: common/models.py:1064
msgid "Show latest parts on the homepage"
msgstr ""
-#: common/models.py:1057
+#: common/models.py:1069
msgid "Recent Part Count"
msgstr ""
-#: common/models.py:1058
+#: common/models.py:1070
msgid "Number of recent parts to display on index page"
msgstr ""
-#: common/models.py:1064
+#: common/models.py:1076
msgid "Show unvalidated BOMs"
msgstr ""
-#: common/models.py:1065
+#: common/models.py:1077
msgid "Show BOMs that await validation on the homepage"
msgstr ""
-#: common/models.py:1070
+#: common/models.py:1082
msgid "Show recent stock changes"
msgstr ""
-#: common/models.py:1071
+#: common/models.py:1083
msgid "Show recently changed stock items on the homepage"
msgstr ""
-#: common/models.py:1076
+#: common/models.py:1088
msgid "Recent Stock Count"
msgstr ""
-#: common/models.py:1077
+#: common/models.py:1089
msgid "Number of recent stock items to display on index page"
msgstr ""
-#: common/models.py:1082
+#: common/models.py:1094
msgid "Show low stock"
msgstr ""
-#: common/models.py:1083
+#: common/models.py:1095
msgid "Show low stock items on the homepage"
msgstr ""
-#: common/models.py:1088
+#: common/models.py:1100
msgid "Show depleted stock"
msgstr ""
-#: common/models.py:1089
+#: common/models.py:1101
msgid "Show depleted stock items on the homepage"
msgstr ""
-#: common/models.py:1094
+#: common/models.py:1106
msgid "Show needed stock"
msgstr ""
-#: common/models.py:1095
+#: common/models.py:1107
msgid "Show stock items needed for builds on the homepage"
msgstr ""
-#: common/models.py:1100
+#: common/models.py:1112
msgid "Show expired stock"
msgstr ""
-#: common/models.py:1101
+#: common/models.py:1113
msgid "Show expired stock items on the homepage"
msgstr ""
-#: common/models.py:1106
+#: common/models.py:1118
msgid "Show stale stock"
msgstr ""
-#: common/models.py:1107
+#: common/models.py:1119
msgid "Show stale stock items on the homepage"
msgstr ""
-#: common/models.py:1112
+#: common/models.py:1124
msgid "Show pending builds"
msgstr ""
-#: common/models.py:1113
+#: common/models.py:1125
msgid "Show pending builds on the homepage"
msgstr ""
-#: common/models.py:1118
+#: common/models.py:1130
msgid "Show overdue builds"
msgstr ""
-#: common/models.py:1119
+#: common/models.py:1131
msgid "Show overdue builds on the homepage"
msgstr ""
-#: common/models.py:1124
+#: common/models.py:1136
msgid "Show outstanding POs"
msgstr ""
-#: common/models.py:1125
+#: common/models.py:1137
msgid "Show outstanding POs on the homepage"
msgstr ""
-#: common/models.py:1130
+#: common/models.py:1142
msgid "Show overdue POs"
msgstr ""
-#: common/models.py:1131
+#: common/models.py:1143
msgid "Show overdue POs on the homepage"
msgstr ""
-#: common/models.py:1136
+#: common/models.py:1148
msgid "Show outstanding SOs"
msgstr ""
-#: common/models.py:1137
+#: common/models.py:1149
msgid "Show outstanding SOs on the homepage"
msgstr ""
-#: common/models.py:1142
+#: common/models.py:1154
msgid "Show overdue SOs"
msgstr ""
-#: common/models.py:1143
+#: common/models.py:1155
msgid "Show overdue SOs on the homepage"
msgstr ""
-#: common/models.py:1149
+#: common/models.py:1161
msgid "Inline label display"
msgstr ""
-#: common/models.py:1150
+#: common/models.py:1162
msgid "Display PDF labels in the browser, instead of downloading as a file"
msgstr ""
-#: common/models.py:1156
+#: common/models.py:1168
msgid "Inline report display"
msgstr ""
-#: common/models.py:1157
+#: common/models.py:1169
msgid "Display PDF reports in the browser, instead of downloading as a file"
msgstr ""
-#: common/models.py:1163
+#: common/models.py:1175
msgid "Search Preview Results"
msgstr ""
-#: common/models.py:1164
+#: common/models.py:1176
msgid "Number of results to show in search preview window"
msgstr ""
-#: common/models.py:1170
+#: common/models.py:1182
msgid "Search Show Stock"
msgstr ""
-#: common/models.py:1171
+#: common/models.py:1183
msgid "Display stock levels in search preview window"
msgstr ""
-#: common/models.py:1177
+#: common/models.py:1189
msgid "Hide Inactive Parts"
msgstr ""
-#: common/models.py:1178
+#: common/models.py:1190
msgid "Hide inactive parts in search preview window"
msgstr ""
-#: common/models.py:1184
+#: common/models.py:1196
msgid "Show Quantity in Forms"
msgstr "Pokaż ilość w formularzach"
-#: common/models.py:1185
+#: common/models.py:1197
msgid "Display available part quantity in some forms"
msgstr ""
-#: common/models.py:1191
+#: common/models.py:1203
msgid "Escape Key Closes Forms"
msgstr ""
-#: common/models.py:1192
+#: common/models.py:1204
msgid "Use the escape key to close modal forms"
msgstr ""
-#: common/models.py:1198
+#: common/models.py:1210
msgid "Fixed Navbar"
msgstr ""
-#: common/models.py:1199
+#: common/models.py:1211
msgid "InvenTree navbar position is fixed to the top of the screen"
msgstr ""
-#: common/models.py:1264 company/forms.py:43
+#: common/models.py:1276 company/forms.py:43
msgid "Price break quantity"
msgstr ""
-#: common/models.py:1271 company/serializers.py:264
+#: common/models.py:1283 company/serializers.py:264
#: company/templates/company/supplier_part.html:256
#: templates/js/translated/part.js:915 templates/js/translated/part.js:1867
msgid "Price"
msgstr "Cena"
-#: common/models.py:1272
+#: common/models.py:1284
msgid "Unit price at specified quantity"
msgstr ""
-#: common/models.py:1429 common/models.py:1568
+#: common/models.py:1441 common/models.py:1580
msgid "Endpoint"
msgstr ""
-#: common/models.py:1430
+#: common/models.py:1442
msgid "Endpoint at which this webhook is received"
msgstr ""
-#: common/models.py:1439
+#: common/models.py:1451
msgid "Name for this webhook"
msgstr ""
-#: common/models.py:1444 part/models.py:948 plugin/models.py:46
+#: common/models.py:1456 part/models.py:978 plugin/models.py:46
#: templates/js/translated/table_filters.js:34
#: templates/js/translated/table_filters.js:96
-#: templates/js/translated/table_filters.js:295
-#: templates/js/translated/table_filters.js:417
+#: templates/js/translated/table_filters.js:290
+#: templates/js/translated/table_filters.js:412
msgid "Active"
msgstr "Aktywny"
-#: common/models.py:1445
+#: common/models.py:1457
msgid "Is this webhook active"
msgstr ""
-#: common/models.py:1459
+#: common/models.py:1471
msgid "Token"
msgstr ""
-#: common/models.py:1460
+#: common/models.py:1472
msgid "Token for access"
msgstr ""
-#: common/models.py:1467
+#: common/models.py:1479
msgid "Secret"
msgstr ""
-#: common/models.py:1468
+#: common/models.py:1480
msgid "Shared secret for HMAC"
msgstr ""
-#: common/models.py:1535
+#: common/models.py:1547
msgid "Message ID"
msgstr ""
-#: common/models.py:1536
+#: common/models.py:1548
msgid "Unique identifier for this message"
msgstr ""
-#: common/models.py:1544
+#: common/models.py:1556
msgid "Host"
msgstr ""
-#: common/models.py:1545
+#: common/models.py:1557
msgid "Host from which this message was received"
msgstr ""
-#: common/models.py:1552
+#: common/models.py:1564
msgid "Header"
msgstr ""
-#: common/models.py:1553
+#: common/models.py:1565
msgid "Header of this message"
msgstr ""
-#: common/models.py:1559
+#: common/models.py:1571
msgid "Body"
msgstr ""
-#: common/models.py:1560
+#: common/models.py:1572
msgid "Body of this message"
msgstr ""
-#: common/models.py:1569
+#: common/models.py:1581
msgid "Endpoint on which this message was received"
msgstr ""
-#: common/models.py:1574
+#: common/models.py:1586
msgid "Worked on"
msgstr ""
-#: common/models.py:1575
+#: common/models.py:1587
msgid "Was the work on this message finished?"
msgstr ""
#: common/views.py:93 order/templates/order/order_wizard/po_upload.html:49
#: order/templates/order/purchase_order_detail.html:24 order/views.py:243
-#: part/templates/part/bom_upload/upload_file.html:52
-#: part/templates/part/import_wizard/part_upload.html:47 part/views.py:213
-#: part/views.py:773
+#: part/templates/part/import_wizard/part_upload.html:47 part/views.py:210
+#: templates/patterns/wizard/upload.html:35
msgid "Upload File"
msgstr "Wyślij plik"
-#: common/views.py:94 order/templates/order/order_wizard/match_fields.html:52
-#: order/views.py:244 part/templates/part/bom_upload/match_fields.html:52
+#: common/views.py:94 order/views.py:244
#: part/templates/part/import_wizard/ajax_match_fields.html:45
-#: part/templates/part/import_wizard/match_fields.html:52 part/views.py:214
-#: part/views.py:774
+#: part/templates/part/import_wizard/match_fields.html:52 part/views.py:211
+#: templates/patterns/wizard/match_fields.html:51
msgid "Match Fields"
msgstr ""
@@ -2328,15 +2345,13 @@ msgstr ""
msgid "Parts imported"
msgstr ""
-#: common/views.py:517 order/templates/order/order_wizard/match_fields.html:27
-#: order/templates/order/order_wizard/match_parts.html:19
+#: common/views.py:517 order/templates/order/order_wizard/match_parts.html:19
#: order/templates/order/order_wizard/po_upload.html:47
-#: part/templates/part/bom_upload/match_fields.html:27
-#: part/templates/part/bom_upload/match_parts.html:19
-#: part/templates/part/bom_upload/upload_file.html:50
#: part/templates/part/import_wizard/match_fields.html:27
#: part/templates/part/import_wizard/match_references.html:19
#: part/templates/part/import_wizard/part_upload.html:45
+#: templates/patterns/wizard/match_fields.html:26
+#: templates/patterns/wizard/upload.html:33
msgid "Previous Step"
msgstr ""
@@ -2404,7 +2419,7 @@ msgstr "Punkt kontaktowy"
msgid "Link to external company information"
msgstr "Link do informacji o zewnętrznym przedsiębiorstwie"
-#: company/models.py:139 part/models.py:840
+#: company/models.py:139 part/models.py:870
msgid "Image"
msgstr "Obraz"
@@ -2442,7 +2457,7 @@ msgid "Default currency used for this company"
msgstr ""
#: company/models.py:320 company/models.py:535 stock/models.py:471
-#: stock/templates/stock/item_base.html:142 templates/js/translated/bom.js:328
+#: stock/templates/stock/item_base.html:144 templates/js/translated/bom.js:541
msgid "Base Part"
msgstr "Część bazowa"
@@ -2453,11 +2468,11 @@ 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:380
+#: stock/templates/stock/item_base.html:382
#: templates/js/translated/company.js:333
#: templates/js/translated/company.js:517
#: templates/js/translated/company.js:800 templates/js/translated/part.js:234
-#: templates/js/translated/table_filters.js:389
+#: templates/js/translated/table_filters.js:384
msgid "Manufacturer"
msgstr "Producent"
@@ -2488,7 +2503,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:390
+#: stock/templates/stock/item_base.html:392
msgid "Manufacturer Part"
msgstr "Część producenta"
@@ -2499,7 +2514,7 @@ msgstr ""
#: company/models.py:422
#: report/templates/report/inventree_test_report_base.html:95
#: stock/models.py:1988 templates/js/translated/company.js:647
-#: templates/js/translated/part.js:715 templates/js/translated/stock.js:1304
+#: templates/js/translated/part.js:715 templates/js/translated/stock.js:1332
msgid "Value"
msgstr ""
@@ -2507,9 +2522,9 @@ msgstr ""
msgid "Parameter value"
msgstr ""
-#: company/models.py:429 part/models.py:915 part/models.py:2457
+#: company/models.py:429 part/models.py:945 part/models.py:2493
#: part/templates/part/part_base.html:288
-#: templates/InvenTree/settings/settings.html:287
+#: templates/InvenTree/settings/settings.html:324
#: templates/js/translated/company.js:653 templates/js/translated/part.js:721
msgid "Units"
msgstr "Jednostki"
@@ -2526,11 +2541,11 @@ msgstr ""
#: company/templates/company/supplier_part.html:87 order/models.py:227
#: order/templates/order/order_base.html:112
#: order/templates/order/order_wizard/select_pos.html:30 part/bom.py:237
-#: part/bom.py:265 stock/templates/stock/item_base.html:397
+#: part/bom.py:265 stock/templates/stock/item_base.html:399
#: templates/js/translated/company.js:337
#: templates/js/translated/company.js:774 templates/js/translated/order.js:823
#: templates/js/translated/part.js:215 templates/js/translated/part.js:863
-#: templates/js/translated/table_filters.js:393
+#: templates/js/translated/table_filters.js:388
msgid "Supplier"
msgstr "Dostawca"
@@ -2561,22 +2576,23 @@ msgid "Supplier part description"
msgstr ""
#: company/models.py:576 company/templates/company/supplier_part.html:119
-#: part/models.py:2648 report/templates/report/inventree_po_report.html:93
-#: report/templates/report/inventree_so_report.html:93
+#: part/models.py:2717 part/templates/part/upload_bom.html:59
+#: report/templates/report/inventree_po_report.html:93
+#: report/templates/report/inventree_so_report.html:93 stock/serializers.py:409
msgid "Note"
msgstr "Uwaga"
-#: company/models.py:580 part/models.py:1781
+#: company/models.py:580 part/models.py:1817
msgid "base cost"
msgstr "koszt podstawowy"
-#: company/models.py:580 part/models.py:1781
+#: company/models.py:580 part/models.py:1817
msgid "Minimum charge (e.g. stocking fee)"
msgstr ""
#: company/models.py:582 company/templates/company/supplier_part.html:112
-#: stock/models.py:495 stock/templates/stock/item_base.html:338
-#: templates/js/translated/company.js:850 templates/js/translated/stock.js:1799
+#: stock/models.py:495 stock/templates/stock/item_base.html:340
+#: templates/js/translated/company.js:850 templates/js/translated/stock.js:1923
msgid "Packaging"
msgstr "Opakowanie"
@@ -2584,7 +2600,7 @@ msgstr "Opakowanie"
msgid "Part packaging"
msgstr "Opakowanie części"
-#: company/models.py:584 part/models.py:1783
+#: company/models.py:584 part/models.py:1819
msgid "multiple"
msgstr "wielokrotność"
@@ -2645,11 +2661,11 @@ msgstr ""
#: company/templates/company/company_base.html:83 order/models.py:552
#: order/templates/order/sales_order_base.html:115 stock/models.py:514
-#: stock/models.py:515 stock/serializers.py:626
-#: stock/templates/stock/item_base.html:290
+#: stock/models.py:515 stock/serializers.py:683
+#: stock/templates/stock/item_base.html:292
#: templates/js/translated/company.js:329 templates/js/translated/order.js:1240
-#: templates/js/translated/stock.js:2610
-#: templates/js/translated/table_filters.js:397
+#: templates/js/translated/stock.js:2734
+#: templates/js/translated/table_filters.js:392
msgid "Customer"
msgstr "Klient"
@@ -2679,7 +2695,7 @@ msgstr "Utwórz nowego dostawcę części"
#: company/templates/company/detail.html:20
#: company/templates/company/manufacturer_part.html:118
-#: part/templates/part/detail.html:353
+#: part/templates/part/detail.html:356
msgid "New Supplier Part"
msgstr "Nowy dostawca części"
@@ -2687,8 +2703,8 @@ msgstr "Nowy dostawca części"
#: company/templates/company/detail.html:79
#: company/templates/company/manufacturer_part.html:127
#: company/templates/company/manufacturer_part.html:156
-#: part/templates/part/category.html:171 part/templates/part/detail.html:362
-#: part/templates/part/detail.html:391
+#: part/templates/part/category.html:171 part/templates/part/detail.html:365
+#: part/templates/part/detail.html:394
msgid "Options"
msgstr "Opcje"
@@ -2716,7 +2732,7 @@ msgstr "Części producenta"
msgid "Create new manufacturer part"
msgstr "Utwórz nową część producenta"
-#: company/templates/company/detail.html:67 part/templates/part/detail.html:381
+#: company/templates/company/detail.html:67 part/templates/part/detail.html:384
msgid "New Manufacturer Part"
msgstr "Nowa część producenta"
@@ -2730,7 +2746,7 @@ msgstr "Zapasy dostawcy"
#: order/templates/order/order_base.html:13
#: order/templates/order/purchase_orders.html:8
#: order/templates/order/purchase_orders.html:12
-#: part/templates/part/detail.html:85 part/templates/part/part_sidebar.html:37
+#: part/templates/part/detail.html:85 part/templates/part/part_sidebar.html:40
#: templates/InvenTree/index.html:252 templates/InvenTree/search.html:197
#: templates/InvenTree/settings/sidebar.html:45 templates/navbar.html:47
#: users/models.py:45
@@ -2752,7 +2768,7 @@ msgstr ""
#: order/templates/order/sales_order_base.html:13
#: order/templates/order/sales_orders.html:8
#: order/templates/order/sales_orders.html:15
-#: part/templates/part/detail.html:108 part/templates/part/part_sidebar.html:41
+#: part/templates/part/detail.html:108 part/templates/part/part_sidebar.html:44
#: templates/InvenTree/index.html:283 templates/InvenTree/search.html:217
#: templates/InvenTree/settings/sidebar.html:47 templates/navbar.html:58
#: users/models.py:46
@@ -2770,7 +2786,7 @@ msgid "New Sales Order"
msgstr ""
#: company/templates/company/detail.html:168
-#: templates/js/translated/build.js:1059
+#: templates/js/translated/build.js:1281
msgid "Assigned Stock"
msgstr ""
@@ -2780,13 +2796,13 @@ msgstr ""
#: company/templates/company/detail.html:384
#: company/templates/company/manufacturer_part.html:215
-#: part/templates/part/detail.html:435
+#: part/templates/part/detail.html:438
msgid "Delete Supplier Parts?"
msgstr ""
#: company/templates/company/detail.html:385
#: company/templates/company/manufacturer_part.html:216
-#: part/templates/part/detail.html:436
+#: part/templates/part/detail.html:439
msgid "All selected supplier parts will be deleted"
msgstr ""
@@ -2824,36 +2840,36 @@ 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:35 part/templates/part/prices.html:163
+#: part/templates/part/part_sidebar.html:38 part/templates/part/prices.html:163
#: templates/InvenTree/search.html:188 templates/navbar.html:45
msgid "Suppliers"
msgstr "Dostawcy"
#: company/templates/company/manufacturer_part.html:129
-#: part/templates/part/detail.html:364
+#: part/templates/part/detail.html:367
msgid "Delete supplier parts"
msgstr ""
#: company/templates/company/manufacturer_part.html:129
#: company/templates/company/manufacturer_part.html:158
#: company/templates/company/manufacturer_part.html:254
-#: part/templates/part/detail.html:364 part/templates/part/detail.html:393
+#: part/templates/part/detail.html:367 part/templates/part/detail.html:396
#: templates/js/translated/company.js:426 templates/js/translated/helpers.js:31
-#: users/models.py:212
+#: users/models.py:217
msgid "Delete"
msgstr "Usuń"
#: company/templates/company/manufacturer_part.html:143
#: company/templates/company/manufacturer_part_sidebar.html:5
#: part/templates/part/category_sidebar.html:17
-#: part/templates/part/detail.html:187 part/templates/part/part_sidebar.html:8
+#: part/templates/part/detail.html:190 part/templates/part/part_sidebar.html:9
msgid "Parameters"
msgstr "Parametry"
#: company/templates/company/manufacturer_part.html:147
-#: part/templates/part/detail.html:192
+#: part/templates/part/detail.html:195
#: templates/InvenTree/settings/category.html:12
-#: templates/InvenTree/settings/part.html:65
+#: templates/InvenTree/settings/part.html:66
msgid "New Parameter"
msgstr ""
@@ -2862,7 +2878,7 @@ msgid "Delete parameters"
msgstr ""
#: company/templates/company/manufacturer_part.html:191
-#: part/templates/part/detail.html:892
+#: part/templates/part/detail.html:895
msgid "Add Parameter"
msgstr "Dodaj parametr"
@@ -2892,8 +2908,8 @@ msgstr ""
#: company/templates/company/supplier_part.html:7
#: company/templates/company/supplier_part.html:24 stock/models.py:479
-#: stock/templates/stock/item_base.html:402
-#: templates/js/translated/company.js:790 templates/js/translated/stock.js:1756
+#: stock/templates/stock/item_base.html:404
+#: templates/js/translated/company.js:790 templates/js/translated/stock.js:1880
msgid "Supplier Part"
msgstr ""
@@ -2919,7 +2935,7 @@ msgstr "Utwórz nowy towar"
#: company/templates/company/supplier_part.html:142
#: part/templates/part/detail.html:25 stock/templates/stock/location.html:167
-#: templates/js/translated/stock.js:368
+#: templates/js/translated/stock.js:369
msgid "New Stock Item"
msgstr "Nowy towar"
@@ -2940,7 +2956,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:1628
+#: part/templates/part/prices.html:271 part/views.py:1319
msgid "Add Price Break"
msgstr ""
@@ -2948,11 +2964,11 @@ msgstr ""
msgid "No price break information found"
msgstr ""
-#: company/templates/company/supplier_part.html:224 part/views.py:1690
+#: company/templates/company/supplier_part.html:224 part/views.py:1381
msgid "Delete Price Break"
msgstr ""
-#: company/templates/company/supplier_part.html:238 part/views.py:1676
+#: company/templates/company/supplier_part.html:238 part/views.py:1367
msgid "Edit Price Break"
msgstr "Edytuj przedział cenowy"
@@ -2965,15 +2981,15 @@ msgid "Delete price break"
msgstr ""
#: company/templates/company/supplier_part_navbar.html:15
-#: part/templates/part/part_sidebar.html:14
+#: part/templates/part/part_sidebar.html:15
#: 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:150
#: templates/InvenTree/settings/sidebar.html:41
-#: templates/js/translated/bom.js:340 templates/js/translated/part.js:495
+#: templates/js/translated/bom.js:553 templates/js/translated/part.js:495
#: templates/js/translated/part.js:630 templates/js/translated/part.js:1125
-#: templates/js/translated/part.js:1286 templates/js/translated/stock.js:935
-#: templates/js/translated/stock.js:1588 templates/navbar.html:28
+#: templates/js/translated/part.js:1286 templates/js/translated/stock.js:936
+#: templates/js/translated/stock.js:1712 templates/navbar.html:28
msgid "Stock"
msgstr "Stan"
@@ -2987,7 +3003,7 @@ msgid "Supplier Part Pricing"
msgstr ""
#: company/templates/company/supplier_part_navbar.html:29
-#: part/templates/part/part_sidebar.html:28
+#: part/templates/part/part_sidebar.html:30
msgid "Pricing"
msgstr "Cennik"
@@ -2996,7 +3012,7 @@ msgstr "Cennik"
#: stock/templates/stock/location.html:151
#: stock/templates/stock/location.html:163
#: stock/templates/stock/location_sidebar.html:7
-#: templates/InvenTree/search.html:152 templates/js/translated/stock.js:2509
+#: templates/InvenTree/search.html:152 templates/js/translated/stock.js:2633
#: templates/stats.html:105 templates/stats.html:114 users/models.py:43
msgid "Stock Items"
msgstr "Towary"
@@ -3026,20 +3042,20 @@ msgstr "Firmy"
msgid "New Company"
msgstr "Nowa firma"
-#: company/views.py:129 part/views.py:593
+#: company/views.py:129 part/views.py:591
msgid "Download Image"
msgstr "Pobierz obraz"
-#: company/views.py:158 part/views.py:625
+#: company/views.py:158 part/views.py:623
msgid "Image size exceeds maximum allowable size for download"
msgstr ""
-#: company/views.py:165 part/views.py:632
+#: company/views.py:165 part/views.py:630
#, python-brace-format
msgid "Invalid response: {code}"
msgstr ""
-#: company/views.py:174 part/views.py:641
+#: company/views.py:174 part/views.py:639
msgid "Supplied URL is not a valid image file"
msgstr ""
@@ -3256,16 +3272,16 @@ msgid "Supplier part must match supplier"
msgstr ""
#: order/models.py:855 order/models.py:946 order/models.py:1042
-#: templates/js/translated/order.js:1820 templates/js/translated/stock.js:2271
+#: templates/js/translated/order.js:1820 templates/js/translated/stock.js:2395
msgid "Order"
msgstr "Zamówienie"
#: order/models.py:856 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:352
+#: stock/templates/stock/item_base.html:354
#: templates/js/translated/order.js:801 templates/js/translated/part.js:838
-#: templates/js/translated/stock.js:1733 templates/js/translated/stock.js:2591
+#: templates/js/translated/stock.js:1857 templates/js/translated/stock.js:2715
msgid "Purchase Order"
msgstr "Zlecenie zakupu"
@@ -3276,7 +3292,7 @@ msgstr ""
#: order/models.py:884 order/templates/order/order_base.html:163
#: templates/js/translated/order.js:589 templates/js/translated/order.js:1118
#: templates/js/translated/part.js:910 templates/js/translated/part.js:937
-#: templates/js/translated/table_filters.js:317
+#: templates/js/translated/table_filters.js:312
msgid "Received"
msgstr "Odebrane"
@@ -3285,8 +3301,8 @@ msgid "Number of items received"
msgstr ""
#: order/models.py:892 part/templates/part/prices.html:176 stock/models.py:608
-#: stock/serializers.py:170 stock/templates/stock/item_base.html:359
-#: templates/js/translated/stock.js:1787
+#: stock/serializers.py:170 stock/templates/stock/item_base.html:361
+#: templates/js/translated/stock.js:1911
msgid "Purchase Price"
msgstr "Cena zakupu"
@@ -3530,7 +3546,7 @@ msgstr ""
#: order/templates/order/order_base.html:94
#: order/templates/order/sales_order_base.html:89
-#: templates/js/translated/stock.js:2327
+#: templates/js/translated/stock.js:2451
msgid "Order Status"
msgstr "Status zamówienia"
@@ -3574,73 +3590,20 @@ msgstr ""
msgid "After placing this purchase order, line items will no longer be editable."
msgstr ""
-#: order/templates/order/order_wizard/match_fields.html:9
-#: part/templates/part/bom_upload/match_fields.html:9
-#: part/templates/part/import_wizard/ajax_match_fields.html:9
-#: part/templates/part/import_wizard/match_fields.html:9
-msgid "Missing selections for the following required columns"
-msgstr ""
-
-#: order/templates/order/order_wizard/match_fields.html:20
-#: part/templates/part/bom_upload/match_fields.html:20
-#: part/templates/part/import_wizard/ajax_match_fields.html:20
-#: part/templates/part/import_wizard/match_fields.html:20
-msgid "Duplicate selections found, see below. Fix them then retry submitting."
-msgstr ""
-
-#: order/templates/order/order_wizard/match_fields.html:29
-#: order/templates/order/order_wizard/match_parts.html:21
-#: part/templates/part/bom_upload/match_fields.html:29
-#: part/templates/part/bom_upload/match_parts.html:21
-#: part/templates/part/import_wizard/match_fields.html:29
-#: part/templates/part/import_wizard/match_references.html:21
-msgid "Submit Selections"
-msgstr ""
-
-#: order/templates/order/order_wizard/match_fields.html:35
-#: part/templates/part/bom_upload/match_fields.html:35
-#: part/templates/part/import_wizard/ajax_match_fields.html:28
-#: part/templates/part/import_wizard/match_fields.html:35
-msgid "File Fields"
-msgstr ""
-
-#: order/templates/order/order_wizard/match_fields.html:42
-#: part/templates/part/bom_upload/match_fields.html:42
-#: part/templates/part/import_wizard/ajax_match_fields.html:35
-#: part/templates/part/import_wizard/match_fields.html:42
-msgid "Remove column"
-msgstr ""
-
-#: order/templates/order/order_wizard/match_fields.html:60
-#: part/templates/part/bom_upload/match_fields.html:60
-#: part/templates/part/import_wizard/ajax_match_fields.html:53
-#: part/templates/part/import_wizard/match_fields.html:60
-msgid "Duplicate selection"
-msgstr ""
-
-#: order/templates/order/order_wizard/match_fields.html:71
-#: order/templates/order/order_wizard/match_parts.html:52
-#: part/templates/part/bom_upload/match_fields.html:71
-#: part/templates/part/bom_upload/match_parts.html:53
-#: part/templates/part/import_wizard/ajax_match_fields.html:64
-#: part/templates/part/import_wizard/ajax_match_references.html:42
-#: part/templates/part/import_wizard/match_fields.html:71
-#: part/templates/part/import_wizard/match_references.html:49
-#: templates/js/translated/build.js:300 templates/js/translated/build.js:1311
-#: templates/js/translated/order.js:537 templates/js/translated/order.js:1488
-#: templates/js/translated/stock.js:601 templates/js/translated/stock.js:769
-msgid "Remove row"
-msgstr ""
-
#: order/templates/order/order_wizard/match_parts.html:12
-#: part/templates/part/bom_upload/match_parts.html:12
#: part/templates/part/import_wizard/ajax_match_references.html:12
#: part/templates/part/import_wizard/match_references.html:12
msgid "Errors exist in the submitted data"
msgstr ""
+#: order/templates/order/order_wizard/match_parts.html:21
+#: part/templates/part/import_wizard/match_fields.html:29
+#: part/templates/part/import_wizard/match_references.html:21
+#: templates/patterns/wizard/match_fields.html:28
+msgid "Submit Selections"
+msgstr ""
+
#: order/templates/order/order_wizard/match_parts.html:28
-#: part/templates/part/bom_upload/match_parts.html:28
#: part/templates/part/import_wizard/ajax_match_references.html:21
#: part/templates/part/import_wizard/match_references.html:28
msgid "Row"
@@ -3650,6 +3613,19 @@ msgstr "Wiersz"
msgid "Select Supplier Part"
msgstr "Wybierz dostawcę części"
+#: order/templates/order/order_wizard/match_parts.html:52
+#: part/templates/part/import_wizard/ajax_match_fields.html:64
+#: part/templates/part/import_wizard/ajax_match_references.html:42
+#: part/templates/part/import_wizard/match_fields.html:71
+#: part/templates/part/import_wizard/match_references.html:49
+#: templates/js/translated/bom.js:76 templates/js/translated/build.js:380
+#: templates/js/translated/build.js:528 templates/js/translated/build.js:1547
+#: templates/js/translated/order.js:537 templates/js/translated/order.js:1488
+#: templates/js/translated/stock.js:602 templates/js/translated/stock.js:770
+#: templates/patterns/wizard/match_fields.html:70
+msgid "Remove row"
+msgstr ""
+
#: order/templates/order/order_wizard/po_upload.html:8
msgid "Return to Orders"
msgstr ""
@@ -3659,9 +3635,9 @@ msgid "Upload File for Purchase Order"
msgstr ""
#: order/templates/order/order_wizard/po_upload.html:25
-#: part/templates/part/bom_upload/upload_file.html:21
#: part/templates/part/import_wizard/ajax_part_upload.html:10
#: part/templates/part/import_wizard/part_upload.html:23
+#: templates/patterns/wizard/upload.html:11
#, python-format
msgid "Step %(step)s of %(count)s"
msgstr ""
@@ -3819,7 +3795,7 @@ msgid "Pending Shipments"
msgstr ""
#: order/templates/order/sales_order_detail.html:48
-#: templates/js/translated/bom.js:732 templates/js/translated/build.js:1243
+#: templates/js/translated/bom.js:945 templates/js/translated/build.js:1465
msgid "Actions"
msgstr "Akcje"
@@ -3922,7 +3898,7 @@ msgstr ""
msgid "This field is required"
msgstr ""
-#: part/bom.py:125 part/models.py:83 part/models.py:849
+#: part/bom.py:125 part/models.py:83 part/models.py:879
#: part/templates/part/category.html:108 part/templates/part/part_base.html:338
msgid "Default Location"
msgstr "Domyślna lokalizacja"
@@ -3968,7 +3944,7 @@ msgstr "Domyślne słowa kluczowe"
msgid "Default keywords for parts in this category"
msgstr ""
-#: part/models.py:97 part/models.py:2533 part/templates/part/category.html:15
+#: part/models.py:97 part/models.py:2569 part/templates/part/category.html:15
#: part/templates/part/part_app_base.html:10
msgid "Part Category"
msgstr ""
@@ -3994,408 +3970,478 @@ msgstr "Części"
msgid "Invalid choice for parent part"
msgstr ""
-#: part/models.py:502 part/models.py:514
+#: part/models.py:532 part/models.py:544
#, python-brace-format
msgid "Part '{p1}' is used in BOM for '{p2}' (recursive)"
msgstr ""
-#: part/models.py:644
+#: part/models.py:674
msgid "Next available serial numbers are"
msgstr ""
-#: part/models.py:648
+#: part/models.py:678
msgid "Next available serial number is"
msgstr ""
-#: part/models.py:653
+#: part/models.py:683
msgid "Most recent serial number is"
msgstr ""
-#: part/models.py:748
+#: part/models.py:778
msgid "Duplicate IPN not allowed in part settings"
msgstr ""
-#: part/models.py:773
+#: part/models.py:803 part/models.py:2622
msgid "Part name"
msgstr "Nazwa części"
-#: part/models.py:780
+#: part/models.py:810
msgid "Is Template"
msgstr ""
-#: part/models.py:781
+#: part/models.py:811
msgid "Is this part a template part?"
msgstr ""
-#: part/models.py:791
+#: part/models.py:821
msgid "Is this part a variant of another part?"
msgstr ""
-#: part/models.py:792
+#: part/models.py:822
msgid "Variant Of"
msgstr "Wariant"
-#: part/models.py:798
+#: part/models.py:828
msgid "Part description"
msgstr "Opis części"
-#: part/models.py:803 part/templates/part/category.html:86
+#: part/models.py:833 part/templates/part/category.html:86
#: part/templates/part/part_base.html:302
msgid "Keywords"
msgstr "Słowa kluczowe"
-#: part/models.py:804
+#: part/models.py:834
msgid "Part keywords to improve visibility in search results"
msgstr ""
-#: part/models.py:811 part/models.py:2283 part/models.py:2532
+#: part/models.py:841 part/models.py:2319 part/models.py:2568
#: part/templates/part/part_base.html:265
#: part/templates/part/set_category.html:15
-#: templates/InvenTree/settings/settings.html:186
+#: templates/InvenTree/settings/settings.html:223
#: templates/js/translated/part.js:1268
msgid "Category"
msgstr "Kategoria"
-#: part/models.py:812
+#: part/models.py:842
msgid "Part category"
msgstr ""
-#: part/models.py:817 part/templates/part/part_base.html:274
+#: part/models.py:847 part/templates/part/part_base.html:274
#: templates/js/translated/part.js:618 templates/js/translated/part.js:1221
-#: templates/js/translated/stock.js:1560
+#: templates/js/translated/stock.js:1684
msgid "IPN"
msgstr "IPN"
-#: part/models.py:818
+#: part/models.py:848
msgid "Internal Part Number"
msgstr ""
-#: part/models.py:824
+#: part/models.py:854
msgid "Part revision or version number"
msgstr ""
-#: part/models.py:825 part/templates/part/part_base.html:281
+#: part/models.py:855 part/templates/part/part_base.html:281
#: report/models.py:200 templates/js/translated/part.js:622
msgid "Revision"
msgstr "Wersja"
-#: part/models.py:847
+#: part/models.py:877
msgid "Where is this item normally stored?"
msgstr ""
-#: part/models.py:894 part/templates/part/part_base.html:347
+#: part/models.py:924 part/templates/part/part_base.html:347
msgid "Default Supplier"
msgstr ""
-#: part/models.py:895
+#: part/models.py:925
msgid "Default supplier part"
msgstr ""
-#: part/models.py:902
+#: part/models.py:932
msgid "Default Expiry"
msgstr ""
-#: part/models.py:903
+#: part/models.py:933
msgid "Expiry time (in days) for stock items of this part"
msgstr ""
-#: part/models.py:908 part/templates/part/part_base.html:196
+#: part/models.py:938 part/templates/part/part_base.html:196
msgid "Minimum Stock"
msgstr "Minimalny stan magazynowy"
-#: part/models.py:909
+#: part/models.py:939
msgid "Minimum allowed stock level"
msgstr ""
-#: part/models.py:916
+#: part/models.py:946
msgid "Stock keeping units for this part"
msgstr ""
-#: part/models.py:922
+#: part/models.py:952
msgid "Can this part be built from other parts?"
msgstr "Czy ta część może być zbudowana z innych części?"
-#: part/models.py:928
+#: part/models.py:958
msgid "Can this part be used to build other parts?"
msgstr "Czy ta część może być użyta do budowy innych części?"
-#: part/models.py:934
+#: part/models.py:964
msgid "Does this part have tracking for unique items?"
msgstr ""
-#: part/models.py:939
+#: part/models.py:969
msgid "Can this part be purchased from external suppliers?"
msgstr ""
-#: part/models.py:944
+#: part/models.py:974
msgid "Can this part be sold to customers?"
msgstr ""
-#: part/models.py:949
+#: part/models.py:979
msgid "Is this part active?"
msgstr "Czy ta część jest aktywna?"
-#: part/models.py:954
+#: part/models.py:984
msgid "Is this a virtual part, such as a software product or license?"
msgstr ""
-#: part/models.py:959
+#: part/models.py:989
msgid "Part notes - supports Markdown formatting"
msgstr ""
-#: part/models.py:962
+#: part/models.py:992
msgid "BOM checksum"
msgstr ""
-#: part/models.py:962
+#: part/models.py:992
msgid "Stored BOM checksum"
msgstr ""
-#: part/models.py:965
+#: part/models.py:995
msgid "BOM checked by"
msgstr ""
-#: part/models.py:967
+#: part/models.py:997
msgid "BOM checked date"
msgstr ""
-#: part/models.py:971
+#: part/models.py:1001
msgid "Creation User"
msgstr ""
-#: part/models.py:1783
+#: part/models.py:1819
msgid "Sell multiple"
msgstr "Sprzedaj wiele"
-#: part/models.py:2333
+#: part/models.py:2369
msgid "Test templates can only be created for trackable parts"
msgstr ""
-#: part/models.py:2350
+#: part/models.py:2386
msgid "Test with this name already exists for this part"
msgstr ""
-#: part/models.py:2370 templates/js/translated/part.js:1714
-#: templates/js/translated/stock.js:1284
+#: part/models.py:2406 templates/js/translated/part.js:1714
+#: templates/js/translated/stock.js:1312
msgid "Test Name"
msgstr "Nazwa testu"
-#: part/models.py:2371
+#: part/models.py:2407
msgid "Enter a name for the test"
msgstr ""
-#: part/models.py:2376
+#: part/models.py:2412
msgid "Test Description"
msgstr ""
-#: part/models.py:2377
+#: part/models.py:2413
msgid "Enter description for this test"
msgstr ""
-#: part/models.py:2382 templates/js/translated/part.js:1723
-#: templates/js/translated/table_filters.js:281
+#: part/models.py:2418 templates/js/translated/part.js:1723
+#: templates/js/translated/table_filters.js:276
msgid "Required"
msgstr "Wymagane"
-#: part/models.py:2383
+#: part/models.py:2419
msgid "Is this test required to pass?"
msgstr ""
-#: part/models.py:2388 templates/js/translated/part.js:1731
+#: part/models.py:2424 templates/js/translated/part.js:1731
msgid "Requires Value"
msgstr ""
-#: part/models.py:2389
+#: part/models.py:2425
msgid "Does this test require a value when adding a test result?"
msgstr ""
-#: part/models.py:2394 templates/js/translated/part.js:1738
+#: part/models.py:2430 templates/js/translated/part.js:1738
msgid "Requires Attachment"
msgstr ""
-#: part/models.py:2395
+#: part/models.py:2431
msgid "Does this test require a file attachment when adding a test result?"
msgstr ""
-#: part/models.py:2406
+#: part/models.py:2442
#, python-brace-format
msgid "Illegal character in template name ({c})"
msgstr ""
-#: part/models.py:2442
+#: part/models.py:2478
msgid "Parameter template name must be unique"
msgstr ""
-#: part/models.py:2450
+#: part/models.py:2486
msgid "Parameter Name"
msgstr ""
-#: part/models.py:2457
+#: part/models.py:2493
msgid "Parameter Units"
msgstr ""
-#: part/models.py:2487
+#: part/models.py:2523
msgid "Parent Part"
msgstr "Część nadrzędna"
-#: part/models.py:2489 part/models.py:2538 part/models.py:2539
-#: templates/InvenTree/settings/settings.html:181
+#: part/models.py:2525 part/models.py:2574 part/models.py:2575
+#: templates/InvenTree/settings/settings.html:218
msgid "Parameter Template"
msgstr ""
-#: part/models.py:2491
+#: part/models.py:2527
msgid "Data"
msgstr "Dane"
-#: part/models.py:2491
+#: part/models.py:2527
msgid "Parameter Value"
msgstr ""
-#: part/models.py:2543 templates/InvenTree/settings/settings.html:190
+#: part/models.py:2579 templates/InvenTree/settings/settings.html:227
msgid "Default Value"
msgstr "Wartość domyślna"
-#: part/models.py:2544
+#: part/models.py:2580
msgid "Default Parameter Value"
msgstr ""
+#: part/models.py:2614
+msgid "Part ID or part name"
+msgstr ""
+
+#: part/models.py:2617 templates/js/translated/model_renderers.js:182
+msgid "Part ID"
+msgstr ""
+
+#: part/models.py:2618
+msgid "Unique part ID value"
+msgstr ""
+
#: part/models.py:2621
+msgid "Part Name"
+msgstr ""
+
+#: part/models.py:2625
+msgid "Part IPN"
+msgstr ""
+
+#: part/models.py:2626
+msgid "Part IPN value"
+msgstr ""
+
+#: part/models.py:2629
+msgid "Level"
+msgstr ""
+
+#: part/models.py:2630
+msgid "BOM level"
+msgstr ""
+
+#: part/models.py:2690
msgid "Select parent part"
msgstr "Wybierz część nadrzędną"
-#: part/models.py:2629
+#: part/models.py:2698
msgid "Sub part"
msgstr "Podczęść"
-#: part/models.py:2630
+#: part/models.py:2699
msgid "Select part to be used in BOM"
msgstr ""
-#: part/models.py:2636
+#: part/models.py:2705
msgid "BOM quantity for this BOM item"
msgstr ""
-#: part/models.py:2638 templates/js/translated/bom.js:578
-#: templates/js/translated/bom.js:652
+#: part/models.py:2707 part/templates/part/upload_bom.html:58
+#: templates/js/translated/bom.js:791 templates/js/translated/bom.js:865
#: templates/js/translated/table_filters.js:92
msgid "Optional"
msgstr ""
-#: part/models.py:2638
+#: part/models.py:2707
msgid "This BOM item is optional"
msgstr ""
-#: part/models.py:2641
+#: part/models.py:2710 part/templates/part/upload_bom.html:55
msgid "Overage"
msgstr ""
-#: part/models.py:2642
+#: part/models.py:2711
msgid "Estimated build wastage quantity (absolute or percentage)"
msgstr ""
-#: part/models.py:2645
+#: part/models.py:2714
msgid "BOM item reference"
msgstr ""
-#: part/models.py:2648
+#: part/models.py:2717
msgid "BOM item notes"
msgstr ""
-#: part/models.py:2650
+#: part/models.py:2719
msgid "Checksum"
msgstr "Suma kontrolna"
-#: part/models.py:2650
+#: part/models.py:2719
msgid "BOM line checksum"
msgstr ""
-#: part/models.py:2654 templates/js/translated/bom.js:669
+#: part/models.py:2723 part/templates/part/upload_bom.html:57
+#: templates/js/translated/bom.js:882
#: templates/js/translated/table_filters.js:68
#: templates/js/translated/table_filters.js:88
msgid "Inherited"
msgstr ""
-#: part/models.py:2655
+#: part/models.py:2724
msgid "This BOM item is inherited by BOMs for variant parts"
msgstr ""
-#: part/models.py:2660 templates/js/translated/bom.js:661
+#: part/models.py:2729 part/templates/part/upload_bom.html:56
+#: templates/js/translated/bom.js:874
msgid "Allow Variants"
msgstr ""
-#: part/models.py:2661
+#: part/models.py:2730
msgid "Stock items for variant parts can be used for this BOM item"
msgstr ""
-#: part/models.py:2746 stock/models.py:357
+#: part/models.py:2815 stock/models.py:357
msgid "Quantity must be integer value for trackable parts"
msgstr ""
-#: part/models.py:2755 part/models.py:2757
+#: part/models.py:2824 part/models.py:2826
msgid "Sub part must be specified"
msgstr ""
-#: part/models.py:2886
+#: part/models.py:2955
msgid "BOM Item Substitute"
msgstr ""
-#: part/models.py:2908
+#: part/models.py:2977
msgid "Substitute part cannot be the same as the master part"
msgstr ""
-#: part/models.py:2920
+#: part/models.py:2989
msgid "Parent BOM item"
msgstr ""
-#: part/models.py:2928
+#: part/models.py:2997
msgid "Substitute part"
msgstr ""
-#: part/models.py:2939
+#: part/models.py:3008
msgid "Part 1"
msgstr "Część 1"
-#: part/models.py:2943
+#: part/models.py:3012
msgid "Part 2"
msgstr "Część 2"
-#: part/models.py:2943
+#: part/models.py:3012
msgid "Select Related Part"
msgstr "Wybierz powiązaną część"
-#: part/models.py:2975
+#: part/models.py:3044
msgid "Error creating relationship: check that the part is not related to itself and that the relationship is unique"
msgstr ""
-#: part/serializers.py:659
+#: part/serializers.py:667
msgid "Select part to copy BOM from"
msgstr ""
-#: part/serializers.py:670
+#: part/serializers.py:678
msgid "Remove Existing Data"
msgstr ""
-#: part/serializers.py:671
+#: part/serializers.py:679
msgid "Remove existing BOM items before copying"
msgstr ""
-#: part/serializers.py:676
+#: part/serializers.py:684
msgid "Include Inherited"
msgstr ""
-#: part/serializers.py:677
+#: part/serializers.py:685
msgid "Include BOM items which are inherited from templated parts"
msgstr ""
-#: part/serializers.py:682
+#: part/serializers.py:690
msgid "Skip Invalid Rows"
msgstr ""
-#: part/serializers.py:683
+#: part/serializers.py:691
msgid "Enable this option to skip invalid rows"
msgstr ""
-#: part/tasks.py:53
+#: part/serializers.py:734
+msgid "Clear Existing BOM"
+msgstr ""
+
+#: part/serializers.py:735
+msgid "Delete existing BOM items before uploading"
+msgstr ""
+
+#: part/serializers.py:762
+msgid "No part column specified"
+msgstr ""
+
+#: part/serializers.py:806
+msgid "Multiple matching parts found"
+msgstr ""
+
+#: part/serializers.py:809
+msgid "No matching part found"
+msgstr ""
+
+#: part/serializers.py:812
+msgid "Part is not designated as a component"
+msgstr ""
+
+#: part/serializers.py:821
+msgid "Quantity not provided"
+msgstr ""
+
+#: part/serializers.py:829
+msgid "Invalid quantity"
+msgstr ""
+
+#: part/serializers.py:848
+msgid "At least one BOM item is required"
+msgstr ""
+
+#: part/tasks.py:58
msgid "Low stock notification"
msgstr ""
@@ -4418,7 +4464,7 @@ msgstr ""
msgid "The BOM for %(part)s has not been validated."
msgstr ""
-#: part/templates/part/bom.html:30 part/templates/part/detail.html:270
+#: part/templates/part/bom.html:30 part/templates/part/detail.html:273
msgid "BOM actions"
msgstr ""
@@ -4426,34 +4472,6 @@ msgstr ""
msgid "Delete Items"
msgstr ""
-#: part/templates/part/bom_upload/match_parts.html:29
-msgid "Select Part"
-msgstr ""
-
-#: part/templates/part/bom_upload/upload_file.html:8
-msgid "Return to BOM"
-msgstr ""
-
-#: part/templates/part/bom_upload/upload_file.html:13
-msgid "Upload Bill of Materials"
-msgstr ""
-
-#: part/templates/part/bom_upload/upload_file.html:33
-msgid "Requirements for BOM upload"
-msgstr ""
-
-#: part/templates/part/bom_upload/upload_file.html:35
-msgid "The BOM file must contain the required named columns as provided in the "
-msgstr ""
-
-#: part/templates/part/bom_upload/upload_file.html:35
-msgid "BOM Upload Template"
-msgstr ""
-
-#: part/templates/part/bom_upload/upload_file.html:36
-msgid "Each part must already exist in the database"
-msgstr ""
-
#: part/templates/part/category.html:28 part/templates/part/category.html:32
msgid "You are subscribed to notifications for this category"
msgstr ""
@@ -4519,7 +4537,7 @@ msgstr "Eksportuj"
msgid "Create new part"
msgstr ""
-#: part/templates/part/category.html:161 templates/js/translated/bom.js:152
+#: part/templates/part/category.html:161 templates/js/translated/bom.js:365
msgid "New Part"
msgstr "Nowy komponent"
@@ -4639,138 +4657,168 @@ msgstr ""
msgid "Sales Order Allocations"
msgstr ""
-#: part/templates/part/detail.html:159
+#: part/templates/part/detail.html:162
msgid "Part Variants"
msgstr "Warianty Części"
-#: part/templates/part/detail.html:163
+#: part/templates/part/detail.html:166
msgid "Create new variant"
msgstr "Utwórz nowy wariant"
-#: part/templates/part/detail.html:164
+#: part/templates/part/detail.html:167
msgid "New Variant"
msgstr "Nowy wariant"
-#: part/templates/part/detail.html:191
+#: part/templates/part/detail.html:194
msgid "Add new parameter"
msgstr ""
-#: part/templates/part/detail.html:228 part/templates/part/part_sidebar.html:49
+#: part/templates/part/detail.html:231 part/templates/part/part_sidebar.html:52
msgid "Related Parts"
msgstr ""
-#: part/templates/part/detail.html:232 part/templates/part/detail.html:233
+#: part/templates/part/detail.html:235 part/templates/part/detail.html:236
msgid "Add Related"
msgstr "Dodaj powiązane"
-#: part/templates/part/detail.html:253 part/templates/part/part_sidebar.html:17
+#: part/templates/part/detail.html:256 part/templates/part/part_sidebar.html:18
msgid "Bill of Materials"
msgstr "Zestawienie materiałowe"
-#: part/templates/part/detail.html:258
+#: part/templates/part/detail.html:261
msgid "Export actions"
msgstr ""
-#: part/templates/part/detail.html:262 templates/js/translated/bom.js:70
+#: part/templates/part/detail.html:265 templates/js/translated/bom.js:283
msgid "Export BOM"
msgstr ""
-#: part/templates/part/detail.html:264
+#: part/templates/part/detail.html:267
msgid "Print BOM Report"
msgstr ""
-#: part/templates/part/detail.html:274
+#: part/templates/part/detail.html:277
msgid "Upload BOM"
msgstr ""
-#: part/templates/part/detail.html:276 templates/js/translated/part.js:272
+#: part/templates/part/detail.html:279 templates/js/translated/part.js:272
msgid "Copy BOM"
msgstr "Kopiuj BOM"
-#: part/templates/part/detail.html:278
+#: part/templates/part/detail.html:281
msgid "Validate BOM"
msgstr ""
-#: part/templates/part/detail.html:283
+#: part/templates/part/detail.html:286
msgid "New BOM Item"
msgstr ""
-#: part/templates/part/detail.html:284
+#: part/templates/part/detail.html:287
msgid "Add BOM Item"
msgstr ""
-#: part/templates/part/detail.html:297
+#: part/templates/part/detail.html:300
msgid "Assemblies"
msgstr ""
-#: part/templates/part/detail.html:314
+#: part/templates/part/detail.html:317
msgid "Part Builds"
msgstr ""
-#: part/templates/part/detail.html:339
+#: part/templates/part/detail.html:342
msgid "Build Order Allocations"
msgstr ""
-#: part/templates/part/detail.html:349
+#: part/templates/part/detail.html:352
msgid "Part Suppliers"
msgstr ""
-#: part/templates/part/detail.html:377
+#: part/templates/part/detail.html:380
msgid "Part Manufacturers"
msgstr ""
-#: part/templates/part/detail.html:393
+#: part/templates/part/detail.html:396
msgid "Delete manufacturer parts"
msgstr ""
-#: part/templates/part/detail.html:575
+#: part/templates/part/detail.html:578
msgid "Delete selected BOM items?"
msgstr ""
-#: part/templates/part/detail.html:576
+#: part/templates/part/detail.html:579
msgid "All selected BOM items will be deleted"
msgstr ""
-#: part/templates/part/detail.html:625
+#: part/templates/part/detail.html:628
msgid "Create BOM Item"
msgstr ""
-#: part/templates/part/detail.html:682
+#: part/templates/part/detail.html:685
msgid "Related Part"
msgstr "Powiązane części"
-#: part/templates/part/detail.html:690
+#: part/templates/part/detail.html:693
msgid "Add Related Part"
msgstr "Dodaj powiązaną część"
-#: part/templates/part/detail.html:785
+#: part/templates/part/detail.html:788
msgid "Add Test Result Template"
msgstr ""
-#: part/templates/part/detail.html:842
+#: part/templates/part/detail.html:845
msgid "Edit Part Notes"
msgstr ""
-#: part/templates/part/detail.html:955
+#: part/templates/part/detail.html:958
#, python-format
msgid "Purchase Unit Price - %(currency)s"
msgstr ""
-#: part/templates/part/detail.html:967
+#: part/templates/part/detail.html:970
#, python-format
msgid "Unit Price-Cost Difference - %(currency)s"
msgstr ""
-#: part/templates/part/detail.html:979
+#: part/templates/part/detail.html:982
#, python-format
msgid "Supplier Unit Cost - %(currency)s"
msgstr ""
-#: part/templates/part/detail.html:1068
+#: part/templates/part/detail.html:1071
#, python-format
msgid "Unit Price - %(currency)s"
msgstr ""
+#: part/templates/part/import_wizard/ajax_match_fields.html:9
+#: part/templates/part/import_wizard/match_fields.html:9
+#: templates/patterns/wizard/match_fields.html:8
+msgid "Missing selections for the following required columns"
+msgstr ""
+
+#: part/templates/part/import_wizard/ajax_match_fields.html:20
+#: part/templates/part/import_wizard/match_fields.html:20
+#: templates/patterns/wizard/match_fields.html:19
+msgid "Duplicate selections found, see below. Fix them then retry submitting."
+msgstr ""
+
+#: part/templates/part/import_wizard/ajax_match_fields.html:28
+#: part/templates/part/import_wizard/match_fields.html:35
+#: templates/patterns/wizard/match_fields.html:34
+msgid "File Fields"
+msgstr ""
+
+#: part/templates/part/import_wizard/ajax_match_fields.html:35
+#: part/templates/part/import_wizard/match_fields.html:42
+#: templates/patterns/wizard/match_fields.html:41
+msgid "Remove column"
+msgstr ""
+
+#: part/templates/part/import_wizard/ajax_match_fields.html:53
+#: part/templates/part/import_wizard/match_fields.html:60
+#: templates/patterns/wizard/match_fields.html:59
+msgid "Duplicate selection"
+msgstr ""
+
#: part/templates/part/import_wizard/ajax_part_upload.html:29
#: part/templates/part/import_wizard/part_upload.html:53
msgid "Unsuffitient privileges."
@@ -4819,7 +4867,7 @@ msgid "Show pricing information"
msgstr ""
#: part/templates/part/part_base.html:56
-#: stock/templates/stock/item_base.html:110
+#: stock/templates/stock/item_base.html:112
#: stock/templates/stock/location.html:44
msgid "Stock actions"
msgstr "Akcje magazynowe"
@@ -4912,7 +4960,7 @@ msgstr ""
msgid "Allocated to Orders"
msgstr ""
-#: part/templates/part/part_base.html:239 templates/js/translated/bom.js:690
+#: part/templates/part/part_base.html:239 templates/js/translated/bom.js:903
msgid "Can Build"
msgstr ""
@@ -4930,7 +4978,7 @@ msgid "Latest Serial Number"
msgstr "Ostatni numer seryjny"
#: part/templates/part/part_base.html:328
-#: stock/templates/stock/item_base.html:166
+#: stock/templates/stock/item_base.html:168
msgid "Search for serial number"
msgstr ""
@@ -4969,7 +5017,7 @@ msgid "Total Cost"
msgstr ""
#: part/templates/part/part_pricing.html:40 part/templates/part/prices.html:40
-#: templates/js/translated/bom.js:644
+#: templates/js/translated/bom.js:857
msgid "No supplier pricing available"
msgstr ""
@@ -5003,20 +5051,20 @@ msgstr ""
msgid "No pricing information is available for this part."
msgstr ""
-#: part/templates/part/part_sidebar.html:11
+#: part/templates/part/part_sidebar.html:12
msgid "Variants"
msgstr ""
-#: part/templates/part/part_sidebar.html:25
+#: part/templates/part/part_sidebar.html:26
msgid "Used In"
msgstr ""
-#: part/templates/part/part_sidebar.html:31
+#: part/templates/part/part_sidebar.html:34
#: stock/templates/stock/stock_sidebar.html:8
msgid "Allocations"
msgstr ""
-#: part/templates/part/part_sidebar.html:45
+#: part/templates/part/part_sidebar.html:48
msgid "Test Templates"
msgstr ""
@@ -5089,7 +5137,7 @@ msgstr ""
msgid "Calculation parameters"
msgstr ""
-#: part/templates/part/prices.html:155 templates/js/translated/bom.js:638
+#: part/templates/part/prices.html:155 templates/js/translated/bom.js:851
msgid "Supplier Cost"
msgstr ""
@@ -5111,7 +5159,7 @@ msgstr ""
msgid "Internal Cost"
msgstr ""
-#: part/templates/part/prices.html:215 part/views.py:1699
+#: part/templates/part/prices.html:215 part/views.py:1390
msgid "Add Internal Price Break"
msgstr ""
@@ -5131,7 +5179,7 @@ msgstr ""
msgid "Set category for the following parts"
msgstr ""
-#: part/templates/part/stock_count.html:7 templates/js/translated/bom.js:600
+#: part/templates/part/stock_count.html:7 templates/js/translated/bom.js:813
#: templates/js/translated/part.js:497 templates/js/translated/part.js:1122
#: templates/js/translated/part.js:1309
msgid "No Stock"
@@ -5141,6 +5189,43 @@ msgstr "Brak w magazynie"
msgid "Low Stock"
msgstr "Mała ilość w magazynie"
+#: part/templates/part/upload_bom.html:8
+msgid "Return to BOM"
+msgstr ""
+
+#: part/templates/part/upload_bom.html:13
+msgid "Upload Bill of Materials"
+msgstr ""
+
+#: part/templates/part/upload_bom.html:19
+msgid "BOM upload requirements"
+msgstr ""
+
+#: part/templates/part/upload_bom.html:23
+#: part/templates/part/upload_bom.html:90
+msgid "Upload BOM File"
+msgstr ""
+
+#: part/templates/part/upload_bom.html:29
+msgid "Submit BOM Data"
+msgstr ""
+
+#: part/templates/part/upload_bom.html:37
+msgid "Requirements for BOM upload"
+msgstr ""
+
+#: part/templates/part/upload_bom.html:39
+msgid "The BOM file must contain the required named columns as provided in the "
+msgstr ""
+
+#: part/templates/part/upload_bom.html:39
+msgid "BOM Upload Template"
+msgstr ""
+
+#: part/templates/part/upload_bom.html:40
+msgid "Each part must already exist in the database"
+msgstr ""
+
#: part/templates/part/variant_part.html:9
msgid "Create new part variant"
msgstr ""
@@ -5154,104 +5239,96 @@ msgstr ""
msgid "Unknown database"
msgstr ""
-#: part/views.py:93
+#: part/views.py:90
msgid "Set Part Category"
msgstr ""
-#: part/views.py:143
+#: part/views.py:140
#, python-brace-format
msgid "Set category for {n} parts"
msgstr ""
-#: part/views.py:215
+#: part/views.py:212
msgid "Match References"
msgstr ""
-#: part/views.py:511
+#: part/views.py:509
msgid "None"
msgstr ""
-#: part/views.py:570
+#: part/views.py:568
msgid "Part QR Code"
msgstr ""
-#: part/views.py:672
+#: part/views.py:670
msgid "Select Part Image"
msgstr ""
-#: part/views.py:698
+#: part/views.py:696
msgid "Updated part image"
msgstr ""
-#: part/views.py:701
+#: part/views.py:699
msgid "Part image not found"
msgstr ""
-#: part/views.py:775
-msgid "Match Parts"
-msgstr ""
-
-#: part/views.py:1110
-msgid "Export Bill of Materials"
-msgstr ""
-
-#: part/views.py:1159
+#: part/views.py:850
msgid "Confirm Part Deletion"
msgstr ""
-#: part/views.py:1166
+#: part/views.py:857
msgid "Part was deleted"
msgstr ""
-#: part/views.py:1175
+#: part/views.py:866
msgid "Part Pricing"
msgstr ""
-#: part/views.py:1324
+#: part/views.py:1015
msgid "Create Part Parameter Template"
msgstr ""
-#: part/views.py:1334
+#: part/views.py:1025
msgid "Edit Part Parameter Template"
msgstr ""
-#: part/views.py:1341
+#: part/views.py:1032
msgid "Delete Part Parameter Template"
msgstr ""
-#: part/views.py:1400 templates/js/translated/part.js:315
+#: part/views.py:1091 templates/js/translated/part.js:315
msgid "Edit Part Category"
msgstr "Edytuj kategorię części"
-#: part/views.py:1438
+#: part/views.py:1129
msgid "Delete Part Category"
msgstr ""
-#: part/views.py:1444
+#: part/views.py:1135
msgid "Part category was deleted"
msgstr ""
-#: part/views.py:1453
+#: part/views.py:1144
msgid "Create Category Parameter Template"
msgstr ""
-#: part/views.py:1554
+#: part/views.py:1245
msgid "Edit Category Parameter Template"
msgstr ""
-#: part/views.py:1610
+#: part/views.py:1301
msgid "Delete Category Parameter Template"
msgstr ""
-#: part/views.py:1632
+#: part/views.py:1323
msgid "Added new price break"
msgstr ""
-#: part/views.py:1708
+#: part/views.py:1399
msgid "Edit Internal Price Break"
msgstr ""
-#: part/views.py:1716
+#: part/views.py:1407
msgid "Delete Internal Price Break"
msgstr ""
@@ -5453,12 +5530,12 @@ msgid "Stock Item Test Report"
msgstr ""
#: report/templates/report/inventree_test_report_base.html:79
-#: stock/models.py:519 stock/templates/stock/item_base.html:156
-#: templates/js/translated/build.js:293 templates/js/translated/build.js:697
-#: templates/js/translated/build.js:1073
+#: stock/models.py:519 stock/templates/stock/item_base.html:158
+#: templates/js/translated/build.js:373 templates/js/translated/build.js:521
+#: templates/js/translated/build.js:919 templates/js/translated/build.js:1295
#: 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:423
+#: templates/js/translated/order.js:2034 templates/js/translated/stock.js:424
msgid "Serial Number"
msgstr "Numer Seryjny"
@@ -5479,7 +5556,7 @@ msgstr "Wynik"
#: report/templates/report/inventree_test_report_base.html:97
#: templates/InvenTree/settings/plugin.html:50
#: templates/InvenTree/settings/plugin_settings.html:38
-#: templates/js/translated/order.js:849 templates/js/translated/stock.js:2525
+#: templates/js/translated/order.js:849 templates/js/translated/stock.js:2649
msgid "Date"
msgstr "Data"
@@ -5497,71 +5574,67 @@ msgid "Installed Items"
msgstr ""
#: report/templates/report/inventree_test_report_base.html:137
-#: templates/js/translated/stock.js:586 templates/js/translated/stock.js:756
-#: templates/js/translated/stock.js:2785
+#: templates/js/translated/stock.js:587 templates/js/translated/stock.js:757
+#: templates/js/translated/stock.js:2909
msgid "Serial"
msgstr ""
-#: stock/api.py:476
+#: stock/api.py:501
msgid "Quantity is required"
msgstr ""
-#: stock/api.py:483
+#: stock/api.py:508
msgid "Valid part must be supplied"
msgstr ""
-#: stock/forms.py:77 stock/forms.py:251 stock/models.py:576
-#: stock/templates/stock/item_base.html:193
-#: templates/js/translated/stock.js:1709
+#: stock/api.py:535
+msgid "Serial numbers cannot be supplied for a non-trackable part"
+msgstr ""
+
+#: stock/forms.py:74 stock/forms.py:198 stock/models.py:576
+#: stock/templates/stock/item_base.html:195
+#: templates/js/translated/stock.js:1833
msgid "Expiry Date"
msgstr "Data ważności"
-#: stock/forms.py:78 stock/forms.py:252
+#: stock/forms.py:75 stock/forms.py:199
msgid "Expiration date for this stock item"
msgstr "Data ważności tego zasobu"
-#: stock/forms.py:81
+#: stock/forms.py:78
msgid "Enter unique serial numbers (or leave blank)"
msgstr ""
-#: stock/forms.py:136
+#: stock/forms.py:133
msgid "Destination for serialized stock (by default, will remain in current location)"
msgstr ""
-#: stock/forms.py:138
+#: stock/forms.py:135
msgid "Serial numbers"
msgstr "Numery seryjne"
-#: stock/forms.py:138
+#: stock/forms.py:135
msgid "Unique serial numbers (must match quantity)"
msgstr ""
-#: stock/forms.py:140 stock/forms.py:224
+#: stock/forms.py:137 stock/forms.py:171
msgid "Add transaction note (optional)"
msgstr ""
-#: stock/forms.py:180
-msgid "Stock item to install"
-msgstr ""
-
-#: stock/forms.py:210
-msgid "Must not exceed available quantity"
-msgstr ""
-
-#: stock/forms.py:222
+#: stock/forms.py:169
msgid "Destination location for uninstalled items"
msgstr ""
-#: stock/forms.py:226
+#: stock/forms.py:173
msgid "Confirm uninstall"
msgstr ""
-#: stock/forms.py:226
+#: stock/forms.py:173
msgid "Confirm removal of installed stock items"
msgstr ""
#: stock/models.py:62 stock/models.py:613
-#: stock/templates/stock/item_base.html:416
+#: stock/templates/stock/item_base.html:418
msgid "Owner"
msgstr ""
@@ -5623,7 +5696,7 @@ msgstr ""
msgid "Packaging this stock item is stored in"
msgstr ""
-#: stock/models.py:502 stock/templates/stock/item_base.html:298
+#: stock/models.py:502 stock/templates/stock/item_base.html:300
msgid "Installed In"
msgstr ""
@@ -5733,7 +5806,7 @@ msgstr ""
msgid "Serialized stock cannot be merged"
msgstr ""
-#: stock/models.py:1214 stock/serializers.py:775
+#: stock/models.py:1214 stock/serializers.py:832
msgid "Duplicate stock items"
msgstr ""
@@ -5769,7 +5842,7 @@ msgstr ""
msgid "Test name"
msgstr ""
-#: stock/models.py:1983 templates/js/translated/table_filters.js:271
+#: stock/models.py:1983
msgid "Test result"
msgstr ""
@@ -5806,7 +5879,7 @@ msgstr ""
msgid "Enter serial numbers for new items"
msgstr ""
-#: stock/serializers.py:326 stock/serializers.py:732 stock/serializers.py:973
+#: stock/serializers.py:326 stock/serializers.py:789 stock/serializers.py:1030
msgid "Destination stock location"
msgstr ""
@@ -5818,63 +5891,79 @@ msgstr ""
msgid "Serial numbers cannot be assigned to this part"
msgstr ""
-#: stock/serializers.py:589
+#: stock/serializers.py:363 stock/views.py:1108
+msgid "Serial numbers already exist"
+msgstr "Numer seryjny już istnieje"
+
+#: stock/serializers.py:405
+msgid "Select stock item to install"
+msgstr ""
+
+#: stock/serializers.py:421
+msgid "Stock item is unavailable"
+msgstr ""
+
+#: stock/serializers.py:428
+msgid "Selected part is not in the Bill of Materials"
+msgstr ""
+
+#: stock/serializers.py:646
msgid "Part must be salable"
msgstr ""
-#: stock/serializers.py:593
+#: stock/serializers.py:650
msgid "Item is allocated to a sales order"
msgstr ""
-#: stock/serializers.py:597
+#: stock/serializers.py:654
msgid "Item is allocated to a build order"
msgstr ""
-#: stock/serializers.py:627
+#: stock/serializers.py:684
msgid "Customer to assign stock items"
msgstr ""
-#: stock/serializers.py:633
+#: stock/serializers.py:690
msgid "Selected company is not a customer"
msgstr ""
-#: stock/serializers.py:641
+#: stock/serializers.py:698
msgid "Stock assignment notes"
msgstr ""
-#: stock/serializers.py:651 stock/serializers.py:881
+#: stock/serializers.py:708 stock/serializers.py:938
msgid "A list of stock items must be provided"
msgstr ""
-#: stock/serializers.py:739
+#: stock/serializers.py:796
msgid "Stock merging notes"
msgstr ""
-#: stock/serializers.py:744
+#: stock/serializers.py:801
msgid "Allow mismatched suppliers"
msgstr ""
-#: stock/serializers.py:745
+#: stock/serializers.py:802
msgid "Allow stock items with different supplier parts to be merged"
msgstr ""
-#: stock/serializers.py:750
+#: stock/serializers.py:807
msgid "Allow mismatched status"
msgstr ""
-#: stock/serializers.py:751
+#: stock/serializers.py:808
msgid "Allow stock items with different status codes to be merged"
msgstr ""
-#: stock/serializers.py:761
+#: stock/serializers.py:818
msgid "At least two stock items must be provided"
msgstr ""
-#: stock/serializers.py:843
+#: stock/serializers.py:900
msgid "StockItem primary key value"
msgstr ""
-#: stock/serializers.py:871
+#: stock/serializers.py:928
msgid "Stock transaction notes"
msgstr ""
@@ -5919,22 +6008,14 @@ msgstr ""
msgid "Installed Stock Items"
msgstr ""
-#: stock/templates/stock/item.html:154 stock/views.py:482
+#: stock/templates/stock/item.html:154 templates/js/translated/stock.js:3018
msgid "Install Stock Item"
msgstr ""
-#: stock/templates/stock/item.html:309 stock/templates/stock/item.html:334
+#: stock/templates/stock/item.html:304 templates/js/translated/stock.js:1480
msgid "Add Test Result"
msgstr ""
-#: stock/templates/stock/item.html:354
-msgid "Edit Test Result"
-msgstr ""
-
-#: stock/templates/stock/item.html:368
-msgid "Delete Test Result"
-msgstr ""
-
#: stock/templates/stock/item_base.html:42
#: templates/js/translated/barcode.js:330
#: templates/js/translated/barcode.js:335
@@ -5995,129 +6076,129 @@ msgstr ""
msgid "Uninstall"
msgstr ""
-#: stock/templates/stock/item_base.html:101
+#: stock/templates/stock/item_base.html:102
msgid "Install stock item"
msgstr ""
-#: stock/templates/stock/item_base.html:101
+#: stock/templates/stock/item_base.html:102
msgid "Install"
msgstr ""
-#: stock/templates/stock/item_base.html:115
+#: stock/templates/stock/item_base.html:117
msgid "Convert to variant"
msgstr ""
-#: stock/templates/stock/item_base.html:118
+#: stock/templates/stock/item_base.html:120
msgid "Duplicate stock item"
msgstr ""
-#: stock/templates/stock/item_base.html:120
+#: stock/templates/stock/item_base.html:122
msgid "Edit stock item"
msgstr ""
-#: stock/templates/stock/item_base.html:123
+#: stock/templates/stock/item_base.html:125
msgid "Delete stock item"
msgstr ""
-#: stock/templates/stock/item_base.html:161
+#: stock/templates/stock/item_base.html:163
msgid "previous page"
msgstr ""
-#: stock/templates/stock/item_base.html:161
+#: stock/templates/stock/item_base.html:163
msgid "Navigate to previous serial number"
msgstr ""
-#: stock/templates/stock/item_base.html:170
+#: stock/templates/stock/item_base.html:172
msgid "next page"
msgstr ""
-#: stock/templates/stock/item_base.html:170
+#: stock/templates/stock/item_base.html:172
msgid "Navigate to next serial number"
msgstr ""
-#: stock/templates/stock/item_base.html:197
+#: stock/templates/stock/item_base.html:199
#, python-format
msgid "This StockItem expired on %(item.expiry_date)s"
msgstr ""
-#: stock/templates/stock/item_base.html:197
+#: stock/templates/stock/item_base.html:199
#: templates/js/translated/table_filters.js:252
msgid "Expired"
msgstr "Termin minął"
-#: stock/templates/stock/item_base.html:199
+#: stock/templates/stock/item_base.html:201
#, python-format
msgid "This StockItem expires on %(item.expiry_date)s"
msgstr ""
-#: stock/templates/stock/item_base.html:199
+#: stock/templates/stock/item_base.html:201
#: templates/js/translated/table_filters.js:258
msgid "Stale"
msgstr ""
-#: stock/templates/stock/item_base.html:206
-#: templates/js/translated/stock.js:1722
+#: stock/templates/stock/item_base.html:208
+#: templates/js/translated/stock.js:1846
msgid "Last Updated"
msgstr "Ostatnia aktualizacja"
-#: stock/templates/stock/item_base.html:211
+#: stock/templates/stock/item_base.html:213
msgid "Last Stocktake"
msgstr "Ostatnia inwentaryzacja"
-#: stock/templates/stock/item_base.html:215
+#: stock/templates/stock/item_base.html:217
msgid "No stocktake performed"
msgstr ""
-#: stock/templates/stock/item_base.html:233
+#: stock/templates/stock/item_base.html:235
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:240
+#: stock/templates/stock/item_base.html:242
msgid "This stock item is in production and cannot be edited."
msgstr ""
-#: stock/templates/stock/item_base.html:241
+#: stock/templates/stock/item_base.html:243
msgid "Edit the stock item from the build view."
msgstr ""
-#: stock/templates/stock/item_base.html:254
+#: stock/templates/stock/item_base.html:256
msgid "This stock item has not passed all required tests"
msgstr ""
-#: stock/templates/stock/item_base.html:262
+#: stock/templates/stock/item_base.html:264
msgid "This stock item is allocated to Sales Order"
msgstr ""
-#: stock/templates/stock/item_base.html:270
+#: stock/templates/stock/item_base.html:272
msgid "This stock item is allocated to Build Order"
msgstr ""
-#: stock/templates/stock/item_base.html:276
+#: stock/templates/stock/item_base.html:278
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:317
-#: templates/js/translated/build.js:1095
+#: stock/templates/stock/item_base.html:319
+#: templates/js/translated/build.js:1317
msgid "No location set"
msgstr "Lokacje nie są ustawione"
-#: stock/templates/stock/item_base.html:324
+#: stock/templates/stock/item_base.html:326
msgid "Barcode Identifier"
msgstr "Skaner kodów"
-#: stock/templates/stock/item_base.html:366
+#: stock/templates/stock/item_base.html:368
msgid "Parent Item"
msgstr ""
-#: stock/templates/stock/item_base.html:384
+#: stock/templates/stock/item_base.html:386
msgid "No manufacturer set"
msgstr ""
-#: stock/templates/stock/item_base.html:409
+#: stock/templates/stock/item_base.html:411
msgid "Tests"
msgstr ""
-#: stock/templates/stock/item_base.html:499
+#: stock/templates/stock/item_base.html:492
msgid "Edit Stock Status"
msgstr ""
@@ -6130,39 +6211,6 @@ msgstr "Czy na pewno chcesz usunąć tą część?"
msgid "This will remove %(qty)s units of %(full_name)s from stock."
msgstr ""
-#: stock/templates/stock/item_install.html:8
-msgid "Install another Stock Item into this item."
-msgstr ""
-
-#: stock/templates/stock/item_install.html:11
-#: stock/templates/stock/item_install.html:24
-msgid "Stock items can only be installed if they meet the following criteria"
-msgstr ""
-
-#: stock/templates/stock/item_install.html:14
-msgid "The Stock Item links to a Part which is in the BOM for this Stock Item"
-msgstr ""
-
-#: stock/templates/stock/item_install.html:15
-msgid "The Stock Item is currently in stock"
-msgstr ""
-
-#: stock/templates/stock/item_install.html:16
-msgid "The Stock Item is serialized and does not belong to another item"
-msgstr ""
-
-#: stock/templates/stock/item_install.html:21
-msgid "Install this Stock Item in another stock item."
-msgstr ""
-
-#: stock/templates/stock/item_install.html:27
-msgid "The part associated to this Stock Item belongs to another part's BOM"
-msgstr ""
-
-#: stock/templates/stock/item_install.html:28
-msgid "This Stock Item is serialized and does not belong to another item"
-msgstr ""
-
#: stock/templates/stock/item_serialize.html:5
msgid "Create serialized items from this stock item."
msgstr ""
@@ -6247,7 +6295,7 @@ msgstr ""
msgid "The following stock items will be uninstalled"
msgstr ""
-#: stock/templates/stock/stockitem_convert.html:7 stock/views.py:879
+#: stock/templates/stock/stockitem_convert.html:7 stock/views.py:730
msgid "Convert Stock Item"
msgstr ""
@@ -6268,11 +6316,11 @@ msgstr ""
msgid "Are you sure you want to delete this stock tracking entry?"
msgstr ""
-#: stock/views.py:162 templates/js/translated/stock.js:139
+#: stock/views.py:162 templates/js/translated/stock.js:140
msgid "Edit Stock Location"
msgstr ""
-#: stock/views.py:269 stock/views.py:858 stock/views.py:984 stock/views.py:1266
+#: stock/views.py:269 stock/views.py:709 stock/views.py:835 stock/views.py:1117
msgid "Owner is required (ownership control is enabled)"
msgstr ""
@@ -6300,59 +6348,63 @@ msgstr ""
msgid "Confirm test data deletion"
msgstr ""
+#: stock/views.py:352
+msgid "Check the confirmation box"
+msgstr ""
+
#: stock/views.py:456
msgid "Stock Item QR Code"
msgstr ""
-#: stock/views.py:630
+#: stock/views.py:481
msgid "Uninstall Stock Items"
msgstr ""
-#: stock/views.py:727 templates/js/translated/stock.js:1074
+#: stock/views.py:578 templates/js/translated/stock.js:1075
msgid "Confirm stock adjustment"
msgstr ""
-#: stock/views.py:738
+#: stock/views.py:589
msgid "Uninstalled stock items"
msgstr ""
-#: stock/views.py:760 templates/js/translated/stock.js:332
+#: stock/views.py:611 templates/js/translated/stock.js:333
msgid "Edit Stock Item"
msgstr ""
-#: stock/views.py:910
+#: stock/views.py:761
msgid "Create new Stock Location"
msgstr "Utwórz nową lokalizację magazynową"
-#: stock/views.py:1011
+#: stock/views.py:862
msgid "Create new Stock Item"
msgstr ""
-#: stock/views.py:1153 templates/js/translated/stock.js:312
+#: stock/views.py:1004 templates/js/translated/stock.js:313
msgid "Duplicate Stock Item"
msgstr ""
-#: stock/views.py:1235
+#: stock/views.py:1086
msgid "Quantity cannot be negative"
msgstr "Ilość nie może być ujemna"
-#: stock/views.py:1335
+#: stock/views.py:1186
msgid "Delete Stock Location"
msgstr ""
-#: stock/views.py:1348
+#: stock/views.py:1199
msgid "Delete Stock Item"
msgstr ""
-#: stock/views.py:1359
+#: stock/views.py:1210
msgid "Delete Stock Tracking Entry"
msgstr ""
-#: stock/views.py:1366
+#: stock/views.py:1217
msgid "Edit Stock Tracking Entry"
msgstr ""
-#: stock/views.py:1375
+#: stock/views.py:1226
msgid "Add Stock Tracking Entry"
msgstr ""
@@ -6527,15 +6579,15 @@ msgstr ""
msgid "Part Settings"
msgstr ""
-#: templates/InvenTree/settings/part.html:43
+#: templates/InvenTree/settings/part.html:44
msgid "Part Import"
msgstr ""
-#: templates/InvenTree/settings/part.html:47
+#: templates/InvenTree/settings/part.html:48
msgid "Import Part"
msgstr ""
-#: templates/InvenTree/settings/part.html:61
+#: templates/InvenTree/settings/part.html:62
msgid "Part Parameter Templates"
msgstr ""
@@ -6663,45 +6715,45 @@ msgstr ""
msgid "Report Settings"
msgstr ""
-#: templates/InvenTree/settings/setting.html:30
+#: templates/InvenTree/settings/setting.html:33
msgid "No value set"
msgstr ""
-#: templates/InvenTree/settings/setting.html:41
+#: templates/InvenTree/settings/setting.html:38
msgid "Edit setting"
msgstr ""
-#: templates/InvenTree/settings/settings.html:78
+#: templates/InvenTree/settings/settings.html:115
msgid "Edit Plugin Setting"
msgstr ""
-#: templates/InvenTree/settings/settings.html:80
+#: templates/InvenTree/settings/settings.html:117
msgid "Edit Global Setting"
msgstr ""
-#: templates/InvenTree/settings/settings.html:82
+#: templates/InvenTree/settings/settings.html:119
msgid "Edit User Setting"
msgstr ""
-#: templates/InvenTree/settings/settings.html:171
+#: templates/InvenTree/settings/settings.html:208
msgid "No category parameter templates found"
msgstr ""
-#: templates/InvenTree/settings/settings.html:193
-#: templates/InvenTree/settings/settings.html:292
+#: templates/InvenTree/settings/settings.html:230
+#: templates/InvenTree/settings/settings.html:329
msgid "Edit Template"
msgstr ""
-#: templates/InvenTree/settings/settings.html:194
-#: templates/InvenTree/settings/settings.html:293
+#: templates/InvenTree/settings/settings.html:231
+#: templates/InvenTree/settings/settings.html:330
msgid "Delete Template"
msgstr ""
-#: templates/InvenTree/settings/settings.html:272
+#: templates/InvenTree/settings/settings.html:309
msgid "No part parameter templates found"
msgstr ""
-#: templates/InvenTree/settings/settings.html:276
+#: templates/InvenTree/settings/settings.html:313
msgid "ID"
msgstr ""
@@ -6996,10 +7048,11 @@ msgid "InvenTree Version Information"
msgstr ""
#: templates/about.html:11 templates/about.html:105
-#: templates/js/translated/bom.js:407 templates/js/translated/modals.js:53
-#: templates/js/translated/modals.js:584 templates/js/translated/modals.js:678
-#: templates/js/translated/modals.js:983 templates/modals.html:15
-#: templates/modals.html:27 templates/modals.html:39 templates/modals.html:50
+#: templates/js/translated/bom.js:132 templates/js/translated/bom.js:620
+#: templates/js/translated/modals.js:53 templates/js/translated/modals.js:584
+#: templates/js/translated/modals.js:678 templates/js/translated/modals.js:986
+#: templates/modals.html:15 templates/modals.html:27 templates/modals.html:39
+#: templates/modals.html:50
msgid "Close"
msgstr ""
@@ -7275,14 +7328,14 @@ msgid "The following parts are low on required stock"
msgstr ""
#: templates/email/build_order_required_stock.html:18
-#: templates/js/translated/bom.js:1117
+#: templates/js/translated/bom.js:1335
msgid "Required Quantity"
msgstr ""
#: templates/email/build_order_required_stock.html:19
#: templates/email/low_stock_notification.html:18
-#: templates/js/translated/bom.js:591 templates/js/translated/build.js:1189
-#: templates/js/translated/build.js:1810
+#: templates/js/translated/bom.js:804 templates/js/translated/build.js:1411
+#: templates/js/translated/build.js:2048
#: templates/js/translated/table_filters.js:178
msgid "Available"
msgstr "Dostępne"
@@ -7325,11 +7378,11 @@ msgstr ""
msgid "Remote image must not exceed maximum allowable file size"
msgstr ""
-#: templates/js/translated/api.js:185 templates/js/translated/modals.js:1053
+#: templates/js/translated/api.js:185 templates/js/translated/modals.js:1056
msgid "No Response"
msgstr ""
-#: templates/js/translated/api.js:186 templates/js/translated/modals.js:1054
+#: templates/js/translated/api.js:186 templates/js/translated/modals.js:1057
msgid "No response from the InvenTree server"
msgstr ""
@@ -7341,27 +7394,27 @@ msgstr ""
msgid "API request returned error code 400"
msgstr ""
-#: templates/js/translated/api.js:197 templates/js/translated/modals.js:1063
+#: templates/js/translated/api.js:197 templates/js/translated/modals.js:1066
msgid "Error 401: Not Authenticated"
msgstr ""
-#: templates/js/translated/api.js:198 templates/js/translated/modals.js:1064
+#: templates/js/translated/api.js:198 templates/js/translated/modals.js:1067
msgid "Authentication credentials not supplied"
msgstr ""
-#: templates/js/translated/api.js:202 templates/js/translated/modals.js:1068
+#: templates/js/translated/api.js:202 templates/js/translated/modals.js:1071
msgid "Error 403: Permission Denied"
msgstr "Błąd 403: Odmowa dostępu"
-#: templates/js/translated/api.js:203 templates/js/translated/modals.js:1069
+#: templates/js/translated/api.js:203 templates/js/translated/modals.js:1072
msgid "You do not have the required permissions to access this function"
msgstr "Nie masz uprawnień wymaganych do dostępu do tej funkcji"
-#: templates/js/translated/api.js:207 templates/js/translated/modals.js:1073
+#: templates/js/translated/api.js:207 templates/js/translated/modals.js:1076
msgid "Error 404: Resource Not Found"
msgstr ""
-#: templates/js/translated/api.js:208 templates/js/translated/modals.js:1074
+#: templates/js/translated/api.js:208 templates/js/translated/modals.js:1077
msgid "The requested resource could not be located on the server"
msgstr ""
@@ -7373,11 +7426,11 @@ msgstr ""
msgid "HTTP method not allowed at URL"
msgstr ""
-#: templates/js/translated/api.js:217 templates/js/translated/modals.js:1078
+#: templates/js/translated/api.js:217 templates/js/translated/modals.js:1081
msgid "Error 408: Timeout"
msgstr ""
-#: templates/js/translated/api.js:218 templates/js/translated/modals.js:1079
+#: templates/js/translated/api.js:218 templates/js/translated/modals.js:1082
msgid "Connection timeout while requesting data from server"
msgstr ""
@@ -7446,7 +7499,7 @@ msgid "Unknown response from server"
msgstr ""
#: templates/js/translated/barcode.js:140
-#: templates/js/translated/modals.js:1043
+#: templates/js/translated/modals.js:1046
msgid "Invalid server response"
msgstr ""
@@ -7474,7 +7527,7 @@ msgstr ""
msgid "Unlink"
msgstr ""
-#: templates/js/translated/barcode.js:397 templates/js/translated/stock.js:1026
+#: templates/js/translated/barcode.js:397 templates/js/translated/stock.js:1027
msgid "Remove stock item"
msgstr ""
@@ -7516,327 +7569,369 @@ msgstr ""
msgid "Barcode does not match a valid location"
msgstr ""
-#: templates/js/translated/bom.js:36
+#: templates/js/translated/bom.js:75
+msgid "Display row data"
+msgstr ""
+
+#: templates/js/translated/bom.js:131
+msgid "Row Data"
+msgstr ""
+
+#: templates/js/translated/bom.js:249
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:518
+#: templates/js/translated/bom.js:252 templates/js/translated/bom.js:286
+#: templates/js/translated/order.js:369 templates/js/translated/stock.js:519
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:519
+#: templates/js/translated/bom.js:253 templates/js/translated/bom.js:287
+#: templates/js/translated/order.js:370 templates/js/translated/stock.js:520
msgid "Select file format"
msgstr ""
-#: templates/js/translated/bom.js:81
+#: templates/js/translated/bom.js:294
msgid "Cascading"
msgstr "Kaskadowe"
-#: templates/js/translated/bom.js:82
+#: templates/js/translated/bom.js:295
msgid "Download cascading / multi-level BOM"
msgstr ""
-#: templates/js/translated/bom.js:87
+#: templates/js/translated/bom.js:300
msgid "Levels"
msgstr "Poziomy"
-#: templates/js/translated/bom.js:88
+#: templates/js/translated/bom.js:301
msgid "Select maximum number of BOM levels to export (0 = all levels)"
msgstr ""
-#: templates/js/translated/bom.js:94
+#: templates/js/translated/bom.js:307
msgid "Include Parameter Data"
msgstr ""
-#: templates/js/translated/bom.js:95
+#: templates/js/translated/bom.js:308
msgid "Include part parameter data in exported BOM"
msgstr ""
-#: templates/js/translated/bom.js:100
+#: templates/js/translated/bom.js:313
msgid "Include Stock Data"
msgstr ""
-#: templates/js/translated/bom.js:101
+#: templates/js/translated/bom.js:314
msgid "Include part stock data in exported BOM"
msgstr ""
-#: templates/js/translated/bom.js:106
+#: templates/js/translated/bom.js:319
msgid "Include Manufacturer Data"
msgstr ""
-#: templates/js/translated/bom.js:107
+#: templates/js/translated/bom.js:320
msgid "Include part manufacturer data in exported BOM"
msgstr ""
-#: templates/js/translated/bom.js:112
+#: templates/js/translated/bom.js:325
msgid "Include Supplier Data"
msgstr ""
-#: templates/js/translated/bom.js:113
+#: templates/js/translated/bom.js:326
msgid "Include part supplier data in exported BOM"
msgstr ""
-#: templates/js/translated/bom.js:296
+#: templates/js/translated/bom.js:509
msgid "Remove substitute part"
msgstr ""
-#: templates/js/translated/bom.js:352
+#: templates/js/translated/bom.js:565
msgid "Select and add a new substitute part using the input below"
msgstr ""
-#: templates/js/translated/bom.js:363
+#: templates/js/translated/bom.js:576
msgid "Are you sure you wish to remove this substitute part link?"
msgstr ""
-#: templates/js/translated/bom.js:369
+#: templates/js/translated/bom.js:582
msgid "Remove Substitute Part"
msgstr ""
-#: templates/js/translated/bom.js:408
+#: templates/js/translated/bom.js:621
msgid "Add Substitute"
msgstr ""
-#: templates/js/translated/bom.js:409
+#: templates/js/translated/bom.js:622
msgid "Edit BOM Item Substitutes"
msgstr ""
-#: templates/js/translated/bom.js:528
+#: templates/js/translated/bom.js:741
msgid "Substitutes Available"
msgstr ""
-#: templates/js/translated/bom.js:532 templates/js/translated/build.js:1171
+#: templates/js/translated/bom.js:745 templates/js/translated/build.js:1393
msgid "Variant stock allowed"
msgstr ""
-#: templates/js/translated/bom.js:537
+#: templates/js/translated/bom.js:750
msgid "Open subassembly"
msgstr ""
-#: templates/js/translated/bom.js:609
+#: templates/js/translated/bom.js:822
msgid "Substitutes"
msgstr ""
-#: templates/js/translated/bom.js:624
+#: templates/js/translated/bom.js:837
msgid "Purchase Price Range"
msgstr ""
-#: templates/js/translated/bom.js:631
+#: templates/js/translated/bom.js:844
msgid "Purchase Price Average"
msgstr ""
-#: templates/js/translated/bom.js:680 templates/js/translated/bom.js:769
+#: templates/js/translated/bom.js:893 templates/js/translated/bom.js:982
msgid "View BOM"
msgstr ""
-#: templates/js/translated/bom.js:740
+#: templates/js/translated/bom.js:953
msgid "Validate BOM Item"
msgstr ""
-#: templates/js/translated/bom.js:742
+#: templates/js/translated/bom.js:955
msgid "This line has been validated"
msgstr ""
-#: templates/js/translated/bom.js:744
+#: templates/js/translated/bom.js:957
msgid "Edit substitute parts"
msgstr ""
-#: templates/js/translated/bom.js:746 templates/js/translated/bom.js:920
+#: templates/js/translated/bom.js:959 templates/js/translated/bom.js:1138
msgid "Edit BOM Item"
msgstr ""
-#: templates/js/translated/bom.js:748 templates/js/translated/bom.js:903
+#: templates/js/translated/bom.js:961 templates/js/translated/bom.js:1121
msgid "Delete BOM Item"
msgstr ""
-#: templates/js/translated/bom.js:842 templates/js/translated/build.js:915
+#: templates/js/translated/bom.js:1060 templates/js/translated/build.js:1137
msgid "No BOM items found"
msgstr ""
-#: templates/js/translated/bom.js:898
+#: templates/js/translated/bom.js:1116
msgid "Are you sure you want to delete this BOM item?"
msgstr ""
-#: templates/js/translated/bom.js:1100 templates/js/translated/build.js:1155
+#: templates/js/translated/bom.js:1318 templates/js/translated/build.js:1377
msgid "Required Part"
msgstr ""
-#: templates/js/translated/bom.js:1122
+#: templates/js/translated/bom.js:1340
msgid "Inherited from parent BOM"
msgstr ""
-#: templates/js/translated/build.js:84
+#: templates/js/translated/build.js:85
msgid "Edit Build Order"
msgstr ""
-#: templates/js/translated/build.js:118
+#: templates/js/translated/build.js:119
msgid "Create Build Order"
msgstr ""
-#: templates/js/translated/build.js:139
+#: templates/js/translated/build.js:140
msgid "Build order is ready to be completed"
msgstr ""
-#: templates/js/translated/build.js:144
+#: templates/js/translated/build.js:145
msgid "Build Order is incomplete"
msgstr ""
-#: templates/js/translated/build.js:172
+#: templates/js/translated/build.js:173
msgid "Complete Build Order"
msgstr ""
-#: templates/js/translated/build.js:193
+#: templates/js/translated/build.js:214 templates/js/translated/stock.js:93
+#: templates/js/translated/stock.js:182
+msgid "Next available serial number"
+msgstr ""
+
+#: templates/js/translated/build.js:216 templates/js/translated/stock.js:95
+#: templates/js/translated/stock.js:184
+msgid "Latest serial number"
+msgstr ""
+
+#: templates/js/translated/build.js:225
+msgid "The Bill of Materials contains trackable parts"
+msgstr ""
+
+#: templates/js/translated/build.js:226
+msgid "Build outputs must be generated individually"
+msgstr ""
+
+#: templates/js/translated/build.js:234
+msgid "Trackable parts can have serial numbers specified"
+msgstr ""
+
+#: templates/js/translated/build.js:235
+msgid "Enter serial numbers to generate multiple single build outputs"
+msgstr ""
+
+#: templates/js/translated/build.js:242
+msgid "Create Build Output"
+msgstr "Utwórz zlecenie budowy"
+
+#: templates/js/translated/build.js:273
msgid "Allocate stock items to this build output"
msgstr ""
-#: templates/js/translated/build.js:204
+#: templates/js/translated/build.js:284
msgid "Unallocate stock from build output"
msgstr ""
-#: templates/js/translated/build.js:213
+#: templates/js/translated/build.js:293
msgid "Complete build output"
msgstr ""
-#: templates/js/translated/build.js:221
+#: templates/js/translated/build.js:301
msgid "Delete build output"
msgstr ""
-#: templates/js/translated/build.js:244
+#: templates/js/translated/build.js:324
msgid "Are you sure you wish to unallocate stock items from this build?"
msgstr ""
-#: templates/js/translated/build.js:262
+#: templates/js/translated/build.js:342
msgid "Unallocate Stock Items"
msgstr ""
-#: templates/js/translated/build.js:280
+#: templates/js/translated/build.js:360 templates/js/translated/build.js:508
msgid "Select Build Outputs"
msgstr ""
-#: templates/js/translated/build.js:281
+#: templates/js/translated/build.js:361 templates/js/translated/build.js:509
msgid "At least one build output must be selected"
msgstr ""
-#: templates/js/translated/build.js:335
+#: templates/js/translated/build.js:415 templates/js/translated/build.js:563
msgid "Output"
msgstr ""
-#: templates/js/translated/build.js:351
+#: templates/js/translated/build.js:431
msgid "Complete Build Outputs"
msgstr ""
-#: templates/js/translated/build.js:446
+#: templates/js/translated/build.js:576
+msgid "Delete Build Outputs"
+msgstr ""
+
+#: templates/js/translated/build.js:665
msgid "No build order allocations found"
msgstr ""
-#: templates/js/translated/build.js:484 templates/js/translated/order.js:1848
+#: templates/js/translated/build.js:703 templates/js/translated/order.js:1848
msgid "Location not specified"
msgstr ""
-#: templates/js/translated/build.js:663
+#: templates/js/translated/build.js:885
msgid "No active build outputs found"
msgstr ""
-#: templates/js/translated/build.js:1112 templates/js/translated/build.js:1821
+#: templates/js/translated/build.js:1334 templates/js/translated/build.js:2059
#: templates/js/translated/order.js:1982
msgid "Edit stock allocation"
msgstr ""
-#: templates/js/translated/build.js:1114 templates/js/translated/build.js:1822
+#: templates/js/translated/build.js:1336 templates/js/translated/build.js:2060
#: templates/js/translated/order.js:1983
msgid "Delete stock allocation"
msgstr ""
-#: templates/js/translated/build.js:1132
+#: templates/js/translated/build.js:1354
msgid "Edit Allocation"
msgstr ""
-#: templates/js/translated/build.js:1142
+#: templates/js/translated/build.js:1364
msgid "Remove Allocation"
msgstr ""
-#: templates/js/translated/build.js:1167
+#: templates/js/translated/build.js:1389
msgid "Substitute parts available"
msgstr ""
-#: templates/js/translated/build.js:1184
+#: templates/js/translated/build.js:1406
msgid "Quantity Per"
msgstr "Ilość za"
-#: templates/js/translated/build.js:1194 templates/js/translated/build.js:1420
-#: templates/js/translated/build.js:1817 templates/js/translated/order.js:2227
+#: templates/js/translated/build.js:1416 templates/js/translated/build.js:1656
+#: templates/js/translated/build.js:2055 templates/js/translated/order.js:2227
msgid "Allocated"
msgstr "Przydzielono"
-#: templates/js/translated/build.js:1250 templates/js/translated/order.js:2307
+#: templates/js/translated/build.js:1472 templates/js/translated/order.js:2307
msgid "Build stock"
msgstr ""
-#: templates/js/translated/build.js:1254 templates/stock_table.html:53
+#: templates/js/translated/build.js:1476 templates/stock_table.html:53
msgid "Order stock"
msgstr ""
-#: templates/js/translated/build.js:1257 templates/js/translated/order.js:2300
+#: templates/js/translated/build.js:1479 templates/js/translated/order.js:2300
msgid "Allocate stock"
msgstr ""
-#: templates/js/translated/build.js:1322 templates/js/translated/order.js:1499
+#: templates/js/translated/build.js:1558 templates/js/translated/order.js:1499
msgid "Specify stock allocation quantity"
msgstr ""
-#: templates/js/translated/build.js:1393 templates/js/translated/label.js:134
+#: templates/js/translated/build.js:1629 templates/js/translated/label.js:134
#: templates/js/translated/order.js:1550 templates/js/translated/report.js:225
msgid "Select Parts"
msgstr ""
-#: templates/js/translated/build.js:1394 templates/js/translated/order.js:1551
+#: templates/js/translated/build.js:1630 templates/js/translated/order.js:1551
msgid "You must select at least one part to allocate"
msgstr ""
-#: templates/js/translated/build.js:1408 templates/js/translated/order.js:1565
+#: templates/js/translated/build.js:1644 templates/js/translated/order.js:1565
msgid "Select source location (leave blank to take from all locations)"
msgstr ""
-#: templates/js/translated/build.js:1437 templates/js/translated/order.js:1600
+#: templates/js/translated/build.js:1673 templates/js/translated/order.js:1600
msgid "Confirm stock allocation"
msgstr "Potwierdź przydział zapasów"
-#: templates/js/translated/build.js:1438
+#: templates/js/translated/build.js:1674
msgid "Allocate Stock Items to Build Order"
msgstr ""
-#: templates/js/translated/build.js:1449 templates/js/translated/order.js:1613
+#: templates/js/translated/build.js:1685 templates/js/translated/order.js:1613
msgid "No matching stock locations"
msgstr ""
-#: templates/js/translated/build.js:1519 templates/js/translated/order.js:1690
+#: templates/js/translated/build.js:1757 templates/js/translated/order.js:1690
msgid "No matching stock items"
msgstr ""
-#: templates/js/translated/build.js:1637
+#: templates/js/translated/build.js:1875
msgid "No builds matching query"
msgstr ""
-#: templates/js/translated/build.js:1654 templates/js/translated/part.js:1213
-#: templates/js/translated/part.js:1624 templates/js/translated/stock.js:1520
-#: templates/js/translated/stock.js:2479
+#: templates/js/translated/build.js:1892 templates/js/translated/part.js:1213
+#: templates/js/translated/part.js:1624 templates/js/translated/stock.js:1644
+#: templates/js/translated/stock.js:2603
msgid "Select"
msgstr ""
-#: templates/js/translated/build.js:1674
+#: templates/js/translated/build.js:1912
msgid "Build order is overdue"
msgstr ""
-#: templates/js/translated/build.js:1735 templates/js/translated/stock.js:2698
+#: templates/js/translated/build.js:1973 templates/js/translated/stock.js:2822
msgid "No user information"
msgstr ""
-#: templates/js/translated/build.js:1747
+#: templates/js/translated/build.js:1985
msgid "No information"
msgstr ""
-#: templates/js/translated/build.js:1798
+#: templates/js/translated/build.js:2036
msgid "No parts allocated for"
msgstr ""
@@ -7966,48 +8061,60 @@ msgstr ""
msgid "Create filter"
msgstr ""
-#: templates/js/translated/forms.js:350 templates/js/translated/forms.js:365
-#: templates/js/translated/forms.js:379 templates/js/translated/forms.js:393
+#: templates/js/translated/forms.js:351 templates/js/translated/forms.js:366
+#: templates/js/translated/forms.js:380 templates/js/translated/forms.js:394
msgid "Action Prohibited"
msgstr ""
-#: templates/js/translated/forms.js:352
+#: templates/js/translated/forms.js:353
msgid "Create operation not allowed"
msgstr ""
-#: templates/js/translated/forms.js:367
+#: templates/js/translated/forms.js:368
msgid "Update operation not allowed"
msgstr ""
-#: templates/js/translated/forms.js:381
+#: templates/js/translated/forms.js:382
msgid "Delete operation not allowed"
msgstr ""
-#: templates/js/translated/forms.js:395
+#: templates/js/translated/forms.js:396
msgid "View operation not allowed"
msgstr ""
-#: templates/js/translated/forms.js:680
+#: templates/js/translated/forms.js:681
msgid "Enter a valid number"
msgstr ""
-#: templates/js/translated/forms.js:1082 templates/modals.html:19
+#: templates/js/translated/forms.js:1129 templates/modals.html:19
#: templates/modals.html:43
msgid "Form errors exist"
msgstr ""
-#: templates/js/translated/forms.js:1487
+#: templates/js/translated/forms.js:1558
msgid "No results found"
msgstr ""
-#: templates/js/translated/forms.js:1691
+#: templates/js/translated/forms.js:1768
msgid "Searching"
msgstr ""
-#: templates/js/translated/forms.js:1930
+#: templates/js/translated/forms.js:2013
msgid "Clear input"
msgstr ""
+#: templates/js/translated/forms.js:2479
+msgid "File Column"
+msgstr ""
+
+#: templates/js/translated/forms.js:2479
+msgid "Field Name"
+msgstr ""
+
+#: templates/js/translated/forms.js:2491
+msgid "Select Columns"
+msgstr ""
+
#: templates/js/translated/helpers.js:19
msgid "YES"
msgstr ""
@@ -8017,7 +8124,7 @@ msgid "NO"
msgstr ""
#: templates/js/translated/label.js:29 templates/js/translated/report.js:118
-#: templates/js/translated/stock.js:1050
+#: templates/js/translated/stock.js:1051
msgid "Select Stock Items"
msgstr ""
@@ -8072,7 +8179,7 @@ msgid "Cancel"
msgstr ""
#: templates/js/translated/modals.js:77 templates/js/translated/modals.js:119
-#: templates/js/translated/modals.js:677 templates/js/translated/modals.js:982
+#: templates/js/translated/modals.js:677 templates/js/translated/modals.js:985
#: templates/modals.html:28 templates/modals.html:51
msgid "Submit"
msgstr ""
@@ -8097,31 +8204,31 @@ msgstr ""
msgid "Loading Data"
msgstr ""
-#: templates/js/translated/modals.js:934
+#: templates/js/translated/modals.js:937
msgid "Invalid response from server"
msgstr ""
-#: templates/js/translated/modals.js:934
+#: templates/js/translated/modals.js:937
msgid "Form data missing from server response"
msgstr ""
-#: templates/js/translated/modals.js:946
+#: templates/js/translated/modals.js:949
msgid "Error posting form data"
msgstr ""
-#: templates/js/translated/modals.js:1043
+#: templates/js/translated/modals.js:1046
msgid "JSON response missing form data"
msgstr ""
-#: templates/js/translated/modals.js:1058
+#: templates/js/translated/modals.js:1061
msgid "Error 400: Bad Request"
msgstr ""
-#: templates/js/translated/modals.js:1059
+#: templates/js/translated/modals.js:1062
msgid "Server returned error code 400"
msgstr ""
-#: templates/js/translated/modals.js:1082
+#: templates/js/translated/modals.js:1085
msgid "Error requesting form data"
msgstr ""
@@ -8141,10 +8248,6 @@ msgstr ""
msgid "Build ID"
msgstr ""
-#: templates/js/translated/model_renderers.js:182
-msgid "Part ID"
-msgstr ""
-
#: templates/js/translated/model_renderers.js:249
#: templates/js/translated/model_renderers.js:270
msgid "Order ID"
@@ -8210,7 +8313,7 @@ msgstr ""
msgid "Quantity to receive"
msgstr ""
-#: templates/js/translated/order.js:520 templates/js/translated/stock.js:2131
+#: templates/js/translated/order.js:520 templates/js/translated/stock.js:2255
msgid "Stock Status"
msgstr ""
@@ -8344,7 +8447,7 @@ msgid "Delete Stock Allocation"
msgstr ""
#: templates/js/translated/order.js:1959 templates/js/translated/order.js:2048
-#: templates/js/translated/stock.js:1436
+#: templates/js/translated/stock.js:1560
msgid "Shipped to customer"
msgstr ""
@@ -8545,12 +8648,12 @@ msgid "No category"
msgstr ""
#: templates/js/translated/part.js:1296
-#: templates/js/translated/table_filters.js:430
+#: templates/js/translated/table_filters.js:425
msgid "Low stock"
msgstr ""
#: templates/js/translated/part.js:1387 templates/js/translated/part.js:1559
-#: templates/js/translated/stock.js:2440
+#: templates/js/translated/stock.js:2564
msgid "Display as list"
msgstr ""
@@ -8558,7 +8661,7 @@ msgstr ""
msgid "Display as grid"
msgstr ""
-#: templates/js/translated/part.js:1578 templates/js/translated/stock.js:2459
+#: templates/js/translated/part.js:1578 templates/js/translated/stock.js:2583
msgid "Display as tree"
msgstr ""
@@ -8566,7 +8669,7 @@ msgstr ""
msgid "Subscribed category"
msgstr ""
-#: templates/js/translated/part.js:1656 templates/js/translated/stock.js:2503
+#: templates/js/translated/part.js:1656 templates/js/translated/stock.js:2627
msgid "Path"
msgstr ""
@@ -8574,11 +8677,12 @@ msgstr ""
msgid "No test templates matching query"
msgstr ""
-#: templates/js/translated/part.js:1751 templates/js/translated/stock.js:1242
+#: templates/js/translated/part.js:1751 templates/js/translated/stock.js:1271
msgid "Edit test result"
msgstr ""
-#: templates/js/translated/part.js:1752 templates/js/translated/stock.js:1243
+#: templates/js/translated/part.js:1752 templates/js/translated/stock.js:1272
+#: templates/js/translated/stock.js:1518
msgid "Delete test result"
msgstr ""
@@ -8687,347 +8791,375 @@ msgstr ""
msgid "Sales Order(s) must be selected before printing report"
msgstr ""
-#: templates/js/translated/stock.js:74
+#: templates/js/translated/stock.js:75
msgid "Serialize Stock Item"
msgstr ""
-#: templates/js/translated/stock.js:92 templates/js/translated/stock.js:181
-msgid "Next available serial number"
-msgstr ""
-
-#: templates/js/translated/stock.js:94 templates/js/translated/stock.js:183
-msgid "Latest serial number"
-msgstr ""
-
-#: templates/js/translated/stock.js:102
+#: templates/js/translated/stock.js:103
msgid "Confirm Stock Serialization"
msgstr ""
-#: templates/js/translated/stock.js:111
+#: templates/js/translated/stock.js:112
msgid "Parent stock location"
msgstr ""
-#: templates/js/translated/stock.js:154
+#: templates/js/translated/stock.js:155
msgid "New Stock Location"
msgstr ""
-#: templates/js/translated/stock.js:194
+#: templates/js/translated/stock.js:195
msgid "This part cannot be serialized"
msgstr ""
-#: templates/js/translated/stock.js:233
+#: templates/js/translated/stock.js:234
msgid "Enter initial quantity for this stock item"
msgstr ""
-#: templates/js/translated/stock.js:239
+#: templates/js/translated/stock.js:240
msgid "Enter serial numbers for new stock (or leave blank)"
msgstr ""
-#: templates/js/translated/stock.js:382
+#: templates/js/translated/stock.js:383
msgid "Created new stock item"
msgstr ""
-#: templates/js/translated/stock.js:395
+#: templates/js/translated/stock.js:396
msgid "Created multiple stock items"
msgstr ""
-#: templates/js/translated/stock.js:420
+#: templates/js/translated/stock.js:421
msgid "Find Serial Number"
msgstr ""
-#: templates/js/translated/stock.js:424 templates/js/translated/stock.js:425
+#: templates/js/translated/stock.js:425 templates/js/translated/stock.js:426
msgid "Enter serial number"
msgstr ""
-#: templates/js/translated/stock.js:441
+#: templates/js/translated/stock.js:442
msgid "Enter a serial number"
msgstr ""
-#: templates/js/translated/stock.js:461
+#: templates/js/translated/stock.js:462
msgid "No matching serial number"
msgstr ""
-#: templates/js/translated/stock.js:470
+#: templates/js/translated/stock.js:471
msgid "More than one matching result found"
msgstr ""
-#: templates/js/translated/stock.js:515
+#: templates/js/translated/stock.js:516
msgid "Export Stock"
msgstr ""
-#: templates/js/translated/stock.js:526
+#: templates/js/translated/stock.js:527
msgid "Include Sublocations"
msgstr ""
-#: templates/js/translated/stock.js:527
+#: templates/js/translated/stock.js:528
msgid "Include stock items in sublocations"
msgstr ""
-#: templates/js/translated/stock.js:636
+#: templates/js/translated/stock.js:637
msgid "Confirm stock assignment"
msgstr ""
-#: templates/js/translated/stock.js:637
+#: templates/js/translated/stock.js:638
msgid "Assign Stock to Customer"
msgstr ""
-#: templates/js/translated/stock.js:714
+#: templates/js/translated/stock.js:715
msgid "Warning: Merge operation cannot be reversed"
msgstr ""
-#: templates/js/translated/stock.js:715
+#: templates/js/translated/stock.js:716
msgid "Some information will be lost when merging stock items"
msgstr ""
-#: templates/js/translated/stock.js:717
+#: templates/js/translated/stock.js:718
msgid "Stock transaction history will be deleted for merged items"
msgstr ""
-#: templates/js/translated/stock.js:718
+#: templates/js/translated/stock.js:719
msgid "Supplier part information will be deleted for merged items"
msgstr ""
-#: templates/js/translated/stock.js:804
+#: templates/js/translated/stock.js:805
msgid "Confirm stock item merge"
msgstr ""
-#: templates/js/translated/stock.js:805
+#: templates/js/translated/stock.js:806
msgid "Merge Stock Items"
msgstr ""
-#: templates/js/translated/stock.js:900
+#: templates/js/translated/stock.js:901
msgid "Transfer Stock"
msgstr ""
-#: templates/js/translated/stock.js:901
+#: templates/js/translated/stock.js:902
msgid "Move"
msgstr ""
-#: templates/js/translated/stock.js:907
+#: templates/js/translated/stock.js:908
msgid "Count Stock"
msgstr ""
-#: templates/js/translated/stock.js:908
+#: templates/js/translated/stock.js:909
msgid "Count"
msgstr ""
-#: templates/js/translated/stock.js:912
+#: templates/js/translated/stock.js:913
msgid "Remove Stock"
msgstr ""
-#: templates/js/translated/stock.js:913
+#: templates/js/translated/stock.js:914
msgid "Take"
msgstr ""
-#: templates/js/translated/stock.js:917
+#: templates/js/translated/stock.js:918
msgid "Add Stock"
msgstr "Dodaj stan"
-#: templates/js/translated/stock.js:918 users/models.py:208
+#: templates/js/translated/stock.js:919 users/models.py:213
msgid "Add"
msgstr "Dodaj"
-#: templates/js/translated/stock.js:922 templates/stock_table.html:58
+#: templates/js/translated/stock.js:923 templates/stock_table.html:58
msgid "Delete Stock"
msgstr ""
-#: templates/js/translated/stock.js:1011
+#: templates/js/translated/stock.js:1012
msgid "Quantity cannot be adjusted for serialized stock"
msgstr ""
-#: templates/js/translated/stock.js:1011
+#: templates/js/translated/stock.js:1012
msgid "Specify stock quantity"
msgstr ""
-#: templates/js/translated/stock.js:1051
+#: templates/js/translated/stock.js:1052
msgid "You must select at least one available stock item"
msgstr ""
-#: templates/js/translated/stock.js:1209
+#: templates/js/translated/stock.js:1210
msgid "PASS"
msgstr ""
-#: templates/js/translated/stock.js:1211
+#: templates/js/translated/stock.js:1212
msgid "FAIL"
msgstr ""
-#: templates/js/translated/stock.js:1216
+#: templates/js/translated/stock.js:1217
msgid "NO RESULT"
msgstr ""
-#: templates/js/translated/stock.js:1238
+#: templates/js/translated/stock.js:1264
+msgid "Pass test"
+msgstr ""
+
+#: templates/js/translated/stock.js:1267
msgid "Add test result"
msgstr ""
-#: templates/js/translated/stock.js:1264
+#: templates/js/translated/stock.js:1293
msgid "No test results found"
msgstr ""
-#: templates/js/translated/stock.js:1321
+#: templates/js/translated/stock.js:1349
msgid "Test Date"
msgstr ""
-#: templates/js/translated/stock.js:1428
+#: templates/js/translated/stock.js:1501
+msgid "Edit Test Result"
+msgstr ""
+
+#: templates/js/translated/stock.js:1523
+msgid "Delete Test Result"
+msgstr ""
+
+#: templates/js/translated/stock.js:1552
msgid "In production"
msgstr ""
-#: templates/js/translated/stock.js:1432
+#: templates/js/translated/stock.js:1556
msgid "Installed in Stock Item"
msgstr ""
-#: templates/js/translated/stock.js:1440
+#: templates/js/translated/stock.js:1564
msgid "Assigned to Sales Order"
msgstr ""
-#: templates/js/translated/stock.js:1446
+#: templates/js/translated/stock.js:1570
msgid "No stock location set"
msgstr ""
-#: templates/js/translated/stock.js:1604
+#: templates/js/translated/stock.js:1728
msgid "Stock item is in production"
msgstr ""
-#: templates/js/translated/stock.js:1609
+#: templates/js/translated/stock.js:1733
msgid "Stock item assigned to sales order"
msgstr ""
-#: templates/js/translated/stock.js:1612
+#: templates/js/translated/stock.js:1736
msgid "Stock item assigned to customer"
msgstr ""
-#: templates/js/translated/stock.js:1616
+#: templates/js/translated/stock.js:1740
msgid "Stock item has expired"
msgstr ""
-#: templates/js/translated/stock.js:1618
+#: templates/js/translated/stock.js:1742
msgid "Stock item will expire soon"
msgstr ""
-#: templates/js/translated/stock.js:1624
+#: templates/js/translated/stock.js:1748
msgid "Serialized stock item has been allocated"
msgstr ""
-#: templates/js/translated/stock.js:1626
+#: templates/js/translated/stock.js:1750
msgid "Stock item has been fully allocated"
msgstr ""
-#: templates/js/translated/stock.js:1628
+#: templates/js/translated/stock.js:1752
msgid "Stock item has been partially allocated"
msgstr ""
-#: templates/js/translated/stock.js:1633
+#: templates/js/translated/stock.js:1757
msgid "Stock item has been installed in another item"
msgstr ""
-#: templates/js/translated/stock.js:1640
+#: templates/js/translated/stock.js:1764
msgid "Stock item has been rejected"
msgstr ""
-#: templates/js/translated/stock.js:1642
+#: templates/js/translated/stock.js:1766
msgid "Stock item is lost"
msgstr ""
-#: templates/js/translated/stock.js:1644
+#: templates/js/translated/stock.js:1768
msgid "Stock item is destroyed"
msgstr ""
-#: templates/js/translated/stock.js:1648
+#: templates/js/translated/stock.js:1772
#: templates/js/translated/table_filters.js:188
msgid "Depleted"
msgstr ""
-#: templates/js/translated/stock.js:1698
+#: templates/js/translated/stock.js:1822
msgid "Stocktake"
msgstr ""
-#: templates/js/translated/stock.js:1771
+#: templates/js/translated/stock.js:1895
msgid "Supplier part not specified"
msgstr ""
-#: templates/js/translated/stock.js:1809
+#: templates/js/translated/stock.js:1933
msgid "No stock items matching query"
msgstr ""
-#: templates/js/translated/stock.js:1830 templates/js/translated/stock.js:1878
+#: templates/js/translated/stock.js:1954 templates/js/translated/stock.js:2002
msgid "items"
msgstr ""
-#: templates/js/translated/stock.js:1918
+#: templates/js/translated/stock.js:2042
msgid "batches"
msgstr ""
-#: templates/js/translated/stock.js:1945
+#: templates/js/translated/stock.js:2069
msgid "locations"
msgstr ""
-#: templates/js/translated/stock.js:1947
+#: templates/js/translated/stock.js:2071
msgid "Undefined location"
msgstr ""
-#: templates/js/translated/stock.js:2146
+#: templates/js/translated/stock.js:2270
msgid "Set Stock Status"
msgstr ""
-#: templates/js/translated/stock.js:2160
+#: templates/js/translated/stock.js:2284
msgid "Select Status Code"
msgstr ""
-#: templates/js/translated/stock.js:2161
+#: templates/js/translated/stock.js:2285
msgid "Status code must be selected"
msgstr ""
-#: templates/js/translated/stock.js:2340
+#: templates/js/translated/stock.js:2464
msgid "Allocated Quantity"
msgstr ""
-#: templates/js/translated/stock.js:2535
+#: templates/js/translated/stock.js:2659
msgid "Invalid date"
msgstr ""
-#: templates/js/translated/stock.js:2557
+#: templates/js/translated/stock.js:2681
msgid "Details"
msgstr "Szczegóły"
-#: templates/js/translated/stock.js:2582
+#: templates/js/translated/stock.js:2706
msgid "Location no longer exists"
msgstr ""
-#: templates/js/translated/stock.js:2601
+#: templates/js/translated/stock.js:2725
msgid "Purchase order no longer exists"
msgstr ""
-#: templates/js/translated/stock.js:2620
+#: templates/js/translated/stock.js:2744
msgid "Customer no longer exists"
msgstr ""
-#: templates/js/translated/stock.js:2638
+#: templates/js/translated/stock.js:2762
msgid "Stock item no longer exists"
msgstr ""
-#: templates/js/translated/stock.js:2661
+#: templates/js/translated/stock.js:2785
msgid "Added"
msgstr "Dodano"
-#: templates/js/translated/stock.js:2669
+#: templates/js/translated/stock.js:2793
msgid "Removed"
msgstr ""
-#: templates/js/translated/stock.js:2710
+#: templates/js/translated/stock.js:2834
msgid "Edit tracking entry"
msgstr ""
-#: templates/js/translated/stock.js:2711
+#: templates/js/translated/stock.js:2835
msgid "Delete tracking entry"
msgstr ""
-#: templates/js/translated/stock.js:2762
+#: templates/js/translated/stock.js:2886
msgid "No installed items"
msgstr ""
-#: templates/js/translated/stock.js:2813
+#: templates/js/translated/stock.js:2937
msgid "Uninstall Stock Item"
msgstr ""
+#: templates/js/translated/stock.js:2973
+msgid "Install another stock item into this item"
+msgstr ""
+
+#: templates/js/translated/stock.js:2974
+msgid "Stock items can only be installed if they meet the following criteria"
+msgstr ""
+
+#: templates/js/translated/stock.js:2976
+msgid "The Stock Item links to a Part which is the BOM for this Stock Item"
+msgstr ""
+
+#: templates/js/translated/stock.js:2977
+msgid "The Stock Item is currently available in stock"
+msgstr ""
+
+#: templates/js/translated/stock.js:2978
+msgid "The Stock Item is serialized and does not belong to another item"
+msgstr ""
+
+#: templates/js/translated/stock.js:2991
+msgid "Select part to install"
+msgstr ""
+
#: templates/js/translated/table_filters.js:56
msgid "Trackable Part"
msgstr ""
@@ -9055,12 +9187,12 @@ msgstr ""
#: templates/js/translated/table_filters.js:121
#: templates/js/translated/table_filters.js:122
-#: templates/js/translated/table_filters.js:407
+#: templates/js/translated/table_filters.js:402
msgid "Include subcategories"
msgstr ""
#: templates/js/translated/table_filters.js:126
-#: templates/js/translated/table_filters.js:442
+#: templates/js/translated/table_filters.js:437
msgid "Subscribed"
msgstr ""
@@ -9102,7 +9234,7 @@ msgid "Batch code"
msgstr ""
#: templates/js/translated/table_filters.js:163
-#: templates/js/translated/table_filters.js:379
+#: templates/js/translated/table_filters.js:374
msgid "Active parts"
msgstr ""
@@ -9187,47 +9319,47 @@ msgstr ""
msgid "Show stock which is close to expiring"
msgstr ""
-#: templates/js/translated/table_filters.js:290
+#: templates/js/translated/table_filters.js:285
msgid "Build status"
msgstr ""
-#: templates/js/translated/table_filters.js:303
-#: templates/js/translated/table_filters.js:344
+#: templates/js/translated/table_filters.js:298
+#: templates/js/translated/table_filters.js:339
msgid "Assigned to me"
msgstr ""
-#: templates/js/translated/table_filters.js:320
-#: templates/js/translated/table_filters.js:331
-#: templates/js/translated/table_filters.js:352
+#: templates/js/translated/table_filters.js:315
+#: templates/js/translated/table_filters.js:326
+#: templates/js/translated/table_filters.js:347
msgid "Order status"
msgstr ""
-#: templates/js/translated/table_filters.js:336
-#: templates/js/translated/table_filters.js:357
+#: templates/js/translated/table_filters.js:331
+#: templates/js/translated/table_filters.js:352
msgid "Outstanding"
msgstr ""
-#: templates/js/translated/table_filters.js:408
+#: templates/js/translated/table_filters.js:403
msgid "Include parts in subcategories"
msgstr ""
-#: templates/js/translated/table_filters.js:412
+#: templates/js/translated/table_filters.js:407
msgid "Has IPN"
msgstr ""
-#: templates/js/translated/table_filters.js:413
+#: templates/js/translated/table_filters.js:408
msgid "Part has internal part number"
msgstr ""
-#: templates/js/translated/table_filters.js:418
+#: templates/js/translated/table_filters.js:413
msgid "Show active parts"
msgstr ""
-#: templates/js/translated/table_filters.js:426
+#: templates/js/translated/table_filters.js:421
msgid "Stock available"
msgstr ""
-#: templates/js/translated/table_filters.js:454
+#: templates/js/translated/table_filters.js:449
msgid "Purchasable"
msgstr ""
@@ -9480,35 +9612,35 @@ msgstr "Uprawnienia"
msgid "Important dates"
msgstr ""
-#: users/models.py:195
+#: users/models.py:200
msgid "Permission set"
msgstr "Uprawnienia nadane"
-#: users/models.py:203
+#: users/models.py:208
msgid "Group"
msgstr ""
-#: users/models.py:206
+#: users/models.py:211
msgid "View"
msgstr ""
-#: users/models.py:206
+#: users/models.py:211
msgid "Permission to view items"
msgstr "Uprawnienie do wyświetlania przedmiotów"
-#: users/models.py:208
+#: users/models.py:213
msgid "Permission to add items"
msgstr "Uprawnienie do dodawania przedmiotów"
-#: users/models.py:210
+#: users/models.py:215
msgid "Change"
msgstr ""
-#: users/models.py:210
+#: users/models.py:215
msgid "Permissions to edit items"
msgstr "Uprawnienie do edycji przedmiotów"
-#: users/models.py:212
+#: users/models.py:217
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 f65a3cf8c2..8aebfec50b 100644
--- a/InvenTree/locale/pt/LC_MESSAGES/django.po
+++ b/InvenTree/locale/pt/LC_MESSAGES/django.po
@@ -3,8 +3,8 @@ msgid ""
msgstr ""
"Project-Id-Version: inventree\n"
"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2022-01-29 00:17+0000\n"
-"PO-Revision-Date: 2022-01-29 01:10\n"
+"POT-Creation-Date: 2022-02-18 20:36+0000\n"
+"PO-Revision-Date: 2022-02-18 20:38\n"
"Last-Translator: \n"
"Language-Team: Portuguese\n"
"Language: pt_PT\n"
@@ -34,9 +34,9 @@ msgstr ""
msgid "Enter date"
msgstr ""
-#: InvenTree/forms.py:126 build/forms.py:48 build/forms.py:69 order/forms.py:24
-#: order/forms.py:35 order/forms.py:46 order/forms.py:57
-#: templates/account/email_confirm.html:20 templates/js/translated/forms.js:595
+#: InvenTree/forms.py:126 order/forms.py:24 order/forms.py:35 order/forms.py:46
+#: order/forms.py:57 templates/account/email_confirm.html:20
+#: templates/js/translated/forms.js:596
msgid "Confirm"
msgstr ""
@@ -86,7 +86,7 @@ msgid "Duplicate serial: {n}"
msgstr ""
#: InvenTree/helpers.py:446 order/models.py:282 order/models.py:425
-#: stock/views.py:1231
+#: stock/views.py:1082
msgid "Invalid quantity provided"
msgstr ""
@@ -119,133 +119,133 @@ msgstr ""
msgid "Number of unique serial number ({s}) must match quantity ({q})"
msgstr ""
-#: InvenTree/models.py:120
+#: InvenTree/models.py:176
msgid "Missing file"
msgstr ""
-#: InvenTree/models.py:121
+#: InvenTree/models.py:177
msgid "Missing external link"
msgstr ""
-#: InvenTree/models.py:132 stock/models.py:1995
+#: InvenTree/models.py:188 stock/models.py:1995
#: templates/js/translated/attachment.js:119
msgid "Attachment"
msgstr ""
-#: InvenTree/models.py:133
+#: InvenTree/models.py:189
msgid "Select file to attach"
msgstr ""
-#: InvenTree/models.py:139 company/models.py:131 company/models.py:348
-#: company/models.py:564 order/models.py:127 part/models.py:830
+#: InvenTree/models.py:195 company/models.py:131 company/models.py:348
+#: company/models.py:564 order/models.py:127 part/models.py:860
#: report/templates/report/inventree_build_order_base.html:165
#: templates/js/translated/company.js:540
#: templates/js/translated/company.js:829 templates/js/translated/part.js:1324
msgid "Link"
msgstr ""
-#: InvenTree/models.py:140 build/models.py:332 part/models.py:831
+#: InvenTree/models.py:196 build/models.py:332 part/models.py:861
#: stock/models.py:529
msgid "Link to external URL"
msgstr ""
-#: InvenTree/models.py:143 templates/js/translated/attachment.js:163
+#: InvenTree/models.py:199 templates/js/translated/attachment.js:163
msgid "Comment"
msgstr ""
-#: InvenTree/models.py:143
+#: InvenTree/models.py:199
msgid "File comment"
msgstr ""
-#: InvenTree/models.py:149 InvenTree/models.py:150 common/models.py:1223
-#: common/models.py:1224 common/models.py:1452 common/models.py:1453
-#: part/models.py:2265 part/models.py:2285
+#: InvenTree/models.py:205 InvenTree/models.py:206 common/models.py:1235
+#: common/models.py:1236 common/models.py:1464 common/models.py:1465
+#: part/models.py:2301 part/models.py:2321
#: report/templates/report/inventree_test_report_base.html:96
-#: templates/js/translated/stock.js:2692
+#: templates/js/translated/stock.js:2816
msgid "User"
msgstr ""
-#: InvenTree/models.py:153
+#: InvenTree/models.py:209
msgid "upload date"
msgstr ""
-#: InvenTree/models.py:176
+#: InvenTree/models.py:232
msgid "Filename must not be empty"
msgstr ""
-#: InvenTree/models.py:199
+#: InvenTree/models.py:255
msgid "Invalid attachment directory"
msgstr ""
-#: InvenTree/models.py:209
+#: InvenTree/models.py:265
#, python-brace-format
msgid "Filename contains illegal character '{c}'"
msgstr ""
-#: InvenTree/models.py:212
+#: InvenTree/models.py:268
msgid "Filename missing extension"
msgstr ""
-#: InvenTree/models.py:219
+#: InvenTree/models.py:275
msgid "Attachment with this filename already exists"
msgstr ""
-#: InvenTree/models.py:226
+#: InvenTree/models.py:282
msgid "Error renaming file"
msgstr ""
-#: InvenTree/models.py:261
+#: InvenTree/models.py:317
msgid "Invalid choice"
msgstr ""
-#: InvenTree/models.py:277 InvenTree/models.py:278 common/models.py:1438
-#: company/models.py:415 label/models.py:112 part/models.py:774
-#: part/models.py:2449 plugin/models.py:40 report/models.py:181
+#: InvenTree/models.py:333 InvenTree/models.py:334 common/models.py:1450
+#: company/models.py:415 label/models.py:112 part/models.py:804
+#: part/models.py:2485 plugin/models.py:40 report/models.py:181
#: templates/InvenTree/settings/mixins/urls.html:13
#: templates/InvenTree/settings/plugin.html:48
#: templates/InvenTree/settings/plugin.html:125
#: templates/InvenTree/settings/plugin_settings.html:23
-#: templates/InvenTree/settings/settings.html:282
+#: templates/InvenTree/settings/settings.html:319
#: templates/js/translated/company.js:641 templates/js/translated/part.js:567
#: templates/js/translated/part.js:706 templates/js/translated/part.js:1631
-#: templates/js/translated/stock.js:2485
+#: templates/js/translated/stock.js:2609
msgid "Name"
msgstr ""
-#: InvenTree/models.py:284 build/models.py:209
+#: InvenTree/models.py:340 build/models.py:209
#: build/templates/build/detail.html:25 company/models.py:354
#: company/models.py:570 company/templates/company/company_base.html:68
#: company/templates/company/manufacturer_part.html:76
#: company/templates/company/supplier_part.html:73 label/models.py:119
-#: order/models.py:125 part/models.py:797 part/templates/part/category.html:74
+#: order/models.py:125 part/models.py:827 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:93
#: templates/InvenTree/settings/plugin_settings.html:33
-#: templates/js/translated/bom.js:339 templates/js/translated/bom.js:552
-#: templates/js/translated/build.js:1682 templates/js/translated/company.js:345
+#: templates/js/translated/bom.js:552 templates/js/translated/bom.js:765
+#: templates/js/translated/build.js:1920 templates/js/translated/company.js:345
#: templates/js/translated/company.js:551
#: templates/js/translated/company.js:840 templates/js/translated/order.js:836
#: templates/js/translated/order.js:1019 templates/js/translated/order.js:1258
#: templates/js/translated/part.js:626 templates/js/translated/part.js:999
#: templates/js/translated/part.js:1084 templates/js/translated/part.js:1254
#: templates/js/translated/part.js:1650 templates/js/translated/part.js:1719
-#: templates/js/translated/stock.js:1577 templates/js/translated/stock.js:2314
-#: templates/js/translated/stock.js:2497 templates/js/translated/stock.js:2542
+#: templates/js/translated/stock.js:1701 templates/js/translated/stock.js:2438
+#: templates/js/translated/stock.js:2621 templates/js/translated/stock.js:2666
msgid "Description"
msgstr ""
-#: InvenTree/models.py:285
+#: InvenTree/models.py:341
msgid "Description (optional)"
msgstr ""
-#: InvenTree/models.py:293
+#: InvenTree/models.py:349
msgid "parent"
msgstr ""
-#: InvenTree/serializers.py:65 part/models.py:2734
+#: InvenTree/serializers.py:65 part/models.py:2803
msgid "Must be a valid number"
msgstr ""
@@ -253,83 +253,127 @@ msgstr ""
msgid "Filename"
msgstr ""
-#: InvenTree/settings.py:661
+#: InvenTree/serializers.py:334
+msgid "Invalid value"
+msgstr ""
+
+#: InvenTree/serializers.py:355
+msgid "Data File"
+msgstr ""
+
+#: InvenTree/serializers.py:356
+msgid "Select data file for upload"
+msgstr ""
+
+#: InvenTree/serializers.py:380
+msgid "Unsupported file type"
+msgstr ""
+
+#: InvenTree/serializers.py:386
+msgid "File is too large"
+msgstr ""
+
+#: InvenTree/serializers.py:407
+msgid "No columns found in file"
+msgstr ""
+
+#: InvenTree/serializers.py:410
+msgid "No data rows found in file"
+msgstr ""
+
+#: InvenTree/serializers.py:533
+msgid "No data rows provided"
+msgstr ""
+
+#: InvenTree/serializers.py:536
+msgid "No data columns supplied"
+msgstr ""
+
+#: InvenTree/serializers.py:623
+msgid "Missing required column"
+msgstr ""
+
+#: InvenTree/serializers.py:632
+msgid "Duplicate column"
+msgstr ""
+
+#: InvenTree/settings.py:655
msgid "German"
msgstr ""
-#: InvenTree/settings.py:662
+#: InvenTree/settings.py:656
msgid "Greek"
msgstr ""
-#: InvenTree/settings.py:663
+#: InvenTree/settings.py:657
msgid "English"
msgstr ""
-#: InvenTree/settings.py:664
+#: InvenTree/settings.py:658
msgid "Spanish"
msgstr ""
-#: InvenTree/settings.py:665
+#: InvenTree/settings.py:659
msgid "Spanish (Mexican)"
msgstr ""
-#: InvenTree/settings.py:666
+#: InvenTree/settings.py:660
msgid "French"
msgstr ""
-#: InvenTree/settings.py:667
+#: InvenTree/settings.py:661
msgid "Hebrew"
msgstr ""
-#: InvenTree/settings.py:668
+#: InvenTree/settings.py:662
msgid "Italian"
msgstr ""
-#: InvenTree/settings.py:669
+#: InvenTree/settings.py:663
msgid "Japanese"
msgstr ""
-#: InvenTree/settings.py:670
+#: InvenTree/settings.py:664
msgid "Korean"
msgstr ""
-#: InvenTree/settings.py:671
+#: InvenTree/settings.py:665
msgid "Dutch"
msgstr ""
-#: InvenTree/settings.py:672
+#: InvenTree/settings.py:666
msgid "Norwegian"
msgstr ""
-#: InvenTree/settings.py:673
+#: InvenTree/settings.py:667
msgid "Polish"
msgstr ""
-#: InvenTree/settings.py:674
+#: InvenTree/settings.py:668
msgid "Portugese"
msgstr ""
-#: InvenTree/settings.py:675
+#: InvenTree/settings.py:669
msgid "Russian"
msgstr ""
-#: InvenTree/settings.py:676
+#: InvenTree/settings.py:670
msgid "Swedish"
msgstr ""
-#: InvenTree/settings.py:677
+#: InvenTree/settings.py:671
msgid "Thai"
msgstr ""
-#: InvenTree/settings.py:678
+#: InvenTree/settings.py:672
msgid "Turkish"
msgstr ""
-#: InvenTree/settings.py:679
+#: InvenTree/settings.py:673
msgid "Vietnamese"
msgstr ""
-#: InvenTree/settings.py:680
+#: InvenTree/settings.py:674
msgid "Chinese"
msgstr ""
@@ -346,7 +390,7 @@ msgid "InvenTree system health checks failed"
msgstr ""
#: InvenTree/status_codes.py:101 InvenTree/status_codes.py:142
-#: InvenTree/status_codes.py:316 templates/js/translated/table_filters.js:313
+#: InvenTree/status_codes.py:316 templates/js/translated/table_filters.js:308
msgid "Pending"
msgstr ""
@@ -456,7 +500,7 @@ msgstr ""
msgid "Split child item"
msgstr ""
-#: InvenTree/status_codes.py:294 templates/js/translated/stock.js:2072
+#: InvenTree/status_codes.py:294 templates/js/translated/stock.js:2196
msgid "Merged stock items"
msgstr ""
@@ -484,40 +528,40 @@ msgstr ""
msgid "Production"
msgstr ""
-#: InvenTree/validators.py:23
+#: InvenTree/validators.py:25
msgid "Not a valid currency code"
msgstr ""
-#: InvenTree/validators.py:51
+#: InvenTree/validators.py:53
msgid "Invalid character in part name"
msgstr ""
-#: InvenTree/validators.py:64
+#: InvenTree/validators.py:66
#, python-brace-format
msgid "IPN must match regex pattern {pat}"
msgstr ""
-#: InvenTree/validators.py:78 InvenTree/validators.py:92
-#: InvenTree/validators.py:106
+#: InvenTree/validators.py:80 InvenTree/validators.py:94
+#: InvenTree/validators.py:108
#, python-brace-format
msgid "Reference must match pattern {pattern}"
msgstr ""
-#: InvenTree/validators.py:114
+#: InvenTree/validators.py:116
#, python-brace-format
msgid "Illegal character in name ({x})"
msgstr ""
-#: InvenTree/validators.py:133 InvenTree/validators.py:149
+#: InvenTree/validators.py:137 InvenTree/validators.py:153
msgid "Overage value must not be negative"
msgstr ""
-#: InvenTree/validators.py:151
+#: InvenTree/validators.py:155
msgid "Overage must not exceed 100%"
msgstr ""
-#: InvenTree/validators.py:158
-msgid "Overage must be an integer value or a percentage"
+#: InvenTree/validators.py:162
+msgid "Invalid value for overage"
msgstr ""
#: InvenTree/views.py:538
@@ -584,69 +628,11 @@ msgstr ""
msgid "Barcode associated with Stock Item"
msgstr ""
-#: build/forms.py:36 build/models.py:1293
-#: build/templates/build/build_base.html:82
-#: build/templates/build/detail.html:35 common/models.py:1263
-#: company/forms.py:42 company/templates/company/supplier_part.html:251
-#: order/models.py:805 order/models.py:1229 order/serializers.py:816
-#: order/templates/order/order_wizard/match_parts.html:30
-#: order/templates/order/order_wizard/select_parts.html:34 part/forms.py:144
-#: part/forms.py:160 part/forms.py:176 part/models.py:2636
-#: part/templates/part/bom_upload/match_parts.html:31
-#: part/templates/part/detail.html:992 part/templates/part/detail.html:1078
-#: part/templates/part/part_pricing.html:16
-#: report/templates/report/inventree_build_order_base.html:114
-#: report/templates/report/inventree_po_report.html:91
-#: report/templates/report/inventree_so_report.html:91
-#: report/templates/report/inventree_test_report_base.html:81
-#: report/templates/report/inventree_test_report_base.html:139
-#: stock/forms.py:142 stock/serializers.py:293
-#: stock/templates/stock/item_base.html:181
-#: stock/templates/stock/item_base.html:262
-#: stock/templates/stock/item_base.html:270
-#: templates/js/translated/barcode.js:385 templates/js/translated/bom.js:567
-#: templates/js/translated/build.js:295 templates/js/translated/build.js:495
-#: templates/js/translated/build.js:689 templates/js/translated/build.js:699
-#: templates/js/translated/build.js:1075 templates/js/translated/build.js:1422
-#: templates/js/translated/model_renderers.js:99
-#: templates/js/translated/order.js:101 templates/js/translated/order.js:1056
-#: 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:906
-#: templates/js/translated/part.js:1862 templates/js/translated/part.js:1985
-#: templates/js/translated/part.js:2063 templates/js/translated/stock.js:391
-#: templates/js/translated/stock.js:588 templates/js/translated/stock.js:758
-#: templates/js/translated/stock.js:2677 templates/js/translated/stock.js:2779
-msgid "Quantity"
-msgstr ""
-
-#: build/forms.py:37
-msgid "Enter quantity for build output"
-msgstr ""
-
-#: build/forms.py:41 order/serializers.py:820 stock/forms.py:81
-#: stock/serializers.py:314 templates/js/translated/stock.js:238
-#: templates/js/translated/stock.js:392
-msgid "Serial Numbers"
-msgstr ""
-
-#: build/forms.py:43
-msgid "Enter serial numbers for build outputs"
-msgstr ""
-
-#: build/forms.py:49
-msgid "Confirm creation of build output"
-msgstr ""
-
-#: build/forms.py:70
-msgid "Confirm deletion of build output"
-msgstr ""
-
-#: build/forms.py:89
+#: build/forms.py:20
msgid "Confirm cancel"
msgstr ""
-#: build/forms.py:89 build/views.py:65
+#: build/forms.py:20 build/views.py:62
msgid "Confirm build cancellation"
msgstr ""
@@ -657,7 +643,7 @@ msgstr ""
#: build/models.py:139 build/templates/build/build_base.html:9
#: build/templates/build/build_base.html:27
#: report/templates/report/inventree_build_order_base.html:106
-#: templates/js/translated/build.js:457 templates/js/translated/stock.js:2290
+#: templates/js/translated/build.js:676 templates/js/translated/stock.js:2414
msgid "Build Order"
msgstr ""
@@ -665,7 +651,7 @@ msgstr ""
#: 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
+#: part/templates/part/part_sidebar.html:21 templates/InvenTree/index.html:221
#: templates/InvenTree/search.html:139
#: templates/InvenTree/settings/sidebar.html:43 users/models.py:44
msgid "Build Orders"
@@ -676,11 +662,11 @@ msgid "Build Order Reference"
msgstr ""
#: build/models.py:201 order/models.py:213 order/models.py:541
-#: order/models.py:812 part/models.py:2645
-#: part/templates/part/bom_upload/match_parts.html:30
+#: order/models.py:812 part/models.py:2714
+#: part/templates/part/upload_bom.html:54
#: report/templates/report/inventree_po_report.html:92
#: report/templates/report/inventree_so_report.html:92
-#: templates/js/translated/bom.js:559 templates/js/translated/build.js:1179
+#: templates/js/translated/bom.js:772 templates/js/translated/build.js:1401
#: templates/js/translated/order.js:1050 templates/js/translated/order.js:2144
msgid "Reference"
msgstr ""
@@ -689,7 +675,7 @@ msgstr ""
msgid "Brief description of the build"
msgstr ""
-#: build/models.py:221 build/templates/build/build_base.html:164
+#: build/models.py:221 build/templates/build/build_base.html:169
#: build/templates/build/detail.html:88
msgid "Parent Build"
msgstr ""
@@ -702,30 +688,31 @@ msgstr ""
#: build/templates/build/detail.html:30 company/models.py:705
#: order/models.py:876 order/models.py:950
#: order/templates/order/order_wizard/select_parts.html:32 part/models.py:359
-#: part/models.py:2211 part/models.py:2227 part/models.py:2246
-#: part/models.py:2263 part/models.py:2365 part/models.py:2487
-#: part/models.py:2620 part/models.py:2927 part/serializers.py:658
-#: part/templates/part/part_app_base.html:8
+#: part/models.py:2247 part/models.py:2263 part/models.py:2282
+#: part/models.py:2299 part/models.py:2401 part/models.py:2523
+#: part/models.py:2613 part/models.py:2689 part/models.py:2996
+#: part/serializers.py:666 part/templates/part/part_app_base.html:8
#: part/templates/part/part_pricing.html:12
#: part/templates/part/set_category.html:13
+#: part/templates/part/upload_bom.html:52
#: 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: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:338
-#: templates/js/translated/bom.js:517 templates/js/translated/build.js:680
-#: templates/js/translated/build.js:1048 templates/js/translated/build.js:1419
-#: templates/js/translated/build.js:1687 templates/js/translated/company.js:492
+#: templates/js/translated/barcode.js:383 templates/js/translated/bom.js:551
+#: templates/js/translated/bom.js:730 templates/js/translated/build.js:902
+#: templates/js/translated/build.js:1270 templates/js/translated/build.js:1655
+#: templates/js/translated/build.js:1925 templates/js/translated/company.js:492
#: templates/js/translated/company.js:749 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:984
#: templates/js/translated/part.js:1065 templates/js/translated/part.js:1232
-#: templates/js/translated/stock.js:562 templates/js/translated/stock.js:727
-#: templates/js/translated/stock.js:934 templates/js/translated/stock.js:1534
-#: templates/js/translated/stock.js:2767
+#: templates/js/translated/stock.js:563 templates/js/translated/stock.js:728
+#: templates/js/translated/stock.js:935 templates/js/translated/stock.js:1658
+#: templates/js/translated/stock.js:2891 templates/js/translated/stock.js:2990
msgid "Part"
msgstr ""
@@ -741,7 +728,7 @@ msgstr ""
msgid "SalesOrder to which this build is allocated"
msgstr ""
-#: build/models.py:249 templates/js/translated/build.js:1407
+#: build/models.py:249 templates/js/translated/build.js:1643
#: templates/js/translated/order.js:1564
msgid "Source Location"
msgstr ""
@@ -782,15 +769,15 @@ msgstr ""
msgid "Build status code"
msgstr ""
-#: build/models.py:287 stock/models.py:533
+#: build/models.py:287 build/serializers.py:218 stock/models.py:533
msgid "Batch Code"
msgstr ""
-#: build/models.py:291
+#: build/models.py:291 build/serializers.py:219
msgid "Batch code for this build output"
msgstr ""
-#: build/models.py:294 order/models.py:129 part/models.py:969
+#: build/models.py:294 order/models.py:129 part/models.py:999
#: part/templates/part/part_base.html:313 templates/js/translated/order.js:1271
msgid "Creation Date"
msgstr ""
@@ -804,7 +791,7 @@ msgid "Target date for build completion. Build will be overdue after this date."
msgstr ""
#: build/models.py:302 order/models.py:255
-#: templates/js/translated/build.js:1758
+#: templates/js/translated/build.js:1996
msgid "Completion Date"
msgstr ""
@@ -812,7 +799,7 @@ msgstr ""
msgid "completed by"
msgstr ""
-#: build/models.py:316 templates/js/translated/build.js:1729
+#: build/models.py:316 templates/js/translated/build.js:1967
msgid "Issued by"
msgstr ""
@@ -820,12 +807,12 @@ msgstr ""
msgid "User who issued this build order"
msgstr ""
-#: build/models.py:325 build/templates/build/build_base.html:185
+#: build/models.py:325 build/templates/build/build_base.html:190
#: build/templates/build/detail.html:116 order/models.py:143
#: order/templates/order/order_base.html:170
-#: order/templates/order/sales_order_base.html:182 part/models.py:973
+#: order/templates/order/sales_order_base.html:182 part/models.py:1003
#: report/templates/report/inventree_build_order_base.html:159
-#: templates/js/translated/build.js:1741 templates/js/translated/order.js:864
+#: templates/js/translated/build.js:1979 templates/js/translated/order.js:864
msgid "Responsible"
msgstr ""
@@ -837,26 +824,26 @@ msgstr ""
#: company/templates/company/manufacturer_part.html:102
#: company/templates/company/supplier_part.html:126
#: part/templates/part/part_base.html:354 stock/models.py:527
-#: stock/templates/stock/item_base.html:373
+#: stock/templates/stock/item_base.html:375
msgid "External Link"
msgstr ""
-#: build/models.py:336 build/serializers.py:201
+#: build/models.py:336 build/serializers.py:380
#: build/templates/build/sidebar.html:21 company/models.py:142
#: company/models.py:577 company/templates/company/sidebar.html:25
#: order/models.py:147 order/models.py:814 order/models.py:1071
#: order/templates/order/po_sidebar.html:11
-#: order/templates/order/so_sidebar.html:17 part/models.py:958
-#: part/templates/part/detail.html:137 part/templates/part/part_sidebar.html:54
+#: order/templates/order/so_sidebar.html:17 part/models.py:988
+#: part/templates/part/detail.html:140 part/templates/part/part_sidebar.html:57
#: report/templates/report/inventree_build_order_base.html:173
-#: stock/forms.py:140 stock/forms.py:190 stock/forms.py:224 stock/models.py:599
+#: stock/forms.py:137 stock/forms.py:171 stock/models.py:599
#: stock/models.py:1895 stock/models.py:2001 stock/serializers.py:332
-#: stock/serializers.py:640 stock/serializers.py:738 stock/serializers.py:870
+#: stock/serializers.py:697 stock/serializers.py:795 stock/serializers.py:927
#: stock/templates/stock/stock_sidebar.html:25
-#: templates/js/translated/barcode.js:58 templates/js/translated/bom.js:723
+#: templates/js/translated/barcode.js:58 templates/js/translated/bom.js:936
#: templates/js/translated/company.js:845 templates/js/translated/order.js:1149
#: templates/js/translated/order.js:1445 templates/js/translated/order.js:2280
-#: templates/js/translated/stock.js:1317 templates/js/translated/stock.js:1803
+#: templates/js/translated/stock.js:1345 templates/js/translated/stock.js:1927
msgid "Notes"
msgstr ""
@@ -864,208 +851,284 @@ msgstr ""
msgid "Extra build notes"
msgstr ""
-#: build/models.py:717
+#: build/models.py:756
msgid "No build output specified"
msgstr ""
-#: build/models.py:720
+#: build/models.py:759
msgid "Build output is already completed"
msgstr ""
-#: build/models.py:723
+#: build/models.py:762
msgid "Build output does not match Build Order"
msgstr ""
-#: build/models.py:1115
+#: build/models.py:1154
msgid "Build item must specify a build output, as master part is marked as trackable"
msgstr ""
-#: build/models.py:1124
+#: build/models.py:1163
#, python-brace-format
msgid "Allocated quantity ({q}) must not execed available stock quantity ({a})"
msgstr ""
-#: build/models.py:1134
+#: build/models.py:1173
msgid "Stock item is over-allocated"
msgstr ""
-#: build/models.py:1140 order/models.py:1189
+#: build/models.py:1179 order/models.py:1189
msgid "Allocation quantity must be greater than zero"
msgstr ""
-#: build/models.py:1146
+#: build/models.py:1185
msgid "Quantity must be 1 for serialized stock"
msgstr ""
-#: build/models.py:1203
+#: build/models.py:1242
msgid "Selected stock item not found in BOM"
msgstr ""
-#: build/models.py:1263 stock/templates/stock/item_base.html:345
-#: templates/InvenTree/search.html:137 templates/js/translated/build.js:1660
+#: build/models.py:1302 stock/templates/stock/item_base.html:347
+#: templates/InvenTree/search.html:137 templates/js/translated/build.js:1898
#: templates/navbar.html:35
msgid "Build"
msgstr ""
-#: build/models.py:1264
+#: build/models.py:1303
msgid "Build to allocate parts"
msgstr ""
-#: build/models.py:1280 build/serializers.py:388 order/serializers.py:696
-#: order/serializers.py:714 stock/serializers.py:578 stock/serializers.py:696
-#: stock/templates/stock/item_base.html:9
+#: build/models.py:1319 build/serializers.py:570 order/serializers.py:696
+#: order/serializers.py:714 stock/serializers.py:404 stock/serializers.py:635
+#: stock/serializers.py:753 stock/templates/stock/item_base.html:9
#: stock/templates/stock/item_base.html:23
-#: stock/templates/stock/item_base.html:367
-#: templates/js/translated/build.js:468 templates/js/translated/build.js:473
-#: templates/js/translated/build.js:1421 templates/js/translated/build.js:1803
+#: stock/templates/stock/item_base.html:369
+#: templates/js/translated/build.js:687 templates/js/translated/build.js:692
+#: templates/js/translated/build.js:1657 templates/js/translated/build.js:2041
#: 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:563 templates/js/translated/stock.js:728
-#: templates/js/translated/stock.js:2628
+#: templates/js/translated/stock.js:564 templates/js/translated/stock.js:729
+#: templates/js/translated/stock.js:2752
msgid "Stock Item"
msgstr ""
-#: build/models.py:1281
+#: build/models.py:1320
msgid "Source stock item"
msgstr ""
-#: build/models.py:1294
+#: build/models.py:1332 build/serializers.py:188
+#: build/templates/build/build_base.html:82
+#: build/templates/build/detail.html:35 common/models.py:1275
+#: company/forms.py:42 company/templates/company/supplier_part.html:251
+#: order/models.py:805 order/models.py:1229 order/serializers.py:816
+#: order/templates/order/order_wizard/match_parts.html:30
+#: order/templates/order/order_wizard/select_parts.html:34 part/forms.py:144
+#: part/forms.py:160 part/forms.py:176 part/models.py:2705
+#: part/templates/part/detail.html:995 part/templates/part/detail.html:1081
+#: part/templates/part/part_pricing.html:16
+#: part/templates/part/upload_bom.html:53
+#: report/templates/report/inventree_build_order_base.html:114
+#: report/templates/report/inventree_po_report.html:91
+#: report/templates/report/inventree_so_report.html:91
+#: report/templates/report/inventree_test_report_base.html:81
+#: report/templates/report/inventree_test_report_base.html:139
+#: stock/forms.py:139 stock/serializers.py:293
+#: stock/templates/stock/item_base.html:183
+#: stock/templates/stock/item_base.html:264
+#: stock/templates/stock/item_base.html:272
+#: templates/js/translated/barcode.js:385 templates/js/translated/bom.js:780
+#: templates/js/translated/build.js:375 templates/js/translated/build.js:523
+#: templates/js/translated/build.js:714 templates/js/translated/build.js:911
+#: templates/js/translated/build.js:921 templates/js/translated/build.js:1297
+#: templates/js/translated/build.js:1658
+#: templates/js/translated/model_renderers.js:99
+#: templates/js/translated/order.js:101 templates/js/translated/order.js:1056
+#: 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:906
+#: templates/js/translated/part.js:1862 templates/js/translated/part.js:1985
+#: templates/js/translated/part.js:2063 templates/js/translated/stock.js:392
+#: templates/js/translated/stock.js:589 templates/js/translated/stock.js:759
+#: templates/js/translated/stock.js:2801 templates/js/translated/stock.js:2903
+msgid "Quantity"
+msgstr ""
+
+#: build/models.py:1333
msgid "Stock quantity to allocate to build"
msgstr ""
-#: build/models.py:1302
+#: build/models.py:1341
msgid "Install into"
msgstr ""
-#: build/models.py:1303
+#: build/models.py:1342
msgid "Destination stock item"
msgstr ""
-#: build/serializers.py:137 build/serializers.py:417
+#: build/serializers.py:138 build/serializers.py:599
msgid "Build Output"
msgstr ""
-#: build/serializers.py:146
+#: build/serializers.py:150
msgid "Build output does not match the parent build"
msgstr ""
-#: build/serializers.py:150
+#: build/serializers.py:154
msgid "Output part does not match BuildOrder part"
msgstr ""
-#: build/serializers.py:154
+#: build/serializers.py:158
msgid "This build output has already been completed"
msgstr ""
-#: build/serializers.py:158
+#: build/serializers.py:164
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:731
-#: stock/serializers.py:972 stock/templates/stock/item_base.html:313
-#: templates/js/translated/barcode.js:384
-#: templates/js/translated/barcode.js:557 templates/js/translated/build.js:480
-#: templates/js/translated/build.js:1087 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:179 templates/js/translated/stock.js:564
-#: templates/js/translated/stock.js:729 templates/js/translated/stock.js:936
-#: templates/js/translated/stock.js:1684 templates/js/translated/stock.js:2569
-msgid "Location"
+#: build/serializers.py:189
+msgid "Enter quantity for build output"
msgstr ""
-#: build/serializers.py:191
-msgid "Location for completed build outputs"
-msgstr ""
-
-#: build/serializers.py:197 build/templates/build/build_base.html:137
-#: build/templates/build/detail.html:63 order/models.py:557
-#: order/serializers.py:247 stock/templates/stock/item_base.html:187
-#: templates/js/translated/barcode.js:140 templates/js/translated/build.js:1716
-#: templates/js/translated/order.js:591 templates/js/translated/order.js:840
-#: templates/js/translated/order.js:1263 templates/js/translated/stock.js:1659
-#: templates/js/translated/stock.js:2646 templates/js/translated/stock.js:2795
-msgid "Status"
-msgstr ""
-
-#: build/serializers.py:213
-msgid "A list of build outputs must be provided"
-msgstr ""
-
-#: build/serializers.py:249
-msgid "Accept Unallocated"
-msgstr ""
-
-#: build/serializers.py:250
-msgid "Accept that stock items have not been fully allocated to this build order"
-msgstr ""
-
-#: build/serializers.py:260 templates/js/translated/build.js:149
-msgid "Required stock has not been fully allocated"
-msgstr ""
-
-#: build/serializers.py:265
-msgid "Accept Incomplete"
-msgstr ""
-
-#: build/serializers.py:266
-msgid "Accept that the required number of build outputs have not been completed"
-msgstr ""
-
-#: build/serializers.py:276 templates/js/translated/build.js:153
-msgid "Required build quantity has not been completed"
-msgstr ""
-
-#: build/serializers.py:285
-msgid "Build order has incomplete outputs"
-msgstr ""
-
-#: build/serializers.py:313 build/serializers.py:362 part/models.py:2760
-#: part/models.py:2919
-msgid "BOM Item"
-msgstr ""
-
-#: build/serializers.py:323
-msgid "Build output"
-msgstr ""
-
-#: build/serializers.py:332
-msgid "Build output must point to the same build"
-msgstr ""
-
-#: build/serializers.py:379
-msgid "bom_item.part must point to the same part as the build order"
-msgstr ""
-
-#: build/serializers.py:394 stock/serializers.py:585
-msgid "Item must be in stock"
-msgstr ""
-
-#: build/serializers.py:408 order/models.py:280 order/serializers.py:240
+#: build/serializers.py:201 build/serializers.py:590 order/models.py:280
+#: order/serializers.py:240 part/serializers.py:471 part/serializers.py:827
#: stock/models.py:367 stock/models.py:1105 stock/serializers.py:305
msgid "Quantity must be greater than zero"
msgstr ""
-#: build/serializers.py:450 order/serializers.py:747
+#: build/serializers.py:208
+msgid "Integer quantity required for trackable parts"
+msgstr ""
+
+#: build/serializers.py:211
+msgid "Integer quantity required, as the bill of materials contains trackable parts"
+msgstr ""
+
+#: build/serializers.py:225 order/serializers.py:820 stock/forms.py:78
+#: stock/serializers.py:314 templates/js/translated/stock.js:239
+#: templates/js/translated/stock.js:393
+msgid "Serial Numbers"
+msgstr ""
+
+#: build/serializers.py:226
+msgid "Enter serial numbers for build outputs"
+msgstr ""
+
+#: build/serializers.py:239
+msgid "Auto Allocate Serial Numbers"
+msgstr ""
+
+#: build/serializers.py:240
+msgid "Automatically allocate required items with matching serial numbers"
+msgstr ""
+
+#: build/serializers.py:274 stock/api.py:551
+msgid "The following serial numbers already exist"
+msgstr ""
+
+#: build/serializers.py:327 build/serializers.py:392
+msgid "A list of build outputs must be provided"
+msgstr ""
+
+#: build/serializers.py:369 order/serializers.py:226 order/serializers.py:294
+#: stock/forms.py:169 stock/serializers.py:325 stock/serializers.py:788
+#: stock/serializers.py:1029 stock/templates/stock/item_base.html:315
+#: templates/js/translated/barcode.js:384
+#: templates/js/translated/barcode.js:557 templates/js/translated/build.js:699
+#: templates/js/translated/build.js:1309 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:179 templates/js/translated/stock.js:565
+#: templates/js/translated/stock.js:730 templates/js/translated/stock.js:937
+#: templates/js/translated/stock.js:1808 templates/js/translated/stock.js:2693
+msgid "Location"
+msgstr ""
+
+#: build/serializers.py:370
+msgid "Location for completed build outputs"
+msgstr ""
+
+#: build/serializers.py:376 build/templates/build/build_base.html:142
+#: build/templates/build/detail.html:63 order/models.py:557
+#: order/serializers.py:247 stock/templates/stock/item_base.html:189
+#: templates/js/translated/barcode.js:140 templates/js/translated/build.js:1954
+#: templates/js/translated/order.js:591 templates/js/translated/order.js:840
+#: templates/js/translated/order.js:1263 templates/js/translated/stock.js:1783
+#: templates/js/translated/stock.js:2770 templates/js/translated/stock.js:2919
+msgid "Status"
+msgstr ""
+
+#: build/serializers.py:428
+msgid "Accept Unallocated"
+msgstr ""
+
+#: build/serializers.py:429
+msgid "Accept that stock items have not been fully allocated to this build order"
+msgstr ""
+
+#: build/serializers.py:439 templates/js/translated/build.js:150
+msgid "Required stock has not been fully allocated"
+msgstr ""
+
+#: build/serializers.py:444
+msgid "Accept Incomplete"
+msgstr ""
+
+#: build/serializers.py:445
+msgid "Accept that the required number of build outputs have not been completed"
+msgstr ""
+
+#: build/serializers.py:455 templates/js/translated/build.js:154
+msgid "Required build quantity has not been completed"
+msgstr ""
+
+#: build/serializers.py:464
+msgid "Build order has incomplete outputs"
+msgstr ""
+
+#: build/serializers.py:467 build/templates/build/build_base.html:95
+msgid "No build outputs have been created for this build order"
+msgstr ""
+
+#: build/serializers.py:495 build/serializers.py:544 part/models.py:2829
+#: part/models.py:2988
+msgid "BOM Item"
+msgstr ""
+
+#: build/serializers.py:505
+msgid "Build output"
+msgstr ""
+
+#: build/serializers.py:514
+msgid "Build output must point to the same build"
+msgstr ""
+
+#: build/serializers.py:561
+msgid "bom_item.part must point to the same part as the build order"
+msgstr ""
+
+#: build/serializers.py:576 stock/serializers.py:642
+msgid "Item must be in stock"
+msgstr ""
+
+#: build/serializers.py:632 order/serializers.py:747
#, python-brace-format
msgid "Available quantity ({q}) exceeded"
msgstr ""
-#: build/serializers.py:456
+#: build/serializers.py:638
msgid "Build output must be specified for allocation of tracked parts"
msgstr ""
-#: build/serializers.py:463
+#: build/serializers.py:645
msgid "Build output cannot be specified for allocation of untracked parts"
msgstr ""
-#: build/serializers.py:491 order/serializers.py:990
+#: build/serializers.py:673 order/serializers.py:990
msgid "Allocation items must be provided"
msgstr ""
-#: build/tasks.py:92
+#: build/tasks.py:98
msgid "Stock required for build order"
msgstr ""
@@ -1088,7 +1151,7 @@ msgid "Edit Build"
msgstr ""
#: build/templates/build/build_base.html:56
-#: build/templates/build/build_base.html:215 build/views.py:56
+#: build/templates/build/build_base.html:220 build/views.py:53
msgid "Cancel Build"
msgstr ""
@@ -1105,110 +1168,90 @@ msgstr ""
msgid "Build Description"
msgstr ""
-#: build/templates/build/build_base.html:96
+#: build/templates/build/build_base.html:101
#, python-format
msgid "This Build Order is allocated to Sales Order %(link)s"
msgstr ""
-#: build/templates/build/build_base.html:103
+#: build/templates/build/build_base.html:108
#, python-format
msgid "This Build Order is a child of Build Order %(link)s"
msgstr ""
-#: build/templates/build/build_base.html:110
+#: build/templates/build/build_base.html:115
msgid "Build Order is ready to mark as completed"
msgstr ""
-#: build/templates/build/build_base.html:115
+#: build/templates/build/build_base.html:120
msgid "Build Order cannot be completed as outstanding outputs remain"
msgstr ""
-#: build/templates/build/build_base.html:120
+#: build/templates/build/build_base.html:125
msgid "Required build quantity has not yet been completed"
msgstr ""
-#: build/templates/build/build_base.html:125
+#: build/templates/build/build_base.html:130
msgid "Stock has not been fully allocated to this Build Order"
msgstr ""
-#: build/templates/build/build_base.html:146
+#: build/templates/build/build_base.html:151
#: build/templates/build/detail.html:132
#: order/templates/order/order_base.html:156
#: order/templates/order/sales_order_base.html:163
#: report/templates/report/inventree_build_order_base.html:126
-#: templates/js/translated/build.js:1753 templates/js/translated/order.js:854
+#: templates/js/translated/build.js:1991 templates/js/translated/order.js:854
#: templates/js/translated/order.js:1276
msgid "Target Date"
msgstr ""
-#: build/templates/build/build_base.html:151
+#: build/templates/build/build_base.html:156
#, python-format
msgid "This build was due on %(target)s"
msgstr ""
-#: build/templates/build/build_base.html:151
-#: build/templates/build/build_base.html:196
+#: build/templates/build/build_base.html:156
+#: build/templates/build/build_base.html:201
#: order/templates/order/order_base.html:98
#: order/templates/order/sales_order_base.html:93
-#: templates/js/translated/table_filters.js:299
-#: templates/js/translated/table_filters.js:340
-#: templates/js/translated/table_filters.js:361
+#: templates/js/translated/table_filters.js:294
+#: templates/js/translated/table_filters.js:335
+#: templates/js/translated/table_filters.js:356
msgid "Overdue"
msgstr ""
-#: build/templates/build/build_base.html:158
+#: build/templates/build/build_base.html:163
#: build/templates/build/detail.html:68 build/templates/build/detail.html:143
#: order/templates/order/sales_order_base.html:170
-#: templates/js/translated/build.js:1702
-#: templates/js/translated/table_filters.js:370
+#: templates/js/translated/build.js:1940
+#: templates/js/translated/table_filters.js:365
msgid "Completed"
msgstr ""
-#: build/templates/build/build_base.html:171
+#: build/templates/build/build_base.html:176
#: build/templates/build/detail.html:95 order/models.py:947
#: order/models.py:1043 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:307
-#: templates/js/translated/order.js:1218 templates/js/translated/stock.js:2304
+#: stock/templates/stock/item_base.html:309
+#: templates/js/translated/order.js:1218 templates/js/translated/stock.js:2428
msgid "Sales Order"
msgstr ""
-#: build/templates/build/build_base.html:178
+#: build/templates/build/build_base.html:183
#: build/templates/build/detail.html:109
#: report/templates/report/inventree_build_order_base.html:153
msgid "Issued By"
msgstr ""
-#: build/templates/build/build_base.html:223
+#: build/templates/build/build_base.html:228
msgid "Incomplete Outputs"
msgstr ""
-#: build/templates/build/build_base.html:224
+#: build/templates/build/build_base.html:229
msgid "Build Order cannot be completed as incomplete build outputs remain"
msgstr ""
-#: build/templates/build/build_output_create.html:7
-msgid "The Bill of Materials contains trackable parts"
-msgstr ""
-
-#: build/templates/build/build_output_create.html:8
-msgid "Build outputs must be generated individually."
-msgstr ""
-
-#: build/templates/build/build_output_create.html:9
-msgid "Multiple build outputs will be created based on the quantity specified."
-msgstr ""
-
-#: build/templates/build/build_output_create.html:15
-msgid "Trackable parts can have serial numbers specified"
-msgstr ""
-
-#: build/templates/build/build_output_create.html:16
-msgid "Enter serial numbers to generate multiple single build outputs"
-msgstr ""
-
#: build/templates/build/cancel.html:5
msgid "Are you sure you wish to cancel this build?"
msgstr ""
@@ -1225,7 +1268,7 @@ msgstr ""
msgid "Stock can be taken from any available location."
msgstr ""
-#: build/templates/build/detail.html:50 order/models.py:898 stock/forms.py:136
+#: build/templates/build/detail.html:50 order/models.py:898 stock/forms.py:133
#: templates/js/translated/order.js:592 templates/js/translated/order.js:1138
msgid "Destination"
msgstr ""
@@ -1234,13 +1277,13 @@ msgstr ""
msgid "Destination location not specified"
msgstr ""
-#: build/templates/build/detail.html:74 templates/js/translated/build.js:707
+#: build/templates/build/detail.html:74 templates/js/translated/build.js:929
msgid "Allocated Parts"
msgstr ""
#: build/templates/build/detail.html:81
-#: stock/templates/stock/item_base.html:331
-#: templates/js/translated/stock.js:1673 templates/js/translated/stock.js:2802
+#: stock/templates/stock/item_base.html:333
+#: templates/js/translated/stock.js:1797 templates/js/translated/stock.js:2926
#: templates/js/translated/table_filters.js:151
#: templates/js/translated/table_filters.js:238
msgid "Batch"
@@ -1249,7 +1292,7 @@ msgstr ""
#: build/templates/build/detail.html:127
#: order/templates/order/order_base.html:143
#: order/templates/order/sales_order_base.html:157
-#: templates/js/translated/build.js:1724
+#: templates/js/translated/build.js:1962
msgid "Created"
msgstr ""
@@ -1269,7 +1312,7 @@ msgstr ""
msgid "Allocate Stock to Build"
msgstr ""
-#: build/templates/build/detail.html:177 templates/js/translated/build.js:1262
+#: build/templates/build/detail.html:177 templates/js/translated/build.js:1484
msgid "Unallocate stock"
msgstr ""
@@ -1329,52 +1372,60 @@ msgid "Output Actions"
msgstr ""
#: build/templates/build/detail.html:250
-msgid "Complete selected items"
+msgid "Complete selected build outputs"
msgstr ""
#: build/templates/build/detail.html:251
msgid "Complete outputs"
msgstr ""
-#: build/templates/build/detail.html:266
+#: build/templates/build/detail.html:253
+msgid "Delete selected build outputs"
+msgstr ""
+
+#: build/templates/build/detail.html:254
+msgid "Delete outputs"
+msgstr ""
+
+#: build/templates/build/detail.html:270
msgid "Completed Build Outputs"
msgstr ""
-#: build/templates/build/detail.html:278 build/templates/build/sidebar.html:19
+#: build/templates/build/detail.html:282 build/templates/build/sidebar.html:19
#: order/templates/order/po_sidebar.html:9
#: order/templates/order/purchase_order_detail.html:60
#: order/templates/order/sales_order_detail.html:107
-#: order/templates/order/so_sidebar.html:15 part/templates/part/detail.html:213
-#: part/templates/part/part_sidebar.html:52 stock/templates/stock/item.html:112
+#: order/templates/order/so_sidebar.html:15 part/templates/part/detail.html:216
+#: part/templates/part/part_sidebar.html:55 stock/templates/stock/item.html:112
#: stock/templates/stock/stock_sidebar.html:23
msgid "Attachments"
msgstr ""
-#: build/templates/build/detail.html:294
+#: build/templates/build/detail.html:298
msgid "Build Notes"
msgstr ""
-#: build/templates/build/detail.html:298 build/templates/build/detail.html:453
+#: build/templates/build/detail.html:302 build/templates/build/detail.html:478
#: company/templates/company/detail.html:188
#: company/templates/company/detail.html:215
#: order/templates/order/purchase_order_detail.html:80
#: order/templates/order/purchase_order_detail.html:108
#: order/templates/order/sales_order_detail.html:127
#: order/templates/order/sales_order_detail.html:186
-#: part/templates/part/detail.html:141 stock/templates/stock/item.html:132
-#: stock/templates/stock/item.html:235
+#: part/templates/part/detail.html:144 stock/templates/stock/item.html:132
+#: stock/templates/stock/item.html:230
msgid "Edit Notes"
msgstr ""
-#: build/templates/build/detail.html:477
+#: build/templates/build/detail.html:502
msgid "Allocation Complete"
msgstr ""
-#: build/templates/build/detail.html:478
+#: build/templates/build/detail.html:503
msgid "All untracked stock items have been allocated"
msgstr ""
-#: build/templates/build/index.html:18 part/templates/part/detail.html:320
+#: build/templates/build/index.html:18 part/templates/part/detail.html:323
msgid "New Build Order"
msgstr ""
@@ -1406,51 +1457,11 @@ msgstr ""
msgid "Completed Items"
msgstr ""
-#: build/views.py:76
+#: build/views.py:73
msgid "Build was cancelled"
msgstr ""
-#: build/views.py:88
-msgid "Create Build Output"
-msgstr ""
-
-#: build/views.py:106
-msgid "Maximum output quantity is "
-msgstr ""
-
-#: build/views.py:122 stock/serializers.py:363 stock/views.py:1257
-msgid "Serial numbers already exist"
-msgstr ""
-
-#: build/views.py:131
-msgid "Serial numbers required for trackable build output"
-msgstr ""
-
-#: build/views.py:197
-msgid "Delete Build Output"
-msgstr ""
-
-#: build/views.py:218
-msgid "Confirm unallocation of build stock"
-msgstr ""
-
-#: build/views.py:219 stock/views.py:352
-msgid "Check the confirmation box"
-msgstr ""
-
-#: build/views.py:231
-msgid "Build output does not match build"
-msgstr ""
-
-#: build/views.py:233
-msgid "Build output must be specified"
-msgstr ""
-
-#: build/views.py:245
-msgid "Build output deleted"
-msgstr ""
-
-#: build/views.py:286
+#: build/views.py:114
msgid "Delete Build Order"
msgstr ""
@@ -1639,9 +1650,9 @@ msgstr ""
msgid "Copy category parameter templates when creating a part"
msgstr ""
-#: common/models.py:705 part/models.py:2489 report/models.py:187
+#: common/models.py:705 part/models.py:2525 report/models.py:187
#: templates/js/translated/table_filters.js:38
-#: templates/js/translated/table_filters.js:422
+#: templates/js/translated/table_filters.js:417
msgid "Template"
msgstr ""
@@ -1649,9 +1660,9 @@ msgstr ""
msgid "Parts are templates by default"
msgstr ""
-#: common/models.py:712 part/models.py:921 templates/js/translated/bom.js:1082
+#: common/models.py:712 part/models.py:951 templates/js/translated/bom.js:1300
#: templates/js/translated/table_filters.js:168
-#: templates/js/translated/table_filters.js:434
+#: templates/js/translated/table_filters.js:429
msgid "Assembly"
msgstr ""
@@ -1659,8 +1670,8 @@ msgstr ""
msgid "Parts can be assembled from other components by default"
msgstr ""
-#: common/models.py:719 part/models.py:927
-#: templates/js/translated/table_filters.js:438
+#: common/models.py:719 part/models.py:957
+#: templates/js/translated/table_filters.js:433
msgid "Component"
msgstr ""
@@ -1668,7 +1679,7 @@ msgstr ""
msgid "Parts can be used as sub-components by default"
msgstr ""
-#: common/models.py:726 part/models.py:938
+#: common/models.py:726 part/models.py:968
msgid "Purchaseable"
msgstr ""
@@ -1676,8 +1687,8 @@ msgstr ""
msgid "Parts are purchaseable by default"
msgstr ""
-#: common/models.py:733 part/models.py:943
-#: templates/js/translated/table_filters.js:446
+#: common/models.py:733 part/models.py:973
+#: templates/js/translated/table_filters.js:441
msgid "Salable"
msgstr ""
@@ -1685,10 +1696,10 @@ msgstr ""
msgid "Parts are salable by default"
msgstr ""
-#: common/models.py:740 part/models.py:933
+#: common/models.py:740 part/models.py:963
#: templates/js/translated/table_filters.js:46
#: templates/js/translated/table_filters.js:100
-#: templates/js/translated/table_filters.js:450
+#: templates/js/translated/table_filters.js:445
msgid "Trackable"
msgstr ""
@@ -1696,7 +1707,7 @@ msgstr ""
msgid "Parts are trackable by default"
msgstr ""
-#: common/models.py:747 part/models.py:953
+#: common/models.py:747 part/models.py:983
#: part/templates/part/part_base.html:147
#: templates/js/translated/table_filters.js:42
msgid "Virtual"
@@ -1730,589 +1741,595 @@ msgstr ""
msgid "Include pricing information in BOM tables"
msgstr ""
-#: common/models.py:780
+#: common/models.py:785
+msgid "Show Price History"
+msgstr ""
+
+#: common/models.py:786
+msgid "Display historical pricing for Part"
+msgstr ""
+
+#: common/models.py:792
msgid "Show related parts"
msgstr ""
-#: common/models.py:781
+#: common/models.py:793
msgid "Display related parts for a part"
msgstr ""
-#: common/models.py:787
+#: common/models.py:799
msgid "Create initial stock"
msgstr ""
-#: common/models.py:788
+#: common/models.py:800
msgid "Create initial stock on part creation"
msgstr ""
-#: common/models.py:794
+#: common/models.py:806
msgid "Internal Prices"
msgstr ""
-#: common/models.py:795
+#: common/models.py:807
msgid "Enable internal prices for parts"
msgstr ""
-#: common/models.py:801
+#: common/models.py:813
msgid "Internal Price as BOM-Price"
msgstr ""
-#: common/models.py:802
+#: common/models.py:814
msgid "Use the internal price (if set) in BOM-price calculations"
msgstr ""
-#: common/models.py:808
+#: common/models.py:820
msgid "Part Name Display Format"
msgstr ""
-#: common/models.py:809
+#: common/models.py:821
msgid "Format to display the part name"
msgstr ""
-#: common/models.py:816
+#: common/models.py:828
msgid "Enable Reports"
msgstr ""
-#: common/models.py:817
+#: common/models.py:829
msgid "Enable generation of reports"
msgstr ""
-#: common/models.py:823 templates/stats.html:25
+#: common/models.py:835 templates/stats.html:25
msgid "Debug Mode"
msgstr ""
-#: common/models.py:824
+#: common/models.py:836
msgid "Generate reports in debug mode (HTML output)"
msgstr ""
-#: common/models.py:830
+#: common/models.py:842
msgid "Page Size"
msgstr ""
-#: common/models.py:831
+#: common/models.py:843
msgid "Default page size for PDF reports"
msgstr ""
-#: common/models.py:841
+#: common/models.py:853
msgid "Test Reports"
msgstr ""
-#: common/models.py:842
+#: common/models.py:854
msgid "Enable generation of test reports"
msgstr ""
-#: common/models.py:848
+#: common/models.py:860
msgid "Stock Expiry"
msgstr ""
-#: common/models.py:849
+#: common/models.py:861
msgid "Enable stock expiry functionality"
msgstr ""
-#: common/models.py:855
+#: common/models.py:867
msgid "Sell Expired Stock"
msgstr ""
-#: common/models.py:856
+#: common/models.py:868
msgid "Allow sale of expired stock"
msgstr ""
-#: common/models.py:862
+#: common/models.py:874
msgid "Stock Stale Time"
msgstr ""
-#: common/models.py:863
+#: common/models.py:875
msgid "Number of days stock items are considered stale before expiring"
msgstr ""
-#: common/models.py:865
+#: common/models.py:877
msgid "days"
msgstr ""
-#: common/models.py:870
+#: common/models.py:882
msgid "Build Expired Stock"
msgstr ""
-#: common/models.py:871
+#: common/models.py:883
msgid "Allow building with expired stock"
msgstr ""
-#: common/models.py:877
+#: common/models.py:889
msgid "Stock Ownership Control"
msgstr ""
-#: common/models.py:878
+#: common/models.py:890
msgid "Enable ownership control over stock locations and items"
msgstr ""
-#: common/models.py:884
+#: common/models.py:896
msgid "Build Order Reference Prefix"
msgstr ""
-#: common/models.py:885
+#: common/models.py:897
msgid "Prefix value for build order reference"
msgstr ""
-#: common/models.py:890
+#: common/models.py:902
msgid "Build Order Reference Regex"
msgstr ""
-#: common/models.py:891
+#: common/models.py:903
msgid "Regular expression pattern for matching build order reference"
msgstr ""
-#: common/models.py:895
+#: common/models.py:907
msgid "Sales Order Reference Prefix"
msgstr ""
-#: common/models.py:896
+#: common/models.py:908
msgid "Prefix value for sales order reference"
msgstr ""
-#: common/models.py:901
+#: common/models.py:913
msgid "Purchase Order Reference Prefix"
msgstr ""
-#: common/models.py:902
+#: common/models.py:914
msgid "Prefix value for purchase order reference"
msgstr ""
-#: common/models.py:908
+#: common/models.py:920
msgid "Enable password forgot"
msgstr ""
-#: common/models.py:909
+#: common/models.py:921
msgid "Enable password forgot function on the login pages"
msgstr ""
-#: common/models.py:914
+#: common/models.py:926
msgid "Enable registration"
msgstr ""
-#: common/models.py:915
+#: common/models.py:927
msgid "Enable self-registration for users on the login pages"
msgstr ""
-#: common/models.py:920
+#: common/models.py:932
msgid "Enable SSO"
msgstr ""
-#: common/models.py:921
+#: common/models.py:933
msgid "Enable SSO on the login pages"
msgstr ""
-#: common/models.py:926
+#: common/models.py:938
msgid "Email required"
msgstr ""
-#: common/models.py:927
+#: common/models.py:939
msgid "Require user to supply mail on signup"
msgstr ""
-#: common/models.py:932
+#: common/models.py:944
msgid "Auto-fill SSO users"
msgstr ""
-#: common/models.py:933
+#: common/models.py:945
msgid "Automatically fill out user-details from SSO account-data"
msgstr ""
-#: common/models.py:938
+#: common/models.py:950
msgid "Mail twice"
msgstr ""
-#: common/models.py:939
+#: common/models.py:951
msgid "On signup ask users twice for their mail"
msgstr ""
-#: common/models.py:944
+#: common/models.py:956
msgid "Password twice"
msgstr ""
-#: common/models.py:945
+#: common/models.py:957
msgid "On signup ask users twice for their password"
msgstr ""
-#: common/models.py:950
+#: common/models.py:962
msgid "Group on signup"
msgstr ""
-#: common/models.py:951
+#: common/models.py:963
msgid "Group to which new users are assigned on registration"
msgstr ""
-#: common/models.py:956
+#: common/models.py:968
msgid "Enforce MFA"
msgstr ""
-#: common/models.py:957
+#: common/models.py:969
msgid "Users must use multifactor security."
msgstr ""
-#: common/models.py:964
+#: common/models.py:976
msgid "Enable URL integration"
msgstr ""
-#: common/models.py:965
+#: common/models.py:977
msgid "Enable plugins to add URL routes"
msgstr ""
-#: common/models.py:971
+#: common/models.py:983
msgid "Enable navigation integration"
msgstr ""
-#: common/models.py:972
+#: common/models.py:984
msgid "Enable plugins to integrate into navigation"
msgstr ""
-#: common/models.py:978
+#: common/models.py:990
msgid "Enable app integration"
msgstr ""
-#: common/models.py:979
+#: common/models.py:991
msgid "Enable plugins to add apps"
msgstr ""
-#: common/models.py:985
+#: common/models.py:997
msgid "Enable schedule integration"
msgstr ""
-#: common/models.py:986
+#: common/models.py:998
msgid "Enable plugins to run scheduled tasks"
msgstr ""
-#: common/models.py:992
+#: common/models.py:1004
msgid "Enable event integration"
msgstr ""
-#: common/models.py:993
+#: common/models.py:1005
msgid "Enable plugins to respond to internal events"
msgstr ""
-#: common/models.py:1008 common/models.py:1216
+#: common/models.py:1020 common/models.py:1228
msgid "Settings key (must be unique - case insensitive"
msgstr ""
-#: common/models.py:1039
+#: common/models.py:1051
msgid "Show subscribed parts"
msgstr ""
-#: common/models.py:1040
+#: common/models.py:1052
msgid "Show subscribed parts on the homepage"
msgstr ""
-#: common/models.py:1045
+#: common/models.py:1057
msgid "Show subscribed categories"
msgstr ""
-#: common/models.py:1046
+#: common/models.py:1058
msgid "Show subscribed part categories on the homepage"
msgstr ""
-#: common/models.py:1051
+#: common/models.py:1063
msgid "Show latest parts"
msgstr ""
-#: common/models.py:1052
+#: common/models.py:1064
msgid "Show latest parts on the homepage"
msgstr ""
-#: common/models.py:1057
+#: common/models.py:1069
msgid "Recent Part Count"
msgstr ""
-#: common/models.py:1058
+#: common/models.py:1070
msgid "Number of recent parts to display on index page"
msgstr ""
-#: common/models.py:1064
+#: common/models.py:1076
msgid "Show unvalidated BOMs"
msgstr ""
-#: common/models.py:1065
+#: common/models.py:1077
msgid "Show BOMs that await validation on the homepage"
msgstr ""
-#: common/models.py:1070
+#: common/models.py:1082
msgid "Show recent stock changes"
msgstr ""
-#: common/models.py:1071
+#: common/models.py:1083
msgid "Show recently changed stock items on the homepage"
msgstr ""
-#: common/models.py:1076
+#: common/models.py:1088
msgid "Recent Stock Count"
msgstr ""
-#: common/models.py:1077
+#: common/models.py:1089
msgid "Number of recent stock items to display on index page"
msgstr ""
-#: common/models.py:1082
+#: common/models.py:1094
msgid "Show low stock"
msgstr ""
-#: common/models.py:1083
+#: common/models.py:1095
msgid "Show low stock items on the homepage"
msgstr ""
-#: common/models.py:1088
+#: common/models.py:1100
msgid "Show depleted stock"
msgstr ""
-#: common/models.py:1089
+#: common/models.py:1101
msgid "Show depleted stock items on the homepage"
msgstr ""
-#: common/models.py:1094
+#: common/models.py:1106
msgid "Show needed stock"
msgstr ""
-#: common/models.py:1095
+#: common/models.py:1107
msgid "Show stock items needed for builds on the homepage"
msgstr ""
-#: common/models.py:1100
+#: common/models.py:1112
msgid "Show expired stock"
msgstr ""
-#: common/models.py:1101
+#: common/models.py:1113
msgid "Show expired stock items on the homepage"
msgstr ""
-#: common/models.py:1106
+#: common/models.py:1118
msgid "Show stale stock"
msgstr ""
-#: common/models.py:1107
+#: common/models.py:1119
msgid "Show stale stock items on the homepage"
msgstr ""
-#: common/models.py:1112
+#: common/models.py:1124
msgid "Show pending builds"
msgstr ""
-#: common/models.py:1113
+#: common/models.py:1125
msgid "Show pending builds on the homepage"
msgstr ""
-#: common/models.py:1118
+#: common/models.py:1130
msgid "Show overdue builds"
msgstr ""
-#: common/models.py:1119
+#: common/models.py:1131
msgid "Show overdue builds on the homepage"
msgstr ""
-#: common/models.py:1124
+#: common/models.py:1136
msgid "Show outstanding POs"
msgstr ""
-#: common/models.py:1125
+#: common/models.py:1137
msgid "Show outstanding POs on the homepage"
msgstr ""
-#: common/models.py:1130
+#: common/models.py:1142
msgid "Show overdue POs"
msgstr ""
-#: common/models.py:1131
+#: common/models.py:1143
msgid "Show overdue POs on the homepage"
msgstr ""
-#: common/models.py:1136
+#: common/models.py:1148
msgid "Show outstanding SOs"
msgstr ""
-#: common/models.py:1137
+#: common/models.py:1149
msgid "Show outstanding SOs on the homepage"
msgstr ""
-#: common/models.py:1142
+#: common/models.py:1154
msgid "Show overdue SOs"
msgstr ""
-#: common/models.py:1143
+#: common/models.py:1155
msgid "Show overdue SOs on the homepage"
msgstr ""
-#: common/models.py:1149
+#: common/models.py:1161
msgid "Inline label display"
msgstr ""
-#: common/models.py:1150
+#: common/models.py:1162
msgid "Display PDF labels in the browser, instead of downloading as a file"
msgstr ""
-#: common/models.py:1156
+#: common/models.py:1168
msgid "Inline report display"
msgstr ""
-#: common/models.py:1157
+#: common/models.py:1169
msgid "Display PDF reports in the browser, instead of downloading as a file"
msgstr ""
-#: common/models.py:1163
+#: common/models.py:1175
msgid "Search Preview Results"
msgstr ""
-#: common/models.py:1164
+#: common/models.py:1176
msgid "Number of results to show in search preview window"
msgstr ""
-#: common/models.py:1170
+#: common/models.py:1182
msgid "Search Show Stock"
msgstr ""
-#: common/models.py:1171
+#: common/models.py:1183
msgid "Display stock levels in search preview window"
msgstr ""
-#: common/models.py:1177
+#: common/models.py:1189
msgid "Hide Inactive Parts"
msgstr ""
-#: common/models.py:1178
+#: common/models.py:1190
msgid "Hide inactive parts in search preview window"
msgstr ""
-#: common/models.py:1184
+#: common/models.py:1196
msgid "Show Quantity in Forms"
msgstr ""
-#: common/models.py:1185
+#: common/models.py:1197
msgid "Display available part quantity in some forms"
msgstr ""
-#: common/models.py:1191
+#: common/models.py:1203
msgid "Escape Key Closes Forms"
msgstr ""
-#: common/models.py:1192
+#: common/models.py:1204
msgid "Use the escape key to close modal forms"
msgstr ""
-#: common/models.py:1198
+#: common/models.py:1210
msgid "Fixed Navbar"
msgstr ""
-#: common/models.py:1199
+#: common/models.py:1211
msgid "InvenTree navbar position is fixed to the top of the screen"
msgstr ""
-#: common/models.py:1264 company/forms.py:43
+#: common/models.py:1276 company/forms.py:43
msgid "Price break quantity"
msgstr ""
-#: common/models.py:1271 company/serializers.py:264
+#: common/models.py:1283 company/serializers.py:264
#: company/templates/company/supplier_part.html:256
#: templates/js/translated/part.js:915 templates/js/translated/part.js:1867
msgid "Price"
msgstr ""
-#: common/models.py:1272
+#: common/models.py:1284
msgid "Unit price at specified quantity"
msgstr ""
-#: common/models.py:1429 common/models.py:1568
+#: common/models.py:1441 common/models.py:1580
msgid "Endpoint"
msgstr ""
-#: common/models.py:1430
+#: common/models.py:1442
msgid "Endpoint at which this webhook is received"
msgstr ""
-#: common/models.py:1439
+#: common/models.py:1451
msgid "Name for this webhook"
msgstr ""
-#: common/models.py:1444 part/models.py:948 plugin/models.py:46
+#: common/models.py:1456 part/models.py:978 plugin/models.py:46
#: templates/js/translated/table_filters.js:34
#: templates/js/translated/table_filters.js:96
-#: templates/js/translated/table_filters.js:295
-#: templates/js/translated/table_filters.js:417
+#: templates/js/translated/table_filters.js:290
+#: templates/js/translated/table_filters.js:412
msgid "Active"
msgstr ""
-#: common/models.py:1445
+#: common/models.py:1457
msgid "Is this webhook active"
msgstr ""
-#: common/models.py:1459
+#: common/models.py:1471
msgid "Token"
msgstr ""
-#: common/models.py:1460
+#: common/models.py:1472
msgid "Token for access"
msgstr ""
-#: common/models.py:1467
+#: common/models.py:1479
msgid "Secret"
msgstr ""
-#: common/models.py:1468
+#: common/models.py:1480
msgid "Shared secret for HMAC"
msgstr ""
-#: common/models.py:1535
+#: common/models.py:1547
msgid "Message ID"
msgstr ""
-#: common/models.py:1536
+#: common/models.py:1548
msgid "Unique identifier for this message"
msgstr ""
-#: common/models.py:1544
+#: common/models.py:1556
msgid "Host"
msgstr ""
-#: common/models.py:1545
+#: common/models.py:1557
msgid "Host from which this message was received"
msgstr ""
-#: common/models.py:1552
+#: common/models.py:1564
msgid "Header"
msgstr ""
-#: common/models.py:1553
+#: common/models.py:1565
msgid "Header of this message"
msgstr ""
-#: common/models.py:1559
+#: common/models.py:1571
msgid "Body"
msgstr ""
-#: common/models.py:1560
+#: common/models.py:1572
msgid "Body of this message"
msgstr ""
-#: common/models.py:1569
+#: common/models.py:1581
msgid "Endpoint on which this message was received"
msgstr ""
-#: common/models.py:1574
+#: common/models.py:1586
msgid "Worked on"
msgstr ""
-#: common/models.py:1575
+#: common/models.py:1587
msgid "Was the work on this message finished?"
msgstr ""
#: common/views.py:93 order/templates/order/order_wizard/po_upload.html:49
#: order/templates/order/purchase_order_detail.html:24 order/views.py:243
-#: part/templates/part/bom_upload/upload_file.html:52
-#: part/templates/part/import_wizard/part_upload.html:47 part/views.py:213
-#: part/views.py:773
+#: part/templates/part/import_wizard/part_upload.html:47 part/views.py:210
+#: templates/patterns/wizard/upload.html:35
msgid "Upload File"
msgstr ""
-#: common/views.py:94 order/templates/order/order_wizard/match_fields.html:52
-#: order/views.py:244 part/templates/part/bom_upload/match_fields.html:52
+#: common/views.py:94 order/views.py:244
#: part/templates/part/import_wizard/ajax_match_fields.html:45
-#: part/templates/part/import_wizard/match_fields.html:52 part/views.py:214
-#: part/views.py:774
+#: part/templates/part/import_wizard/match_fields.html:52 part/views.py:211
+#: templates/patterns/wizard/match_fields.html:51
msgid "Match Fields"
msgstr ""
@@ -2328,15 +2345,13 @@ msgstr ""
msgid "Parts imported"
msgstr ""
-#: common/views.py:517 order/templates/order/order_wizard/match_fields.html:27
-#: order/templates/order/order_wizard/match_parts.html:19
+#: common/views.py:517 order/templates/order/order_wizard/match_parts.html:19
#: order/templates/order/order_wizard/po_upload.html:47
-#: part/templates/part/bom_upload/match_fields.html:27
-#: part/templates/part/bom_upload/match_parts.html:19
-#: part/templates/part/bom_upload/upload_file.html:50
#: part/templates/part/import_wizard/match_fields.html:27
#: part/templates/part/import_wizard/match_references.html:19
#: part/templates/part/import_wizard/part_upload.html:45
+#: templates/patterns/wizard/match_fields.html:26
+#: templates/patterns/wizard/upload.html:33
msgid "Previous Step"
msgstr ""
@@ -2404,7 +2419,7 @@ msgstr ""
msgid "Link to external company information"
msgstr ""
-#: company/models.py:139 part/models.py:840
+#: company/models.py:139 part/models.py:870
msgid "Image"
msgstr ""
@@ -2442,7 +2457,7 @@ msgid "Default currency used for this company"
msgstr ""
#: company/models.py:320 company/models.py:535 stock/models.py:471
-#: stock/templates/stock/item_base.html:142 templates/js/translated/bom.js:328
+#: stock/templates/stock/item_base.html:144 templates/js/translated/bom.js:541
msgid "Base Part"
msgstr ""
@@ -2453,11 +2468,11 @@ 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:380
+#: stock/templates/stock/item_base.html:382
#: templates/js/translated/company.js:333
#: templates/js/translated/company.js:517
#: templates/js/translated/company.js:800 templates/js/translated/part.js:234
-#: templates/js/translated/table_filters.js:389
+#: templates/js/translated/table_filters.js:384
msgid "Manufacturer"
msgstr ""
@@ -2488,7 +2503,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:390
+#: stock/templates/stock/item_base.html:392
msgid "Manufacturer Part"
msgstr ""
@@ -2499,7 +2514,7 @@ msgstr ""
#: company/models.py:422
#: report/templates/report/inventree_test_report_base.html:95
#: stock/models.py:1988 templates/js/translated/company.js:647
-#: templates/js/translated/part.js:715 templates/js/translated/stock.js:1304
+#: templates/js/translated/part.js:715 templates/js/translated/stock.js:1332
msgid "Value"
msgstr ""
@@ -2507,9 +2522,9 @@ msgstr ""
msgid "Parameter value"
msgstr ""
-#: company/models.py:429 part/models.py:915 part/models.py:2457
+#: company/models.py:429 part/models.py:945 part/models.py:2493
#: part/templates/part/part_base.html:288
-#: templates/InvenTree/settings/settings.html:287
+#: templates/InvenTree/settings/settings.html:324
#: templates/js/translated/company.js:653 templates/js/translated/part.js:721
msgid "Units"
msgstr ""
@@ -2526,11 +2541,11 @@ msgstr ""
#: company/templates/company/supplier_part.html:87 order/models.py:227
#: order/templates/order/order_base.html:112
#: order/templates/order/order_wizard/select_pos.html:30 part/bom.py:237
-#: part/bom.py:265 stock/templates/stock/item_base.html:397
+#: part/bom.py:265 stock/templates/stock/item_base.html:399
#: templates/js/translated/company.js:337
#: templates/js/translated/company.js:774 templates/js/translated/order.js:823
#: templates/js/translated/part.js:215 templates/js/translated/part.js:863
-#: templates/js/translated/table_filters.js:393
+#: templates/js/translated/table_filters.js:388
msgid "Supplier"
msgstr ""
@@ -2561,22 +2576,23 @@ msgid "Supplier part description"
msgstr ""
#: company/models.py:576 company/templates/company/supplier_part.html:119
-#: part/models.py:2648 report/templates/report/inventree_po_report.html:93
-#: report/templates/report/inventree_so_report.html:93
+#: part/models.py:2717 part/templates/part/upload_bom.html:59
+#: report/templates/report/inventree_po_report.html:93
+#: report/templates/report/inventree_so_report.html:93 stock/serializers.py:409
msgid "Note"
msgstr ""
-#: company/models.py:580 part/models.py:1781
+#: company/models.py:580 part/models.py:1817
msgid "base cost"
msgstr ""
-#: company/models.py:580 part/models.py:1781
+#: company/models.py:580 part/models.py:1817
msgid "Minimum charge (e.g. stocking fee)"
msgstr ""
#: company/models.py:582 company/templates/company/supplier_part.html:112
-#: stock/models.py:495 stock/templates/stock/item_base.html:338
-#: templates/js/translated/company.js:850 templates/js/translated/stock.js:1799
+#: stock/models.py:495 stock/templates/stock/item_base.html:340
+#: templates/js/translated/company.js:850 templates/js/translated/stock.js:1923
msgid "Packaging"
msgstr ""
@@ -2584,7 +2600,7 @@ msgstr ""
msgid "Part packaging"
msgstr ""
-#: company/models.py:584 part/models.py:1783
+#: company/models.py:584 part/models.py:1819
msgid "multiple"
msgstr ""
@@ -2645,11 +2661,11 @@ msgstr ""
#: company/templates/company/company_base.html:83 order/models.py:552
#: order/templates/order/sales_order_base.html:115 stock/models.py:514
-#: stock/models.py:515 stock/serializers.py:626
-#: stock/templates/stock/item_base.html:290
+#: stock/models.py:515 stock/serializers.py:683
+#: stock/templates/stock/item_base.html:292
#: templates/js/translated/company.js:329 templates/js/translated/order.js:1240
-#: templates/js/translated/stock.js:2610
-#: templates/js/translated/table_filters.js:397
+#: templates/js/translated/stock.js:2734
+#: templates/js/translated/table_filters.js:392
msgid "Customer"
msgstr ""
@@ -2679,7 +2695,7 @@ msgstr ""
#: company/templates/company/detail.html:20
#: company/templates/company/manufacturer_part.html:118
-#: part/templates/part/detail.html:353
+#: part/templates/part/detail.html:356
msgid "New Supplier Part"
msgstr ""
@@ -2687,8 +2703,8 @@ msgstr ""
#: company/templates/company/detail.html:79
#: company/templates/company/manufacturer_part.html:127
#: company/templates/company/manufacturer_part.html:156
-#: part/templates/part/category.html:171 part/templates/part/detail.html:362
-#: part/templates/part/detail.html:391
+#: part/templates/part/category.html:171 part/templates/part/detail.html:365
+#: part/templates/part/detail.html:394
msgid "Options"
msgstr ""
@@ -2716,7 +2732,7 @@ msgstr ""
msgid "Create new manufacturer part"
msgstr ""
-#: company/templates/company/detail.html:67 part/templates/part/detail.html:381
+#: company/templates/company/detail.html:67 part/templates/part/detail.html:384
msgid "New Manufacturer Part"
msgstr ""
@@ -2730,7 +2746,7 @@ msgstr ""
#: order/templates/order/order_base.html:13
#: order/templates/order/purchase_orders.html:8
#: order/templates/order/purchase_orders.html:12
-#: part/templates/part/detail.html:85 part/templates/part/part_sidebar.html:37
+#: part/templates/part/detail.html:85 part/templates/part/part_sidebar.html:40
#: templates/InvenTree/index.html:252 templates/InvenTree/search.html:197
#: templates/InvenTree/settings/sidebar.html:45 templates/navbar.html:47
#: users/models.py:45
@@ -2752,7 +2768,7 @@ msgstr ""
#: order/templates/order/sales_order_base.html:13
#: order/templates/order/sales_orders.html:8
#: order/templates/order/sales_orders.html:15
-#: part/templates/part/detail.html:108 part/templates/part/part_sidebar.html:41
+#: part/templates/part/detail.html:108 part/templates/part/part_sidebar.html:44
#: templates/InvenTree/index.html:283 templates/InvenTree/search.html:217
#: templates/InvenTree/settings/sidebar.html:47 templates/navbar.html:58
#: users/models.py:46
@@ -2770,7 +2786,7 @@ msgid "New Sales Order"
msgstr ""
#: company/templates/company/detail.html:168
-#: templates/js/translated/build.js:1059
+#: templates/js/translated/build.js:1281
msgid "Assigned Stock"
msgstr ""
@@ -2780,13 +2796,13 @@ msgstr ""
#: company/templates/company/detail.html:384
#: company/templates/company/manufacturer_part.html:215
-#: part/templates/part/detail.html:435
+#: part/templates/part/detail.html:438
msgid "Delete Supplier Parts?"
msgstr ""
#: company/templates/company/detail.html:385
#: company/templates/company/manufacturer_part.html:216
-#: part/templates/part/detail.html:436
+#: part/templates/part/detail.html:439
msgid "All selected supplier parts will be deleted"
msgstr ""
@@ -2824,36 +2840,36 @@ 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:35 part/templates/part/prices.html:163
+#: part/templates/part/part_sidebar.html:38 part/templates/part/prices.html:163
#: templates/InvenTree/search.html:188 templates/navbar.html:45
msgid "Suppliers"
msgstr ""
#: company/templates/company/manufacturer_part.html:129
-#: part/templates/part/detail.html:364
+#: part/templates/part/detail.html:367
msgid "Delete supplier parts"
msgstr ""
#: company/templates/company/manufacturer_part.html:129
#: company/templates/company/manufacturer_part.html:158
#: company/templates/company/manufacturer_part.html:254
-#: part/templates/part/detail.html:364 part/templates/part/detail.html:393
+#: part/templates/part/detail.html:367 part/templates/part/detail.html:396
#: templates/js/translated/company.js:426 templates/js/translated/helpers.js:31
-#: users/models.py:212
+#: users/models.py:217
msgid "Delete"
msgstr ""
#: company/templates/company/manufacturer_part.html:143
#: company/templates/company/manufacturer_part_sidebar.html:5
#: part/templates/part/category_sidebar.html:17
-#: part/templates/part/detail.html:187 part/templates/part/part_sidebar.html:8
+#: part/templates/part/detail.html:190 part/templates/part/part_sidebar.html:9
msgid "Parameters"
msgstr ""
#: company/templates/company/manufacturer_part.html:147
-#: part/templates/part/detail.html:192
+#: part/templates/part/detail.html:195
#: templates/InvenTree/settings/category.html:12
-#: templates/InvenTree/settings/part.html:65
+#: templates/InvenTree/settings/part.html:66
msgid "New Parameter"
msgstr ""
@@ -2862,7 +2878,7 @@ msgid "Delete parameters"
msgstr ""
#: company/templates/company/manufacturer_part.html:191
-#: part/templates/part/detail.html:892
+#: part/templates/part/detail.html:895
msgid "Add Parameter"
msgstr ""
@@ -2892,8 +2908,8 @@ msgstr ""
#: company/templates/company/supplier_part.html:7
#: company/templates/company/supplier_part.html:24 stock/models.py:479
-#: stock/templates/stock/item_base.html:402
-#: templates/js/translated/company.js:790 templates/js/translated/stock.js:1756
+#: stock/templates/stock/item_base.html:404
+#: templates/js/translated/company.js:790 templates/js/translated/stock.js:1880
msgid "Supplier Part"
msgstr ""
@@ -2919,7 +2935,7 @@ msgstr ""
#: company/templates/company/supplier_part.html:142
#: part/templates/part/detail.html:25 stock/templates/stock/location.html:167
-#: templates/js/translated/stock.js:368
+#: templates/js/translated/stock.js:369
msgid "New Stock Item"
msgstr ""
@@ -2940,7 +2956,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:1628
+#: part/templates/part/prices.html:271 part/views.py:1319
msgid "Add Price Break"
msgstr ""
@@ -2948,11 +2964,11 @@ msgstr ""
msgid "No price break information found"
msgstr ""
-#: company/templates/company/supplier_part.html:224 part/views.py:1690
+#: company/templates/company/supplier_part.html:224 part/views.py:1381
msgid "Delete Price Break"
msgstr ""
-#: company/templates/company/supplier_part.html:238 part/views.py:1676
+#: company/templates/company/supplier_part.html:238 part/views.py:1367
msgid "Edit Price Break"
msgstr ""
@@ -2965,15 +2981,15 @@ msgid "Delete price break"
msgstr ""
#: company/templates/company/supplier_part_navbar.html:15
-#: part/templates/part/part_sidebar.html:14
+#: part/templates/part/part_sidebar.html:15
#: 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:150
#: templates/InvenTree/settings/sidebar.html:41
-#: templates/js/translated/bom.js:340 templates/js/translated/part.js:495
+#: templates/js/translated/bom.js:553 templates/js/translated/part.js:495
#: templates/js/translated/part.js:630 templates/js/translated/part.js:1125
-#: templates/js/translated/part.js:1286 templates/js/translated/stock.js:935
-#: templates/js/translated/stock.js:1588 templates/navbar.html:28
+#: templates/js/translated/part.js:1286 templates/js/translated/stock.js:936
+#: templates/js/translated/stock.js:1712 templates/navbar.html:28
msgid "Stock"
msgstr ""
@@ -2987,7 +3003,7 @@ msgid "Supplier Part Pricing"
msgstr ""
#: company/templates/company/supplier_part_navbar.html:29
-#: part/templates/part/part_sidebar.html:28
+#: part/templates/part/part_sidebar.html:30
msgid "Pricing"
msgstr ""
@@ -2996,7 +3012,7 @@ msgstr ""
#: stock/templates/stock/location.html:151
#: stock/templates/stock/location.html:163
#: stock/templates/stock/location_sidebar.html:7
-#: templates/InvenTree/search.html:152 templates/js/translated/stock.js:2509
+#: templates/InvenTree/search.html:152 templates/js/translated/stock.js:2633
#: templates/stats.html:105 templates/stats.html:114 users/models.py:43
msgid "Stock Items"
msgstr ""
@@ -3026,20 +3042,20 @@ msgstr ""
msgid "New Company"
msgstr ""
-#: company/views.py:129 part/views.py:593
+#: company/views.py:129 part/views.py:591
msgid "Download Image"
msgstr ""
-#: company/views.py:158 part/views.py:625
+#: company/views.py:158 part/views.py:623
msgid "Image size exceeds maximum allowable size for download"
msgstr ""
-#: company/views.py:165 part/views.py:632
+#: company/views.py:165 part/views.py:630
#, python-brace-format
msgid "Invalid response: {code}"
msgstr ""
-#: company/views.py:174 part/views.py:641
+#: company/views.py:174 part/views.py:639
msgid "Supplied URL is not a valid image file"
msgstr ""
@@ -3256,16 +3272,16 @@ msgid "Supplier part must match supplier"
msgstr ""
#: order/models.py:855 order/models.py:946 order/models.py:1042
-#: templates/js/translated/order.js:1820 templates/js/translated/stock.js:2271
+#: templates/js/translated/order.js:1820 templates/js/translated/stock.js:2395
msgid "Order"
msgstr ""
#: order/models.py:856 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:352
+#: stock/templates/stock/item_base.html:354
#: templates/js/translated/order.js:801 templates/js/translated/part.js:838
-#: templates/js/translated/stock.js:1733 templates/js/translated/stock.js:2591
+#: templates/js/translated/stock.js:1857 templates/js/translated/stock.js:2715
msgid "Purchase Order"
msgstr ""
@@ -3276,7 +3292,7 @@ msgstr ""
#: order/models.py:884 order/templates/order/order_base.html:163
#: templates/js/translated/order.js:589 templates/js/translated/order.js:1118
#: templates/js/translated/part.js:910 templates/js/translated/part.js:937
-#: templates/js/translated/table_filters.js:317
+#: templates/js/translated/table_filters.js:312
msgid "Received"
msgstr ""
@@ -3285,8 +3301,8 @@ msgid "Number of items received"
msgstr ""
#: order/models.py:892 part/templates/part/prices.html:176 stock/models.py:608
-#: stock/serializers.py:170 stock/templates/stock/item_base.html:359
-#: templates/js/translated/stock.js:1787
+#: stock/serializers.py:170 stock/templates/stock/item_base.html:361
+#: templates/js/translated/stock.js:1911
msgid "Purchase Price"
msgstr ""
@@ -3530,7 +3546,7 @@ msgstr ""
#: order/templates/order/order_base.html:94
#: order/templates/order/sales_order_base.html:89
-#: templates/js/translated/stock.js:2327
+#: templates/js/translated/stock.js:2451
msgid "Order Status"
msgstr ""
@@ -3574,73 +3590,20 @@ msgstr ""
msgid "After placing this purchase order, line items will no longer be editable."
msgstr ""
-#: order/templates/order/order_wizard/match_fields.html:9
-#: part/templates/part/bom_upload/match_fields.html:9
-#: part/templates/part/import_wizard/ajax_match_fields.html:9
-#: part/templates/part/import_wizard/match_fields.html:9
-msgid "Missing selections for the following required columns"
-msgstr ""
-
-#: order/templates/order/order_wizard/match_fields.html:20
-#: part/templates/part/bom_upload/match_fields.html:20
-#: part/templates/part/import_wizard/ajax_match_fields.html:20
-#: part/templates/part/import_wizard/match_fields.html:20
-msgid "Duplicate selections found, see below. Fix them then retry submitting."
-msgstr ""
-
-#: order/templates/order/order_wizard/match_fields.html:29
-#: order/templates/order/order_wizard/match_parts.html:21
-#: part/templates/part/bom_upload/match_fields.html:29
-#: part/templates/part/bom_upload/match_parts.html:21
-#: part/templates/part/import_wizard/match_fields.html:29
-#: part/templates/part/import_wizard/match_references.html:21
-msgid "Submit Selections"
-msgstr ""
-
-#: order/templates/order/order_wizard/match_fields.html:35
-#: part/templates/part/bom_upload/match_fields.html:35
-#: part/templates/part/import_wizard/ajax_match_fields.html:28
-#: part/templates/part/import_wizard/match_fields.html:35
-msgid "File Fields"
-msgstr ""
-
-#: order/templates/order/order_wizard/match_fields.html:42
-#: part/templates/part/bom_upload/match_fields.html:42
-#: part/templates/part/import_wizard/ajax_match_fields.html:35
-#: part/templates/part/import_wizard/match_fields.html:42
-msgid "Remove column"
-msgstr ""
-
-#: order/templates/order/order_wizard/match_fields.html:60
-#: part/templates/part/bom_upload/match_fields.html:60
-#: part/templates/part/import_wizard/ajax_match_fields.html:53
-#: part/templates/part/import_wizard/match_fields.html:60
-msgid "Duplicate selection"
-msgstr ""
-
-#: order/templates/order/order_wizard/match_fields.html:71
-#: order/templates/order/order_wizard/match_parts.html:52
-#: part/templates/part/bom_upload/match_fields.html:71
-#: part/templates/part/bom_upload/match_parts.html:53
-#: part/templates/part/import_wizard/ajax_match_fields.html:64
-#: part/templates/part/import_wizard/ajax_match_references.html:42
-#: part/templates/part/import_wizard/match_fields.html:71
-#: part/templates/part/import_wizard/match_references.html:49
-#: templates/js/translated/build.js:300 templates/js/translated/build.js:1311
-#: templates/js/translated/order.js:537 templates/js/translated/order.js:1488
-#: templates/js/translated/stock.js:601 templates/js/translated/stock.js:769
-msgid "Remove row"
-msgstr ""
-
#: order/templates/order/order_wizard/match_parts.html:12
-#: part/templates/part/bom_upload/match_parts.html:12
#: part/templates/part/import_wizard/ajax_match_references.html:12
#: part/templates/part/import_wizard/match_references.html:12
msgid "Errors exist in the submitted data"
msgstr ""
+#: order/templates/order/order_wizard/match_parts.html:21
+#: part/templates/part/import_wizard/match_fields.html:29
+#: part/templates/part/import_wizard/match_references.html:21
+#: templates/patterns/wizard/match_fields.html:28
+msgid "Submit Selections"
+msgstr ""
+
#: order/templates/order/order_wizard/match_parts.html:28
-#: part/templates/part/bom_upload/match_parts.html:28
#: part/templates/part/import_wizard/ajax_match_references.html:21
#: part/templates/part/import_wizard/match_references.html:28
msgid "Row"
@@ -3650,6 +3613,19 @@ msgstr ""
msgid "Select Supplier Part"
msgstr ""
+#: order/templates/order/order_wizard/match_parts.html:52
+#: part/templates/part/import_wizard/ajax_match_fields.html:64
+#: part/templates/part/import_wizard/ajax_match_references.html:42
+#: part/templates/part/import_wizard/match_fields.html:71
+#: part/templates/part/import_wizard/match_references.html:49
+#: templates/js/translated/bom.js:76 templates/js/translated/build.js:380
+#: templates/js/translated/build.js:528 templates/js/translated/build.js:1547
+#: templates/js/translated/order.js:537 templates/js/translated/order.js:1488
+#: templates/js/translated/stock.js:602 templates/js/translated/stock.js:770
+#: templates/patterns/wizard/match_fields.html:70
+msgid "Remove row"
+msgstr ""
+
#: order/templates/order/order_wizard/po_upload.html:8
msgid "Return to Orders"
msgstr ""
@@ -3659,9 +3635,9 @@ msgid "Upload File for Purchase Order"
msgstr ""
#: order/templates/order/order_wizard/po_upload.html:25
-#: part/templates/part/bom_upload/upload_file.html:21
#: part/templates/part/import_wizard/ajax_part_upload.html:10
#: part/templates/part/import_wizard/part_upload.html:23
+#: templates/patterns/wizard/upload.html:11
#, python-format
msgid "Step %(step)s of %(count)s"
msgstr ""
@@ -3819,7 +3795,7 @@ msgid "Pending Shipments"
msgstr ""
#: order/templates/order/sales_order_detail.html:48
-#: templates/js/translated/bom.js:732 templates/js/translated/build.js:1243
+#: templates/js/translated/bom.js:945 templates/js/translated/build.js:1465
msgid "Actions"
msgstr ""
@@ -3922,7 +3898,7 @@ msgstr ""
msgid "This field is required"
msgstr ""
-#: part/bom.py:125 part/models.py:83 part/models.py:849
+#: part/bom.py:125 part/models.py:83 part/models.py:879
#: part/templates/part/category.html:108 part/templates/part/part_base.html:338
msgid "Default Location"
msgstr ""
@@ -3968,7 +3944,7 @@ msgstr ""
msgid "Default keywords for parts in this category"
msgstr ""
-#: part/models.py:97 part/models.py:2533 part/templates/part/category.html:15
+#: part/models.py:97 part/models.py:2569 part/templates/part/category.html:15
#: part/templates/part/part_app_base.html:10
msgid "Part Category"
msgstr ""
@@ -3994,408 +3970,478 @@ msgstr ""
msgid "Invalid choice for parent part"
msgstr ""
-#: part/models.py:502 part/models.py:514
+#: part/models.py:532 part/models.py:544
#, python-brace-format
msgid "Part '{p1}' is used in BOM for '{p2}' (recursive)"
msgstr ""
-#: part/models.py:644
+#: part/models.py:674
msgid "Next available serial numbers are"
msgstr ""
-#: part/models.py:648
+#: part/models.py:678
msgid "Next available serial number is"
msgstr ""
-#: part/models.py:653
+#: part/models.py:683
msgid "Most recent serial number is"
msgstr ""
-#: part/models.py:748
+#: part/models.py:778
msgid "Duplicate IPN not allowed in part settings"
msgstr ""
-#: part/models.py:773
+#: part/models.py:803 part/models.py:2622
msgid "Part name"
msgstr ""
-#: part/models.py:780
+#: part/models.py:810
msgid "Is Template"
msgstr ""
-#: part/models.py:781
+#: part/models.py:811
msgid "Is this part a template part?"
msgstr ""
-#: part/models.py:791
+#: part/models.py:821
msgid "Is this part a variant of another part?"
msgstr ""
-#: part/models.py:792
+#: part/models.py:822
msgid "Variant Of"
msgstr ""
-#: part/models.py:798
+#: part/models.py:828
msgid "Part description"
msgstr ""
-#: part/models.py:803 part/templates/part/category.html:86
+#: part/models.py:833 part/templates/part/category.html:86
#: part/templates/part/part_base.html:302
msgid "Keywords"
msgstr ""
-#: part/models.py:804
+#: part/models.py:834
msgid "Part keywords to improve visibility in search results"
msgstr ""
-#: part/models.py:811 part/models.py:2283 part/models.py:2532
+#: part/models.py:841 part/models.py:2319 part/models.py:2568
#: part/templates/part/part_base.html:265
#: part/templates/part/set_category.html:15
-#: templates/InvenTree/settings/settings.html:186
+#: templates/InvenTree/settings/settings.html:223
#: templates/js/translated/part.js:1268
msgid "Category"
msgstr ""
-#: part/models.py:812
+#: part/models.py:842
msgid "Part category"
msgstr ""
-#: part/models.py:817 part/templates/part/part_base.html:274
+#: part/models.py:847 part/templates/part/part_base.html:274
#: templates/js/translated/part.js:618 templates/js/translated/part.js:1221
-#: templates/js/translated/stock.js:1560
+#: templates/js/translated/stock.js:1684
msgid "IPN"
msgstr ""
-#: part/models.py:818
+#: part/models.py:848
msgid "Internal Part Number"
msgstr ""
-#: part/models.py:824
+#: part/models.py:854
msgid "Part revision or version number"
msgstr ""
-#: part/models.py:825 part/templates/part/part_base.html:281
+#: part/models.py:855 part/templates/part/part_base.html:281
#: report/models.py:200 templates/js/translated/part.js:622
msgid "Revision"
msgstr ""
-#: part/models.py:847
+#: part/models.py:877
msgid "Where is this item normally stored?"
msgstr ""
-#: part/models.py:894 part/templates/part/part_base.html:347
+#: part/models.py:924 part/templates/part/part_base.html:347
msgid "Default Supplier"
msgstr ""
-#: part/models.py:895
+#: part/models.py:925
msgid "Default supplier part"
msgstr ""
-#: part/models.py:902
+#: part/models.py:932
msgid "Default Expiry"
msgstr ""
-#: part/models.py:903
+#: part/models.py:933
msgid "Expiry time (in days) for stock items of this part"
msgstr ""
-#: part/models.py:908 part/templates/part/part_base.html:196
+#: part/models.py:938 part/templates/part/part_base.html:196
msgid "Minimum Stock"
msgstr ""
-#: part/models.py:909
+#: part/models.py:939
msgid "Minimum allowed stock level"
msgstr ""
-#: part/models.py:916
+#: part/models.py:946
msgid "Stock keeping units for this part"
msgstr ""
-#: part/models.py:922
+#: part/models.py:952
msgid "Can this part be built from other parts?"
msgstr ""
-#: part/models.py:928
+#: part/models.py:958
msgid "Can this part be used to build other parts?"
msgstr ""
-#: part/models.py:934
+#: part/models.py:964
msgid "Does this part have tracking for unique items?"
msgstr ""
-#: part/models.py:939
+#: part/models.py:969
msgid "Can this part be purchased from external suppliers?"
msgstr ""
-#: part/models.py:944
+#: part/models.py:974
msgid "Can this part be sold to customers?"
msgstr ""
-#: part/models.py:949
+#: part/models.py:979
msgid "Is this part active?"
msgstr ""
-#: part/models.py:954
+#: part/models.py:984
msgid "Is this a virtual part, such as a software product or license?"
msgstr ""
-#: part/models.py:959
+#: part/models.py:989
msgid "Part notes - supports Markdown formatting"
msgstr ""
-#: part/models.py:962
+#: part/models.py:992
msgid "BOM checksum"
msgstr ""
-#: part/models.py:962
+#: part/models.py:992
msgid "Stored BOM checksum"
msgstr ""
-#: part/models.py:965
+#: part/models.py:995
msgid "BOM checked by"
msgstr ""
-#: part/models.py:967
+#: part/models.py:997
msgid "BOM checked date"
msgstr ""
-#: part/models.py:971
+#: part/models.py:1001
msgid "Creation User"
msgstr ""
-#: part/models.py:1783
+#: part/models.py:1819
msgid "Sell multiple"
msgstr ""
-#: part/models.py:2333
+#: part/models.py:2369
msgid "Test templates can only be created for trackable parts"
msgstr ""
-#: part/models.py:2350
+#: part/models.py:2386
msgid "Test with this name already exists for this part"
msgstr ""
-#: part/models.py:2370 templates/js/translated/part.js:1714
-#: templates/js/translated/stock.js:1284
+#: part/models.py:2406 templates/js/translated/part.js:1714
+#: templates/js/translated/stock.js:1312
msgid "Test Name"
msgstr ""
-#: part/models.py:2371
+#: part/models.py:2407
msgid "Enter a name for the test"
msgstr ""
-#: part/models.py:2376
+#: part/models.py:2412
msgid "Test Description"
msgstr ""
-#: part/models.py:2377
+#: part/models.py:2413
msgid "Enter description for this test"
msgstr ""
-#: part/models.py:2382 templates/js/translated/part.js:1723
-#: templates/js/translated/table_filters.js:281
+#: part/models.py:2418 templates/js/translated/part.js:1723
+#: templates/js/translated/table_filters.js:276
msgid "Required"
msgstr ""
-#: part/models.py:2383
+#: part/models.py:2419
msgid "Is this test required to pass?"
msgstr ""
-#: part/models.py:2388 templates/js/translated/part.js:1731
+#: part/models.py:2424 templates/js/translated/part.js:1731
msgid "Requires Value"
msgstr ""
-#: part/models.py:2389
+#: part/models.py:2425
msgid "Does this test require a value when adding a test result?"
msgstr ""
-#: part/models.py:2394 templates/js/translated/part.js:1738
+#: part/models.py:2430 templates/js/translated/part.js:1738
msgid "Requires Attachment"
msgstr ""
-#: part/models.py:2395
+#: part/models.py:2431
msgid "Does this test require a file attachment when adding a test result?"
msgstr ""
-#: part/models.py:2406
+#: part/models.py:2442
#, python-brace-format
msgid "Illegal character in template name ({c})"
msgstr ""
-#: part/models.py:2442
+#: part/models.py:2478
msgid "Parameter template name must be unique"
msgstr ""
-#: part/models.py:2450
+#: part/models.py:2486
msgid "Parameter Name"
msgstr ""
-#: part/models.py:2457
+#: part/models.py:2493
msgid "Parameter Units"
msgstr ""
-#: part/models.py:2487
+#: part/models.py:2523
msgid "Parent Part"
msgstr ""
-#: part/models.py:2489 part/models.py:2538 part/models.py:2539
-#: templates/InvenTree/settings/settings.html:181
+#: part/models.py:2525 part/models.py:2574 part/models.py:2575
+#: templates/InvenTree/settings/settings.html:218
msgid "Parameter Template"
msgstr ""
-#: part/models.py:2491
+#: part/models.py:2527
msgid "Data"
msgstr ""
-#: part/models.py:2491
+#: part/models.py:2527
msgid "Parameter Value"
msgstr ""
-#: part/models.py:2543 templates/InvenTree/settings/settings.html:190
+#: part/models.py:2579 templates/InvenTree/settings/settings.html:227
msgid "Default Value"
msgstr ""
-#: part/models.py:2544
+#: part/models.py:2580
msgid "Default Parameter Value"
msgstr ""
+#: part/models.py:2614
+msgid "Part ID or part name"
+msgstr ""
+
+#: part/models.py:2617 templates/js/translated/model_renderers.js:182
+msgid "Part ID"
+msgstr ""
+
+#: part/models.py:2618
+msgid "Unique part ID value"
+msgstr ""
+
#: part/models.py:2621
-msgid "Select parent part"
+msgid "Part Name"
+msgstr ""
+
+#: part/models.py:2625
+msgid "Part IPN"
+msgstr ""
+
+#: part/models.py:2626
+msgid "Part IPN value"
msgstr ""
#: part/models.py:2629
-msgid "Sub part"
+msgid "Level"
msgstr ""
#: part/models.py:2630
+msgid "BOM level"
+msgstr ""
+
+#: part/models.py:2690
+msgid "Select parent part"
+msgstr ""
+
+#: part/models.py:2698
+msgid "Sub part"
+msgstr ""
+
+#: part/models.py:2699
msgid "Select part to be used in BOM"
msgstr ""
-#: part/models.py:2636
+#: part/models.py:2705
msgid "BOM quantity for this BOM item"
msgstr ""
-#: part/models.py:2638 templates/js/translated/bom.js:578
-#: templates/js/translated/bom.js:652
+#: part/models.py:2707 part/templates/part/upload_bom.html:58
+#: templates/js/translated/bom.js:791 templates/js/translated/bom.js:865
#: templates/js/translated/table_filters.js:92
msgid "Optional"
msgstr ""
-#: part/models.py:2638
+#: part/models.py:2707
msgid "This BOM item is optional"
msgstr ""
-#: part/models.py:2641
+#: part/models.py:2710 part/templates/part/upload_bom.html:55
msgid "Overage"
msgstr ""
-#: part/models.py:2642
+#: part/models.py:2711
msgid "Estimated build wastage quantity (absolute or percentage)"
msgstr ""
-#: part/models.py:2645
+#: part/models.py:2714
msgid "BOM item reference"
msgstr ""
-#: part/models.py:2648
+#: part/models.py:2717
msgid "BOM item notes"
msgstr ""
-#: part/models.py:2650
+#: part/models.py:2719
msgid "Checksum"
msgstr ""
-#: part/models.py:2650
+#: part/models.py:2719
msgid "BOM line checksum"
msgstr ""
-#: part/models.py:2654 templates/js/translated/bom.js:669
+#: part/models.py:2723 part/templates/part/upload_bom.html:57
+#: templates/js/translated/bom.js:882
#: templates/js/translated/table_filters.js:68
#: templates/js/translated/table_filters.js:88
msgid "Inherited"
msgstr ""
-#: part/models.py:2655
+#: part/models.py:2724
msgid "This BOM item is inherited by BOMs for variant parts"
msgstr ""
-#: part/models.py:2660 templates/js/translated/bom.js:661
+#: part/models.py:2729 part/templates/part/upload_bom.html:56
+#: templates/js/translated/bom.js:874
msgid "Allow Variants"
msgstr ""
-#: part/models.py:2661
+#: part/models.py:2730
msgid "Stock items for variant parts can be used for this BOM item"
msgstr ""
-#: part/models.py:2746 stock/models.py:357
+#: part/models.py:2815 stock/models.py:357
msgid "Quantity must be integer value for trackable parts"
msgstr ""
-#: part/models.py:2755 part/models.py:2757
+#: part/models.py:2824 part/models.py:2826
msgid "Sub part must be specified"
msgstr ""
-#: part/models.py:2886
+#: part/models.py:2955
msgid "BOM Item Substitute"
msgstr ""
-#: part/models.py:2908
+#: part/models.py:2977
msgid "Substitute part cannot be the same as the master part"
msgstr ""
-#: part/models.py:2920
+#: part/models.py:2989
msgid "Parent BOM item"
msgstr ""
-#: part/models.py:2928
+#: part/models.py:2997
msgid "Substitute part"
msgstr ""
-#: part/models.py:2939
+#: part/models.py:3008
msgid "Part 1"
msgstr ""
-#: part/models.py:2943
+#: part/models.py:3012
msgid "Part 2"
msgstr ""
-#: part/models.py:2943
+#: part/models.py:3012
msgid "Select Related Part"
msgstr ""
-#: part/models.py:2975
+#: part/models.py:3044
msgid "Error creating relationship: check that the part is not related to itself and that the relationship is unique"
msgstr ""
-#: part/serializers.py:659
+#: part/serializers.py:667
msgid "Select part to copy BOM from"
msgstr ""
-#: part/serializers.py:670
+#: part/serializers.py:678
msgid "Remove Existing Data"
msgstr ""
-#: part/serializers.py:671
+#: part/serializers.py:679
msgid "Remove existing BOM items before copying"
msgstr ""
-#: part/serializers.py:676
+#: part/serializers.py:684
msgid "Include Inherited"
msgstr ""
-#: part/serializers.py:677
+#: part/serializers.py:685
msgid "Include BOM items which are inherited from templated parts"
msgstr ""
-#: part/serializers.py:682
+#: part/serializers.py:690
msgid "Skip Invalid Rows"
msgstr ""
-#: part/serializers.py:683
+#: part/serializers.py:691
msgid "Enable this option to skip invalid rows"
msgstr ""
-#: part/tasks.py:53
+#: part/serializers.py:734
+msgid "Clear Existing BOM"
+msgstr ""
+
+#: part/serializers.py:735
+msgid "Delete existing BOM items before uploading"
+msgstr ""
+
+#: part/serializers.py:762
+msgid "No part column specified"
+msgstr ""
+
+#: part/serializers.py:806
+msgid "Multiple matching parts found"
+msgstr ""
+
+#: part/serializers.py:809
+msgid "No matching part found"
+msgstr ""
+
+#: part/serializers.py:812
+msgid "Part is not designated as a component"
+msgstr ""
+
+#: part/serializers.py:821
+msgid "Quantity not provided"
+msgstr ""
+
+#: part/serializers.py:829
+msgid "Invalid quantity"
+msgstr ""
+
+#: part/serializers.py:848
+msgid "At least one BOM item is required"
+msgstr ""
+
+#: part/tasks.py:58
msgid "Low stock notification"
msgstr ""
@@ -4418,7 +4464,7 @@ msgstr ""
msgid "The BOM for %(part)s has not been validated."
msgstr ""
-#: part/templates/part/bom.html:30 part/templates/part/detail.html:270
+#: part/templates/part/bom.html:30 part/templates/part/detail.html:273
msgid "BOM actions"
msgstr ""
@@ -4426,34 +4472,6 @@ msgstr ""
msgid "Delete Items"
msgstr ""
-#: part/templates/part/bom_upload/match_parts.html:29
-msgid "Select Part"
-msgstr ""
-
-#: part/templates/part/bom_upload/upload_file.html:8
-msgid "Return to BOM"
-msgstr ""
-
-#: part/templates/part/bom_upload/upload_file.html:13
-msgid "Upload Bill of Materials"
-msgstr ""
-
-#: part/templates/part/bom_upload/upload_file.html:33
-msgid "Requirements for BOM upload"
-msgstr ""
-
-#: part/templates/part/bom_upload/upload_file.html:35
-msgid "The BOM file must contain the required named columns as provided in the "
-msgstr ""
-
-#: part/templates/part/bom_upload/upload_file.html:35
-msgid "BOM Upload Template"
-msgstr ""
-
-#: part/templates/part/bom_upload/upload_file.html:36
-msgid "Each part must already exist in the database"
-msgstr ""
-
#: part/templates/part/category.html:28 part/templates/part/category.html:32
msgid "You are subscribed to notifications for this category"
msgstr ""
@@ -4519,7 +4537,7 @@ msgstr ""
msgid "Create new part"
msgstr ""
-#: part/templates/part/category.html:161 templates/js/translated/bom.js:152
+#: part/templates/part/category.html:161 templates/js/translated/bom.js:365
msgid "New Part"
msgstr ""
@@ -4639,138 +4657,168 @@ msgstr ""
msgid "Sales Order Allocations"
msgstr ""
-#: part/templates/part/detail.html:159
+#: part/templates/part/detail.html:162
msgid "Part Variants"
msgstr ""
-#: part/templates/part/detail.html:163
+#: part/templates/part/detail.html:166
msgid "Create new variant"
msgstr ""
-#: part/templates/part/detail.html:164
+#: part/templates/part/detail.html:167
msgid "New Variant"
msgstr ""
-#: part/templates/part/detail.html:191
+#: part/templates/part/detail.html:194
msgid "Add new parameter"
msgstr ""
-#: part/templates/part/detail.html:228 part/templates/part/part_sidebar.html:49
+#: part/templates/part/detail.html:231 part/templates/part/part_sidebar.html:52
msgid "Related Parts"
msgstr ""
-#: part/templates/part/detail.html:232 part/templates/part/detail.html:233
+#: part/templates/part/detail.html:235 part/templates/part/detail.html:236
msgid "Add Related"
msgstr ""
-#: part/templates/part/detail.html:253 part/templates/part/part_sidebar.html:17
+#: part/templates/part/detail.html:256 part/templates/part/part_sidebar.html:18
msgid "Bill of Materials"
msgstr ""
-#: part/templates/part/detail.html:258
+#: part/templates/part/detail.html:261
msgid "Export actions"
msgstr ""
-#: part/templates/part/detail.html:262 templates/js/translated/bom.js:70
+#: part/templates/part/detail.html:265 templates/js/translated/bom.js:283
msgid "Export BOM"
msgstr ""
-#: part/templates/part/detail.html:264
+#: part/templates/part/detail.html:267
msgid "Print BOM Report"
msgstr ""
-#: part/templates/part/detail.html:274
+#: part/templates/part/detail.html:277
msgid "Upload BOM"
msgstr ""
-#: part/templates/part/detail.html:276 templates/js/translated/part.js:272
+#: part/templates/part/detail.html:279 templates/js/translated/part.js:272
msgid "Copy BOM"
msgstr ""
-#: part/templates/part/detail.html:278
+#: part/templates/part/detail.html:281
msgid "Validate BOM"
msgstr ""
-#: part/templates/part/detail.html:283
+#: part/templates/part/detail.html:286
msgid "New BOM Item"
msgstr ""
-#: part/templates/part/detail.html:284
+#: part/templates/part/detail.html:287
msgid "Add BOM Item"
msgstr ""
-#: part/templates/part/detail.html:297
+#: part/templates/part/detail.html:300
msgid "Assemblies"
msgstr ""
-#: part/templates/part/detail.html:314
+#: part/templates/part/detail.html:317
msgid "Part Builds"
msgstr ""
-#: part/templates/part/detail.html:339
+#: part/templates/part/detail.html:342
msgid "Build Order Allocations"
msgstr ""
-#: part/templates/part/detail.html:349
+#: part/templates/part/detail.html:352
msgid "Part Suppliers"
msgstr ""
-#: part/templates/part/detail.html:377
+#: part/templates/part/detail.html:380
msgid "Part Manufacturers"
msgstr ""
-#: part/templates/part/detail.html:393
+#: part/templates/part/detail.html:396
msgid "Delete manufacturer parts"
msgstr ""
-#: part/templates/part/detail.html:575
+#: part/templates/part/detail.html:578
msgid "Delete selected BOM items?"
msgstr ""
-#: part/templates/part/detail.html:576
+#: part/templates/part/detail.html:579
msgid "All selected BOM items will be deleted"
msgstr ""
-#: part/templates/part/detail.html:625
+#: part/templates/part/detail.html:628
msgid "Create BOM Item"
msgstr ""
-#: part/templates/part/detail.html:682
+#: part/templates/part/detail.html:685
msgid "Related Part"
msgstr ""
-#: part/templates/part/detail.html:690
+#: part/templates/part/detail.html:693
msgid "Add Related Part"
msgstr ""
-#: part/templates/part/detail.html:785
+#: part/templates/part/detail.html:788
msgid "Add Test Result Template"
msgstr ""
-#: part/templates/part/detail.html:842
+#: part/templates/part/detail.html:845
msgid "Edit Part Notes"
msgstr ""
-#: part/templates/part/detail.html:955
+#: part/templates/part/detail.html:958
#, python-format
msgid "Purchase Unit Price - %(currency)s"
msgstr ""
-#: part/templates/part/detail.html:967
+#: part/templates/part/detail.html:970
#, python-format
msgid "Unit Price-Cost Difference - %(currency)s"
msgstr ""
-#: part/templates/part/detail.html:979
+#: part/templates/part/detail.html:982
#, python-format
msgid "Supplier Unit Cost - %(currency)s"
msgstr ""
-#: part/templates/part/detail.html:1068
+#: part/templates/part/detail.html:1071
#, python-format
msgid "Unit Price - %(currency)s"
msgstr ""
+#: part/templates/part/import_wizard/ajax_match_fields.html:9
+#: part/templates/part/import_wizard/match_fields.html:9
+#: templates/patterns/wizard/match_fields.html:8
+msgid "Missing selections for the following required columns"
+msgstr ""
+
+#: part/templates/part/import_wizard/ajax_match_fields.html:20
+#: part/templates/part/import_wizard/match_fields.html:20
+#: templates/patterns/wizard/match_fields.html:19
+msgid "Duplicate selections found, see below. Fix them then retry submitting."
+msgstr ""
+
+#: part/templates/part/import_wizard/ajax_match_fields.html:28
+#: part/templates/part/import_wizard/match_fields.html:35
+#: templates/patterns/wizard/match_fields.html:34
+msgid "File Fields"
+msgstr ""
+
+#: part/templates/part/import_wizard/ajax_match_fields.html:35
+#: part/templates/part/import_wizard/match_fields.html:42
+#: templates/patterns/wizard/match_fields.html:41
+msgid "Remove column"
+msgstr ""
+
+#: part/templates/part/import_wizard/ajax_match_fields.html:53
+#: part/templates/part/import_wizard/match_fields.html:60
+#: templates/patterns/wizard/match_fields.html:59
+msgid "Duplicate selection"
+msgstr ""
+
#: part/templates/part/import_wizard/ajax_part_upload.html:29
#: part/templates/part/import_wizard/part_upload.html:53
msgid "Unsuffitient privileges."
@@ -4819,7 +4867,7 @@ msgid "Show pricing information"
msgstr ""
#: part/templates/part/part_base.html:56
-#: stock/templates/stock/item_base.html:110
+#: stock/templates/stock/item_base.html:112
#: stock/templates/stock/location.html:44
msgid "Stock actions"
msgstr ""
@@ -4912,7 +4960,7 @@ msgstr ""
msgid "Allocated to Orders"
msgstr ""
-#: part/templates/part/part_base.html:239 templates/js/translated/bom.js:690
+#: part/templates/part/part_base.html:239 templates/js/translated/bom.js:903
msgid "Can Build"
msgstr ""
@@ -4930,7 +4978,7 @@ msgid "Latest Serial Number"
msgstr ""
#: part/templates/part/part_base.html:328
-#: stock/templates/stock/item_base.html:166
+#: stock/templates/stock/item_base.html:168
msgid "Search for serial number"
msgstr ""
@@ -4969,7 +5017,7 @@ msgid "Total Cost"
msgstr ""
#: part/templates/part/part_pricing.html:40 part/templates/part/prices.html:40
-#: templates/js/translated/bom.js:644
+#: templates/js/translated/bom.js:857
msgid "No supplier pricing available"
msgstr ""
@@ -5003,20 +5051,20 @@ msgstr ""
msgid "No pricing information is available for this part."
msgstr ""
-#: part/templates/part/part_sidebar.html:11
+#: part/templates/part/part_sidebar.html:12
msgid "Variants"
msgstr ""
-#: part/templates/part/part_sidebar.html:25
+#: part/templates/part/part_sidebar.html:26
msgid "Used In"
msgstr ""
-#: part/templates/part/part_sidebar.html:31
+#: part/templates/part/part_sidebar.html:34
#: stock/templates/stock/stock_sidebar.html:8
msgid "Allocations"
msgstr ""
-#: part/templates/part/part_sidebar.html:45
+#: part/templates/part/part_sidebar.html:48
msgid "Test Templates"
msgstr ""
@@ -5089,7 +5137,7 @@ msgstr ""
msgid "Calculation parameters"
msgstr ""
-#: part/templates/part/prices.html:155 templates/js/translated/bom.js:638
+#: part/templates/part/prices.html:155 templates/js/translated/bom.js:851
msgid "Supplier Cost"
msgstr ""
@@ -5111,7 +5159,7 @@ msgstr ""
msgid "Internal Cost"
msgstr ""
-#: part/templates/part/prices.html:215 part/views.py:1699
+#: part/templates/part/prices.html:215 part/views.py:1390
msgid "Add Internal Price Break"
msgstr ""
@@ -5131,7 +5179,7 @@ msgstr ""
msgid "Set category for the following parts"
msgstr ""
-#: part/templates/part/stock_count.html:7 templates/js/translated/bom.js:600
+#: part/templates/part/stock_count.html:7 templates/js/translated/bom.js:813
#: templates/js/translated/part.js:497 templates/js/translated/part.js:1122
#: templates/js/translated/part.js:1309
msgid "No Stock"
@@ -5141,6 +5189,43 @@ msgstr ""
msgid "Low Stock"
msgstr ""
+#: part/templates/part/upload_bom.html:8
+msgid "Return to BOM"
+msgstr ""
+
+#: part/templates/part/upload_bom.html:13
+msgid "Upload Bill of Materials"
+msgstr ""
+
+#: part/templates/part/upload_bom.html:19
+msgid "BOM upload requirements"
+msgstr ""
+
+#: part/templates/part/upload_bom.html:23
+#: part/templates/part/upload_bom.html:90
+msgid "Upload BOM File"
+msgstr ""
+
+#: part/templates/part/upload_bom.html:29
+msgid "Submit BOM Data"
+msgstr ""
+
+#: part/templates/part/upload_bom.html:37
+msgid "Requirements for BOM upload"
+msgstr ""
+
+#: part/templates/part/upload_bom.html:39
+msgid "The BOM file must contain the required named columns as provided in the "
+msgstr ""
+
+#: part/templates/part/upload_bom.html:39
+msgid "BOM Upload Template"
+msgstr ""
+
+#: part/templates/part/upload_bom.html:40
+msgid "Each part must already exist in the database"
+msgstr ""
+
#: part/templates/part/variant_part.html:9
msgid "Create new part variant"
msgstr ""
@@ -5154,104 +5239,96 @@ msgstr ""
msgid "Unknown database"
msgstr ""
-#: part/views.py:93
+#: part/views.py:90
msgid "Set Part Category"
msgstr ""
-#: part/views.py:143
+#: part/views.py:140
#, python-brace-format
msgid "Set category for {n} parts"
msgstr ""
-#: part/views.py:215
+#: part/views.py:212
msgid "Match References"
msgstr ""
-#: part/views.py:511
+#: part/views.py:509
msgid "None"
msgstr ""
-#: part/views.py:570
+#: part/views.py:568
msgid "Part QR Code"
msgstr ""
-#: part/views.py:672
+#: part/views.py:670
msgid "Select Part Image"
msgstr ""
-#: part/views.py:698
+#: part/views.py:696
msgid "Updated part image"
msgstr ""
-#: part/views.py:701
+#: part/views.py:699
msgid "Part image not found"
msgstr ""
-#: part/views.py:775
-msgid "Match Parts"
-msgstr ""
-
-#: part/views.py:1110
-msgid "Export Bill of Materials"
-msgstr ""
-
-#: part/views.py:1159
+#: part/views.py:850
msgid "Confirm Part Deletion"
msgstr ""
-#: part/views.py:1166
+#: part/views.py:857
msgid "Part was deleted"
msgstr ""
-#: part/views.py:1175
+#: part/views.py:866
msgid "Part Pricing"
msgstr ""
-#: part/views.py:1324
+#: part/views.py:1015
msgid "Create Part Parameter Template"
msgstr ""
-#: part/views.py:1334
+#: part/views.py:1025
msgid "Edit Part Parameter Template"
msgstr ""
-#: part/views.py:1341
+#: part/views.py:1032
msgid "Delete Part Parameter Template"
msgstr ""
-#: part/views.py:1400 templates/js/translated/part.js:315
+#: part/views.py:1091 templates/js/translated/part.js:315
msgid "Edit Part Category"
msgstr ""
-#: part/views.py:1438
+#: part/views.py:1129
msgid "Delete Part Category"
msgstr ""
-#: part/views.py:1444
+#: part/views.py:1135
msgid "Part category was deleted"
msgstr ""
-#: part/views.py:1453
+#: part/views.py:1144
msgid "Create Category Parameter Template"
msgstr ""
-#: part/views.py:1554
+#: part/views.py:1245
msgid "Edit Category Parameter Template"
msgstr ""
-#: part/views.py:1610
+#: part/views.py:1301
msgid "Delete Category Parameter Template"
msgstr ""
-#: part/views.py:1632
+#: part/views.py:1323
msgid "Added new price break"
msgstr ""
-#: part/views.py:1708
+#: part/views.py:1399
msgid "Edit Internal Price Break"
msgstr ""
-#: part/views.py:1716
+#: part/views.py:1407
msgid "Delete Internal Price Break"
msgstr ""
@@ -5453,12 +5530,12 @@ msgid "Stock Item Test Report"
msgstr ""
#: report/templates/report/inventree_test_report_base.html:79
-#: stock/models.py:519 stock/templates/stock/item_base.html:156
-#: templates/js/translated/build.js:293 templates/js/translated/build.js:697
-#: templates/js/translated/build.js:1073
+#: stock/models.py:519 stock/templates/stock/item_base.html:158
+#: templates/js/translated/build.js:373 templates/js/translated/build.js:521
+#: templates/js/translated/build.js:919 templates/js/translated/build.js:1295
#: 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:423
+#: templates/js/translated/order.js:2034 templates/js/translated/stock.js:424
msgid "Serial Number"
msgstr ""
@@ -5479,7 +5556,7 @@ msgstr ""
#: report/templates/report/inventree_test_report_base.html:97
#: templates/InvenTree/settings/plugin.html:50
#: templates/InvenTree/settings/plugin_settings.html:38
-#: templates/js/translated/order.js:849 templates/js/translated/stock.js:2525
+#: templates/js/translated/order.js:849 templates/js/translated/stock.js:2649
msgid "Date"
msgstr ""
@@ -5497,71 +5574,67 @@ msgid "Installed Items"
msgstr ""
#: report/templates/report/inventree_test_report_base.html:137
-#: templates/js/translated/stock.js:586 templates/js/translated/stock.js:756
-#: templates/js/translated/stock.js:2785
+#: templates/js/translated/stock.js:587 templates/js/translated/stock.js:757
+#: templates/js/translated/stock.js:2909
msgid "Serial"
msgstr ""
-#: stock/api.py:476
+#: stock/api.py:501
msgid "Quantity is required"
msgstr ""
-#: stock/api.py:483
+#: stock/api.py:508
msgid "Valid part must be supplied"
msgstr ""
-#: stock/forms.py:77 stock/forms.py:251 stock/models.py:576
-#: stock/templates/stock/item_base.html:193
-#: templates/js/translated/stock.js:1709
+#: stock/api.py:535
+msgid "Serial numbers cannot be supplied for a non-trackable part"
+msgstr ""
+
+#: stock/forms.py:74 stock/forms.py:198 stock/models.py:576
+#: stock/templates/stock/item_base.html:195
+#: templates/js/translated/stock.js:1833
msgid "Expiry Date"
msgstr ""
-#: stock/forms.py:78 stock/forms.py:252
+#: stock/forms.py:75 stock/forms.py:199
msgid "Expiration date for this stock item"
msgstr ""
-#: stock/forms.py:81
+#: stock/forms.py:78
msgid "Enter unique serial numbers (or leave blank)"
msgstr ""
-#: stock/forms.py:136
+#: stock/forms.py:133
msgid "Destination for serialized stock (by default, will remain in current location)"
msgstr ""
-#: stock/forms.py:138
+#: stock/forms.py:135
msgid "Serial numbers"
msgstr ""
-#: stock/forms.py:138
+#: stock/forms.py:135
msgid "Unique serial numbers (must match quantity)"
msgstr ""
-#: stock/forms.py:140 stock/forms.py:224
+#: stock/forms.py:137 stock/forms.py:171
msgid "Add transaction note (optional)"
msgstr ""
-#: stock/forms.py:180
-msgid "Stock item to install"
-msgstr ""
-
-#: stock/forms.py:210
-msgid "Must not exceed available quantity"
-msgstr ""
-
-#: stock/forms.py:222
+#: stock/forms.py:169
msgid "Destination location for uninstalled items"
msgstr ""
-#: stock/forms.py:226
+#: stock/forms.py:173
msgid "Confirm uninstall"
msgstr ""
-#: stock/forms.py:226
+#: stock/forms.py:173
msgid "Confirm removal of installed stock items"
msgstr ""
#: stock/models.py:62 stock/models.py:613
-#: stock/templates/stock/item_base.html:416
+#: stock/templates/stock/item_base.html:418
msgid "Owner"
msgstr ""
@@ -5623,7 +5696,7 @@ msgstr ""
msgid "Packaging this stock item is stored in"
msgstr ""
-#: stock/models.py:502 stock/templates/stock/item_base.html:298
+#: stock/models.py:502 stock/templates/stock/item_base.html:300
msgid "Installed In"
msgstr ""
@@ -5733,7 +5806,7 @@ msgstr ""
msgid "Serialized stock cannot be merged"
msgstr ""
-#: stock/models.py:1214 stock/serializers.py:775
+#: stock/models.py:1214 stock/serializers.py:832
msgid "Duplicate stock items"
msgstr ""
@@ -5769,7 +5842,7 @@ msgstr ""
msgid "Test name"
msgstr ""
-#: stock/models.py:1983 templates/js/translated/table_filters.js:271
+#: stock/models.py:1983
msgid "Test result"
msgstr ""
@@ -5806,7 +5879,7 @@ msgstr ""
msgid "Enter serial numbers for new items"
msgstr ""
-#: stock/serializers.py:326 stock/serializers.py:732 stock/serializers.py:973
+#: stock/serializers.py:326 stock/serializers.py:789 stock/serializers.py:1030
msgid "Destination stock location"
msgstr ""
@@ -5818,63 +5891,79 @@ msgstr ""
msgid "Serial numbers cannot be assigned to this part"
msgstr ""
-#: stock/serializers.py:589
+#: stock/serializers.py:363 stock/views.py:1108
+msgid "Serial numbers already exist"
+msgstr ""
+
+#: stock/serializers.py:405
+msgid "Select stock item to install"
+msgstr ""
+
+#: stock/serializers.py:421
+msgid "Stock item is unavailable"
+msgstr ""
+
+#: stock/serializers.py:428
+msgid "Selected part is not in the Bill of Materials"
+msgstr ""
+
+#: stock/serializers.py:646
msgid "Part must be salable"
msgstr ""
-#: stock/serializers.py:593
+#: stock/serializers.py:650
msgid "Item is allocated to a sales order"
msgstr ""
-#: stock/serializers.py:597
+#: stock/serializers.py:654
msgid "Item is allocated to a build order"
msgstr ""
-#: stock/serializers.py:627
+#: stock/serializers.py:684
msgid "Customer to assign stock items"
msgstr ""
-#: stock/serializers.py:633
+#: stock/serializers.py:690
msgid "Selected company is not a customer"
msgstr ""
-#: stock/serializers.py:641
+#: stock/serializers.py:698
msgid "Stock assignment notes"
msgstr ""
-#: stock/serializers.py:651 stock/serializers.py:881
+#: stock/serializers.py:708 stock/serializers.py:938
msgid "A list of stock items must be provided"
msgstr ""
-#: stock/serializers.py:739
+#: stock/serializers.py:796
msgid "Stock merging notes"
msgstr ""
-#: stock/serializers.py:744
+#: stock/serializers.py:801
msgid "Allow mismatched suppliers"
msgstr ""
-#: stock/serializers.py:745
+#: stock/serializers.py:802
msgid "Allow stock items with different supplier parts to be merged"
msgstr ""
-#: stock/serializers.py:750
+#: stock/serializers.py:807
msgid "Allow mismatched status"
msgstr ""
-#: stock/serializers.py:751
+#: stock/serializers.py:808
msgid "Allow stock items with different status codes to be merged"
msgstr ""
-#: stock/serializers.py:761
+#: stock/serializers.py:818
msgid "At least two stock items must be provided"
msgstr ""
-#: stock/serializers.py:843
+#: stock/serializers.py:900
msgid "StockItem primary key value"
msgstr ""
-#: stock/serializers.py:871
+#: stock/serializers.py:928
msgid "Stock transaction notes"
msgstr ""
@@ -5919,22 +6008,14 @@ msgstr ""
msgid "Installed Stock Items"
msgstr ""
-#: stock/templates/stock/item.html:154 stock/views.py:482
+#: stock/templates/stock/item.html:154 templates/js/translated/stock.js:3018
msgid "Install Stock Item"
msgstr ""
-#: stock/templates/stock/item.html:309 stock/templates/stock/item.html:334
+#: stock/templates/stock/item.html:304 templates/js/translated/stock.js:1480
msgid "Add Test Result"
msgstr ""
-#: stock/templates/stock/item.html:354
-msgid "Edit Test Result"
-msgstr ""
-
-#: stock/templates/stock/item.html:368
-msgid "Delete Test Result"
-msgstr ""
-
#: stock/templates/stock/item_base.html:42
#: templates/js/translated/barcode.js:330
#: templates/js/translated/barcode.js:335
@@ -5995,129 +6076,129 @@ msgstr ""
msgid "Uninstall"
msgstr ""
-#: stock/templates/stock/item_base.html:101
+#: stock/templates/stock/item_base.html:102
msgid "Install stock item"
msgstr ""
-#: stock/templates/stock/item_base.html:101
+#: stock/templates/stock/item_base.html:102
msgid "Install"
msgstr ""
-#: stock/templates/stock/item_base.html:115
+#: stock/templates/stock/item_base.html:117
msgid "Convert to variant"
msgstr ""
-#: stock/templates/stock/item_base.html:118
+#: stock/templates/stock/item_base.html:120
msgid "Duplicate stock item"
msgstr ""
-#: stock/templates/stock/item_base.html:120
+#: stock/templates/stock/item_base.html:122
msgid "Edit stock item"
msgstr ""
-#: stock/templates/stock/item_base.html:123
+#: stock/templates/stock/item_base.html:125
msgid "Delete stock item"
msgstr ""
-#: stock/templates/stock/item_base.html:161
+#: stock/templates/stock/item_base.html:163
msgid "previous page"
msgstr ""
-#: stock/templates/stock/item_base.html:161
+#: stock/templates/stock/item_base.html:163
msgid "Navigate to previous serial number"
msgstr ""
-#: stock/templates/stock/item_base.html:170
+#: stock/templates/stock/item_base.html:172
msgid "next page"
msgstr ""
-#: stock/templates/stock/item_base.html:170
+#: stock/templates/stock/item_base.html:172
msgid "Navigate to next serial number"
msgstr ""
-#: stock/templates/stock/item_base.html:197
+#: stock/templates/stock/item_base.html:199
#, python-format
msgid "This StockItem expired on %(item.expiry_date)s"
msgstr ""
-#: stock/templates/stock/item_base.html:197
+#: stock/templates/stock/item_base.html:199
#: templates/js/translated/table_filters.js:252
msgid "Expired"
msgstr ""
-#: stock/templates/stock/item_base.html:199
+#: stock/templates/stock/item_base.html:201
#, python-format
msgid "This StockItem expires on %(item.expiry_date)s"
msgstr ""
-#: stock/templates/stock/item_base.html:199
+#: stock/templates/stock/item_base.html:201
#: templates/js/translated/table_filters.js:258
msgid "Stale"
msgstr ""
-#: stock/templates/stock/item_base.html:206
-#: templates/js/translated/stock.js:1722
+#: stock/templates/stock/item_base.html:208
+#: templates/js/translated/stock.js:1846
msgid "Last Updated"
msgstr ""
-#: stock/templates/stock/item_base.html:211
+#: stock/templates/stock/item_base.html:213
msgid "Last Stocktake"
msgstr ""
-#: stock/templates/stock/item_base.html:215
+#: stock/templates/stock/item_base.html:217
msgid "No stocktake performed"
msgstr ""
-#: stock/templates/stock/item_base.html:233
+#: stock/templates/stock/item_base.html:235
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:240
+#: stock/templates/stock/item_base.html:242
msgid "This stock item is in production and cannot be edited."
msgstr ""
-#: stock/templates/stock/item_base.html:241
+#: stock/templates/stock/item_base.html:243
msgid "Edit the stock item from the build view."
msgstr ""
-#: stock/templates/stock/item_base.html:254
+#: stock/templates/stock/item_base.html:256
msgid "This stock item has not passed all required tests"
msgstr ""
-#: stock/templates/stock/item_base.html:262
+#: stock/templates/stock/item_base.html:264
msgid "This stock item is allocated to Sales Order"
msgstr ""
-#: stock/templates/stock/item_base.html:270
+#: stock/templates/stock/item_base.html:272
msgid "This stock item is allocated to Build Order"
msgstr ""
-#: stock/templates/stock/item_base.html:276
+#: stock/templates/stock/item_base.html:278
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:317
-#: templates/js/translated/build.js:1095
+#: stock/templates/stock/item_base.html:319
+#: templates/js/translated/build.js:1317
msgid "No location set"
msgstr ""
-#: stock/templates/stock/item_base.html:324
+#: stock/templates/stock/item_base.html:326
msgid "Barcode Identifier"
msgstr ""
-#: stock/templates/stock/item_base.html:366
+#: stock/templates/stock/item_base.html:368
msgid "Parent Item"
msgstr ""
-#: stock/templates/stock/item_base.html:384
+#: stock/templates/stock/item_base.html:386
msgid "No manufacturer set"
msgstr ""
-#: stock/templates/stock/item_base.html:409
+#: stock/templates/stock/item_base.html:411
msgid "Tests"
msgstr ""
-#: stock/templates/stock/item_base.html:499
+#: stock/templates/stock/item_base.html:492
msgid "Edit Stock Status"
msgstr ""
@@ -6130,39 +6211,6 @@ msgstr ""
msgid "This will remove %(qty)s units of %(full_name)s from stock."
msgstr ""
-#: stock/templates/stock/item_install.html:8
-msgid "Install another Stock Item into this item."
-msgstr ""
-
-#: stock/templates/stock/item_install.html:11
-#: stock/templates/stock/item_install.html:24
-msgid "Stock items can only be installed if they meet the following criteria"
-msgstr ""
-
-#: stock/templates/stock/item_install.html:14
-msgid "The Stock Item links to a Part which is in the BOM for this Stock Item"
-msgstr ""
-
-#: stock/templates/stock/item_install.html:15
-msgid "The Stock Item is currently in stock"
-msgstr ""
-
-#: stock/templates/stock/item_install.html:16
-msgid "The Stock Item is serialized and does not belong to another item"
-msgstr ""
-
-#: stock/templates/stock/item_install.html:21
-msgid "Install this Stock Item in another stock item."
-msgstr ""
-
-#: stock/templates/stock/item_install.html:27
-msgid "The part associated to this Stock Item belongs to another part's BOM"
-msgstr ""
-
-#: stock/templates/stock/item_install.html:28
-msgid "This Stock Item is serialized and does not belong to another item"
-msgstr ""
-
#: stock/templates/stock/item_serialize.html:5
msgid "Create serialized items from this stock item."
msgstr ""
@@ -6247,7 +6295,7 @@ msgstr ""
msgid "The following stock items will be uninstalled"
msgstr ""
-#: stock/templates/stock/stockitem_convert.html:7 stock/views.py:879
+#: stock/templates/stock/stockitem_convert.html:7 stock/views.py:730
msgid "Convert Stock Item"
msgstr ""
@@ -6268,11 +6316,11 @@ msgstr ""
msgid "Are you sure you want to delete this stock tracking entry?"
msgstr ""
-#: stock/views.py:162 templates/js/translated/stock.js:139
+#: stock/views.py:162 templates/js/translated/stock.js:140
msgid "Edit Stock Location"
msgstr ""
-#: stock/views.py:269 stock/views.py:858 stock/views.py:984 stock/views.py:1266
+#: stock/views.py:269 stock/views.py:709 stock/views.py:835 stock/views.py:1117
msgid "Owner is required (ownership control is enabled)"
msgstr ""
@@ -6300,59 +6348,63 @@ msgstr ""
msgid "Confirm test data deletion"
msgstr ""
+#: stock/views.py:352
+msgid "Check the confirmation box"
+msgstr ""
+
#: stock/views.py:456
msgid "Stock Item QR Code"
msgstr ""
-#: stock/views.py:630
+#: stock/views.py:481
msgid "Uninstall Stock Items"
msgstr ""
-#: stock/views.py:727 templates/js/translated/stock.js:1074
+#: stock/views.py:578 templates/js/translated/stock.js:1075
msgid "Confirm stock adjustment"
msgstr ""
-#: stock/views.py:738
+#: stock/views.py:589
msgid "Uninstalled stock items"
msgstr ""
-#: stock/views.py:760 templates/js/translated/stock.js:332
+#: stock/views.py:611 templates/js/translated/stock.js:333
msgid "Edit Stock Item"
msgstr ""
-#: stock/views.py:910
+#: stock/views.py:761
msgid "Create new Stock Location"
msgstr ""
-#: stock/views.py:1011
+#: stock/views.py:862
msgid "Create new Stock Item"
msgstr ""
-#: stock/views.py:1153 templates/js/translated/stock.js:312
+#: stock/views.py:1004 templates/js/translated/stock.js:313
msgid "Duplicate Stock Item"
msgstr ""
-#: stock/views.py:1235
+#: stock/views.py:1086
msgid "Quantity cannot be negative"
msgstr ""
-#: stock/views.py:1335
+#: stock/views.py:1186
msgid "Delete Stock Location"
msgstr ""
-#: stock/views.py:1348
+#: stock/views.py:1199
msgid "Delete Stock Item"
msgstr ""
-#: stock/views.py:1359
+#: stock/views.py:1210
msgid "Delete Stock Tracking Entry"
msgstr ""
-#: stock/views.py:1366
+#: stock/views.py:1217
msgid "Edit Stock Tracking Entry"
msgstr ""
-#: stock/views.py:1375
+#: stock/views.py:1226
msgid "Add Stock Tracking Entry"
msgstr ""
@@ -6527,15 +6579,15 @@ msgstr ""
msgid "Part Settings"
msgstr ""
-#: templates/InvenTree/settings/part.html:43
+#: templates/InvenTree/settings/part.html:44
msgid "Part Import"
msgstr ""
-#: templates/InvenTree/settings/part.html:47
+#: templates/InvenTree/settings/part.html:48
msgid "Import Part"
msgstr ""
-#: templates/InvenTree/settings/part.html:61
+#: templates/InvenTree/settings/part.html:62
msgid "Part Parameter Templates"
msgstr ""
@@ -6663,45 +6715,45 @@ msgstr ""
msgid "Report Settings"
msgstr ""
-#: templates/InvenTree/settings/setting.html:30
+#: templates/InvenTree/settings/setting.html:33
msgid "No value set"
msgstr ""
-#: templates/InvenTree/settings/setting.html:41
+#: templates/InvenTree/settings/setting.html:38
msgid "Edit setting"
msgstr ""
-#: templates/InvenTree/settings/settings.html:78
+#: templates/InvenTree/settings/settings.html:115
msgid "Edit Plugin Setting"
msgstr ""
-#: templates/InvenTree/settings/settings.html:80
+#: templates/InvenTree/settings/settings.html:117
msgid "Edit Global Setting"
msgstr ""
-#: templates/InvenTree/settings/settings.html:82
+#: templates/InvenTree/settings/settings.html:119
msgid "Edit User Setting"
msgstr ""
-#: templates/InvenTree/settings/settings.html:171
+#: templates/InvenTree/settings/settings.html:208
msgid "No category parameter templates found"
msgstr ""
-#: templates/InvenTree/settings/settings.html:193
-#: templates/InvenTree/settings/settings.html:292
+#: templates/InvenTree/settings/settings.html:230
+#: templates/InvenTree/settings/settings.html:329
msgid "Edit Template"
msgstr ""
-#: templates/InvenTree/settings/settings.html:194
-#: templates/InvenTree/settings/settings.html:293
+#: templates/InvenTree/settings/settings.html:231
+#: templates/InvenTree/settings/settings.html:330
msgid "Delete Template"
msgstr ""
-#: templates/InvenTree/settings/settings.html:272
+#: templates/InvenTree/settings/settings.html:309
msgid "No part parameter templates found"
msgstr ""
-#: templates/InvenTree/settings/settings.html:276
+#: templates/InvenTree/settings/settings.html:313
msgid "ID"
msgstr ""
@@ -6996,10 +7048,11 @@ msgid "InvenTree Version Information"
msgstr ""
#: templates/about.html:11 templates/about.html:105
-#: templates/js/translated/bom.js:407 templates/js/translated/modals.js:53
-#: templates/js/translated/modals.js:584 templates/js/translated/modals.js:678
-#: templates/js/translated/modals.js:983 templates/modals.html:15
-#: templates/modals.html:27 templates/modals.html:39 templates/modals.html:50
+#: templates/js/translated/bom.js:132 templates/js/translated/bom.js:620
+#: templates/js/translated/modals.js:53 templates/js/translated/modals.js:584
+#: templates/js/translated/modals.js:678 templates/js/translated/modals.js:986
+#: templates/modals.html:15 templates/modals.html:27 templates/modals.html:39
+#: templates/modals.html:50
msgid "Close"
msgstr ""
@@ -7275,14 +7328,14 @@ msgid "The following parts are low on required stock"
msgstr ""
#: templates/email/build_order_required_stock.html:18
-#: templates/js/translated/bom.js:1117
+#: templates/js/translated/bom.js:1335
msgid "Required Quantity"
msgstr ""
#: templates/email/build_order_required_stock.html:19
#: templates/email/low_stock_notification.html:18
-#: templates/js/translated/bom.js:591 templates/js/translated/build.js:1189
-#: templates/js/translated/build.js:1810
+#: templates/js/translated/bom.js:804 templates/js/translated/build.js:1411
+#: templates/js/translated/build.js:2048
#: templates/js/translated/table_filters.js:178
msgid "Available"
msgstr ""
@@ -7325,11 +7378,11 @@ msgstr ""
msgid "Remote image must not exceed maximum allowable file size"
msgstr ""
-#: templates/js/translated/api.js:185 templates/js/translated/modals.js:1053
+#: templates/js/translated/api.js:185 templates/js/translated/modals.js:1056
msgid "No Response"
msgstr ""
-#: templates/js/translated/api.js:186 templates/js/translated/modals.js:1054
+#: templates/js/translated/api.js:186 templates/js/translated/modals.js:1057
msgid "No response from the InvenTree server"
msgstr ""
@@ -7341,27 +7394,27 @@ msgstr ""
msgid "API request returned error code 400"
msgstr ""
-#: templates/js/translated/api.js:197 templates/js/translated/modals.js:1063
+#: templates/js/translated/api.js:197 templates/js/translated/modals.js:1066
msgid "Error 401: Not Authenticated"
msgstr ""
-#: templates/js/translated/api.js:198 templates/js/translated/modals.js:1064
+#: templates/js/translated/api.js:198 templates/js/translated/modals.js:1067
msgid "Authentication credentials not supplied"
msgstr ""
-#: templates/js/translated/api.js:202 templates/js/translated/modals.js:1068
+#: templates/js/translated/api.js:202 templates/js/translated/modals.js:1071
msgid "Error 403: Permission Denied"
msgstr ""
-#: templates/js/translated/api.js:203 templates/js/translated/modals.js:1069
+#: templates/js/translated/api.js:203 templates/js/translated/modals.js:1072
msgid "You do not have the required permissions to access this function"
msgstr ""
-#: templates/js/translated/api.js:207 templates/js/translated/modals.js:1073
+#: templates/js/translated/api.js:207 templates/js/translated/modals.js:1076
msgid "Error 404: Resource Not Found"
msgstr ""
-#: templates/js/translated/api.js:208 templates/js/translated/modals.js:1074
+#: templates/js/translated/api.js:208 templates/js/translated/modals.js:1077
msgid "The requested resource could not be located on the server"
msgstr ""
@@ -7373,11 +7426,11 @@ msgstr ""
msgid "HTTP method not allowed at URL"
msgstr ""
-#: templates/js/translated/api.js:217 templates/js/translated/modals.js:1078
+#: templates/js/translated/api.js:217 templates/js/translated/modals.js:1081
msgid "Error 408: Timeout"
msgstr ""
-#: templates/js/translated/api.js:218 templates/js/translated/modals.js:1079
+#: templates/js/translated/api.js:218 templates/js/translated/modals.js:1082
msgid "Connection timeout while requesting data from server"
msgstr ""
@@ -7446,7 +7499,7 @@ msgid "Unknown response from server"
msgstr ""
#: templates/js/translated/barcode.js:140
-#: templates/js/translated/modals.js:1043
+#: templates/js/translated/modals.js:1046
msgid "Invalid server response"
msgstr ""
@@ -7474,7 +7527,7 @@ msgstr ""
msgid "Unlink"
msgstr ""
-#: templates/js/translated/barcode.js:397 templates/js/translated/stock.js:1026
+#: templates/js/translated/barcode.js:397 templates/js/translated/stock.js:1027
msgid "Remove stock item"
msgstr ""
@@ -7516,327 +7569,369 @@ msgstr ""
msgid "Barcode does not match a valid location"
msgstr ""
-#: templates/js/translated/bom.js:36
+#: templates/js/translated/bom.js:75
+msgid "Display row data"
+msgstr ""
+
+#: templates/js/translated/bom.js:131
+msgid "Row Data"
+msgstr ""
+
+#: templates/js/translated/bom.js:249
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:518
+#: templates/js/translated/bom.js:252 templates/js/translated/bom.js:286
+#: templates/js/translated/order.js:369 templates/js/translated/stock.js:519
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:519
+#: templates/js/translated/bom.js:253 templates/js/translated/bom.js:287
+#: templates/js/translated/order.js:370 templates/js/translated/stock.js:520
msgid "Select file format"
msgstr ""
-#: templates/js/translated/bom.js:81
+#: templates/js/translated/bom.js:294
msgid "Cascading"
msgstr ""
-#: templates/js/translated/bom.js:82
+#: templates/js/translated/bom.js:295
msgid "Download cascading / multi-level BOM"
msgstr ""
-#: templates/js/translated/bom.js:87
+#: templates/js/translated/bom.js:300
msgid "Levels"
msgstr ""
-#: templates/js/translated/bom.js:88
+#: templates/js/translated/bom.js:301
msgid "Select maximum number of BOM levels to export (0 = all levels)"
msgstr ""
-#: templates/js/translated/bom.js:94
+#: templates/js/translated/bom.js:307
msgid "Include Parameter Data"
msgstr ""
-#: templates/js/translated/bom.js:95
+#: templates/js/translated/bom.js:308
msgid "Include part parameter data in exported BOM"
msgstr ""
-#: templates/js/translated/bom.js:100
+#: templates/js/translated/bom.js:313
msgid "Include Stock Data"
msgstr ""
-#: templates/js/translated/bom.js:101
+#: templates/js/translated/bom.js:314
msgid "Include part stock data in exported BOM"
msgstr ""
-#: templates/js/translated/bom.js:106
+#: templates/js/translated/bom.js:319
msgid "Include Manufacturer Data"
msgstr ""
-#: templates/js/translated/bom.js:107
+#: templates/js/translated/bom.js:320
msgid "Include part manufacturer data in exported BOM"
msgstr ""
-#: templates/js/translated/bom.js:112
+#: templates/js/translated/bom.js:325
msgid "Include Supplier Data"
msgstr ""
-#: templates/js/translated/bom.js:113
+#: templates/js/translated/bom.js:326
msgid "Include part supplier data in exported BOM"
msgstr ""
-#: templates/js/translated/bom.js:296
+#: templates/js/translated/bom.js:509
msgid "Remove substitute part"
msgstr ""
-#: templates/js/translated/bom.js:352
+#: templates/js/translated/bom.js:565
msgid "Select and add a new substitute part using the input below"
msgstr ""
-#: templates/js/translated/bom.js:363
+#: templates/js/translated/bom.js:576
msgid "Are you sure you wish to remove this substitute part link?"
msgstr ""
-#: templates/js/translated/bom.js:369
+#: templates/js/translated/bom.js:582
msgid "Remove Substitute Part"
msgstr ""
-#: templates/js/translated/bom.js:408
+#: templates/js/translated/bom.js:621
msgid "Add Substitute"
msgstr ""
-#: templates/js/translated/bom.js:409
+#: templates/js/translated/bom.js:622
msgid "Edit BOM Item Substitutes"
msgstr ""
-#: templates/js/translated/bom.js:528
+#: templates/js/translated/bom.js:741
msgid "Substitutes Available"
msgstr ""
-#: templates/js/translated/bom.js:532 templates/js/translated/build.js:1171
+#: templates/js/translated/bom.js:745 templates/js/translated/build.js:1393
msgid "Variant stock allowed"
msgstr ""
-#: templates/js/translated/bom.js:537
+#: templates/js/translated/bom.js:750
msgid "Open subassembly"
msgstr ""
-#: templates/js/translated/bom.js:609
+#: templates/js/translated/bom.js:822
msgid "Substitutes"
msgstr ""
-#: templates/js/translated/bom.js:624
+#: templates/js/translated/bom.js:837
msgid "Purchase Price Range"
msgstr ""
-#: templates/js/translated/bom.js:631
+#: templates/js/translated/bom.js:844
msgid "Purchase Price Average"
msgstr ""
-#: templates/js/translated/bom.js:680 templates/js/translated/bom.js:769
+#: templates/js/translated/bom.js:893 templates/js/translated/bom.js:982
msgid "View BOM"
msgstr ""
-#: templates/js/translated/bom.js:740
+#: templates/js/translated/bom.js:953
msgid "Validate BOM Item"
msgstr ""
-#: templates/js/translated/bom.js:742
+#: templates/js/translated/bom.js:955
msgid "This line has been validated"
msgstr ""
-#: templates/js/translated/bom.js:744
+#: templates/js/translated/bom.js:957
msgid "Edit substitute parts"
msgstr ""
-#: templates/js/translated/bom.js:746 templates/js/translated/bom.js:920
+#: templates/js/translated/bom.js:959 templates/js/translated/bom.js:1138
msgid "Edit BOM Item"
msgstr ""
-#: templates/js/translated/bom.js:748 templates/js/translated/bom.js:903
+#: templates/js/translated/bom.js:961 templates/js/translated/bom.js:1121
msgid "Delete BOM Item"
msgstr ""
-#: templates/js/translated/bom.js:842 templates/js/translated/build.js:915
+#: templates/js/translated/bom.js:1060 templates/js/translated/build.js:1137
msgid "No BOM items found"
msgstr ""
-#: templates/js/translated/bom.js:898
+#: templates/js/translated/bom.js:1116
msgid "Are you sure you want to delete this BOM item?"
msgstr ""
-#: templates/js/translated/bom.js:1100 templates/js/translated/build.js:1155
+#: templates/js/translated/bom.js:1318 templates/js/translated/build.js:1377
msgid "Required Part"
msgstr ""
-#: templates/js/translated/bom.js:1122
+#: templates/js/translated/bom.js:1340
msgid "Inherited from parent BOM"
msgstr ""
-#: templates/js/translated/build.js:84
+#: templates/js/translated/build.js:85
msgid "Edit Build Order"
msgstr ""
-#: templates/js/translated/build.js:118
+#: templates/js/translated/build.js:119
msgid "Create Build Order"
msgstr ""
-#: templates/js/translated/build.js:139
+#: templates/js/translated/build.js:140
msgid "Build order is ready to be completed"
msgstr ""
-#: templates/js/translated/build.js:144
+#: templates/js/translated/build.js:145
msgid "Build Order is incomplete"
msgstr ""
-#: templates/js/translated/build.js:172
+#: templates/js/translated/build.js:173
msgid "Complete Build Order"
msgstr ""
-#: templates/js/translated/build.js:193
+#: templates/js/translated/build.js:214 templates/js/translated/stock.js:93
+#: templates/js/translated/stock.js:182
+msgid "Next available serial number"
+msgstr ""
+
+#: templates/js/translated/build.js:216 templates/js/translated/stock.js:95
+#: templates/js/translated/stock.js:184
+msgid "Latest serial number"
+msgstr ""
+
+#: templates/js/translated/build.js:225
+msgid "The Bill of Materials contains trackable parts"
+msgstr ""
+
+#: templates/js/translated/build.js:226
+msgid "Build outputs must be generated individually"
+msgstr ""
+
+#: templates/js/translated/build.js:234
+msgid "Trackable parts can have serial numbers specified"
+msgstr ""
+
+#: templates/js/translated/build.js:235
+msgid "Enter serial numbers to generate multiple single build outputs"
+msgstr ""
+
+#: templates/js/translated/build.js:242
+msgid "Create Build Output"
+msgstr ""
+
+#: templates/js/translated/build.js:273
msgid "Allocate stock items to this build output"
msgstr ""
-#: templates/js/translated/build.js:204
+#: templates/js/translated/build.js:284
msgid "Unallocate stock from build output"
msgstr ""
-#: templates/js/translated/build.js:213
+#: templates/js/translated/build.js:293
msgid "Complete build output"
msgstr ""
-#: templates/js/translated/build.js:221
+#: templates/js/translated/build.js:301
msgid "Delete build output"
msgstr ""
-#: templates/js/translated/build.js:244
+#: templates/js/translated/build.js:324
msgid "Are you sure you wish to unallocate stock items from this build?"
msgstr ""
-#: templates/js/translated/build.js:262
+#: templates/js/translated/build.js:342
msgid "Unallocate Stock Items"
msgstr ""
-#: templates/js/translated/build.js:280
+#: templates/js/translated/build.js:360 templates/js/translated/build.js:508
msgid "Select Build Outputs"
msgstr ""
-#: templates/js/translated/build.js:281
+#: templates/js/translated/build.js:361 templates/js/translated/build.js:509
msgid "At least one build output must be selected"
msgstr ""
-#: templates/js/translated/build.js:335
+#: templates/js/translated/build.js:415 templates/js/translated/build.js:563
msgid "Output"
msgstr ""
-#: templates/js/translated/build.js:351
+#: templates/js/translated/build.js:431
msgid "Complete Build Outputs"
msgstr ""
-#: templates/js/translated/build.js:446
+#: templates/js/translated/build.js:576
+msgid "Delete Build Outputs"
+msgstr ""
+
+#: templates/js/translated/build.js:665
msgid "No build order allocations found"
msgstr ""
-#: templates/js/translated/build.js:484 templates/js/translated/order.js:1848
+#: templates/js/translated/build.js:703 templates/js/translated/order.js:1848
msgid "Location not specified"
msgstr ""
-#: templates/js/translated/build.js:663
+#: templates/js/translated/build.js:885
msgid "No active build outputs found"
msgstr ""
-#: templates/js/translated/build.js:1112 templates/js/translated/build.js:1821
+#: templates/js/translated/build.js:1334 templates/js/translated/build.js:2059
#: templates/js/translated/order.js:1982
msgid "Edit stock allocation"
msgstr ""
-#: templates/js/translated/build.js:1114 templates/js/translated/build.js:1822
+#: templates/js/translated/build.js:1336 templates/js/translated/build.js:2060
#: templates/js/translated/order.js:1983
msgid "Delete stock allocation"
msgstr ""
-#: templates/js/translated/build.js:1132
+#: templates/js/translated/build.js:1354
msgid "Edit Allocation"
msgstr ""
-#: templates/js/translated/build.js:1142
+#: templates/js/translated/build.js:1364
msgid "Remove Allocation"
msgstr ""
-#: templates/js/translated/build.js:1167
+#: templates/js/translated/build.js:1389
msgid "Substitute parts available"
msgstr ""
-#: templates/js/translated/build.js:1184
+#: templates/js/translated/build.js:1406
msgid "Quantity Per"
msgstr ""
-#: templates/js/translated/build.js:1194 templates/js/translated/build.js:1420
-#: templates/js/translated/build.js:1817 templates/js/translated/order.js:2227
+#: templates/js/translated/build.js:1416 templates/js/translated/build.js:1656
+#: templates/js/translated/build.js:2055 templates/js/translated/order.js:2227
msgid "Allocated"
msgstr ""
-#: templates/js/translated/build.js:1250 templates/js/translated/order.js:2307
+#: templates/js/translated/build.js:1472 templates/js/translated/order.js:2307
msgid "Build stock"
msgstr ""
-#: templates/js/translated/build.js:1254 templates/stock_table.html:53
+#: templates/js/translated/build.js:1476 templates/stock_table.html:53
msgid "Order stock"
msgstr ""
-#: templates/js/translated/build.js:1257 templates/js/translated/order.js:2300
+#: templates/js/translated/build.js:1479 templates/js/translated/order.js:2300
msgid "Allocate stock"
msgstr ""
-#: templates/js/translated/build.js:1322 templates/js/translated/order.js:1499
+#: templates/js/translated/build.js:1558 templates/js/translated/order.js:1499
msgid "Specify stock allocation quantity"
msgstr ""
-#: templates/js/translated/build.js:1393 templates/js/translated/label.js:134
+#: templates/js/translated/build.js:1629 templates/js/translated/label.js:134
#: templates/js/translated/order.js:1550 templates/js/translated/report.js:225
msgid "Select Parts"
msgstr ""
-#: templates/js/translated/build.js:1394 templates/js/translated/order.js:1551
+#: templates/js/translated/build.js:1630 templates/js/translated/order.js:1551
msgid "You must select at least one part to allocate"
msgstr ""
-#: templates/js/translated/build.js:1408 templates/js/translated/order.js:1565
+#: templates/js/translated/build.js:1644 templates/js/translated/order.js:1565
msgid "Select source location (leave blank to take from all locations)"
msgstr ""
-#: templates/js/translated/build.js:1437 templates/js/translated/order.js:1600
+#: templates/js/translated/build.js:1673 templates/js/translated/order.js:1600
msgid "Confirm stock allocation"
msgstr ""
-#: templates/js/translated/build.js:1438
+#: templates/js/translated/build.js:1674
msgid "Allocate Stock Items to Build Order"
msgstr ""
-#: templates/js/translated/build.js:1449 templates/js/translated/order.js:1613
+#: templates/js/translated/build.js:1685 templates/js/translated/order.js:1613
msgid "No matching stock locations"
msgstr ""
-#: templates/js/translated/build.js:1519 templates/js/translated/order.js:1690
+#: templates/js/translated/build.js:1757 templates/js/translated/order.js:1690
msgid "No matching stock items"
msgstr ""
-#: templates/js/translated/build.js:1637
+#: templates/js/translated/build.js:1875
msgid "No builds matching query"
msgstr ""
-#: templates/js/translated/build.js:1654 templates/js/translated/part.js:1213
-#: templates/js/translated/part.js:1624 templates/js/translated/stock.js:1520
-#: templates/js/translated/stock.js:2479
+#: templates/js/translated/build.js:1892 templates/js/translated/part.js:1213
+#: templates/js/translated/part.js:1624 templates/js/translated/stock.js:1644
+#: templates/js/translated/stock.js:2603
msgid "Select"
msgstr ""
-#: templates/js/translated/build.js:1674
+#: templates/js/translated/build.js:1912
msgid "Build order is overdue"
msgstr ""
-#: templates/js/translated/build.js:1735 templates/js/translated/stock.js:2698
+#: templates/js/translated/build.js:1973 templates/js/translated/stock.js:2822
msgid "No user information"
msgstr ""
-#: templates/js/translated/build.js:1747
+#: templates/js/translated/build.js:1985
msgid "No information"
msgstr ""
-#: templates/js/translated/build.js:1798
+#: templates/js/translated/build.js:2036
msgid "No parts allocated for"
msgstr ""
@@ -7966,48 +8061,60 @@ msgstr ""
msgid "Create filter"
msgstr ""
-#: templates/js/translated/forms.js:350 templates/js/translated/forms.js:365
-#: templates/js/translated/forms.js:379 templates/js/translated/forms.js:393
+#: templates/js/translated/forms.js:351 templates/js/translated/forms.js:366
+#: templates/js/translated/forms.js:380 templates/js/translated/forms.js:394
msgid "Action Prohibited"
msgstr ""
-#: templates/js/translated/forms.js:352
+#: templates/js/translated/forms.js:353
msgid "Create operation not allowed"
msgstr ""
-#: templates/js/translated/forms.js:367
+#: templates/js/translated/forms.js:368
msgid "Update operation not allowed"
msgstr ""
-#: templates/js/translated/forms.js:381
+#: templates/js/translated/forms.js:382
msgid "Delete operation not allowed"
msgstr ""
-#: templates/js/translated/forms.js:395
+#: templates/js/translated/forms.js:396
msgid "View operation not allowed"
msgstr ""
-#: templates/js/translated/forms.js:680
+#: templates/js/translated/forms.js:681
msgid "Enter a valid number"
msgstr ""
-#: templates/js/translated/forms.js:1082 templates/modals.html:19
+#: templates/js/translated/forms.js:1129 templates/modals.html:19
#: templates/modals.html:43
msgid "Form errors exist"
msgstr ""
-#: templates/js/translated/forms.js:1487
+#: templates/js/translated/forms.js:1558
msgid "No results found"
msgstr ""
-#: templates/js/translated/forms.js:1691
+#: templates/js/translated/forms.js:1768
msgid "Searching"
msgstr ""
-#: templates/js/translated/forms.js:1930
+#: templates/js/translated/forms.js:2013
msgid "Clear input"
msgstr ""
+#: templates/js/translated/forms.js:2479
+msgid "File Column"
+msgstr ""
+
+#: templates/js/translated/forms.js:2479
+msgid "Field Name"
+msgstr ""
+
+#: templates/js/translated/forms.js:2491
+msgid "Select Columns"
+msgstr ""
+
#: templates/js/translated/helpers.js:19
msgid "YES"
msgstr ""
@@ -8017,7 +8124,7 @@ msgid "NO"
msgstr ""
#: templates/js/translated/label.js:29 templates/js/translated/report.js:118
-#: templates/js/translated/stock.js:1050
+#: templates/js/translated/stock.js:1051
msgid "Select Stock Items"
msgstr ""
@@ -8072,7 +8179,7 @@ msgid "Cancel"
msgstr ""
#: templates/js/translated/modals.js:77 templates/js/translated/modals.js:119
-#: templates/js/translated/modals.js:677 templates/js/translated/modals.js:982
+#: templates/js/translated/modals.js:677 templates/js/translated/modals.js:985
#: templates/modals.html:28 templates/modals.html:51
msgid "Submit"
msgstr ""
@@ -8097,31 +8204,31 @@ msgstr ""
msgid "Loading Data"
msgstr ""
-#: templates/js/translated/modals.js:934
+#: templates/js/translated/modals.js:937
msgid "Invalid response from server"
msgstr ""
-#: templates/js/translated/modals.js:934
+#: templates/js/translated/modals.js:937
msgid "Form data missing from server response"
msgstr ""
-#: templates/js/translated/modals.js:946
+#: templates/js/translated/modals.js:949
msgid "Error posting form data"
msgstr ""
-#: templates/js/translated/modals.js:1043
+#: templates/js/translated/modals.js:1046
msgid "JSON response missing form data"
msgstr ""
-#: templates/js/translated/modals.js:1058
+#: templates/js/translated/modals.js:1061
msgid "Error 400: Bad Request"
msgstr ""
-#: templates/js/translated/modals.js:1059
+#: templates/js/translated/modals.js:1062
msgid "Server returned error code 400"
msgstr ""
-#: templates/js/translated/modals.js:1082
+#: templates/js/translated/modals.js:1085
msgid "Error requesting form data"
msgstr ""
@@ -8141,10 +8248,6 @@ msgstr ""
msgid "Build ID"
msgstr ""
-#: templates/js/translated/model_renderers.js:182
-msgid "Part ID"
-msgstr ""
-
#: templates/js/translated/model_renderers.js:249
#: templates/js/translated/model_renderers.js:270
msgid "Order ID"
@@ -8210,7 +8313,7 @@ msgstr ""
msgid "Quantity to receive"
msgstr ""
-#: templates/js/translated/order.js:520 templates/js/translated/stock.js:2131
+#: templates/js/translated/order.js:520 templates/js/translated/stock.js:2255
msgid "Stock Status"
msgstr ""
@@ -8344,7 +8447,7 @@ msgid "Delete Stock Allocation"
msgstr ""
#: templates/js/translated/order.js:1959 templates/js/translated/order.js:2048
-#: templates/js/translated/stock.js:1436
+#: templates/js/translated/stock.js:1560
msgid "Shipped to customer"
msgstr ""
@@ -8545,12 +8648,12 @@ msgid "No category"
msgstr ""
#: templates/js/translated/part.js:1296
-#: templates/js/translated/table_filters.js:430
+#: templates/js/translated/table_filters.js:425
msgid "Low stock"
msgstr ""
#: templates/js/translated/part.js:1387 templates/js/translated/part.js:1559
-#: templates/js/translated/stock.js:2440
+#: templates/js/translated/stock.js:2564
msgid "Display as list"
msgstr ""
@@ -8558,7 +8661,7 @@ msgstr ""
msgid "Display as grid"
msgstr ""
-#: templates/js/translated/part.js:1578 templates/js/translated/stock.js:2459
+#: templates/js/translated/part.js:1578 templates/js/translated/stock.js:2583
msgid "Display as tree"
msgstr ""
@@ -8566,7 +8669,7 @@ msgstr ""
msgid "Subscribed category"
msgstr ""
-#: templates/js/translated/part.js:1656 templates/js/translated/stock.js:2503
+#: templates/js/translated/part.js:1656 templates/js/translated/stock.js:2627
msgid "Path"
msgstr ""
@@ -8574,11 +8677,12 @@ msgstr ""
msgid "No test templates matching query"
msgstr ""
-#: templates/js/translated/part.js:1751 templates/js/translated/stock.js:1242
+#: templates/js/translated/part.js:1751 templates/js/translated/stock.js:1271
msgid "Edit test result"
msgstr ""
-#: templates/js/translated/part.js:1752 templates/js/translated/stock.js:1243
+#: templates/js/translated/part.js:1752 templates/js/translated/stock.js:1272
+#: templates/js/translated/stock.js:1518
msgid "Delete test result"
msgstr ""
@@ -8687,347 +8791,375 @@ msgstr ""
msgid "Sales Order(s) must be selected before printing report"
msgstr ""
-#: templates/js/translated/stock.js:74
+#: templates/js/translated/stock.js:75
msgid "Serialize Stock Item"
msgstr ""
-#: templates/js/translated/stock.js:92 templates/js/translated/stock.js:181
-msgid "Next available serial number"
-msgstr ""
-
-#: templates/js/translated/stock.js:94 templates/js/translated/stock.js:183
-msgid "Latest serial number"
-msgstr ""
-
-#: templates/js/translated/stock.js:102
+#: templates/js/translated/stock.js:103
msgid "Confirm Stock Serialization"
msgstr ""
-#: templates/js/translated/stock.js:111
+#: templates/js/translated/stock.js:112
msgid "Parent stock location"
msgstr ""
-#: templates/js/translated/stock.js:154
+#: templates/js/translated/stock.js:155
msgid "New Stock Location"
msgstr ""
-#: templates/js/translated/stock.js:194
+#: templates/js/translated/stock.js:195
msgid "This part cannot be serialized"
msgstr ""
-#: templates/js/translated/stock.js:233
+#: templates/js/translated/stock.js:234
msgid "Enter initial quantity for this stock item"
msgstr ""
-#: templates/js/translated/stock.js:239
+#: templates/js/translated/stock.js:240
msgid "Enter serial numbers for new stock (or leave blank)"
msgstr ""
-#: templates/js/translated/stock.js:382
+#: templates/js/translated/stock.js:383
msgid "Created new stock item"
msgstr ""
-#: templates/js/translated/stock.js:395
+#: templates/js/translated/stock.js:396
msgid "Created multiple stock items"
msgstr ""
-#: templates/js/translated/stock.js:420
+#: templates/js/translated/stock.js:421
msgid "Find Serial Number"
msgstr ""
-#: templates/js/translated/stock.js:424 templates/js/translated/stock.js:425
+#: templates/js/translated/stock.js:425 templates/js/translated/stock.js:426
msgid "Enter serial number"
msgstr ""
-#: templates/js/translated/stock.js:441
+#: templates/js/translated/stock.js:442
msgid "Enter a serial number"
msgstr ""
-#: templates/js/translated/stock.js:461
+#: templates/js/translated/stock.js:462
msgid "No matching serial number"
msgstr ""
-#: templates/js/translated/stock.js:470
+#: templates/js/translated/stock.js:471
msgid "More than one matching result found"
msgstr ""
-#: templates/js/translated/stock.js:515
+#: templates/js/translated/stock.js:516
msgid "Export Stock"
msgstr ""
-#: templates/js/translated/stock.js:526
+#: templates/js/translated/stock.js:527
msgid "Include Sublocations"
msgstr ""
-#: templates/js/translated/stock.js:527
+#: templates/js/translated/stock.js:528
msgid "Include stock items in sublocations"
msgstr ""
-#: templates/js/translated/stock.js:636
+#: templates/js/translated/stock.js:637
msgid "Confirm stock assignment"
msgstr ""
-#: templates/js/translated/stock.js:637
+#: templates/js/translated/stock.js:638
msgid "Assign Stock to Customer"
msgstr ""
-#: templates/js/translated/stock.js:714
+#: templates/js/translated/stock.js:715
msgid "Warning: Merge operation cannot be reversed"
msgstr ""
-#: templates/js/translated/stock.js:715
+#: templates/js/translated/stock.js:716
msgid "Some information will be lost when merging stock items"
msgstr ""
-#: templates/js/translated/stock.js:717
+#: templates/js/translated/stock.js:718
msgid "Stock transaction history will be deleted for merged items"
msgstr ""
-#: templates/js/translated/stock.js:718
+#: templates/js/translated/stock.js:719
msgid "Supplier part information will be deleted for merged items"
msgstr ""
-#: templates/js/translated/stock.js:804
+#: templates/js/translated/stock.js:805
msgid "Confirm stock item merge"
msgstr ""
-#: templates/js/translated/stock.js:805
+#: templates/js/translated/stock.js:806
msgid "Merge Stock Items"
msgstr ""
-#: templates/js/translated/stock.js:900
+#: templates/js/translated/stock.js:901
msgid "Transfer Stock"
msgstr ""
-#: templates/js/translated/stock.js:901
+#: templates/js/translated/stock.js:902
msgid "Move"
msgstr ""
-#: templates/js/translated/stock.js:907
+#: templates/js/translated/stock.js:908
msgid "Count Stock"
msgstr ""
-#: templates/js/translated/stock.js:908
+#: templates/js/translated/stock.js:909
msgid "Count"
msgstr ""
-#: templates/js/translated/stock.js:912
+#: templates/js/translated/stock.js:913
msgid "Remove Stock"
msgstr ""
-#: templates/js/translated/stock.js:913
+#: templates/js/translated/stock.js:914
msgid "Take"
msgstr ""
-#: templates/js/translated/stock.js:917
+#: templates/js/translated/stock.js:918
msgid "Add Stock"
msgstr ""
-#: templates/js/translated/stock.js:918 users/models.py:208
+#: templates/js/translated/stock.js:919 users/models.py:213
msgid "Add"
msgstr ""
-#: templates/js/translated/stock.js:922 templates/stock_table.html:58
+#: templates/js/translated/stock.js:923 templates/stock_table.html:58
msgid "Delete Stock"
msgstr ""
-#: templates/js/translated/stock.js:1011
+#: templates/js/translated/stock.js:1012
msgid "Quantity cannot be adjusted for serialized stock"
msgstr ""
-#: templates/js/translated/stock.js:1011
+#: templates/js/translated/stock.js:1012
msgid "Specify stock quantity"
msgstr ""
-#: templates/js/translated/stock.js:1051
+#: templates/js/translated/stock.js:1052
msgid "You must select at least one available stock item"
msgstr ""
-#: templates/js/translated/stock.js:1209
+#: templates/js/translated/stock.js:1210
msgid "PASS"
msgstr ""
-#: templates/js/translated/stock.js:1211
+#: templates/js/translated/stock.js:1212
msgid "FAIL"
msgstr ""
-#: templates/js/translated/stock.js:1216
+#: templates/js/translated/stock.js:1217
msgid "NO RESULT"
msgstr ""
-#: templates/js/translated/stock.js:1238
+#: templates/js/translated/stock.js:1264
+msgid "Pass test"
+msgstr ""
+
+#: templates/js/translated/stock.js:1267
msgid "Add test result"
msgstr ""
-#: templates/js/translated/stock.js:1264
+#: templates/js/translated/stock.js:1293
msgid "No test results found"
msgstr ""
-#: templates/js/translated/stock.js:1321
+#: templates/js/translated/stock.js:1349
msgid "Test Date"
msgstr ""
-#: templates/js/translated/stock.js:1428
+#: templates/js/translated/stock.js:1501
+msgid "Edit Test Result"
+msgstr ""
+
+#: templates/js/translated/stock.js:1523
+msgid "Delete Test Result"
+msgstr ""
+
+#: templates/js/translated/stock.js:1552
msgid "In production"
msgstr ""
-#: templates/js/translated/stock.js:1432
+#: templates/js/translated/stock.js:1556
msgid "Installed in Stock Item"
msgstr ""
-#: templates/js/translated/stock.js:1440
+#: templates/js/translated/stock.js:1564
msgid "Assigned to Sales Order"
msgstr ""
-#: templates/js/translated/stock.js:1446
+#: templates/js/translated/stock.js:1570
msgid "No stock location set"
msgstr ""
-#: templates/js/translated/stock.js:1604
+#: templates/js/translated/stock.js:1728
msgid "Stock item is in production"
msgstr ""
-#: templates/js/translated/stock.js:1609
+#: templates/js/translated/stock.js:1733
msgid "Stock item assigned to sales order"
msgstr ""
-#: templates/js/translated/stock.js:1612
+#: templates/js/translated/stock.js:1736
msgid "Stock item assigned to customer"
msgstr ""
-#: templates/js/translated/stock.js:1616
+#: templates/js/translated/stock.js:1740
msgid "Stock item has expired"
msgstr ""
-#: templates/js/translated/stock.js:1618
+#: templates/js/translated/stock.js:1742
msgid "Stock item will expire soon"
msgstr ""
-#: templates/js/translated/stock.js:1624
+#: templates/js/translated/stock.js:1748
msgid "Serialized stock item has been allocated"
msgstr ""
-#: templates/js/translated/stock.js:1626
+#: templates/js/translated/stock.js:1750
msgid "Stock item has been fully allocated"
msgstr ""
-#: templates/js/translated/stock.js:1628
+#: templates/js/translated/stock.js:1752
msgid "Stock item has been partially allocated"
msgstr ""
-#: templates/js/translated/stock.js:1633
+#: templates/js/translated/stock.js:1757
msgid "Stock item has been installed in another item"
msgstr ""
-#: templates/js/translated/stock.js:1640
+#: templates/js/translated/stock.js:1764
msgid "Stock item has been rejected"
msgstr ""
-#: templates/js/translated/stock.js:1642
+#: templates/js/translated/stock.js:1766
msgid "Stock item is lost"
msgstr ""
-#: templates/js/translated/stock.js:1644
+#: templates/js/translated/stock.js:1768
msgid "Stock item is destroyed"
msgstr ""
-#: templates/js/translated/stock.js:1648
+#: templates/js/translated/stock.js:1772
#: templates/js/translated/table_filters.js:188
msgid "Depleted"
msgstr ""
-#: templates/js/translated/stock.js:1698
+#: templates/js/translated/stock.js:1822
msgid "Stocktake"
msgstr ""
-#: templates/js/translated/stock.js:1771
+#: templates/js/translated/stock.js:1895
msgid "Supplier part not specified"
msgstr ""
-#: templates/js/translated/stock.js:1809
+#: templates/js/translated/stock.js:1933
msgid "No stock items matching query"
msgstr ""
-#: templates/js/translated/stock.js:1830 templates/js/translated/stock.js:1878
+#: templates/js/translated/stock.js:1954 templates/js/translated/stock.js:2002
msgid "items"
msgstr ""
-#: templates/js/translated/stock.js:1918
+#: templates/js/translated/stock.js:2042
msgid "batches"
msgstr ""
-#: templates/js/translated/stock.js:1945
+#: templates/js/translated/stock.js:2069
msgid "locations"
msgstr ""
-#: templates/js/translated/stock.js:1947
+#: templates/js/translated/stock.js:2071
msgid "Undefined location"
msgstr ""
-#: templates/js/translated/stock.js:2146
+#: templates/js/translated/stock.js:2270
msgid "Set Stock Status"
msgstr ""
-#: templates/js/translated/stock.js:2160
+#: templates/js/translated/stock.js:2284
msgid "Select Status Code"
msgstr ""
-#: templates/js/translated/stock.js:2161
+#: templates/js/translated/stock.js:2285
msgid "Status code must be selected"
msgstr ""
-#: templates/js/translated/stock.js:2340
+#: templates/js/translated/stock.js:2464
msgid "Allocated Quantity"
msgstr ""
-#: templates/js/translated/stock.js:2535
+#: templates/js/translated/stock.js:2659
msgid "Invalid date"
msgstr ""
-#: templates/js/translated/stock.js:2557
+#: templates/js/translated/stock.js:2681
msgid "Details"
msgstr ""
-#: templates/js/translated/stock.js:2582
+#: templates/js/translated/stock.js:2706
msgid "Location no longer exists"
msgstr ""
-#: templates/js/translated/stock.js:2601
+#: templates/js/translated/stock.js:2725
msgid "Purchase order no longer exists"
msgstr ""
-#: templates/js/translated/stock.js:2620
+#: templates/js/translated/stock.js:2744
msgid "Customer no longer exists"
msgstr ""
-#: templates/js/translated/stock.js:2638
+#: templates/js/translated/stock.js:2762
msgid "Stock item no longer exists"
msgstr ""
-#: templates/js/translated/stock.js:2661
+#: templates/js/translated/stock.js:2785
msgid "Added"
msgstr ""
-#: templates/js/translated/stock.js:2669
+#: templates/js/translated/stock.js:2793
msgid "Removed"
msgstr ""
-#: templates/js/translated/stock.js:2710
+#: templates/js/translated/stock.js:2834
msgid "Edit tracking entry"
msgstr ""
-#: templates/js/translated/stock.js:2711
+#: templates/js/translated/stock.js:2835
msgid "Delete tracking entry"
msgstr ""
-#: templates/js/translated/stock.js:2762
+#: templates/js/translated/stock.js:2886
msgid "No installed items"
msgstr ""
-#: templates/js/translated/stock.js:2813
+#: templates/js/translated/stock.js:2937
msgid "Uninstall Stock Item"
msgstr ""
+#: templates/js/translated/stock.js:2973
+msgid "Install another stock item into this item"
+msgstr ""
+
+#: templates/js/translated/stock.js:2974
+msgid "Stock items can only be installed if they meet the following criteria"
+msgstr ""
+
+#: templates/js/translated/stock.js:2976
+msgid "The Stock Item links to a Part which is the BOM for this Stock Item"
+msgstr ""
+
+#: templates/js/translated/stock.js:2977
+msgid "The Stock Item is currently available in stock"
+msgstr ""
+
+#: templates/js/translated/stock.js:2978
+msgid "The Stock Item is serialized and does not belong to another item"
+msgstr ""
+
+#: templates/js/translated/stock.js:2991
+msgid "Select part to install"
+msgstr ""
+
#: templates/js/translated/table_filters.js:56
msgid "Trackable Part"
msgstr ""
@@ -9055,12 +9187,12 @@ msgstr ""
#: templates/js/translated/table_filters.js:121
#: templates/js/translated/table_filters.js:122
-#: templates/js/translated/table_filters.js:407
+#: templates/js/translated/table_filters.js:402
msgid "Include subcategories"
msgstr ""
#: templates/js/translated/table_filters.js:126
-#: templates/js/translated/table_filters.js:442
+#: templates/js/translated/table_filters.js:437
msgid "Subscribed"
msgstr ""
@@ -9102,7 +9234,7 @@ msgid "Batch code"
msgstr ""
#: templates/js/translated/table_filters.js:163
-#: templates/js/translated/table_filters.js:379
+#: templates/js/translated/table_filters.js:374
msgid "Active parts"
msgstr ""
@@ -9187,47 +9319,47 @@ msgstr ""
msgid "Show stock which is close to expiring"
msgstr ""
-#: templates/js/translated/table_filters.js:290
+#: templates/js/translated/table_filters.js:285
msgid "Build status"
msgstr ""
-#: templates/js/translated/table_filters.js:303
-#: templates/js/translated/table_filters.js:344
+#: templates/js/translated/table_filters.js:298
+#: templates/js/translated/table_filters.js:339
msgid "Assigned to me"
msgstr ""
-#: templates/js/translated/table_filters.js:320
-#: templates/js/translated/table_filters.js:331
-#: templates/js/translated/table_filters.js:352
+#: templates/js/translated/table_filters.js:315
+#: templates/js/translated/table_filters.js:326
+#: templates/js/translated/table_filters.js:347
msgid "Order status"
msgstr ""
-#: templates/js/translated/table_filters.js:336
-#: templates/js/translated/table_filters.js:357
+#: templates/js/translated/table_filters.js:331
+#: templates/js/translated/table_filters.js:352
msgid "Outstanding"
msgstr ""
-#: templates/js/translated/table_filters.js:408
+#: templates/js/translated/table_filters.js:403
msgid "Include parts in subcategories"
msgstr ""
-#: templates/js/translated/table_filters.js:412
+#: templates/js/translated/table_filters.js:407
msgid "Has IPN"
msgstr ""
-#: templates/js/translated/table_filters.js:413
+#: templates/js/translated/table_filters.js:408
msgid "Part has internal part number"
msgstr ""
-#: templates/js/translated/table_filters.js:418
+#: templates/js/translated/table_filters.js:413
msgid "Show active parts"
msgstr ""
-#: templates/js/translated/table_filters.js:426
+#: templates/js/translated/table_filters.js:421
msgid "Stock available"
msgstr ""
-#: templates/js/translated/table_filters.js:454
+#: templates/js/translated/table_filters.js:449
msgid "Purchasable"
msgstr ""
@@ -9480,35 +9612,35 @@ msgstr ""
msgid "Important dates"
msgstr ""
-#: users/models.py:195
+#: users/models.py:200
msgid "Permission set"
msgstr ""
-#: users/models.py:203
+#: users/models.py:208
msgid "Group"
msgstr ""
-#: users/models.py:206
+#: users/models.py:211
msgid "View"
msgstr ""
-#: users/models.py:206
+#: users/models.py:211
msgid "Permission to view items"
msgstr ""
-#: users/models.py:208
+#: users/models.py:213
msgid "Permission to add items"
msgstr ""
-#: users/models.py:210
+#: users/models.py:215
msgid "Change"
msgstr ""
-#: users/models.py:210
+#: users/models.py:215
msgid "Permissions to edit items"
msgstr ""
-#: users/models.py:212
+#: users/models.py:217
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 0f1af70cb7..581aaef8d6 100644
--- a/InvenTree/locale/ru/LC_MESSAGES/django.po
+++ b/InvenTree/locale/ru/LC_MESSAGES/django.po
@@ -3,8 +3,8 @@ msgid ""
msgstr ""
"Project-Id-Version: inventree\n"
"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2022-01-29 00:17+0000\n"
-"PO-Revision-Date: 2022-01-29 01:11\n"
+"POT-Creation-Date: 2022-02-18 20:36+0000\n"
+"PO-Revision-Date: 2022-02-18 20:38\n"
"Last-Translator: \n"
"Language-Team: Russian\n"
"Language: ru_RU\n"
@@ -34,9 +34,9 @@ msgstr "Соответствующее действие не найдено"
msgid "Enter date"
msgstr "Введите дату"
-#: InvenTree/forms.py:126 build/forms.py:48 build/forms.py:69 order/forms.py:24
-#: order/forms.py:35 order/forms.py:46 order/forms.py:57
-#: templates/account/email_confirm.html:20 templates/js/translated/forms.js:595
+#: InvenTree/forms.py:126 order/forms.py:24 order/forms.py:35 order/forms.py:46
+#: order/forms.py:57 templates/account/email_confirm.html:20
+#: templates/js/translated/forms.js:596
msgid "Confirm"
msgstr "Подтвердить"
@@ -86,7 +86,7 @@ msgid "Duplicate serial: {n}"
msgstr "Дублировать серийный номер: {n}"
#: InvenTree/helpers.py:446 order/models.py:282 order/models.py:425
-#: stock/views.py:1231
+#: stock/views.py:1082
msgid "Invalid quantity provided"
msgstr "недопустимое количество"
@@ -119,133 +119,133 @@ msgstr "Серийных номеров не найдено"
msgid "Number of unique serial number ({s}) must match quantity ({q})"
msgstr "Число уникальных серийных номеров ({s}) должно соответствовать количеству ({q})"
-#: InvenTree/models.py:120
+#: InvenTree/models.py:176
msgid "Missing file"
msgstr "Файл не найден"
-#: InvenTree/models.py:121
+#: InvenTree/models.py:177
msgid "Missing external link"
msgstr "Отсутствует внешняя ссылка"
-#: InvenTree/models.py:132 stock/models.py:1995
+#: InvenTree/models.py:188 stock/models.py:1995
#: templates/js/translated/attachment.js:119
msgid "Attachment"
msgstr "Вложения"
-#: InvenTree/models.py:133
+#: InvenTree/models.py:189
msgid "Select file to attach"
msgstr "Выберите файл для вложения"
-#: InvenTree/models.py:139 company/models.py:131 company/models.py:348
-#: company/models.py:564 order/models.py:127 part/models.py:830
+#: InvenTree/models.py:195 company/models.py:131 company/models.py:348
+#: company/models.py:564 order/models.py:127 part/models.py:860
#: report/templates/report/inventree_build_order_base.html:165
#: templates/js/translated/company.js:540
#: templates/js/translated/company.js:829 templates/js/translated/part.js:1324
msgid "Link"
msgstr "Ссылка"
-#: InvenTree/models.py:140 build/models.py:332 part/models.py:831
+#: InvenTree/models.py:196 build/models.py:332 part/models.py:861
#: stock/models.py:529
msgid "Link to external URL"
msgstr "Ссылка на внешний URL"
-#: InvenTree/models.py:143 templates/js/translated/attachment.js:163
+#: InvenTree/models.py:199 templates/js/translated/attachment.js:163
msgid "Comment"
msgstr "Комментарий"
-#: InvenTree/models.py:143
+#: InvenTree/models.py:199
msgid "File comment"
msgstr "Комментарий к файлу"
-#: InvenTree/models.py:149 InvenTree/models.py:150 common/models.py:1223
-#: common/models.py:1224 common/models.py:1452 common/models.py:1453
-#: part/models.py:2265 part/models.py:2285
+#: InvenTree/models.py:205 InvenTree/models.py:206 common/models.py:1235
+#: common/models.py:1236 common/models.py:1464 common/models.py:1465
+#: part/models.py:2301 part/models.py:2321
#: report/templates/report/inventree_test_report_base.html:96
-#: templates/js/translated/stock.js:2692
+#: templates/js/translated/stock.js:2816
msgid "User"
msgstr "Пользователь"
-#: InvenTree/models.py:153
+#: InvenTree/models.py:209
msgid "upload date"
msgstr "дата загрузки"
-#: InvenTree/models.py:176
+#: InvenTree/models.py:232
msgid "Filename must not be empty"
msgstr "Имя файла не должно быть пустым"
-#: InvenTree/models.py:199
+#: InvenTree/models.py:255
msgid "Invalid attachment directory"
msgstr "Неверная директория вложений"
-#: InvenTree/models.py:209
+#: InvenTree/models.py:265
#, python-brace-format
msgid "Filename contains illegal character '{c}'"
msgstr "Имя файла содержит запрещенные символы '{c}'"
-#: InvenTree/models.py:212
+#: InvenTree/models.py:268
msgid "Filename missing extension"
msgstr "Отсутствует расширение для имени файла"
-#: InvenTree/models.py:219
+#: InvenTree/models.py:275
msgid "Attachment with this filename already exists"
msgstr "Вложение с таким именем файла уже существует"
-#: InvenTree/models.py:226
+#: InvenTree/models.py:282
msgid "Error renaming file"
msgstr "Ошибка переименования файла"
-#: InvenTree/models.py:261
+#: InvenTree/models.py:317
msgid "Invalid choice"
msgstr "Неверный выбор"
-#: InvenTree/models.py:277 InvenTree/models.py:278 common/models.py:1438
-#: company/models.py:415 label/models.py:112 part/models.py:774
-#: part/models.py:2449 plugin/models.py:40 report/models.py:181
+#: InvenTree/models.py:333 InvenTree/models.py:334 common/models.py:1450
+#: company/models.py:415 label/models.py:112 part/models.py:804
+#: part/models.py:2485 plugin/models.py:40 report/models.py:181
#: templates/InvenTree/settings/mixins/urls.html:13
#: templates/InvenTree/settings/plugin.html:48
#: templates/InvenTree/settings/plugin.html:125
#: templates/InvenTree/settings/plugin_settings.html:23
-#: templates/InvenTree/settings/settings.html:282
+#: templates/InvenTree/settings/settings.html:319
#: templates/js/translated/company.js:641 templates/js/translated/part.js:567
#: templates/js/translated/part.js:706 templates/js/translated/part.js:1631
-#: templates/js/translated/stock.js:2485
+#: templates/js/translated/stock.js:2609
msgid "Name"
msgstr "Название"
-#: InvenTree/models.py:284 build/models.py:209
+#: InvenTree/models.py:340 build/models.py:209
#: build/templates/build/detail.html:25 company/models.py:354
#: company/models.py:570 company/templates/company/company_base.html:68
#: company/templates/company/manufacturer_part.html:76
#: company/templates/company/supplier_part.html:73 label/models.py:119
-#: order/models.py:125 part/models.py:797 part/templates/part/category.html:74
+#: order/models.py:125 part/models.py:827 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:93
#: templates/InvenTree/settings/plugin_settings.html:33
-#: templates/js/translated/bom.js:339 templates/js/translated/bom.js:552
-#: templates/js/translated/build.js:1682 templates/js/translated/company.js:345
+#: templates/js/translated/bom.js:552 templates/js/translated/bom.js:765
+#: templates/js/translated/build.js:1920 templates/js/translated/company.js:345
#: templates/js/translated/company.js:551
#: templates/js/translated/company.js:840 templates/js/translated/order.js:836
#: templates/js/translated/order.js:1019 templates/js/translated/order.js:1258
#: templates/js/translated/part.js:626 templates/js/translated/part.js:999
#: templates/js/translated/part.js:1084 templates/js/translated/part.js:1254
#: templates/js/translated/part.js:1650 templates/js/translated/part.js:1719
-#: templates/js/translated/stock.js:1577 templates/js/translated/stock.js:2314
-#: templates/js/translated/stock.js:2497 templates/js/translated/stock.js:2542
+#: templates/js/translated/stock.js:1701 templates/js/translated/stock.js:2438
+#: templates/js/translated/stock.js:2621 templates/js/translated/stock.js:2666
msgid "Description"
msgstr "Описание"
-#: InvenTree/models.py:285
+#: InvenTree/models.py:341
msgid "Description (optional)"
msgstr "Описание (необязательно)"
-#: InvenTree/models.py:293
+#: InvenTree/models.py:349
msgid "parent"
msgstr "родитель"
-#: InvenTree/serializers.py:65 part/models.py:2734
+#: InvenTree/serializers.py:65 part/models.py:2803
msgid "Must be a valid number"
msgstr "Должно быть действительным номером"
@@ -253,83 +253,127 @@ msgstr "Должно быть действительным номером"
msgid "Filename"
msgstr "Имя файла"
-#: InvenTree/settings.py:661
+#: InvenTree/serializers.py:334
+msgid "Invalid value"
+msgstr ""
+
+#: InvenTree/serializers.py:355
+msgid "Data File"
+msgstr ""
+
+#: InvenTree/serializers.py:356
+msgid "Select data file for upload"
+msgstr ""
+
+#: InvenTree/serializers.py:380
+msgid "Unsupported file type"
+msgstr ""
+
+#: InvenTree/serializers.py:386
+msgid "File is too large"
+msgstr ""
+
+#: InvenTree/serializers.py:407
+msgid "No columns found in file"
+msgstr ""
+
+#: InvenTree/serializers.py:410
+msgid "No data rows found in file"
+msgstr ""
+
+#: InvenTree/serializers.py:533
+msgid "No data rows provided"
+msgstr ""
+
+#: InvenTree/serializers.py:536
+msgid "No data columns supplied"
+msgstr ""
+
+#: InvenTree/serializers.py:623
+msgid "Missing required column"
+msgstr ""
+
+#: InvenTree/serializers.py:632
+msgid "Duplicate column"
+msgstr ""
+
+#: InvenTree/settings.py:655
msgid "German"
msgstr "Немецкий"
-#: InvenTree/settings.py:662
+#: InvenTree/settings.py:656
msgid "Greek"
msgstr "Греческий"
-#: InvenTree/settings.py:663
+#: InvenTree/settings.py:657
msgid "English"
msgstr "Английский"
-#: InvenTree/settings.py:664
+#: InvenTree/settings.py:658
msgid "Spanish"
msgstr "Испанский"
-#: InvenTree/settings.py:665
+#: InvenTree/settings.py:659
msgid "Spanish (Mexican)"
msgstr "Испанский (Мексика)"
-#: InvenTree/settings.py:666
+#: InvenTree/settings.py:660
msgid "French"
msgstr "Французский"
-#: InvenTree/settings.py:667
+#: InvenTree/settings.py:661
msgid "Hebrew"
msgstr "Иврит"
-#: InvenTree/settings.py:668
+#: InvenTree/settings.py:662
msgid "Italian"
msgstr "Итальянский"
-#: InvenTree/settings.py:669
+#: InvenTree/settings.py:663
msgid "Japanese"
msgstr "Японский"
-#: InvenTree/settings.py:670
+#: InvenTree/settings.py:664
msgid "Korean"
msgstr "Корейский"
-#: InvenTree/settings.py:671
+#: InvenTree/settings.py:665
msgid "Dutch"
msgstr "Голландский"
-#: InvenTree/settings.py:672
+#: InvenTree/settings.py:666
msgid "Norwegian"
msgstr "Норвежский"
-#: InvenTree/settings.py:673
+#: InvenTree/settings.py:667
msgid "Polish"
msgstr "Польский"
-#: InvenTree/settings.py:674
+#: InvenTree/settings.py:668
msgid "Portugese"
msgstr "Португальский"
-#: InvenTree/settings.py:675
+#: InvenTree/settings.py:669
msgid "Russian"
msgstr "Русский"
-#: InvenTree/settings.py:676
+#: InvenTree/settings.py:670
msgid "Swedish"
msgstr "Шведский"
-#: InvenTree/settings.py:677
+#: InvenTree/settings.py:671
msgid "Thai"
msgstr "Тайский"
-#: InvenTree/settings.py:678
+#: InvenTree/settings.py:672
msgid "Turkish"
msgstr "Турецкий"
-#: InvenTree/settings.py:679
+#: InvenTree/settings.py:673
msgid "Vietnamese"
msgstr "Вьетнамский"
-#: InvenTree/settings.py:680
+#: InvenTree/settings.py:674
msgid "Chinese"
msgstr "Китайский"
@@ -346,7 +390,7 @@ msgid "InvenTree system health checks failed"
msgstr "Ошибка проверки состояния системы InvenTree"
#: InvenTree/status_codes.py:101 InvenTree/status_codes.py:142
-#: InvenTree/status_codes.py:316 templates/js/translated/table_filters.js:313
+#: InvenTree/status_codes.py:316 templates/js/translated/table_filters.js:308
msgid "Pending"
msgstr "Ожидаемый"
@@ -456,7 +500,7 @@ msgstr "Отделить от родительского элемента"
msgid "Split child item"
msgstr "Разбить дочерний элемент"
-#: InvenTree/status_codes.py:294 templates/js/translated/stock.js:2072
+#: InvenTree/status_codes.py:294 templates/js/translated/stock.js:2196
msgid "Merged stock items"
msgstr "Объединенные позиции на складе"
@@ -484,41 +528,41 @@ msgstr "Получено по заказу на покупку"
msgid "Production"
msgstr "Продукция"
-#: InvenTree/validators.py:23
+#: InvenTree/validators.py:25
msgid "Not a valid currency code"
msgstr "Неверный код валюты"
-#: InvenTree/validators.py:51
+#: InvenTree/validators.py:53
msgid "Invalid character in part name"
msgstr "Неверный символ в названии части"
-#: InvenTree/validators.py:64
+#: InvenTree/validators.py:66
#, python-brace-format
msgid "IPN must match regex pattern {pat}"
msgstr "IPN должен совпадать с регулярным выражением {pat}"
-#: InvenTree/validators.py:78 InvenTree/validators.py:92
-#: InvenTree/validators.py:106
+#: InvenTree/validators.py:80 InvenTree/validators.py:94
+#: InvenTree/validators.py:108
#, python-brace-format
msgid "Reference must match pattern {pattern}"
msgstr "Ссылка должна соответствовать шаблону {pattern}"
-#: InvenTree/validators.py:114
+#: InvenTree/validators.py:116
#, python-brace-format
msgid "Illegal character in name ({x})"
msgstr "Недопустимый символ в имени ({x})"
-#: InvenTree/validators.py:133 InvenTree/validators.py:149
+#: InvenTree/validators.py:137 InvenTree/validators.py:153
msgid "Overage value must not be negative"
msgstr "Значение перегрузки не должно быть отрицательным"
-#: InvenTree/validators.py:151
+#: InvenTree/validators.py:155
msgid "Overage must not exceed 100%"
msgstr "Перегрузка не может превысить 100%"
-#: InvenTree/validators.py:158
-msgid "Overage must be an integer value or a percentage"
-msgstr "Превышение должно быть целым числом или процентом"
+#: InvenTree/validators.py:162
+msgid "Invalid value for overage"
+msgstr ""
#: InvenTree/views.py:538
msgid "Delete Item"
@@ -584,69 +628,11 @@ msgstr ""
msgid "Barcode associated with Stock Item"
msgstr ""
-#: build/forms.py:36 build/models.py:1293
-#: build/templates/build/build_base.html:82
-#: build/templates/build/detail.html:35 common/models.py:1263
-#: company/forms.py:42 company/templates/company/supplier_part.html:251
-#: order/models.py:805 order/models.py:1229 order/serializers.py:816
-#: order/templates/order/order_wizard/match_parts.html:30
-#: order/templates/order/order_wizard/select_parts.html:34 part/forms.py:144
-#: part/forms.py:160 part/forms.py:176 part/models.py:2636
-#: part/templates/part/bom_upload/match_parts.html:31
-#: part/templates/part/detail.html:992 part/templates/part/detail.html:1078
-#: part/templates/part/part_pricing.html:16
-#: report/templates/report/inventree_build_order_base.html:114
-#: report/templates/report/inventree_po_report.html:91
-#: report/templates/report/inventree_so_report.html:91
-#: report/templates/report/inventree_test_report_base.html:81
-#: report/templates/report/inventree_test_report_base.html:139
-#: stock/forms.py:142 stock/serializers.py:293
-#: stock/templates/stock/item_base.html:181
-#: stock/templates/stock/item_base.html:262
-#: stock/templates/stock/item_base.html:270
-#: templates/js/translated/barcode.js:385 templates/js/translated/bom.js:567
-#: templates/js/translated/build.js:295 templates/js/translated/build.js:495
-#: templates/js/translated/build.js:689 templates/js/translated/build.js:699
-#: templates/js/translated/build.js:1075 templates/js/translated/build.js:1422
-#: templates/js/translated/model_renderers.js:99
-#: templates/js/translated/order.js:101 templates/js/translated/order.js:1056
-#: 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:906
-#: templates/js/translated/part.js:1862 templates/js/translated/part.js:1985
-#: templates/js/translated/part.js:2063 templates/js/translated/stock.js:391
-#: templates/js/translated/stock.js:588 templates/js/translated/stock.js:758
-#: templates/js/translated/stock.js:2677 templates/js/translated/stock.js:2779
-msgid "Quantity"
-msgstr "Количество"
-
-#: build/forms.py:37
-msgid "Enter quantity for build output"
-msgstr "Введите количество для вывода сборки"
-
-#: build/forms.py:41 order/serializers.py:820 stock/forms.py:81
-#: stock/serializers.py:314 templates/js/translated/stock.js:238
-#: templates/js/translated/stock.js:392
-msgid "Serial Numbers"
-msgstr "Серийные номера"
-
-#: build/forms.py:43
-msgid "Enter serial numbers for build outputs"
-msgstr "Введите серийные номера для результатов сборки"
-
-#: build/forms.py:49
-msgid "Confirm creation of build output"
-msgstr "Подтвердите создание выходной информации сборки"
-
-#: build/forms.py:70
-msgid "Confirm deletion of build output"
-msgstr "Подтвердите удаление результатов сборки"
-
-#: build/forms.py:89
+#: build/forms.py:20
msgid "Confirm cancel"
msgstr "Подтвердите отмену"
-#: build/forms.py:89 build/views.py:65
+#: build/forms.py:20 build/views.py:62
msgid "Confirm build cancellation"
msgstr "Подтвердите отмену сборки"
@@ -657,7 +643,7 @@ msgstr "Неверный выбор для родительской сборки
#: build/models.py:139 build/templates/build/build_base.html:9
#: build/templates/build/build_base.html:27
#: report/templates/report/inventree_build_order_base.html:106
-#: templates/js/translated/build.js:457 templates/js/translated/stock.js:2290
+#: templates/js/translated/build.js:676 templates/js/translated/stock.js:2414
msgid "Build Order"
msgstr "Порядок сборки"
@@ -665,7 +651,7 @@ msgstr "Порядок сборки"
#: 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
+#: part/templates/part/part_sidebar.html:21 templates/InvenTree/index.html:221
#: templates/InvenTree/search.html:139
#: templates/InvenTree/settings/sidebar.html:43 users/models.py:44
msgid "Build Orders"
@@ -676,11 +662,11 @@ msgid "Build Order Reference"
msgstr "Ссылка на заказ"
#: build/models.py:201 order/models.py:213 order/models.py:541
-#: order/models.py:812 part/models.py:2645
-#: part/templates/part/bom_upload/match_parts.html:30
+#: order/models.py:812 part/models.py:2714
+#: part/templates/part/upload_bom.html:54
#: report/templates/report/inventree_po_report.html:92
#: report/templates/report/inventree_so_report.html:92
-#: templates/js/translated/bom.js:559 templates/js/translated/build.js:1179
+#: templates/js/translated/bom.js:772 templates/js/translated/build.js:1401
#: templates/js/translated/order.js:1050 templates/js/translated/order.js:2144
msgid "Reference"
msgstr "Отсылка"
@@ -689,7 +675,7 @@ msgstr "Отсылка"
msgid "Brief description of the build"
msgstr "Краткое описание сборки"
-#: build/models.py:221 build/templates/build/build_base.html:164
+#: build/models.py:221 build/templates/build/build_base.html:169
#: build/templates/build/detail.html:88
msgid "Parent Build"
msgstr "Родительская сборка"
@@ -702,30 +688,31 @@ msgstr ""
#: build/templates/build/detail.html:30 company/models.py:705
#: order/models.py:876 order/models.py:950
#: order/templates/order/order_wizard/select_parts.html:32 part/models.py:359
-#: part/models.py:2211 part/models.py:2227 part/models.py:2246
-#: part/models.py:2263 part/models.py:2365 part/models.py:2487
-#: part/models.py:2620 part/models.py:2927 part/serializers.py:658
-#: part/templates/part/part_app_base.html:8
+#: part/models.py:2247 part/models.py:2263 part/models.py:2282
+#: part/models.py:2299 part/models.py:2401 part/models.py:2523
+#: part/models.py:2613 part/models.py:2689 part/models.py:2996
+#: part/serializers.py:666 part/templates/part/part_app_base.html:8
#: part/templates/part/part_pricing.html:12
#: part/templates/part/set_category.html:13
+#: part/templates/part/upload_bom.html:52
#: 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: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:338
-#: templates/js/translated/bom.js:517 templates/js/translated/build.js:680
-#: templates/js/translated/build.js:1048 templates/js/translated/build.js:1419
-#: templates/js/translated/build.js:1687 templates/js/translated/company.js:492
+#: templates/js/translated/barcode.js:383 templates/js/translated/bom.js:551
+#: templates/js/translated/bom.js:730 templates/js/translated/build.js:902
+#: templates/js/translated/build.js:1270 templates/js/translated/build.js:1655
+#: templates/js/translated/build.js:1925 templates/js/translated/company.js:492
#: templates/js/translated/company.js:749 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:984
#: templates/js/translated/part.js:1065 templates/js/translated/part.js:1232
-#: templates/js/translated/stock.js:562 templates/js/translated/stock.js:727
-#: templates/js/translated/stock.js:934 templates/js/translated/stock.js:1534
-#: templates/js/translated/stock.js:2767
+#: templates/js/translated/stock.js:563 templates/js/translated/stock.js:728
+#: templates/js/translated/stock.js:935 templates/js/translated/stock.js:1658
+#: templates/js/translated/stock.js:2891 templates/js/translated/stock.js:2990
msgid "Part"
msgstr "Детали"
@@ -741,7 +728,7 @@ msgstr "Отсылка на заказ"
msgid "SalesOrder to which this build is allocated"
msgstr ""
-#: build/models.py:249 templates/js/translated/build.js:1407
+#: build/models.py:249 templates/js/translated/build.js:1643
#: templates/js/translated/order.js:1564
msgid "Source Location"
msgstr "Расположение источника"
@@ -782,15 +769,15 @@ msgstr "Статус сборки"
msgid "Build status code"
msgstr "Код статуса сборки"
-#: build/models.py:287 stock/models.py:533
+#: build/models.py:287 build/serializers.py:218 stock/models.py:533
msgid "Batch Code"
msgstr "Штрих код"
-#: build/models.py:291
+#: build/models.py:291 build/serializers.py:219
msgid "Batch code for this build output"
msgstr "Штрих код для этого вывода сборки"
-#: build/models.py:294 order/models.py:129 part/models.py:969
+#: build/models.py:294 order/models.py:129 part/models.py:999
#: part/templates/part/part_base.html:313 templates/js/translated/order.js:1271
msgid "Creation Date"
msgstr "Дата создания"
@@ -804,7 +791,7 @@ msgid "Target date for build completion. Build will be overdue after this date."
msgstr "Целевая дата для сборки. Сборка будет просрочена после этой даты."
#: build/models.py:302 order/models.py:255
-#: templates/js/translated/build.js:1758
+#: templates/js/translated/build.js:1996
msgid "Completion Date"
msgstr "Дата завершения"
@@ -812,7 +799,7 @@ msgstr "Дата завершения"
msgid "completed by"
msgstr "выполнено"
-#: build/models.py:316 templates/js/translated/build.js:1729
+#: build/models.py:316 templates/js/translated/build.js:1967
msgid "Issued by"
msgstr "Выдал/ла"
@@ -820,12 +807,12 @@ msgstr "Выдал/ла"
msgid "User who issued this build order"
msgstr "Пользователь, выпустивший этот заказ на сборку"
-#: build/models.py:325 build/templates/build/build_base.html:185
+#: build/models.py:325 build/templates/build/build_base.html:190
#: build/templates/build/detail.html:116 order/models.py:143
#: order/templates/order/order_base.html:170
-#: order/templates/order/sales_order_base.html:182 part/models.py:973
+#: order/templates/order/sales_order_base.html:182 part/models.py:1003
#: report/templates/report/inventree_build_order_base.html:159
-#: templates/js/translated/build.js:1741 templates/js/translated/order.js:864
+#: templates/js/translated/build.js:1979 templates/js/translated/order.js:864
msgid "Responsible"
msgstr "Ответственный"
@@ -837,26 +824,26 @@ msgstr "Пользователь ответственный за этот зак
#: company/templates/company/manufacturer_part.html:102
#: company/templates/company/supplier_part.html:126
#: part/templates/part/part_base.html:354 stock/models.py:527
-#: stock/templates/stock/item_base.html:373
+#: stock/templates/stock/item_base.html:375
msgid "External Link"
msgstr "Внешняя ссылка"
-#: build/models.py:336 build/serializers.py:201
+#: build/models.py:336 build/serializers.py:380
#: build/templates/build/sidebar.html:21 company/models.py:142
#: company/models.py:577 company/templates/company/sidebar.html:25
#: order/models.py:147 order/models.py:814 order/models.py:1071
#: order/templates/order/po_sidebar.html:11
-#: order/templates/order/so_sidebar.html:17 part/models.py:958
-#: part/templates/part/detail.html:137 part/templates/part/part_sidebar.html:54
+#: order/templates/order/so_sidebar.html:17 part/models.py:988
+#: part/templates/part/detail.html:140 part/templates/part/part_sidebar.html:57
#: report/templates/report/inventree_build_order_base.html:173
-#: stock/forms.py:140 stock/forms.py:190 stock/forms.py:224 stock/models.py:599
+#: stock/forms.py:137 stock/forms.py:171 stock/models.py:599
#: stock/models.py:1895 stock/models.py:2001 stock/serializers.py:332
-#: stock/serializers.py:640 stock/serializers.py:738 stock/serializers.py:870
+#: stock/serializers.py:697 stock/serializers.py:795 stock/serializers.py:927
#: stock/templates/stock/stock_sidebar.html:25
-#: templates/js/translated/barcode.js:58 templates/js/translated/bom.js:723
+#: templates/js/translated/barcode.js:58 templates/js/translated/bom.js:936
#: templates/js/translated/company.js:845 templates/js/translated/order.js:1149
#: templates/js/translated/order.js:1445 templates/js/translated/order.js:2280
-#: templates/js/translated/stock.js:1317 templates/js/translated/stock.js:1803
+#: templates/js/translated/stock.js:1345 templates/js/translated/stock.js:1927
msgid "Notes"
msgstr "Заметки"
@@ -864,208 +851,284 @@ msgstr "Заметки"
msgid "Extra build notes"
msgstr "Дополнительные заметки к сборке"
-#: build/models.py:717
+#: build/models.py:756
msgid "No build output specified"
msgstr "Вывод сборки не указан"
-#: build/models.py:720
+#: build/models.py:759
msgid "Build output is already completed"
msgstr "Вывод сборки уже завершен"
-#: build/models.py:723
+#: build/models.py:762
msgid "Build output does not match Build Order"
msgstr "Вывод сборки не совпадает с порядком сборки"
-#: build/models.py:1115
+#: build/models.py:1154
msgid "Build item must specify a build output, as master part is marked as trackable"
msgstr "Элемент сборки должен указать вывод сборки, так как основная часть помечена как отслеживаемая"
-#: build/models.py:1124
+#: build/models.py:1163
#, python-brace-format
msgid "Allocated quantity ({q}) must not execed available stock quantity ({a})"
msgstr "Выделенное количество ({q}) не должно превышать доступное количество на складе ({a})"
-#: build/models.py:1134
+#: build/models.py:1173
msgid "Stock item is over-allocated"
msgstr "Предмет на складе перераспределен"
-#: build/models.py:1140 order/models.py:1189
+#: build/models.py:1179 order/models.py:1189
msgid "Allocation quantity must be greater than zero"
msgstr "Выделенное количество должно быть больше нуля"
-#: build/models.py:1146
+#: build/models.py:1185
msgid "Quantity must be 1 for serialized stock"
msgstr "Количество должно быть 1 для сериализованных запасов"
-#: build/models.py:1203
+#: build/models.py:1242
msgid "Selected stock item not found in BOM"
msgstr "Выбранный предмет со складом не найден в BOM"
-#: build/models.py:1263 stock/templates/stock/item_base.html:345
-#: templates/InvenTree/search.html:137 templates/js/translated/build.js:1660
+#: build/models.py:1302 stock/templates/stock/item_base.html:347
+#: templates/InvenTree/search.html:137 templates/js/translated/build.js:1898
#: templates/navbar.html:35
msgid "Build"
msgstr "Сборка"
-#: build/models.py:1264
+#: build/models.py:1303
msgid "Build to allocate parts"
msgstr ""
-#: build/models.py:1280 build/serializers.py:388 order/serializers.py:696
-#: order/serializers.py:714 stock/serializers.py:578 stock/serializers.py:696
-#: stock/templates/stock/item_base.html:9
+#: build/models.py:1319 build/serializers.py:570 order/serializers.py:696
+#: order/serializers.py:714 stock/serializers.py:404 stock/serializers.py:635
+#: stock/serializers.py:753 stock/templates/stock/item_base.html:9
#: stock/templates/stock/item_base.html:23
-#: stock/templates/stock/item_base.html:367
-#: templates/js/translated/build.js:468 templates/js/translated/build.js:473
-#: templates/js/translated/build.js:1421 templates/js/translated/build.js:1803
+#: stock/templates/stock/item_base.html:369
+#: templates/js/translated/build.js:687 templates/js/translated/build.js:692
+#: templates/js/translated/build.js:1657 templates/js/translated/build.js:2041
#: 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:563 templates/js/translated/stock.js:728
-#: templates/js/translated/stock.js:2628
+#: templates/js/translated/stock.js:564 templates/js/translated/stock.js:729
+#: templates/js/translated/stock.js:2752
msgid "Stock Item"
msgstr "Предметы на складе"
-#: build/models.py:1281
+#: build/models.py:1320
msgid "Source stock item"
msgstr "Исходный складской предмет"
-#: build/models.py:1294
+#: build/models.py:1332 build/serializers.py:188
+#: build/templates/build/build_base.html:82
+#: build/templates/build/detail.html:35 common/models.py:1275
+#: company/forms.py:42 company/templates/company/supplier_part.html:251
+#: order/models.py:805 order/models.py:1229 order/serializers.py:816
+#: order/templates/order/order_wizard/match_parts.html:30
+#: order/templates/order/order_wizard/select_parts.html:34 part/forms.py:144
+#: part/forms.py:160 part/forms.py:176 part/models.py:2705
+#: part/templates/part/detail.html:995 part/templates/part/detail.html:1081
+#: part/templates/part/part_pricing.html:16
+#: part/templates/part/upload_bom.html:53
+#: report/templates/report/inventree_build_order_base.html:114
+#: report/templates/report/inventree_po_report.html:91
+#: report/templates/report/inventree_so_report.html:91
+#: report/templates/report/inventree_test_report_base.html:81
+#: report/templates/report/inventree_test_report_base.html:139
+#: stock/forms.py:139 stock/serializers.py:293
+#: stock/templates/stock/item_base.html:183
+#: stock/templates/stock/item_base.html:264
+#: stock/templates/stock/item_base.html:272
+#: templates/js/translated/barcode.js:385 templates/js/translated/bom.js:780
+#: templates/js/translated/build.js:375 templates/js/translated/build.js:523
+#: templates/js/translated/build.js:714 templates/js/translated/build.js:911
+#: templates/js/translated/build.js:921 templates/js/translated/build.js:1297
+#: templates/js/translated/build.js:1658
+#: templates/js/translated/model_renderers.js:99
+#: templates/js/translated/order.js:101 templates/js/translated/order.js:1056
+#: 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:906
+#: templates/js/translated/part.js:1862 templates/js/translated/part.js:1985
+#: templates/js/translated/part.js:2063 templates/js/translated/stock.js:392
+#: templates/js/translated/stock.js:589 templates/js/translated/stock.js:759
+#: templates/js/translated/stock.js:2801 templates/js/translated/stock.js:2903
+msgid "Quantity"
+msgstr "Количество"
+
+#: build/models.py:1333
msgid "Stock quantity to allocate to build"
msgstr ""
-#: build/models.py:1302
+#: build/models.py:1341
msgid "Install into"
msgstr ""
-#: build/models.py:1303
+#: build/models.py:1342
msgid "Destination stock item"
msgstr ""
-#: build/serializers.py:137 build/serializers.py:417
+#: build/serializers.py:138 build/serializers.py:599
msgid "Build Output"
msgstr ""
-#: build/serializers.py:146
+#: build/serializers.py:150
msgid "Build output does not match the parent build"
msgstr ""
-#: build/serializers.py:150
+#: build/serializers.py:154
msgid "Output part does not match BuildOrder part"
msgstr ""
-#: build/serializers.py:154
+#: build/serializers.py:158
msgid "This build output has already been completed"
msgstr ""
-#: build/serializers.py:158
+#: build/serializers.py:164
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:731
-#: stock/serializers.py:972 stock/templates/stock/item_base.html:313
-#: templates/js/translated/barcode.js:384
-#: templates/js/translated/barcode.js:557 templates/js/translated/build.js:480
-#: templates/js/translated/build.js:1087 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:179 templates/js/translated/stock.js:564
-#: templates/js/translated/stock.js:729 templates/js/translated/stock.js:936
-#: templates/js/translated/stock.js:1684 templates/js/translated/stock.js:2569
-msgid "Location"
-msgstr "Расположение"
+#: build/serializers.py:189
+msgid "Enter quantity for build output"
+msgstr "Введите количество для вывода сборки"
-#: build/serializers.py:191
-msgid "Location for completed build outputs"
-msgstr ""
-
-#: build/serializers.py:197 build/templates/build/build_base.html:137
-#: build/templates/build/detail.html:63 order/models.py:557
-#: order/serializers.py:247 stock/templates/stock/item_base.html:187
-#: templates/js/translated/barcode.js:140 templates/js/translated/build.js:1716
-#: templates/js/translated/order.js:591 templates/js/translated/order.js:840
-#: templates/js/translated/order.js:1263 templates/js/translated/stock.js:1659
-#: templates/js/translated/stock.js:2646 templates/js/translated/stock.js:2795
-msgid "Status"
-msgstr "Статус"
-
-#: build/serializers.py:213
-msgid "A list of build outputs must be provided"
-msgstr ""
-
-#: build/serializers.py:249
-msgid "Accept Unallocated"
-msgstr ""
-
-#: build/serializers.py:250
-msgid "Accept that stock items have not been fully allocated to this build order"
-msgstr ""
-
-#: build/serializers.py:260 templates/js/translated/build.js:149
-msgid "Required stock has not been fully allocated"
-msgstr ""
-
-#: build/serializers.py:265
-msgid "Accept Incomplete"
-msgstr ""
-
-#: build/serializers.py:266
-msgid "Accept that the required number of build outputs have not been completed"
-msgstr ""
-
-#: build/serializers.py:276 templates/js/translated/build.js:153
-msgid "Required build quantity has not been completed"
-msgstr ""
-
-#: build/serializers.py:285
-msgid "Build order has incomplete outputs"
-msgstr ""
-
-#: build/serializers.py:313 build/serializers.py:362 part/models.py:2760
-#: part/models.py:2919
-msgid "BOM Item"
-msgstr "BOM Компонент"
-
-#: build/serializers.py:323
-msgid "Build output"
-msgstr ""
-
-#: build/serializers.py:332
-msgid "Build output must point to the same build"
-msgstr ""
-
-#: build/serializers.py:379
-msgid "bom_item.part must point to the same part as the build order"
-msgstr ""
-
-#: build/serializers.py:394 stock/serializers.py:585
-msgid "Item must be in stock"
-msgstr "Компонент должен быть в наличии"
-
-#: build/serializers.py:408 order/models.py:280 order/serializers.py:240
+#: build/serializers.py:201 build/serializers.py:590 order/models.py:280
+#: order/serializers.py:240 part/serializers.py:471 part/serializers.py:827
#: stock/models.py:367 stock/models.py:1105 stock/serializers.py:305
msgid "Quantity must be greater than zero"
msgstr "Количество должно быть больше нуля"
-#: build/serializers.py:450 order/serializers.py:747
+#: build/serializers.py:208
+msgid "Integer quantity required for trackable parts"
+msgstr ""
+
+#: build/serializers.py:211
+msgid "Integer quantity required, as the bill of materials contains trackable parts"
+msgstr ""
+
+#: build/serializers.py:225 order/serializers.py:820 stock/forms.py:78
+#: stock/serializers.py:314 templates/js/translated/stock.js:239
+#: templates/js/translated/stock.js:393
+msgid "Serial Numbers"
+msgstr "Серийные номера"
+
+#: build/serializers.py:226
+msgid "Enter serial numbers for build outputs"
+msgstr "Введите серийные номера для результатов сборки"
+
+#: build/serializers.py:239
+msgid "Auto Allocate Serial Numbers"
+msgstr ""
+
+#: build/serializers.py:240
+msgid "Automatically allocate required items with matching serial numbers"
+msgstr ""
+
+#: build/serializers.py:274 stock/api.py:551
+msgid "The following serial numbers already exist"
+msgstr ""
+
+#: build/serializers.py:327 build/serializers.py:392
+msgid "A list of build outputs must be provided"
+msgstr ""
+
+#: build/serializers.py:369 order/serializers.py:226 order/serializers.py:294
+#: stock/forms.py:169 stock/serializers.py:325 stock/serializers.py:788
+#: stock/serializers.py:1029 stock/templates/stock/item_base.html:315
+#: templates/js/translated/barcode.js:384
+#: templates/js/translated/barcode.js:557 templates/js/translated/build.js:699
+#: templates/js/translated/build.js:1309 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:179 templates/js/translated/stock.js:565
+#: templates/js/translated/stock.js:730 templates/js/translated/stock.js:937
+#: templates/js/translated/stock.js:1808 templates/js/translated/stock.js:2693
+msgid "Location"
+msgstr "Расположение"
+
+#: build/serializers.py:370
+msgid "Location for completed build outputs"
+msgstr ""
+
+#: build/serializers.py:376 build/templates/build/build_base.html:142
+#: build/templates/build/detail.html:63 order/models.py:557
+#: order/serializers.py:247 stock/templates/stock/item_base.html:189
+#: templates/js/translated/barcode.js:140 templates/js/translated/build.js:1954
+#: templates/js/translated/order.js:591 templates/js/translated/order.js:840
+#: templates/js/translated/order.js:1263 templates/js/translated/stock.js:1783
+#: templates/js/translated/stock.js:2770 templates/js/translated/stock.js:2919
+msgid "Status"
+msgstr "Статус"
+
+#: build/serializers.py:428
+msgid "Accept Unallocated"
+msgstr ""
+
+#: build/serializers.py:429
+msgid "Accept that stock items have not been fully allocated to this build order"
+msgstr ""
+
+#: build/serializers.py:439 templates/js/translated/build.js:150
+msgid "Required stock has not been fully allocated"
+msgstr ""
+
+#: build/serializers.py:444
+msgid "Accept Incomplete"
+msgstr ""
+
+#: build/serializers.py:445
+msgid "Accept that the required number of build outputs have not been completed"
+msgstr ""
+
+#: build/serializers.py:455 templates/js/translated/build.js:154
+msgid "Required build quantity has not been completed"
+msgstr ""
+
+#: build/serializers.py:464
+msgid "Build order has incomplete outputs"
+msgstr ""
+
+#: build/serializers.py:467 build/templates/build/build_base.html:95
+msgid "No build outputs have been created for this build order"
+msgstr ""
+
+#: build/serializers.py:495 build/serializers.py:544 part/models.py:2829
+#: part/models.py:2988
+msgid "BOM Item"
+msgstr "BOM Компонент"
+
+#: build/serializers.py:505
+msgid "Build output"
+msgstr ""
+
+#: build/serializers.py:514
+msgid "Build output must point to the same build"
+msgstr ""
+
+#: build/serializers.py:561
+msgid "bom_item.part must point to the same part as the build order"
+msgstr ""
+
+#: build/serializers.py:576 stock/serializers.py:642
+msgid "Item must be in stock"
+msgstr "Компонент должен быть в наличии"
+
+#: build/serializers.py:632 order/serializers.py:747
#, python-brace-format
msgid "Available quantity ({q}) exceeded"
msgstr "Превышено доступное количество ({q})"
-#: build/serializers.py:456
+#: build/serializers.py:638
msgid "Build output must be specified for allocation of tracked parts"
msgstr ""
-#: build/serializers.py:463
+#: build/serializers.py:645
msgid "Build output cannot be specified for allocation of untracked parts"
msgstr ""
-#: build/serializers.py:491 order/serializers.py:990
+#: build/serializers.py:673 order/serializers.py:990
msgid "Allocation items must be provided"
msgstr ""
-#: build/tasks.py:92
+#: build/tasks.py:98
msgid "Stock required for build order"
msgstr "Для заказа сборки необходим остаток"
@@ -1088,7 +1151,7 @@ msgid "Edit Build"
msgstr "Редактировать сборку"
#: build/templates/build/build_base.html:56
-#: build/templates/build/build_base.html:215 build/views.py:56
+#: build/templates/build/build_base.html:220 build/views.py:53
msgid "Cancel Build"
msgstr "Отменить сборку"
@@ -1105,110 +1168,90 @@ msgstr "Завершить сборку"
msgid "Build Description"
msgstr ""
-#: build/templates/build/build_base.html:96
+#: build/templates/build/build_base.html:101
#, python-format
msgid "This Build Order is allocated to Sales Order %(link)s"
msgstr ""
-#: build/templates/build/build_base.html:103
+#: build/templates/build/build_base.html:108
#, python-format
msgid "This Build Order is a child of Build Order %(link)s"
msgstr ""
-#: build/templates/build/build_base.html:110
+#: build/templates/build/build_base.html:115
msgid "Build Order is ready to mark as completed"
msgstr ""
-#: build/templates/build/build_base.html:115
+#: build/templates/build/build_base.html:120
msgid "Build Order cannot be completed as outstanding outputs remain"
msgstr ""
-#: build/templates/build/build_base.html:120
+#: build/templates/build/build_base.html:125
msgid "Required build quantity has not yet been completed"
msgstr ""
-#: build/templates/build/build_base.html:125
+#: build/templates/build/build_base.html:130
msgid "Stock has not been fully allocated to this Build Order"
msgstr ""
-#: build/templates/build/build_base.html:146
+#: build/templates/build/build_base.html:151
#: build/templates/build/detail.html:132
#: order/templates/order/order_base.html:156
#: order/templates/order/sales_order_base.html:163
#: report/templates/report/inventree_build_order_base.html:126
-#: templates/js/translated/build.js:1753 templates/js/translated/order.js:854
+#: templates/js/translated/build.js:1991 templates/js/translated/order.js:854
#: templates/js/translated/order.js:1276
msgid "Target Date"
msgstr "Целевая дата"
-#: build/templates/build/build_base.html:151
+#: build/templates/build/build_base.html:156
#, python-format
msgid "This build was due on %(target)s"
msgstr ""
-#: build/templates/build/build_base.html:151
-#: build/templates/build/build_base.html:196
+#: build/templates/build/build_base.html:156
+#: build/templates/build/build_base.html:201
#: order/templates/order/order_base.html:98
#: order/templates/order/sales_order_base.html:93
-#: templates/js/translated/table_filters.js:299
-#: templates/js/translated/table_filters.js:340
-#: templates/js/translated/table_filters.js:361
+#: templates/js/translated/table_filters.js:294
+#: templates/js/translated/table_filters.js:335
+#: templates/js/translated/table_filters.js:356
msgid "Overdue"
msgstr "Просрочено"
-#: build/templates/build/build_base.html:158
+#: build/templates/build/build_base.html:163
#: build/templates/build/detail.html:68 build/templates/build/detail.html:143
#: order/templates/order/sales_order_base.html:170
-#: templates/js/translated/build.js:1702
-#: templates/js/translated/table_filters.js:370
+#: templates/js/translated/build.js:1940
+#: templates/js/translated/table_filters.js:365
msgid "Completed"
msgstr "Завершённые"
-#: build/templates/build/build_base.html:171
+#: build/templates/build/build_base.html:176
#: build/templates/build/detail.html:95 order/models.py:947
#: order/models.py:1043 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:307
-#: templates/js/translated/order.js:1218 templates/js/translated/stock.js:2304
+#: stock/templates/stock/item_base.html:309
+#: templates/js/translated/order.js:1218 templates/js/translated/stock.js:2428
msgid "Sales Order"
msgstr "Заказ покупателя"
-#: build/templates/build/build_base.html:178
+#: build/templates/build/build_base.html:183
#: build/templates/build/detail.html:109
#: report/templates/report/inventree_build_order_base.html:153
msgid "Issued By"
msgstr "Выдано"
-#: build/templates/build/build_base.html:223
+#: build/templates/build/build_base.html:228
msgid "Incomplete Outputs"
msgstr "Незавершенные выходные данные"
-#: build/templates/build/build_base.html:224
+#: build/templates/build/build_base.html:229
msgid "Build Order cannot be completed as incomplete build outputs remain"
msgstr ""
-#: build/templates/build/build_output_create.html:7
-msgid "The Bill of Materials contains trackable parts"
-msgstr ""
-
-#: build/templates/build/build_output_create.html:8
-msgid "Build outputs must be generated individually."
-msgstr ""
-
-#: build/templates/build/build_output_create.html:9
-msgid "Multiple build outputs will be created based on the quantity specified."
-msgstr ""
-
-#: build/templates/build/build_output_create.html:15
-msgid "Trackable parts can have serial numbers specified"
-msgstr ""
-
-#: build/templates/build/build_output_create.html:16
-msgid "Enter serial numbers to generate multiple single build outputs"
-msgstr ""
-
#: build/templates/build/cancel.html:5
msgid "Are you sure you wish to cancel this build?"
msgstr ""
@@ -1225,7 +1268,7 @@ msgstr ""
msgid "Stock can be taken from any available location."
msgstr ""
-#: build/templates/build/detail.html:50 order/models.py:898 stock/forms.py:136
+#: build/templates/build/detail.html:50 order/models.py:898 stock/forms.py:133
#: templates/js/translated/order.js:592 templates/js/translated/order.js:1138
msgid "Destination"
msgstr ""
@@ -1234,13 +1277,13 @@ msgstr ""
msgid "Destination location not specified"
msgstr ""
-#: build/templates/build/detail.html:74 templates/js/translated/build.js:707
+#: build/templates/build/detail.html:74 templates/js/translated/build.js:929
msgid "Allocated Parts"
msgstr ""
#: build/templates/build/detail.html:81
-#: stock/templates/stock/item_base.html:331
-#: templates/js/translated/stock.js:1673 templates/js/translated/stock.js:2802
+#: stock/templates/stock/item_base.html:333
+#: templates/js/translated/stock.js:1797 templates/js/translated/stock.js:2926
#: templates/js/translated/table_filters.js:151
#: templates/js/translated/table_filters.js:238
msgid "Batch"
@@ -1249,7 +1292,7 @@ msgstr "Партия"
#: build/templates/build/detail.html:127
#: order/templates/order/order_base.html:143
#: order/templates/order/sales_order_base.html:157
-#: templates/js/translated/build.js:1724
+#: templates/js/translated/build.js:1962
msgid "Created"
msgstr "Создано"
@@ -1269,7 +1312,7 @@ msgstr ""
msgid "Allocate Stock to Build"
msgstr ""
-#: build/templates/build/detail.html:177 templates/js/translated/build.js:1262
+#: build/templates/build/detail.html:177 templates/js/translated/build.js:1484
msgid "Unallocate stock"
msgstr ""
@@ -1329,52 +1372,60 @@ msgid "Output Actions"
msgstr ""
#: build/templates/build/detail.html:250
-msgid "Complete selected items"
+msgid "Complete selected build outputs"
msgstr ""
#: build/templates/build/detail.html:251
msgid "Complete outputs"
msgstr ""
-#: build/templates/build/detail.html:266
+#: build/templates/build/detail.html:253
+msgid "Delete selected build outputs"
+msgstr ""
+
+#: build/templates/build/detail.html:254
+msgid "Delete outputs"
+msgstr ""
+
+#: build/templates/build/detail.html:270
msgid "Completed Build Outputs"
msgstr ""
-#: build/templates/build/detail.html:278 build/templates/build/sidebar.html:19
+#: build/templates/build/detail.html:282 build/templates/build/sidebar.html:19
#: order/templates/order/po_sidebar.html:9
#: order/templates/order/purchase_order_detail.html:60
#: order/templates/order/sales_order_detail.html:107
-#: order/templates/order/so_sidebar.html:15 part/templates/part/detail.html:213
-#: part/templates/part/part_sidebar.html:52 stock/templates/stock/item.html:112
+#: order/templates/order/so_sidebar.html:15 part/templates/part/detail.html:216
+#: part/templates/part/part_sidebar.html:55 stock/templates/stock/item.html:112
#: stock/templates/stock/stock_sidebar.html:23
msgid "Attachments"
msgstr "Приложения"
-#: build/templates/build/detail.html:294
+#: build/templates/build/detail.html:298
msgid "Build Notes"
msgstr "Заметки сборки"
-#: build/templates/build/detail.html:298 build/templates/build/detail.html:453
+#: build/templates/build/detail.html:302 build/templates/build/detail.html:478
#: company/templates/company/detail.html:188
#: company/templates/company/detail.html:215
#: order/templates/order/purchase_order_detail.html:80
#: order/templates/order/purchase_order_detail.html:108
#: order/templates/order/sales_order_detail.html:127
#: order/templates/order/sales_order_detail.html:186
-#: part/templates/part/detail.html:141 stock/templates/stock/item.html:132
-#: stock/templates/stock/item.html:235
+#: part/templates/part/detail.html:144 stock/templates/stock/item.html:132
+#: stock/templates/stock/item.html:230
msgid "Edit Notes"
msgstr ""
-#: build/templates/build/detail.html:477
+#: build/templates/build/detail.html:502
msgid "Allocation Complete"
msgstr ""
-#: build/templates/build/detail.html:478
+#: build/templates/build/detail.html:503
msgid "All untracked stock items have been allocated"
msgstr ""
-#: build/templates/build/index.html:18 part/templates/part/detail.html:320
+#: build/templates/build/index.html:18 part/templates/part/detail.html:323
msgid "New Build Order"
msgstr ""
@@ -1406,51 +1457,11 @@ msgstr ""
msgid "Completed Items"
msgstr ""
-#: build/views.py:76
+#: build/views.py:73
msgid "Build was cancelled"
msgstr ""
-#: build/views.py:88
-msgid "Create Build Output"
-msgstr ""
-
-#: build/views.py:106
-msgid "Maximum output quantity is "
-msgstr ""
-
-#: build/views.py:122 stock/serializers.py:363 stock/views.py:1257
-msgid "Serial numbers already exist"
-msgstr ""
-
-#: build/views.py:131
-msgid "Serial numbers required for trackable build output"
-msgstr ""
-
-#: build/views.py:197
-msgid "Delete Build Output"
-msgstr ""
-
-#: build/views.py:218
-msgid "Confirm unallocation of build stock"
-msgstr ""
-
-#: build/views.py:219 stock/views.py:352
-msgid "Check the confirmation box"
-msgstr ""
-
-#: build/views.py:231
-msgid "Build output does not match build"
-msgstr ""
-
-#: build/views.py:233
-msgid "Build output must be specified"
-msgstr ""
-
-#: build/views.py:245
-msgid "Build output deleted"
-msgstr ""
-
-#: build/views.py:286
+#: build/views.py:114
msgid "Delete Build Order"
msgstr ""
@@ -1639,9 +1650,9 @@ msgstr ""
msgid "Copy category parameter templates when creating a part"
msgstr ""
-#: common/models.py:705 part/models.py:2489 report/models.py:187
+#: common/models.py:705 part/models.py:2525 report/models.py:187
#: templates/js/translated/table_filters.js:38
-#: templates/js/translated/table_filters.js:422
+#: templates/js/translated/table_filters.js:417
msgid "Template"
msgstr ""
@@ -1649,9 +1660,9 @@ msgstr ""
msgid "Parts are templates by default"
msgstr ""
-#: common/models.py:712 part/models.py:921 templates/js/translated/bom.js:1082
+#: common/models.py:712 part/models.py:951 templates/js/translated/bom.js:1300
#: templates/js/translated/table_filters.js:168
-#: templates/js/translated/table_filters.js:434
+#: templates/js/translated/table_filters.js:429
msgid "Assembly"
msgstr ""
@@ -1659,8 +1670,8 @@ msgstr ""
msgid "Parts can be assembled from other components by default"
msgstr ""
-#: common/models.py:719 part/models.py:927
-#: templates/js/translated/table_filters.js:438
+#: common/models.py:719 part/models.py:957
+#: templates/js/translated/table_filters.js:433
msgid "Component"
msgstr ""
@@ -1668,7 +1679,7 @@ msgstr ""
msgid "Parts can be used as sub-components by default"
msgstr ""
-#: common/models.py:726 part/models.py:938
+#: common/models.py:726 part/models.py:968
msgid "Purchaseable"
msgstr ""
@@ -1676,8 +1687,8 @@ msgstr ""
msgid "Parts are purchaseable by default"
msgstr ""
-#: common/models.py:733 part/models.py:943
-#: templates/js/translated/table_filters.js:446
+#: common/models.py:733 part/models.py:973
+#: templates/js/translated/table_filters.js:441
msgid "Salable"
msgstr ""
@@ -1685,10 +1696,10 @@ msgstr ""
msgid "Parts are salable by default"
msgstr ""
-#: common/models.py:740 part/models.py:933
+#: common/models.py:740 part/models.py:963
#: templates/js/translated/table_filters.js:46
#: templates/js/translated/table_filters.js:100
-#: templates/js/translated/table_filters.js:450
+#: templates/js/translated/table_filters.js:445
msgid "Trackable"
msgstr ""
@@ -1696,7 +1707,7 @@ msgstr ""
msgid "Parts are trackable by default"
msgstr ""
-#: common/models.py:747 part/models.py:953
+#: common/models.py:747 part/models.py:983
#: part/templates/part/part_base.html:147
#: templates/js/translated/table_filters.js:42
msgid "Virtual"
@@ -1730,589 +1741,595 @@ msgstr ""
msgid "Include pricing information in BOM tables"
msgstr ""
-#: common/models.py:780
+#: common/models.py:785
+msgid "Show Price History"
+msgstr ""
+
+#: common/models.py:786
+msgid "Display historical pricing for Part"
+msgstr ""
+
+#: common/models.py:792
msgid "Show related parts"
msgstr ""
-#: common/models.py:781
+#: common/models.py:793
msgid "Display related parts for a part"
msgstr ""
-#: common/models.py:787
+#: common/models.py:799
msgid "Create initial stock"
msgstr ""
-#: common/models.py:788
+#: common/models.py:800
msgid "Create initial stock on part creation"
msgstr ""
-#: common/models.py:794
+#: common/models.py:806
msgid "Internal Prices"
msgstr ""
-#: common/models.py:795
+#: common/models.py:807
msgid "Enable internal prices for parts"
msgstr ""
-#: common/models.py:801
+#: common/models.py:813
msgid "Internal Price as BOM-Price"
msgstr ""
-#: common/models.py:802
+#: common/models.py:814
msgid "Use the internal price (if set) in BOM-price calculations"
msgstr ""
-#: common/models.py:808
+#: common/models.py:820
msgid "Part Name Display Format"
msgstr ""
-#: common/models.py:809
+#: common/models.py:821
msgid "Format to display the part name"
msgstr ""
-#: common/models.py:816
+#: common/models.py:828
msgid "Enable Reports"
msgstr ""
-#: common/models.py:817
+#: common/models.py:829
msgid "Enable generation of reports"
msgstr ""
-#: common/models.py:823 templates/stats.html:25
+#: common/models.py:835 templates/stats.html:25
msgid "Debug Mode"
msgstr ""
-#: common/models.py:824
+#: common/models.py:836
msgid "Generate reports in debug mode (HTML output)"
msgstr ""
-#: common/models.py:830
+#: common/models.py:842
msgid "Page Size"
msgstr ""
-#: common/models.py:831
+#: common/models.py:843
msgid "Default page size for PDF reports"
msgstr ""
-#: common/models.py:841
+#: common/models.py:853
msgid "Test Reports"
msgstr ""
-#: common/models.py:842
+#: common/models.py:854
msgid "Enable generation of test reports"
msgstr ""
-#: common/models.py:848
+#: common/models.py:860
msgid "Stock Expiry"
msgstr ""
-#: common/models.py:849
+#: common/models.py:861
msgid "Enable stock expiry functionality"
msgstr ""
-#: common/models.py:855
+#: common/models.py:867
msgid "Sell Expired Stock"
msgstr ""
-#: common/models.py:856
+#: common/models.py:868
msgid "Allow sale of expired stock"
msgstr ""
-#: common/models.py:862
+#: common/models.py:874
msgid "Stock Stale Time"
msgstr ""
-#: common/models.py:863
+#: common/models.py:875
msgid "Number of days stock items are considered stale before expiring"
msgstr ""
-#: common/models.py:865
+#: common/models.py:877
msgid "days"
msgstr ""
-#: common/models.py:870
+#: common/models.py:882
msgid "Build Expired Stock"
msgstr ""
-#: common/models.py:871
+#: common/models.py:883
msgid "Allow building with expired stock"
msgstr ""
-#: common/models.py:877
+#: common/models.py:889
msgid "Stock Ownership Control"
msgstr ""
-#: common/models.py:878
+#: common/models.py:890
msgid "Enable ownership control over stock locations and items"
msgstr ""
-#: common/models.py:884
+#: common/models.py:896
msgid "Build Order Reference Prefix"
msgstr ""
-#: common/models.py:885
+#: common/models.py:897
msgid "Prefix value for build order reference"
msgstr ""
-#: common/models.py:890
+#: common/models.py:902
msgid "Build Order Reference Regex"
msgstr ""
-#: common/models.py:891
+#: common/models.py:903
msgid "Regular expression pattern for matching build order reference"
msgstr ""
-#: common/models.py:895
+#: common/models.py:907
msgid "Sales Order Reference Prefix"
msgstr ""
-#: common/models.py:896
+#: common/models.py:908
msgid "Prefix value for sales order reference"
msgstr ""
-#: common/models.py:901
+#: common/models.py:913
msgid "Purchase Order Reference Prefix"
msgstr ""
-#: common/models.py:902
+#: common/models.py:914
msgid "Prefix value for purchase order reference"
msgstr ""
-#: common/models.py:908
+#: common/models.py:920
msgid "Enable password forgot"
msgstr ""
-#: common/models.py:909
+#: common/models.py:921
msgid "Enable password forgot function on the login pages"
msgstr ""
-#: common/models.py:914
+#: common/models.py:926
msgid "Enable registration"
msgstr ""
-#: common/models.py:915
+#: common/models.py:927
msgid "Enable self-registration for users on the login pages"
msgstr ""
-#: common/models.py:920
+#: common/models.py:932
msgid "Enable SSO"
msgstr ""
-#: common/models.py:921
+#: common/models.py:933
msgid "Enable SSO on the login pages"
msgstr ""
-#: common/models.py:926
+#: common/models.py:938
msgid "Email required"
msgstr ""
-#: common/models.py:927
+#: common/models.py:939
msgid "Require user to supply mail on signup"
msgstr ""
-#: common/models.py:932
+#: common/models.py:944
msgid "Auto-fill SSO users"
msgstr ""
-#: common/models.py:933
+#: common/models.py:945
msgid "Automatically fill out user-details from SSO account-data"
msgstr ""
-#: common/models.py:938
+#: common/models.py:950
msgid "Mail twice"
msgstr ""
-#: common/models.py:939
+#: common/models.py:951
msgid "On signup ask users twice for their mail"
msgstr ""
-#: common/models.py:944
+#: common/models.py:956
msgid "Password twice"
msgstr ""
-#: common/models.py:945
+#: common/models.py:957
msgid "On signup ask users twice for their password"
msgstr ""
-#: common/models.py:950
+#: common/models.py:962
msgid "Group on signup"
msgstr ""
-#: common/models.py:951
+#: common/models.py:963
msgid "Group to which new users are assigned on registration"
msgstr ""
-#: common/models.py:956
+#: common/models.py:968
msgid "Enforce MFA"
msgstr ""
-#: common/models.py:957
+#: common/models.py:969
msgid "Users must use multifactor security."
msgstr ""
-#: common/models.py:964
+#: common/models.py:976
msgid "Enable URL integration"
msgstr ""
-#: common/models.py:965
+#: common/models.py:977
msgid "Enable plugins to add URL routes"
msgstr ""
-#: common/models.py:971
+#: common/models.py:983
msgid "Enable navigation integration"
msgstr ""
-#: common/models.py:972
+#: common/models.py:984
msgid "Enable plugins to integrate into navigation"
msgstr ""
-#: common/models.py:978
+#: common/models.py:990
msgid "Enable app integration"
msgstr ""
-#: common/models.py:979
+#: common/models.py:991
msgid "Enable plugins to add apps"
msgstr ""
-#: common/models.py:985
+#: common/models.py:997
msgid "Enable schedule integration"
msgstr ""
-#: common/models.py:986
+#: common/models.py:998
msgid "Enable plugins to run scheduled tasks"
msgstr ""
-#: common/models.py:992
+#: common/models.py:1004
msgid "Enable event integration"
msgstr ""
-#: common/models.py:993
+#: common/models.py:1005
msgid "Enable plugins to respond to internal events"
msgstr ""
-#: common/models.py:1008 common/models.py:1216
+#: common/models.py:1020 common/models.py:1228
msgid "Settings key (must be unique - case insensitive"
msgstr ""
-#: common/models.py:1039
+#: common/models.py:1051
msgid "Show subscribed parts"
msgstr ""
-#: common/models.py:1040
+#: common/models.py:1052
msgid "Show subscribed parts on the homepage"
msgstr ""
-#: common/models.py:1045
+#: common/models.py:1057
msgid "Show subscribed categories"
msgstr ""
-#: common/models.py:1046
+#: common/models.py:1058
msgid "Show subscribed part categories on the homepage"
msgstr ""
-#: common/models.py:1051
+#: common/models.py:1063
msgid "Show latest parts"
msgstr ""
-#: common/models.py:1052
+#: common/models.py:1064
msgid "Show latest parts on the homepage"
msgstr ""
-#: common/models.py:1057
+#: common/models.py:1069
msgid "Recent Part Count"
msgstr ""
-#: common/models.py:1058
+#: common/models.py:1070
msgid "Number of recent parts to display on index page"
msgstr ""
-#: common/models.py:1064
+#: common/models.py:1076
msgid "Show unvalidated BOMs"
msgstr ""
-#: common/models.py:1065
+#: common/models.py:1077
msgid "Show BOMs that await validation on the homepage"
msgstr ""
-#: common/models.py:1070
+#: common/models.py:1082
msgid "Show recent stock changes"
msgstr ""
-#: common/models.py:1071
+#: common/models.py:1083
msgid "Show recently changed stock items on the homepage"
msgstr ""
-#: common/models.py:1076
+#: common/models.py:1088
msgid "Recent Stock Count"
msgstr ""
-#: common/models.py:1077
+#: common/models.py:1089
msgid "Number of recent stock items to display on index page"
msgstr ""
-#: common/models.py:1082
+#: common/models.py:1094
msgid "Show low stock"
msgstr ""
-#: common/models.py:1083
+#: common/models.py:1095
msgid "Show low stock items on the homepage"
msgstr ""
-#: common/models.py:1088
+#: common/models.py:1100
msgid "Show depleted stock"
msgstr ""
-#: common/models.py:1089
+#: common/models.py:1101
msgid "Show depleted stock items on the homepage"
msgstr ""
-#: common/models.py:1094
+#: common/models.py:1106
msgid "Show needed stock"
msgstr ""
-#: common/models.py:1095
+#: common/models.py:1107
msgid "Show stock items needed for builds on the homepage"
msgstr ""
-#: common/models.py:1100
+#: common/models.py:1112
msgid "Show expired stock"
msgstr ""
-#: common/models.py:1101
+#: common/models.py:1113
msgid "Show expired stock items on the homepage"
msgstr ""
-#: common/models.py:1106
+#: common/models.py:1118
msgid "Show stale stock"
msgstr ""
-#: common/models.py:1107
+#: common/models.py:1119
msgid "Show stale stock items on the homepage"
msgstr ""
-#: common/models.py:1112
+#: common/models.py:1124
msgid "Show pending builds"
msgstr ""
-#: common/models.py:1113
+#: common/models.py:1125
msgid "Show pending builds on the homepage"
msgstr ""
-#: common/models.py:1118
+#: common/models.py:1130
msgid "Show overdue builds"
msgstr ""
-#: common/models.py:1119
+#: common/models.py:1131
msgid "Show overdue builds on the homepage"
msgstr ""
-#: common/models.py:1124
+#: common/models.py:1136
msgid "Show outstanding POs"
msgstr ""
-#: common/models.py:1125
+#: common/models.py:1137
msgid "Show outstanding POs on the homepage"
msgstr ""
-#: common/models.py:1130
+#: common/models.py:1142
msgid "Show overdue POs"
msgstr ""
-#: common/models.py:1131
+#: common/models.py:1143
msgid "Show overdue POs on the homepage"
msgstr ""
-#: common/models.py:1136
+#: common/models.py:1148
msgid "Show outstanding SOs"
msgstr ""
-#: common/models.py:1137
+#: common/models.py:1149
msgid "Show outstanding SOs on the homepage"
msgstr ""
-#: common/models.py:1142
+#: common/models.py:1154
msgid "Show overdue SOs"
msgstr ""
-#: common/models.py:1143
+#: common/models.py:1155
msgid "Show overdue SOs on the homepage"
msgstr ""
-#: common/models.py:1149
+#: common/models.py:1161
msgid "Inline label display"
msgstr ""
-#: common/models.py:1150
+#: common/models.py:1162
msgid "Display PDF labels in the browser, instead of downloading as a file"
msgstr ""
-#: common/models.py:1156
+#: common/models.py:1168
msgid "Inline report display"
msgstr ""
-#: common/models.py:1157
+#: common/models.py:1169
msgid "Display PDF reports in the browser, instead of downloading as a file"
msgstr ""
-#: common/models.py:1163
+#: common/models.py:1175
msgid "Search Preview Results"
msgstr ""
-#: common/models.py:1164
+#: common/models.py:1176
msgid "Number of results to show in search preview window"
msgstr ""
-#: common/models.py:1170
+#: common/models.py:1182
msgid "Search Show Stock"
msgstr ""
-#: common/models.py:1171
+#: common/models.py:1183
msgid "Display stock levels in search preview window"
msgstr ""
-#: common/models.py:1177
+#: common/models.py:1189
msgid "Hide Inactive Parts"
msgstr ""
-#: common/models.py:1178
+#: common/models.py:1190
msgid "Hide inactive parts in search preview window"
msgstr ""
-#: common/models.py:1184
+#: common/models.py:1196
msgid "Show Quantity in Forms"
msgstr ""
-#: common/models.py:1185
+#: common/models.py:1197
msgid "Display available part quantity in some forms"
msgstr ""
-#: common/models.py:1191
+#: common/models.py:1203
msgid "Escape Key Closes Forms"
msgstr ""
-#: common/models.py:1192
+#: common/models.py:1204
msgid "Use the escape key to close modal forms"
msgstr ""
-#: common/models.py:1198
+#: common/models.py:1210
msgid "Fixed Navbar"
msgstr ""
-#: common/models.py:1199
+#: common/models.py:1211
msgid "InvenTree navbar position is fixed to the top of the screen"
msgstr ""
-#: common/models.py:1264 company/forms.py:43
+#: common/models.py:1276 company/forms.py:43
msgid "Price break quantity"
msgstr ""
-#: common/models.py:1271 company/serializers.py:264
+#: common/models.py:1283 company/serializers.py:264
#: company/templates/company/supplier_part.html:256
#: templates/js/translated/part.js:915 templates/js/translated/part.js:1867
msgid "Price"
msgstr ""
-#: common/models.py:1272
+#: common/models.py:1284
msgid "Unit price at specified quantity"
msgstr ""
-#: common/models.py:1429 common/models.py:1568
+#: common/models.py:1441 common/models.py:1580
msgid "Endpoint"
msgstr ""
-#: common/models.py:1430
+#: common/models.py:1442
msgid "Endpoint at which this webhook is received"
msgstr ""
-#: common/models.py:1439
+#: common/models.py:1451
msgid "Name for this webhook"
msgstr ""
-#: common/models.py:1444 part/models.py:948 plugin/models.py:46
+#: common/models.py:1456 part/models.py:978 plugin/models.py:46
#: templates/js/translated/table_filters.js:34
#: templates/js/translated/table_filters.js:96
-#: templates/js/translated/table_filters.js:295
-#: templates/js/translated/table_filters.js:417
+#: templates/js/translated/table_filters.js:290
+#: templates/js/translated/table_filters.js:412
msgid "Active"
msgstr ""
-#: common/models.py:1445
+#: common/models.py:1457
msgid "Is this webhook active"
msgstr ""
-#: common/models.py:1459
+#: common/models.py:1471
msgid "Token"
msgstr ""
-#: common/models.py:1460
+#: common/models.py:1472
msgid "Token for access"
msgstr ""
-#: common/models.py:1467
+#: common/models.py:1479
msgid "Secret"
msgstr ""
-#: common/models.py:1468
+#: common/models.py:1480
msgid "Shared secret for HMAC"
msgstr ""
-#: common/models.py:1535
+#: common/models.py:1547
msgid "Message ID"
msgstr ""
-#: common/models.py:1536
+#: common/models.py:1548
msgid "Unique identifier for this message"
msgstr ""
-#: common/models.py:1544
+#: common/models.py:1556
msgid "Host"
msgstr ""
-#: common/models.py:1545
+#: common/models.py:1557
msgid "Host from which this message was received"
msgstr ""
-#: common/models.py:1552
+#: common/models.py:1564
msgid "Header"
msgstr ""
-#: common/models.py:1553
+#: common/models.py:1565
msgid "Header of this message"
msgstr ""
-#: common/models.py:1559
+#: common/models.py:1571
msgid "Body"
msgstr ""
-#: common/models.py:1560
+#: common/models.py:1572
msgid "Body of this message"
msgstr ""
-#: common/models.py:1569
+#: common/models.py:1581
msgid "Endpoint on which this message was received"
msgstr ""
-#: common/models.py:1574
+#: common/models.py:1586
msgid "Worked on"
msgstr ""
-#: common/models.py:1575
+#: common/models.py:1587
msgid "Was the work on this message finished?"
msgstr ""
#: common/views.py:93 order/templates/order/order_wizard/po_upload.html:49
#: order/templates/order/purchase_order_detail.html:24 order/views.py:243
-#: part/templates/part/bom_upload/upload_file.html:52
-#: part/templates/part/import_wizard/part_upload.html:47 part/views.py:213
-#: part/views.py:773
+#: part/templates/part/import_wizard/part_upload.html:47 part/views.py:210
+#: templates/patterns/wizard/upload.html:35
msgid "Upload File"
msgstr ""
-#: common/views.py:94 order/templates/order/order_wizard/match_fields.html:52
-#: order/views.py:244 part/templates/part/bom_upload/match_fields.html:52
+#: common/views.py:94 order/views.py:244
#: part/templates/part/import_wizard/ajax_match_fields.html:45
-#: part/templates/part/import_wizard/match_fields.html:52 part/views.py:214
-#: part/views.py:774
+#: part/templates/part/import_wizard/match_fields.html:52 part/views.py:211
+#: templates/patterns/wizard/match_fields.html:51
msgid "Match Fields"
msgstr ""
@@ -2328,15 +2345,13 @@ msgstr ""
msgid "Parts imported"
msgstr ""
-#: common/views.py:517 order/templates/order/order_wizard/match_fields.html:27
-#: order/templates/order/order_wizard/match_parts.html:19
+#: common/views.py:517 order/templates/order/order_wizard/match_parts.html:19
#: order/templates/order/order_wizard/po_upload.html:47
-#: part/templates/part/bom_upload/match_fields.html:27
-#: part/templates/part/bom_upload/match_parts.html:19
-#: part/templates/part/bom_upload/upload_file.html:50
#: part/templates/part/import_wizard/match_fields.html:27
#: part/templates/part/import_wizard/match_references.html:19
#: part/templates/part/import_wizard/part_upload.html:45
+#: templates/patterns/wizard/match_fields.html:26
+#: templates/patterns/wizard/upload.html:33
msgid "Previous Step"
msgstr ""
@@ -2404,7 +2419,7 @@ msgstr ""
msgid "Link to external company information"
msgstr ""
-#: company/models.py:139 part/models.py:840
+#: company/models.py:139 part/models.py:870
msgid "Image"
msgstr ""
@@ -2442,7 +2457,7 @@ msgid "Default currency used for this company"
msgstr ""
#: company/models.py:320 company/models.py:535 stock/models.py:471
-#: stock/templates/stock/item_base.html:142 templates/js/translated/bom.js:328
+#: stock/templates/stock/item_base.html:144 templates/js/translated/bom.js:541
msgid "Base Part"
msgstr ""
@@ -2453,11 +2468,11 @@ 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:380
+#: stock/templates/stock/item_base.html:382
#: templates/js/translated/company.js:333
#: templates/js/translated/company.js:517
#: templates/js/translated/company.js:800 templates/js/translated/part.js:234
-#: templates/js/translated/table_filters.js:389
+#: templates/js/translated/table_filters.js:384
msgid "Manufacturer"
msgstr ""
@@ -2488,7 +2503,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:390
+#: stock/templates/stock/item_base.html:392
msgid "Manufacturer Part"
msgstr ""
@@ -2499,7 +2514,7 @@ msgstr ""
#: company/models.py:422
#: report/templates/report/inventree_test_report_base.html:95
#: stock/models.py:1988 templates/js/translated/company.js:647
-#: templates/js/translated/part.js:715 templates/js/translated/stock.js:1304
+#: templates/js/translated/part.js:715 templates/js/translated/stock.js:1332
msgid "Value"
msgstr ""
@@ -2507,9 +2522,9 @@ msgstr ""
msgid "Parameter value"
msgstr ""
-#: company/models.py:429 part/models.py:915 part/models.py:2457
+#: company/models.py:429 part/models.py:945 part/models.py:2493
#: part/templates/part/part_base.html:288
-#: templates/InvenTree/settings/settings.html:287
+#: templates/InvenTree/settings/settings.html:324
#: templates/js/translated/company.js:653 templates/js/translated/part.js:721
msgid "Units"
msgstr ""
@@ -2526,11 +2541,11 @@ msgstr ""
#: company/templates/company/supplier_part.html:87 order/models.py:227
#: order/templates/order/order_base.html:112
#: order/templates/order/order_wizard/select_pos.html:30 part/bom.py:237
-#: part/bom.py:265 stock/templates/stock/item_base.html:397
+#: part/bom.py:265 stock/templates/stock/item_base.html:399
#: templates/js/translated/company.js:337
#: templates/js/translated/company.js:774 templates/js/translated/order.js:823
#: templates/js/translated/part.js:215 templates/js/translated/part.js:863
-#: templates/js/translated/table_filters.js:393
+#: templates/js/translated/table_filters.js:388
msgid "Supplier"
msgstr ""
@@ -2561,22 +2576,23 @@ msgid "Supplier part description"
msgstr ""
#: company/models.py:576 company/templates/company/supplier_part.html:119
-#: part/models.py:2648 report/templates/report/inventree_po_report.html:93
-#: report/templates/report/inventree_so_report.html:93
+#: part/models.py:2717 part/templates/part/upload_bom.html:59
+#: report/templates/report/inventree_po_report.html:93
+#: report/templates/report/inventree_so_report.html:93 stock/serializers.py:409
msgid "Note"
msgstr ""
-#: company/models.py:580 part/models.py:1781
+#: company/models.py:580 part/models.py:1817
msgid "base cost"
msgstr ""
-#: company/models.py:580 part/models.py:1781
+#: company/models.py:580 part/models.py:1817
msgid "Minimum charge (e.g. stocking fee)"
msgstr ""
#: company/models.py:582 company/templates/company/supplier_part.html:112
-#: stock/models.py:495 stock/templates/stock/item_base.html:338
-#: templates/js/translated/company.js:850 templates/js/translated/stock.js:1799
+#: stock/models.py:495 stock/templates/stock/item_base.html:340
+#: templates/js/translated/company.js:850 templates/js/translated/stock.js:1923
msgid "Packaging"
msgstr ""
@@ -2584,7 +2600,7 @@ msgstr ""
msgid "Part packaging"
msgstr ""
-#: company/models.py:584 part/models.py:1783
+#: company/models.py:584 part/models.py:1819
msgid "multiple"
msgstr ""
@@ -2645,11 +2661,11 @@ msgstr ""
#: company/templates/company/company_base.html:83 order/models.py:552
#: order/templates/order/sales_order_base.html:115 stock/models.py:514
-#: stock/models.py:515 stock/serializers.py:626
-#: stock/templates/stock/item_base.html:290
+#: stock/models.py:515 stock/serializers.py:683
+#: stock/templates/stock/item_base.html:292
#: templates/js/translated/company.js:329 templates/js/translated/order.js:1240
-#: templates/js/translated/stock.js:2610
-#: templates/js/translated/table_filters.js:397
+#: templates/js/translated/stock.js:2734
+#: templates/js/translated/table_filters.js:392
msgid "Customer"
msgstr ""
@@ -2679,7 +2695,7 @@ msgstr ""
#: company/templates/company/detail.html:20
#: company/templates/company/manufacturer_part.html:118
-#: part/templates/part/detail.html:353
+#: part/templates/part/detail.html:356
msgid "New Supplier Part"
msgstr ""
@@ -2687,8 +2703,8 @@ msgstr ""
#: company/templates/company/detail.html:79
#: company/templates/company/manufacturer_part.html:127
#: company/templates/company/manufacturer_part.html:156
-#: part/templates/part/category.html:171 part/templates/part/detail.html:362
-#: part/templates/part/detail.html:391
+#: part/templates/part/category.html:171 part/templates/part/detail.html:365
+#: part/templates/part/detail.html:394
msgid "Options"
msgstr ""
@@ -2716,7 +2732,7 @@ msgstr ""
msgid "Create new manufacturer part"
msgstr ""
-#: company/templates/company/detail.html:67 part/templates/part/detail.html:381
+#: company/templates/company/detail.html:67 part/templates/part/detail.html:384
msgid "New Manufacturer Part"
msgstr ""
@@ -2730,7 +2746,7 @@ msgstr ""
#: order/templates/order/order_base.html:13
#: order/templates/order/purchase_orders.html:8
#: order/templates/order/purchase_orders.html:12
-#: part/templates/part/detail.html:85 part/templates/part/part_sidebar.html:37
+#: part/templates/part/detail.html:85 part/templates/part/part_sidebar.html:40
#: templates/InvenTree/index.html:252 templates/InvenTree/search.html:197
#: templates/InvenTree/settings/sidebar.html:45 templates/navbar.html:47
#: users/models.py:45
@@ -2752,7 +2768,7 @@ msgstr ""
#: order/templates/order/sales_order_base.html:13
#: order/templates/order/sales_orders.html:8
#: order/templates/order/sales_orders.html:15
-#: part/templates/part/detail.html:108 part/templates/part/part_sidebar.html:41
+#: part/templates/part/detail.html:108 part/templates/part/part_sidebar.html:44
#: templates/InvenTree/index.html:283 templates/InvenTree/search.html:217
#: templates/InvenTree/settings/sidebar.html:47 templates/navbar.html:58
#: users/models.py:46
@@ -2770,7 +2786,7 @@ msgid "New Sales Order"
msgstr ""
#: company/templates/company/detail.html:168
-#: templates/js/translated/build.js:1059
+#: templates/js/translated/build.js:1281
msgid "Assigned Stock"
msgstr ""
@@ -2780,13 +2796,13 @@ msgstr ""
#: company/templates/company/detail.html:384
#: company/templates/company/manufacturer_part.html:215
-#: part/templates/part/detail.html:435
+#: part/templates/part/detail.html:438
msgid "Delete Supplier Parts?"
msgstr ""
#: company/templates/company/detail.html:385
#: company/templates/company/manufacturer_part.html:216
-#: part/templates/part/detail.html:436
+#: part/templates/part/detail.html:439
msgid "All selected supplier parts will be deleted"
msgstr ""
@@ -2824,36 +2840,36 @@ 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:35 part/templates/part/prices.html:163
+#: part/templates/part/part_sidebar.html:38 part/templates/part/prices.html:163
#: templates/InvenTree/search.html:188 templates/navbar.html:45
msgid "Suppliers"
msgstr ""
#: company/templates/company/manufacturer_part.html:129
-#: part/templates/part/detail.html:364
+#: part/templates/part/detail.html:367
msgid "Delete supplier parts"
msgstr ""
#: company/templates/company/manufacturer_part.html:129
#: company/templates/company/manufacturer_part.html:158
#: company/templates/company/manufacturer_part.html:254
-#: part/templates/part/detail.html:364 part/templates/part/detail.html:393
+#: part/templates/part/detail.html:367 part/templates/part/detail.html:396
#: templates/js/translated/company.js:426 templates/js/translated/helpers.js:31
-#: users/models.py:212
+#: users/models.py:217
msgid "Delete"
msgstr ""
#: company/templates/company/manufacturer_part.html:143
#: company/templates/company/manufacturer_part_sidebar.html:5
#: part/templates/part/category_sidebar.html:17
-#: part/templates/part/detail.html:187 part/templates/part/part_sidebar.html:8
+#: part/templates/part/detail.html:190 part/templates/part/part_sidebar.html:9
msgid "Parameters"
msgstr ""
#: company/templates/company/manufacturer_part.html:147
-#: part/templates/part/detail.html:192
+#: part/templates/part/detail.html:195
#: templates/InvenTree/settings/category.html:12
-#: templates/InvenTree/settings/part.html:65
+#: templates/InvenTree/settings/part.html:66
msgid "New Parameter"
msgstr ""
@@ -2862,7 +2878,7 @@ msgid "Delete parameters"
msgstr ""
#: company/templates/company/manufacturer_part.html:191
-#: part/templates/part/detail.html:892
+#: part/templates/part/detail.html:895
msgid "Add Parameter"
msgstr ""
@@ -2892,8 +2908,8 @@ msgstr ""
#: company/templates/company/supplier_part.html:7
#: company/templates/company/supplier_part.html:24 stock/models.py:479
-#: stock/templates/stock/item_base.html:402
-#: templates/js/translated/company.js:790 templates/js/translated/stock.js:1756
+#: stock/templates/stock/item_base.html:404
+#: templates/js/translated/company.js:790 templates/js/translated/stock.js:1880
msgid "Supplier Part"
msgstr ""
@@ -2919,7 +2935,7 @@ msgstr ""
#: company/templates/company/supplier_part.html:142
#: part/templates/part/detail.html:25 stock/templates/stock/location.html:167
-#: templates/js/translated/stock.js:368
+#: templates/js/translated/stock.js:369
msgid "New Stock Item"
msgstr ""
@@ -2940,7 +2956,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:1628
+#: part/templates/part/prices.html:271 part/views.py:1319
msgid "Add Price Break"
msgstr ""
@@ -2948,11 +2964,11 @@ msgstr ""
msgid "No price break information found"
msgstr ""
-#: company/templates/company/supplier_part.html:224 part/views.py:1690
+#: company/templates/company/supplier_part.html:224 part/views.py:1381
msgid "Delete Price Break"
msgstr ""
-#: company/templates/company/supplier_part.html:238 part/views.py:1676
+#: company/templates/company/supplier_part.html:238 part/views.py:1367
msgid "Edit Price Break"
msgstr ""
@@ -2965,15 +2981,15 @@ msgid "Delete price break"
msgstr ""
#: company/templates/company/supplier_part_navbar.html:15
-#: part/templates/part/part_sidebar.html:14
+#: part/templates/part/part_sidebar.html:15
#: 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:150
#: templates/InvenTree/settings/sidebar.html:41
-#: templates/js/translated/bom.js:340 templates/js/translated/part.js:495
+#: templates/js/translated/bom.js:553 templates/js/translated/part.js:495
#: templates/js/translated/part.js:630 templates/js/translated/part.js:1125
-#: templates/js/translated/part.js:1286 templates/js/translated/stock.js:935
-#: templates/js/translated/stock.js:1588 templates/navbar.html:28
+#: templates/js/translated/part.js:1286 templates/js/translated/stock.js:936
+#: templates/js/translated/stock.js:1712 templates/navbar.html:28
msgid "Stock"
msgstr ""
@@ -2987,7 +3003,7 @@ msgid "Supplier Part Pricing"
msgstr ""
#: company/templates/company/supplier_part_navbar.html:29
-#: part/templates/part/part_sidebar.html:28
+#: part/templates/part/part_sidebar.html:30
msgid "Pricing"
msgstr ""
@@ -2996,7 +3012,7 @@ msgstr ""
#: stock/templates/stock/location.html:151
#: stock/templates/stock/location.html:163
#: stock/templates/stock/location_sidebar.html:7
-#: templates/InvenTree/search.html:152 templates/js/translated/stock.js:2509
+#: templates/InvenTree/search.html:152 templates/js/translated/stock.js:2633
#: templates/stats.html:105 templates/stats.html:114 users/models.py:43
msgid "Stock Items"
msgstr ""
@@ -3026,20 +3042,20 @@ msgstr ""
msgid "New Company"
msgstr ""
-#: company/views.py:129 part/views.py:593
+#: company/views.py:129 part/views.py:591
msgid "Download Image"
msgstr ""
-#: company/views.py:158 part/views.py:625
+#: company/views.py:158 part/views.py:623
msgid "Image size exceeds maximum allowable size for download"
msgstr ""
-#: company/views.py:165 part/views.py:632
+#: company/views.py:165 part/views.py:630
#, python-brace-format
msgid "Invalid response: {code}"
msgstr ""
-#: company/views.py:174 part/views.py:641
+#: company/views.py:174 part/views.py:639
msgid "Supplied URL is not a valid image file"
msgstr ""
@@ -3256,16 +3272,16 @@ msgid "Supplier part must match supplier"
msgstr ""
#: order/models.py:855 order/models.py:946 order/models.py:1042
-#: templates/js/translated/order.js:1820 templates/js/translated/stock.js:2271
+#: templates/js/translated/order.js:1820 templates/js/translated/stock.js:2395
msgid "Order"
msgstr ""
#: order/models.py:856 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:352
+#: stock/templates/stock/item_base.html:354
#: templates/js/translated/order.js:801 templates/js/translated/part.js:838
-#: templates/js/translated/stock.js:1733 templates/js/translated/stock.js:2591
+#: templates/js/translated/stock.js:1857 templates/js/translated/stock.js:2715
msgid "Purchase Order"
msgstr ""
@@ -3276,7 +3292,7 @@ msgstr ""
#: order/models.py:884 order/templates/order/order_base.html:163
#: templates/js/translated/order.js:589 templates/js/translated/order.js:1118
#: templates/js/translated/part.js:910 templates/js/translated/part.js:937
-#: templates/js/translated/table_filters.js:317
+#: templates/js/translated/table_filters.js:312
msgid "Received"
msgstr ""
@@ -3285,8 +3301,8 @@ msgid "Number of items received"
msgstr ""
#: order/models.py:892 part/templates/part/prices.html:176 stock/models.py:608
-#: stock/serializers.py:170 stock/templates/stock/item_base.html:359
-#: templates/js/translated/stock.js:1787
+#: stock/serializers.py:170 stock/templates/stock/item_base.html:361
+#: templates/js/translated/stock.js:1911
msgid "Purchase Price"
msgstr ""
@@ -3530,7 +3546,7 @@ msgstr ""
#: order/templates/order/order_base.html:94
#: order/templates/order/sales_order_base.html:89
-#: templates/js/translated/stock.js:2327
+#: templates/js/translated/stock.js:2451
msgid "Order Status"
msgstr ""
@@ -3574,73 +3590,20 @@ msgstr ""
msgid "After placing this purchase order, line items will no longer be editable."
msgstr ""
-#: order/templates/order/order_wizard/match_fields.html:9
-#: part/templates/part/bom_upload/match_fields.html:9
-#: part/templates/part/import_wizard/ajax_match_fields.html:9
-#: part/templates/part/import_wizard/match_fields.html:9
-msgid "Missing selections for the following required columns"
-msgstr ""
-
-#: order/templates/order/order_wizard/match_fields.html:20
-#: part/templates/part/bom_upload/match_fields.html:20
-#: part/templates/part/import_wizard/ajax_match_fields.html:20
-#: part/templates/part/import_wizard/match_fields.html:20
-msgid "Duplicate selections found, see below. Fix them then retry submitting."
-msgstr ""
-
-#: order/templates/order/order_wizard/match_fields.html:29
-#: order/templates/order/order_wizard/match_parts.html:21
-#: part/templates/part/bom_upload/match_fields.html:29
-#: part/templates/part/bom_upload/match_parts.html:21
-#: part/templates/part/import_wizard/match_fields.html:29
-#: part/templates/part/import_wizard/match_references.html:21
-msgid "Submit Selections"
-msgstr ""
-
-#: order/templates/order/order_wizard/match_fields.html:35
-#: part/templates/part/bom_upload/match_fields.html:35
-#: part/templates/part/import_wizard/ajax_match_fields.html:28
-#: part/templates/part/import_wizard/match_fields.html:35
-msgid "File Fields"
-msgstr ""
-
-#: order/templates/order/order_wizard/match_fields.html:42
-#: part/templates/part/bom_upload/match_fields.html:42
-#: part/templates/part/import_wizard/ajax_match_fields.html:35
-#: part/templates/part/import_wizard/match_fields.html:42
-msgid "Remove column"
-msgstr ""
-
-#: order/templates/order/order_wizard/match_fields.html:60
-#: part/templates/part/bom_upload/match_fields.html:60
-#: part/templates/part/import_wizard/ajax_match_fields.html:53
-#: part/templates/part/import_wizard/match_fields.html:60
-msgid "Duplicate selection"
-msgstr ""
-
-#: order/templates/order/order_wizard/match_fields.html:71
-#: order/templates/order/order_wizard/match_parts.html:52
-#: part/templates/part/bom_upload/match_fields.html:71
-#: part/templates/part/bom_upload/match_parts.html:53
-#: part/templates/part/import_wizard/ajax_match_fields.html:64
-#: part/templates/part/import_wizard/ajax_match_references.html:42
-#: part/templates/part/import_wizard/match_fields.html:71
-#: part/templates/part/import_wizard/match_references.html:49
-#: templates/js/translated/build.js:300 templates/js/translated/build.js:1311
-#: templates/js/translated/order.js:537 templates/js/translated/order.js:1488
-#: templates/js/translated/stock.js:601 templates/js/translated/stock.js:769
-msgid "Remove row"
-msgstr ""
-
#: order/templates/order/order_wizard/match_parts.html:12
-#: part/templates/part/bom_upload/match_parts.html:12
#: part/templates/part/import_wizard/ajax_match_references.html:12
#: part/templates/part/import_wizard/match_references.html:12
msgid "Errors exist in the submitted data"
msgstr ""
+#: order/templates/order/order_wizard/match_parts.html:21
+#: part/templates/part/import_wizard/match_fields.html:29
+#: part/templates/part/import_wizard/match_references.html:21
+#: templates/patterns/wizard/match_fields.html:28
+msgid "Submit Selections"
+msgstr ""
+
#: order/templates/order/order_wizard/match_parts.html:28
-#: part/templates/part/bom_upload/match_parts.html:28
#: part/templates/part/import_wizard/ajax_match_references.html:21
#: part/templates/part/import_wizard/match_references.html:28
msgid "Row"
@@ -3650,6 +3613,19 @@ msgstr ""
msgid "Select Supplier Part"
msgstr ""
+#: order/templates/order/order_wizard/match_parts.html:52
+#: part/templates/part/import_wizard/ajax_match_fields.html:64
+#: part/templates/part/import_wizard/ajax_match_references.html:42
+#: part/templates/part/import_wizard/match_fields.html:71
+#: part/templates/part/import_wizard/match_references.html:49
+#: templates/js/translated/bom.js:76 templates/js/translated/build.js:380
+#: templates/js/translated/build.js:528 templates/js/translated/build.js:1547
+#: templates/js/translated/order.js:537 templates/js/translated/order.js:1488
+#: templates/js/translated/stock.js:602 templates/js/translated/stock.js:770
+#: templates/patterns/wizard/match_fields.html:70
+msgid "Remove row"
+msgstr ""
+
#: order/templates/order/order_wizard/po_upload.html:8
msgid "Return to Orders"
msgstr ""
@@ -3659,9 +3635,9 @@ msgid "Upload File for Purchase Order"
msgstr ""
#: order/templates/order/order_wizard/po_upload.html:25
-#: part/templates/part/bom_upload/upload_file.html:21
#: part/templates/part/import_wizard/ajax_part_upload.html:10
#: part/templates/part/import_wizard/part_upload.html:23
+#: templates/patterns/wizard/upload.html:11
#, python-format
msgid "Step %(step)s of %(count)s"
msgstr ""
@@ -3819,7 +3795,7 @@ msgid "Pending Shipments"
msgstr ""
#: order/templates/order/sales_order_detail.html:48
-#: templates/js/translated/bom.js:732 templates/js/translated/build.js:1243
+#: templates/js/translated/bom.js:945 templates/js/translated/build.js:1465
msgid "Actions"
msgstr ""
@@ -3922,7 +3898,7 @@ msgstr ""
msgid "This field is required"
msgstr ""
-#: part/bom.py:125 part/models.py:83 part/models.py:849
+#: part/bom.py:125 part/models.py:83 part/models.py:879
#: part/templates/part/category.html:108 part/templates/part/part_base.html:338
msgid "Default Location"
msgstr ""
@@ -3968,7 +3944,7 @@ msgstr ""
msgid "Default keywords for parts in this category"
msgstr ""
-#: part/models.py:97 part/models.py:2533 part/templates/part/category.html:15
+#: part/models.py:97 part/models.py:2569 part/templates/part/category.html:15
#: part/templates/part/part_app_base.html:10
msgid "Part Category"
msgstr ""
@@ -3994,408 +3970,478 @@ msgstr ""
msgid "Invalid choice for parent part"
msgstr ""
-#: part/models.py:502 part/models.py:514
+#: part/models.py:532 part/models.py:544
#, python-brace-format
msgid "Part '{p1}' is used in BOM for '{p2}' (recursive)"
msgstr ""
-#: part/models.py:644
+#: part/models.py:674
msgid "Next available serial numbers are"
msgstr ""
-#: part/models.py:648
+#: part/models.py:678
msgid "Next available serial number is"
msgstr ""
-#: part/models.py:653
+#: part/models.py:683
msgid "Most recent serial number is"
msgstr ""
-#: part/models.py:748
+#: part/models.py:778
msgid "Duplicate IPN not allowed in part settings"
msgstr ""
-#: part/models.py:773
+#: part/models.py:803 part/models.py:2622
msgid "Part name"
msgstr ""
-#: part/models.py:780
+#: part/models.py:810
msgid "Is Template"
msgstr ""
-#: part/models.py:781
+#: part/models.py:811
msgid "Is this part a template part?"
msgstr ""
-#: part/models.py:791
+#: part/models.py:821
msgid "Is this part a variant of another part?"
msgstr ""
-#: part/models.py:792
+#: part/models.py:822
msgid "Variant Of"
msgstr ""
-#: part/models.py:798
+#: part/models.py:828
msgid "Part description"
msgstr ""
-#: part/models.py:803 part/templates/part/category.html:86
+#: part/models.py:833 part/templates/part/category.html:86
#: part/templates/part/part_base.html:302
msgid "Keywords"
msgstr ""
-#: part/models.py:804
+#: part/models.py:834
msgid "Part keywords to improve visibility in search results"
msgstr ""
-#: part/models.py:811 part/models.py:2283 part/models.py:2532
+#: part/models.py:841 part/models.py:2319 part/models.py:2568
#: part/templates/part/part_base.html:265
#: part/templates/part/set_category.html:15
-#: templates/InvenTree/settings/settings.html:186
+#: templates/InvenTree/settings/settings.html:223
#: templates/js/translated/part.js:1268
msgid "Category"
msgstr ""
-#: part/models.py:812
+#: part/models.py:842
msgid "Part category"
msgstr ""
-#: part/models.py:817 part/templates/part/part_base.html:274
+#: part/models.py:847 part/templates/part/part_base.html:274
#: templates/js/translated/part.js:618 templates/js/translated/part.js:1221
-#: templates/js/translated/stock.js:1560
+#: templates/js/translated/stock.js:1684
msgid "IPN"
msgstr ""
-#: part/models.py:818
+#: part/models.py:848
msgid "Internal Part Number"
msgstr ""
-#: part/models.py:824
+#: part/models.py:854
msgid "Part revision or version number"
msgstr ""
-#: part/models.py:825 part/templates/part/part_base.html:281
+#: part/models.py:855 part/templates/part/part_base.html:281
#: report/models.py:200 templates/js/translated/part.js:622
msgid "Revision"
msgstr ""
-#: part/models.py:847
+#: part/models.py:877
msgid "Where is this item normally stored?"
msgstr ""
-#: part/models.py:894 part/templates/part/part_base.html:347
+#: part/models.py:924 part/templates/part/part_base.html:347
msgid "Default Supplier"
msgstr ""
-#: part/models.py:895
+#: part/models.py:925
msgid "Default supplier part"
msgstr ""
-#: part/models.py:902
+#: part/models.py:932
msgid "Default Expiry"
msgstr ""
-#: part/models.py:903
+#: part/models.py:933
msgid "Expiry time (in days) for stock items of this part"
msgstr ""
-#: part/models.py:908 part/templates/part/part_base.html:196
+#: part/models.py:938 part/templates/part/part_base.html:196
msgid "Minimum Stock"
msgstr ""
-#: part/models.py:909
+#: part/models.py:939
msgid "Minimum allowed stock level"
msgstr ""
-#: part/models.py:916
+#: part/models.py:946
msgid "Stock keeping units for this part"
msgstr ""
-#: part/models.py:922
+#: part/models.py:952
msgid "Can this part be built from other parts?"
msgstr ""
-#: part/models.py:928
+#: part/models.py:958
msgid "Can this part be used to build other parts?"
msgstr ""
-#: part/models.py:934
+#: part/models.py:964
msgid "Does this part have tracking for unique items?"
msgstr ""
-#: part/models.py:939
+#: part/models.py:969
msgid "Can this part be purchased from external suppliers?"
msgstr ""
-#: part/models.py:944
+#: part/models.py:974
msgid "Can this part be sold to customers?"
msgstr ""
-#: part/models.py:949
+#: part/models.py:979
msgid "Is this part active?"
msgstr ""
-#: part/models.py:954
+#: part/models.py:984
msgid "Is this a virtual part, such as a software product or license?"
msgstr ""
-#: part/models.py:959
+#: part/models.py:989
msgid "Part notes - supports Markdown formatting"
msgstr ""
-#: part/models.py:962
+#: part/models.py:992
msgid "BOM checksum"
msgstr ""
-#: part/models.py:962
+#: part/models.py:992
msgid "Stored BOM checksum"
msgstr ""
-#: part/models.py:965
+#: part/models.py:995
msgid "BOM checked by"
msgstr ""
-#: part/models.py:967
+#: part/models.py:997
msgid "BOM checked date"
msgstr ""
-#: part/models.py:971
+#: part/models.py:1001
msgid "Creation User"
msgstr ""
-#: part/models.py:1783
+#: part/models.py:1819
msgid "Sell multiple"
msgstr ""
-#: part/models.py:2333
+#: part/models.py:2369
msgid "Test templates can only be created for trackable parts"
msgstr ""
-#: part/models.py:2350
+#: part/models.py:2386
msgid "Test with this name already exists for this part"
msgstr ""
-#: part/models.py:2370 templates/js/translated/part.js:1714
-#: templates/js/translated/stock.js:1284
+#: part/models.py:2406 templates/js/translated/part.js:1714
+#: templates/js/translated/stock.js:1312
msgid "Test Name"
msgstr ""
-#: part/models.py:2371
+#: part/models.py:2407
msgid "Enter a name for the test"
msgstr ""
-#: part/models.py:2376
+#: part/models.py:2412
msgid "Test Description"
msgstr ""
-#: part/models.py:2377
+#: part/models.py:2413
msgid "Enter description for this test"
msgstr ""
-#: part/models.py:2382 templates/js/translated/part.js:1723
-#: templates/js/translated/table_filters.js:281
+#: part/models.py:2418 templates/js/translated/part.js:1723
+#: templates/js/translated/table_filters.js:276
msgid "Required"
msgstr ""
-#: part/models.py:2383
+#: part/models.py:2419
msgid "Is this test required to pass?"
msgstr ""
-#: part/models.py:2388 templates/js/translated/part.js:1731
+#: part/models.py:2424 templates/js/translated/part.js:1731
msgid "Requires Value"
msgstr ""
-#: part/models.py:2389
+#: part/models.py:2425
msgid "Does this test require a value when adding a test result?"
msgstr ""
-#: part/models.py:2394 templates/js/translated/part.js:1738
+#: part/models.py:2430 templates/js/translated/part.js:1738
msgid "Requires Attachment"
msgstr ""
-#: part/models.py:2395
+#: part/models.py:2431
msgid "Does this test require a file attachment when adding a test result?"
msgstr ""
-#: part/models.py:2406
+#: part/models.py:2442
#, python-brace-format
msgid "Illegal character in template name ({c})"
msgstr ""
-#: part/models.py:2442
+#: part/models.py:2478
msgid "Parameter template name must be unique"
msgstr ""
-#: part/models.py:2450
+#: part/models.py:2486
msgid "Parameter Name"
msgstr ""
-#: part/models.py:2457
+#: part/models.py:2493
msgid "Parameter Units"
msgstr ""
-#: part/models.py:2487
+#: part/models.py:2523
msgid "Parent Part"
msgstr ""
-#: part/models.py:2489 part/models.py:2538 part/models.py:2539
-#: templates/InvenTree/settings/settings.html:181
+#: part/models.py:2525 part/models.py:2574 part/models.py:2575
+#: templates/InvenTree/settings/settings.html:218
msgid "Parameter Template"
msgstr ""
-#: part/models.py:2491
+#: part/models.py:2527
msgid "Data"
msgstr ""
-#: part/models.py:2491
+#: part/models.py:2527
msgid "Parameter Value"
msgstr ""
-#: part/models.py:2543 templates/InvenTree/settings/settings.html:190
+#: part/models.py:2579 templates/InvenTree/settings/settings.html:227
msgid "Default Value"
msgstr ""
-#: part/models.py:2544
+#: part/models.py:2580
msgid "Default Parameter Value"
msgstr ""
+#: part/models.py:2614
+msgid "Part ID or part name"
+msgstr ""
+
+#: part/models.py:2617 templates/js/translated/model_renderers.js:182
+msgid "Part ID"
+msgstr ""
+
+#: part/models.py:2618
+msgid "Unique part ID value"
+msgstr ""
+
#: part/models.py:2621
-msgid "Select parent part"
+msgid "Part Name"
+msgstr ""
+
+#: part/models.py:2625
+msgid "Part IPN"
+msgstr ""
+
+#: part/models.py:2626
+msgid "Part IPN value"
msgstr ""
#: part/models.py:2629
-msgid "Sub part"
+msgid "Level"
msgstr ""
#: part/models.py:2630
+msgid "BOM level"
+msgstr ""
+
+#: part/models.py:2690
+msgid "Select parent part"
+msgstr ""
+
+#: part/models.py:2698
+msgid "Sub part"
+msgstr ""
+
+#: part/models.py:2699
msgid "Select part to be used in BOM"
msgstr ""
-#: part/models.py:2636
+#: part/models.py:2705
msgid "BOM quantity for this BOM item"
msgstr ""
-#: part/models.py:2638 templates/js/translated/bom.js:578
-#: templates/js/translated/bom.js:652
+#: part/models.py:2707 part/templates/part/upload_bom.html:58
+#: templates/js/translated/bom.js:791 templates/js/translated/bom.js:865
#: templates/js/translated/table_filters.js:92
msgid "Optional"
msgstr ""
-#: part/models.py:2638
+#: part/models.py:2707
msgid "This BOM item is optional"
msgstr ""
-#: part/models.py:2641
+#: part/models.py:2710 part/templates/part/upload_bom.html:55
msgid "Overage"
msgstr ""
-#: part/models.py:2642
+#: part/models.py:2711
msgid "Estimated build wastage quantity (absolute or percentage)"
msgstr ""
-#: part/models.py:2645
+#: part/models.py:2714
msgid "BOM item reference"
msgstr ""
-#: part/models.py:2648
+#: part/models.py:2717
msgid "BOM item notes"
msgstr ""
-#: part/models.py:2650
+#: part/models.py:2719
msgid "Checksum"
msgstr ""
-#: part/models.py:2650
+#: part/models.py:2719
msgid "BOM line checksum"
msgstr ""
-#: part/models.py:2654 templates/js/translated/bom.js:669
+#: part/models.py:2723 part/templates/part/upload_bom.html:57
+#: templates/js/translated/bom.js:882
#: templates/js/translated/table_filters.js:68
#: templates/js/translated/table_filters.js:88
msgid "Inherited"
msgstr ""
-#: part/models.py:2655
+#: part/models.py:2724
msgid "This BOM item is inherited by BOMs for variant parts"
msgstr ""
-#: part/models.py:2660 templates/js/translated/bom.js:661
+#: part/models.py:2729 part/templates/part/upload_bom.html:56
+#: templates/js/translated/bom.js:874
msgid "Allow Variants"
msgstr ""
-#: part/models.py:2661
+#: part/models.py:2730
msgid "Stock items for variant parts can be used for this BOM item"
msgstr ""
-#: part/models.py:2746 stock/models.py:357
+#: part/models.py:2815 stock/models.py:357
msgid "Quantity must be integer value for trackable parts"
msgstr ""
-#: part/models.py:2755 part/models.py:2757
+#: part/models.py:2824 part/models.py:2826
msgid "Sub part must be specified"
msgstr ""
-#: part/models.py:2886
+#: part/models.py:2955
msgid "BOM Item Substitute"
msgstr ""
-#: part/models.py:2908
+#: part/models.py:2977
msgid "Substitute part cannot be the same as the master part"
msgstr ""
-#: part/models.py:2920
+#: part/models.py:2989
msgid "Parent BOM item"
msgstr ""
-#: part/models.py:2928
+#: part/models.py:2997
msgid "Substitute part"
msgstr ""
-#: part/models.py:2939
+#: part/models.py:3008
msgid "Part 1"
msgstr ""
-#: part/models.py:2943
+#: part/models.py:3012
msgid "Part 2"
msgstr ""
-#: part/models.py:2943
+#: part/models.py:3012
msgid "Select Related Part"
msgstr ""
-#: part/models.py:2975
+#: part/models.py:3044
msgid "Error creating relationship: check that the part is not related to itself and that the relationship is unique"
msgstr ""
-#: part/serializers.py:659
+#: part/serializers.py:667
msgid "Select part to copy BOM from"
msgstr ""
-#: part/serializers.py:670
+#: part/serializers.py:678
msgid "Remove Existing Data"
msgstr ""
-#: part/serializers.py:671
+#: part/serializers.py:679
msgid "Remove existing BOM items before copying"
msgstr ""
-#: part/serializers.py:676
+#: part/serializers.py:684
msgid "Include Inherited"
msgstr ""
-#: part/serializers.py:677
+#: part/serializers.py:685
msgid "Include BOM items which are inherited from templated parts"
msgstr ""
-#: part/serializers.py:682
+#: part/serializers.py:690
msgid "Skip Invalid Rows"
msgstr ""
-#: part/serializers.py:683
+#: part/serializers.py:691
msgid "Enable this option to skip invalid rows"
msgstr ""
-#: part/tasks.py:53
+#: part/serializers.py:734
+msgid "Clear Existing BOM"
+msgstr ""
+
+#: part/serializers.py:735
+msgid "Delete existing BOM items before uploading"
+msgstr ""
+
+#: part/serializers.py:762
+msgid "No part column specified"
+msgstr ""
+
+#: part/serializers.py:806
+msgid "Multiple matching parts found"
+msgstr ""
+
+#: part/serializers.py:809
+msgid "No matching part found"
+msgstr ""
+
+#: part/serializers.py:812
+msgid "Part is not designated as a component"
+msgstr ""
+
+#: part/serializers.py:821
+msgid "Quantity not provided"
+msgstr ""
+
+#: part/serializers.py:829
+msgid "Invalid quantity"
+msgstr ""
+
+#: part/serializers.py:848
+msgid "At least one BOM item is required"
+msgstr ""
+
+#: part/tasks.py:58
msgid "Low stock notification"
msgstr ""
@@ -4418,7 +4464,7 @@ msgstr ""
msgid "The BOM for %(part)s has not been validated."
msgstr ""
-#: part/templates/part/bom.html:30 part/templates/part/detail.html:270
+#: part/templates/part/bom.html:30 part/templates/part/detail.html:273
msgid "BOM actions"
msgstr ""
@@ -4426,34 +4472,6 @@ msgstr ""
msgid "Delete Items"
msgstr ""
-#: part/templates/part/bom_upload/match_parts.html:29
-msgid "Select Part"
-msgstr ""
-
-#: part/templates/part/bom_upload/upload_file.html:8
-msgid "Return to BOM"
-msgstr ""
-
-#: part/templates/part/bom_upload/upload_file.html:13
-msgid "Upload Bill of Materials"
-msgstr ""
-
-#: part/templates/part/bom_upload/upload_file.html:33
-msgid "Requirements for BOM upload"
-msgstr ""
-
-#: part/templates/part/bom_upload/upload_file.html:35
-msgid "The BOM file must contain the required named columns as provided in the "
-msgstr ""
-
-#: part/templates/part/bom_upload/upload_file.html:35
-msgid "BOM Upload Template"
-msgstr ""
-
-#: part/templates/part/bom_upload/upload_file.html:36
-msgid "Each part must already exist in the database"
-msgstr ""
-
#: part/templates/part/category.html:28 part/templates/part/category.html:32
msgid "You are subscribed to notifications for this category"
msgstr ""
@@ -4519,7 +4537,7 @@ msgstr ""
msgid "Create new part"
msgstr ""
-#: part/templates/part/category.html:161 templates/js/translated/bom.js:152
+#: part/templates/part/category.html:161 templates/js/translated/bom.js:365
msgid "New Part"
msgstr ""
@@ -4639,138 +4657,168 @@ msgstr ""
msgid "Sales Order Allocations"
msgstr ""
-#: part/templates/part/detail.html:159
+#: part/templates/part/detail.html:162
msgid "Part Variants"
msgstr ""
-#: part/templates/part/detail.html:163
+#: part/templates/part/detail.html:166
msgid "Create new variant"
msgstr ""
-#: part/templates/part/detail.html:164
+#: part/templates/part/detail.html:167
msgid "New Variant"
msgstr ""
-#: part/templates/part/detail.html:191
+#: part/templates/part/detail.html:194
msgid "Add new parameter"
msgstr ""
-#: part/templates/part/detail.html:228 part/templates/part/part_sidebar.html:49
+#: part/templates/part/detail.html:231 part/templates/part/part_sidebar.html:52
msgid "Related Parts"
msgstr ""
-#: part/templates/part/detail.html:232 part/templates/part/detail.html:233
+#: part/templates/part/detail.html:235 part/templates/part/detail.html:236
msgid "Add Related"
msgstr ""
-#: part/templates/part/detail.html:253 part/templates/part/part_sidebar.html:17
+#: part/templates/part/detail.html:256 part/templates/part/part_sidebar.html:18
msgid "Bill of Materials"
msgstr ""
-#: part/templates/part/detail.html:258
+#: part/templates/part/detail.html:261
msgid "Export actions"
msgstr ""
-#: part/templates/part/detail.html:262 templates/js/translated/bom.js:70
+#: part/templates/part/detail.html:265 templates/js/translated/bom.js:283
msgid "Export BOM"
msgstr ""
-#: part/templates/part/detail.html:264
+#: part/templates/part/detail.html:267
msgid "Print BOM Report"
msgstr ""
-#: part/templates/part/detail.html:274
+#: part/templates/part/detail.html:277
msgid "Upload BOM"
msgstr ""
-#: part/templates/part/detail.html:276 templates/js/translated/part.js:272
+#: part/templates/part/detail.html:279 templates/js/translated/part.js:272
msgid "Copy BOM"
msgstr ""
-#: part/templates/part/detail.html:278
+#: part/templates/part/detail.html:281
msgid "Validate BOM"
msgstr ""
-#: part/templates/part/detail.html:283
+#: part/templates/part/detail.html:286
msgid "New BOM Item"
msgstr ""
-#: part/templates/part/detail.html:284
+#: part/templates/part/detail.html:287
msgid "Add BOM Item"
msgstr ""
-#: part/templates/part/detail.html:297
+#: part/templates/part/detail.html:300
msgid "Assemblies"
msgstr ""
-#: part/templates/part/detail.html:314
+#: part/templates/part/detail.html:317
msgid "Part Builds"
msgstr ""
-#: part/templates/part/detail.html:339
+#: part/templates/part/detail.html:342
msgid "Build Order Allocations"
msgstr ""
-#: part/templates/part/detail.html:349
+#: part/templates/part/detail.html:352
msgid "Part Suppliers"
msgstr ""
-#: part/templates/part/detail.html:377
+#: part/templates/part/detail.html:380
msgid "Part Manufacturers"
msgstr ""
-#: part/templates/part/detail.html:393
+#: part/templates/part/detail.html:396
msgid "Delete manufacturer parts"
msgstr ""
-#: part/templates/part/detail.html:575
+#: part/templates/part/detail.html:578
msgid "Delete selected BOM items?"
msgstr ""
-#: part/templates/part/detail.html:576
+#: part/templates/part/detail.html:579
msgid "All selected BOM items will be deleted"
msgstr ""
-#: part/templates/part/detail.html:625
+#: part/templates/part/detail.html:628
msgid "Create BOM Item"
msgstr ""
-#: part/templates/part/detail.html:682
+#: part/templates/part/detail.html:685
msgid "Related Part"
msgstr ""
-#: part/templates/part/detail.html:690
+#: part/templates/part/detail.html:693
msgid "Add Related Part"
msgstr ""
-#: part/templates/part/detail.html:785
+#: part/templates/part/detail.html:788
msgid "Add Test Result Template"
msgstr ""
-#: part/templates/part/detail.html:842
+#: part/templates/part/detail.html:845
msgid "Edit Part Notes"
msgstr ""
-#: part/templates/part/detail.html:955
+#: part/templates/part/detail.html:958
#, python-format
msgid "Purchase Unit Price - %(currency)s"
msgstr ""
-#: part/templates/part/detail.html:967
+#: part/templates/part/detail.html:970
#, python-format
msgid "Unit Price-Cost Difference - %(currency)s"
msgstr ""
-#: part/templates/part/detail.html:979
+#: part/templates/part/detail.html:982
#, python-format
msgid "Supplier Unit Cost - %(currency)s"
msgstr ""
-#: part/templates/part/detail.html:1068
+#: part/templates/part/detail.html:1071
#, python-format
msgid "Unit Price - %(currency)s"
msgstr ""
+#: part/templates/part/import_wizard/ajax_match_fields.html:9
+#: part/templates/part/import_wizard/match_fields.html:9
+#: templates/patterns/wizard/match_fields.html:8
+msgid "Missing selections for the following required columns"
+msgstr ""
+
+#: part/templates/part/import_wizard/ajax_match_fields.html:20
+#: part/templates/part/import_wizard/match_fields.html:20
+#: templates/patterns/wizard/match_fields.html:19
+msgid "Duplicate selections found, see below. Fix them then retry submitting."
+msgstr ""
+
+#: part/templates/part/import_wizard/ajax_match_fields.html:28
+#: part/templates/part/import_wizard/match_fields.html:35
+#: templates/patterns/wizard/match_fields.html:34
+msgid "File Fields"
+msgstr ""
+
+#: part/templates/part/import_wizard/ajax_match_fields.html:35
+#: part/templates/part/import_wizard/match_fields.html:42
+#: templates/patterns/wizard/match_fields.html:41
+msgid "Remove column"
+msgstr ""
+
+#: part/templates/part/import_wizard/ajax_match_fields.html:53
+#: part/templates/part/import_wizard/match_fields.html:60
+#: templates/patterns/wizard/match_fields.html:59
+msgid "Duplicate selection"
+msgstr ""
+
#: part/templates/part/import_wizard/ajax_part_upload.html:29
#: part/templates/part/import_wizard/part_upload.html:53
msgid "Unsuffitient privileges."
@@ -4819,7 +4867,7 @@ msgid "Show pricing information"
msgstr ""
#: part/templates/part/part_base.html:56
-#: stock/templates/stock/item_base.html:110
+#: stock/templates/stock/item_base.html:112
#: stock/templates/stock/location.html:44
msgid "Stock actions"
msgstr ""
@@ -4912,7 +4960,7 @@ msgstr ""
msgid "Allocated to Orders"
msgstr ""
-#: part/templates/part/part_base.html:239 templates/js/translated/bom.js:690
+#: part/templates/part/part_base.html:239 templates/js/translated/bom.js:903
msgid "Can Build"
msgstr ""
@@ -4930,7 +4978,7 @@ msgid "Latest Serial Number"
msgstr ""
#: part/templates/part/part_base.html:328
-#: stock/templates/stock/item_base.html:166
+#: stock/templates/stock/item_base.html:168
msgid "Search for serial number"
msgstr ""
@@ -4969,7 +5017,7 @@ msgid "Total Cost"
msgstr ""
#: part/templates/part/part_pricing.html:40 part/templates/part/prices.html:40
-#: templates/js/translated/bom.js:644
+#: templates/js/translated/bom.js:857
msgid "No supplier pricing available"
msgstr ""
@@ -5003,20 +5051,20 @@ msgstr ""
msgid "No pricing information is available for this part."
msgstr ""
-#: part/templates/part/part_sidebar.html:11
+#: part/templates/part/part_sidebar.html:12
msgid "Variants"
msgstr ""
-#: part/templates/part/part_sidebar.html:25
+#: part/templates/part/part_sidebar.html:26
msgid "Used In"
msgstr ""
-#: part/templates/part/part_sidebar.html:31
+#: part/templates/part/part_sidebar.html:34
#: stock/templates/stock/stock_sidebar.html:8
msgid "Allocations"
msgstr ""
-#: part/templates/part/part_sidebar.html:45
+#: part/templates/part/part_sidebar.html:48
msgid "Test Templates"
msgstr ""
@@ -5089,7 +5137,7 @@ msgstr ""
msgid "Calculation parameters"
msgstr ""
-#: part/templates/part/prices.html:155 templates/js/translated/bom.js:638
+#: part/templates/part/prices.html:155 templates/js/translated/bom.js:851
msgid "Supplier Cost"
msgstr ""
@@ -5111,7 +5159,7 @@ msgstr ""
msgid "Internal Cost"
msgstr ""
-#: part/templates/part/prices.html:215 part/views.py:1699
+#: part/templates/part/prices.html:215 part/views.py:1390
msgid "Add Internal Price Break"
msgstr ""
@@ -5131,7 +5179,7 @@ msgstr ""
msgid "Set category for the following parts"
msgstr ""
-#: part/templates/part/stock_count.html:7 templates/js/translated/bom.js:600
+#: part/templates/part/stock_count.html:7 templates/js/translated/bom.js:813
#: templates/js/translated/part.js:497 templates/js/translated/part.js:1122
#: templates/js/translated/part.js:1309
msgid "No Stock"
@@ -5141,6 +5189,43 @@ msgstr ""
msgid "Low Stock"
msgstr ""
+#: part/templates/part/upload_bom.html:8
+msgid "Return to BOM"
+msgstr ""
+
+#: part/templates/part/upload_bom.html:13
+msgid "Upload Bill of Materials"
+msgstr ""
+
+#: part/templates/part/upload_bom.html:19
+msgid "BOM upload requirements"
+msgstr ""
+
+#: part/templates/part/upload_bom.html:23
+#: part/templates/part/upload_bom.html:90
+msgid "Upload BOM File"
+msgstr ""
+
+#: part/templates/part/upload_bom.html:29
+msgid "Submit BOM Data"
+msgstr ""
+
+#: part/templates/part/upload_bom.html:37
+msgid "Requirements for BOM upload"
+msgstr ""
+
+#: part/templates/part/upload_bom.html:39
+msgid "The BOM file must contain the required named columns as provided in the "
+msgstr ""
+
+#: part/templates/part/upload_bom.html:39
+msgid "BOM Upload Template"
+msgstr ""
+
+#: part/templates/part/upload_bom.html:40
+msgid "Each part must already exist in the database"
+msgstr ""
+
#: part/templates/part/variant_part.html:9
msgid "Create new part variant"
msgstr ""
@@ -5154,104 +5239,96 @@ msgstr ""
msgid "Unknown database"
msgstr ""
-#: part/views.py:93
+#: part/views.py:90
msgid "Set Part Category"
msgstr ""
-#: part/views.py:143
+#: part/views.py:140
#, python-brace-format
msgid "Set category for {n} parts"
msgstr ""
-#: part/views.py:215
+#: part/views.py:212
msgid "Match References"
msgstr ""
-#: part/views.py:511
+#: part/views.py:509
msgid "None"
msgstr ""
-#: part/views.py:570
+#: part/views.py:568
msgid "Part QR Code"
msgstr ""
-#: part/views.py:672
+#: part/views.py:670
msgid "Select Part Image"
msgstr ""
-#: part/views.py:698
+#: part/views.py:696
msgid "Updated part image"
msgstr ""
-#: part/views.py:701
+#: part/views.py:699
msgid "Part image not found"
msgstr ""
-#: part/views.py:775
-msgid "Match Parts"
-msgstr ""
-
-#: part/views.py:1110
-msgid "Export Bill of Materials"
-msgstr ""
-
-#: part/views.py:1159
+#: part/views.py:850
msgid "Confirm Part Deletion"
msgstr ""
-#: part/views.py:1166
+#: part/views.py:857
msgid "Part was deleted"
msgstr ""
-#: part/views.py:1175
+#: part/views.py:866
msgid "Part Pricing"
msgstr ""
-#: part/views.py:1324
+#: part/views.py:1015
msgid "Create Part Parameter Template"
msgstr ""
-#: part/views.py:1334
+#: part/views.py:1025
msgid "Edit Part Parameter Template"
msgstr ""
-#: part/views.py:1341
+#: part/views.py:1032
msgid "Delete Part Parameter Template"
msgstr ""
-#: part/views.py:1400 templates/js/translated/part.js:315
+#: part/views.py:1091 templates/js/translated/part.js:315
msgid "Edit Part Category"
msgstr ""
-#: part/views.py:1438
+#: part/views.py:1129
msgid "Delete Part Category"
msgstr ""
-#: part/views.py:1444
+#: part/views.py:1135
msgid "Part category was deleted"
msgstr ""
-#: part/views.py:1453
+#: part/views.py:1144
msgid "Create Category Parameter Template"
msgstr ""
-#: part/views.py:1554
+#: part/views.py:1245
msgid "Edit Category Parameter Template"
msgstr ""
-#: part/views.py:1610
+#: part/views.py:1301
msgid "Delete Category Parameter Template"
msgstr ""
-#: part/views.py:1632
+#: part/views.py:1323
msgid "Added new price break"
msgstr ""
-#: part/views.py:1708
+#: part/views.py:1399
msgid "Edit Internal Price Break"
msgstr ""
-#: part/views.py:1716
+#: part/views.py:1407
msgid "Delete Internal Price Break"
msgstr ""
@@ -5453,12 +5530,12 @@ msgid "Stock Item Test Report"
msgstr ""
#: report/templates/report/inventree_test_report_base.html:79
-#: stock/models.py:519 stock/templates/stock/item_base.html:156
-#: templates/js/translated/build.js:293 templates/js/translated/build.js:697
-#: templates/js/translated/build.js:1073
+#: stock/models.py:519 stock/templates/stock/item_base.html:158
+#: templates/js/translated/build.js:373 templates/js/translated/build.js:521
+#: templates/js/translated/build.js:919 templates/js/translated/build.js:1295
#: 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:423
+#: templates/js/translated/order.js:2034 templates/js/translated/stock.js:424
msgid "Serial Number"
msgstr ""
@@ -5479,7 +5556,7 @@ msgstr ""
#: report/templates/report/inventree_test_report_base.html:97
#: templates/InvenTree/settings/plugin.html:50
#: templates/InvenTree/settings/plugin_settings.html:38
-#: templates/js/translated/order.js:849 templates/js/translated/stock.js:2525
+#: templates/js/translated/order.js:849 templates/js/translated/stock.js:2649
msgid "Date"
msgstr ""
@@ -5497,71 +5574,67 @@ msgid "Installed Items"
msgstr ""
#: report/templates/report/inventree_test_report_base.html:137
-#: templates/js/translated/stock.js:586 templates/js/translated/stock.js:756
-#: templates/js/translated/stock.js:2785
+#: templates/js/translated/stock.js:587 templates/js/translated/stock.js:757
+#: templates/js/translated/stock.js:2909
msgid "Serial"
msgstr ""
-#: stock/api.py:476
+#: stock/api.py:501
msgid "Quantity is required"
msgstr ""
-#: stock/api.py:483
+#: stock/api.py:508
msgid "Valid part must be supplied"
msgstr ""
-#: stock/forms.py:77 stock/forms.py:251 stock/models.py:576
-#: stock/templates/stock/item_base.html:193
-#: templates/js/translated/stock.js:1709
+#: stock/api.py:535
+msgid "Serial numbers cannot be supplied for a non-trackable part"
+msgstr ""
+
+#: stock/forms.py:74 stock/forms.py:198 stock/models.py:576
+#: stock/templates/stock/item_base.html:195
+#: templates/js/translated/stock.js:1833
msgid "Expiry Date"
msgstr ""
-#: stock/forms.py:78 stock/forms.py:252
+#: stock/forms.py:75 stock/forms.py:199
msgid "Expiration date for this stock item"
msgstr ""
-#: stock/forms.py:81
+#: stock/forms.py:78
msgid "Enter unique serial numbers (or leave blank)"
msgstr ""
-#: stock/forms.py:136
+#: stock/forms.py:133
msgid "Destination for serialized stock (by default, will remain in current location)"
msgstr ""
-#: stock/forms.py:138
+#: stock/forms.py:135
msgid "Serial numbers"
msgstr ""
-#: stock/forms.py:138
+#: stock/forms.py:135
msgid "Unique serial numbers (must match quantity)"
msgstr ""
-#: stock/forms.py:140 stock/forms.py:224
+#: stock/forms.py:137 stock/forms.py:171
msgid "Add transaction note (optional)"
msgstr ""
-#: stock/forms.py:180
-msgid "Stock item to install"
-msgstr ""
-
-#: stock/forms.py:210
-msgid "Must not exceed available quantity"
-msgstr ""
-
-#: stock/forms.py:222
+#: stock/forms.py:169
msgid "Destination location for uninstalled items"
msgstr ""
-#: stock/forms.py:226
+#: stock/forms.py:173
msgid "Confirm uninstall"
msgstr ""
-#: stock/forms.py:226
+#: stock/forms.py:173
msgid "Confirm removal of installed stock items"
msgstr ""
#: stock/models.py:62 stock/models.py:613
-#: stock/templates/stock/item_base.html:416
+#: stock/templates/stock/item_base.html:418
msgid "Owner"
msgstr ""
@@ -5623,7 +5696,7 @@ msgstr ""
msgid "Packaging this stock item is stored in"
msgstr ""
-#: stock/models.py:502 stock/templates/stock/item_base.html:298
+#: stock/models.py:502 stock/templates/stock/item_base.html:300
msgid "Installed In"
msgstr ""
@@ -5733,7 +5806,7 @@ msgstr ""
msgid "Serialized stock cannot be merged"
msgstr ""
-#: stock/models.py:1214 stock/serializers.py:775
+#: stock/models.py:1214 stock/serializers.py:832
msgid "Duplicate stock items"
msgstr ""
@@ -5769,7 +5842,7 @@ msgstr ""
msgid "Test name"
msgstr ""
-#: stock/models.py:1983 templates/js/translated/table_filters.js:271
+#: stock/models.py:1983
msgid "Test result"
msgstr ""
@@ -5806,7 +5879,7 @@ msgstr ""
msgid "Enter serial numbers for new items"
msgstr ""
-#: stock/serializers.py:326 stock/serializers.py:732 stock/serializers.py:973
+#: stock/serializers.py:326 stock/serializers.py:789 stock/serializers.py:1030
msgid "Destination stock location"
msgstr ""
@@ -5818,63 +5891,79 @@ msgstr ""
msgid "Serial numbers cannot be assigned to this part"
msgstr ""
-#: stock/serializers.py:589
+#: stock/serializers.py:363 stock/views.py:1108
+msgid "Serial numbers already exist"
+msgstr ""
+
+#: stock/serializers.py:405
+msgid "Select stock item to install"
+msgstr ""
+
+#: stock/serializers.py:421
+msgid "Stock item is unavailable"
+msgstr ""
+
+#: stock/serializers.py:428
+msgid "Selected part is not in the Bill of Materials"
+msgstr ""
+
+#: stock/serializers.py:646
msgid "Part must be salable"
msgstr ""
-#: stock/serializers.py:593
+#: stock/serializers.py:650
msgid "Item is allocated to a sales order"
msgstr ""
-#: stock/serializers.py:597
+#: stock/serializers.py:654
msgid "Item is allocated to a build order"
msgstr ""
-#: stock/serializers.py:627
+#: stock/serializers.py:684
msgid "Customer to assign stock items"
msgstr ""
-#: stock/serializers.py:633
+#: stock/serializers.py:690
msgid "Selected company is not a customer"
msgstr ""
-#: stock/serializers.py:641
+#: stock/serializers.py:698
msgid "Stock assignment notes"
msgstr ""
-#: stock/serializers.py:651 stock/serializers.py:881
+#: stock/serializers.py:708 stock/serializers.py:938
msgid "A list of stock items must be provided"
msgstr ""
-#: stock/serializers.py:739
+#: stock/serializers.py:796
msgid "Stock merging notes"
msgstr ""
-#: stock/serializers.py:744
+#: stock/serializers.py:801
msgid "Allow mismatched suppliers"
msgstr ""
-#: stock/serializers.py:745
+#: stock/serializers.py:802
msgid "Allow stock items with different supplier parts to be merged"
msgstr ""
-#: stock/serializers.py:750
+#: stock/serializers.py:807
msgid "Allow mismatched status"
msgstr ""
-#: stock/serializers.py:751
+#: stock/serializers.py:808
msgid "Allow stock items with different status codes to be merged"
msgstr ""
-#: stock/serializers.py:761
+#: stock/serializers.py:818
msgid "At least two stock items must be provided"
msgstr ""
-#: stock/serializers.py:843
+#: stock/serializers.py:900
msgid "StockItem primary key value"
msgstr ""
-#: stock/serializers.py:871
+#: stock/serializers.py:928
msgid "Stock transaction notes"
msgstr ""
@@ -5919,22 +6008,14 @@ msgstr ""
msgid "Installed Stock Items"
msgstr ""
-#: stock/templates/stock/item.html:154 stock/views.py:482
+#: stock/templates/stock/item.html:154 templates/js/translated/stock.js:3018
msgid "Install Stock Item"
msgstr ""
-#: stock/templates/stock/item.html:309 stock/templates/stock/item.html:334
+#: stock/templates/stock/item.html:304 templates/js/translated/stock.js:1480
msgid "Add Test Result"
msgstr ""
-#: stock/templates/stock/item.html:354
-msgid "Edit Test Result"
-msgstr ""
-
-#: stock/templates/stock/item.html:368
-msgid "Delete Test Result"
-msgstr ""
-
#: stock/templates/stock/item_base.html:42
#: templates/js/translated/barcode.js:330
#: templates/js/translated/barcode.js:335
@@ -5995,129 +6076,129 @@ msgstr ""
msgid "Uninstall"
msgstr ""
-#: stock/templates/stock/item_base.html:101
+#: stock/templates/stock/item_base.html:102
msgid "Install stock item"
msgstr ""
-#: stock/templates/stock/item_base.html:101
+#: stock/templates/stock/item_base.html:102
msgid "Install"
msgstr ""
-#: stock/templates/stock/item_base.html:115
+#: stock/templates/stock/item_base.html:117
msgid "Convert to variant"
msgstr ""
-#: stock/templates/stock/item_base.html:118
+#: stock/templates/stock/item_base.html:120
msgid "Duplicate stock item"
msgstr ""
-#: stock/templates/stock/item_base.html:120
+#: stock/templates/stock/item_base.html:122
msgid "Edit stock item"
msgstr ""
-#: stock/templates/stock/item_base.html:123
+#: stock/templates/stock/item_base.html:125
msgid "Delete stock item"
msgstr ""
-#: stock/templates/stock/item_base.html:161
+#: stock/templates/stock/item_base.html:163
msgid "previous page"
msgstr ""
-#: stock/templates/stock/item_base.html:161
+#: stock/templates/stock/item_base.html:163
msgid "Navigate to previous serial number"
msgstr ""
-#: stock/templates/stock/item_base.html:170
+#: stock/templates/stock/item_base.html:172
msgid "next page"
msgstr ""
-#: stock/templates/stock/item_base.html:170
+#: stock/templates/stock/item_base.html:172
msgid "Navigate to next serial number"
msgstr ""
-#: stock/templates/stock/item_base.html:197
+#: stock/templates/stock/item_base.html:199
#, python-format
msgid "This StockItem expired on %(item.expiry_date)s"
msgstr ""
-#: stock/templates/stock/item_base.html:197
+#: stock/templates/stock/item_base.html:199
#: templates/js/translated/table_filters.js:252
msgid "Expired"
msgstr ""
-#: stock/templates/stock/item_base.html:199
+#: stock/templates/stock/item_base.html:201
#, python-format
msgid "This StockItem expires on %(item.expiry_date)s"
msgstr ""
-#: stock/templates/stock/item_base.html:199
+#: stock/templates/stock/item_base.html:201
#: templates/js/translated/table_filters.js:258
msgid "Stale"
msgstr ""
-#: stock/templates/stock/item_base.html:206
-#: templates/js/translated/stock.js:1722
+#: stock/templates/stock/item_base.html:208
+#: templates/js/translated/stock.js:1846
msgid "Last Updated"
msgstr ""
-#: stock/templates/stock/item_base.html:211
+#: stock/templates/stock/item_base.html:213
msgid "Last Stocktake"
msgstr ""
-#: stock/templates/stock/item_base.html:215
+#: stock/templates/stock/item_base.html:217
msgid "No stocktake performed"
msgstr ""
-#: stock/templates/stock/item_base.html:233
+#: stock/templates/stock/item_base.html:235
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:240
+#: stock/templates/stock/item_base.html:242
msgid "This stock item is in production and cannot be edited."
msgstr ""
-#: stock/templates/stock/item_base.html:241
+#: stock/templates/stock/item_base.html:243
msgid "Edit the stock item from the build view."
msgstr ""
-#: stock/templates/stock/item_base.html:254
+#: stock/templates/stock/item_base.html:256
msgid "This stock item has not passed all required tests"
msgstr ""
-#: stock/templates/stock/item_base.html:262
+#: stock/templates/stock/item_base.html:264
msgid "This stock item is allocated to Sales Order"
msgstr ""
-#: stock/templates/stock/item_base.html:270
+#: stock/templates/stock/item_base.html:272
msgid "This stock item is allocated to Build Order"
msgstr ""
-#: stock/templates/stock/item_base.html:276
+#: stock/templates/stock/item_base.html:278
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:317
-#: templates/js/translated/build.js:1095
+#: stock/templates/stock/item_base.html:319
+#: templates/js/translated/build.js:1317
msgid "No location set"
msgstr ""
-#: stock/templates/stock/item_base.html:324
+#: stock/templates/stock/item_base.html:326
msgid "Barcode Identifier"
msgstr ""
-#: stock/templates/stock/item_base.html:366
+#: stock/templates/stock/item_base.html:368
msgid "Parent Item"
msgstr ""
-#: stock/templates/stock/item_base.html:384
+#: stock/templates/stock/item_base.html:386
msgid "No manufacturer set"
msgstr ""
-#: stock/templates/stock/item_base.html:409
+#: stock/templates/stock/item_base.html:411
msgid "Tests"
msgstr ""
-#: stock/templates/stock/item_base.html:499
+#: stock/templates/stock/item_base.html:492
msgid "Edit Stock Status"
msgstr ""
@@ -6130,39 +6211,6 @@ msgstr ""
msgid "This will remove %(qty)s units of %(full_name)s from stock."
msgstr ""
-#: stock/templates/stock/item_install.html:8
-msgid "Install another Stock Item into this item."
-msgstr ""
-
-#: stock/templates/stock/item_install.html:11
-#: stock/templates/stock/item_install.html:24
-msgid "Stock items can only be installed if they meet the following criteria"
-msgstr ""
-
-#: stock/templates/stock/item_install.html:14
-msgid "The Stock Item links to a Part which is in the BOM for this Stock Item"
-msgstr ""
-
-#: stock/templates/stock/item_install.html:15
-msgid "The Stock Item is currently in stock"
-msgstr ""
-
-#: stock/templates/stock/item_install.html:16
-msgid "The Stock Item is serialized and does not belong to another item"
-msgstr ""
-
-#: stock/templates/stock/item_install.html:21
-msgid "Install this Stock Item in another stock item."
-msgstr ""
-
-#: stock/templates/stock/item_install.html:27
-msgid "The part associated to this Stock Item belongs to another part's BOM"
-msgstr ""
-
-#: stock/templates/stock/item_install.html:28
-msgid "This Stock Item is serialized and does not belong to another item"
-msgstr ""
-
#: stock/templates/stock/item_serialize.html:5
msgid "Create serialized items from this stock item."
msgstr ""
@@ -6247,7 +6295,7 @@ msgstr ""
msgid "The following stock items will be uninstalled"
msgstr ""
-#: stock/templates/stock/stockitem_convert.html:7 stock/views.py:879
+#: stock/templates/stock/stockitem_convert.html:7 stock/views.py:730
msgid "Convert Stock Item"
msgstr ""
@@ -6268,11 +6316,11 @@ msgstr ""
msgid "Are you sure you want to delete this stock tracking entry?"
msgstr ""
-#: stock/views.py:162 templates/js/translated/stock.js:139
+#: stock/views.py:162 templates/js/translated/stock.js:140
msgid "Edit Stock Location"
msgstr ""
-#: stock/views.py:269 stock/views.py:858 stock/views.py:984 stock/views.py:1266
+#: stock/views.py:269 stock/views.py:709 stock/views.py:835 stock/views.py:1117
msgid "Owner is required (ownership control is enabled)"
msgstr ""
@@ -6300,59 +6348,63 @@ msgstr ""
msgid "Confirm test data deletion"
msgstr ""
+#: stock/views.py:352
+msgid "Check the confirmation box"
+msgstr ""
+
#: stock/views.py:456
msgid "Stock Item QR Code"
msgstr ""
-#: stock/views.py:630
+#: stock/views.py:481
msgid "Uninstall Stock Items"
msgstr ""
-#: stock/views.py:727 templates/js/translated/stock.js:1074
+#: stock/views.py:578 templates/js/translated/stock.js:1075
msgid "Confirm stock adjustment"
msgstr ""
-#: stock/views.py:738
+#: stock/views.py:589
msgid "Uninstalled stock items"
msgstr ""
-#: stock/views.py:760 templates/js/translated/stock.js:332
+#: stock/views.py:611 templates/js/translated/stock.js:333
msgid "Edit Stock Item"
msgstr ""
-#: stock/views.py:910
+#: stock/views.py:761
msgid "Create new Stock Location"
msgstr ""
-#: stock/views.py:1011
+#: stock/views.py:862
msgid "Create new Stock Item"
msgstr ""
-#: stock/views.py:1153 templates/js/translated/stock.js:312
+#: stock/views.py:1004 templates/js/translated/stock.js:313
msgid "Duplicate Stock Item"
msgstr ""
-#: stock/views.py:1235
+#: stock/views.py:1086
msgid "Quantity cannot be negative"
msgstr ""
-#: stock/views.py:1335
+#: stock/views.py:1186
msgid "Delete Stock Location"
msgstr ""
-#: stock/views.py:1348
+#: stock/views.py:1199
msgid "Delete Stock Item"
msgstr ""
-#: stock/views.py:1359
+#: stock/views.py:1210
msgid "Delete Stock Tracking Entry"
msgstr ""
-#: stock/views.py:1366
+#: stock/views.py:1217
msgid "Edit Stock Tracking Entry"
msgstr ""
-#: stock/views.py:1375
+#: stock/views.py:1226
msgid "Add Stock Tracking Entry"
msgstr ""
@@ -6527,15 +6579,15 @@ msgstr ""
msgid "Part Settings"
msgstr ""
-#: templates/InvenTree/settings/part.html:43
+#: templates/InvenTree/settings/part.html:44
msgid "Part Import"
msgstr ""
-#: templates/InvenTree/settings/part.html:47
+#: templates/InvenTree/settings/part.html:48
msgid "Import Part"
msgstr ""
-#: templates/InvenTree/settings/part.html:61
+#: templates/InvenTree/settings/part.html:62
msgid "Part Parameter Templates"
msgstr ""
@@ -6663,45 +6715,45 @@ msgstr ""
msgid "Report Settings"
msgstr ""
-#: templates/InvenTree/settings/setting.html:30
+#: templates/InvenTree/settings/setting.html:33
msgid "No value set"
msgstr ""
-#: templates/InvenTree/settings/setting.html:41
+#: templates/InvenTree/settings/setting.html:38
msgid "Edit setting"
msgstr ""
-#: templates/InvenTree/settings/settings.html:78
+#: templates/InvenTree/settings/settings.html:115
msgid "Edit Plugin Setting"
msgstr ""
-#: templates/InvenTree/settings/settings.html:80
+#: templates/InvenTree/settings/settings.html:117
msgid "Edit Global Setting"
msgstr ""
-#: templates/InvenTree/settings/settings.html:82
+#: templates/InvenTree/settings/settings.html:119
msgid "Edit User Setting"
msgstr ""
-#: templates/InvenTree/settings/settings.html:171
+#: templates/InvenTree/settings/settings.html:208
msgid "No category parameter templates found"
msgstr ""
-#: templates/InvenTree/settings/settings.html:193
-#: templates/InvenTree/settings/settings.html:292
+#: templates/InvenTree/settings/settings.html:230
+#: templates/InvenTree/settings/settings.html:329
msgid "Edit Template"
msgstr ""
-#: templates/InvenTree/settings/settings.html:194
-#: templates/InvenTree/settings/settings.html:293
+#: templates/InvenTree/settings/settings.html:231
+#: templates/InvenTree/settings/settings.html:330
msgid "Delete Template"
msgstr ""
-#: templates/InvenTree/settings/settings.html:272
+#: templates/InvenTree/settings/settings.html:309
msgid "No part parameter templates found"
msgstr ""
-#: templates/InvenTree/settings/settings.html:276
+#: templates/InvenTree/settings/settings.html:313
msgid "ID"
msgstr ""
@@ -6996,10 +7048,11 @@ msgid "InvenTree Version Information"
msgstr ""
#: templates/about.html:11 templates/about.html:105
-#: templates/js/translated/bom.js:407 templates/js/translated/modals.js:53
-#: templates/js/translated/modals.js:584 templates/js/translated/modals.js:678
-#: templates/js/translated/modals.js:983 templates/modals.html:15
-#: templates/modals.html:27 templates/modals.html:39 templates/modals.html:50
+#: templates/js/translated/bom.js:132 templates/js/translated/bom.js:620
+#: templates/js/translated/modals.js:53 templates/js/translated/modals.js:584
+#: templates/js/translated/modals.js:678 templates/js/translated/modals.js:986
+#: templates/modals.html:15 templates/modals.html:27 templates/modals.html:39
+#: templates/modals.html:50
msgid "Close"
msgstr ""
@@ -7275,14 +7328,14 @@ msgid "The following parts are low on required stock"
msgstr ""
#: templates/email/build_order_required_stock.html:18
-#: templates/js/translated/bom.js:1117
+#: templates/js/translated/bom.js:1335
msgid "Required Quantity"
msgstr ""
#: templates/email/build_order_required_stock.html:19
#: templates/email/low_stock_notification.html:18
-#: templates/js/translated/bom.js:591 templates/js/translated/build.js:1189
-#: templates/js/translated/build.js:1810
+#: templates/js/translated/bom.js:804 templates/js/translated/build.js:1411
+#: templates/js/translated/build.js:2048
#: templates/js/translated/table_filters.js:178
msgid "Available"
msgstr ""
@@ -7325,11 +7378,11 @@ msgstr ""
msgid "Remote image must not exceed maximum allowable file size"
msgstr ""
-#: templates/js/translated/api.js:185 templates/js/translated/modals.js:1053
+#: templates/js/translated/api.js:185 templates/js/translated/modals.js:1056
msgid "No Response"
msgstr ""
-#: templates/js/translated/api.js:186 templates/js/translated/modals.js:1054
+#: templates/js/translated/api.js:186 templates/js/translated/modals.js:1057
msgid "No response from the InvenTree server"
msgstr ""
@@ -7341,27 +7394,27 @@ msgstr ""
msgid "API request returned error code 400"
msgstr ""
-#: templates/js/translated/api.js:197 templates/js/translated/modals.js:1063
+#: templates/js/translated/api.js:197 templates/js/translated/modals.js:1066
msgid "Error 401: Not Authenticated"
msgstr ""
-#: templates/js/translated/api.js:198 templates/js/translated/modals.js:1064
+#: templates/js/translated/api.js:198 templates/js/translated/modals.js:1067
msgid "Authentication credentials not supplied"
msgstr ""
-#: templates/js/translated/api.js:202 templates/js/translated/modals.js:1068
+#: templates/js/translated/api.js:202 templates/js/translated/modals.js:1071
msgid "Error 403: Permission Denied"
msgstr ""
-#: templates/js/translated/api.js:203 templates/js/translated/modals.js:1069
+#: templates/js/translated/api.js:203 templates/js/translated/modals.js:1072
msgid "You do not have the required permissions to access this function"
msgstr ""
-#: templates/js/translated/api.js:207 templates/js/translated/modals.js:1073
+#: templates/js/translated/api.js:207 templates/js/translated/modals.js:1076
msgid "Error 404: Resource Not Found"
msgstr ""
-#: templates/js/translated/api.js:208 templates/js/translated/modals.js:1074
+#: templates/js/translated/api.js:208 templates/js/translated/modals.js:1077
msgid "The requested resource could not be located on the server"
msgstr ""
@@ -7373,11 +7426,11 @@ msgstr ""
msgid "HTTP method not allowed at URL"
msgstr ""
-#: templates/js/translated/api.js:217 templates/js/translated/modals.js:1078
+#: templates/js/translated/api.js:217 templates/js/translated/modals.js:1081
msgid "Error 408: Timeout"
msgstr ""
-#: templates/js/translated/api.js:218 templates/js/translated/modals.js:1079
+#: templates/js/translated/api.js:218 templates/js/translated/modals.js:1082
msgid "Connection timeout while requesting data from server"
msgstr ""
@@ -7446,7 +7499,7 @@ msgid "Unknown response from server"
msgstr ""
#: templates/js/translated/barcode.js:140
-#: templates/js/translated/modals.js:1043
+#: templates/js/translated/modals.js:1046
msgid "Invalid server response"
msgstr ""
@@ -7474,7 +7527,7 @@ msgstr ""
msgid "Unlink"
msgstr ""
-#: templates/js/translated/barcode.js:397 templates/js/translated/stock.js:1026
+#: templates/js/translated/barcode.js:397 templates/js/translated/stock.js:1027
msgid "Remove stock item"
msgstr ""
@@ -7516,327 +7569,369 @@ msgstr ""
msgid "Barcode does not match a valid location"
msgstr ""
-#: templates/js/translated/bom.js:36
+#: templates/js/translated/bom.js:75
+msgid "Display row data"
+msgstr ""
+
+#: templates/js/translated/bom.js:131
+msgid "Row Data"
+msgstr ""
+
+#: templates/js/translated/bom.js:249
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:518
+#: templates/js/translated/bom.js:252 templates/js/translated/bom.js:286
+#: templates/js/translated/order.js:369 templates/js/translated/stock.js:519
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:519
+#: templates/js/translated/bom.js:253 templates/js/translated/bom.js:287
+#: templates/js/translated/order.js:370 templates/js/translated/stock.js:520
msgid "Select file format"
msgstr ""
-#: templates/js/translated/bom.js:81
+#: templates/js/translated/bom.js:294
msgid "Cascading"
msgstr ""
-#: templates/js/translated/bom.js:82
+#: templates/js/translated/bom.js:295
msgid "Download cascading / multi-level BOM"
msgstr ""
-#: templates/js/translated/bom.js:87
+#: templates/js/translated/bom.js:300
msgid "Levels"
msgstr ""
-#: templates/js/translated/bom.js:88
+#: templates/js/translated/bom.js:301
msgid "Select maximum number of BOM levels to export (0 = all levels)"
msgstr ""
-#: templates/js/translated/bom.js:94
+#: templates/js/translated/bom.js:307
msgid "Include Parameter Data"
msgstr ""
-#: templates/js/translated/bom.js:95
+#: templates/js/translated/bom.js:308
msgid "Include part parameter data in exported BOM"
msgstr ""
-#: templates/js/translated/bom.js:100
+#: templates/js/translated/bom.js:313
msgid "Include Stock Data"
msgstr ""
-#: templates/js/translated/bom.js:101
+#: templates/js/translated/bom.js:314
msgid "Include part stock data in exported BOM"
msgstr ""
-#: templates/js/translated/bom.js:106
+#: templates/js/translated/bom.js:319
msgid "Include Manufacturer Data"
msgstr ""
-#: templates/js/translated/bom.js:107
+#: templates/js/translated/bom.js:320
msgid "Include part manufacturer data in exported BOM"
msgstr ""
-#: templates/js/translated/bom.js:112
+#: templates/js/translated/bom.js:325
msgid "Include Supplier Data"
msgstr ""
-#: templates/js/translated/bom.js:113
+#: templates/js/translated/bom.js:326
msgid "Include part supplier data in exported BOM"
msgstr ""
-#: templates/js/translated/bom.js:296
+#: templates/js/translated/bom.js:509
msgid "Remove substitute part"
msgstr ""
-#: templates/js/translated/bom.js:352
+#: templates/js/translated/bom.js:565
msgid "Select and add a new substitute part using the input below"
msgstr ""
-#: templates/js/translated/bom.js:363
+#: templates/js/translated/bom.js:576
msgid "Are you sure you wish to remove this substitute part link?"
msgstr ""
-#: templates/js/translated/bom.js:369
+#: templates/js/translated/bom.js:582
msgid "Remove Substitute Part"
msgstr ""
-#: templates/js/translated/bom.js:408
+#: templates/js/translated/bom.js:621
msgid "Add Substitute"
msgstr ""
-#: templates/js/translated/bom.js:409
+#: templates/js/translated/bom.js:622
msgid "Edit BOM Item Substitutes"
msgstr ""
-#: templates/js/translated/bom.js:528
+#: templates/js/translated/bom.js:741
msgid "Substitutes Available"
msgstr ""
-#: templates/js/translated/bom.js:532 templates/js/translated/build.js:1171
+#: templates/js/translated/bom.js:745 templates/js/translated/build.js:1393
msgid "Variant stock allowed"
msgstr ""
-#: templates/js/translated/bom.js:537
+#: templates/js/translated/bom.js:750
msgid "Open subassembly"
msgstr ""
-#: templates/js/translated/bom.js:609
+#: templates/js/translated/bom.js:822
msgid "Substitutes"
msgstr ""
-#: templates/js/translated/bom.js:624
+#: templates/js/translated/bom.js:837
msgid "Purchase Price Range"
msgstr ""
-#: templates/js/translated/bom.js:631
+#: templates/js/translated/bom.js:844
msgid "Purchase Price Average"
msgstr ""
-#: templates/js/translated/bom.js:680 templates/js/translated/bom.js:769
+#: templates/js/translated/bom.js:893 templates/js/translated/bom.js:982
msgid "View BOM"
msgstr ""
-#: templates/js/translated/bom.js:740
+#: templates/js/translated/bom.js:953
msgid "Validate BOM Item"
msgstr ""
-#: templates/js/translated/bom.js:742
+#: templates/js/translated/bom.js:955
msgid "This line has been validated"
msgstr ""
-#: templates/js/translated/bom.js:744
+#: templates/js/translated/bom.js:957
msgid "Edit substitute parts"
msgstr ""
-#: templates/js/translated/bom.js:746 templates/js/translated/bom.js:920
+#: templates/js/translated/bom.js:959 templates/js/translated/bom.js:1138
msgid "Edit BOM Item"
msgstr ""
-#: templates/js/translated/bom.js:748 templates/js/translated/bom.js:903
+#: templates/js/translated/bom.js:961 templates/js/translated/bom.js:1121
msgid "Delete BOM Item"
msgstr ""
-#: templates/js/translated/bom.js:842 templates/js/translated/build.js:915
+#: templates/js/translated/bom.js:1060 templates/js/translated/build.js:1137
msgid "No BOM items found"
msgstr ""
-#: templates/js/translated/bom.js:898
+#: templates/js/translated/bom.js:1116
msgid "Are you sure you want to delete this BOM item?"
msgstr ""
-#: templates/js/translated/bom.js:1100 templates/js/translated/build.js:1155
+#: templates/js/translated/bom.js:1318 templates/js/translated/build.js:1377
msgid "Required Part"
msgstr ""
-#: templates/js/translated/bom.js:1122
+#: templates/js/translated/bom.js:1340
msgid "Inherited from parent BOM"
msgstr ""
-#: templates/js/translated/build.js:84
+#: templates/js/translated/build.js:85
msgid "Edit Build Order"
msgstr ""
-#: templates/js/translated/build.js:118
+#: templates/js/translated/build.js:119
msgid "Create Build Order"
msgstr ""
-#: templates/js/translated/build.js:139
+#: templates/js/translated/build.js:140
msgid "Build order is ready to be completed"
msgstr ""
-#: templates/js/translated/build.js:144
+#: templates/js/translated/build.js:145
msgid "Build Order is incomplete"
msgstr ""
-#: templates/js/translated/build.js:172
+#: templates/js/translated/build.js:173
msgid "Complete Build Order"
msgstr ""
-#: templates/js/translated/build.js:193
+#: templates/js/translated/build.js:214 templates/js/translated/stock.js:93
+#: templates/js/translated/stock.js:182
+msgid "Next available serial number"
+msgstr ""
+
+#: templates/js/translated/build.js:216 templates/js/translated/stock.js:95
+#: templates/js/translated/stock.js:184
+msgid "Latest serial number"
+msgstr ""
+
+#: templates/js/translated/build.js:225
+msgid "The Bill of Materials contains trackable parts"
+msgstr ""
+
+#: templates/js/translated/build.js:226
+msgid "Build outputs must be generated individually"
+msgstr ""
+
+#: templates/js/translated/build.js:234
+msgid "Trackable parts can have serial numbers specified"
+msgstr ""
+
+#: templates/js/translated/build.js:235
+msgid "Enter serial numbers to generate multiple single build outputs"
+msgstr ""
+
+#: templates/js/translated/build.js:242
+msgid "Create Build Output"
+msgstr ""
+
+#: templates/js/translated/build.js:273
msgid "Allocate stock items to this build output"
msgstr ""
-#: templates/js/translated/build.js:204
+#: templates/js/translated/build.js:284
msgid "Unallocate stock from build output"
msgstr ""
-#: templates/js/translated/build.js:213
+#: templates/js/translated/build.js:293
msgid "Complete build output"
msgstr ""
-#: templates/js/translated/build.js:221
+#: templates/js/translated/build.js:301
msgid "Delete build output"
msgstr ""
-#: templates/js/translated/build.js:244
+#: templates/js/translated/build.js:324
msgid "Are you sure you wish to unallocate stock items from this build?"
msgstr ""
-#: templates/js/translated/build.js:262
+#: templates/js/translated/build.js:342
msgid "Unallocate Stock Items"
msgstr ""
-#: templates/js/translated/build.js:280
+#: templates/js/translated/build.js:360 templates/js/translated/build.js:508
msgid "Select Build Outputs"
msgstr ""
-#: templates/js/translated/build.js:281
+#: templates/js/translated/build.js:361 templates/js/translated/build.js:509
msgid "At least one build output must be selected"
msgstr ""
-#: templates/js/translated/build.js:335
+#: templates/js/translated/build.js:415 templates/js/translated/build.js:563
msgid "Output"
msgstr ""
-#: templates/js/translated/build.js:351
+#: templates/js/translated/build.js:431
msgid "Complete Build Outputs"
msgstr ""
-#: templates/js/translated/build.js:446
+#: templates/js/translated/build.js:576
+msgid "Delete Build Outputs"
+msgstr ""
+
+#: templates/js/translated/build.js:665
msgid "No build order allocations found"
msgstr ""
-#: templates/js/translated/build.js:484 templates/js/translated/order.js:1848
+#: templates/js/translated/build.js:703 templates/js/translated/order.js:1848
msgid "Location not specified"
msgstr ""
-#: templates/js/translated/build.js:663
+#: templates/js/translated/build.js:885
msgid "No active build outputs found"
msgstr ""
-#: templates/js/translated/build.js:1112 templates/js/translated/build.js:1821
+#: templates/js/translated/build.js:1334 templates/js/translated/build.js:2059
#: templates/js/translated/order.js:1982
msgid "Edit stock allocation"
msgstr ""
-#: templates/js/translated/build.js:1114 templates/js/translated/build.js:1822
+#: templates/js/translated/build.js:1336 templates/js/translated/build.js:2060
#: templates/js/translated/order.js:1983
msgid "Delete stock allocation"
msgstr ""
-#: templates/js/translated/build.js:1132
+#: templates/js/translated/build.js:1354
msgid "Edit Allocation"
msgstr ""
-#: templates/js/translated/build.js:1142
+#: templates/js/translated/build.js:1364
msgid "Remove Allocation"
msgstr ""
-#: templates/js/translated/build.js:1167
+#: templates/js/translated/build.js:1389
msgid "Substitute parts available"
msgstr ""
-#: templates/js/translated/build.js:1184
+#: templates/js/translated/build.js:1406
msgid "Quantity Per"
msgstr ""
-#: templates/js/translated/build.js:1194 templates/js/translated/build.js:1420
-#: templates/js/translated/build.js:1817 templates/js/translated/order.js:2227
+#: templates/js/translated/build.js:1416 templates/js/translated/build.js:1656
+#: templates/js/translated/build.js:2055 templates/js/translated/order.js:2227
msgid "Allocated"
msgstr ""
-#: templates/js/translated/build.js:1250 templates/js/translated/order.js:2307
+#: templates/js/translated/build.js:1472 templates/js/translated/order.js:2307
msgid "Build stock"
msgstr ""
-#: templates/js/translated/build.js:1254 templates/stock_table.html:53
+#: templates/js/translated/build.js:1476 templates/stock_table.html:53
msgid "Order stock"
msgstr ""
-#: templates/js/translated/build.js:1257 templates/js/translated/order.js:2300
+#: templates/js/translated/build.js:1479 templates/js/translated/order.js:2300
msgid "Allocate stock"
msgstr ""
-#: templates/js/translated/build.js:1322 templates/js/translated/order.js:1499
+#: templates/js/translated/build.js:1558 templates/js/translated/order.js:1499
msgid "Specify stock allocation quantity"
msgstr ""
-#: templates/js/translated/build.js:1393 templates/js/translated/label.js:134
+#: templates/js/translated/build.js:1629 templates/js/translated/label.js:134
#: templates/js/translated/order.js:1550 templates/js/translated/report.js:225
msgid "Select Parts"
msgstr ""
-#: templates/js/translated/build.js:1394 templates/js/translated/order.js:1551
+#: templates/js/translated/build.js:1630 templates/js/translated/order.js:1551
msgid "You must select at least one part to allocate"
msgstr ""
-#: templates/js/translated/build.js:1408 templates/js/translated/order.js:1565
+#: templates/js/translated/build.js:1644 templates/js/translated/order.js:1565
msgid "Select source location (leave blank to take from all locations)"
msgstr ""
-#: templates/js/translated/build.js:1437 templates/js/translated/order.js:1600
+#: templates/js/translated/build.js:1673 templates/js/translated/order.js:1600
msgid "Confirm stock allocation"
msgstr "Подтвердите выделение запасов"
-#: templates/js/translated/build.js:1438
+#: templates/js/translated/build.js:1674
msgid "Allocate Stock Items to Build Order"
msgstr ""
-#: templates/js/translated/build.js:1449 templates/js/translated/order.js:1613
+#: templates/js/translated/build.js:1685 templates/js/translated/order.js:1613
msgid "No matching stock locations"
msgstr ""
-#: templates/js/translated/build.js:1519 templates/js/translated/order.js:1690
+#: templates/js/translated/build.js:1757 templates/js/translated/order.js:1690
msgid "No matching stock items"
msgstr ""
-#: templates/js/translated/build.js:1637
+#: templates/js/translated/build.js:1875
msgid "No builds matching query"
msgstr ""
-#: templates/js/translated/build.js:1654 templates/js/translated/part.js:1213
-#: templates/js/translated/part.js:1624 templates/js/translated/stock.js:1520
-#: templates/js/translated/stock.js:2479
+#: templates/js/translated/build.js:1892 templates/js/translated/part.js:1213
+#: templates/js/translated/part.js:1624 templates/js/translated/stock.js:1644
+#: templates/js/translated/stock.js:2603
msgid "Select"
msgstr ""
-#: templates/js/translated/build.js:1674
+#: templates/js/translated/build.js:1912
msgid "Build order is overdue"
msgstr ""
-#: templates/js/translated/build.js:1735 templates/js/translated/stock.js:2698
+#: templates/js/translated/build.js:1973 templates/js/translated/stock.js:2822
msgid "No user information"
msgstr ""
-#: templates/js/translated/build.js:1747
+#: templates/js/translated/build.js:1985
msgid "No information"
msgstr ""
-#: templates/js/translated/build.js:1798
+#: templates/js/translated/build.js:2036
msgid "No parts allocated for"
msgstr ""
@@ -7966,48 +8061,60 @@ msgstr ""
msgid "Create filter"
msgstr ""
-#: templates/js/translated/forms.js:350 templates/js/translated/forms.js:365
-#: templates/js/translated/forms.js:379 templates/js/translated/forms.js:393
+#: templates/js/translated/forms.js:351 templates/js/translated/forms.js:366
+#: templates/js/translated/forms.js:380 templates/js/translated/forms.js:394
msgid "Action Prohibited"
msgstr ""
-#: templates/js/translated/forms.js:352
+#: templates/js/translated/forms.js:353
msgid "Create operation not allowed"
msgstr ""
-#: templates/js/translated/forms.js:367
+#: templates/js/translated/forms.js:368
msgid "Update operation not allowed"
msgstr ""
-#: templates/js/translated/forms.js:381
+#: templates/js/translated/forms.js:382
msgid "Delete operation not allowed"
msgstr ""
-#: templates/js/translated/forms.js:395
+#: templates/js/translated/forms.js:396
msgid "View operation not allowed"
msgstr ""
-#: templates/js/translated/forms.js:680
+#: templates/js/translated/forms.js:681
msgid "Enter a valid number"
msgstr ""
-#: templates/js/translated/forms.js:1082 templates/modals.html:19
+#: templates/js/translated/forms.js:1129 templates/modals.html:19
#: templates/modals.html:43
msgid "Form errors exist"
msgstr ""
-#: templates/js/translated/forms.js:1487
+#: templates/js/translated/forms.js:1558
msgid "No results found"
msgstr ""
-#: templates/js/translated/forms.js:1691
+#: templates/js/translated/forms.js:1768
msgid "Searching"
msgstr ""
-#: templates/js/translated/forms.js:1930
+#: templates/js/translated/forms.js:2013
msgid "Clear input"
msgstr ""
+#: templates/js/translated/forms.js:2479
+msgid "File Column"
+msgstr ""
+
+#: templates/js/translated/forms.js:2479
+msgid "Field Name"
+msgstr ""
+
+#: templates/js/translated/forms.js:2491
+msgid "Select Columns"
+msgstr ""
+
#: templates/js/translated/helpers.js:19
msgid "YES"
msgstr ""
@@ -8017,7 +8124,7 @@ msgid "NO"
msgstr ""
#: templates/js/translated/label.js:29 templates/js/translated/report.js:118
-#: templates/js/translated/stock.js:1050
+#: templates/js/translated/stock.js:1051
msgid "Select Stock Items"
msgstr ""
@@ -8072,7 +8179,7 @@ msgid "Cancel"
msgstr ""
#: templates/js/translated/modals.js:77 templates/js/translated/modals.js:119
-#: templates/js/translated/modals.js:677 templates/js/translated/modals.js:982
+#: templates/js/translated/modals.js:677 templates/js/translated/modals.js:985
#: templates/modals.html:28 templates/modals.html:51
msgid "Submit"
msgstr ""
@@ -8097,31 +8204,31 @@ msgstr ""
msgid "Loading Data"
msgstr ""
-#: templates/js/translated/modals.js:934
+#: templates/js/translated/modals.js:937
msgid "Invalid response from server"
msgstr ""
-#: templates/js/translated/modals.js:934
+#: templates/js/translated/modals.js:937
msgid "Form data missing from server response"
msgstr ""
-#: templates/js/translated/modals.js:946
+#: templates/js/translated/modals.js:949
msgid "Error posting form data"
msgstr ""
-#: templates/js/translated/modals.js:1043
+#: templates/js/translated/modals.js:1046
msgid "JSON response missing form data"
msgstr ""
-#: templates/js/translated/modals.js:1058
+#: templates/js/translated/modals.js:1061
msgid "Error 400: Bad Request"
msgstr ""
-#: templates/js/translated/modals.js:1059
+#: templates/js/translated/modals.js:1062
msgid "Server returned error code 400"
msgstr ""
-#: templates/js/translated/modals.js:1082
+#: templates/js/translated/modals.js:1085
msgid "Error requesting form data"
msgstr ""
@@ -8141,10 +8248,6 @@ msgstr ""
msgid "Build ID"
msgstr ""
-#: templates/js/translated/model_renderers.js:182
-msgid "Part ID"
-msgstr ""
-
#: templates/js/translated/model_renderers.js:249
#: templates/js/translated/model_renderers.js:270
msgid "Order ID"
@@ -8210,7 +8313,7 @@ msgstr ""
msgid "Quantity to receive"
msgstr ""
-#: templates/js/translated/order.js:520 templates/js/translated/stock.js:2131
+#: templates/js/translated/order.js:520 templates/js/translated/stock.js:2255
msgid "Stock Status"
msgstr ""
@@ -8344,7 +8447,7 @@ msgid "Delete Stock Allocation"
msgstr ""
#: templates/js/translated/order.js:1959 templates/js/translated/order.js:2048
-#: templates/js/translated/stock.js:1436
+#: templates/js/translated/stock.js:1560
msgid "Shipped to customer"
msgstr ""
@@ -8545,12 +8648,12 @@ msgid "No category"
msgstr ""
#: templates/js/translated/part.js:1296
-#: templates/js/translated/table_filters.js:430
+#: templates/js/translated/table_filters.js:425
msgid "Low stock"
msgstr ""
#: templates/js/translated/part.js:1387 templates/js/translated/part.js:1559
-#: templates/js/translated/stock.js:2440
+#: templates/js/translated/stock.js:2564
msgid "Display as list"
msgstr ""
@@ -8558,7 +8661,7 @@ msgstr ""
msgid "Display as grid"
msgstr ""
-#: templates/js/translated/part.js:1578 templates/js/translated/stock.js:2459
+#: templates/js/translated/part.js:1578 templates/js/translated/stock.js:2583
msgid "Display as tree"
msgstr ""
@@ -8566,7 +8669,7 @@ msgstr ""
msgid "Subscribed category"
msgstr ""
-#: templates/js/translated/part.js:1656 templates/js/translated/stock.js:2503
+#: templates/js/translated/part.js:1656 templates/js/translated/stock.js:2627
msgid "Path"
msgstr ""
@@ -8574,11 +8677,12 @@ msgstr ""
msgid "No test templates matching query"
msgstr ""
-#: templates/js/translated/part.js:1751 templates/js/translated/stock.js:1242
+#: templates/js/translated/part.js:1751 templates/js/translated/stock.js:1271
msgid "Edit test result"
msgstr ""
-#: templates/js/translated/part.js:1752 templates/js/translated/stock.js:1243
+#: templates/js/translated/part.js:1752 templates/js/translated/stock.js:1272
+#: templates/js/translated/stock.js:1518
msgid "Delete test result"
msgstr ""
@@ -8687,347 +8791,375 @@ msgstr ""
msgid "Sales Order(s) must be selected before printing report"
msgstr ""
-#: templates/js/translated/stock.js:74
+#: templates/js/translated/stock.js:75
msgid "Serialize Stock Item"
msgstr ""
-#: templates/js/translated/stock.js:92 templates/js/translated/stock.js:181
-msgid "Next available serial number"
-msgstr ""
-
-#: templates/js/translated/stock.js:94 templates/js/translated/stock.js:183
-msgid "Latest serial number"
-msgstr ""
-
-#: templates/js/translated/stock.js:102
+#: templates/js/translated/stock.js:103
msgid "Confirm Stock Serialization"
msgstr ""
-#: templates/js/translated/stock.js:111
+#: templates/js/translated/stock.js:112
msgid "Parent stock location"
msgstr ""
-#: templates/js/translated/stock.js:154
+#: templates/js/translated/stock.js:155
msgid "New Stock Location"
msgstr ""
-#: templates/js/translated/stock.js:194
+#: templates/js/translated/stock.js:195
msgid "This part cannot be serialized"
msgstr ""
-#: templates/js/translated/stock.js:233
+#: templates/js/translated/stock.js:234
msgid "Enter initial quantity for this stock item"
msgstr ""
-#: templates/js/translated/stock.js:239
+#: templates/js/translated/stock.js:240
msgid "Enter serial numbers for new stock (or leave blank)"
msgstr ""
-#: templates/js/translated/stock.js:382
+#: templates/js/translated/stock.js:383
msgid "Created new stock item"
msgstr ""
-#: templates/js/translated/stock.js:395
+#: templates/js/translated/stock.js:396
msgid "Created multiple stock items"
msgstr ""
-#: templates/js/translated/stock.js:420
+#: templates/js/translated/stock.js:421
msgid "Find Serial Number"
msgstr ""
-#: templates/js/translated/stock.js:424 templates/js/translated/stock.js:425
+#: templates/js/translated/stock.js:425 templates/js/translated/stock.js:426
msgid "Enter serial number"
msgstr ""
-#: templates/js/translated/stock.js:441
+#: templates/js/translated/stock.js:442
msgid "Enter a serial number"
msgstr ""
-#: templates/js/translated/stock.js:461
+#: templates/js/translated/stock.js:462
msgid "No matching serial number"
msgstr ""
-#: templates/js/translated/stock.js:470
+#: templates/js/translated/stock.js:471
msgid "More than one matching result found"
msgstr ""
-#: templates/js/translated/stock.js:515
+#: templates/js/translated/stock.js:516
msgid "Export Stock"
msgstr ""
-#: templates/js/translated/stock.js:526
+#: templates/js/translated/stock.js:527
msgid "Include Sublocations"
msgstr ""
-#: templates/js/translated/stock.js:527
+#: templates/js/translated/stock.js:528
msgid "Include stock items in sublocations"
msgstr ""
-#: templates/js/translated/stock.js:636
+#: templates/js/translated/stock.js:637
msgid "Confirm stock assignment"
msgstr ""
-#: templates/js/translated/stock.js:637
+#: templates/js/translated/stock.js:638
msgid "Assign Stock to Customer"
msgstr ""
-#: templates/js/translated/stock.js:714
+#: templates/js/translated/stock.js:715
msgid "Warning: Merge operation cannot be reversed"
msgstr ""
-#: templates/js/translated/stock.js:715
+#: templates/js/translated/stock.js:716
msgid "Some information will be lost when merging stock items"
msgstr ""
-#: templates/js/translated/stock.js:717
+#: templates/js/translated/stock.js:718
msgid "Stock transaction history will be deleted for merged items"
msgstr ""
-#: templates/js/translated/stock.js:718
+#: templates/js/translated/stock.js:719
msgid "Supplier part information will be deleted for merged items"
msgstr ""
-#: templates/js/translated/stock.js:804
+#: templates/js/translated/stock.js:805
msgid "Confirm stock item merge"
msgstr ""
-#: templates/js/translated/stock.js:805
+#: templates/js/translated/stock.js:806
msgid "Merge Stock Items"
msgstr ""
-#: templates/js/translated/stock.js:900
+#: templates/js/translated/stock.js:901
msgid "Transfer Stock"
msgstr ""
-#: templates/js/translated/stock.js:901
+#: templates/js/translated/stock.js:902
msgid "Move"
msgstr ""
-#: templates/js/translated/stock.js:907
+#: templates/js/translated/stock.js:908
msgid "Count Stock"
msgstr ""
-#: templates/js/translated/stock.js:908
+#: templates/js/translated/stock.js:909
msgid "Count"
msgstr ""
-#: templates/js/translated/stock.js:912
+#: templates/js/translated/stock.js:913
msgid "Remove Stock"
msgstr ""
-#: templates/js/translated/stock.js:913
+#: templates/js/translated/stock.js:914
msgid "Take"
msgstr ""
-#: templates/js/translated/stock.js:917
+#: templates/js/translated/stock.js:918
msgid "Add Stock"
msgstr ""
-#: templates/js/translated/stock.js:918 users/models.py:208
+#: templates/js/translated/stock.js:919 users/models.py:213
msgid "Add"
msgstr ""
-#: templates/js/translated/stock.js:922 templates/stock_table.html:58
+#: templates/js/translated/stock.js:923 templates/stock_table.html:58
msgid "Delete Stock"
msgstr ""
-#: templates/js/translated/stock.js:1011
+#: templates/js/translated/stock.js:1012
msgid "Quantity cannot be adjusted for serialized stock"
msgstr ""
-#: templates/js/translated/stock.js:1011
+#: templates/js/translated/stock.js:1012
msgid "Specify stock quantity"
msgstr ""
-#: templates/js/translated/stock.js:1051
+#: templates/js/translated/stock.js:1052
msgid "You must select at least one available stock item"
msgstr ""
-#: templates/js/translated/stock.js:1209
+#: templates/js/translated/stock.js:1210
msgid "PASS"
msgstr ""
-#: templates/js/translated/stock.js:1211
+#: templates/js/translated/stock.js:1212
msgid "FAIL"
msgstr ""
-#: templates/js/translated/stock.js:1216
+#: templates/js/translated/stock.js:1217
msgid "NO RESULT"
msgstr ""
-#: templates/js/translated/stock.js:1238
+#: templates/js/translated/stock.js:1264
+msgid "Pass test"
+msgstr ""
+
+#: templates/js/translated/stock.js:1267
msgid "Add test result"
msgstr ""
-#: templates/js/translated/stock.js:1264
+#: templates/js/translated/stock.js:1293
msgid "No test results found"
msgstr ""
-#: templates/js/translated/stock.js:1321
+#: templates/js/translated/stock.js:1349
msgid "Test Date"
msgstr ""
-#: templates/js/translated/stock.js:1428
+#: templates/js/translated/stock.js:1501
+msgid "Edit Test Result"
+msgstr ""
+
+#: templates/js/translated/stock.js:1523
+msgid "Delete Test Result"
+msgstr ""
+
+#: templates/js/translated/stock.js:1552
msgid "In production"
msgstr ""
-#: templates/js/translated/stock.js:1432
+#: templates/js/translated/stock.js:1556
msgid "Installed in Stock Item"
msgstr ""
-#: templates/js/translated/stock.js:1440
+#: templates/js/translated/stock.js:1564
msgid "Assigned to Sales Order"
msgstr ""
-#: templates/js/translated/stock.js:1446
+#: templates/js/translated/stock.js:1570
msgid "No stock location set"
msgstr ""
-#: templates/js/translated/stock.js:1604
+#: templates/js/translated/stock.js:1728
msgid "Stock item is in production"
msgstr ""
-#: templates/js/translated/stock.js:1609
+#: templates/js/translated/stock.js:1733
msgid "Stock item assigned to sales order"
msgstr ""
-#: templates/js/translated/stock.js:1612
+#: templates/js/translated/stock.js:1736
msgid "Stock item assigned to customer"
msgstr ""
-#: templates/js/translated/stock.js:1616
+#: templates/js/translated/stock.js:1740
msgid "Stock item has expired"
msgstr ""
-#: templates/js/translated/stock.js:1618
+#: templates/js/translated/stock.js:1742
msgid "Stock item will expire soon"
msgstr ""
-#: templates/js/translated/stock.js:1624
+#: templates/js/translated/stock.js:1748
msgid "Serialized stock item has been allocated"
msgstr ""
-#: templates/js/translated/stock.js:1626
+#: templates/js/translated/stock.js:1750
msgid "Stock item has been fully allocated"
msgstr ""
-#: templates/js/translated/stock.js:1628
+#: templates/js/translated/stock.js:1752
msgid "Stock item has been partially allocated"
msgstr ""
-#: templates/js/translated/stock.js:1633
+#: templates/js/translated/stock.js:1757
msgid "Stock item has been installed in another item"
msgstr ""
-#: templates/js/translated/stock.js:1640
+#: templates/js/translated/stock.js:1764
msgid "Stock item has been rejected"
msgstr ""
-#: templates/js/translated/stock.js:1642
+#: templates/js/translated/stock.js:1766
msgid "Stock item is lost"
msgstr ""
-#: templates/js/translated/stock.js:1644
+#: templates/js/translated/stock.js:1768
msgid "Stock item is destroyed"
msgstr ""
-#: templates/js/translated/stock.js:1648
+#: templates/js/translated/stock.js:1772
#: templates/js/translated/table_filters.js:188
msgid "Depleted"
msgstr ""
-#: templates/js/translated/stock.js:1698
+#: templates/js/translated/stock.js:1822
msgid "Stocktake"
msgstr ""
-#: templates/js/translated/stock.js:1771
+#: templates/js/translated/stock.js:1895
msgid "Supplier part not specified"
msgstr ""
-#: templates/js/translated/stock.js:1809
+#: templates/js/translated/stock.js:1933
msgid "No stock items matching query"
msgstr ""
-#: templates/js/translated/stock.js:1830 templates/js/translated/stock.js:1878
+#: templates/js/translated/stock.js:1954 templates/js/translated/stock.js:2002
msgid "items"
msgstr ""
-#: templates/js/translated/stock.js:1918
+#: templates/js/translated/stock.js:2042
msgid "batches"
msgstr ""
-#: templates/js/translated/stock.js:1945
+#: templates/js/translated/stock.js:2069
msgid "locations"
msgstr ""
-#: templates/js/translated/stock.js:1947
+#: templates/js/translated/stock.js:2071
msgid "Undefined location"
msgstr ""
-#: templates/js/translated/stock.js:2146
+#: templates/js/translated/stock.js:2270
msgid "Set Stock Status"
msgstr ""
-#: templates/js/translated/stock.js:2160
+#: templates/js/translated/stock.js:2284
msgid "Select Status Code"
msgstr ""
-#: templates/js/translated/stock.js:2161
+#: templates/js/translated/stock.js:2285
msgid "Status code must be selected"
msgstr ""
-#: templates/js/translated/stock.js:2340
+#: templates/js/translated/stock.js:2464
msgid "Allocated Quantity"
msgstr ""
-#: templates/js/translated/stock.js:2535
+#: templates/js/translated/stock.js:2659
msgid "Invalid date"
msgstr ""
-#: templates/js/translated/stock.js:2557
+#: templates/js/translated/stock.js:2681
msgid "Details"
msgstr ""
-#: templates/js/translated/stock.js:2582
+#: templates/js/translated/stock.js:2706
msgid "Location no longer exists"
msgstr ""
-#: templates/js/translated/stock.js:2601
+#: templates/js/translated/stock.js:2725
msgid "Purchase order no longer exists"
msgstr ""
-#: templates/js/translated/stock.js:2620
+#: templates/js/translated/stock.js:2744
msgid "Customer no longer exists"
msgstr ""
-#: templates/js/translated/stock.js:2638
+#: templates/js/translated/stock.js:2762
msgid "Stock item no longer exists"
msgstr ""
-#: templates/js/translated/stock.js:2661
+#: templates/js/translated/stock.js:2785
msgid "Added"
msgstr ""
-#: templates/js/translated/stock.js:2669
+#: templates/js/translated/stock.js:2793
msgid "Removed"
msgstr ""
-#: templates/js/translated/stock.js:2710
+#: templates/js/translated/stock.js:2834
msgid "Edit tracking entry"
msgstr ""
-#: templates/js/translated/stock.js:2711
+#: templates/js/translated/stock.js:2835
msgid "Delete tracking entry"
msgstr ""
-#: templates/js/translated/stock.js:2762
+#: templates/js/translated/stock.js:2886
msgid "No installed items"
msgstr ""
-#: templates/js/translated/stock.js:2813
+#: templates/js/translated/stock.js:2937
msgid "Uninstall Stock Item"
msgstr ""
+#: templates/js/translated/stock.js:2973
+msgid "Install another stock item into this item"
+msgstr ""
+
+#: templates/js/translated/stock.js:2974
+msgid "Stock items can only be installed if they meet the following criteria"
+msgstr ""
+
+#: templates/js/translated/stock.js:2976
+msgid "The Stock Item links to a Part which is the BOM for this Stock Item"
+msgstr ""
+
+#: templates/js/translated/stock.js:2977
+msgid "The Stock Item is currently available in stock"
+msgstr ""
+
+#: templates/js/translated/stock.js:2978
+msgid "The Stock Item is serialized and does not belong to another item"
+msgstr ""
+
+#: templates/js/translated/stock.js:2991
+msgid "Select part to install"
+msgstr ""
+
#: templates/js/translated/table_filters.js:56
msgid "Trackable Part"
msgstr ""
@@ -9055,12 +9187,12 @@ msgstr ""
#: templates/js/translated/table_filters.js:121
#: templates/js/translated/table_filters.js:122
-#: templates/js/translated/table_filters.js:407
+#: templates/js/translated/table_filters.js:402
msgid "Include subcategories"
msgstr ""
#: templates/js/translated/table_filters.js:126
-#: templates/js/translated/table_filters.js:442
+#: templates/js/translated/table_filters.js:437
msgid "Subscribed"
msgstr ""
@@ -9102,7 +9234,7 @@ msgid "Batch code"
msgstr ""
#: templates/js/translated/table_filters.js:163
-#: templates/js/translated/table_filters.js:379
+#: templates/js/translated/table_filters.js:374
msgid "Active parts"
msgstr ""
@@ -9187,47 +9319,47 @@ msgstr ""
msgid "Show stock which is close to expiring"
msgstr ""
-#: templates/js/translated/table_filters.js:290
+#: templates/js/translated/table_filters.js:285
msgid "Build status"
msgstr ""
-#: templates/js/translated/table_filters.js:303
-#: templates/js/translated/table_filters.js:344
+#: templates/js/translated/table_filters.js:298
+#: templates/js/translated/table_filters.js:339
msgid "Assigned to me"
msgstr ""
-#: templates/js/translated/table_filters.js:320
-#: templates/js/translated/table_filters.js:331
-#: templates/js/translated/table_filters.js:352
+#: templates/js/translated/table_filters.js:315
+#: templates/js/translated/table_filters.js:326
+#: templates/js/translated/table_filters.js:347
msgid "Order status"
msgstr ""
-#: templates/js/translated/table_filters.js:336
-#: templates/js/translated/table_filters.js:357
+#: templates/js/translated/table_filters.js:331
+#: templates/js/translated/table_filters.js:352
msgid "Outstanding"
msgstr ""
-#: templates/js/translated/table_filters.js:408
+#: templates/js/translated/table_filters.js:403
msgid "Include parts in subcategories"
msgstr ""
-#: templates/js/translated/table_filters.js:412
+#: templates/js/translated/table_filters.js:407
msgid "Has IPN"
msgstr ""
-#: templates/js/translated/table_filters.js:413
+#: templates/js/translated/table_filters.js:408
msgid "Part has internal part number"
msgstr ""
-#: templates/js/translated/table_filters.js:418
+#: templates/js/translated/table_filters.js:413
msgid "Show active parts"
msgstr ""
-#: templates/js/translated/table_filters.js:426
+#: templates/js/translated/table_filters.js:421
msgid "Stock available"
msgstr ""
-#: templates/js/translated/table_filters.js:454
+#: templates/js/translated/table_filters.js:449
msgid "Purchasable"
msgstr ""
@@ -9480,35 +9612,35 @@ msgstr ""
msgid "Important dates"
msgstr ""
-#: users/models.py:195
+#: users/models.py:200
msgid "Permission set"
msgstr ""
-#: users/models.py:203
+#: users/models.py:208
msgid "Group"
msgstr ""
-#: users/models.py:206
+#: users/models.py:211
msgid "View"
msgstr ""
-#: users/models.py:206
+#: users/models.py:211
msgid "Permission to view items"
msgstr ""
-#: users/models.py:208
+#: users/models.py:213
msgid "Permission to add items"
msgstr ""
-#: users/models.py:210
+#: users/models.py:215
msgid "Change"
msgstr ""
-#: users/models.py:210
+#: users/models.py:215
msgid "Permissions to edit items"
msgstr ""
-#: users/models.py:212
+#: users/models.py:217
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 9779928cb1..41855e602e 100644
--- a/InvenTree/locale/sv/LC_MESSAGES/django.po
+++ b/InvenTree/locale/sv/LC_MESSAGES/django.po
@@ -3,8 +3,8 @@ msgid ""
msgstr ""
"Project-Id-Version: inventree\n"
"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2022-01-29 00:17+0000\n"
-"PO-Revision-Date: 2022-01-29 01:11\n"
+"POT-Creation-Date: 2022-02-18 20:36+0000\n"
+"PO-Revision-Date: 2022-02-18 20:38\n"
"Last-Translator: \n"
"Language-Team: Swedish\n"
"Language: sv_SE\n"
@@ -34,9 +34,9 @@ msgstr "Ingen matchande åtgärd hittades"
msgid "Enter date"
msgstr "Ange datum"
-#: InvenTree/forms.py:126 build/forms.py:48 build/forms.py:69 order/forms.py:24
-#: order/forms.py:35 order/forms.py:46 order/forms.py:57
-#: templates/account/email_confirm.html:20 templates/js/translated/forms.js:595
+#: InvenTree/forms.py:126 order/forms.py:24 order/forms.py:35 order/forms.py:46
+#: order/forms.py:57 templates/account/email_confirm.html:20
+#: templates/js/translated/forms.js:596
msgid "Confirm"
msgstr "Bekräfta"
@@ -86,7 +86,7 @@ msgid "Duplicate serial: {n}"
msgstr ""
#: InvenTree/helpers.py:446 order/models.py:282 order/models.py:425
-#: stock/views.py:1231
+#: stock/views.py:1082
msgid "Invalid quantity provided"
msgstr "Ogiltigt antal angivet"
@@ -119,133 +119,133 @@ msgstr "Inga serienummer hittades"
msgid "Number of unique serial number ({s}) must match quantity ({q})"
msgstr ""
-#: InvenTree/models.py:120
+#: InvenTree/models.py:176
msgid "Missing file"
msgstr ""
-#: InvenTree/models.py:121
+#: InvenTree/models.py:177
msgid "Missing external link"
msgstr ""
-#: InvenTree/models.py:132 stock/models.py:1995
+#: InvenTree/models.py:188 stock/models.py:1995
#: templates/js/translated/attachment.js:119
msgid "Attachment"
msgstr "Bilaga"
-#: InvenTree/models.py:133
+#: InvenTree/models.py:189
msgid "Select file to attach"
msgstr "Välj fil att bifoga"
-#: InvenTree/models.py:139 company/models.py:131 company/models.py:348
-#: company/models.py:564 order/models.py:127 part/models.py:830
+#: InvenTree/models.py:195 company/models.py:131 company/models.py:348
+#: company/models.py:564 order/models.py:127 part/models.py:860
#: report/templates/report/inventree_build_order_base.html:165
#: templates/js/translated/company.js:540
#: templates/js/translated/company.js:829 templates/js/translated/part.js:1324
msgid "Link"
msgstr ""
-#: InvenTree/models.py:140 build/models.py:332 part/models.py:831
+#: InvenTree/models.py:196 build/models.py:332 part/models.py:861
#: stock/models.py:529
msgid "Link to external URL"
msgstr ""
-#: InvenTree/models.py:143 templates/js/translated/attachment.js:163
+#: InvenTree/models.py:199 templates/js/translated/attachment.js:163
msgid "Comment"
msgstr "Kommentar"
-#: InvenTree/models.py:143
+#: InvenTree/models.py:199
msgid "File comment"
msgstr "Fil kommentar"
-#: InvenTree/models.py:149 InvenTree/models.py:150 common/models.py:1223
-#: common/models.py:1224 common/models.py:1452 common/models.py:1453
-#: part/models.py:2265 part/models.py:2285
+#: InvenTree/models.py:205 InvenTree/models.py:206 common/models.py:1235
+#: common/models.py:1236 common/models.py:1464 common/models.py:1465
+#: part/models.py:2301 part/models.py:2321
#: report/templates/report/inventree_test_report_base.html:96
-#: templates/js/translated/stock.js:2692
+#: templates/js/translated/stock.js:2816
msgid "User"
msgstr "Användare"
-#: InvenTree/models.py:153
+#: InvenTree/models.py:209
msgid "upload date"
msgstr "uppladdningsdatum"
-#: InvenTree/models.py:176
+#: InvenTree/models.py:232
msgid "Filename must not be empty"
msgstr "Filnamnet får inte vara tomt"
-#: InvenTree/models.py:199
+#: InvenTree/models.py:255
msgid "Invalid attachment directory"
msgstr "Ogiltig katalog för bilaga"
-#: InvenTree/models.py:209
+#: InvenTree/models.py:265
#, python-brace-format
msgid "Filename contains illegal character '{c}'"
msgstr "Filnamnet innehåller ogiltiga tecken '{c}'"
-#: InvenTree/models.py:212
+#: InvenTree/models.py:268
msgid "Filename missing extension"
msgstr "Filnamn saknar ändelse"
-#: InvenTree/models.py:219
+#: InvenTree/models.py:275
msgid "Attachment with this filename already exists"
msgstr "Det finns redan en bilaga med detta filnamn"
-#: InvenTree/models.py:226
+#: InvenTree/models.py:282
msgid "Error renaming file"
msgstr "Fel vid namnbyte av fil"
-#: InvenTree/models.py:261
+#: InvenTree/models.py:317
msgid "Invalid choice"
msgstr "Ogiltigt val"
-#: InvenTree/models.py:277 InvenTree/models.py:278 common/models.py:1438
-#: company/models.py:415 label/models.py:112 part/models.py:774
-#: part/models.py:2449 plugin/models.py:40 report/models.py:181
+#: InvenTree/models.py:333 InvenTree/models.py:334 common/models.py:1450
+#: company/models.py:415 label/models.py:112 part/models.py:804
+#: part/models.py:2485 plugin/models.py:40 report/models.py:181
#: templates/InvenTree/settings/mixins/urls.html:13
#: templates/InvenTree/settings/plugin.html:48
#: templates/InvenTree/settings/plugin.html:125
#: templates/InvenTree/settings/plugin_settings.html:23
-#: templates/InvenTree/settings/settings.html:282
+#: templates/InvenTree/settings/settings.html:319
#: templates/js/translated/company.js:641 templates/js/translated/part.js:567
#: templates/js/translated/part.js:706 templates/js/translated/part.js:1631
-#: templates/js/translated/stock.js:2485
+#: templates/js/translated/stock.js:2609
msgid "Name"
msgstr "Namn"
-#: InvenTree/models.py:284 build/models.py:209
+#: InvenTree/models.py:340 build/models.py:209
#: build/templates/build/detail.html:25 company/models.py:354
#: company/models.py:570 company/templates/company/company_base.html:68
#: company/templates/company/manufacturer_part.html:76
#: company/templates/company/supplier_part.html:73 label/models.py:119
-#: order/models.py:125 part/models.py:797 part/templates/part/category.html:74
+#: order/models.py:125 part/models.py:827 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:93
#: templates/InvenTree/settings/plugin_settings.html:33
-#: templates/js/translated/bom.js:339 templates/js/translated/bom.js:552
-#: templates/js/translated/build.js:1682 templates/js/translated/company.js:345
+#: templates/js/translated/bom.js:552 templates/js/translated/bom.js:765
+#: templates/js/translated/build.js:1920 templates/js/translated/company.js:345
#: templates/js/translated/company.js:551
#: templates/js/translated/company.js:840 templates/js/translated/order.js:836
#: templates/js/translated/order.js:1019 templates/js/translated/order.js:1258
#: templates/js/translated/part.js:626 templates/js/translated/part.js:999
#: templates/js/translated/part.js:1084 templates/js/translated/part.js:1254
#: templates/js/translated/part.js:1650 templates/js/translated/part.js:1719
-#: templates/js/translated/stock.js:1577 templates/js/translated/stock.js:2314
-#: templates/js/translated/stock.js:2497 templates/js/translated/stock.js:2542
+#: templates/js/translated/stock.js:1701 templates/js/translated/stock.js:2438
+#: templates/js/translated/stock.js:2621 templates/js/translated/stock.js:2666
msgid "Description"
msgstr "Beskrivning"
-#: InvenTree/models.py:285
+#: InvenTree/models.py:341
msgid "Description (optional)"
msgstr "Beskrivning (valfritt)"
-#: InvenTree/models.py:293
+#: InvenTree/models.py:349
msgid "parent"
msgstr "överordnad"
-#: InvenTree/serializers.py:65 part/models.py:2734
+#: InvenTree/serializers.py:65 part/models.py:2803
msgid "Must be a valid number"
msgstr "Måste vara ett giltigt nummer"
@@ -253,83 +253,127 @@ msgstr "Måste vara ett giltigt nummer"
msgid "Filename"
msgstr "Filnamn"
-#: InvenTree/settings.py:661
+#: InvenTree/serializers.py:334
+msgid "Invalid value"
+msgstr ""
+
+#: InvenTree/serializers.py:355
+msgid "Data File"
+msgstr ""
+
+#: InvenTree/serializers.py:356
+msgid "Select data file for upload"
+msgstr ""
+
+#: InvenTree/serializers.py:380
+msgid "Unsupported file type"
+msgstr ""
+
+#: InvenTree/serializers.py:386
+msgid "File is too large"
+msgstr ""
+
+#: InvenTree/serializers.py:407
+msgid "No columns found in file"
+msgstr ""
+
+#: InvenTree/serializers.py:410
+msgid "No data rows found in file"
+msgstr ""
+
+#: InvenTree/serializers.py:533
+msgid "No data rows provided"
+msgstr ""
+
+#: InvenTree/serializers.py:536
+msgid "No data columns supplied"
+msgstr ""
+
+#: InvenTree/serializers.py:623
+msgid "Missing required column"
+msgstr ""
+
+#: InvenTree/serializers.py:632
+msgid "Duplicate column"
+msgstr ""
+
+#: InvenTree/settings.py:655
msgid "German"
msgstr "Tyska"
-#: InvenTree/settings.py:662
+#: InvenTree/settings.py:656
msgid "Greek"
msgstr "Grekiska"
-#: InvenTree/settings.py:663
+#: InvenTree/settings.py:657
msgid "English"
msgstr "Engelska"
-#: InvenTree/settings.py:664
+#: InvenTree/settings.py:658
msgid "Spanish"
msgstr "Spanska"
-#: InvenTree/settings.py:665
+#: InvenTree/settings.py:659
msgid "Spanish (Mexican)"
msgstr ""
-#: InvenTree/settings.py:666
+#: InvenTree/settings.py:660
msgid "French"
msgstr "Franska"
-#: InvenTree/settings.py:667
+#: InvenTree/settings.py:661
msgid "Hebrew"
msgstr "Hebreiska"
-#: InvenTree/settings.py:668
+#: InvenTree/settings.py:662
msgid "Italian"
msgstr "Italienska"
-#: InvenTree/settings.py:669
+#: InvenTree/settings.py:663
msgid "Japanese"
msgstr "Japanska"
-#: InvenTree/settings.py:670
+#: InvenTree/settings.py:664
msgid "Korean"
msgstr "Koreanska"
-#: InvenTree/settings.py:671
+#: InvenTree/settings.py:665
msgid "Dutch"
msgstr "Nederländska"
-#: InvenTree/settings.py:672
+#: InvenTree/settings.py:666
msgid "Norwegian"
msgstr "Norska"
-#: InvenTree/settings.py:673
+#: InvenTree/settings.py:667
msgid "Polish"
msgstr "Polska"
-#: InvenTree/settings.py:674
+#: InvenTree/settings.py:668
msgid "Portugese"
msgstr ""
-#: InvenTree/settings.py:675
+#: InvenTree/settings.py:669
msgid "Russian"
msgstr "Ryska"
-#: InvenTree/settings.py:676
+#: InvenTree/settings.py:670
msgid "Swedish"
msgstr "Svenska"
-#: InvenTree/settings.py:677
+#: InvenTree/settings.py:671
msgid "Thai"
msgstr "Thailändska"
-#: InvenTree/settings.py:678
+#: InvenTree/settings.py:672
msgid "Turkish"
msgstr "Turkiska"
-#: InvenTree/settings.py:679
+#: InvenTree/settings.py:673
msgid "Vietnamese"
msgstr "Vietnamesiska"
-#: InvenTree/settings.py:680
+#: InvenTree/settings.py:674
msgid "Chinese"
msgstr "Kinesiska"
@@ -346,7 +390,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:316 templates/js/translated/table_filters.js:313
+#: InvenTree/status_codes.py:316 templates/js/translated/table_filters.js:308
msgid "Pending"
msgstr "Väntar"
@@ -456,7 +500,7 @@ msgstr ""
msgid "Split child item"
msgstr ""
-#: InvenTree/status_codes.py:294 templates/js/translated/stock.js:2072
+#: InvenTree/status_codes.py:294 templates/js/translated/stock.js:2196
msgid "Merged stock items"
msgstr ""
@@ -484,40 +528,40 @@ msgstr ""
msgid "Production"
msgstr ""
-#: InvenTree/validators.py:23
+#: InvenTree/validators.py:25
msgid "Not a valid currency code"
msgstr ""
-#: InvenTree/validators.py:51
+#: InvenTree/validators.py:53
msgid "Invalid character in part name"
msgstr ""
-#: InvenTree/validators.py:64
+#: InvenTree/validators.py:66
#, python-brace-format
msgid "IPN must match regex pattern {pat}"
msgstr ""
-#: InvenTree/validators.py:78 InvenTree/validators.py:92
-#: InvenTree/validators.py:106
+#: InvenTree/validators.py:80 InvenTree/validators.py:94
+#: InvenTree/validators.py:108
#, python-brace-format
msgid "Reference must match pattern {pattern}"
msgstr ""
-#: InvenTree/validators.py:114
+#: InvenTree/validators.py:116
#, python-brace-format
msgid "Illegal character in name ({x})"
msgstr ""
-#: InvenTree/validators.py:133 InvenTree/validators.py:149
+#: InvenTree/validators.py:137 InvenTree/validators.py:153
msgid "Overage value must not be negative"
msgstr ""
-#: InvenTree/validators.py:151
+#: InvenTree/validators.py:155
msgid "Overage must not exceed 100%"
msgstr ""
-#: InvenTree/validators.py:158
-msgid "Overage must be an integer value or a percentage"
+#: InvenTree/validators.py:162
+msgid "Invalid value for overage"
msgstr ""
#: InvenTree/views.py:538
@@ -584,69 +628,11 @@ msgstr ""
msgid "Barcode associated with Stock Item"
msgstr ""
-#: build/forms.py:36 build/models.py:1293
-#: build/templates/build/build_base.html:82
-#: build/templates/build/detail.html:35 common/models.py:1263
-#: company/forms.py:42 company/templates/company/supplier_part.html:251
-#: order/models.py:805 order/models.py:1229 order/serializers.py:816
-#: order/templates/order/order_wizard/match_parts.html:30
-#: order/templates/order/order_wizard/select_parts.html:34 part/forms.py:144
-#: part/forms.py:160 part/forms.py:176 part/models.py:2636
-#: part/templates/part/bom_upload/match_parts.html:31
-#: part/templates/part/detail.html:992 part/templates/part/detail.html:1078
-#: part/templates/part/part_pricing.html:16
-#: report/templates/report/inventree_build_order_base.html:114
-#: report/templates/report/inventree_po_report.html:91
-#: report/templates/report/inventree_so_report.html:91
-#: report/templates/report/inventree_test_report_base.html:81
-#: report/templates/report/inventree_test_report_base.html:139
-#: stock/forms.py:142 stock/serializers.py:293
-#: stock/templates/stock/item_base.html:181
-#: stock/templates/stock/item_base.html:262
-#: stock/templates/stock/item_base.html:270
-#: templates/js/translated/barcode.js:385 templates/js/translated/bom.js:567
-#: templates/js/translated/build.js:295 templates/js/translated/build.js:495
-#: templates/js/translated/build.js:689 templates/js/translated/build.js:699
-#: templates/js/translated/build.js:1075 templates/js/translated/build.js:1422
-#: templates/js/translated/model_renderers.js:99
-#: templates/js/translated/order.js:101 templates/js/translated/order.js:1056
-#: 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:906
-#: templates/js/translated/part.js:1862 templates/js/translated/part.js:1985
-#: templates/js/translated/part.js:2063 templates/js/translated/stock.js:391
-#: templates/js/translated/stock.js:588 templates/js/translated/stock.js:758
-#: templates/js/translated/stock.js:2677 templates/js/translated/stock.js:2779
-msgid "Quantity"
-msgstr ""
-
-#: build/forms.py:37
-msgid "Enter quantity for build output"
-msgstr ""
-
-#: build/forms.py:41 order/serializers.py:820 stock/forms.py:81
-#: stock/serializers.py:314 templates/js/translated/stock.js:238
-#: templates/js/translated/stock.js:392
-msgid "Serial Numbers"
-msgstr ""
-
-#: build/forms.py:43
-msgid "Enter serial numbers for build outputs"
-msgstr ""
-
-#: build/forms.py:49
-msgid "Confirm creation of build output"
-msgstr ""
-
-#: build/forms.py:70
-msgid "Confirm deletion of build output"
-msgstr ""
-
-#: build/forms.py:89
+#: build/forms.py:20
msgid "Confirm cancel"
msgstr ""
-#: build/forms.py:89 build/views.py:65
+#: build/forms.py:20 build/views.py:62
msgid "Confirm build cancellation"
msgstr ""
@@ -657,7 +643,7 @@ msgstr ""
#: build/models.py:139 build/templates/build/build_base.html:9
#: build/templates/build/build_base.html:27
#: report/templates/report/inventree_build_order_base.html:106
-#: templates/js/translated/build.js:457 templates/js/translated/stock.js:2290
+#: templates/js/translated/build.js:676 templates/js/translated/stock.js:2414
msgid "Build Order"
msgstr ""
@@ -665,7 +651,7 @@ msgstr ""
#: 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
+#: part/templates/part/part_sidebar.html:21 templates/InvenTree/index.html:221
#: templates/InvenTree/search.html:139
#: templates/InvenTree/settings/sidebar.html:43 users/models.py:44
msgid "Build Orders"
@@ -676,11 +662,11 @@ msgid "Build Order Reference"
msgstr ""
#: build/models.py:201 order/models.py:213 order/models.py:541
-#: order/models.py:812 part/models.py:2645
-#: part/templates/part/bom_upload/match_parts.html:30
+#: order/models.py:812 part/models.py:2714
+#: part/templates/part/upload_bom.html:54
#: report/templates/report/inventree_po_report.html:92
#: report/templates/report/inventree_so_report.html:92
-#: templates/js/translated/bom.js:559 templates/js/translated/build.js:1179
+#: templates/js/translated/bom.js:772 templates/js/translated/build.js:1401
#: templates/js/translated/order.js:1050 templates/js/translated/order.js:2144
msgid "Reference"
msgstr ""
@@ -689,7 +675,7 @@ msgstr ""
msgid "Brief description of the build"
msgstr ""
-#: build/models.py:221 build/templates/build/build_base.html:164
+#: build/models.py:221 build/templates/build/build_base.html:169
#: build/templates/build/detail.html:88
msgid "Parent Build"
msgstr ""
@@ -702,30 +688,31 @@ msgstr ""
#: build/templates/build/detail.html:30 company/models.py:705
#: order/models.py:876 order/models.py:950
#: order/templates/order/order_wizard/select_parts.html:32 part/models.py:359
-#: part/models.py:2211 part/models.py:2227 part/models.py:2246
-#: part/models.py:2263 part/models.py:2365 part/models.py:2487
-#: part/models.py:2620 part/models.py:2927 part/serializers.py:658
-#: part/templates/part/part_app_base.html:8
+#: part/models.py:2247 part/models.py:2263 part/models.py:2282
+#: part/models.py:2299 part/models.py:2401 part/models.py:2523
+#: part/models.py:2613 part/models.py:2689 part/models.py:2996
+#: part/serializers.py:666 part/templates/part/part_app_base.html:8
#: part/templates/part/part_pricing.html:12
#: part/templates/part/set_category.html:13
+#: part/templates/part/upload_bom.html:52
#: 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: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:338
-#: templates/js/translated/bom.js:517 templates/js/translated/build.js:680
-#: templates/js/translated/build.js:1048 templates/js/translated/build.js:1419
-#: templates/js/translated/build.js:1687 templates/js/translated/company.js:492
+#: templates/js/translated/barcode.js:383 templates/js/translated/bom.js:551
+#: templates/js/translated/bom.js:730 templates/js/translated/build.js:902
+#: templates/js/translated/build.js:1270 templates/js/translated/build.js:1655
+#: templates/js/translated/build.js:1925 templates/js/translated/company.js:492
#: templates/js/translated/company.js:749 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:984
#: templates/js/translated/part.js:1065 templates/js/translated/part.js:1232
-#: templates/js/translated/stock.js:562 templates/js/translated/stock.js:727
-#: templates/js/translated/stock.js:934 templates/js/translated/stock.js:1534
-#: templates/js/translated/stock.js:2767
+#: templates/js/translated/stock.js:563 templates/js/translated/stock.js:728
+#: templates/js/translated/stock.js:935 templates/js/translated/stock.js:1658
+#: templates/js/translated/stock.js:2891 templates/js/translated/stock.js:2990
msgid "Part"
msgstr ""
@@ -741,7 +728,7 @@ msgstr ""
msgid "SalesOrder to which this build is allocated"
msgstr ""
-#: build/models.py:249 templates/js/translated/build.js:1407
+#: build/models.py:249 templates/js/translated/build.js:1643
#: templates/js/translated/order.js:1564
msgid "Source Location"
msgstr ""
@@ -782,15 +769,15 @@ msgstr ""
msgid "Build status code"
msgstr ""
-#: build/models.py:287 stock/models.py:533
+#: build/models.py:287 build/serializers.py:218 stock/models.py:533
msgid "Batch Code"
msgstr ""
-#: build/models.py:291
+#: build/models.py:291 build/serializers.py:219
msgid "Batch code for this build output"
msgstr ""
-#: build/models.py:294 order/models.py:129 part/models.py:969
+#: build/models.py:294 order/models.py:129 part/models.py:999
#: part/templates/part/part_base.html:313 templates/js/translated/order.js:1271
msgid "Creation Date"
msgstr ""
@@ -804,7 +791,7 @@ msgid "Target date for build completion. Build will be overdue after this date."
msgstr ""
#: build/models.py:302 order/models.py:255
-#: templates/js/translated/build.js:1758
+#: templates/js/translated/build.js:1996
msgid "Completion Date"
msgstr ""
@@ -812,7 +799,7 @@ msgstr ""
msgid "completed by"
msgstr ""
-#: build/models.py:316 templates/js/translated/build.js:1729
+#: build/models.py:316 templates/js/translated/build.js:1967
msgid "Issued by"
msgstr ""
@@ -820,12 +807,12 @@ msgstr ""
msgid "User who issued this build order"
msgstr ""
-#: build/models.py:325 build/templates/build/build_base.html:185
+#: build/models.py:325 build/templates/build/build_base.html:190
#: build/templates/build/detail.html:116 order/models.py:143
#: order/templates/order/order_base.html:170
-#: order/templates/order/sales_order_base.html:182 part/models.py:973
+#: order/templates/order/sales_order_base.html:182 part/models.py:1003
#: report/templates/report/inventree_build_order_base.html:159
-#: templates/js/translated/build.js:1741 templates/js/translated/order.js:864
+#: templates/js/translated/build.js:1979 templates/js/translated/order.js:864
msgid "Responsible"
msgstr ""
@@ -837,26 +824,26 @@ msgstr ""
#: company/templates/company/manufacturer_part.html:102
#: company/templates/company/supplier_part.html:126
#: part/templates/part/part_base.html:354 stock/models.py:527
-#: stock/templates/stock/item_base.html:373
+#: stock/templates/stock/item_base.html:375
msgid "External Link"
msgstr ""
-#: build/models.py:336 build/serializers.py:201
+#: build/models.py:336 build/serializers.py:380
#: build/templates/build/sidebar.html:21 company/models.py:142
#: company/models.py:577 company/templates/company/sidebar.html:25
#: order/models.py:147 order/models.py:814 order/models.py:1071
#: order/templates/order/po_sidebar.html:11
-#: order/templates/order/so_sidebar.html:17 part/models.py:958
-#: part/templates/part/detail.html:137 part/templates/part/part_sidebar.html:54
+#: order/templates/order/so_sidebar.html:17 part/models.py:988
+#: part/templates/part/detail.html:140 part/templates/part/part_sidebar.html:57
#: report/templates/report/inventree_build_order_base.html:173
-#: stock/forms.py:140 stock/forms.py:190 stock/forms.py:224 stock/models.py:599
+#: stock/forms.py:137 stock/forms.py:171 stock/models.py:599
#: stock/models.py:1895 stock/models.py:2001 stock/serializers.py:332
-#: stock/serializers.py:640 stock/serializers.py:738 stock/serializers.py:870
+#: stock/serializers.py:697 stock/serializers.py:795 stock/serializers.py:927
#: stock/templates/stock/stock_sidebar.html:25
-#: templates/js/translated/barcode.js:58 templates/js/translated/bom.js:723
+#: templates/js/translated/barcode.js:58 templates/js/translated/bom.js:936
#: templates/js/translated/company.js:845 templates/js/translated/order.js:1149
#: templates/js/translated/order.js:1445 templates/js/translated/order.js:2280
-#: templates/js/translated/stock.js:1317 templates/js/translated/stock.js:1803
+#: templates/js/translated/stock.js:1345 templates/js/translated/stock.js:1927
msgid "Notes"
msgstr ""
@@ -864,208 +851,284 @@ msgstr ""
msgid "Extra build notes"
msgstr ""
-#: build/models.py:717
+#: build/models.py:756
msgid "No build output specified"
msgstr ""
-#: build/models.py:720
+#: build/models.py:759
msgid "Build output is already completed"
msgstr ""
-#: build/models.py:723
+#: build/models.py:762
msgid "Build output does not match Build Order"
msgstr ""
-#: build/models.py:1115
+#: build/models.py:1154
msgid "Build item must specify a build output, as master part is marked as trackable"
msgstr ""
-#: build/models.py:1124
+#: build/models.py:1163
#, python-brace-format
msgid "Allocated quantity ({q}) must not execed available stock quantity ({a})"
msgstr ""
-#: build/models.py:1134
+#: build/models.py:1173
msgid "Stock item is over-allocated"
msgstr ""
-#: build/models.py:1140 order/models.py:1189
+#: build/models.py:1179 order/models.py:1189
msgid "Allocation quantity must be greater than zero"
msgstr ""
-#: build/models.py:1146
+#: build/models.py:1185
msgid "Quantity must be 1 for serialized stock"
msgstr ""
-#: build/models.py:1203
+#: build/models.py:1242
msgid "Selected stock item not found in BOM"
msgstr ""
-#: build/models.py:1263 stock/templates/stock/item_base.html:345
-#: templates/InvenTree/search.html:137 templates/js/translated/build.js:1660
+#: build/models.py:1302 stock/templates/stock/item_base.html:347
+#: templates/InvenTree/search.html:137 templates/js/translated/build.js:1898
#: templates/navbar.html:35
msgid "Build"
msgstr ""
-#: build/models.py:1264
+#: build/models.py:1303
msgid "Build to allocate parts"
msgstr ""
-#: build/models.py:1280 build/serializers.py:388 order/serializers.py:696
-#: order/serializers.py:714 stock/serializers.py:578 stock/serializers.py:696
-#: stock/templates/stock/item_base.html:9
+#: build/models.py:1319 build/serializers.py:570 order/serializers.py:696
+#: order/serializers.py:714 stock/serializers.py:404 stock/serializers.py:635
+#: stock/serializers.py:753 stock/templates/stock/item_base.html:9
#: stock/templates/stock/item_base.html:23
-#: stock/templates/stock/item_base.html:367
-#: templates/js/translated/build.js:468 templates/js/translated/build.js:473
-#: templates/js/translated/build.js:1421 templates/js/translated/build.js:1803
+#: stock/templates/stock/item_base.html:369
+#: templates/js/translated/build.js:687 templates/js/translated/build.js:692
+#: templates/js/translated/build.js:1657 templates/js/translated/build.js:2041
#: 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:563 templates/js/translated/stock.js:728
-#: templates/js/translated/stock.js:2628
+#: templates/js/translated/stock.js:564 templates/js/translated/stock.js:729
+#: templates/js/translated/stock.js:2752
msgid "Stock Item"
msgstr ""
-#: build/models.py:1281
+#: build/models.py:1320
msgid "Source stock item"
msgstr ""
-#: build/models.py:1294
+#: build/models.py:1332 build/serializers.py:188
+#: build/templates/build/build_base.html:82
+#: build/templates/build/detail.html:35 common/models.py:1275
+#: company/forms.py:42 company/templates/company/supplier_part.html:251
+#: order/models.py:805 order/models.py:1229 order/serializers.py:816
+#: order/templates/order/order_wizard/match_parts.html:30
+#: order/templates/order/order_wizard/select_parts.html:34 part/forms.py:144
+#: part/forms.py:160 part/forms.py:176 part/models.py:2705
+#: part/templates/part/detail.html:995 part/templates/part/detail.html:1081
+#: part/templates/part/part_pricing.html:16
+#: part/templates/part/upload_bom.html:53
+#: report/templates/report/inventree_build_order_base.html:114
+#: report/templates/report/inventree_po_report.html:91
+#: report/templates/report/inventree_so_report.html:91
+#: report/templates/report/inventree_test_report_base.html:81
+#: report/templates/report/inventree_test_report_base.html:139
+#: stock/forms.py:139 stock/serializers.py:293
+#: stock/templates/stock/item_base.html:183
+#: stock/templates/stock/item_base.html:264
+#: stock/templates/stock/item_base.html:272
+#: templates/js/translated/barcode.js:385 templates/js/translated/bom.js:780
+#: templates/js/translated/build.js:375 templates/js/translated/build.js:523
+#: templates/js/translated/build.js:714 templates/js/translated/build.js:911
+#: templates/js/translated/build.js:921 templates/js/translated/build.js:1297
+#: templates/js/translated/build.js:1658
+#: templates/js/translated/model_renderers.js:99
+#: templates/js/translated/order.js:101 templates/js/translated/order.js:1056
+#: 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:906
+#: templates/js/translated/part.js:1862 templates/js/translated/part.js:1985
+#: templates/js/translated/part.js:2063 templates/js/translated/stock.js:392
+#: templates/js/translated/stock.js:589 templates/js/translated/stock.js:759
+#: templates/js/translated/stock.js:2801 templates/js/translated/stock.js:2903
+msgid "Quantity"
+msgstr ""
+
+#: build/models.py:1333
msgid "Stock quantity to allocate to build"
msgstr ""
-#: build/models.py:1302
+#: build/models.py:1341
msgid "Install into"
msgstr ""
-#: build/models.py:1303
+#: build/models.py:1342
msgid "Destination stock item"
msgstr ""
-#: build/serializers.py:137 build/serializers.py:417
+#: build/serializers.py:138 build/serializers.py:599
msgid "Build Output"
msgstr ""
-#: build/serializers.py:146
+#: build/serializers.py:150
msgid "Build output does not match the parent build"
msgstr ""
-#: build/serializers.py:150
+#: build/serializers.py:154
msgid "Output part does not match BuildOrder part"
msgstr ""
-#: build/serializers.py:154
+#: build/serializers.py:158
msgid "This build output has already been completed"
msgstr ""
-#: build/serializers.py:158
+#: build/serializers.py:164
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:731
-#: stock/serializers.py:972 stock/templates/stock/item_base.html:313
-#: templates/js/translated/barcode.js:384
-#: templates/js/translated/barcode.js:557 templates/js/translated/build.js:480
-#: templates/js/translated/build.js:1087 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:179 templates/js/translated/stock.js:564
-#: templates/js/translated/stock.js:729 templates/js/translated/stock.js:936
-#: templates/js/translated/stock.js:1684 templates/js/translated/stock.js:2569
-msgid "Location"
+#: build/serializers.py:189
+msgid "Enter quantity for build output"
msgstr ""
-#: build/serializers.py:191
-msgid "Location for completed build outputs"
-msgstr ""
-
-#: build/serializers.py:197 build/templates/build/build_base.html:137
-#: build/templates/build/detail.html:63 order/models.py:557
-#: order/serializers.py:247 stock/templates/stock/item_base.html:187
-#: templates/js/translated/barcode.js:140 templates/js/translated/build.js:1716
-#: templates/js/translated/order.js:591 templates/js/translated/order.js:840
-#: templates/js/translated/order.js:1263 templates/js/translated/stock.js:1659
-#: templates/js/translated/stock.js:2646 templates/js/translated/stock.js:2795
-msgid "Status"
-msgstr ""
-
-#: build/serializers.py:213
-msgid "A list of build outputs must be provided"
-msgstr ""
-
-#: build/serializers.py:249
-msgid "Accept Unallocated"
-msgstr ""
-
-#: build/serializers.py:250
-msgid "Accept that stock items have not been fully allocated to this build order"
-msgstr ""
-
-#: build/serializers.py:260 templates/js/translated/build.js:149
-msgid "Required stock has not been fully allocated"
-msgstr ""
-
-#: build/serializers.py:265
-msgid "Accept Incomplete"
-msgstr ""
-
-#: build/serializers.py:266
-msgid "Accept that the required number of build outputs have not been completed"
-msgstr ""
-
-#: build/serializers.py:276 templates/js/translated/build.js:153
-msgid "Required build quantity has not been completed"
-msgstr ""
-
-#: build/serializers.py:285
-msgid "Build order has incomplete outputs"
-msgstr ""
-
-#: build/serializers.py:313 build/serializers.py:362 part/models.py:2760
-#: part/models.py:2919
-msgid "BOM Item"
-msgstr ""
-
-#: build/serializers.py:323
-msgid "Build output"
-msgstr ""
-
-#: build/serializers.py:332
-msgid "Build output must point to the same build"
-msgstr ""
-
-#: build/serializers.py:379
-msgid "bom_item.part must point to the same part as the build order"
-msgstr ""
-
-#: build/serializers.py:394 stock/serializers.py:585
-msgid "Item must be in stock"
-msgstr ""
-
-#: build/serializers.py:408 order/models.py:280 order/serializers.py:240
+#: build/serializers.py:201 build/serializers.py:590 order/models.py:280
+#: order/serializers.py:240 part/serializers.py:471 part/serializers.py:827
#: stock/models.py:367 stock/models.py:1105 stock/serializers.py:305
msgid "Quantity must be greater than zero"
msgstr ""
-#: build/serializers.py:450 order/serializers.py:747
+#: build/serializers.py:208
+msgid "Integer quantity required for trackable parts"
+msgstr ""
+
+#: build/serializers.py:211
+msgid "Integer quantity required, as the bill of materials contains trackable parts"
+msgstr ""
+
+#: build/serializers.py:225 order/serializers.py:820 stock/forms.py:78
+#: stock/serializers.py:314 templates/js/translated/stock.js:239
+#: templates/js/translated/stock.js:393
+msgid "Serial Numbers"
+msgstr ""
+
+#: build/serializers.py:226
+msgid "Enter serial numbers for build outputs"
+msgstr ""
+
+#: build/serializers.py:239
+msgid "Auto Allocate Serial Numbers"
+msgstr ""
+
+#: build/serializers.py:240
+msgid "Automatically allocate required items with matching serial numbers"
+msgstr ""
+
+#: build/serializers.py:274 stock/api.py:551
+msgid "The following serial numbers already exist"
+msgstr ""
+
+#: build/serializers.py:327 build/serializers.py:392
+msgid "A list of build outputs must be provided"
+msgstr ""
+
+#: build/serializers.py:369 order/serializers.py:226 order/serializers.py:294
+#: stock/forms.py:169 stock/serializers.py:325 stock/serializers.py:788
+#: stock/serializers.py:1029 stock/templates/stock/item_base.html:315
+#: templates/js/translated/barcode.js:384
+#: templates/js/translated/barcode.js:557 templates/js/translated/build.js:699
+#: templates/js/translated/build.js:1309 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:179 templates/js/translated/stock.js:565
+#: templates/js/translated/stock.js:730 templates/js/translated/stock.js:937
+#: templates/js/translated/stock.js:1808 templates/js/translated/stock.js:2693
+msgid "Location"
+msgstr ""
+
+#: build/serializers.py:370
+msgid "Location for completed build outputs"
+msgstr ""
+
+#: build/serializers.py:376 build/templates/build/build_base.html:142
+#: build/templates/build/detail.html:63 order/models.py:557
+#: order/serializers.py:247 stock/templates/stock/item_base.html:189
+#: templates/js/translated/barcode.js:140 templates/js/translated/build.js:1954
+#: templates/js/translated/order.js:591 templates/js/translated/order.js:840
+#: templates/js/translated/order.js:1263 templates/js/translated/stock.js:1783
+#: templates/js/translated/stock.js:2770 templates/js/translated/stock.js:2919
+msgid "Status"
+msgstr ""
+
+#: build/serializers.py:428
+msgid "Accept Unallocated"
+msgstr ""
+
+#: build/serializers.py:429
+msgid "Accept that stock items have not been fully allocated to this build order"
+msgstr ""
+
+#: build/serializers.py:439 templates/js/translated/build.js:150
+msgid "Required stock has not been fully allocated"
+msgstr ""
+
+#: build/serializers.py:444
+msgid "Accept Incomplete"
+msgstr ""
+
+#: build/serializers.py:445
+msgid "Accept that the required number of build outputs have not been completed"
+msgstr ""
+
+#: build/serializers.py:455 templates/js/translated/build.js:154
+msgid "Required build quantity has not been completed"
+msgstr ""
+
+#: build/serializers.py:464
+msgid "Build order has incomplete outputs"
+msgstr ""
+
+#: build/serializers.py:467 build/templates/build/build_base.html:95
+msgid "No build outputs have been created for this build order"
+msgstr ""
+
+#: build/serializers.py:495 build/serializers.py:544 part/models.py:2829
+#: part/models.py:2988
+msgid "BOM Item"
+msgstr ""
+
+#: build/serializers.py:505
+msgid "Build output"
+msgstr ""
+
+#: build/serializers.py:514
+msgid "Build output must point to the same build"
+msgstr ""
+
+#: build/serializers.py:561
+msgid "bom_item.part must point to the same part as the build order"
+msgstr ""
+
+#: build/serializers.py:576 stock/serializers.py:642
+msgid "Item must be in stock"
+msgstr ""
+
+#: build/serializers.py:632 order/serializers.py:747
#, python-brace-format
msgid "Available quantity ({q}) exceeded"
msgstr ""
-#: build/serializers.py:456
+#: build/serializers.py:638
msgid "Build output must be specified for allocation of tracked parts"
msgstr ""
-#: build/serializers.py:463
+#: build/serializers.py:645
msgid "Build output cannot be specified for allocation of untracked parts"
msgstr ""
-#: build/serializers.py:491 order/serializers.py:990
+#: build/serializers.py:673 order/serializers.py:990
msgid "Allocation items must be provided"
msgstr ""
-#: build/tasks.py:92
+#: build/tasks.py:98
msgid "Stock required for build order"
msgstr ""
@@ -1088,7 +1151,7 @@ msgid "Edit Build"
msgstr ""
#: build/templates/build/build_base.html:56
-#: build/templates/build/build_base.html:215 build/views.py:56
+#: build/templates/build/build_base.html:220 build/views.py:53
msgid "Cancel Build"
msgstr ""
@@ -1105,110 +1168,90 @@ msgstr ""
msgid "Build Description"
msgstr ""
-#: build/templates/build/build_base.html:96
+#: build/templates/build/build_base.html:101
#, python-format
msgid "This Build Order is allocated to Sales Order %(link)s"
msgstr ""
-#: build/templates/build/build_base.html:103
+#: build/templates/build/build_base.html:108
#, python-format
msgid "This Build Order is a child of Build Order %(link)s"
msgstr ""
-#: build/templates/build/build_base.html:110
+#: build/templates/build/build_base.html:115
msgid "Build Order is ready to mark as completed"
msgstr ""
-#: build/templates/build/build_base.html:115
+#: build/templates/build/build_base.html:120
msgid "Build Order cannot be completed as outstanding outputs remain"
msgstr ""
-#: build/templates/build/build_base.html:120
+#: build/templates/build/build_base.html:125
msgid "Required build quantity has not yet been completed"
msgstr ""
-#: build/templates/build/build_base.html:125
+#: build/templates/build/build_base.html:130
msgid "Stock has not been fully allocated to this Build Order"
msgstr ""
-#: build/templates/build/build_base.html:146
+#: build/templates/build/build_base.html:151
#: build/templates/build/detail.html:132
#: order/templates/order/order_base.html:156
#: order/templates/order/sales_order_base.html:163
#: report/templates/report/inventree_build_order_base.html:126
-#: templates/js/translated/build.js:1753 templates/js/translated/order.js:854
+#: templates/js/translated/build.js:1991 templates/js/translated/order.js:854
#: templates/js/translated/order.js:1276
msgid "Target Date"
msgstr ""
-#: build/templates/build/build_base.html:151
+#: build/templates/build/build_base.html:156
#, python-format
msgid "This build was due on %(target)s"
msgstr ""
-#: build/templates/build/build_base.html:151
-#: build/templates/build/build_base.html:196
+#: build/templates/build/build_base.html:156
+#: build/templates/build/build_base.html:201
#: order/templates/order/order_base.html:98
#: order/templates/order/sales_order_base.html:93
-#: templates/js/translated/table_filters.js:299
-#: templates/js/translated/table_filters.js:340
-#: templates/js/translated/table_filters.js:361
+#: templates/js/translated/table_filters.js:294
+#: templates/js/translated/table_filters.js:335
+#: templates/js/translated/table_filters.js:356
msgid "Overdue"
msgstr ""
-#: build/templates/build/build_base.html:158
+#: build/templates/build/build_base.html:163
#: build/templates/build/detail.html:68 build/templates/build/detail.html:143
#: order/templates/order/sales_order_base.html:170
-#: templates/js/translated/build.js:1702
-#: templates/js/translated/table_filters.js:370
+#: templates/js/translated/build.js:1940
+#: templates/js/translated/table_filters.js:365
msgid "Completed"
msgstr ""
-#: build/templates/build/build_base.html:171
+#: build/templates/build/build_base.html:176
#: build/templates/build/detail.html:95 order/models.py:947
#: order/models.py:1043 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:307
-#: templates/js/translated/order.js:1218 templates/js/translated/stock.js:2304
+#: stock/templates/stock/item_base.html:309
+#: templates/js/translated/order.js:1218 templates/js/translated/stock.js:2428
msgid "Sales Order"
msgstr ""
-#: build/templates/build/build_base.html:178
+#: build/templates/build/build_base.html:183
#: build/templates/build/detail.html:109
#: report/templates/report/inventree_build_order_base.html:153
msgid "Issued By"
msgstr ""
-#: build/templates/build/build_base.html:223
+#: build/templates/build/build_base.html:228
msgid "Incomplete Outputs"
msgstr ""
-#: build/templates/build/build_base.html:224
+#: build/templates/build/build_base.html:229
msgid "Build Order cannot be completed as incomplete build outputs remain"
msgstr ""
-#: build/templates/build/build_output_create.html:7
-msgid "The Bill of Materials contains trackable parts"
-msgstr ""
-
-#: build/templates/build/build_output_create.html:8
-msgid "Build outputs must be generated individually."
-msgstr ""
-
-#: build/templates/build/build_output_create.html:9
-msgid "Multiple build outputs will be created based on the quantity specified."
-msgstr ""
-
-#: build/templates/build/build_output_create.html:15
-msgid "Trackable parts can have serial numbers specified"
-msgstr ""
-
-#: build/templates/build/build_output_create.html:16
-msgid "Enter serial numbers to generate multiple single build outputs"
-msgstr ""
-
#: build/templates/build/cancel.html:5
msgid "Are you sure you wish to cancel this build?"
msgstr ""
@@ -1225,7 +1268,7 @@ msgstr ""
msgid "Stock can be taken from any available location."
msgstr ""
-#: build/templates/build/detail.html:50 order/models.py:898 stock/forms.py:136
+#: build/templates/build/detail.html:50 order/models.py:898 stock/forms.py:133
#: templates/js/translated/order.js:592 templates/js/translated/order.js:1138
msgid "Destination"
msgstr ""
@@ -1234,13 +1277,13 @@ msgstr ""
msgid "Destination location not specified"
msgstr ""
-#: build/templates/build/detail.html:74 templates/js/translated/build.js:707
+#: build/templates/build/detail.html:74 templates/js/translated/build.js:929
msgid "Allocated Parts"
msgstr ""
#: build/templates/build/detail.html:81
-#: stock/templates/stock/item_base.html:331
-#: templates/js/translated/stock.js:1673 templates/js/translated/stock.js:2802
+#: stock/templates/stock/item_base.html:333
+#: templates/js/translated/stock.js:1797 templates/js/translated/stock.js:2926
#: templates/js/translated/table_filters.js:151
#: templates/js/translated/table_filters.js:238
msgid "Batch"
@@ -1249,7 +1292,7 @@ msgstr ""
#: build/templates/build/detail.html:127
#: order/templates/order/order_base.html:143
#: order/templates/order/sales_order_base.html:157
-#: templates/js/translated/build.js:1724
+#: templates/js/translated/build.js:1962
msgid "Created"
msgstr ""
@@ -1269,7 +1312,7 @@ msgstr ""
msgid "Allocate Stock to Build"
msgstr ""
-#: build/templates/build/detail.html:177 templates/js/translated/build.js:1262
+#: build/templates/build/detail.html:177 templates/js/translated/build.js:1484
msgid "Unallocate stock"
msgstr ""
@@ -1329,52 +1372,60 @@ msgid "Output Actions"
msgstr ""
#: build/templates/build/detail.html:250
-msgid "Complete selected items"
+msgid "Complete selected build outputs"
msgstr ""
#: build/templates/build/detail.html:251
msgid "Complete outputs"
msgstr ""
-#: build/templates/build/detail.html:266
+#: build/templates/build/detail.html:253
+msgid "Delete selected build outputs"
+msgstr ""
+
+#: build/templates/build/detail.html:254
+msgid "Delete outputs"
+msgstr ""
+
+#: build/templates/build/detail.html:270
msgid "Completed Build Outputs"
msgstr ""
-#: build/templates/build/detail.html:278 build/templates/build/sidebar.html:19
+#: build/templates/build/detail.html:282 build/templates/build/sidebar.html:19
#: order/templates/order/po_sidebar.html:9
#: order/templates/order/purchase_order_detail.html:60
#: order/templates/order/sales_order_detail.html:107
-#: order/templates/order/so_sidebar.html:15 part/templates/part/detail.html:213
-#: part/templates/part/part_sidebar.html:52 stock/templates/stock/item.html:112
+#: order/templates/order/so_sidebar.html:15 part/templates/part/detail.html:216
+#: part/templates/part/part_sidebar.html:55 stock/templates/stock/item.html:112
#: stock/templates/stock/stock_sidebar.html:23
msgid "Attachments"
msgstr ""
-#: build/templates/build/detail.html:294
+#: build/templates/build/detail.html:298
msgid "Build Notes"
msgstr ""
-#: build/templates/build/detail.html:298 build/templates/build/detail.html:453
+#: build/templates/build/detail.html:302 build/templates/build/detail.html:478
#: company/templates/company/detail.html:188
#: company/templates/company/detail.html:215
#: order/templates/order/purchase_order_detail.html:80
#: order/templates/order/purchase_order_detail.html:108
#: order/templates/order/sales_order_detail.html:127
#: order/templates/order/sales_order_detail.html:186
-#: part/templates/part/detail.html:141 stock/templates/stock/item.html:132
-#: stock/templates/stock/item.html:235
+#: part/templates/part/detail.html:144 stock/templates/stock/item.html:132
+#: stock/templates/stock/item.html:230
msgid "Edit Notes"
msgstr ""
-#: build/templates/build/detail.html:477
+#: build/templates/build/detail.html:502
msgid "Allocation Complete"
msgstr ""
-#: build/templates/build/detail.html:478
+#: build/templates/build/detail.html:503
msgid "All untracked stock items have been allocated"
msgstr ""
-#: build/templates/build/index.html:18 part/templates/part/detail.html:320
+#: build/templates/build/index.html:18 part/templates/part/detail.html:323
msgid "New Build Order"
msgstr ""
@@ -1406,51 +1457,11 @@ msgstr ""
msgid "Completed Items"
msgstr ""
-#: build/views.py:76
+#: build/views.py:73
msgid "Build was cancelled"
msgstr ""
-#: build/views.py:88
-msgid "Create Build Output"
-msgstr ""
-
-#: build/views.py:106
-msgid "Maximum output quantity is "
-msgstr ""
-
-#: build/views.py:122 stock/serializers.py:363 stock/views.py:1257
-msgid "Serial numbers already exist"
-msgstr ""
-
-#: build/views.py:131
-msgid "Serial numbers required for trackable build output"
-msgstr ""
-
-#: build/views.py:197
-msgid "Delete Build Output"
-msgstr ""
-
-#: build/views.py:218
-msgid "Confirm unallocation of build stock"
-msgstr ""
-
-#: build/views.py:219 stock/views.py:352
-msgid "Check the confirmation box"
-msgstr ""
-
-#: build/views.py:231
-msgid "Build output does not match build"
-msgstr ""
-
-#: build/views.py:233
-msgid "Build output must be specified"
-msgstr ""
-
-#: build/views.py:245
-msgid "Build output deleted"
-msgstr ""
-
-#: build/views.py:286
+#: build/views.py:114
msgid "Delete Build Order"
msgstr ""
@@ -1639,9 +1650,9 @@ msgstr ""
msgid "Copy category parameter templates when creating a part"
msgstr ""
-#: common/models.py:705 part/models.py:2489 report/models.py:187
+#: common/models.py:705 part/models.py:2525 report/models.py:187
#: templates/js/translated/table_filters.js:38
-#: templates/js/translated/table_filters.js:422
+#: templates/js/translated/table_filters.js:417
msgid "Template"
msgstr ""
@@ -1649,9 +1660,9 @@ msgstr ""
msgid "Parts are templates by default"
msgstr ""
-#: common/models.py:712 part/models.py:921 templates/js/translated/bom.js:1082
+#: common/models.py:712 part/models.py:951 templates/js/translated/bom.js:1300
#: templates/js/translated/table_filters.js:168
-#: templates/js/translated/table_filters.js:434
+#: templates/js/translated/table_filters.js:429
msgid "Assembly"
msgstr ""
@@ -1659,8 +1670,8 @@ msgstr ""
msgid "Parts can be assembled from other components by default"
msgstr ""
-#: common/models.py:719 part/models.py:927
-#: templates/js/translated/table_filters.js:438
+#: common/models.py:719 part/models.py:957
+#: templates/js/translated/table_filters.js:433
msgid "Component"
msgstr ""
@@ -1668,7 +1679,7 @@ msgstr ""
msgid "Parts can be used as sub-components by default"
msgstr ""
-#: common/models.py:726 part/models.py:938
+#: common/models.py:726 part/models.py:968
msgid "Purchaseable"
msgstr ""
@@ -1676,8 +1687,8 @@ msgstr ""
msgid "Parts are purchaseable by default"
msgstr ""
-#: common/models.py:733 part/models.py:943
-#: templates/js/translated/table_filters.js:446
+#: common/models.py:733 part/models.py:973
+#: templates/js/translated/table_filters.js:441
msgid "Salable"
msgstr ""
@@ -1685,10 +1696,10 @@ msgstr ""
msgid "Parts are salable by default"
msgstr ""
-#: common/models.py:740 part/models.py:933
+#: common/models.py:740 part/models.py:963
#: templates/js/translated/table_filters.js:46
#: templates/js/translated/table_filters.js:100
-#: templates/js/translated/table_filters.js:450
+#: templates/js/translated/table_filters.js:445
msgid "Trackable"
msgstr ""
@@ -1696,7 +1707,7 @@ msgstr ""
msgid "Parts are trackable by default"
msgstr ""
-#: common/models.py:747 part/models.py:953
+#: common/models.py:747 part/models.py:983
#: part/templates/part/part_base.html:147
#: templates/js/translated/table_filters.js:42
msgid "Virtual"
@@ -1730,589 +1741,595 @@ msgstr ""
msgid "Include pricing information in BOM tables"
msgstr ""
-#: common/models.py:780
+#: common/models.py:785
+msgid "Show Price History"
+msgstr ""
+
+#: common/models.py:786
+msgid "Display historical pricing for Part"
+msgstr ""
+
+#: common/models.py:792
msgid "Show related parts"
msgstr ""
-#: common/models.py:781
+#: common/models.py:793
msgid "Display related parts for a part"
msgstr ""
-#: common/models.py:787
+#: common/models.py:799
msgid "Create initial stock"
msgstr ""
-#: common/models.py:788
+#: common/models.py:800
msgid "Create initial stock on part creation"
msgstr ""
-#: common/models.py:794
+#: common/models.py:806
msgid "Internal Prices"
msgstr ""
-#: common/models.py:795
+#: common/models.py:807
msgid "Enable internal prices for parts"
msgstr ""
-#: common/models.py:801
+#: common/models.py:813
msgid "Internal Price as BOM-Price"
msgstr ""
-#: common/models.py:802
+#: common/models.py:814
msgid "Use the internal price (if set) in BOM-price calculations"
msgstr ""
-#: common/models.py:808
+#: common/models.py:820
msgid "Part Name Display Format"
msgstr ""
-#: common/models.py:809
+#: common/models.py:821
msgid "Format to display the part name"
msgstr ""
-#: common/models.py:816
+#: common/models.py:828
msgid "Enable Reports"
msgstr ""
-#: common/models.py:817
+#: common/models.py:829
msgid "Enable generation of reports"
msgstr ""
-#: common/models.py:823 templates/stats.html:25
+#: common/models.py:835 templates/stats.html:25
msgid "Debug Mode"
msgstr ""
-#: common/models.py:824
+#: common/models.py:836
msgid "Generate reports in debug mode (HTML output)"
msgstr ""
-#: common/models.py:830
+#: common/models.py:842
msgid "Page Size"
msgstr ""
-#: common/models.py:831
+#: common/models.py:843
msgid "Default page size for PDF reports"
msgstr ""
-#: common/models.py:841
+#: common/models.py:853
msgid "Test Reports"
msgstr ""
-#: common/models.py:842
+#: common/models.py:854
msgid "Enable generation of test reports"
msgstr ""
-#: common/models.py:848
+#: common/models.py:860
msgid "Stock Expiry"
msgstr ""
-#: common/models.py:849
+#: common/models.py:861
msgid "Enable stock expiry functionality"
msgstr ""
-#: common/models.py:855
+#: common/models.py:867
msgid "Sell Expired Stock"
msgstr ""
-#: common/models.py:856
+#: common/models.py:868
msgid "Allow sale of expired stock"
msgstr ""
-#: common/models.py:862
+#: common/models.py:874
msgid "Stock Stale Time"
msgstr ""
-#: common/models.py:863
+#: common/models.py:875
msgid "Number of days stock items are considered stale before expiring"
msgstr ""
-#: common/models.py:865
+#: common/models.py:877
msgid "days"
msgstr ""
-#: common/models.py:870
+#: common/models.py:882
msgid "Build Expired Stock"
msgstr ""
-#: common/models.py:871
+#: common/models.py:883
msgid "Allow building with expired stock"
msgstr ""
-#: common/models.py:877
+#: common/models.py:889
msgid "Stock Ownership Control"
msgstr ""
-#: common/models.py:878
+#: common/models.py:890
msgid "Enable ownership control over stock locations and items"
msgstr ""
-#: common/models.py:884
+#: common/models.py:896
msgid "Build Order Reference Prefix"
msgstr ""
-#: common/models.py:885
+#: common/models.py:897
msgid "Prefix value for build order reference"
msgstr ""
-#: common/models.py:890
+#: common/models.py:902
msgid "Build Order Reference Regex"
msgstr ""
-#: common/models.py:891
+#: common/models.py:903
msgid "Regular expression pattern for matching build order reference"
msgstr ""
-#: common/models.py:895
+#: common/models.py:907
msgid "Sales Order Reference Prefix"
msgstr ""
-#: common/models.py:896
+#: common/models.py:908
msgid "Prefix value for sales order reference"
msgstr ""
-#: common/models.py:901
+#: common/models.py:913
msgid "Purchase Order Reference Prefix"
msgstr ""
-#: common/models.py:902
+#: common/models.py:914
msgid "Prefix value for purchase order reference"
msgstr ""
-#: common/models.py:908
+#: common/models.py:920
msgid "Enable password forgot"
msgstr ""
-#: common/models.py:909
+#: common/models.py:921
msgid "Enable password forgot function on the login pages"
msgstr ""
-#: common/models.py:914
+#: common/models.py:926
msgid "Enable registration"
msgstr ""
-#: common/models.py:915
+#: common/models.py:927
msgid "Enable self-registration for users on the login pages"
msgstr ""
-#: common/models.py:920
+#: common/models.py:932
msgid "Enable SSO"
msgstr ""
-#: common/models.py:921
+#: common/models.py:933
msgid "Enable SSO on the login pages"
msgstr ""
-#: common/models.py:926
+#: common/models.py:938
msgid "Email required"
msgstr ""
-#: common/models.py:927
+#: common/models.py:939
msgid "Require user to supply mail on signup"
msgstr ""
-#: common/models.py:932
+#: common/models.py:944
msgid "Auto-fill SSO users"
msgstr ""
-#: common/models.py:933
+#: common/models.py:945
msgid "Automatically fill out user-details from SSO account-data"
msgstr ""
-#: common/models.py:938
+#: common/models.py:950
msgid "Mail twice"
msgstr ""
-#: common/models.py:939
+#: common/models.py:951
msgid "On signup ask users twice for their mail"
msgstr ""
-#: common/models.py:944
+#: common/models.py:956
msgid "Password twice"
msgstr ""
-#: common/models.py:945
+#: common/models.py:957
msgid "On signup ask users twice for their password"
msgstr ""
-#: common/models.py:950
+#: common/models.py:962
msgid "Group on signup"
msgstr ""
-#: common/models.py:951
+#: common/models.py:963
msgid "Group to which new users are assigned on registration"
msgstr ""
-#: common/models.py:956
+#: common/models.py:968
msgid "Enforce MFA"
msgstr ""
-#: common/models.py:957
+#: common/models.py:969
msgid "Users must use multifactor security."
msgstr ""
-#: common/models.py:964
+#: common/models.py:976
msgid "Enable URL integration"
msgstr ""
-#: common/models.py:965
+#: common/models.py:977
msgid "Enable plugins to add URL routes"
msgstr ""
-#: common/models.py:971
+#: common/models.py:983
msgid "Enable navigation integration"
msgstr ""
-#: common/models.py:972
+#: common/models.py:984
msgid "Enable plugins to integrate into navigation"
msgstr ""
-#: common/models.py:978
+#: common/models.py:990
msgid "Enable app integration"
msgstr ""
-#: common/models.py:979
+#: common/models.py:991
msgid "Enable plugins to add apps"
msgstr ""
-#: common/models.py:985
+#: common/models.py:997
msgid "Enable schedule integration"
msgstr ""
-#: common/models.py:986
+#: common/models.py:998
msgid "Enable plugins to run scheduled tasks"
msgstr ""
-#: common/models.py:992
+#: common/models.py:1004
msgid "Enable event integration"
msgstr ""
-#: common/models.py:993
+#: common/models.py:1005
msgid "Enable plugins to respond to internal events"
msgstr ""
-#: common/models.py:1008 common/models.py:1216
+#: common/models.py:1020 common/models.py:1228
msgid "Settings key (must be unique - case insensitive"
msgstr ""
-#: common/models.py:1039
+#: common/models.py:1051
msgid "Show subscribed parts"
msgstr ""
-#: common/models.py:1040
+#: common/models.py:1052
msgid "Show subscribed parts on the homepage"
msgstr ""
-#: common/models.py:1045
+#: common/models.py:1057
msgid "Show subscribed categories"
msgstr ""
-#: common/models.py:1046
+#: common/models.py:1058
msgid "Show subscribed part categories on the homepage"
msgstr ""
-#: common/models.py:1051
+#: common/models.py:1063
msgid "Show latest parts"
msgstr ""
-#: common/models.py:1052
+#: common/models.py:1064
msgid "Show latest parts on the homepage"
msgstr ""
-#: common/models.py:1057
+#: common/models.py:1069
msgid "Recent Part Count"
msgstr ""
-#: common/models.py:1058
+#: common/models.py:1070
msgid "Number of recent parts to display on index page"
msgstr ""
-#: common/models.py:1064
+#: common/models.py:1076
msgid "Show unvalidated BOMs"
msgstr ""
-#: common/models.py:1065
+#: common/models.py:1077
msgid "Show BOMs that await validation on the homepage"
msgstr ""
-#: common/models.py:1070
+#: common/models.py:1082
msgid "Show recent stock changes"
msgstr ""
-#: common/models.py:1071
+#: common/models.py:1083
msgid "Show recently changed stock items on the homepage"
msgstr ""
-#: common/models.py:1076
+#: common/models.py:1088
msgid "Recent Stock Count"
msgstr ""
-#: common/models.py:1077
+#: common/models.py:1089
msgid "Number of recent stock items to display on index page"
msgstr ""
-#: common/models.py:1082
+#: common/models.py:1094
msgid "Show low stock"
msgstr ""
-#: common/models.py:1083
+#: common/models.py:1095
msgid "Show low stock items on the homepage"
msgstr ""
-#: common/models.py:1088
+#: common/models.py:1100
msgid "Show depleted stock"
msgstr ""
-#: common/models.py:1089
+#: common/models.py:1101
msgid "Show depleted stock items on the homepage"
msgstr ""
-#: common/models.py:1094
+#: common/models.py:1106
msgid "Show needed stock"
msgstr ""
-#: common/models.py:1095
+#: common/models.py:1107
msgid "Show stock items needed for builds on the homepage"
msgstr ""
-#: common/models.py:1100
+#: common/models.py:1112
msgid "Show expired stock"
msgstr ""
-#: common/models.py:1101
+#: common/models.py:1113
msgid "Show expired stock items on the homepage"
msgstr ""
-#: common/models.py:1106
+#: common/models.py:1118
msgid "Show stale stock"
msgstr ""
-#: common/models.py:1107
+#: common/models.py:1119
msgid "Show stale stock items on the homepage"
msgstr ""
-#: common/models.py:1112
+#: common/models.py:1124
msgid "Show pending builds"
msgstr ""
-#: common/models.py:1113
+#: common/models.py:1125
msgid "Show pending builds on the homepage"
msgstr ""
-#: common/models.py:1118
+#: common/models.py:1130
msgid "Show overdue builds"
msgstr ""
-#: common/models.py:1119
+#: common/models.py:1131
msgid "Show overdue builds on the homepage"
msgstr ""
-#: common/models.py:1124
+#: common/models.py:1136
msgid "Show outstanding POs"
msgstr ""
-#: common/models.py:1125
+#: common/models.py:1137
msgid "Show outstanding POs on the homepage"
msgstr ""
-#: common/models.py:1130
+#: common/models.py:1142
msgid "Show overdue POs"
msgstr ""
-#: common/models.py:1131
+#: common/models.py:1143
msgid "Show overdue POs on the homepage"
msgstr ""
-#: common/models.py:1136
+#: common/models.py:1148
msgid "Show outstanding SOs"
msgstr ""
-#: common/models.py:1137
+#: common/models.py:1149
msgid "Show outstanding SOs on the homepage"
msgstr ""
-#: common/models.py:1142
+#: common/models.py:1154
msgid "Show overdue SOs"
msgstr ""
-#: common/models.py:1143
+#: common/models.py:1155
msgid "Show overdue SOs on the homepage"
msgstr ""
-#: common/models.py:1149
+#: common/models.py:1161
msgid "Inline label display"
msgstr ""
-#: common/models.py:1150
+#: common/models.py:1162
msgid "Display PDF labels in the browser, instead of downloading as a file"
msgstr ""
-#: common/models.py:1156
+#: common/models.py:1168
msgid "Inline report display"
msgstr ""
-#: common/models.py:1157
+#: common/models.py:1169
msgid "Display PDF reports in the browser, instead of downloading as a file"
msgstr ""
-#: common/models.py:1163
+#: common/models.py:1175
msgid "Search Preview Results"
msgstr ""
-#: common/models.py:1164
+#: common/models.py:1176
msgid "Number of results to show in search preview window"
msgstr ""
-#: common/models.py:1170
+#: common/models.py:1182
msgid "Search Show Stock"
msgstr ""
-#: common/models.py:1171
+#: common/models.py:1183
msgid "Display stock levels in search preview window"
msgstr ""
-#: common/models.py:1177
+#: common/models.py:1189
msgid "Hide Inactive Parts"
msgstr ""
-#: common/models.py:1178
+#: common/models.py:1190
msgid "Hide inactive parts in search preview window"
msgstr ""
-#: common/models.py:1184
+#: common/models.py:1196
msgid "Show Quantity in Forms"
msgstr ""
-#: common/models.py:1185
+#: common/models.py:1197
msgid "Display available part quantity in some forms"
msgstr ""
-#: common/models.py:1191
+#: common/models.py:1203
msgid "Escape Key Closes Forms"
msgstr ""
-#: common/models.py:1192
+#: common/models.py:1204
msgid "Use the escape key to close modal forms"
msgstr ""
-#: common/models.py:1198
+#: common/models.py:1210
msgid "Fixed Navbar"
msgstr ""
-#: common/models.py:1199
+#: common/models.py:1211
msgid "InvenTree navbar position is fixed to the top of the screen"
msgstr ""
-#: common/models.py:1264 company/forms.py:43
+#: common/models.py:1276 company/forms.py:43
msgid "Price break quantity"
msgstr ""
-#: common/models.py:1271 company/serializers.py:264
+#: common/models.py:1283 company/serializers.py:264
#: company/templates/company/supplier_part.html:256
#: templates/js/translated/part.js:915 templates/js/translated/part.js:1867
msgid "Price"
msgstr ""
-#: common/models.py:1272
+#: common/models.py:1284
msgid "Unit price at specified quantity"
msgstr ""
-#: common/models.py:1429 common/models.py:1568
+#: common/models.py:1441 common/models.py:1580
msgid "Endpoint"
msgstr ""
-#: common/models.py:1430
+#: common/models.py:1442
msgid "Endpoint at which this webhook is received"
msgstr ""
-#: common/models.py:1439
+#: common/models.py:1451
msgid "Name for this webhook"
msgstr ""
-#: common/models.py:1444 part/models.py:948 plugin/models.py:46
+#: common/models.py:1456 part/models.py:978 plugin/models.py:46
#: templates/js/translated/table_filters.js:34
#: templates/js/translated/table_filters.js:96
-#: templates/js/translated/table_filters.js:295
-#: templates/js/translated/table_filters.js:417
+#: templates/js/translated/table_filters.js:290
+#: templates/js/translated/table_filters.js:412
msgid "Active"
msgstr ""
-#: common/models.py:1445
+#: common/models.py:1457
msgid "Is this webhook active"
msgstr ""
-#: common/models.py:1459
+#: common/models.py:1471
msgid "Token"
msgstr ""
-#: common/models.py:1460
+#: common/models.py:1472
msgid "Token for access"
msgstr ""
-#: common/models.py:1467
+#: common/models.py:1479
msgid "Secret"
msgstr ""
-#: common/models.py:1468
+#: common/models.py:1480
msgid "Shared secret for HMAC"
msgstr ""
-#: common/models.py:1535
+#: common/models.py:1547
msgid "Message ID"
msgstr ""
-#: common/models.py:1536
+#: common/models.py:1548
msgid "Unique identifier for this message"
msgstr ""
-#: common/models.py:1544
+#: common/models.py:1556
msgid "Host"
msgstr ""
-#: common/models.py:1545
+#: common/models.py:1557
msgid "Host from which this message was received"
msgstr ""
-#: common/models.py:1552
+#: common/models.py:1564
msgid "Header"
msgstr ""
-#: common/models.py:1553
+#: common/models.py:1565
msgid "Header of this message"
msgstr ""
-#: common/models.py:1559
+#: common/models.py:1571
msgid "Body"
msgstr ""
-#: common/models.py:1560
+#: common/models.py:1572
msgid "Body of this message"
msgstr ""
-#: common/models.py:1569
+#: common/models.py:1581
msgid "Endpoint on which this message was received"
msgstr ""
-#: common/models.py:1574
+#: common/models.py:1586
msgid "Worked on"
msgstr ""
-#: common/models.py:1575
+#: common/models.py:1587
msgid "Was the work on this message finished?"
msgstr ""
#: common/views.py:93 order/templates/order/order_wizard/po_upload.html:49
#: order/templates/order/purchase_order_detail.html:24 order/views.py:243
-#: part/templates/part/bom_upload/upload_file.html:52
-#: part/templates/part/import_wizard/part_upload.html:47 part/views.py:213
-#: part/views.py:773
+#: part/templates/part/import_wizard/part_upload.html:47 part/views.py:210
+#: templates/patterns/wizard/upload.html:35
msgid "Upload File"
msgstr ""
-#: common/views.py:94 order/templates/order/order_wizard/match_fields.html:52
-#: order/views.py:244 part/templates/part/bom_upload/match_fields.html:52
+#: common/views.py:94 order/views.py:244
#: part/templates/part/import_wizard/ajax_match_fields.html:45
-#: part/templates/part/import_wizard/match_fields.html:52 part/views.py:214
-#: part/views.py:774
+#: part/templates/part/import_wizard/match_fields.html:52 part/views.py:211
+#: templates/patterns/wizard/match_fields.html:51
msgid "Match Fields"
msgstr ""
@@ -2328,15 +2345,13 @@ msgstr ""
msgid "Parts imported"
msgstr ""
-#: common/views.py:517 order/templates/order/order_wizard/match_fields.html:27
-#: order/templates/order/order_wizard/match_parts.html:19
+#: common/views.py:517 order/templates/order/order_wizard/match_parts.html:19
#: order/templates/order/order_wizard/po_upload.html:47
-#: part/templates/part/bom_upload/match_fields.html:27
-#: part/templates/part/bom_upload/match_parts.html:19
-#: part/templates/part/bom_upload/upload_file.html:50
#: part/templates/part/import_wizard/match_fields.html:27
#: part/templates/part/import_wizard/match_references.html:19
#: part/templates/part/import_wizard/part_upload.html:45
+#: templates/patterns/wizard/match_fields.html:26
+#: templates/patterns/wizard/upload.html:33
msgid "Previous Step"
msgstr ""
@@ -2404,7 +2419,7 @@ msgstr ""
msgid "Link to external company information"
msgstr ""
-#: company/models.py:139 part/models.py:840
+#: company/models.py:139 part/models.py:870
msgid "Image"
msgstr ""
@@ -2442,7 +2457,7 @@ msgid "Default currency used for this company"
msgstr ""
#: company/models.py:320 company/models.py:535 stock/models.py:471
-#: stock/templates/stock/item_base.html:142 templates/js/translated/bom.js:328
+#: stock/templates/stock/item_base.html:144 templates/js/translated/bom.js:541
msgid "Base Part"
msgstr ""
@@ -2453,11 +2468,11 @@ 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:380
+#: stock/templates/stock/item_base.html:382
#: templates/js/translated/company.js:333
#: templates/js/translated/company.js:517
#: templates/js/translated/company.js:800 templates/js/translated/part.js:234
-#: templates/js/translated/table_filters.js:389
+#: templates/js/translated/table_filters.js:384
msgid "Manufacturer"
msgstr ""
@@ -2488,7 +2503,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:390
+#: stock/templates/stock/item_base.html:392
msgid "Manufacturer Part"
msgstr ""
@@ -2499,7 +2514,7 @@ msgstr ""
#: company/models.py:422
#: report/templates/report/inventree_test_report_base.html:95
#: stock/models.py:1988 templates/js/translated/company.js:647
-#: templates/js/translated/part.js:715 templates/js/translated/stock.js:1304
+#: templates/js/translated/part.js:715 templates/js/translated/stock.js:1332
msgid "Value"
msgstr ""
@@ -2507,9 +2522,9 @@ msgstr ""
msgid "Parameter value"
msgstr ""
-#: company/models.py:429 part/models.py:915 part/models.py:2457
+#: company/models.py:429 part/models.py:945 part/models.py:2493
#: part/templates/part/part_base.html:288
-#: templates/InvenTree/settings/settings.html:287
+#: templates/InvenTree/settings/settings.html:324
#: templates/js/translated/company.js:653 templates/js/translated/part.js:721
msgid "Units"
msgstr ""
@@ -2526,11 +2541,11 @@ msgstr ""
#: company/templates/company/supplier_part.html:87 order/models.py:227
#: order/templates/order/order_base.html:112
#: order/templates/order/order_wizard/select_pos.html:30 part/bom.py:237
-#: part/bom.py:265 stock/templates/stock/item_base.html:397
+#: part/bom.py:265 stock/templates/stock/item_base.html:399
#: templates/js/translated/company.js:337
#: templates/js/translated/company.js:774 templates/js/translated/order.js:823
#: templates/js/translated/part.js:215 templates/js/translated/part.js:863
-#: templates/js/translated/table_filters.js:393
+#: templates/js/translated/table_filters.js:388
msgid "Supplier"
msgstr ""
@@ -2561,22 +2576,23 @@ msgid "Supplier part description"
msgstr ""
#: company/models.py:576 company/templates/company/supplier_part.html:119
-#: part/models.py:2648 report/templates/report/inventree_po_report.html:93
-#: report/templates/report/inventree_so_report.html:93
+#: part/models.py:2717 part/templates/part/upload_bom.html:59
+#: report/templates/report/inventree_po_report.html:93
+#: report/templates/report/inventree_so_report.html:93 stock/serializers.py:409
msgid "Note"
msgstr ""
-#: company/models.py:580 part/models.py:1781
+#: company/models.py:580 part/models.py:1817
msgid "base cost"
msgstr ""
-#: company/models.py:580 part/models.py:1781
+#: company/models.py:580 part/models.py:1817
msgid "Minimum charge (e.g. stocking fee)"
msgstr ""
#: company/models.py:582 company/templates/company/supplier_part.html:112
-#: stock/models.py:495 stock/templates/stock/item_base.html:338
-#: templates/js/translated/company.js:850 templates/js/translated/stock.js:1799
+#: stock/models.py:495 stock/templates/stock/item_base.html:340
+#: templates/js/translated/company.js:850 templates/js/translated/stock.js:1923
msgid "Packaging"
msgstr ""
@@ -2584,7 +2600,7 @@ msgstr ""
msgid "Part packaging"
msgstr ""
-#: company/models.py:584 part/models.py:1783
+#: company/models.py:584 part/models.py:1819
msgid "multiple"
msgstr ""
@@ -2645,11 +2661,11 @@ msgstr ""
#: company/templates/company/company_base.html:83 order/models.py:552
#: order/templates/order/sales_order_base.html:115 stock/models.py:514
-#: stock/models.py:515 stock/serializers.py:626
-#: stock/templates/stock/item_base.html:290
+#: stock/models.py:515 stock/serializers.py:683
+#: stock/templates/stock/item_base.html:292
#: templates/js/translated/company.js:329 templates/js/translated/order.js:1240
-#: templates/js/translated/stock.js:2610
-#: templates/js/translated/table_filters.js:397
+#: templates/js/translated/stock.js:2734
+#: templates/js/translated/table_filters.js:392
msgid "Customer"
msgstr ""
@@ -2679,7 +2695,7 @@ msgstr ""
#: company/templates/company/detail.html:20
#: company/templates/company/manufacturer_part.html:118
-#: part/templates/part/detail.html:353
+#: part/templates/part/detail.html:356
msgid "New Supplier Part"
msgstr ""
@@ -2687,8 +2703,8 @@ msgstr ""
#: company/templates/company/detail.html:79
#: company/templates/company/manufacturer_part.html:127
#: company/templates/company/manufacturer_part.html:156
-#: part/templates/part/category.html:171 part/templates/part/detail.html:362
-#: part/templates/part/detail.html:391
+#: part/templates/part/category.html:171 part/templates/part/detail.html:365
+#: part/templates/part/detail.html:394
msgid "Options"
msgstr ""
@@ -2716,7 +2732,7 @@ msgstr ""
msgid "Create new manufacturer part"
msgstr ""
-#: company/templates/company/detail.html:67 part/templates/part/detail.html:381
+#: company/templates/company/detail.html:67 part/templates/part/detail.html:384
msgid "New Manufacturer Part"
msgstr ""
@@ -2730,7 +2746,7 @@ msgstr ""
#: order/templates/order/order_base.html:13
#: order/templates/order/purchase_orders.html:8
#: order/templates/order/purchase_orders.html:12
-#: part/templates/part/detail.html:85 part/templates/part/part_sidebar.html:37
+#: part/templates/part/detail.html:85 part/templates/part/part_sidebar.html:40
#: templates/InvenTree/index.html:252 templates/InvenTree/search.html:197
#: templates/InvenTree/settings/sidebar.html:45 templates/navbar.html:47
#: users/models.py:45
@@ -2752,7 +2768,7 @@ msgstr ""
#: order/templates/order/sales_order_base.html:13
#: order/templates/order/sales_orders.html:8
#: order/templates/order/sales_orders.html:15
-#: part/templates/part/detail.html:108 part/templates/part/part_sidebar.html:41
+#: part/templates/part/detail.html:108 part/templates/part/part_sidebar.html:44
#: templates/InvenTree/index.html:283 templates/InvenTree/search.html:217
#: templates/InvenTree/settings/sidebar.html:47 templates/navbar.html:58
#: users/models.py:46
@@ -2770,7 +2786,7 @@ msgid "New Sales Order"
msgstr ""
#: company/templates/company/detail.html:168
-#: templates/js/translated/build.js:1059
+#: templates/js/translated/build.js:1281
msgid "Assigned Stock"
msgstr ""
@@ -2780,13 +2796,13 @@ msgstr ""
#: company/templates/company/detail.html:384
#: company/templates/company/manufacturer_part.html:215
-#: part/templates/part/detail.html:435
+#: part/templates/part/detail.html:438
msgid "Delete Supplier Parts?"
msgstr ""
#: company/templates/company/detail.html:385
#: company/templates/company/manufacturer_part.html:216
-#: part/templates/part/detail.html:436
+#: part/templates/part/detail.html:439
msgid "All selected supplier parts will be deleted"
msgstr ""
@@ -2824,36 +2840,36 @@ 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:35 part/templates/part/prices.html:163
+#: part/templates/part/part_sidebar.html:38 part/templates/part/prices.html:163
#: templates/InvenTree/search.html:188 templates/navbar.html:45
msgid "Suppliers"
msgstr ""
#: company/templates/company/manufacturer_part.html:129
-#: part/templates/part/detail.html:364
+#: part/templates/part/detail.html:367
msgid "Delete supplier parts"
msgstr ""
#: company/templates/company/manufacturer_part.html:129
#: company/templates/company/manufacturer_part.html:158
#: company/templates/company/manufacturer_part.html:254
-#: part/templates/part/detail.html:364 part/templates/part/detail.html:393
+#: part/templates/part/detail.html:367 part/templates/part/detail.html:396
#: templates/js/translated/company.js:426 templates/js/translated/helpers.js:31
-#: users/models.py:212
+#: users/models.py:217
msgid "Delete"
msgstr ""
#: company/templates/company/manufacturer_part.html:143
#: company/templates/company/manufacturer_part_sidebar.html:5
#: part/templates/part/category_sidebar.html:17
-#: part/templates/part/detail.html:187 part/templates/part/part_sidebar.html:8
+#: part/templates/part/detail.html:190 part/templates/part/part_sidebar.html:9
msgid "Parameters"
msgstr ""
#: company/templates/company/manufacturer_part.html:147
-#: part/templates/part/detail.html:192
+#: part/templates/part/detail.html:195
#: templates/InvenTree/settings/category.html:12
-#: templates/InvenTree/settings/part.html:65
+#: templates/InvenTree/settings/part.html:66
msgid "New Parameter"
msgstr ""
@@ -2862,7 +2878,7 @@ msgid "Delete parameters"
msgstr ""
#: company/templates/company/manufacturer_part.html:191
-#: part/templates/part/detail.html:892
+#: part/templates/part/detail.html:895
msgid "Add Parameter"
msgstr ""
@@ -2892,8 +2908,8 @@ msgstr ""
#: company/templates/company/supplier_part.html:7
#: company/templates/company/supplier_part.html:24 stock/models.py:479
-#: stock/templates/stock/item_base.html:402
-#: templates/js/translated/company.js:790 templates/js/translated/stock.js:1756
+#: stock/templates/stock/item_base.html:404
+#: templates/js/translated/company.js:790 templates/js/translated/stock.js:1880
msgid "Supplier Part"
msgstr ""
@@ -2919,7 +2935,7 @@ msgstr ""
#: company/templates/company/supplier_part.html:142
#: part/templates/part/detail.html:25 stock/templates/stock/location.html:167
-#: templates/js/translated/stock.js:368
+#: templates/js/translated/stock.js:369
msgid "New Stock Item"
msgstr ""
@@ -2940,7 +2956,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:1628
+#: part/templates/part/prices.html:271 part/views.py:1319
msgid "Add Price Break"
msgstr ""
@@ -2948,11 +2964,11 @@ msgstr ""
msgid "No price break information found"
msgstr ""
-#: company/templates/company/supplier_part.html:224 part/views.py:1690
+#: company/templates/company/supplier_part.html:224 part/views.py:1381
msgid "Delete Price Break"
msgstr ""
-#: company/templates/company/supplier_part.html:238 part/views.py:1676
+#: company/templates/company/supplier_part.html:238 part/views.py:1367
msgid "Edit Price Break"
msgstr ""
@@ -2965,15 +2981,15 @@ msgid "Delete price break"
msgstr ""
#: company/templates/company/supplier_part_navbar.html:15
-#: part/templates/part/part_sidebar.html:14
+#: part/templates/part/part_sidebar.html:15
#: 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:150
#: templates/InvenTree/settings/sidebar.html:41
-#: templates/js/translated/bom.js:340 templates/js/translated/part.js:495
+#: templates/js/translated/bom.js:553 templates/js/translated/part.js:495
#: templates/js/translated/part.js:630 templates/js/translated/part.js:1125
-#: templates/js/translated/part.js:1286 templates/js/translated/stock.js:935
-#: templates/js/translated/stock.js:1588 templates/navbar.html:28
+#: templates/js/translated/part.js:1286 templates/js/translated/stock.js:936
+#: templates/js/translated/stock.js:1712 templates/navbar.html:28
msgid "Stock"
msgstr ""
@@ -2987,7 +3003,7 @@ msgid "Supplier Part Pricing"
msgstr ""
#: company/templates/company/supplier_part_navbar.html:29
-#: part/templates/part/part_sidebar.html:28
+#: part/templates/part/part_sidebar.html:30
msgid "Pricing"
msgstr ""
@@ -2996,7 +3012,7 @@ msgstr ""
#: stock/templates/stock/location.html:151
#: stock/templates/stock/location.html:163
#: stock/templates/stock/location_sidebar.html:7
-#: templates/InvenTree/search.html:152 templates/js/translated/stock.js:2509
+#: templates/InvenTree/search.html:152 templates/js/translated/stock.js:2633
#: templates/stats.html:105 templates/stats.html:114 users/models.py:43
msgid "Stock Items"
msgstr ""
@@ -3026,20 +3042,20 @@ msgstr ""
msgid "New Company"
msgstr ""
-#: company/views.py:129 part/views.py:593
+#: company/views.py:129 part/views.py:591
msgid "Download Image"
msgstr ""
-#: company/views.py:158 part/views.py:625
+#: company/views.py:158 part/views.py:623
msgid "Image size exceeds maximum allowable size for download"
msgstr ""
-#: company/views.py:165 part/views.py:632
+#: company/views.py:165 part/views.py:630
#, python-brace-format
msgid "Invalid response: {code}"
msgstr ""
-#: company/views.py:174 part/views.py:641
+#: company/views.py:174 part/views.py:639
msgid "Supplied URL is not a valid image file"
msgstr ""
@@ -3256,16 +3272,16 @@ msgid "Supplier part must match supplier"
msgstr ""
#: order/models.py:855 order/models.py:946 order/models.py:1042
-#: templates/js/translated/order.js:1820 templates/js/translated/stock.js:2271
+#: templates/js/translated/order.js:1820 templates/js/translated/stock.js:2395
msgid "Order"
msgstr ""
#: order/models.py:856 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:352
+#: stock/templates/stock/item_base.html:354
#: templates/js/translated/order.js:801 templates/js/translated/part.js:838
-#: templates/js/translated/stock.js:1733 templates/js/translated/stock.js:2591
+#: templates/js/translated/stock.js:1857 templates/js/translated/stock.js:2715
msgid "Purchase Order"
msgstr ""
@@ -3276,7 +3292,7 @@ msgstr ""
#: order/models.py:884 order/templates/order/order_base.html:163
#: templates/js/translated/order.js:589 templates/js/translated/order.js:1118
#: templates/js/translated/part.js:910 templates/js/translated/part.js:937
-#: templates/js/translated/table_filters.js:317
+#: templates/js/translated/table_filters.js:312
msgid "Received"
msgstr ""
@@ -3285,8 +3301,8 @@ msgid "Number of items received"
msgstr ""
#: order/models.py:892 part/templates/part/prices.html:176 stock/models.py:608
-#: stock/serializers.py:170 stock/templates/stock/item_base.html:359
-#: templates/js/translated/stock.js:1787
+#: stock/serializers.py:170 stock/templates/stock/item_base.html:361
+#: templates/js/translated/stock.js:1911
msgid "Purchase Price"
msgstr ""
@@ -3530,7 +3546,7 @@ msgstr ""
#: order/templates/order/order_base.html:94
#: order/templates/order/sales_order_base.html:89
-#: templates/js/translated/stock.js:2327
+#: templates/js/translated/stock.js:2451
msgid "Order Status"
msgstr ""
@@ -3574,73 +3590,20 @@ msgstr ""
msgid "After placing this purchase order, line items will no longer be editable."
msgstr ""
-#: order/templates/order/order_wizard/match_fields.html:9
-#: part/templates/part/bom_upload/match_fields.html:9
-#: part/templates/part/import_wizard/ajax_match_fields.html:9
-#: part/templates/part/import_wizard/match_fields.html:9
-msgid "Missing selections for the following required columns"
-msgstr ""
-
-#: order/templates/order/order_wizard/match_fields.html:20
-#: part/templates/part/bom_upload/match_fields.html:20
-#: part/templates/part/import_wizard/ajax_match_fields.html:20
-#: part/templates/part/import_wizard/match_fields.html:20
-msgid "Duplicate selections found, see below. Fix them then retry submitting."
-msgstr ""
-
-#: order/templates/order/order_wizard/match_fields.html:29
-#: order/templates/order/order_wizard/match_parts.html:21
-#: part/templates/part/bom_upload/match_fields.html:29
-#: part/templates/part/bom_upload/match_parts.html:21
-#: part/templates/part/import_wizard/match_fields.html:29
-#: part/templates/part/import_wizard/match_references.html:21
-msgid "Submit Selections"
-msgstr ""
-
-#: order/templates/order/order_wizard/match_fields.html:35
-#: part/templates/part/bom_upload/match_fields.html:35
-#: part/templates/part/import_wizard/ajax_match_fields.html:28
-#: part/templates/part/import_wizard/match_fields.html:35
-msgid "File Fields"
-msgstr ""
-
-#: order/templates/order/order_wizard/match_fields.html:42
-#: part/templates/part/bom_upload/match_fields.html:42
-#: part/templates/part/import_wizard/ajax_match_fields.html:35
-#: part/templates/part/import_wizard/match_fields.html:42
-msgid "Remove column"
-msgstr ""
-
-#: order/templates/order/order_wizard/match_fields.html:60
-#: part/templates/part/bom_upload/match_fields.html:60
-#: part/templates/part/import_wizard/ajax_match_fields.html:53
-#: part/templates/part/import_wizard/match_fields.html:60
-msgid "Duplicate selection"
-msgstr ""
-
-#: order/templates/order/order_wizard/match_fields.html:71
-#: order/templates/order/order_wizard/match_parts.html:52
-#: part/templates/part/bom_upload/match_fields.html:71
-#: part/templates/part/bom_upload/match_parts.html:53
-#: part/templates/part/import_wizard/ajax_match_fields.html:64
-#: part/templates/part/import_wizard/ajax_match_references.html:42
-#: part/templates/part/import_wizard/match_fields.html:71
-#: part/templates/part/import_wizard/match_references.html:49
-#: templates/js/translated/build.js:300 templates/js/translated/build.js:1311
-#: templates/js/translated/order.js:537 templates/js/translated/order.js:1488
-#: templates/js/translated/stock.js:601 templates/js/translated/stock.js:769
-msgid "Remove row"
-msgstr ""
-
#: order/templates/order/order_wizard/match_parts.html:12
-#: part/templates/part/bom_upload/match_parts.html:12
#: part/templates/part/import_wizard/ajax_match_references.html:12
#: part/templates/part/import_wizard/match_references.html:12
msgid "Errors exist in the submitted data"
msgstr ""
+#: order/templates/order/order_wizard/match_parts.html:21
+#: part/templates/part/import_wizard/match_fields.html:29
+#: part/templates/part/import_wizard/match_references.html:21
+#: templates/patterns/wizard/match_fields.html:28
+msgid "Submit Selections"
+msgstr ""
+
#: order/templates/order/order_wizard/match_parts.html:28
-#: part/templates/part/bom_upload/match_parts.html:28
#: part/templates/part/import_wizard/ajax_match_references.html:21
#: part/templates/part/import_wizard/match_references.html:28
msgid "Row"
@@ -3650,6 +3613,19 @@ msgstr ""
msgid "Select Supplier Part"
msgstr ""
+#: order/templates/order/order_wizard/match_parts.html:52
+#: part/templates/part/import_wizard/ajax_match_fields.html:64
+#: part/templates/part/import_wizard/ajax_match_references.html:42
+#: part/templates/part/import_wizard/match_fields.html:71
+#: part/templates/part/import_wizard/match_references.html:49
+#: templates/js/translated/bom.js:76 templates/js/translated/build.js:380
+#: templates/js/translated/build.js:528 templates/js/translated/build.js:1547
+#: templates/js/translated/order.js:537 templates/js/translated/order.js:1488
+#: templates/js/translated/stock.js:602 templates/js/translated/stock.js:770
+#: templates/patterns/wizard/match_fields.html:70
+msgid "Remove row"
+msgstr ""
+
#: order/templates/order/order_wizard/po_upload.html:8
msgid "Return to Orders"
msgstr ""
@@ -3659,9 +3635,9 @@ msgid "Upload File for Purchase Order"
msgstr ""
#: order/templates/order/order_wizard/po_upload.html:25
-#: part/templates/part/bom_upload/upload_file.html:21
#: part/templates/part/import_wizard/ajax_part_upload.html:10
#: part/templates/part/import_wizard/part_upload.html:23
+#: templates/patterns/wizard/upload.html:11
#, python-format
msgid "Step %(step)s of %(count)s"
msgstr ""
@@ -3819,7 +3795,7 @@ msgid "Pending Shipments"
msgstr ""
#: order/templates/order/sales_order_detail.html:48
-#: templates/js/translated/bom.js:732 templates/js/translated/build.js:1243
+#: templates/js/translated/bom.js:945 templates/js/translated/build.js:1465
msgid "Actions"
msgstr ""
@@ -3922,7 +3898,7 @@ msgstr ""
msgid "This field is required"
msgstr ""
-#: part/bom.py:125 part/models.py:83 part/models.py:849
+#: part/bom.py:125 part/models.py:83 part/models.py:879
#: part/templates/part/category.html:108 part/templates/part/part_base.html:338
msgid "Default Location"
msgstr ""
@@ -3968,7 +3944,7 @@ msgstr ""
msgid "Default keywords for parts in this category"
msgstr ""
-#: part/models.py:97 part/models.py:2533 part/templates/part/category.html:15
+#: part/models.py:97 part/models.py:2569 part/templates/part/category.html:15
#: part/templates/part/part_app_base.html:10
msgid "Part Category"
msgstr ""
@@ -3994,408 +3970,478 @@ msgstr ""
msgid "Invalid choice for parent part"
msgstr ""
-#: part/models.py:502 part/models.py:514
+#: part/models.py:532 part/models.py:544
#, python-brace-format
msgid "Part '{p1}' is used in BOM for '{p2}' (recursive)"
msgstr ""
-#: part/models.py:644
+#: part/models.py:674
msgid "Next available serial numbers are"
msgstr ""
-#: part/models.py:648
+#: part/models.py:678
msgid "Next available serial number is"
msgstr ""
-#: part/models.py:653
+#: part/models.py:683
msgid "Most recent serial number is"
msgstr ""
-#: part/models.py:748
+#: part/models.py:778
msgid "Duplicate IPN not allowed in part settings"
msgstr ""
-#: part/models.py:773
+#: part/models.py:803 part/models.py:2622
msgid "Part name"
msgstr ""
-#: part/models.py:780
+#: part/models.py:810
msgid "Is Template"
msgstr ""
-#: part/models.py:781
+#: part/models.py:811
msgid "Is this part a template part?"
msgstr ""
-#: part/models.py:791
+#: part/models.py:821
msgid "Is this part a variant of another part?"
msgstr ""
-#: part/models.py:792
+#: part/models.py:822
msgid "Variant Of"
msgstr ""
-#: part/models.py:798
+#: part/models.py:828
msgid "Part description"
msgstr ""
-#: part/models.py:803 part/templates/part/category.html:86
+#: part/models.py:833 part/templates/part/category.html:86
#: part/templates/part/part_base.html:302
msgid "Keywords"
msgstr ""
-#: part/models.py:804
+#: part/models.py:834
msgid "Part keywords to improve visibility in search results"
msgstr ""
-#: part/models.py:811 part/models.py:2283 part/models.py:2532
+#: part/models.py:841 part/models.py:2319 part/models.py:2568
#: part/templates/part/part_base.html:265
#: part/templates/part/set_category.html:15
-#: templates/InvenTree/settings/settings.html:186
+#: templates/InvenTree/settings/settings.html:223
#: templates/js/translated/part.js:1268
msgid "Category"
msgstr ""
-#: part/models.py:812
+#: part/models.py:842
msgid "Part category"
msgstr ""
-#: part/models.py:817 part/templates/part/part_base.html:274
+#: part/models.py:847 part/templates/part/part_base.html:274
#: templates/js/translated/part.js:618 templates/js/translated/part.js:1221
-#: templates/js/translated/stock.js:1560
+#: templates/js/translated/stock.js:1684
msgid "IPN"
msgstr ""
-#: part/models.py:818
+#: part/models.py:848
msgid "Internal Part Number"
msgstr ""
-#: part/models.py:824
+#: part/models.py:854
msgid "Part revision or version number"
msgstr ""
-#: part/models.py:825 part/templates/part/part_base.html:281
+#: part/models.py:855 part/templates/part/part_base.html:281
#: report/models.py:200 templates/js/translated/part.js:622
msgid "Revision"
msgstr ""
-#: part/models.py:847
+#: part/models.py:877
msgid "Where is this item normally stored?"
msgstr ""
-#: part/models.py:894 part/templates/part/part_base.html:347
+#: part/models.py:924 part/templates/part/part_base.html:347
msgid "Default Supplier"
msgstr ""
-#: part/models.py:895
+#: part/models.py:925
msgid "Default supplier part"
msgstr ""
-#: part/models.py:902
+#: part/models.py:932
msgid "Default Expiry"
msgstr ""
-#: part/models.py:903
+#: part/models.py:933
msgid "Expiry time (in days) for stock items of this part"
msgstr ""
-#: part/models.py:908 part/templates/part/part_base.html:196
+#: part/models.py:938 part/templates/part/part_base.html:196
msgid "Minimum Stock"
msgstr ""
-#: part/models.py:909
+#: part/models.py:939
msgid "Minimum allowed stock level"
msgstr ""
-#: part/models.py:916
+#: part/models.py:946
msgid "Stock keeping units for this part"
msgstr ""
-#: part/models.py:922
+#: part/models.py:952
msgid "Can this part be built from other parts?"
msgstr ""
-#: part/models.py:928
+#: part/models.py:958
msgid "Can this part be used to build other parts?"
msgstr ""
-#: part/models.py:934
+#: part/models.py:964
msgid "Does this part have tracking for unique items?"
msgstr ""
-#: part/models.py:939
+#: part/models.py:969
msgid "Can this part be purchased from external suppliers?"
msgstr ""
-#: part/models.py:944
+#: part/models.py:974
msgid "Can this part be sold to customers?"
msgstr ""
-#: part/models.py:949
+#: part/models.py:979
msgid "Is this part active?"
msgstr ""
-#: part/models.py:954
+#: part/models.py:984
msgid "Is this a virtual part, such as a software product or license?"
msgstr ""
-#: part/models.py:959
+#: part/models.py:989
msgid "Part notes - supports Markdown formatting"
msgstr ""
-#: part/models.py:962
+#: part/models.py:992
msgid "BOM checksum"
msgstr ""
-#: part/models.py:962
+#: part/models.py:992
msgid "Stored BOM checksum"
msgstr ""
-#: part/models.py:965
+#: part/models.py:995
msgid "BOM checked by"
msgstr ""
-#: part/models.py:967
+#: part/models.py:997
msgid "BOM checked date"
msgstr ""
-#: part/models.py:971
+#: part/models.py:1001
msgid "Creation User"
msgstr ""
-#: part/models.py:1783
+#: part/models.py:1819
msgid "Sell multiple"
msgstr ""
-#: part/models.py:2333
+#: part/models.py:2369
msgid "Test templates can only be created for trackable parts"
msgstr ""
-#: part/models.py:2350
+#: part/models.py:2386
msgid "Test with this name already exists for this part"
msgstr ""
-#: part/models.py:2370 templates/js/translated/part.js:1714
-#: templates/js/translated/stock.js:1284
+#: part/models.py:2406 templates/js/translated/part.js:1714
+#: templates/js/translated/stock.js:1312
msgid "Test Name"
msgstr ""
-#: part/models.py:2371
+#: part/models.py:2407
msgid "Enter a name for the test"
msgstr ""
-#: part/models.py:2376
+#: part/models.py:2412
msgid "Test Description"
msgstr ""
-#: part/models.py:2377
+#: part/models.py:2413
msgid "Enter description for this test"
msgstr ""
-#: part/models.py:2382 templates/js/translated/part.js:1723
-#: templates/js/translated/table_filters.js:281
+#: part/models.py:2418 templates/js/translated/part.js:1723
+#: templates/js/translated/table_filters.js:276
msgid "Required"
msgstr ""
-#: part/models.py:2383
+#: part/models.py:2419
msgid "Is this test required to pass?"
msgstr ""
-#: part/models.py:2388 templates/js/translated/part.js:1731
+#: part/models.py:2424 templates/js/translated/part.js:1731
msgid "Requires Value"
msgstr ""
-#: part/models.py:2389
+#: part/models.py:2425
msgid "Does this test require a value when adding a test result?"
msgstr ""
-#: part/models.py:2394 templates/js/translated/part.js:1738
+#: part/models.py:2430 templates/js/translated/part.js:1738
msgid "Requires Attachment"
msgstr ""
-#: part/models.py:2395
+#: part/models.py:2431
msgid "Does this test require a file attachment when adding a test result?"
msgstr ""
-#: part/models.py:2406
+#: part/models.py:2442
#, python-brace-format
msgid "Illegal character in template name ({c})"
msgstr ""
-#: part/models.py:2442
+#: part/models.py:2478
msgid "Parameter template name must be unique"
msgstr ""
-#: part/models.py:2450
+#: part/models.py:2486
msgid "Parameter Name"
msgstr ""
-#: part/models.py:2457
+#: part/models.py:2493
msgid "Parameter Units"
msgstr ""
-#: part/models.py:2487
+#: part/models.py:2523
msgid "Parent Part"
msgstr ""
-#: part/models.py:2489 part/models.py:2538 part/models.py:2539
-#: templates/InvenTree/settings/settings.html:181
+#: part/models.py:2525 part/models.py:2574 part/models.py:2575
+#: templates/InvenTree/settings/settings.html:218
msgid "Parameter Template"
msgstr ""
-#: part/models.py:2491
+#: part/models.py:2527
msgid "Data"
msgstr ""
-#: part/models.py:2491
+#: part/models.py:2527
msgid "Parameter Value"
msgstr ""
-#: part/models.py:2543 templates/InvenTree/settings/settings.html:190
+#: part/models.py:2579 templates/InvenTree/settings/settings.html:227
msgid "Default Value"
msgstr ""
-#: part/models.py:2544
+#: part/models.py:2580
msgid "Default Parameter Value"
msgstr ""
+#: part/models.py:2614
+msgid "Part ID or part name"
+msgstr ""
+
+#: part/models.py:2617 templates/js/translated/model_renderers.js:182
+msgid "Part ID"
+msgstr ""
+
+#: part/models.py:2618
+msgid "Unique part ID value"
+msgstr ""
+
#: part/models.py:2621
-msgid "Select parent part"
+msgid "Part Name"
+msgstr ""
+
+#: part/models.py:2625
+msgid "Part IPN"
+msgstr ""
+
+#: part/models.py:2626
+msgid "Part IPN value"
msgstr ""
#: part/models.py:2629
-msgid "Sub part"
+msgid "Level"
msgstr ""
#: part/models.py:2630
+msgid "BOM level"
+msgstr ""
+
+#: part/models.py:2690
+msgid "Select parent part"
+msgstr ""
+
+#: part/models.py:2698
+msgid "Sub part"
+msgstr ""
+
+#: part/models.py:2699
msgid "Select part to be used in BOM"
msgstr ""
-#: part/models.py:2636
+#: part/models.py:2705
msgid "BOM quantity for this BOM item"
msgstr ""
-#: part/models.py:2638 templates/js/translated/bom.js:578
-#: templates/js/translated/bom.js:652
+#: part/models.py:2707 part/templates/part/upload_bom.html:58
+#: templates/js/translated/bom.js:791 templates/js/translated/bom.js:865
#: templates/js/translated/table_filters.js:92
msgid "Optional"
msgstr ""
-#: part/models.py:2638
+#: part/models.py:2707
msgid "This BOM item is optional"
msgstr ""
-#: part/models.py:2641
+#: part/models.py:2710 part/templates/part/upload_bom.html:55
msgid "Overage"
msgstr ""
-#: part/models.py:2642
+#: part/models.py:2711
msgid "Estimated build wastage quantity (absolute or percentage)"
msgstr ""
-#: part/models.py:2645
+#: part/models.py:2714
msgid "BOM item reference"
msgstr ""
-#: part/models.py:2648
+#: part/models.py:2717
msgid "BOM item notes"
msgstr ""
-#: part/models.py:2650
+#: part/models.py:2719
msgid "Checksum"
msgstr ""
-#: part/models.py:2650
+#: part/models.py:2719
msgid "BOM line checksum"
msgstr ""
-#: part/models.py:2654 templates/js/translated/bom.js:669
+#: part/models.py:2723 part/templates/part/upload_bom.html:57
+#: templates/js/translated/bom.js:882
#: templates/js/translated/table_filters.js:68
#: templates/js/translated/table_filters.js:88
msgid "Inherited"
msgstr ""
-#: part/models.py:2655
+#: part/models.py:2724
msgid "This BOM item is inherited by BOMs for variant parts"
msgstr ""
-#: part/models.py:2660 templates/js/translated/bom.js:661
+#: part/models.py:2729 part/templates/part/upload_bom.html:56
+#: templates/js/translated/bom.js:874
msgid "Allow Variants"
msgstr ""
-#: part/models.py:2661
+#: part/models.py:2730
msgid "Stock items for variant parts can be used for this BOM item"
msgstr ""
-#: part/models.py:2746 stock/models.py:357
+#: part/models.py:2815 stock/models.py:357
msgid "Quantity must be integer value for trackable parts"
msgstr ""
-#: part/models.py:2755 part/models.py:2757
+#: part/models.py:2824 part/models.py:2826
msgid "Sub part must be specified"
msgstr ""
-#: part/models.py:2886
+#: part/models.py:2955
msgid "BOM Item Substitute"
msgstr ""
-#: part/models.py:2908
+#: part/models.py:2977
msgid "Substitute part cannot be the same as the master part"
msgstr ""
-#: part/models.py:2920
+#: part/models.py:2989
msgid "Parent BOM item"
msgstr ""
-#: part/models.py:2928
+#: part/models.py:2997
msgid "Substitute part"
msgstr ""
-#: part/models.py:2939
+#: part/models.py:3008
msgid "Part 1"
msgstr ""
-#: part/models.py:2943
+#: part/models.py:3012
msgid "Part 2"
msgstr ""
-#: part/models.py:2943
+#: part/models.py:3012
msgid "Select Related Part"
msgstr ""
-#: part/models.py:2975
+#: part/models.py:3044
msgid "Error creating relationship: check that the part is not related to itself and that the relationship is unique"
msgstr ""
-#: part/serializers.py:659
+#: part/serializers.py:667
msgid "Select part to copy BOM from"
msgstr ""
-#: part/serializers.py:670
+#: part/serializers.py:678
msgid "Remove Existing Data"
msgstr ""
-#: part/serializers.py:671
+#: part/serializers.py:679
msgid "Remove existing BOM items before copying"
msgstr ""
-#: part/serializers.py:676
+#: part/serializers.py:684
msgid "Include Inherited"
msgstr ""
-#: part/serializers.py:677
+#: part/serializers.py:685
msgid "Include BOM items which are inherited from templated parts"
msgstr ""
-#: part/serializers.py:682
+#: part/serializers.py:690
msgid "Skip Invalid Rows"
msgstr ""
-#: part/serializers.py:683
+#: part/serializers.py:691
msgid "Enable this option to skip invalid rows"
msgstr ""
-#: part/tasks.py:53
+#: part/serializers.py:734
+msgid "Clear Existing BOM"
+msgstr ""
+
+#: part/serializers.py:735
+msgid "Delete existing BOM items before uploading"
+msgstr ""
+
+#: part/serializers.py:762
+msgid "No part column specified"
+msgstr ""
+
+#: part/serializers.py:806
+msgid "Multiple matching parts found"
+msgstr ""
+
+#: part/serializers.py:809
+msgid "No matching part found"
+msgstr ""
+
+#: part/serializers.py:812
+msgid "Part is not designated as a component"
+msgstr ""
+
+#: part/serializers.py:821
+msgid "Quantity not provided"
+msgstr ""
+
+#: part/serializers.py:829
+msgid "Invalid quantity"
+msgstr ""
+
+#: part/serializers.py:848
+msgid "At least one BOM item is required"
+msgstr ""
+
+#: part/tasks.py:58
msgid "Low stock notification"
msgstr ""
@@ -4418,7 +4464,7 @@ msgstr ""
msgid "The BOM for %(part)s has not been validated."
msgstr ""
-#: part/templates/part/bom.html:30 part/templates/part/detail.html:270
+#: part/templates/part/bom.html:30 part/templates/part/detail.html:273
msgid "BOM actions"
msgstr ""
@@ -4426,34 +4472,6 @@ msgstr ""
msgid "Delete Items"
msgstr ""
-#: part/templates/part/bom_upload/match_parts.html:29
-msgid "Select Part"
-msgstr ""
-
-#: part/templates/part/bom_upload/upload_file.html:8
-msgid "Return to BOM"
-msgstr ""
-
-#: part/templates/part/bom_upload/upload_file.html:13
-msgid "Upload Bill of Materials"
-msgstr ""
-
-#: part/templates/part/bom_upload/upload_file.html:33
-msgid "Requirements for BOM upload"
-msgstr ""
-
-#: part/templates/part/bom_upload/upload_file.html:35
-msgid "The BOM file must contain the required named columns as provided in the "
-msgstr ""
-
-#: part/templates/part/bom_upload/upload_file.html:35
-msgid "BOM Upload Template"
-msgstr ""
-
-#: part/templates/part/bom_upload/upload_file.html:36
-msgid "Each part must already exist in the database"
-msgstr ""
-
#: part/templates/part/category.html:28 part/templates/part/category.html:32
msgid "You are subscribed to notifications for this category"
msgstr ""
@@ -4519,7 +4537,7 @@ msgstr ""
msgid "Create new part"
msgstr ""
-#: part/templates/part/category.html:161 templates/js/translated/bom.js:152
+#: part/templates/part/category.html:161 templates/js/translated/bom.js:365
msgid "New Part"
msgstr ""
@@ -4639,138 +4657,168 @@ msgstr ""
msgid "Sales Order Allocations"
msgstr ""
-#: part/templates/part/detail.html:159
+#: part/templates/part/detail.html:162
msgid "Part Variants"
msgstr ""
-#: part/templates/part/detail.html:163
+#: part/templates/part/detail.html:166
msgid "Create new variant"
msgstr ""
-#: part/templates/part/detail.html:164
+#: part/templates/part/detail.html:167
msgid "New Variant"
msgstr ""
-#: part/templates/part/detail.html:191
+#: part/templates/part/detail.html:194
msgid "Add new parameter"
msgstr ""
-#: part/templates/part/detail.html:228 part/templates/part/part_sidebar.html:49
+#: part/templates/part/detail.html:231 part/templates/part/part_sidebar.html:52
msgid "Related Parts"
msgstr ""
-#: part/templates/part/detail.html:232 part/templates/part/detail.html:233
+#: part/templates/part/detail.html:235 part/templates/part/detail.html:236
msgid "Add Related"
msgstr ""
-#: part/templates/part/detail.html:253 part/templates/part/part_sidebar.html:17
+#: part/templates/part/detail.html:256 part/templates/part/part_sidebar.html:18
msgid "Bill of Materials"
msgstr ""
-#: part/templates/part/detail.html:258
+#: part/templates/part/detail.html:261
msgid "Export actions"
msgstr ""
-#: part/templates/part/detail.html:262 templates/js/translated/bom.js:70
+#: part/templates/part/detail.html:265 templates/js/translated/bom.js:283
msgid "Export BOM"
msgstr ""
-#: part/templates/part/detail.html:264
+#: part/templates/part/detail.html:267
msgid "Print BOM Report"
msgstr ""
-#: part/templates/part/detail.html:274
+#: part/templates/part/detail.html:277
msgid "Upload BOM"
msgstr ""
-#: part/templates/part/detail.html:276 templates/js/translated/part.js:272
+#: part/templates/part/detail.html:279 templates/js/translated/part.js:272
msgid "Copy BOM"
msgstr ""
-#: part/templates/part/detail.html:278
+#: part/templates/part/detail.html:281
msgid "Validate BOM"
msgstr ""
-#: part/templates/part/detail.html:283
+#: part/templates/part/detail.html:286
msgid "New BOM Item"
msgstr ""
-#: part/templates/part/detail.html:284
+#: part/templates/part/detail.html:287
msgid "Add BOM Item"
msgstr ""
-#: part/templates/part/detail.html:297
+#: part/templates/part/detail.html:300
msgid "Assemblies"
msgstr ""
-#: part/templates/part/detail.html:314
+#: part/templates/part/detail.html:317
msgid "Part Builds"
msgstr ""
-#: part/templates/part/detail.html:339
+#: part/templates/part/detail.html:342
msgid "Build Order Allocations"
msgstr ""
-#: part/templates/part/detail.html:349
+#: part/templates/part/detail.html:352
msgid "Part Suppliers"
msgstr ""
-#: part/templates/part/detail.html:377
+#: part/templates/part/detail.html:380
msgid "Part Manufacturers"
msgstr ""
-#: part/templates/part/detail.html:393
+#: part/templates/part/detail.html:396
msgid "Delete manufacturer parts"
msgstr ""
-#: part/templates/part/detail.html:575
+#: part/templates/part/detail.html:578
msgid "Delete selected BOM items?"
msgstr ""
-#: part/templates/part/detail.html:576
+#: part/templates/part/detail.html:579
msgid "All selected BOM items will be deleted"
msgstr ""
-#: part/templates/part/detail.html:625
+#: part/templates/part/detail.html:628
msgid "Create BOM Item"
msgstr ""
-#: part/templates/part/detail.html:682
+#: part/templates/part/detail.html:685
msgid "Related Part"
msgstr ""
-#: part/templates/part/detail.html:690
+#: part/templates/part/detail.html:693
msgid "Add Related Part"
msgstr ""
-#: part/templates/part/detail.html:785
+#: part/templates/part/detail.html:788
msgid "Add Test Result Template"
msgstr ""
-#: part/templates/part/detail.html:842
+#: part/templates/part/detail.html:845
msgid "Edit Part Notes"
msgstr ""
-#: part/templates/part/detail.html:955
+#: part/templates/part/detail.html:958
#, python-format
msgid "Purchase Unit Price - %(currency)s"
msgstr ""
-#: part/templates/part/detail.html:967
+#: part/templates/part/detail.html:970
#, python-format
msgid "Unit Price-Cost Difference - %(currency)s"
msgstr ""
-#: part/templates/part/detail.html:979
+#: part/templates/part/detail.html:982
#, python-format
msgid "Supplier Unit Cost - %(currency)s"
msgstr ""
-#: part/templates/part/detail.html:1068
+#: part/templates/part/detail.html:1071
#, python-format
msgid "Unit Price - %(currency)s"
msgstr ""
+#: part/templates/part/import_wizard/ajax_match_fields.html:9
+#: part/templates/part/import_wizard/match_fields.html:9
+#: templates/patterns/wizard/match_fields.html:8
+msgid "Missing selections for the following required columns"
+msgstr ""
+
+#: part/templates/part/import_wizard/ajax_match_fields.html:20
+#: part/templates/part/import_wizard/match_fields.html:20
+#: templates/patterns/wizard/match_fields.html:19
+msgid "Duplicate selections found, see below. Fix them then retry submitting."
+msgstr ""
+
+#: part/templates/part/import_wizard/ajax_match_fields.html:28
+#: part/templates/part/import_wizard/match_fields.html:35
+#: templates/patterns/wizard/match_fields.html:34
+msgid "File Fields"
+msgstr ""
+
+#: part/templates/part/import_wizard/ajax_match_fields.html:35
+#: part/templates/part/import_wizard/match_fields.html:42
+#: templates/patterns/wizard/match_fields.html:41
+msgid "Remove column"
+msgstr ""
+
+#: part/templates/part/import_wizard/ajax_match_fields.html:53
+#: part/templates/part/import_wizard/match_fields.html:60
+#: templates/patterns/wizard/match_fields.html:59
+msgid "Duplicate selection"
+msgstr ""
+
#: part/templates/part/import_wizard/ajax_part_upload.html:29
#: part/templates/part/import_wizard/part_upload.html:53
msgid "Unsuffitient privileges."
@@ -4819,7 +4867,7 @@ msgid "Show pricing information"
msgstr ""
#: part/templates/part/part_base.html:56
-#: stock/templates/stock/item_base.html:110
+#: stock/templates/stock/item_base.html:112
#: stock/templates/stock/location.html:44
msgid "Stock actions"
msgstr ""
@@ -4912,7 +4960,7 @@ msgstr ""
msgid "Allocated to Orders"
msgstr ""
-#: part/templates/part/part_base.html:239 templates/js/translated/bom.js:690
+#: part/templates/part/part_base.html:239 templates/js/translated/bom.js:903
msgid "Can Build"
msgstr ""
@@ -4930,7 +4978,7 @@ msgid "Latest Serial Number"
msgstr ""
#: part/templates/part/part_base.html:328
-#: stock/templates/stock/item_base.html:166
+#: stock/templates/stock/item_base.html:168
msgid "Search for serial number"
msgstr ""
@@ -4969,7 +5017,7 @@ msgid "Total Cost"
msgstr ""
#: part/templates/part/part_pricing.html:40 part/templates/part/prices.html:40
-#: templates/js/translated/bom.js:644
+#: templates/js/translated/bom.js:857
msgid "No supplier pricing available"
msgstr ""
@@ -5003,20 +5051,20 @@ msgstr ""
msgid "No pricing information is available for this part."
msgstr ""
-#: part/templates/part/part_sidebar.html:11
+#: part/templates/part/part_sidebar.html:12
msgid "Variants"
msgstr ""
-#: part/templates/part/part_sidebar.html:25
+#: part/templates/part/part_sidebar.html:26
msgid "Used In"
msgstr ""
-#: part/templates/part/part_sidebar.html:31
+#: part/templates/part/part_sidebar.html:34
#: stock/templates/stock/stock_sidebar.html:8
msgid "Allocations"
msgstr ""
-#: part/templates/part/part_sidebar.html:45
+#: part/templates/part/part_sidebar.html:48
msgid "Test Templates"
msgstr ""
@@ -5089,7 +5137,7 @@ msgstr ""
msgid "Calculation parameters"
msgstr ""
-#: part/templates/part/prices.html:155 templates/js/translated/bom.js:638
+#: part/templates/part/prices.html:155 templates/js/translated/bom.js:851
msgid "Supplier Cost"
msgstr ""
@@ -5111,7 +5159,7 @@ msgstr ""
msgid "Internal Cost"
msgstr ""
-#: part/templates/part/prices.html:215 part/views.py:1699
+#: part/templates/part/prices.html:215 part/views.py:1390
msgid "Add Internal Price Break"
msgstr ""
@@ -5131,7 +5179,7 @@ msgstr ""
msgid "Set category for the following parts"
msgstr ""
-#: part/templates/part/stock_count.html:7 templates/js/translated/bom.js:600
+#: part/templates/part/stock_count.html:7 templates/js/translated/bom.js:813
#: templates/js/translated/part.js:497 templates/js/translated/part.js:1122
#: templates/js/translated/part.js:1309
msgid "No Stock"
@@ -5141,6 +5189,43 @@ msgstr ""
msgid "Low Stock"
msgstr ""
+#: part/templates/part/upload_bom.html:8
+msgid "Return to BOM"
+msgstr ""
+
+#: part/templates/part/upload_bom.html:13
+msgid "Upload Bill of Materials"
+msgstr ""
+
+#: part/templates/part/upload_bom.html:19
+msgid "BOM upload requirements"
+msgstr ""
+
+#: part/templates/part/upload_bom.html:23
+#: part/templates/part/upload_bom.html:90
+msgid "Upload BOM File"
+msgstr ""
+
+#: part/templates/part/upload_bom.html:29
+msgid "Submit BOM Data"
+msgstr ""
+
+#: part/templates/part/upload_bom.html:37
+msgid "Requirements for BOM upload"
+msgstr ""
+
+#: part/templates/part/upload_bom.html:39
+msgid "The BOM file must contain the required named columns as provided in the "
+msgstr ""
+
+#: part/templates/part/upload_bom.html:39
+msgid "BOM Upload Template"
+msgstr ""
+
+#: part/templates/part/upload_bom.html:40
+msgid "Each part must already exist in the database"
+msgstr ""
+
#: part/templates/part/variant_part.html:9
msgid "Create new part variant"
msgstr ""
@@ -5154,104 +5239,96 @@ msgstr ""
msgid "Unknown database"
msgstr ""
-#: part/views.py:93
+#: part/views.py:90
msgid "Set Part Category"
msgstr ""
-#: part/views.py:143
+#: part/views.py:140
#, python-brace-format
msgid "Set category for {n} parts"
msgstr ""
-#: part/views.py:215
+#: part/views.py:212
msgid "Match References"
msgstr ""
-#: part/views.py:511
+#: part/views.py:509
msgid "None"
msgstr ""
-#: part/views.py:570
+#: part/views.py:568
msgid "Part QR Code"
msgstr ""
-#: part/views.py:672
+#: part/views.py:670
msgid "Select Part Image"
msgstr ""
-#: part/views.py:698
+#: part/views.py:696
msgid "Updated part image"
msgstr ""
-#: part/views.py:701
+#: part/views.py:699
msgid "Part image not found"
msgstr ""
-#: part/views.py:775
-msgid "Match Parts"
-msgstr ""
-
-#: part/views.py:1110
-msgid "Export Bill of Materials"
-msgstr ""
-
-#: part/views.py:1159
+#: part/views.py:850
msgid "Confirm Part Deletion"
msgstr ""
-#: part/views.py:1166
+#: part/views.py:857
msgid "Part was deleted"
msgstr ""
-#: part/views.py:1175
+#: part/views.py:866
msgid "Part Pricing"
msgstr ""
-#: part/views.py:1324
+#: part/views.py:1015
msgid "Create Part Parameter Template"
msgstr ""
-#: part/views.py:1334
+#: part/views.py:1025
msgid "Edit Part Parameter Template"
msgstr ""
-#: part/views.py:1341
+#: part/views.py:1032
msgid "Delete Part Parameter Template"
msgstr ""
-#: part/views.py:1400 templates/js/translated/part.js:315
+#: part/views.py:1091 templates/js/translated/part.js:315
msgid "Edit Part Category"
msgstr ""
-#: part/views.py:1438
+#: part/views.py:1129
msgid "Delete Part Category"
msgstr ""
-#: part/views.py:1444
+#: part/views.py:1135
msgid "Part category was deleted"
msgstr ""
-#: part/views.py:1453
+#: part/views.py:1144
msgid "Create Category Parameter Template"
msgstr ""
-#: part/views.py:1554
+#: part/views.py:1245
msgid "Edit Category Parameter Template"
msgstr ""
-#: part/views.py:1610
+#: part/views.py:1301
msgid "Delete Category Parameter Template"
msgstr ""
-#: part/views.py:1632
+#: part/views.py:1323
msgid "Added new price break"
msgstr ""
-#: part/views.py:1708
+#: part/views.py:1399
msgid "Edit Internal Price Break"
msgstr ""
-#: part/views.py:1716
+#: part/views.py:1407
msgid "Delete Internal Price Break"
msgstr ""
@@ -5453,12 +5530,12 @@ msgid "Stock Item Test Report"
msgstr ""
#: report/templates/report/inventree_test_report_base.html:79
-#: stock/models.py:519 stock/templates/stock/item_base.html:156
-#: templates/js/translated/build.js:293 templates/js/translated/build.js:697
-#: templates/js/translated/build.js:1073
+#: stock/models.py:519 stock/templates/stock/item_base.html:158
+#: templates/js/translated/build.js:373 templates/js/translated/build.js:521
+#: templates/js/translated/build.js:919 templates/js/translated/build.js:1295
#: 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:423
+#: templates/js/translated/order.js:2034 templates/js/translated/stock.js:424
msgid "Serial Number"
msgstr ""
@@ -5479,7 +5556,7 @@ msgstr ""
#: report/templates/report/inventree_test_report_base.html:97
#: templates/InvenTree/settings/plugin.html:50
#: templates/InvenTree/settings/plugin_settings.html:38
-#: templates/js/translated/order.js:849 templates/js/translated/stock.js:2525
+#: templates/js/translated/order.js:849 templates/js/translated/stock.js:2649
msgid "Date"
msgstr ""
@@ -5497,71 +5574,67 @@ msgid "Installed Items"
msgstr ""
#: report/templates/report/inventree_test_report_base.html:137
-#: templates/js/translated/stock.js:586 templates/js/translated/stock.js:756
-#: templates/js/translated/stock.js:2785
+#: templates/js/translated/stock.js:587 templates/js/translated/stock.js:757
+#: templates/js/translated/stock.js:2909
msgid "Serial"
msgstr ""
-#: stock/api.py:476
+#: stock/api.py:501
msgid "Quantity is required"
msgstr ""
-#: stock/api.py:483
+#: stock/api.py:508
msgid "Valid part must be supplied"
msgstr ""
-#: stock/forms.py:77 stock/forms.py:251 stock/models.py:576
-#: stock/templates/stock/item_base.html:193
-#: templates/js/translated/stock.js:1709
+#: stock/api.py:535
+msgid "Serial numbers cannot be supplied for a non-trackable part"
+msgstr ""
+
+#: stock/forms.py:74 stock/forms.py:198 stock/models.py:576
+#: stock/templates/stock/item_base.html:195
+#: templates/js/translated/stock.js:1833
msgid "Expiry Date"
msgstr ""
-#: stock/forms.py:78 stock/forms.py:252
+#: stock/forms.py:75 stock/forms.py:199
msgid "Expiration date for this stock item"
msgstr ""
-#: stock/forms.py:81
+#: stock/forms.py:78
msgid "Enter unique serial numbers (or leave blank)"
msgstr ""
-#: stock/forms.py:136
+#: stock/forms.py:133
msgid "Destination for serialized stock (by default, will remain in current location)"
msgstr ""
-#: stock/forms.py:138
+#: stock/forms.py:135
msgid "Serial numbers"
msgstr ""
-#: stock/forms.py:138
+#: stock/forms.py:135
msgid "Unique serial numbers (must match quantity)"
msgstr ""
-#: stock/forms.py:140 stock/forms.py:224
+#: stock/forms.py:137 stock/forms.py:171
msgid "Add transaction note (optional)"
msgstr ""
-#: stock/forms.py:180
-msgid "Stock item to install"
-msgstr ""
-
-#: stock/forms.py:210
-msgid "Must not exceed available quantity"
-msgstr ""
-
-#: stock/forms.py:222
+#: stock/forms.py:169
msgid "Destination location for uninstalled items"
msgstr ""
-#: stock/forms.py:226
+#: stock/forms.py:173
msgid "Confirm uninstall"
msgstr ""
-#: stock/forms.py:226
+#: stock/forms.py:173
msgid "Confirm removal of installed stock items"
msgstr ""
#: stock/models.py:62 stock/models.py:613
-#: stock/templates/stock/item_base.html:416
+#: stock/templates/stock/item_base.html:418
msgid "Owner"
msgstr ""
@@ -5623,7 +5696,7 @@ msgstr ""
msgid "Packaging this stock item is stored in"
msgstr ""
-#: stock/models.py:502 stock/templates/stock/item_base.html:298
+#: stock/models.py:502 stock/templates/stock/item_base.html:300
msgid "Installed In"
msgstr ""
@@ -5733,7 +5806,7 @@ msgstr ""
msgid "Serialized stock cannot be merged"
msgstr ""
-#: stock/models.py:1214 stock/serializers.py:775
+#: stock/models.py:1214 stock/serializers.py:832
msgid "Duplicate stock items"
msgstr ""
@@ -5769,7 +5842,7 @@ msgstr ""
msgid "Test name"
msgstr ""
-#: stock/models.py:1983 templates/js/translated/table_filters.js:271
+#: stock/models.py:1983
msgid "Test result"
msgstr ""
@@ -5806,7 +5879,7 @@ msgstr ""
msgid "Enter serial numbers for new items"
msgstr ""
-#: stock/serializers.py:326 stock/serializers.py:732 stock/serializers.py:973
+#: stock/serializers.py:326 stock/serializers.py:789 stock/serializers.py:1030
msgid "Destination stock location"
msgstr ""
@@ -5818,63 +5891,79 @@ msgstr ""
msgid "Serial numbers cannot be assigned to this part"
msgstr ""
-#: stock/serializers.py:589
+#: stock/serializers.py:363 stock/views.py:1108
+msgid "Serial numbers already exist"
+msgstr ""
+
+#: stock/serializers.py:405
+msgid "Select stock item to install"
+msgstr ""
+
+#: stock/serializers.py:421
+msgid "Stock item is unavailable"
+msgstr ""
+
+#: stock/serializers.py:428
+msgid "Selected part is not in the Bill of Materials"
+msgstr ""
+
+#: stock/serializers.py:646
msgid "Part must be salable"
msgstr ""
-#: stock/serializers.py:593
+#: stock/serializers.py:650
msgid "Item is allocated to a sales order"
msgstr ""
-#: stock/serializers.py:597
+#: stock/serializers.py:654
msgid "Item is allocated to a build order"
msgstr ""
-#: stock/serializers.py:627
+#: stock/serializers.py:684
msgid "Customer to assign stock items"
msgstr ""
-#: stock/serializers.py:633
+#: stock/serializers.py:690
msgid "Selected company is not a customer"
msgstr ""
-#: stock/serializers.py:641
+#: stock/serializers.py:698
msgid "Stock assignment notes"
msgstr ""
-#: stock/serializers.py:651 stock/serializers.py:881
+#: stock/serializers.py:708 stock/serializers.py:938
msgid "A list of stock items must be provided"
msgstr ""
-#: stock/serializers.py:739
+#: stock/serializers.py:796
msgid "Stock merging notes"
msgstr ""
-#: stock/serializers.py:744
+#: stock/serializers.py:801
msgid "Allow mismatched suppliers"
msgstr ""
-#: stock/serializers.py:745
+#: stock/serializers.py:802
msgid "Allow stock items with different supplier parts to be merged"
msgstr ""
-#: stock/serializers.py:750
+#: stock/serializers.py:807
msgid "Allow mismatched status"
msgstr ""
-#: stock/serializers.py:751
+#: stock/serializers.py:808
msgid "Allow stock items with different status codes to be merged"
msgstr ""
-#: stock/serializers.py:761
+#: stock/serializers.py:818
msgid "At least two stock items must be provided"
msgstr ""
-#: stock/serializers.py:843
+#: stock/serializers.py:900
msgid "StockItem primary key value"
msgstr ""
-#: stock/serializers.py:871
+#: stock/serializers.py:928
msgid "Stock transaction notes"
msgstr ""
@@ -5919,22 +6008,14 @@ msgstr ""
msgid "Installed Stock Items"
msgstr ""
-#: stock/templates/stock/item.html:154 stock/views.py:482
+#: stock/templates/stock/item.html:154 templates/js/translated/stock.js:3018
msgid "Install Stock Item"
msgstr ""
-#: stock/templates/stock/item.html:309 stock/templates/stock/item.html:334
+#: stock/templates/stock/item.html:304 templates/js/translated/stock.js:1480
msgid "Add Test Result"
msgstr ""
-#: stock/templates/stock/item.html:354
-msgid "Edit Test Result"
-msgstr ""
-
-#: stock/templates/stock/item.html:368
-msgid "Delete Test Result"
-msgstr ""
-
#: stock/templates/stock/item_base.html:42
#: templates/js/translated/barcode.js:330
#: templates/js/translated/barcode.js:335
@@ -5995,129 +6076,129 @@ msgstr ""
msgid "Uninstall"
msgstr ""
-#: stock/templates/stock/item_base.html:101
+#: stock/templates/stock/item_base.html:102
msgid "Install stock item"
msgstr ""
-#: stock/templates/stock/item_base.html:101
+#: stock/templates/stock/item_base.html:102
msgid "Install"
msgstr ""
-#: stock/templates/stock/item_base.html:115
+#: stock/templates/stock/item_base.html:117
msgid "Convert to variant"
msgstr ""
-#: stock/templates/stock/item_base.html:118
+#: stock/templates/stock/item_base.html:120
msgid "Duplicate stock item"
msgstr ""
-#: stock/templates/stock/item_base.html:120
+#: stock/templates/stock/item_base.html:122
msgid "Edit stock item"
msgstr ""
-#: stock/templates/stock/item_base.html:123
+#: stock/templates/stock/item_base.html:125
msgid "Delete stock item"
msgstr ""
-#: stock/templates/stock/item_base.html:161
+#: stock/templates/stock/item_base.html:163
msgid "previous page"
msgstr ""
-#: stock/templates/stock/item_base.html:161
+#: stock/templates/stock/item_base.html:163
msgid "Navigate to previous serial number"
msgstr ""
-#: stock/templates/stock/item_base.html:170
+#: stock/templates/stock/item_base.html:172
msgid "next page"
msgstr ""
-#: stock/templates/stock/item_base.html:170
+#: stock/templates/stock/item_base.html:172
msgid "Navigate to next serial number"
msgstr ""
-#: stock/templates/stock/item_base.html:197
+#: stock/templates/stock/item_base.html:199
#, python-format
msgid "This StockItem expired on %(item.expiry_date)s"
msgstr ""
-#: stock/templates/stock/item_base.html:197
+#: stock/templates/stock/item_base.html:199
#: templates/js/translated/table_filters.js:252
msgid "Expired"
msgstr ""
-#: stock/templates/stock/item_base.html:199
+#: stock/templates/stock/item_base.html:201
#, python-format
msgid "This StockItem expires on %(item.expiry_date)s"
msgstr ""
-#: stock/templates/stock/item_base.html:199
+#: stock/templates/stock/item_base.html:201
#: templates/js/translated/table_filters.js:258
msgid "Stale"
msgstr ""
-#: stock/templates/stock/item_base.html:206
-#: templates/js/translated/stock.js:1722
+#: stock/templates/stock/item_base.html:208
+#: templates/js/translated/stock.js:1846
msgid "Last Updated"
msgstr ""
-#: stock/templates/stock/item_base.html:211
+#: stock/templates/stock/item_base.html:213
msgid "Last Stocktake"
msgstr ""
-#: stock/templates/stock/item_base.html:215
+#: stock/templates/stock/item_base.html:217
msgid "No stocktake performed"
msgstr ""
-#: stock/templates/stock/item_base.html:233
+#: stock/templates/stock/item_base.html:235
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:240
+#: stock/templates/stock/item_base.html:242
msgid "This stock item is in production and cannot be edited."
msgstr ""
-#: stock/templates/stock/item_base.html:241
+#: stock/templates/stock/item_base.html:243
msgid "Edit the stock item from the build view."
msgstr ""
-#: stock/templates/stock/item_base.html:254
+#: stock/templates/stock/item_base.html:256
msgid "This stock item has not passed all required tests"
msgstr ""
-#: stock/templates/stock/item_base.html:262
+#: stock/templates/stock/item_base.html:264
msgid "This stock item is allocated to Sales Order"
msgstr ""
-#: stock/templates/stock/item_base.html:270
+#: stock/templates/stock/item_base.html:272
msgid "This stock item is allocated to Build Order"
msgstr ""
-#: stock/templates/stock/item_base.html:276
+#: stock/templates/stock/item_base.html:278
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:317
-#: templates/js/translated/build.js:1095
+#: stock/templates/stock/item_base.html:319
+#: templates/js/translated/build.js:1317
msgid "No location set"
msgstr ""
-#: stock/templates/stock/item_base.html:324
+#: stock/templates/stock/item_base.html:326
msgid "Barcode Identifier"
msgstr ""
-#: stock/templates/stock/item_base.html:366
+#: stock/templates/stock/item_base.html:368
msgid "Parent Item"
msgstr ""
-#: stock/templates/stock/item_base.html:384
+#: stock/templates/stock/item_base.html:386
msgid "No manufacturer set"
msgstr ""
-#: stock/templates/stock/item_base.html:409
+#: stock/templates/stock/item_base.html:411
msgid "Tests"
msgstr ""
-#: stock/templates/stock/item_base.html:499
+#: stock/templates/stock/item_base.html:492
msgid "Edit Stock Status"
msgstr ""
@@ -6130,39 +6211,6 @@ msgstr ""
msgid "This will remove %(qty)s units of %(full_name)s from stock."
msgstr ""
-#: stock/templates/stock/item_install.html:8
-msgid "Install another Stock Item into this item."
-msgstr ""
-
-#: stock/templates/stock/item_install.html:11
-#: stock/templates/stock/item_install.html:24
-msgid "Stock items can only be installed if they meet the following criteria"
-msgstr ""
-
-#: stock/templates/stock/item_install.html:14
-msgid "The Stock Item links to a Part which is in the BOM for this Stock Item"
-msgstr ""
-
-#: stock/templates/stock/item_install.html:15
-msgid "The Stock Item is currently in stock"
-msgstr ""
-
-#: stock/templates/stock/item_install.html:16
-msgid "The Stock Item is serialized and does not belong to another item"
-msgstr ""
-
-#: stock/templates/stock/item_install.html:21
-msgid "Install this Stock Item in another stock item."
-msgstr ""
-
-#: stock/templates/stock/item_install.html:27
-msgid "The part associated to this Stock Item belongs to another part's BOM"
-msgstr ""
-
-#: stock/templates/stock/item_install.html:28
-msgid "This Stock Item is serialized and does not belong to another item"
-msgstr ""
-
#: stock/templates/stock/item_serialize.html:5
msgid "Create serialized items from this stock item."
msgstr ""
@@ -6247,7 +6295,7 @@ msgstr ""
msgid "The following stock items will be uninstalled"
msgstr ""
-#: stock/templates/stock/stockitem_convert.html:7 stock/views.py:879
+#: stock/templates/stock/stockitem_convert.html:7 stock/views.py:730
msgid "Convert Stock Item"
msgstr ""
@@ -6268,11 +6316,11 @@ msgstr ""
msgid "Are you sure you want to delete this stock tracking entry?"
msgstr ""
-#: stock/views.py:162 templates/js/translated/stock.js:139
+#: stock/views.py:162 templates/js/translated/stock.js:140
msgid "Edit Stock Location"
msgstr ""
-#: stock/views.py:269 stock/views.py:858 stock/views.py:984 stock/views.py:1266
+#: stock/views.py:269 stock/views.py:709 stock/views.py:835 stock/views.py:1117
msgid "Owner is required (ownership control is enabled)"
msgstr ""
@@ -6300,59 +6348,63 @@ msgstr ""
msgid "Confirm test data deletion"
msgstr ""
+#: stock/views.py:352
+msgid "Check the confirmation box"
+msgstr ""
+
#: stock/views.py:456
msgid "Stock Item QR Code"
msgstr ""
-#: stock/views.py:630
+#: stock/views.py:481
msgid "Uninstall Stock Items"
msgstr ""
-#: stock/views.py:727 templates/js/translated/stock.js:1074
+#: stock/views.py:578 templates/js/translated/stock.js:1075
msgid "Confirm stock adjustment"
msgstr ""
-#: stock/views.py:738
+#: stock/views.py:589
msgid "Uninstalled stock items"
msgstr ""
-#: stock/views.py:760 templates/js/translated/stock.js:332
+#: stock/views.py:611 templates/js/translated/stock.js:333
msgid "Edit Stock Item"
msgstr ""
-#: stock/views.py:910
+#: stock/views.py:761
msgid "Create new Stock Location"
msgstr ""
-#: stock/views.py:1011
+#: stock/views.py:862
msgid "Create new Stock Item"
msgstr ""
-#: stock/views.py:1153 templates/js/translated/stock.js:312
+#: stock/views.py:1004 templates/js/translated/stock.js:313
msgid "Duplicate Stock Item"
msgstr ""
-#: stock/views.py:1235
+#: stock/views.py:1086
msgid "Quantity cannot be negative"
msgstr ""
-#: stock/views.py:1335
+#: stock/views.py:1186
msgid "Delete Stock Location"
msgstr ""
-#: stock/views.py:1348
+#: stock/views.py:1199
msgid "Delete Stock Item"
msgstr ""
-#: stock/views.py:1359
+#: stock/views.py:1210
msgid "Delete Stock Tracking Entry"
msgstr ""
-#: stock/views.py:1366
+#: stock/views.py:1217
msgid "Edit Stock Tracking Entry"
msgstr ""
-#: stock/views.py:1375
+#: stock/views.py:1226
msgid "Add Stock Tracking Entry"
msgstr ""
@@ -6527,15 +6579,15 @@ msgstr ""
msgid "Part Settings"
msgstr ""
-#: templates/InvenTree/settings/part.html:43
+#: templates/InvenTree/settings/part.html:44
msgid "Part Import"
msgstr ""
-#: templates/InvenTree/settings/part.html:47
+#: templates/InvenTree/settings/part.html:48
msgid "Import Part"
msgstr ""
-#: templates/InvenTree/settings/part.html:61
+#: templates/InvenTree/settings/part.html:62
msgid "Part Parameter Templates"
msgstr ""
@@ -6663,45 +6715,45 @@ msgstr ""
msgid "Report Settings"
msgstr ""
-#: templates/InvenTree/settings/setting.html:30
+#: templates/InvenTree/settings/setting.html:33
msgid "No value set"
msgstr ""
-#: templates/InvenTree/settings/setting.html:41
+#: templates/InvenTree/settings/setting.html:38
msgid "Edit setting"
msgstr ""
-#: templates/InvenTree/settings/settings.html:78
+#: templates/InvenTree/settings/settings.html:115
msgid "Edit Plugin Setting"
msgstr ""
-#: templates/InvenTree/settings/settings.html:80
+#: templates/InvenTree/settings/settings.html:117
msgid "Edit Global Setting"
msgstr ""
-#: templates/InvenTree/settings/settings.html:82
+#: templates/InvenTree/settings/settings.html:119
msgid "Edit User Setting"
msgstr ""
-#: templates/InvenTree/settings/settings.html:171
+#: templates/InvenTree/settings/settings.html:208
msgid "No category parameter templates found"
msgstr ""
-#: templates/InvenTree/settings/settings.html:193
-#: templates/InvenTree/settings/settings.html:292
+#: templates/InvenTree/settings/settings.html:230
+#: templates/InvenTree/settings/settings.html:329
msgid "Edit Template"
msgstr ""
-#: templates/InvenTree/settings/settings.html:194
-#: templates/InvenTree/settings/settings.html:293
+#: templates/InvenTree/settings/settings.html:231
+#: templates/InvenTree/settings/settings.html:330
msgid "Delete Template"
msgstr ""
-#: templates/InvenTree/settings/settings.html:272
+#: templates/InvenTree/settings/settings.html:309
msgid "No part parameter templates found"
msgstr ""
-#: templates/InvenTree/settings/settings.html:276
+#: templates/InvenTree/settings/settings.html:313
msgid "ID"
msgstr ""
@@ -6996,10 +7048,11 @@ msgid "InvenTree Version Information"
msgstr ""
#: templates/about.html:11 templates/about.html:105
-#: templates/js/translated/bom.js:407 templates/js/translated/modals.js:53
-#: templates/js/translated/modals.js:584 templates/js/translated/modals.js:678
-#: templates/js/translated/modals.js:983 templates/modals.html:15
-#: templates/modals.html:27 templates/modals.html:39 templates/modals.html:50
+#: templates/js/translated/bom.js:132 templates/js/translated/bom.js:620
+#: templates/js/translated/modals.js:53 templates/js/translated/modals.js:584
+#: templates/js/translated/modals.js:678 templates/js/translated/modals.js:986
+#: templates/modals.html:15 templates/modals.html:27 templates/modals.html:39
+#: templates/modals.html:50
msgid "Close"
msgstr ""
@@ -7275,14 +7328,14 @@ msgid "The following parts are low on required stock"
msgstr ""
#: templates/email/build_order_required_stock.html:18
-#: templates/js/translated/bom.js:1117
+#: templates/js/translated/bom.js:1335
msgid "Required Quantity"
msgstr ""
#: templates/email/build_order_required_stock.html:19
#: templates/email/low_stock_notification.html:18
-#: templates/js/translated/bom.js:591 templates/js/translated/build.js:1189
-#: templates/js/translated/build.js:1810
+#: templates/js/translated/bom.js:804 templates/js/translated/build.js:1411
+#: templates/js/translated/build.js:2048
#: templates/js/translated/table_filters.js:178
msgid "Available"
msgstr ""
@@ -7325,11 +7378,11 @@ msgstr ""
msgid "Remote image must not exceed maximum allowable file size"
msgstr ""
-#: templates/js/translated/api.js:185 templates/js/translated/modals.js:1053
+#: templates/js/translated/api.js:185 templates/js/translated/modals.js:1056
msgid "No Response"
msgstr ""
-#: templates/js/translated/api.js:186 templates/js/translated/modals.js:1054
+#: templates/js/translated/api.js:186 templates/js/translated/modals.js:1057
msgid "No response from the InvenTree server"
msgstr ""
@@ -7341,27 +7394,27 @@ msgstr ""
msgid "API request returned error code 400"
msgstr ""
-#: templates/js/translated/api.js:197 templates/js/translated/modals.js:1063
+#: templates/js/translated/api.js:197 templates/js/translated/modals.js:1066
msgid "Error 401: Not Authenticated"
msgstr ""
-#: templates/js/translated/api.js:198 templates/js/translated/modals.js:1064
+#: templates/js/translated/api.js:198 templates/js/translated/modals.js:1067
msgid "Authentication credentials not supplied"
msgstr ""
-#: templates/js/translated/api.js:202 templates/js/translated/modals.js:1068
+#: templates/js/translated/api.js:202 templates/js/translated/modals.js:1071
msgid "Error 403: Permission Denied"
msgstr ""
-#: templates/js/translated/api.js:203 templates/js/translated/modals.js:1069
+#: templates/js/translated/api.js:203 templates/js/translated/modals.js:1072
msgid "You do not have the required permissions to access this function"
msgstr ""
-#: templates/js/translated/api.js:207 templates/js/translated/modals.js:1073
+#: templates/js/translated/api.js:207 templates/js/translated/modals.js:1076
msgid "Error 404: Resource Not Found"
msgstr ""
-#: templates/js/translated/api.js:208 templates/js/translated/modals.js:1074
+#: templates/js/translated/api.js:208 templates/js/translated/modals.js:1077
msgid "The requested resource could not be located on the server"
msgstr ""
@@ -7373,11 +7426,11 @@ msgstr ""
msgid "HTTP method not allowed at URL"
msgstr ""
-#: templates/js/translated/api.js:217 templates/js/translated/modals.js:1078
+#: templates/js/translated/api.js:217 templates/js/translated/modals.js:1081
msgid "Error 408: Timeout"
msgstr ""
-#: templates/js/translated/api.js:218 templates/js/translated/modals.js:1079
+#: templates/js/translated/api.js:218 templates/js/translated/modals.js:1082
msgid "Connection timeout while requesting data from server"
msgstr ""
@@ -7446,7 +7499,7 @@ msgid "Unknown response from server"
msgstr ""
#: templates/js/translated/barcode.js:140
-#: templates/js/translated/modals.js:1043
+#: templates/js/translated/modals.js:1046
msgid "Invalid server response"
msgstr ""
@@ -7474,7 +7527,7 @@ msgstr ""
msgid "Unlink"
msgstr ""
-#: templates/js/translated/barcode.js:397 templates/js/translated/stock.js:1026
+#: templates/js/translated/barcode.js:397 templates/js/translated/stock.js:1027
msgid "Remove stock item"
msgstr ""
@@ -7516,327 +7569,369 @@ msgstr ""
msgid "Barcode does not match a valid location"
msgstr ""
-#: templates/js/translated/bom.js:36
+#: templates/js/translated/bom.js:75
+msgid "Display row data"
+msgstr ""
+
+#: templates/js/translated/bom.js:131
+msgid "Row Data"
+msgstr ""
+
+#: templates/js/translated/bom.js:249
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:518
+#: templates/js/translated/bom.js:252 templates/js/translated/bom.js:286
+#: templates/js/translated/order.js:369 templates/js/translated/stock.js:519
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:519
+#: templates/js/translated/bom.js:253 templates/js/translated/bom.js:287
+#: templates/js/translated/order.js:370 templates/js/translated/stock.js:520
msgid "Select file format"
msgstr ""
-#: templates/js/translated/bom.js:81
+#: templates/js/translated/bom.js:294
msgid "Cascading"
msgstr ""
-#: templates/js/translated/bom.js:82
+#: templates/js/translated/bom.js:295
msgid "Download cascading / multi-level BOM"
msgstr ""
-#: templates/js/translated/bom.js:87
+#: templates/js/translated/bom.js:300
msgid "Levels"
msgstr ""
-#: templates/js/translated/bom.js:88
+#: templates/js/translated/bom.js:301
msgid "Select maximum number of BOM levels to export (0 = all levels)"
msgstr ""
-#: templates/js/translated/bom.js:94
+#: templates/js/translated/bom.js:307
msgid "Include Parameter Data"
msgstr ""
-#: templates/js/translated/bom.js:95
+#: templates/js/translated/bom.js:308
msgid "Include part parameter data in exported BOM"
msgstr ""
-#: templates/js/translated/bom.js:100
+#: templates/js/translated/bom.js:313
msgid "Include Stock Data"
msgstr ""
-#: templates/js/translated/bom.js:101
+#: templates/js/translated/bom.js:314
msgid "Include part stock data in exported BOM"
msgstr ""
-#: templates/js/translated/bom.js:106
+#: templates/js/translated/bom.js:319
msgid "Include Manufacturer Data"
msgstr ""
-#: templates/js/translated/bom.js:107
+#: templates/js/translated/bom.js:320
msgid "Include part manufacturer data in exported BOM"
msgstr ""
-#: templates/js/translated/bom.js:112
+#: templates/js/translated/bom.js:325
msgid "Include Supplier Data"
msgstr ""
-#: templates/js/translated/bom.js:113
+#: templates/js/translated/bom.js:326
msgid "Include part supplier data in exported BOM"
msgstr ""
-#: templates/js/translated/bom.js:296
+#: templates/js/translated/bom.js:509
msgid "Remove substitute part"
msgstr ""
-#: templates/js/translated/bom.js:352
+#: templates/js/translated/bom.js:565
msgid "Select and add a new substitute part using the input below"
msgstr ""
-#: templates/js/translated/bom.js:363
+#: templates/js/translated/bom.js:576
msgid "Are you sure you wish to remove this substitute part link?"
msgstr ""
-#: templates/js/translated/bom.js:369
+#: templates/js/translated/bom.js:582
msgid "Remove Substitute Part"
msgstr ""
-#: templates/js/translated/bom.js:408
+#: templates/js/translated/bom.js:621
msgid "Add Substitute"
msgstr ""
-#: templates/js/translated/bom.js:409
+#: templates/js/translated/bom.js:622
msgid "Edit BOM Item Substitutes"
msgstr ""
-#: templates/js/translated/bom.js:528
+#: templates/js/translated/bom.js:741
msgid "Substitutes Available"
msgstr ""
-#: templates/js/translated/bom.js:532 templates/js/translated/build.js:1171
+#: templates/js/translated/bom.js:745 templates/js/translated/build.js:1393
msgid "Variant stock allowed"
msgstr ""
-#: templates/js/translated/bom.js:537
+#: templates/js/translated/bom.js:750
msgid "Open subassembly"
msgstr ""
-#: templates/js/translated/bom.js:609
+#: templates/js/translated/bom.js:822
msgid "Substitutes"
msgstr ""
-#: templates/js/translated/bom.js:624
+#: templates/js/translated/bom.js:837
msgid "Purchase Price Range"
msgstr ""
-#: templates/js/translated/bom.js:631
+#: templates/js/translated/bom.js:844
msgid "Purchase Price Average"
msgstr ""
-#: templates/js/translated/bom.js:680 templates/js/translated/bom.js:769
+#: templates/js/translated/bom.js:893 templates/js/translated/bom.js:982
msgid "View BOM"
msgstr ""
-#: templates/js/translated/bom.js:740
+#: templates/js/translated/bom.js:953
msgid "Validate BOM Item"
msgstr ""
-#: templates/js/translated/bom.js:742
+#: templates/js/translated/bom.js:955
msgid "This line has been validated"
msgstr ""
-#: templates/js/translated/bom.js:744
+#: templates/js/translated/bom.js:957
msgid "Edit substitute parts"
msgstr ""
-#: templates/js/translated/bom.js:746 templates/js/translated/bom.js:920
+#: templates/js/translated/bom.js:959 templates/js/translated/bom.js:1138
msgid "Edit BOM Item"
msgstr ""
-#: templates/js/translated/bom.js:748 templates/js/translated/bom.js:903
+#: templates/js/translated/bom.js:961 templates/js/translated/bom.js:1121
msgid "Delete BOM Item"
msgstr ""
-#: templates/js/translated/bom.js:842 templates/js/translated/build.js:915
+#: templates/js/translated/bom.js:1060 templates/js/translated/build.js:1137
msgid "No BOM items found"
msgstr ""
-#: templates/js/translated/bom.js:898
+#: templates/js/translated/bom.js:1116
msgid "Are you sure you want to delete this BOM item?"
msgstr ""
-#: templates/js/translated/bom.js:1100 templates/js/translated/build.js:1155
+#: templates/js/translated/bom.js:1318 templates/js/translated/build.js:1377
msgid "Required Part"
msgstr ""
-#: templates/js/translated/bom.js:1122
+#: templates/js/translated/bom.js:1340
msgid "Inherited from parent BOM"
msgstr ""
-#: templates/js/translated/build.js:84
+#: templates/js/translated/build.js:85
msgid "Edit Build Order"
msgstr ""
-#: templates/js/translated/build.js:118
+#: templates/js/translated/build.js:119
msgid "Create Build Order"
msgstr ""
-#: templates/js/translated/build.js:139
+#: templates/js/translated/build.js:140
msgid "Build order is ready to be completed"
msgstr ""
-#: templates/js/translated/build.js:144
+#: templates/js/translated/build.js:145
msgid "Build Order is incomplete"
msgstr ""
-#: templates/js/translated/build.js:172
+#: templates/js/translated/build.js:173
msgid "Complete Build Order"
msgstr ""
-#: templates/js/translated/build.js:193
+#: templates/js/translated/build.js:214 templates/js/translated/stock.js:93
+#: templates/js/translated/stock.js:182
+msgid "Next available serial number"
+msgstr ""
+
+#: templates/js/translated/build.js:216 templates/js/translated/stock.js:95
+#: templates/js/translated/stock.js:184
+msgid "Latest serial number"
+msgstr ""
+
+#: templates/js/translated/build.js:225
+msgid "The Bill of Materials contains trackable parts"
+msgstr ""
+
+#: templates/js/translated/build.js:226
+msgid "Build outputs must be generated individually"
+msgstr ""
+
+#: templates/js/translated/build.js:234
+msgid "Trackable parts can have serial numbers specified"
+msgstr ""
+
+#: templates/js/translated/build.js:235
+msgid "Enter serial numbers to generate multiple single build outputs"
+msgstr ""
+
+#: templates/js/translated/build.js:242
+msgid "Create Build Output"
+msgstr ""
+
+#: templates/js/translated/build.js:273
msgid "Allocate stock items to this build output"
msgstr ""
-#: templates/js/translated/build.js:204
+#: templates/js/translated/build.js:284
msgid "Unallocate stock from build output"
msgstr ""
-#: templates/js/translated/build.js:213
+#: templates/js/translated/build.js:293
msgid "Complete build output"
msgstr ""
-#: templates/js/translated/build.js:221
+#: templates/js/translated/build.js:301
msgid "Delete build output"
msgstr ""
-#: templates/js/translated/build.js:244
+#: templates/js/translated/build.js:324
msgid "Are you sure you wish to unallocate stock items from this build?"
msgstr ""
-#: templates/js/translated/build.js:262
+#: templates/js/translated/build.js:342
msgid "Unallocate Stock Items"
msgstr ""
-#: templates/js/translated/build.js:280
+#: templates/js/translated/build.js:360 templates/js/translated/build.js:508
msgid "Select Build Outputs"
msgstr ""
-#: templates/js/translated/build.js:281
+#: templates/js/translated/build.js:361 templates/js/translated/build.js:509
msgid "At least one build output must be selected"
msgstr ""
-#: templates/js/translated/build.js:335
+#: templates/js/translated/build.js:415 templates/js/translated/build.js:563
msgid "Output"
msgstr ""
-#: templates/js/translated/build.js:351
+#: templates/js/translated/build.js:431
msgid "Complete Build Outputs"
msgstr ""
-#: templates/js/translated/build.js:446
+#: templates/js/translated/build.js:576
+msgid "Delete Build Outputs"
+msgstr ""
+
+#: templates/js/translated/build.js:665
msgid "No build order allocations found"
msgstr ""
-#: templates/js/translated/build.js:484 templates/js/translated/order.js:1848
+#: templates/js/translated/build.js:703 templates/js/translated/order.js:1848
msgid "Location not specified"
msgstr ""
-#: templates/js/translated/build.js:663
+#: templates/js/translated/build.js:885
msgid "No active build outputs found"
msgstr ""
-#: templates/js/translated/build.js:1112 templates/js/translated/build.js:1821
+#: templates/js/translated/build.js:1334 templates/js/translated/build.js:2059
#: templates/js/translated/order.js:1982
msgid "Edit stock allocation"
msgstr ""
-#: templates/js/translated/build.js:1114 templates/js/translated/build.js:1822
+#: templates/js/translated/build.js:1336 templates/js/translated/build.js:2060
#: templates/js/translated/order.js:1983
msgid "Delete stock allocation"
msgstr ""
-#: templates/js/translated/build.js:1132
+#: templates/js/translated/build.js:1354
msgid "Edit Allocation"
msgstr ""
-#: templates/js/translated/build.js:1142
+#: templates/js/translated/build.js:1364
msgid "Remove Allocation"
msgstr ""
-#: templates/js/translated/build.js:1167
+#: templates/js/translated/build.js:1389
msgid "Substitute parts available"
msgstr ""
-#: templates/js/translated/build.js:1184
+#: templates/js/translated/build.js:1406
msgid "Quantity Per"
msgstr ""
-#: templates/js/translated/build.js:1194 templates/js/translated/build.js:1420
-#: templates/js/translated/build.js:1817 templates/js/translated/order.js:2227
+#: templates/js/translated/build.js:1416 templates/js/translated/build.js:1656
+#: templates/js/translated/build.js:2055 templates/js/translated/order.js:2227
msgid "Allocated"
msgstr ""
-#: templates/js/translated/build.js:1250 templates/js/translated/order.js:2307
+#: templates/js/translated/build.js:1472 templates/js/translated/order.js:2307
msgid "Build stock"
msgstr ""
-#: templates/js/translated/build.js:1254 templates/stock_table.html:53
+#: templates/js/translated/build.js:1476 templates/stock_table.html:53
msgid "Order stock"
msgstr ""
-#: templates/js/translated/build.js:1257 templates/js/translated/order.js:2300
+#: templates/js/translated/build.js:1479 templates/js/translated/order.js:2300
msgid "Allocate stock"
msgstr ""
-#: templates/js/translated/build.js:1322 templates/js/translated/order.js:1499
+#: templates/js/translated/build.js:1558 templates/js/translated/order.js:1499
msgid "Specify stock allocation quantity"
msgstr ""
-#: templates/js/translated/build.js:1393 templates/js/translated/label.js:134
+#: templates/js/translated/build.js:1629 templates/js/translated/label.js:134
#: templates/js/translated/order.js:1550 templates/js/translated/report.js:225
msgid "Select Parts"
msgstr ""
-#: templates/js/translated/build.js:1394 templates/js/translated/order.js:1551
+#: templates/js/translated/build.js:1630 templates/js/translated/order.js:1551
msgid "You must select at least one part to allocate"
msgstr ""
-#: templates/js/translated/build.js:1408 templates/js/translated/order.js:1565
+#: templates/js/translated/build.js:1644 templates/js/translated/order.js:1565
msgid "Select source location (leave blank to take from all locations)"
msgstr ""
-#: templates/js/translated/build.js:1437 templates/js/translated/order.js:1600
+#: templates/js/translated/build.js:1673 templates/js/translated/order.js:1600
msgid "Confirm stock allocation"
msgstr ""
-#: templates/js/translated/build.js:1438
+#: templates/js/translated/build.js:1674
msgid "Allocate Stock Items to Build Order"
msgstr ""
-#: templates/js/translated/build.js:1449 templates/js/translated/order.js:1613
+#: templates/js/translated/build.js:1685 templates/js/translated/order.js:1613
msgid "No matching stock locations"
msgstr ""
-#: templates/js/translated/build.js:1519 templates/js/translated/order.js:1690
+#: templates/js/translated/build.js:1757 templates/js/translated/order.js:1690
msgid "No matching stock items"
msgstr ""
-#: templates/js/translated/build.js:1637
+#: templates/js/translated/build.js:1875
msgid "No builds matching query"
msgstr ""
-#: templates/js/translated/build.js:1654 templates/js/translated/part.js:1213
-#: templates/js/translated/part.js:1624 templates/js/translated/stock.js:1520
-#: templates/js/translated/stock.js:2479
+#: templates/js/translated/build.js:1892 templates/js/translated/part.js:1213
+#: templates/js/translated/part.js:1624 templates/js/translated/stock.js:1644
+#: templates/js/translated/stock.js:2603
msgid "Select"
msgstr ""
-#: templates/js/translated/build.js:1674
+#: templates/js/translated/build.js:1912
msgid "Build order is overdue"
msgstr ""
-#: templates/js/translated/build.js:1735 templates/js/translated/stock.js:2698
+#: templates/js/translated/build.js:1973 templates/js/translated/stock.js:2822
msgid "No user information"
msgstr ""
-#: templates/js/translated/build.js:1747
+#: templates/js/translated/build.js:1985
msgid "No information"
msgstr ""
-#: templates/js/translated/build.js:1798
+#: templates/js/translated/build.js:2036
msgid "No parts allocated for"
msgstr ""
@@ -7966,48 +8061,60 @@ msgstr ""
msgid "Create filter"
msgstr ""
-#: templates/js/translated/forms.js:350 templates/js/translated/forms.js:365
-#: templates/js/translated/forms.js:379 templates/js/translated/forms.js:393
+#: templates/js/translated/forms.js:351 templates/js/translated/forms.js:366
+#: templates/js/translated/forms.js:380 templates/js/translated/forms.js:394
msgid "Action Prohibited"
msgstr ""
-#: templates/js/translated/forms.js:352
+#: templates/js/translated/forms.js:353
msgid "Create operation not allowed"
msgstr ""
-#: templates/js/translated/forms.js:367
+#: templates/js/translated/forms.js:368
msgid "Update operation not allowed"
msgstr ""
-#: templates/js/translated/forms.js:381
+#: templates/js/translated/forms.js:382
msgid "Delete operation not allowed"
msgstr ""
-#: templates/js/translated/forms.js:395
+#: templates/js/translated/forms.js:396
msgid "View operation not allowed"
msgstr ""
-#: templates/js/translated/forms.js:680
+#: templates/js/translated/forms.js:681
msgid "Enter a valid number"
msgstr ""
-#: templates/js/translated/forms.js:1082 templates/modals.html:19
+#: templates/js/translated/forms.js:1129 templates/modals.html:19
#: templates/modals.html:43
msgid "Form errors exist"
msgstr ""
-#: templates/js/translated/forms.js:1487
+#: templates/js/translated/forms.js:1558
msgid "No results found"
msgstr ""
-#: templates/js/translated/forms.js:1691
+#: templates/js/translated/forms.js:1768
msgid "Searching"
msgstr ""
-#: templates/js/translated/forms.js:1930
+#: templates/js/translated/forms.js:2013
msgid "Clear input"
msgstr ""
+#: templates/js/translated/forms.js:2479
+msgid "File Column"
+msgstr ""
+
+#: templates/js/translated/forms.js:2479
+msgid "Field Name"
+msgstr ""
+
+#: templates/js/translated/forms.js:2491
+msgid "Select Columns"
+msgstr ""
+
#: templates/js/translated/helpers.js:19
msgid "YES"
msgstr ""
@@ -8017,7 +8124,7 @@ msgid "NO"
msgstr ""
#: templates/js/translated/label.js:29 templates/js/translated/report.js:118
-#: templates/js/translated/stock.js:1050
+#: templates/js/translated/stock.js:1051
msgid "Select Stock Items"
msgstr ""
@@ -8072,7 +8179,7 @@ msgid "Cancel"
msgstr ""
#: templates/js/translated/modals.js:77 templates/js/translated/modals.js:119
-#: templates/js/translated/modals.js:677 templates/js/translated/modals.js:982
+#: templates/js/translated/modals.js:677 templates/js/translated/modals.js:985
#: templates/modals.html:28 templates/modals.html:51
msgid "Submit"
msgstr ""
@@ -8097,31 +8204,31 @@ msgstr ""
msgid "Loading Data"
msgstr ""
-#: templates/js/translated/modals.js:934
+#: templates/js/translated/modals.js:937
msgid "Invalid response from server"
msgstr ""
-#: templates/js/translated/modals.js:934
+#: templates/js/translated/modals.js:937
msgid "Form data missing from server response"
msgstr ""
-#: templates/js/translated/modals.js:946
+#: templates/js/translated/modals.js:949
msgid "Error posting form data"
msgstr ""
-#: templates/js/translated/modals.js:1043
+#: templates/js/translated/modals.js:1046
msgid "JSON response missing form data"
msgstr ""
-#: templates/js/translated/modals.js:1058
+#: templates/js/translated/modals.js:1061
msgid "Error 400: Bad Request"
msgstr ""
-#: templates/js/translated/modals.js:1059
+#: templates/js/translated/modals.js:1062
msgid "Server returned error code 400"
msgstr ""
-#: templates/js/translated/modals.js:1082
+#: templates/js/translated/modals.js:1085
msgid "Error requesting form data"
msgstr ""
@@ -8141,10 +8248,6 @@ msgstr ""
msgid "Build ID"
msgstr ""
-#: templates/js/translated/model_renderers.js:182
-msgid "Part ID"
-msgstr ""
-
#: templates/js/translated/model_renderers.js:249
#: templates/js/translated/model_renderers.js:270
msgid "Order ID"
@@ -8210,7 +8313,7 @@ msgstr ""
msgid "Quantity to receive"
msgstr ""
-#: templates/js/translated/order.js:520 templates/js/translated/stock.js:2131
+#: templates/js/translated/order.js:520 templates/js/translated/stock.js:2255
msgid "Stock Status"
msgstr ""
@@ -8344,7 +8447,7 @@ msgid "Delete Stock Allocation"
msgstr ""
#: templates/js/translated/order.js:1959 templates/js/translated/order.js:2048
-#: templates/js/translated/stock.js:1436
+#: templates/js/translated/stock.js:1560
msgid "Shipped to customer"
msgstr ""
@@ -8545,12 +8648,12 @@ msgid "No category"
msgstr ""
#: templates/js/translated/part.js:1296
-#: templates/js/translated/table_filters.js:430
+#: templates/js/translated/table_filters.js:425
msgid "Low stock"
msgstr ""
#: templates/js/translated/part.js:1387 templates/js/translated/part.js:1559
-#: templates/js/translated/stock.js:2440
+#: templates/js/translated/stock.js:2564
msgid "Display as list"
msgstr ""
@@ -8558,7 +8661,7 @@ msgstr ""
msgid "Display as grid"
msgstr ""
-#: templates/js/translated/part.js:1578 templates/js/translated/stock.js:2459
+#: templates/js/translated/part.js:1578 templates/js/translated/stock.js:2583
msgid "Display as tree"
msgstr ""
@@ -8566,7 +8669,7 @@ msgstr ""
msgid "Subscribed category"
msgstr ""
-#: templates/js/translated/part.js:1656 templates/js/translated/stock.js:2503
+#: templates/js/translated/part.js:1656 templates/js/translated/stock.js:2627
msgid "Path"
msgstr ""
@@ -8574,11 +8677,12 @@ msgstr ""
msgid "No test templates matching query"
msgstr ""
-#: templates/js/translated/part.js:1751 templates/js/translated/stock.js:1242
+#: templates/js/translated/part.js:1751 templates/js/translated/stock.js:1271
msgid "Edit test result"
msgstr ""
-#: templates/js/translated/part.js:1752 templates/js/translated/stock.js:1243
+#: templates/js/translated/part.js:1752 templates/js/translated/stock.js:1272
+#: templates/js/translated/stock.js:1518
msgid "Delete test result"
msgstr ""
@@ -8687,347 +8791,375 @@ msgstr ""
msgid "Sales Order(s) must be selected before printing report"
msgstr ""
-#: templates/js/translated/stock.js:74
+#: templates/js/translated/stock.js:75
msgid "Serialize Stock Item"
msgstr ""
-#: templates/js/translated/stock.js:92 templates/js/translated/stock.js:181
-msgid "Next available serial number"
-msgstr ""
-
-#: templates/js/translated/stock.js:94 templates/js/translated/stock.js:183
-msgid "Latest serial number"
-msgstr ""
-
-#: templates/js/translated/stock.js:102
+#: templates/js/translated/stock.js:103
msgid "Confirm Stock Serialization"
msgstr ""
-#: templates/js/translated/stock.js:111
+#: templates/js/translated/stock.js:112
msgid "Parent stock location"
msgstr ""
-#: templates/js/translated/stock.js:154
+#: templates/js/translated/stock.js:155
msgid "New Stock Location"
msgstr ""
-#: templates/js/translated/stock.js:194
+#: templates/js/translated/stock.js:195
msgid "This part cannot be serialized"
msgstr ""
-#: templates/js/translated/stock.js:233
+#: templates/js/translated/stock.js:234
msgid "Enter initial quantity for this stock item"
msgstr ""
-#: templates/js/translated/stock.js:239
+#: templates/js/translated/stock.js:240
msgid "Enter serial numbers for new stock (or leave blank)"
msgstr ""
-#: templates/js/translated/stock.js:382
+#: templates/js/translated/stock.js:383
msgid "Created new stock item"
msgstr ""
-#: templates/js/translated/stock.js:395
+#: templates/js/translated/stock.js:396
msgid "Created multiple stock items"
msgstr ""
-#: templates/js/translated/stock.js:420
+#: templates/js/translated/stock.js:421
msgid "Find Serial Number"
msgstr ""
-#: templates/js/translated/stock.js:424 templates/js/translated/stock.js:425
+#: templates/js/translated/stock.js:425 templates/js/translated/stock.js:426
msgid "Enter serial number"
msgstr ""
-#: templates/js/translated/stock.js:441
+#: templates/js/translated/stock.js:442
msgid "Enter a serial number"
msgstr ""
-#: templates/js/translated/stock.js:461
+#: templates/js/translated/stock.js:462
msgid "No matching serial number"
msgstr ""
-#: templates/js/translated/stock.js:470
+#: templates/js/translated/stock.js:471
msgid "More than one matching result found"
msgstr ""
-#: templates/js/translated/stock.js:515
+#: templates/js/translated/stock.js:516
msgid "Export Stock"
msgstr ""
-#: templates/js/translated/stock.js:526
+#: templates/js/translated/stock.js:527
msgid "Include Sublocations"
msgstr ""
-#: templates/js/translated/stock.js:527
+#: templates/js/translated/stock.js:528
msgid "Include stock items in sublocations"
msgstr ""
-#: templates/js/translated/stock.js:636
+#: templates/js/translated/stock.js:637
msgid "Confirm stock assignment"
msgstr ""
-#: templates/js/translated/stock.js:637
+#: templates/js/translated/stock.js:638
msgid "Assign Stock to Customer"
msgstr ""
-#: templates/js/translated/stock.js:714
+#: templates/js/translated/stock.js:715
msgid "Warning: Merge operation cannot be reversed"
msgstr ""
-#: templates/js/translated/stock.js:715
+#: templates/js/translated/stock.js:716
msgid "Some information will be lost when merging stock items"
msgstr ""
-#: templates/js/translated/stock.js:717
+#: templates/js/translated/stock.js:718
msgid "Stock transaction history will be deleted for merged items"
msgstr ""
-#: templates/js/translated/stock.js:718
+#: templates/js/translated/stock.js:719
msgid "Supplier part information will be deleted for merged items"
msgstr ""
-#: templates/js/translated/stock.js:804
+#: templates/js/translated/stock.js:805
msgid "Confirm stock item merge"
msgstr ""
-#: templates/js/translated/stock.js:805
+#: templates/js/translated/stock.js:806
msgid "Merge Stock Items"
msgstr ""
-#: templates/js/translated/stock.js:900
+#: templates/js/translated/stock.js:901
msgid "Transfer Stock"
msgstr ""
-#: templates/js/translated/stock.js:901
+#: templates/js/translated/stock.js:902
msgid "Move"
msgstr ""
-#: templates/js/translated/stock.js:907
+#: templates/js/translated/stock.js:908
msgid "Count Stock"
msgstr ""
-#: templates/js/translated/stock.js:908
+#: templates/js/translated/stock.js:909
msgid "Count"
msgstr ""
-#: templates/js/translated/stock.js:912
+#: templates/js/translated/stock.js:913
msgid "Remove Stock"
msgstr ""
-#: templates/js/translated/stock.js:913
+#: templates/js/translated/stock.js:914
msgid "Take"
msgstr ""
-#: templates/js/translated/stock.js:917
+#: templates/js/translated/stock.js:918
msgid "Add Stock"
msgstr ""
-#: templates/js/translated/stock.js:918 users/models.py:208
+#: templates/js/translated/stock.js:919 users/models.py:213
msgid "Add"
msgstr ""
-#: templates/js/translated/stock.js:922 templates/stock_table.html:58
+#: templates/js/translated/stock.js:923 templates/stock_table.html:58
msgid "Delete Stock"
msgstr ""
-#: templates/js/translated/stock.js:1011
+#: templates/js/translated/stock.js:1012
msgid "Quantity cannot be adjusted for serialized stock"
msgstr ""
-#: templates/js/translated/stock.js:1011
+#: templates/js/translated/stock.js:1012
msgid "Specify stock quantity"
msgstr ""
-#: templates/js/translated/stock.js:1051
+#: templates/js/translated/stock.js:1052
msgid "You must select at least one available stock item"
msgstr ""
-#: templates/js/translated/stock.js:1209
+#: templates/js/translated/stock.js:1210
msgid "PASS"
msgstr ""
-#: templates/js/translated/stock.js:1211
+#: templates/js/translated/stock.js:1212
msgid "FAIL"
msgstr ""
-#: templates/js/translated/stock.js:1216
+#: templates/js/translated/stock.js:1217
msgid "NO RESULT"
msgstr ""
-#: templates/js/translated/stock.js:1238
+#: templates/js/translated/stock.js:1264
+msgid "Pass test"
+msgstr ""
+
+#: templates/js/translated/stock.js:1267
msgid "Add test result"
msgstr ""
-#: templates/js/translated/stock.js:1264
+#: templates/js/translated/stock.js:1293
msgid "No test results found"
msgstr ""
-#: templates/js/translated/stock.js:1321
+#: templates/js/translated/stock.js:1349
msgid "Test Date"
msgstr ""
-#: templates/js/translated/stock.js:1428
+#: templates/js/translated/stock.js:1501
+msgid "Edit Test Result"
+msgstr ""
+
+#: templates/js/translated/stock.js:1523
+msgid "Delete Test Result"
+msgstr ""
+
+#: templates/js/translated/stock.js:1552
msgid "In production"
msgstr ""
-#: templates/js/translated/stock.js:1432
+#: templates/js/translated/stock.js:1556
msgid "Installed in Stock Item"
msgstr ""
-#: templates/js/translated/stock.js:1440
+#: templates/js/translated/stock.js:1564
msgid "Assigned to Sales Order"
msgstr ""
-#: templates/js/translated/stock.js:1446
+#: templates/js/translated/stock.js:1570
msgid "No stock location set"
msgstr ""
-#: templates/js/translated/stock.js:1604
+#: templates/js/translated/stock.js:1728
msgid "Stock item is in production"
msgstr ""
-#: templates/js/translated/stock.js:1609
+#: templates/js/translated/stock.js:1733
msgid "Stock item assigned to sales order"
msgstr ""
-#: templates/js/translated/stock.js:1612
+#: templates/js/translated/stock.js:1736
msgid "Stock item assigned to customer"
msgstr ""
-#: templates/js/translated/stock.js:1616
+#: templates/js/translated/stock.js:1740
msgid "Stock item has expired"
msgstr ""
-#: templates/js/translated/stock.js:1618
+#: templates/js/translated/stock.js:1742
msgid "Stock item will expire soon"
msgstr ""
-#: templates/js/translated/stock.js:1624
+#: templates/js/translated/stock.js:1748
msgid "Serialized stock item has been allocated"
msgstr ""
-#: templates/js/translated/stock.js:1626
+#: templates/js/translated/stock.js:1750
msgid "Stock item has been fully allocated"
msgstr ""
-#: templates/js/translated/stock.js:1628
+#: templates/js/translated/stock.js:1752
msgid "Stock item has been partially allocated"
msgstr ""
-#: templates/js/translated/stock.js:1633
+#: templates/js/translated/stock.js:1757
msgid "Stock item has been installed in another item"
msgstr ""
-#: templates/js/translated/stock.js:1640
+#: templates/js/translated/stock.js:1764
msgid "Stock item has been rejected"
msgstr ""
-#: templates/js/translated/stock.js:1642
+#: templates/js/translated/stock.js:1766
msgid "Stock item is lost"
msgstr ""
-#: templates/js/translated/stock.js:1644
+#: templates/js/translated/stock.js:1768
msgid "Stock item is destroyed"
msgstr ""
-#: templates/js/translated/stock.js:1648
+#: templates/js/translated/stock.js:1772
#: templates/js/translated/table_filters.js:188
msgid "Depleted"
msgstr ""
-#: templates/js/translated/stock.js:1698
+#: templates/js/translated/stock.js:1822
msgid "Stocktake"
msgstr ""
-#: templates/js/translated/stock.js:1771
+#: templates/js/translated/stock.js:1895
msgid "Supplier part not specified"
msgstr ""
-#: templates/js/translated/stock.js:1809
+#: templates/js/translated/stock.js:1933
msgid "No stock items matching query"
msgstr ""
-#: templates/js/translated/stock.js:1830 templates/js/translated/stock.js:1878
+#: templates/js/translated/stock.js:1954 templates/js/translated/stock.js:2002
msgid "items"
msgstr ""
-#: templates/js/translated/stock.js:1918
+#: templates/js/translated/stock.js:2042
msgid "batches"
msgstr ""
-#: templates/js/translated/stock.js:1945
+#: templates/js/translated/stock.js:2069
msgid "locations"
msgstr ""
-#: templates/js/translated/stock.js:1947
+#: templates/js/translated/stock.js:2071
msgid "Undefined location"
msgstr ""
-#: templates/js/translated/stock.js:2146
+#: templates/js/translated/stock.js:2270
msgid "Set Stock Status"
msgstr ""
-#: templates/js/translated/stock.js:2160
+#: templates/js/translated/stock.js:2284
msgid "Select Status Code"
msgstr ""
-#: templates/js/translated/stock.js:2161
+#: templates/js/translated/stock.js:2285
msgid "Status code must be selected"
msgstr ""
-#: templates/js/translated/stock.js:2340
+#: templates/js/translated/stock.js:2464
msgid "Allocated Quantity"
msgstr ""
-#: templates/js/translated/stock.js:2535
+#: templates/js/translated/stock.js:2659
msgid "Invalid date"
msgstr ""
-#: templates/js/translated/stock.js:2557
+#: templates/js/translated/stock.js:2681
msgid "Details"
msgstr ""
-#: templates/js/translated/stock.js:2582
+#: templates/js/translated/stock.js:2706
msgid "Location no longer exists"
msgstr ""
-#: templates/js/translated/stock.js:2601
+#: templates/js/translated/stock.js:2725
msgid "Purchase order no longer exists"
msgstr ""
-#: templates/js/translated/stock.js:2620
+#: templates/js/translated/stock.js:2744
msgid "Customer no longer exists"
msgstr ""
-#: templates/js/translated/stock.js:2638
+#: templates/js/translated/stock.js:2762
msgid "Stock item no longer exists"
msgstr ""
-#: templates/js/translated/stock.js:2661
+#: templates/js/translated/stock.js:2785
msgid "Added"
msgstr ""
-#: templates/js/translated/stock.js:2669
+#: templates/js/translated/stock.js:2793
msgid "Removed"
msgstr ""
-#: templates/js/translated/stock.js:2710
+#: templates/js/translated/stock.js:2834
msgid "Edit tracking entry"
msgstr ""
-#: templates/js/translated/stock.js:2711
+#: templates/js/translated/stock.js:2835
msgid "Delete tracking entry"
msgstr ""
-#: templates/js/translated/stock.js:2762
+#: templates/js/translated/stock.js:2886
msgid "No installed items"
msgstr ""
-#: templates/js/translated/stock.js:2813
+#: templates/js/translated/stock.js:2937
msgid "Uninstall Stock Item"
msgstr ""
+#: templates/js/translated/stock.js:2973
+msgid "Install another stock item into this item"
+msgstr ""
+
+#: templates/js/translated/stock.js:2974
+msgid "Stock items can only be installed if they meet the following criteria"
+msgstr ""
+
+#: templates/js/translated/stock.js:2976
+msgid "The Stock Item links to a Part which is the BOM for this Stock Item"
+msgstr ""
+
+#: templates/js/translated/stock.js:2977
+msgid "The Stock Item is currently available in stock"
+msgstr ""
+
+#: templates/js/translated/stock.js:2978
+msgid "The Stock Item is serialized and does not belong to another item"
+msgstr ""
+
+#: templates/js/translated/stock.js:2991
+msgid "Select part to install"
+msgstr ""
+
#: templates/js/translated/table_filters.js:56
msgid "Trackable Part"
msgstr ""
@@ -9055,12 +9187,12 @@ msgstr ""
#: templates/js/translated/table_filters.js:121
#: templates/js/translated/table_filters.js:122
-#: templates/js/translated/table_filters.js:407
+#: templates/js/translated/table_filters.js:402
msgid "Include subcategories"
msgstr ""
#: templates/js/translated/table_filters.js:126
-#: templates/js/translated/table_filters.js:442
+#: templates/js/translated/table_filters.js:437
msgid "Subscribed"
msgstr ""
@@ -9102,7 +9234,7 @@ msgid "Batch code"
msgstr ""
#: templates/js/translated/table_filters.js:163
-#: templates/js/translated/table_filters.js:379
+#: templates/js/translated/table_filters.js:374
msgid "Active parts"
msgstr ""
@@ -9187,47 +9319,47 @@ msgstr ""
msgid "Show stock which is close to expiring"
msgstr ""
-#: templates/js/translated/table_filters.js:290
+#: templates/js/translated/table_filters.js:285
msgid "Build status"
msgstr ""
-#: templates/js/translated/table_filters.js:303
-#: templates/js/translated/table_filters.js:344
+#: templates/js/translated/table_filters.js:298
+#: templates/js/translated/table_filters.js:339
msgid "Assigned to me"
msgstr ""
-#: templates/js/translated/table_filters.js:320
-#: templates/js/translated/table_filters.js:331
-#: templates/js/translated/table_filters.js:352
+#: templates/js/translated/table_filters.js:315
+#: templates/js/translated/table_filters.js:326
+#: templates/js/translated/table_filters.js:347
msgid "Order status"
msgstr ""
-#: templates/js/translated/table_filters.js:336
-#: templates/js/translated/table_filters.js:357
+#: templates/js/translated/table_filters.js:331
+#: templates/js/translated/table_filters.js:352
msgid "Outstanding"
msgstr ""
-#: templates/js/translated/table_filters.js:408
+#: templates/js/translated/table_filters.js:403
msgid "Include parts in subcategories"
msgstr ""
-#: templates/js/translated/table_filters.js:412
+#: templates/js/translated/table_filters.js:407
msgid "Has IPN"
msgstr ""
-#: templates/js/translated/table_filters.js:413
+#: templates/js/translated/table_filters.js:408
msgid "Part has internal part number"
msgstr ""
-#: templates/js/translated/table_filters.js:418
+#: templates/js/translated/table_filters.js:413
msgid "Show active parts"
msgstr ""
-#: templates/js/translated/table_filters.js:426
+#: templates/js/translated/table_filters.js:421
msgid "Stock available"
msgstr ""
-#: templates/js/translated/table_filters.js:454
+#: templates/js/translated/table_filters.js:449
msgid "Purchasable"
msgstr ""
@@ -9480,35 +9612,35 @@ msgstr ""
msgid "Important dates"
msgstr ""
-#: users/models.py:195
+#: users/models.py:200
msgid "Permission set"
msgstr ""
-#: users/models.py:203
+#: users/models.py:208
msgid "Group"
msgstr ""
-#: users/models.py:206
+#: users/models.py:211
msgid "View"
msgstr ""
-#: users/models.py:206
+#: users/models.py:211
msgid "Permission to view items"
msgstr ""
-#: users/models.py:208
+#: users/models.py:213
msgid "Permission to add items"
msgstr ""
-#: users/models.py:210
+#: users/models.py:215
msgid "Change"
msgstr ""
-#: users/models.py:210
+#: users/models.py:215
msgid "Permissions to edit items"
msgstr ""
-#: users/models.py:212
+#: users/models.py:217
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 b41b4a9389..f96d272fac 100644
--- a/InvenTree/locale/th/LC_MESSAGES/django.po
+++ b/InvenTree/locale/th/LC_MESSAGES/django.po
@@ -3,8 +3,8 @@ msgid ""
msgstr ""
"Project-Id-Version: inventree\n"
"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2022-01-29 00:17+0000\n"
-"PO-Revision-Date: 2022-01-29 01:10\n"
+"POT-Creation-Date: 2022-02-18 20:36+0000\n"
+"PO-Revision-Date: 2022-02-18 20:38\n"
"Last-Translator: \n"
"Language-Team: Thai\n"
"Language: th_TH\n"
@@ -34,9 +34,9 @@ msgstr ""
msgid "Enter date"
msgstr ""
-#: InvenTree/forms.py:126 build/forms.py:48 build/forms.py:69 order/forms.py:24
-#: order/forms.py:35 order/forms.py:46 order/forms.py:57
-#: templates/account/email_confirm.html:20 templates/js/translated/forms.js:595
+#: InvenTree/forms.py:126 order/forms.py:24 order/forms.py:35 order/forms.py:46
+#: order/forms.py:57 templates/account/email_confirm.html:20
+#: templates/js/translated/forms.js:596
msgid "Confirm"
msgstr ""
@@ -86,7 +86,7 @@ msgid "Duplicate serial: {n}"
msgstr ""
#: InvenTree/helpers.py:446 order/models.py:282 order/models.py:425
-#: stock/views.py:1231
+#: stock/views.py:1082
msgid "Invalid quantity provided"
msgstr ""
@@ -119,133 +119,133 @@ msgstr ""
msgid "Number of unique serial number ({s}) must match quantity ({q})"
msgstr ""
-#: InvenTree/models.py:120
+#: InvenTree/models.py:176
msgid "Missing file"
msgstr ""
-#: InvenTree/models.py:121
+#: InvenTree/models.py:177
msgid "Missing external link"
msgstr ""
-#: InvenTree/models.py:132 stock/models.py:1995
+#: InvenTree/models.py:188 stock/models.py:1995
#: templates/js/translated/attachment.js:119
msgid "Attachment"
msgstr ""
-#: InvenTree/models.py:133
+#: InvenTree/models.py:189
msgid "Select file to attach"
msgstr ""
-#: InvenTree/models.py:139 company/models.py:131 company/models.py:348
-#: company/models.py:564 order/models.py:127 part/models.py:830
+#: InvenTree/models.py:195 company/models.py:131 company/models.py:348
+#: company/models.py:564 order/models.py:127 part/models.py:860
#: report/templates/report/inventree_build_order_base.html:165
#: templates/js/translated/company.js:540
#: templates/js/translated/company.js:829 templates/js/translated/part.js:1324
msgid "Link"
msgstr ""
-#: InvenTree/models.py:140 build/models.py:332 part/models.py:831
+#: InvenTree/models.py:196 build/models.py:332 part/models.py:861
#: stock/models.py:529
msgid "Link to external URL"
msgstr ""
-#: InvenTree/models.py:143 templates/js/translated/attachment.js:163
+#: InvenTree/models.py:199 templates/js/translated/attachment.js:163
msgid "Comment"
msgstr ""
-#: InvenTree/models.py:143
+#: InvenTree/models.py:199
msgid "File comment"
msgstr ""
-#: InvenTree/models.py:149 InvenTree/models.py:150 common/models.py:1223
-#: common/models.py:1224 common/models.py:1452 common/models.py:1453
-#: part/models.py:2265 part/models.py:2285
+#: InvenTree/models.py:205 InvenTree/models.py:206 common/models.py:1235
+#: common/models.py:1236 common/models.py:1464 common/models.py:1465
+#: part/models.py:2301 part/models.py:2321
#: report/templates/report/inventree_test_report_base.html:96
-#: templates/js/translated/stock.js:2692
+#: templates/js/translated/stock.js:2816
msgid "User"
msgstr ""
-#: InvenTree/models.py:153
+#: InvenTree/models.py:209
msgid "upload date"
msgstr ""
-#: InvenTree/models.py:176
+#: InvenTree/models.py:232
msgid "Filename must not be empty"
msgstr ""
-#: InvenTree/models.py:199
+#: InvenTree/models.py:255
msgid "Invalid attachment directory"
msgstr ""
-#: InvenTree/models.py:209
+#: InvenTree/models.py:265
#, python-brace-format
msgid "Filename contains illegal character '{c}'"
msgstr ""
-#: InvenTree/models.py:212
+#: InvenTree/models.py:268
msgid "Filename missing extension"
msgstr ""
-#: InvenTree/models.py:219
+#: InvenTree/models.py:275
msgid "Attachment with this filename already exists"
msgstr ""
-#: InvenTree/models.py:226
+#: InvenTree/models.py:282
msgid "Error renaming file"
msgstr ""
-#: InvenTree/models.py:261
+#: InvenTree/models.py:317
msgid "Invalid choice"
msgstr ""
-#: InvenTree/models.py:277 InvenTree/models.py:278 common/models.py:1438
-#: company/models.py:415 label/models.py:112 part/models.py:774
-#: part/models.py:2449 plugin/models.py:40 report/models.py:181
+#: InvenTree/models.py:333 InvenTree/models.py:334 common/models.py:1450
+#: company/models.py:415 label/models.py:112 part/models.py:804
+#: part/models.py:2485 plugin/models.py:40 report/models.py:181
#: templates/InvenTree/settings/mixins/urls.html:13
#: templates/InvenTree/settings/plugin.html:48
#: templates/InvenTree/settings/plugin.html:125
#: templates/InvenTree/settings/plugin_settings.html:23
-#: templates/InvenTree/settings/settings.html:282
+#: templates/InvenTree/settings/settings.html:319
#: templates/js/translated/company.js:641 templates/js/translated/part.js:567
#: templates/js/translated/part.js:706 templates/js/translated/part.js:1631
-#: templates/js/translated/stock.js:2485
+#: templates/js/translated/stock.js:2609
msgid "Name"
msgstr ""
-#: InvenTree/models.py:284 build/models.py:209
+#: InvenTree/models.py:340 build/models.py:209
#: build/templates/build/detail.html:25 company/models.py:354
#: company/models.py:570 company/templates/company/company_base.html:68
#: company/templates/company/manufacturer_part.html:76
#: company/templates/company/supplier_part.html:73 label/models.py:119
-#: order/models.py:125 part/models.py:797 part/templates/part/category.html:74
+#: order/models.py:125 part/models.py:827 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:93
#: templates/InvenTree/settings/plugin_settings.html:33
-#: templates/js/translated/bom.js:339 templates/js/translated/bom.js:552
-#: templates/js/translated/build.js:1682 templates/js/translated/company.js:345
+#: templates/js/translated/bom.js:552 templates/js/translated/bom.js:765
+#: templates/js/translated/build.js:1920 templates/js/translated/company.js:345
#: templates/js/translated/company.js:551
#: templates/js/translated/company.js:840 templates/js/translated/order.js:836
#: templates/js/translated/order.js:1019 templates/js/translated/order.js:1258
#: templates/js/translated/part.js:626 templates/js/translated/part.js:999
#: templates/js/translated/part.js:1084 templates/js/translated/part.js:1254
#: templates/js/translated/part.js:1650 templates/js/translated/part.js:1719
-#: templates/js/translated/stock.js:1577 templates/js/translated/stock.js:2314
-#: templates/js/translated/stock.js:2497 templates/js/translated/stock.js:2542
+#: templates/js/translated/stock.js:1701 templates/js/translated/stock.js:2438
+#: templates/js/translated/stock.js:2621 templates/js/translated/stock.js:2666
msgid "Description"
msgstr ""
-#: InvenTree/models.py:285
+#: InvenTree/models.py:341
msgid "Description (optional)"
msgstr ""
-#: InvenTree/models.py:293
+#: InvenTree/models.py:349
msgid "parent"
msgstr ""
-#: InvenTree/serializers.py:65 part/models.py:2734
+#: InvenTree/serializers.py:65 part/models.py:2803
msgid "Must be a valid number"
msgstr ""
@@ -253,83 +253,127 @@ msgstr ""
msgid "Filename"
msgstr ""
-#: InvenTree/settings.py:661
+#: InvenTree/serializers.py:334
+msgid "Invalid value"
+msgstr ""
+
+#: InvenTree/serializers.py:355
+msgid "Data File"
+msgstr ""
+
+#: InvenTree/serializers.py:356
+msgid "Select data file for upload"
+msgstr ""
+
+#: InvenTree/serializers.py:380
+msgid "Unsupported file type"
+msgstr ""
+
+#: InvenTree/serializers.py:386
+msgid "File is too large"
+msgstr ""
+
+#: InvenTree/serializers.py:407
+msgid "No columns found in file"
+msgstr ""
+
+#: InvenTree/serializers.py:410
+msgid "No data rows found in file"
+msgstr ""
+
+#: InvenTree/serializers.py:533
+msgid "No data rows provided"
+msgstr ""
+
+#: InvenTree/serializers.py:536
+msgid "No data columns supplied"
+msgstr ""
+
+#: InvenTree/serializers.py:623
+msgid "Missing required column"
+msgstr ""
+
+#: InvenTree/serializers.py:632
+msgid "Duplicate column"
+msgstr ""
+
+#: InvenTree/settings.py:655
msgid "German"
msgstr ""
-#: InvenTree/settings.py:662
+#: InvenTree/settings.py:656
msgid "Greek"
msgstr ""
-#: InvenTree/settings.py:663
+#: InvenTree/settings.py:657
msgid "English"
msgstr ""
-#: InvenTree/settings.py:664
+#: InvenTree/settings.py:658
msgid "Spanish"
msgstr ""
-#: InvenTree/settings.py:665
+#: InvenTree/settings.py:659
msgid "Spanish (Mexican)"
msgstr ""
-#: InvenTree/settings.py:666
+#: InvenTree/settings.py:660
msgid "French"
msgstr ""
-#: InvenTree/settings.py:667
+#: InvenTree/settings.py:661
msgid "Hebrew"
msgstr ""
-#: InvenTree/settings.py:668
+#: InvenTree/settings.py:662
msgid "Italian"
msgstr ""
-#: InvenTree/settings.py:669
+#: InvenTree/settings.py:663
msgid "Japanese"
msgstr ""
-#: InvenTree/settings.py:670
+#: InvenTree/settings.py:664
msgid "Korean"
msgstr ""
-#: InvenTree/settings.py:671
+#: InvenTree/settings.py:665
msgid "Dutch"
msgstr ""
-#: InvenTree/settings.py:672
+#: InvenTree/settings.py:666
msgid "Norwegian"
msgstr ""
-#: InvenTree/settings.py:673
+#: InvenTree/settings.py:667
msgid "Polish"
msgstr ""
-#: InvenTree/settings.py:674
+#: InvenTree/settings.py:668
msgid "Portugese"
msgstr ""
-#: InvenTree/settings.py:675
+#: InvenTree/settings.py:669
msgid "Russian"
msgstr ""
-#: InvenTree/settings.py:676
+#: InvenTree/settings.py:670
msgid "Swedish"
msgstr ""
-#: InvenTree/settings.py:677
+#: InvenTree/settings.py:671
msgid "Thai"
msgstr ""
-#: InvenTree/settings.py:678
+#: InvenTree/settings.py:672
msgid "Turkish"
msgstr ""
-#: InvenTree/settings.py:679
+#: InvenTree/settings.py:673
msgid "Vietnamese"
msgstr ""
-#: InvenTree/settings.py:680
+#: InvenTree/settings.py:674
msgid "Chinese"
msgstr ""
@@ -346,7 +390,7 @@ msgid "InvenTree system health checks failed"
msgstr ""
#: InvenTree/status_codes.py:101 InvenTree/status_codes.py:142
-#: InvenTree/status_codes.py:316 templates/js/translated/table_filters.js:313
+#: InvenTree/status_codes.py:316 templates/js/translated/table_filters.js:308
msgid "Pending"
msgstr ""
@@ -456,7 +500,7 @@ msgstr ""
msgid "Split child item"
msgstr ""
-#: InvenTree/status_codes.py:294 templates/js/translated/stock.js:2072
+#: InvenTree/status_codes.py:294 templates/js/translated/stock.js:2196
msgid "Merged stock items"
msgstr ""
@@ -484,40 +528,40 @@ msgstr ""
msgid "Production"
msgstr ""
-#: InvenTree/validators.py:23
+#: InvenTree/validators.py:25
msgid "Not a valid currency code"
msgstr ""
-#: InvenTree/validators.py:51
+#: InvenTree/validators.py:53
msgid "Invalid character in part name"
msgstr ""
-#: InvenTree/validators.py:64
+#: InvenTree/validators.py:66
#, python-brace-format
msgid "IPN must match regex pattern {pat}"
msgstr ""
-#: InvenTree/validators.py:78 InvenTree/validators.py:92
-#: InvenTree/validators.py:106
+#: InvenTree/validators.py:80 InvenTree/validators.py:94
+#: InvenTree/validators.py:108
#, python-brace-format
msgid "Reference must match pattern {pattern}"
msgstr ""
-#: InvenTree/validators.py:114
+#: InvenTree/validators.py:116
#, python-brace-format
msgid "Illegal character in name ({x})"
msgstr ""
-#: InvenTree/validators.py:133 InvenTree/validators.py:149
+#: InvenTree/validators.py:137 InvenTree/validators.py:153
msgid "Overage value must not be negative"
msgstr ""
-#: InvenTree/validators.py:151
+#: InvenTree/validators.py:155
msgid "Overage must not exceed 100%"
msgstr ""
-#: InvenTree/validators.py:158
-msgid "Overage must be an integer value or a percentage"
+#: InvenTree/validators.py:162
+msgid "Invalid value for overage"
msgstr ""
#: InvenTree/views.py:538
@@ -584,69 +628,11 @@ msgstr ""
msgid "Barcode associated with Stock Item"
msgstr ""
-#: build/forms.py:36 build/models.py:1293
-#: build/templates/build/build_base.html:82
-#: build/templates/build/detail.html:35 common/models.py:1263
-#: company/forms.py:42 company/templates/company/supplier_part.html:251
-#: order/models.py:805 order/models.py:1229 order/serializers.py:816
-#: order/templates/order/order_wizard/match_parts.html:30
-#: order/templates/order/order_wizard/select_parts.html:34 part/forms.py:144
-#: part/forms.py:160 part/forms.py:176 part/models.py:2636
-#: part/templates/part/bom_upload/match_parts.html:31
-#: part/templates/part/detail.html:992 part/templates/part/detail.html:1078
-#: part/templates/part/part_pricing.html:16
-#: report/templates/report/inventree_build_order_base.html:114
-#: report/templates/report/inventree_po_report.html:91
-#: report/templates/report/inventree_so_report.html:91
-#: report/templates/report/inventree_test_report_base.html:81
-#: report/templates/report/inventree_test_report_base.html:139
-#: stock/forms.py:142 stock/serializers.py:293
-#: stock/templates/stock/item_base.html:181
-#: stock/templates/stock/item_base.html:262
-#: stock/templates/stock/item_base.html:270
-#: templates/js/translated/barcode.js:385 templates/js/translated/bom.js:567
-#: templates/js/translated/build.js:295 templates/js/translated/build.js:495
-#: templates/js/translated/build.js:689 templates/js/translated/build.js:699
-#: templates/js/translated/build.js:1075 templates/js/translated/build.js:1422
-#: templates/js/translated/model_renderers.js:99
-#: templates/js/translated/order.js:101 templates/js/translated/order.js:1056
-#: 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:906
-#: templates/js/translated/part.js:1862 templates/js/translated/part.js:1985
-#: templates/js/translated/part.js:2063 templates/js/translated/stock.js:391
-#: templates/js/translated/stock.js:588 templates/js/translated/stock.js:758
-#: templates/js/translated/stock.js:2677 templates/js/translated/stock.js:2779
-msgid "Quantity"
-msgstr ""
-
-#: build/forms.py:37
-msgid "Enter quantity for build output"
-msgstr ""
-
-#: build/forms.py:41 order/serializers.py:820 stock/forms.py:81
-#: stock/serializers.py:314 templates/js/translated/stock.js:238
-#: templates/js/translated/stock.js:392
-msgid "Serial Numbers"
-msgstr ""
-
-#: build/forms.py:43
-msgid "Enter serial numbers for build outputs"
-msgstr ""
-
-#: build/forms.py:49
-msgid "Confirm creation of build output"
-msgstr ""
-
-#: build/forms.py:70
-msgid "Confirm deletion of build output"
-msgstr ""
-
-#: build/forms.py:89
+#: build/forms.py:20
msgid "Confirm cancel"
msgstr ""
-#: build/forms.py:89 build/views.py:65
+#: build/forms.py:20 build/views.py:62
msgid "Confirm build cancellation"
msgstr ""
@@ -657,7 +643,7 @@ msgstr ""
#: build/models.py:139 build/templates/build/build_base.html:9
#: build/templates/build/build_base.html:27
#: report/templates/report/inventree_build_order_base.html:106
-#: templates/js/translated/build.js:457 templates/js/translated/stock.js:2290
+#: templates/js/translated/build.js:676 templates/js/translated/stock.js:2414
msgid "Build Order"
msgstr ""
@@ -665,7 +651,7 @@ msgstr ""
#: 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
+#: part/templates/part/part_sidebar.html:21 templates/InvenTree/index.html:221
#: templates/InvenTree/search.html:139
#: templates/InvenTree/settings/sidebar.html:43 users/models.py:44
msgid "Build Orders"
@@ -676,11 +662,11 @@ msgid "Build Order Reference"
msgstr ""
#: build/models.py:201 order/models.py:213 order/models.py:541
-#: order/models.py:812 part/models.py:2645
-#: part/templates/part/bom_upload/match_parts.html:30
+#: order/models.py:812 part/models.py:2714
+#: part/templates/part/upload_bom.html:54
#: report/templates/report/inventree_po_report.html:92
#: report/templates/report/inventree_so_report.html:92
-#: templates/js/translated/bom.js:559 templates/js/translated/build.js:1179
+#: templates/js/translated/bom.js:772 templates/js/translated/build.js:1401
#: templates/js/translated/order.js:1050 templates/js/translated/order.js:2144
msgid "Reference"
msgstr ""
@@ -689,7 +675,7 @@ msgstr ""
msgid "Brief description of the build"
msgstr ""
-#: build/models.py:221 build/templates/build/build_base.html:164
+#: build/models.py:221 build/templates/build/build_base.html:169
#: build/templates/build/detail.html:88
msgid "Parent Build"
msgstr ""
@@ -702,30 +688,31 @@ msgstr ""
#: build/templates/build/detail.html:30 company/models.py:705
#: order/models.py:876 order/models.py:950
#: order/templates/order/order_wizard/select_parts.html:32 part/models.py:359
-#: part/models.py:2211 part/models.py:2227 part/models.py:2246
-#: part/models.py:2263 part/models.py:2365 part/models.py:2487
-#: part/models.py:2620 part/models.py:2927 part/serializers.py:658
-#: part/templates/part/part_app_base.html:8
+#: part/models.py:2247 part/models.py:2263 part/models.py:2282
+#: part/models.py:2299 part/models.py:2401 part/models.py:2523
+#: part/models.py:2613 part/models.py:2689 part/models.py:2996
+#: part/serializers.py:666 part/templates/part/part_app_base.html:8
#: part/templates/part/part_pricing.html:12
#: part/templates/part/set_category.html:13
+#: part/templates/part/upload_bom.html:52
#: 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: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:338
-#: templates/js/translated/bom.js:517 templates/js/translated/build.js:680
-#: templates/js/translated/build.js:1048 templates/js/translated/build.js:1419
-#: templates/js/translated/build.js:1687 templates/js/translated/company.js:492
+#: templates/js/translated/barcode.js:383 templates/js/translated/bom.js:551
+#: templates/js/translated/bom.js:730 templates/js/translated/build.js:902
+#: templates/js/translated/build.js:1270 templates/js/translated/build.js:1655
+#: templates/js/translated/build.js:1925 templates/js/translated/company.js:492
#: templates/js/translated/company.js:749 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:984
#: templates/js/translated/part.js:1065 templates/js/translated/part.js:1232
-#: templates/js/translated/stock.js:562 templates/js/translated/stock.js:727
-#: templates/js/translated/stock.js:934 templates/js/translated/stock.js:1534
-#: templates/js/translated/stock.js:2767
+#: templates/js/translated/stock.js:563 templates/js/translated/stock.js:728
+#: templates/js/translated/stock.js:935 templates/js/translated/stock.js:1658
+#: templates/js/translated/stock.js:2891 templates/js/translated/stock.js:2990
msgid "Part"
msgstr ""
@@ -741,7 +728,7 @@ msgstr ""
msgid "SalesOrder to which this build is allocated"
msgstr ""
-#: build/models.py:249 templates/js/translated/build.js:1407
+#: build/models.py:249 templates/js/translated/build.js:1643
#: templates/js/translated/order.js:1564
msgid "Source Location"
msgstr ""
@@ -782,15 +769,15 @@ msgstr ""
msgid "Build status code"
msgstr ""
-#: build/models.py:287 stock/models.py:533
+#: build/models.py:287 build/serializers.py:218 stock/models.py:533
msgid "Batch Code"
msgstr ""
-#: build/models.py:291
+#: build/models.py:291 build/serializers.py:219
msgid "Batch code for this build output"
msgstr ""
-#: build/models.py:294 order/models.py:129 part/models.py:969
+#: build/models.py:294 order/models.py:129 part/models.py:999
#: part/templates/part/part_base.html:313 templates/js/translated/order.js:1271
msgid "Creation Date"
msgstr ""
@@ -804,7 +791,7 @@ msgid "Target date for build completion. Build will be overdue after this date."
msgstr ""
#: build/models.py:302 order/models.py:255
-#: templates/js/translated/build.js:1758
+#: templates/js/translated/build.js:1996
msgid "Completion Date"
msgstr ""
@@ -812,7 +799,7 @@ msgstr ""
msgid "completed by"
msgstr ""
-#: build/models.py:316 templates/js/translated/build.js:1729
+#: build/models.py:316 templates/js/translated/build.js:1967
msgid "Issued by"
msgstr ""
@@ -820,12 +807,12 @@ msgstr ""
msgid "User who issued this build order"
msgstr ""
-#: build/models.py:325 build/templates/build/build_base.html:185
+#: build/models.py:325 build/templates/build/build_base.html:190
#: build/templates/build/detail.html:116 order/models.py:143
#: order/templates/order/order_base.html:170
-#: order/templates/order/sales_order_base.html:182 part/models.py:973
+#: order/templates/order/sales_order_base.html:182 part/models.py:1003
#: report/templates/report/inventree_build_order_base.html:159
-#: templates/js/translated/build.js:1741 templates/js/translated/order.js:864
+#: templates/js/translated/build.js:1979 templates/js/translated/order.js:864
msgid "Responsible"
msgstr ""
@@ -837,26 +824,26 @@ msgstr ""
#: company/templates/company/manufacturer_part.html:102
#: company/templates/company/supplier_part.html:126
#: part/templates/part/part_base.html:354 stock/models.py:527
-#: stock/templates/stock/item_base.html:373
+#: stock/templates/stock/item_base.html:375
msgid "External Link"
msgstr ""
-#: build/models.py:336 build/serializers.py:201
+#: build/models.py:336 build/serializers.py:380
#: build/templates/build/sidebar.html:21 company/models.py:142
#: company/models.py:577 company/templates/company/sidebar.html:25
#: order/models.py:147 order/models.py:814 order/models.py:1071
#: order/templates/order/po_sidebar.html:11
-#: order/templates/order/so_sidebar.html:17 part/models.py:958
-#: part/templates/part/detail.html:137 part/templates/part/part_sidebar.html:54
+#: order/templates/order/so_sidebar.html:17 part/models.py:988
+#: part/templates/part/detail.html:140 part/templates/part/part_sidebar.html:57
#: report/templates/report/inventree_build_order_base.html:173
-#: stock/forms.py:140 stock/forms.py:190 stock/forms.py:224 stock/models.py:599
+#: stock/forms.py:137 stock/forms.py:171 stock/models.py:599
#: stock/models.py:1895 stock/models.py:2001 stock/serializers.py:332
-#: stock/serializers.py:640 stock/serializers.py:738 stock/serializers.py:870
+#: stock/serializers.py:697 stock/serializers.py:795 stock/serializers.py:927
#: stock/templates/stock/stock_sidebar.html:25
-#: templates/js/translated/barcode.js:58 templates/js/translated/bom.js:723
+#: templates/js/translated/barcode.js:58 templates/js/translated/bom.js:936
#: templates/js/translated/company.js:845 templates/js/translated/order.js:1149
#: templates/js/translated/order.js:1445 templates/js/translated/order.js:2280
-#: templates/js/translated/stock.js:1317 templates/js/translated/stock.js:1803
+#: templates/js/translated/stock.js:1345 templates/js/translated/stock.js:1927
msgid "Notes"
msgstr ""
@@ -864,208 +851,284 @@ msgstr ""
msgid "Extra build notes"
msgstr ""
-#: build/models.py:717
+#: build/models.py:756
msgid "No build output specified"
msgstr ""
-#: build/models.py:720
+#: build/models.py:759
msgid "Build output is already completed"
msgstr ""
-#: build/models.py:723
+#: build/models.py:762
msgid "Build output does not match Build Order"
msgstr ""
-#: build/models.py:1115
+#: build/models.py:1154
msgid "Build item must specify a build output, as master part is marked as trackable"
msgstr ""
-#: build/models.py:1124
+#: build/models.py:1163
#, python-brace-format
msgid "Allocated quantity ({q}) must not execed available stock quantity ({a})"
msgstr ""
-#: build/models.py:1134
+#: build/models.py:1173
msgid "Stock item is over-allocated"
msgstr ""
-#: build/models.py:1140 order/models.py:1189
+#: build/models.py:1179 order/models.py:1189
msgid "Allocation quantity must be greater than zero"
msgstr ""
-#: build/models.py:1146
+#: build/models.py:1185
msgid "Quantity must be 1 for serialized stock"
msgstr ""
-#: build/models.py:1203
+#: build/models.py:1242
msgid "Selected stock item not found in BOM"
msgstr ""
-#: build/models.py:1263 stock/templates/stock/item_base.html:345
-#: templates/InvenTree/search.html:137 templates/js/translated/build.js:1660
+#: build/models.py:1302 stock/templates/stock/item_base.html:347
+#: templates/InvenTree/search.html:137 templates/js/translated/build.js:1898
#: templates/navbar.html:35
msgid "Build"
msgstr ""
-#: build/models.py:1264
+#: build/models.py:1303
msgid "Build to allocate parts"
msgstr ""
-#: build/models.py:1280 build/serializers.py:388 order/serializers.py:696
-#: order/serializers.py:714 stock/serializers.py:578 stock/serializers.py:696
-#: stock/templates/stock/item_base.html:9
+#: build/models.py:1319 build/serializers.py:570 order/serializers.py:696
+#: order/serializers.py:714 stock/serializers.py:404 stock/serializers.py:635
+#: stock/serializers.py:753 stock/templates/stock/item_base.html:9
#: stock/templates/stock/item_base.html:23
-#: stock/templates/stock/item_base.html:367
-#: templates/js/translated/build.js:468 templates/js/translated/build.js:473
-#: templates/js/translated/build.js:1421 templates/js/translated/build.js:1803
+#: stock/templates/stock/item_base.html:369
+#: templates/js/translated/build.js:687 templates/js/translated/build.js:692
+#: templates/js/translated/build.js:1657 templates/js/translated/build.js:2041
#: 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:563 templates/js/translated/stock.js:728
-#: templates/js/translated/stock.js:2628
+#: templates/js/translated/stock.js:564 templates/js/translated/stock.js:729
+#: templates/js/translated/stock.js:2752
msgid "Stock Item"
msgstr ""
-#: build/models.py:1281
+#: build/models.py:1320
msgid "Source stock item"
msgstr ""
-#: build/models.py:1294
+#: build/models.py:1332 build/serializers.py:188
+#: build/templates/build/build_base.html:82
+#: build/templates/build/detail.html:35 common/models.py:1275
+#: company/forms.py:42 company/templates/company/supplier_part.html:251
+#: order/models.py:805 order/models.py:1229 order/serializers.py:816
+#: order/templates/order/order_wizard/match_parts.html:30
+#: order/templates/order/order_wizard/select_parts.html:34 part/forms.py:144
+#: part/forms.py:160 part/forms.py:176 part/models.py:2705
+#: part/templates/part/detail.html:995 part/templates/part/detail.html:1081
+#: part/templates/part/part_pricing.html:16
+#: part/templates/part/upload_bom.html:53
+#: report/templates/report/inventree_build_order_base.html:114
+#: report/templates/report/inventree_po_report.html:91
+#: report/templates/report/inventree_so_report.html:91
+#: report/templates/report/inventree_test_report_base.html:81
+#: report/templates/report/inventree_test_report_base.html:139
+#: stock/forms.py:139 stock/serializers.py:293
+#: stock/templates/stock/item_base.html:183
+#: stock/templates/stock/item_base.html:264
+#: stock/templates/stock/item_base.html:272
+#: templates/js/translated/barcode.js:385 templates/js/translated/bom.js:780
+#: templates/js/translated/build.js:375 templates/js/translated/build.js:523
+#: templates/js/translated/build.js:714 templates/js/translated/build.js:911
+#: templates/js/translated/build.js:921 templates/js/translated/build.js:1297
+#: templates/js/translated/build.js:1658
+#: templates/js/translated/model_renderers.js:99
+#: templates/js/translated/order.js:101 templates/js/translated/order.js:1056
+#: 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:906
+#: templates/js/translated/part.js:1862 templates/js/translated/part.js:1985
+#: templates/js/translated/part.js:2063 templates/js/translated/stock.js:392
+#: templates/js/translated/stock.js:589 templates/js/translated/stock.js:759
+#: templates/js/translated/stock.js:2801 templates/js/translated/stock.js:2903
+msgid "Quantity"
+msgstr ""
+
+#: build/models.py:1333
msgid "Stock quantity to allocate to build"
msgstr ""
-#: build/models.py:1302
+#: build/models.py:1341
msgid "Install into"
msgstr ""
-#: build/models.py:1303
+#: build/models.py:1342
msgid "Destination stock item"
msgstr ""
-#: build/serializers.py:137 build/serializers.py:417
+#: build/serializers.py:138 build/serializers.py:599
msgid "Build Output"
msgstr ""
-#: build/serializers.py:146
+#: build/serializers.py:150
msgid "Build output does not match the parent build"
msgstr ""
-#: build/serializers.py:150
+#: build/serializers.py:154
msgid "Output part does not match BuildOrder part"
msgstr ""
-#: build/serializers.py:154
+#: build/serializers.py:158
msgid "This build output has already been completed"
msgstr ""
-#: build/serializers.py:158
+#: build/serializers.py:164
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:731
-#: stock/serializers.py:972 stock/templates/stock/item_base.html:313
-#: templates/js/translated/barcode.js:384
-#: templates/js/translated/barcode.js:557 templates/js/translated/build.js:480
-#: templates/js/translated/build.js:1087 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:179 templates/js/translated/stock.js:564
-#: templates/js/translated/stock.js:729 templates/js/translated/stock.js:936
-#: templates/js/translated/stock.js:1684 templates/js/translated/stock.js:2569
-msgid "Location"
+#: build/serializers.py:189
+msgid "Enter quantity for build output"
msgstr ""
-#: build/serializers.py:191
-msgid "Location for completed build outputs"
-msgstr ""
-
-#: build/serializers.py:197 build/templates/build/build_base.html:137
-#: build/templates/build/detail.html:63 order/models.py:557
-#: order/serializers.py:247 stock/templates/stock/item_base.html:187
-#: templates/js/translated/barcode.js:140 templates/js/translated/build.js:1716
-#: templates/js/translated/order.js:591 templates/js/translated/order.js:840
-#: templates/js/translated/order.js:1263 templates/js/translated/stock.js:1659
-#: templates/js/translated/stock.js:2646 templates/js/translated/stock.js:2795
-msgid "Status"
-msgstr ""
-
-#: build/serializers.py:213
-msgid "A list of build outputs must be provided"
-msgstr ""
-
-#: build/serializers.py:249
-msgid "Accept Unallocated"
-msgstr ""
-
-#: build/serializers.py:250
-msgid "Accept that stock items have not been fully allocated to this build order"
-msgstr ""
-
-#: build/serializers.py:260 templates/js/translated/build.js:149
-msgid "Required stock has not been fully allocated"
-msgstr ""
-
-#: build/serializers.py:265
-msgid "Accept Incomplete"
-msgstr ""
-
-#: build/serializers.py:266
-msgid "Accept that the required number of build outputs have not been completed"
-msgstr ""
-
-#: build/serializers.py:276 templates/js/translated/build.js:153
-msgid "Required build quantity has not been completed"
-msgstr ""
-
-#: build/serializers.py:285
-msgid "Build order has incomplete outputs"
-msgstr ""
-
-#: build/serializers.py:313 build/serializers.py:362 part/models.py:2760
-#: part/models.py:2919
-msgid "BOM Item"
-msgstr ""
-
-#: build/serializers.py:323
-msgid "Build output"
-msgstr ""
-
-#: build/serializers.py:332
-msgid "Build output must point to the same build"
-msgstr ""
-
-#: build/serializers.py:379
-msgid "bom_item.part must point to the same part as the build order"
-msgstr ""
-
-#: build/serializers.py:394 stock/serializers.py:585
-msgid "Item must be in stock"
-msgstr ""
-
-#: build/serializers.py:408 order/models.py:280 order/serializers.py:240
+#: build/serializers.py:201 build/serializers.py:590 order/models.py:280
+#: order/serializers.py:240 part/serializers.py:471 part/serializers.py:827
#: stock/models.py:367 stock/models.py:1105 stock/serializers.py:305
msgid "Quantity must be greater than zero"
msgstr ""
-#: build/serializers.py:450 order/serializers.py:747
+#: build/serializers.py:208
+msgid "Integer quantity required for trackable parts"
+msgstr ""
+
+#: build/serializers.py:211
+msgid "Integer quantity required, as the bill of materials contains trackable parts"
+msgstr ""
+
+#: build/serializers.py:225 order/serializers.py:820 stock/forms.py:78
+#: stock/serializers.py:314 templates/js/translated/stock.js:239
+#: templates/js/translated/stock.js:393
+msgid "Serial Numbers"
+msgstr ""
+
+#: build/serializers.py:226
+msgid "Enter serial numbers for build outputs"
+msgstr ""
+
+#: build/serializers.py:239
+msgid "Auto Allocate Serial Numbers"
+msgstr ""
+
+#: build/serializers.py:240
+msgid "Automatically allocate required items with matching serial numbers"
+msgstr ""
+
+#: build/serializers.py:274 stock/api.py:551
+msgid "The following serial numbers already exist"
+msgstr ""
+
+#: build/serializers.py:327 build/serializers.py:392
+msgid "A list of build outputs must be provided"
+msgstr ""
+
+#: build/serializers.py:369 order/serializers.py:226 order/serializers.py:294
+#: stock/forms.py:169 stock/serializers.py:325 stock/serializers.py:788
+#: stock/serializers.py:1029 stock/templates/stock/item_base.html:315
+#: templates/js/translated/barcode.js:384
+#: templates/js/translated/barcode.js:557 templates/js/translated/build.js:699
+#: templates/js/translated/build.js:1309 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:179 templates/js/translated/stock.js:565
+#: templates/js/translated/stock.js:730 templates/js/translated/stock.js:937
+#: templates/js/translated/stock.js:1808 templates/js/translated/stock.js:2693
+msgid "Location"
+msgstr ""
+
+#: build/serializers.py:370
+msgid "Location for completed build outputs"
+msgstr ""
+
+#: build/serializers.py:376 build/templates/build/build_base.html:142
+#: build/templates/build/detail.html:63 order/models.py:557
+#: order/serializers.py:247 stock/templates/stock/item_base.html:189
+#: templates/js/translated/barcode.js:140 templates/js/translated/build.js:1954
+#: templates/js/translated/order.js:591 templates/js/translated/order.js:840
+#: templates/js/translated/order.js:1263 templates/js/translated/stock.js:1783
+#: templates/js/translated/stock.js:2770 templates/js/translated/stock.js:2919
+msgid "Status"
+msgstr ""
+
+#: build/serializers.py:428
+msgid "Accept Unallocated"
+msgstr ""
+
+#: build/serializers.py:429
+msgid "Accept that stock items have not been fully allocated to this build order"
+msgstr ""
+
+#: build/serializers.py:439 templates/js/translated/build.js:150
+msgid "Required stock has not been fully allocated"
+msgstr ""
+
+#: build/serializers.py:444
+msgid "Accept Incomplete"
+msgstr ""
+
+#: build/serializers.py:445
+msgid "Accept that the required number of build outputs have not been completed"
+msgstr ""
+
+#: build/serializers.py:455 templates/js/translated/build.js:154
+msgid "Required build quantity has not been completed"
+msgstr ""
+
+#: build/serializers.py:464
+msgid "Build order has incomplete outputs"
+msgstr ""
+
+#: build/serializers.py:467 build/templates/build/build_base.html:95
+msgid "No build outputs have been created for this build order"
+msgstr ""
+
+#: build/serializers.py:495 build/serializers.py:544 part/models.py:2829
+#: part/models.py:2988
+msgid "BOM Item"
+msgstr ""
+
+#: build/serializers.py:505
+msgid "Build output"
+msgstr ""
+
+#: build/serializers.py:514
+msgid "Build output must point to the same build"
+msgstr ""
+
+#: build/serializers.py:561
+msgid "bom_item.part must point to the same part as the build order"
+msgstr ""
+
+#: build/serializers.py:576 stock/serializers.py:642
+msgid "Item must be in stock"
+msgstr ""
+
+#: build/serializers.py:632 order/serializers.py:747
#, python-brace-format
msgid "Available quantity ({q}) exceeded"
msgstr ""
-#: build/serializers.py:456
+#: build/serializers.py:638
msgid "Build output must be specified for allocation of tracked parts"
msgstr ""
-#: build/serializers.py:463
+#: build/serializers.py:645
msgid "Build output cannot be specified for allocation of untracked parts"
msgstr ""
-#: build/serializers.py:491 order/serializers.py:990
+#: build/serializers.py:673 order/serializers.py:990
msgid "Allocation items must be provided"
msgstr ""
-#: build/tasks.py:92
+#: build/tasks.py:98
msgid "Stock required for build order"
msgstr ""
@@ -1088,7 +1151,7 @@ msgid "Edit Build"
msgstr ""
#: build/templates/build/build_base.html:56
-#: build/templates/build/build_base.html:215 build/views.py:56
+#: build/templates/build/build_base.html:220 build/views.py:53
msgid "Cancel Build"
msgstr ""
@@ -1105,110 +1168,90 @@ msgstr ""
msgid "Build Description"
msgstr ""
-#: build/templates/build/build_base.html:96
+#: build/templates/build/build_base.html:101
#, python-format
msgid "This Build Order is allocated to Sales Order %(link)s"
msgstr ""
-#: build/templates/build/build_base.html:103
+#: build/templates/build/build_base.html:108
#, python-format
msgid "This Build Order is a child of Build Order %(link)s"
msgstr ""
-#: build/templates/build/build_base.html:110
+#: build/templates/build/build_base.html:115
msgid "Build Order is ready to mark as completed"
msgstr ""
-#: build/templates/build/build_base.html:115
+#: build/templates/build/build_base.html:120
msgid "Build Order cannot be completed as outstanding outputs remain"
msgstr ""
-#: build/templates/build/build_base.html:120
+#: build/templates/build/build_base.html:125
msgid "Required build quantity has not yet been completed"
msgstr ""
-#: build/templates/build/build_base.html:125
+#: build/templates/build/build_base.html:130
msgid "Stock has not been fully allocated to this Build Order"
msgstr ""
-#: build/templates/build/build_base.html:146
+#: build/templates/build/build_base.html:151
#: build/templates/build/detail.html:132
#: order/templates/order/order_base.html:156
#: order/templates/order/sales_order_base.html:163
#: report/templates/report/inventree_build_order_base.html:126
-#: templates/js/translated/build.js:1753 templates/js/translated/order.js:854
+#: templates/js/translated/build.js:1991 templates/js/translated/order.js:854
#: templates/js/translated/order.js:1276
msgid "Target Date"
msgstr ""
-#: build/templates/build/build_base.html:151
+#: build/templates/build/build_base.html:156
#, python-format
msgid "This build was due on %(target)s"
msgstr ""
-#: build/templates/build/build_base.html:151
-#: build/templates/build/build_base.html:196
+#: build/templates/build/build_base.html:156
+#: build/templates/build/build_base.html:201
#: order/templates/order/order_base.html:98
#: order/templates/order/sales_order_base.html:93
-#: templates/js/translated/table_filters.js:299
-#: templates/js/translated/table_filters.js:340
-#: templates/js/translated/table_filters.js:361
+#: templates/js/translated/table_filters.js:294
+#: templates/js/translated/table_filters.js:335
+#: templates/js/translated/table_filters.js:356
msgid "Overdue"
msgstr ""
-#: build/templates/build/build_base.html:158
+#: build/templates/build/build_base.html:163
#: build/templates/build/detail.html:68 build/templates/build/detail.html:143
#: order/templates/order/sales_order_base.html:170
-#: templates/js/translated/build.js:1702
-#: templates/js/translated/table_filters.js:370
+#: templates/js/translated/build.js:1940
+#: templates/js/translated/table_filters.js:365
msgid "Completed"
msgstr ""
-#: build/templates/build/build_base.html:171
+#: build/templates/build/build_base.html:176
#: build/templates/build/detail.html:95 order/models.py:947
#: order/models.py:1043 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:307
-#: templates/js/translated/order.js:1218 templates/js/translated/stock.js:2304
+#: stock/templates/stock/item_base.html:309
+#: templates/js/translated/order.js:1218 templates/js/translated/stock.js:2428
msgid "Sales Order"
msgstr ""
-#: build/templates/build/build_base.html:178
+#: build/templates/build/build_base.html:183
#: build/templates/build/detail.html:109
#: report/templates/report/inventree_build_order_base.html:153
msgid "Issued By"
msgstr ""
-#: build/templates/build/build_base.html:223
+#: build/templates/build/build_base.html:228
msgid "Incomplete Outputs"
msgstr ""
-#: build/templates/build/build_base.html:224
+#: build/templates/build/build_base.html:229
msgid "Build Order cannot be completed as incomplete build outputs remain"
msgstr ""
-#: build/templates/build/build_output_create.html:7
-msgid "The Bill of Materials contains trackable parts"
-msgstr ""
-
-#: build/templates/build/build_output_create.html:8
-msgid "Build outputs must be generated individually."
-msgstr ""
-
-#: build/templates/build/build_output_create.html:9
-msgid "Multiple build outputs will be created based on the quantity specified."
-msgstr ""
-
-#: build/templates/build/build_output_create.html:15
-msgid "Trackable parts can have serial numbers specified"
-msgstr ""
-
-#: build/templates/build/build_output_create.html:16
-msgid "Enter serial numbers to generate multiple single build outputs"
-msgstr ""
-
#: build/templates/build/cancel.html:5
msgid "Are you sure you wish to cancel this build?"
msgstr ""
@@ -1225,7 +1268,7 @@ msgstr ""
msgid "Stock can be taken from any available location."
msgstr ""
-#: build/templates/build/detail.html:50 order/models.py:898 stock/forms.py:136
+#: build/templates/build/detail.html:50 order/models.py:898 stock/forms.py:133
#: templates/js/translated/order.js:592 templates/js/translated/order.js:1138
msgid "Destination"
msgstr ""
@@ -1234,13 +1277,13 @@ msgstr ""
msgid "Destination location not specified"
msgstr ""
-#: build/templates/build/detail.html:74 templates/js/translated/build.js:707
+#: build/templates/build/detail.html:74 templates/js/translated/build.js:929
msgid "Allocated Parts"
msgstr ""
#: build/templates/build/detail.html:81
-#: stock/templates/stock/item_base.html:331
-#: templates/js/translated/stock.js:1673 templates/js/translated/stock.js:2802
+#: stock/templates/stock/item_base.html:333
+#: templates/js/translated/stock.js:1797 templates/js/translated/stock.js:2926
#: templates/js/translated/table_filters.js:151
#: templates/js/translated/table_filters.js:238
msgid "Batch"
@@ -1249,7 +1292,7 @@ msgstr ""
#: build/templates/build/detail.html:127
#: order/templates/order/order_base.html:143
#: order/templates/order/sales_order_base.html:157
-#: templates/js/translated/build.js:1724
+#: templates/js/translated/build.js:1962
msgid "Created"
msgstr ""
@@ -1269,7 +1312,7 @@ msgstr ""
msgid "Allocate Stock to Build"
msgstr ""
-#: build/templates/build/detail.html:177 templates/js/translated/build.js:1262
+#: build/templates/build/detail.html:177 templates/js/translated/build.js:1484
msgid "Unallocate stock"
msgstr ""
@@ -1329,52 +1372,60 @@ msgid "Output Actions"
msgstr ""
#: build/templates/build/detail.html:250
-msgid "Complete selected items"
+msgid "Complete selected build outputs"
msgstr ""
#: build/templates/build/detail.html:251
msgid "Complete outputs"
msgstr ""
-#: build/templates/build/detail.html:266
+#: build/templates/build/detail.html:253
+msgid "Delete selected build outputs"
+msgstr ""
+
+#: build/templates/build/detail.html:254
+msgid "Delete outputs"
+msgstr ""
+
+#: build/templates/build/detail.html:270
msgid "Completed Build Outputs"
msgstr ""
-#: build/templates/build/detail.html:278 build/templates/build/sidebar.html:19
+#: build/templates/build/detail.html:282 build/templates/build/sidebar.html:19
#: order/templates/order/po_sidebar.html:9
#: order/templates/order/purchase_order_detail.html:60
#: order/templates/order/sales_order_detail.html:107
-#: order/templates/order/so_sidebar.html:15 part/templates/part/detail.html:213
-#: part/templates/part/part_sidebar.html:52 stock/templates/stock/item.html:112
+#: order/templates/order/so_sidebar.html:15 part/templates/part/detail.html:216
+#: part/templates/part/part_sidebar.html:55 stock/templates/stock/item.html:112
#: stock/templates/stock/stock_sidebar.html:23
msgid "Attachments"
msgstr ""
-#: build/templates/build/detail.html:294
+#: build/templates/build/detail.html:298
msgid "Build Notes"
msgstr ""
-#: build/templates/build/detail.html:298 build/templates/build/detail.html:453
+#: build/templates/build/detail.html:302 build/templates/build/detail.html:478
#: company/templates/company/detail.html:188
#: company/templates/company/detail.html:215
#: order/templates/order/purchase_order_detail.html:80
#: order/templates/order/purchase_order_detail.html:108
#: order/templates/order/sales_order_detail.html:127
#: order/templates/order/sales_order_detail.html:186
-#: part/templates/part/detail.html:141 stock/templates/stock/item.html:132
-#: stock/templates/stock/item.html:235
+#: part/templates/part/detail.html:144 stock/templates/stock/item.html:132
+#: stock/templates/stock/item.html:230
msgid "Edit Notes"
msgstr ""
-#: build/templates/build/detail.html:477
+#: build/templates/build/detail.html:502
msgid "Allocation Complete"
msgstr ""
-#: build/templates/build/detail.html:478
+#: build/templates/build/detail.html:503
msgid "All untracked stock items have been allocated"
msgstr ""
-#: build/templates/build/index.html:18 part/templates/part/detail.html:320
+#: build/templates/build/index.html:18 part/templates/part/detail.html:323
msgid "New Build Order"
msgstr ""
@@ -1406,51 +1457,11 @@ msgstr ""
msgid "Completed Items"
msgstr ""
-#: build/views.py:76
+#: build/views.py:73
msgid "Build was cancelled"
msgstr ""
-#: build/views.py:88
-msgid "Create Build Output"
-msgstr ""
-
-#: build/views.py:106
-msgid "Maximum output quantity is "
-msgstr ""
-
-#: build/views.py:122 stock/serializers.py:363 stock/views.py:1257
-msgid "Serial numbers already exist"
-msgstr ""
-
-#: build/views.py:131
-msgid "Serial numbers required for trackable build output"
-msgstr ""
-
-#: build/views.py:197
-msgid "Delete Build Output"
-msgstr ""
-
-#: build/views.py:218
-msgid "Confirm unallocation of build stock"
-msgstr ""
-
-#: build/views.py:219 stock/views.py:352
-msgid "Check the confirmation box"
-msgstr ""
-
-#: build/views.py:231
-msgid "Build output does not match build"
-msgstr ""
-
-#: build/views.py:233
-msgid "Build output must be specified"
-msgstr ""
-
-#: build/views.py:245
-msgid "Build output deleted"
-msgstr ""
-
-#: build/views.py:286
+#: build/views.py:114
msgid "Delete Build Order"
msgstr ""
@@ -1639,9 +1650,9 @@ msgstr ""
msgid "Copy category parameter templates when creating a part"
msgstr ""
-#: common/models.py:705 part/models.py:2489 report/models.py:187
+#: common/models.py:705 part/models.py:2525 report/models.py:187
#: templates/js/translated/table_filters.js:38
-#: templates/js/translated/table_filters.js:422
+#: templates/js/translated/table_filters.js:417
msgid "Template"
msgstr ""
@@ -1649,9 +1660,9 @@ msgstr ""
msgid "Parts are templates by default"
msgstr ""
-#: common/models.py:712 part/models.py:921 templates/js/translated/bom.js:1082
+#: common/models.py:712 part/models.py:951 templates/js/translated/bom.js:1300
#: templates/js/translated/table_filters.js:168
-#: templates/js/translated/table_filters.js:434
+#: templates/js/translated/table_filters.js:429
msgid "Assembly"
msgstr ""
@@ -1659,8 +1670,8 @@ msgstr ""
msgid "Parts can be assembled from other components by default"
msgstr ""
-#: common/models.py:719 part/models.py:927
-#: templates/js/translated/table_filters.js:438
+#: common/models.py:719 part/models.py:957
+#: templates/js/translated/table_filters.js:433
msgid "Component"
msgstr ""
@@ -1668,7 +1679,7 @@ msgstr ""
msgid "Parts can be used as sub-components by default"
msgstr ""
-#: common/models.py:726 part/models.py:938
+#: common/models.py:726 part/models.py:968
msgid "Purchaseable"
msgstr ""
@@ -1676,8 +1687,8 @@ msgstr ""
msgid "Parts are purchaseable by default"
msgstr ""
-#: common/models.py:733 part/models.py:943
-#: templates/js/translated/table_filters.js:446
+#: common/models.py:733 part/models.py:973
+#: templates/js/translated/table_filters.js:441
msgid "Salable"
msgstr ""
@@ -1685,10 +1696,10 @@ msgstr ""
msgid "Parts are salable by default"
msgstr ""
-#: common/models.py:740 part/models.py:933
+#: common/models.py:740 part/models.py:963
#: templates/js/translated/table_filters.js:46
#: templates/js/translated/table_filters.js:100
-#: templates/js/translated/table_filters.js:450
+#: templates/js/translated/table_filters.js:445
msgid "Trackable"
msgstr ""
@@ -1696,7 +1707,7 @@ msgstr ""
msgid "Parts are trackable by default"
msgstr ""
-#: common/models.py:747 part/models.py:953
+#: common/models.py:747 part/models.py:983
#: part/templates/part/part_base.html:147
#: templates/js/translated/table_filters.js:42
msgid "Virtual"
@@ -1730,589 +1741,595 @@ msgstr ""
msgid "Include pricing information in BOM tables"
msgstr ""
-#: common/models.py:780
+#: common/models.py:785
+msgid "Show Price History"
+msgstr ""
+
+#: common/models.py:786
+msgid "Display historical pricing for Part"
+msgstr ""
+
+#: common/models.py:792
msgid "Show related parts"
msgstr ""
-#: common/models.py:781
+#: common/models.py:793
msgid "Display related parts for a part"
msgstr ""
-#: common/models.py:787
+#: common/models.py:799
msgid "Create initial stock"
msgstr ""
-#: common/models.py:788
+#: common/models.py:800
msgid "Create initial stock on part creation"
msgstr ""
-#: common/models.py:794
+#: common/models.py:806
msgid "Internal Prices"
msgstr ""
-#: common/models.py:795
+#: common/models.py:807
msgid "Enable internal prices for parts"
msgstr ""
-#: common/models.py:801
+#: common/models.py:813
msgid "Internal Price as BOM-Price"
msgstr ""
-#: common/models.py:802
+#: common/models.py:814
msgid "Use the internal price (if set) in BOM-price calculations"
msgstr ""
-#: common/models.py:808
+#: common/models.py:820
msgid "Part Name Display Format"
msgstr ""
-#: common/models.py:809
+#: common/models.py:821
msgid "Format to display the part name"
msgstr ""
-#: common/models.py:816
+#: common/models.py:828
msgid "Enable Reports"
msgstr ""
-#: common/models.py:817
+#: common/models.py:829
msgid "Enable generation of reports"
msgstr ""
-#: common/models.py:823 templates/stats.html:25
+#: common/models.py:835 templates/stats.html:25
msgid "Debug Mode"
msgstr ""
-#: common/models.py:824
+#: common/models.py:836
msgid "Generate reports in debug mode (HTML output)"
msgstr ""
-#: common/models.py:830
+#: common/models.py:842
msgid "Page Size"
msgstr ""
-#: common/models.py:831
+#: common/models.py:843
msgid "Default page size for PDF reports"
msgstr ""
-#: common/models.py:841
+#: common/models.py:853
msgid "Test Reports"
msgstr ""
-#: common/models.py:842
+#: common/models.py:854
msgid "Enable generation of test reports"
msgstr ""
-#: common/models.py:848
+#: common/models.py:860
msgid "Stock Expiry"
msgstr ""
-#: common/models.py:849
+#: common/models.py:861
msgid "Enable stock expiry functionality"
msgstr ""
-#: common/models.py:855
+#: common/models.py:867
msgid "Sell Expired Stock"
msgstr ""
-#: common/models.py:856
+#: common/models.py:868
msgid "Allow sale of expired stock"
msgstr ""
-#: common/models.py:862
+#: common/models.py:874
msgid "Stock Stale Time"
msgstr ""
-#: common/models.py:863
+#: common/models.py:875
msgid "Number of days stock items are considered stale before expiring"
msgstr ""
-#: common/models.py:865
+#: common/models.py:877
msgid "days"
msgstr ""
-#: common/models.py:870
+#: common/models.py:882
msgid "Build Expired Stock"
msgstr ""
-#: common/models.py:871
+#: common/models.py:883
msgid "Allow building with expired stock"
msgstr ""
-#: common/models.py:877
+#: common/models.py:889
msgid "Stock Ownership Control"
msgstr ""
-#: common/models.py:878
+#: common/models.py:890
msgid "Enable ownership control over stock locations and items"
msgstr ""
-#: common/models.py:884
+#: common/models.py:896
msgid "Build Order Reference Prefix"
msgstr ""
-#: common/models.py:885
+#: common/models.py:897
msgid "Prefix value for build order reference"
msgstr ""
-#: common/models.py:890
+#: common/models.py:902
msgid "Build Order Reference Regex"
msgstr ""
-#: common/models.py:891
+#: common/models.py:903
msgid "Regular expression pattern for matching build order reference"
msgstr ""
-#: common/models.py:895
+#: common/models.py:907
msgid "Sales Order Reference Prefix"
msgstr ""
-#: common/models.py:896
+#: common/models.py:908
msgid "Prefix value for sales order reference"
msgstr ""
-#: common/models.py:901
+#: common/models.py:913
msgid "Purchase Order Reference Prefix"
msgstr ""
-#: common/models.py:902
+#: common/models.py:914
msgid "Prefix value for purchase order reference"
msgstr ""
-#: common/models.py:908
+#: common/models.py:920
msgid "Enable password forgot"
msgstr ""
-#: common/models.py:909
+#: common/models.py:921
msgid "Enable password forgot function on the login pages"
msgstr ""
-#: common/models.py:914
+#: common/models.py:926
msgid "Enable registration"
msgstr ""
-#: common/models.py:915
+#: common/models.py:927
msgid "Enable self-registration for users on the login pages"
msgstr ""
-#: common/models.py:920
+#: common/models.py:932
msgid "Enable SSO"
msgstr ""
-#: common/models.py:921
+#: common/models.py:933
msgid "Enable SSO on the login pages"
msgstr ""
-#: common/models.py:926
+#: common/models.py:938
msgid "Email required"
msgstr ""
-#: common/models.py:927
+#: common/models.py:939
msgid "Require user to supply mail on signup"
msgstr ""
-#: common/models.py:932
+#: common/models.py:944
msgid "Auto-fill SSO users"
msgstr ""
-#: common/models.py:933
+#: common/models.py:945
msgid "Automatically fill out user-details from SSO account-data"
msgstr ""
-#: common/models.py:938
+#: common/models.py:950
msgid "Mail twice"
msgstr ""
-#: common/models.py:939
+#: common/models.py:951
msgid "On signup ask users twice for their mail"
msgstr ""
-#: common/models.py:944
+#: common/models.py:956
msgid "Password twice"
msgstr ""
-#: common/models.py:945
+#: common/models.py:957
msgid "On signup ask users twice for their password"
msgstr ""
-#: common/models.py:950
+#: common/models.py:962
msgid "Group on signup"
msgstr ""
-#: common/models.py:951
+#: common/models.py:963
msgid "Group to which new users are assigned on registration"
msgstr ""
-#: common/models.py:956
+#: common/models.py:968
msgid "Enforce MFA"
msgstr ""
-#: common/models.py:957
+#: common/models.py:969
msgid "Users must use multifactor security."
msgstr ""
-#: common/models.py:964
+#: common/models.py:976
msgid "Enable URL integration"
msgstr ""
-#: common/models.py:965
+#: common/models.py:977
msgid "Enable plugins to add URL routes"
msgstr ""
-#: common/models.py:971
+#: common/models.py:983
msgid "Enable navigation integration"
msgstr ""
-#: common/models.py:972
+#: common/models.py:984
msgid "Enable plugins to integrate into navigation"
msgstr ""
-#: common/models.py:978
+#: common/models.py:990
msgid "Enable app integration"
msgstr ""
-#: common/models.py:979
+#: common/models.py:991
msgid "Enable plugins to add apps"
msgstr ""
-#: common/models.py:985
+#: common/models.py:997
msgid "Enable schedule integration"
msgstr ""
-#: common/models.py:986
+#: common/models.py:998
msgid "Enable plugins to run scheduled tasks"
msgstr ""
-#: common/models.py:992
+#: common/models.py:1004
msgid "Enable event integration"
msgstr ""
-#: common/models.py:993
+#: common/models.py:1005
msgid "Enable plugins to respond to internal events"
msgstr ""
-#: common/models.py:1008 common/models.py:1216
+#: common/models.py:1020 common/models.py:1228
msgid "Settings key (must be unique - case insensitive"
msgstr ""
-#: common/models.py:1039
+#: common/models.py:1051
msgid "Show subscribed parts"
msgstr ""
-#: common/models.py:1040
+#: common/models.py:1052
msgid "Show subscribed parts on the homepage"
msgstr ""
-#: common/models.py:1045
+#: common/models.py:1057
msgid "Show subscribed categories"
msgstr ""
-#: common/models.py:1046
+#: common/models.py:1058
msgid "Show subscribed part categories on the homepage"
msgstr ""
-#: common/models.py:1051
+#: common/models.py:1063
msgid "Show latest parts"
msgstr ""
-#: common/models.py:1052
+#: common/models.py:1064
msgid "Show latest parts on the homepage"
msgstr ""
-#: common/models.py:1057
+#: common/models.py:1069
msgid "Recent Part Count"
msgstr ""
-#: common/models.py:1058
+#: common/models.py:1070
msgid "Number of recent parts to display on index page"
msgstr ""
-#: common/models.py:1064
+#: common/models.py:1076
msgid "Show unvalidated BOMs"
msgstr ""
-#: common/models.py:1065
+#: common/models.py:1077
msgid "Show BOMs that await validation on the homepage"
msgstr ""
-#: common/models.py:1070
+#: common/models.py:1082
msgid "Show recent stock changes"
msgstr ""
-#: common/models.py:1071
+#: common/models.py:1083
msgid "Show recently changed stock items on the homepage"
msgstr ""
-#: common/models.py:1076
+#: common/models.py:1088
msgid "Recent Stock Count"
msgstr ""
-#: common/models.py:1077
+#: common/models.py:1089
msgid "Number of recent stock items to display on index page"
msgstr ""
-#: common/models.py:1082
+#: common/models.py:1094
msgid "Show low stock"
msgstr ""
-#: common/models.py:1083
+#: common/models.py:1095
msgid "Show low stock items on the homepage"
msgstr ""
-#: common/models.py:1088
+#: common/models.py:1100
msgid "Show depleted stock"
msgstr ""
-#: common/models.py:1089
+#: common/models.py:1101
msgid "Show depleted stock items on the homepage"
msgstr ""
-#: common/models.py:1094
+#: common/models.py:1106
msgid "Show needed stock"
msgstr ""
-#: common/models.py:1095
+#: common/models.py:1107
msgid "Show stock items needed for builds on the homepage"
msgstr ""
-#: common/models.py:1100
+#: common/models.py:1112
msgid "Show expired stock"
msgstr ""
-#: common/models.py:1101
+#: common/models.py:1113
msgid "Show expired stock items on the homepage"
msgstr ""
-#: common/models.py:1106
+#: common/models.py:1118
msgid "Show stale stock"
msgstr ""
-#: common/models.py:1107
+#: common/models.py:1119
msgid "Show stale stock items on the homepage"
msgstr ""
-#: common/models.py:1112
+#: common/models.py:1124
msgid "Show pending builds"
msgstr ""
-#: common/models.py:1113
+#: common/models.py:1125
msgid "Show pending builds on the homepage"
msgstr ""
-#: common/models.py:1118
+#: common/models.py:1130
msgid "Show overdue builds"
msgstr ""
-#: common/models.py:1119
+#: common/models.py:1131
msgid "Show overdue builds on the homepage"
msgstr ""
-#: common/models.py:1124
+#: common/models.py:1136
msgid "Show outstanding POs"
msgstr ""
-#: common/models.py:1125
+#: common/models.py:1137
msgid "Show outstanding POs on the homepage"
msgstr ""
-#: common/models.py:1130
+#: common/models.py:1142
msgid "Show overdue POs"
msgstr ""
-#: common/models.py:1131
+#: common/models.py:1143
msgid "Show overdue POs on the homepage"
msgstr ""
-#: common/models.py:1136
+#: common/models.py:1148
msgid "Show outstanding SOs"
msgstr ""
-#: common/models.py:1137
+#: common/models.py:1149
msgid "Show outstanding SOs on the homepage"
msgstr ""
-#: common/models.py:1142
+#: common/models.py:1154
msgid "Show overdue SOs"
msgstr ""
-#: common/models.py:1143
+#: common/models.py:1155
msgid "Show overdue SOs on the homepage"
msgstr ""
-#: common/models.py:1149
+#: common/models.py:1161
msgid "Inline label display"
msgstr ""
-#: common/models.py:1150
+#: common/models.py:1162
msgid "Display PDF labels in the browser, instead of downloading as a file"
msgstr ""
-#: common/models.py:1156
+#: common/models.py:1168
msgid "Inline report display"
msgstr ""
-#: common/models.py:1157
+#: common/models.py:1169
msgid "Display PDF reports in the browser, instead of downloading as a file"
msgstr ""
-#: common/models.py:1163
+#: common/models.py:1175
msgid "Search Preview Results"
msgstr ""
-#: common/models.py:1164
+#: common/models.py:1176
msgid "Number of results to show in search preview window"
msgstr ""
-#: common/models.py:1170
+#: common/models.py:1182
msgid "Search Show Stock"
msgstr ""
-#: common/models.py:1171
+#: common/models.py:1183
msgid "Display stock levels in search preview window"
msgstr ""
-#: common/models.py:1177
+#: common/models.py:1189
msgid "Hide Inactive Parts"
msgstr ""
-#: common/models.py:1178
+#: common/models.py:1190
msgid "Hide inactive parts in search preview window"
msgstr ""
-#: common/models.py:1184
+#: common/models.py:1196
msgid "Show Quantity in Forms"
msgstr ""
-#: common/models.py:1185
+#: common/models.py:1197
msgid "Display available part quantity in some forms"
msgstr ""
-#: common/models.py:1191
+#: common/models.py:1203
msgid "Escape Key Closes Forms"
msgstr ""
-#: common/models.py:1192
+#: common/models.py:1204
msgid "Use the escape key to close modal forms"
msgstr ""
-#: common/models.py:1198
+#: common/models.py:1210
msgid "Fixed Navbar"
msgstr ""
-#: common/models.py:1199
+#: common/models.py:1211
msgid "InvenTree navbar position is fixed to the top of the screen"
msgstr ""
-#: common/models.py:1264 company/forms.py:43
+#: common/models.py:1276 company/forms.py:43
msgid "Price break quantity"
msgstr ""
-#: common/models.py:1271 company/serializers.py:264
+#: common/models.py:1283 company/serializers.py:264
#: company/templates/company/supplier_part.html:256
#: templates/js/translated/part.js:915 templates/js/translated/part.js:1867
msgid "Price"
msgstr ""
-#: common/models.py:1272
+#: common/models.py:1284
msgid "Unit price at specified quantity"
msgstr ""
-#: common/models.py:1429 common/models.py:1568
+#: common/models.py:1441 common/models.py:1580
msgid "Endpoint"
msgstr ""
-#: common/models.py:1430
+#: common/models.py:1442
msgid "Endpoint at which this webhook is received"
msgstr ""
-#: common/models.py:1439
+#: common/models.py:1451
msgid "Name for this webhook"
msgstr ""
-#: common/models.py:1444 part/models.py:948 plugin/models.py:46
+#: common/models.py:1456 part/models.py:978 plugin/models.py:46
#: templates/js/translated/table_filters.js:34
#: templates/js/translated/table_filters.js:96
-#: templates/js/translated/table_filters.js:295
-#: templates/js/translated/table_filters.js:417
+#: templates/js/translated/table_filters.js:290
+#: templates/js/translated/table_filters.js:412
msgid "Active"
msgstr ""
-#: common/models.py:1445
+#: common/models.py:1457
msgid "Is this webhook active"
msgstr ""
-#: common/models.py:1459
+#: common/models.py:1471
msgid "Token"
msgstr ""
-#: common/models.py:1460
+#: common/models.py:1472
msgid "Token for access"
msgstr ""
-#: common/models.py:1467
+#: common/models.py:1479
msgid "Secret"
msgstr ""
-#: common/models.py:1468
+#: common/models.py:1480
msgid "Shared secret for HMAC"
msgstr ""
-#: common/models.py:1535
+#: common/models.py:1547
msgid "Message ID"
msgstr ""
-#: common/models.py:1536
+#: common/models.py:1548
msgid "Unique identifier for this message"
msgstr ""
-#: common/models.py:1544
+#: common/models.py:1556
msgid "Host"
msgstr ""
-#: common/models.py:1545
+#: common/models.py:1557
msgid "Host from which this message was received"
msgstr ""
-#: common/models.py:1552
+#: common/models.py:1564
msgid "Header"
msgstr ""
-#: common/models.py:1553
+#: common/models.py:1565
msgid "Header of this message"
msgstr ""
-#: common/models.py:1559
+#: common/models.py:1571
msgid "Body"
msgstr ""
-#: common/models.py:1560
+#: common/models.py:1572
msgid "Body of this message"
msgstr ""
-#: common/models.py:1569
+#: common/models.py:1581
msgid "Endpoint on which this message was received"
msgstr ""
-#: common/models.py:1574
+#: common/models.py:1586
msgid "Worked on"
msgstr ""
-#: common/models.py:1575
+#: common/models.py:1587
msgid "Was the work on this message finished?"
msgstr ""
#: common/views.py:93 order/templates/order/order_wizard/po_upload.html:49
#: order/templates/order/purchase_order_detail.html:24 order/views.py:243
-#: part/templates/part/bom_upload/upload_file.html:52
-#: part/templates/part/import_wizard/part_upload.html:47 part/views.py:213
-#: part/views.py:773
+#: part/templates/part/import_wizard/part_upload.html:47 part/views.py:210
+#: templates/patterns/wizard/upload.html:35
msgid "Upload File"
msgstr ""
-#: common/views.py:94 order/templates/order/order_wizard/match_fields.html:52
-#: order/views.py:244 part/templates/part/bom_upload/match_fields.html:52
+#: common/views.py:94 order/views.py:244
#: part/templates/part/import_wizard/ajax_match_fields.html:45
-#: part/templates/part/import_wizard/match_fields.html:52 part/views.py:214
-#: part/views.py:774
+#: part/templates/part/import_wizard/match_fields.html:52 part/views.py:211
+#: templates/patterns/wizard/match_fields.html:51
msgid "Match Fields"
msgstr ""
@@ -2328,15 +2345,13 @@ msgstr ""
msgid "Parts imported"
msgstr ""
-#: common/views.py:517 order/templates/order/order_wizard/match_fields.html:27
-#: order/templates/order/order_wizard/match_parts.html:19
+#: common/views.py:517 order/templates/order/order_wizard/match_parts.html:19
#: order/templates/order/order_wizard/po_upload.html:47
-#: part/templates/part/bom_upload/match_fields.html:27
-#: part/templates/part/bom_upload/match_parts.html:19
-#: part/templates/part/bom_upload/upload_file.html:50
#: part/templates/part/import_wizard/match_fields.html:27
#: part/templates/part/import_wizard/match_references.html:19
#: part/templates/part/import_wizard/part_upload.html:45
+#: templates/patterns/wizard/match_fields.html:26
+#: templates/patterns/wizard/upload.html:33
msgid "Previous Step"
msgstr ""
@@ -2404,7 +2419,7 @@ msgstr ""
msgid "Link to external company information"
msgstr ""
-#: company/models.py:139 part/models.py:840
+#: company/models.py:139 part/models.py:870
msgid "Image"
msgstr ""
@@ -2442,7 +2457,7 @@ msgid "Default currency used for this company"
msgstr ""
#: company/models.py:320 company/models.py:535 stock/models.py:471
-#: stock/templates/stock/item_base.html:142 templates/js/translated/bom.js:328
+#: stock/templates/stock/item_base.html:144 templates/js/translated/bom.js:541
msgid "Base Part"
msgstr ""
@@ -2453,11 +2468,11 @@ 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:380
+#: stock/templates/stock/item_base.html:382
#: templates/js/translated/company.js:333
#: templates/js/translated/company.js:517
#: templates/js/translated/company.js:800 templates/js/translated/part.js:234
-#: templates/js/translated/table_filters.js:389
+#: templates/js/translated/table_filters.js:384
msgid "Manufacturer"
msgstr ""
@@ -2488,7 +2503,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:390
+#: stock/templates/stock/item_base.html:392
msgid "Manufacturer Part"
msgstr ""
@@ -2499,7 +2514,7 @@ msgstr ""
#: company/models.py:422
#: report/templates/report/inventree_test_report_base.html:95
#: stock/models.py:1988 templates/js/translated/company.js:647
-#: templates/js/translated/part.js:715 templates/js/translated/stock.js:1304
+#: templates/js/translated/part.js:715 templates/js/translated/stock.js:1332
msgid "Value"
msgstr ""
@@ -2507,9 +2522,9 @@ msgstr ""
msgid "Parameter value"
msgstr ""
-#: company/models.py:429 part/models.py:915 part/models.py:2457
+#: company/models.py:429 part/models.py:945 part/models.py:2493
#: part/templates/part/part_base.html:288
-#: templates/InvenTree/settings/settings.html:287
+#: templates/InvenTree/settings/settings.html:324
#: templates/js/translated/company.js:653 templates/js/translated/part.js:721
msgid "Units"
msgstr ""
@@ -2526,11 +2541,11 @@ msgstr ""
#: company/templates/company/supplier_part.html:87 order/models.py:227
#: order/templates/order/order_base.html:112
#: order/templates/order/order_wizard/select_pos.html:30 part/bom.py:237
-#: part/bom.py:265 stock/templates/stock/item_base.html:397
+#: part/bom.py:265 stock/templates/stock/item_base.html:399
#: templates/js/translated/company.js:337
#: templates/js/translated/company.js:774 templates/js/translated/order.js:823
#: templates/js/translated/part.js:215 templates/js/translated/part.js:863
-#: templates/js/translated/table_filters.js:393
+#: templates/js/translated/table_filters.js:388
msgid "Supplier"
msgstr ""
@@ -2561,22 +2576,23 @@ msgid "Supplier part description"
msgstr ""
#: company/models.py:576 company/templates/company/supplier_part.html:119
-#: part/models.py:2648 report/templates/report/inventree_po_report.html:93
-#: report/templates/report/inventree_so_report.html:93
+#: part/models.py:2717 part/templates/part/upload_bom.html:59
+#: report/templates/report/inventree_po_report.html:93
+#: report/templates/report/inventree_so_report.html:93 stock/serializers.py:409
msgid "Note"
msgstr ""
-#: company/models.py:580 part/models.py:1781
+#: company/models.py:580 part/models.py:1817
msgid "base cost"
msgstr ""
-#: company/models.py:580 part/models.py:1781
+#: company/models.py:580 part/models.py:1817
msgid "Minimum charge (e.g. stocking fee)"
msgstr ""
#: company/models.py:582 company/templates/company/supplier_part.html:112
-#: stock/models.py:495 stock/templates/stock/item_base.html:338
-#: templates/js/translated/company.js:850 templates/js/translated/stock.js:1799
+#: stock/models.py:495 stock/templates/stock/item_base.html:340
+#: templates/js/translated/company.js:850 templates/js/translated/stock.js:1923
msgid "Packaging"
msgstr ""
@@ -2584,7 +2600,7 @@ msgstr ""
msgid "Part packaging"
msgstr ""
-#: company/models.py:584 part/models.py:1783
+#: company/models.py:584 part/models.py:1819
msgid "multiple"
msgstr ""
@@ -2645,11 +2661,11 @@ msgstr ""
#: company/templates/company/company_base.html:83 order/models.py:552
#: order/templates/order/sales_order_base.html:115 stock/models.py:514
-#: stock/models.py:515 stock/serializers.py:626
-#: stock/templates/stock/item_base.html:290
+#: stock/models.py:515 stock/serializers.py:683
+#: stock/templates/stock/item_base.html:292
#: templates/js/translated/company.js:329 templates/js/translated/order.js:1240
-#: templates/js/translated/stock.js:2610
-#: templates/js/translated/table_filters.js:397
+#: templates/js/translated/stock.js:2734
+#: templates/js/translated/table_filters.js:392
msgid "Customer"
msgstr ""
@@ -2679,7 +2695,7 @@ msgstr ""
#: company/templates/company/detail.html:20
#: company/templates/company/manufacturer_part.html:118
-#: part/templates/part/detail.html:353
+#: part/templates/part/detail.html:356
msgid "New Supplier Part"
msgstr ""
@@ -2687,8 +2703,8 @@ msgstr ""
#: company/templates/company/detail.html:79
#: company/templates/company/manufacturer_part.html:127
#: company/templates/company/manufacturer_part.html:156
-#: part/templates/part/category.html:171 part/templates/part/detail.html:362
-#: part/templates/part/detail.html:391
+#: part/templates/part/category.html:171 part/templates/part/detail.html:365
+#: part/templates/part/detail.html:394
msgid "Options"
msgstr ""
@@ -2716,7 +2732,7 @@ msgstr ""
msgid "Create new manufacturer part"
msgstr ""
-#: company/templates/company/detail.html:67 part/templates/part/detail.html:381
+#: company/templates/company/detail.html:67 part/templates/part/detail.html:384
msgid "New Manufacturer Part"
msgstr ""
@@ -2730,7 +2746,7 @@ msgstr ""
#: order/templates/order/order_base.html:13
#: order/templates/order/purchase_orders.html:8
#: order/templates/order/purchase_orders.html:12
-#: part/templates/part/detail.html:85 part/templates/part/part_sidebar.html:37
+#: part/templates/part/detail.html:85 part/templates/part/part_sidebar.html:40
#: templates/InvenTree/index.html:252 templates/InvenTree/search.html:197
#: templates/InvenTree/settings/sidebar.html:45 templates/navbar.html:47
#: users/models.py:45
@@ -2752,7 +2768,7 @@ msgstr ""
#: order/templates/order/sales_order_base.html:13
#: order/templates/order/sales_orders.html:8
#: order/templates/order/sales_orders.html:15
-#: part/templates/part/detail.html:108 part/templates/part/part_sidebar.html:41
+#: part/templates/part/detail.html:108 part/templates/part/part_sidebar.html:44
#: templates/InvenTree/index.html:283 templates/InvenTree/search.html:217
#: templates/InvenTree/settings/sidebar.html:47 templates/navbar.html:58
#: users/models.py:46
@@ -2770,7 +2786,7 @@ msgid "New Sales Order"
msgstr ""
#: company/templates/company/detail.html:168
-#: templates/js/translated/build.js:1059
+#: templates/js/translated/build.js:1281
msgid "Assigned Stock"
msgstr ""
@@ -2780,13 +2796,13 @@ msgstr ""
#: company/templates/company/detail.html:384
#: company/templates/company/manufacturer_part.html:215
-#: part/templates/part/detail.html:435
+#: part/templates/part/detail.html:438
msgid "Delete Supplier Parts?"
msgstr ""
#: company/templates/company/detail.html:385
#: company/templates/company/manufacturer_part.html:216
-#: part/templates/part/detail.html:436
+#: part/templates/part/detail.html:439
msgid "All selected supplier parts will be deleted"
msgstr ""
@@ -2824,36 +2840,36 @@ 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:35 part/templates/part/prices.html:163
+#: part/templates/part/part_sidebar.html:38 part/templates/part/prices.html:163
#: templates/InvenTree/search.html:188 templates/navbar.html:45
msgid "Suppliers"
msgstr ""
#: company/templates/company/manufacturer_part.html:129
-#: part/templates/part/detail.html:364
+#: part/templates/part/detail.html:367
msgid "Delete supplier parts"
msgstr ""
#: company/templates/company/manufacturer_part.html:129
#: company/templates/company/manufacturer_part.html:158
#: company/templates/company/manufacturer_part.html:254
-#: part/templates/part/detail.html:364 part/templates/part/detail.html:393
+#: part/templates/part/detail.html:367 part/templates/part/detail.html:396
#: templates/js/translated/company.js:426 templates/js/translated/helpers.js:31
-#: users/models.py:212
+#: users/models.py:217
msgid "Delete"
msgstr ""
#: company/templates/company/manufacturer_part.html:143
#: company/templates/company/manufacturer_part_sidebar.html:5
#: part/templates/part/category_sidebar.html:17
-#: part/templates/part/detail.html:187 part/templates/part/part_sidebar.html:8
+#: part/templates/part/detail.html:190 part/templates/part/part_sidebar.html:9
msgid "Parameters"
msgstr ""
#: company/templates/company/manufacturer_part.html:147
-#: part/templates/part/detail.html:192
+#: part/templates/part/detail.html:195
#: templates/InvenTree/settings/category.html:12
-#: templates/InvenTree/settings/part.html:65
+#: templates/InvenTree/settings/part.html:66
msgid "New Parameter"
msgstr ""
@@ -2862,7 +2878,7 @@ msgid "Delete parameters"
msgstr ""
#: company/templates/company/manufacturer_part.html:191
-#: part/templates/part/detail.html:892
+#: part/templates/part/detail.html:895
msgid "Add Parameter"
msgstr ""
@@ -2892,8 +2908,8 @@ msgstr ""
#: company/templates/company/supplier_part.html:7
#: company/templates/company/supplier_part.html:24 stock/models.py:479
-#: stock/templates/stock/item_base.html:402
-#: templates/js/translated/company.js:790 templates/js/translated/stock.js:1756
+#: stock/templates/stock/item_base.html:404
+#: templates/js/translated/company.js:790 templates/js/translated/stock.js:1880
msgid "Supplier Part"
msgstr ""
@@ -2919,7 +2935,7 @@ msgstr ""
#: company/templates/company/supplier_part.html:142
#: part/templates/part/detail.html:25 stock/templates/stock/location.html:167
-#: templates/js/translated/stock.js:368
+#: templates/js/translated/stock.js:369
msgid "New Stock Item"
msgstr ""
@@ -2940,7 +2956,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:1628
+#: part/templates/part/prices.html:271 part/views.py:1319
msgid "Add Price Break"
msgstr ""
@@ -2948,11 +2964,11 @@ msgstr ""
msgid "No price break information found"
msgstr ""
-#: company/templates/company/supplier_part.html:224 part/views.py:1690
+#: company/templates/company/supplier_part.html:224 part/views.py:1381
msgid "Delete Price Break"
msgstr ""
-#: company/templates/company/supplier_part.html:238 part/views.py:1676
+#: company/templates/company/supplier_part.html:238 part/views.py:1367
msgid "Edit Price Break"
msgstr ""
@@ -2965,15 +2981,15 @@ msgid "Delete price break"
msgstr ""
#: company/templates/company/supplier_part_navbar.html:15
-#: part/templates/part/part_sidebar.html:14
+#: part/templates/part/part_sidebar.html:15
#: 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:150
#: templates/InvenTree/settings/sidebar.html:41
-#: templates/js/translated/bom.js:340 templates/js/translated/part.js:495
+#: templates/js/translated/bom.js:553 templates/js/translated/part.js:495
#: templates/js/translated/part.js:630 templates/js/translated/part.js:1125
-#: templates/js/translated/part.js:1286 templates/js/translated/stock.js:935
-#: templates/js/translated/stock.js:1588 templates/navbar.html:28
+#: templates/js/translated/part.js:1286 templates/js/translated/stock.js:936
+#: templates/js/translated/stock.js:1712 templates/navbar.html:28
msgid "Stock"
msgstr ""
@@ -2987,7 +3003,7 @@ msgid "Supplier Part Pricing"
msgstr ""
#: company/templates/company/supplier_part_navbar.html:29
-#: part/templates/part/part_sidebar.html:28
+#: part/templates/part/part_sidebar.html:30
msgid "Pricing"
msgstr ""
@@ -2996,7 +3012,7 @@ msgstr ""
#: stock/templates/stock/location.html:151
#: stock/templates/stock/location.html:163
#: stock/templates/stock/location_sidebar.html:7
-#: templates/InvenTree/search.html:152 templates/js/translated/stock.js:2509
+#: templates/InvenTree/search.html:152 templates/js/translated/stock.js:2633
#: templates/stats.html:105 templates/stats.html:114 users/models.py:43
msgid "Stock Items"
msgstr ""
@@ -3026,20 +3042,20 @@ msgstr ""
msgid "New Company"
msgstr ""
-#: company/views.py:129 part/views.py:593
+#: company/views.py:129 part/views.py:591
msgid "Download Image"
msgstr ""
-#: company/views.py:158 part/views.py:625
+#: company/views.py:158 part/views.py:623
msgid "Image size exceeds maximum allowable size for download"
msgstr ""
-#: company/views.py:165 part/views.py:632
+#: company/views.py:165 part/views.py:630
#, python-brace-format
msgid "Invalid response: {code}"
msgstr ""
-#: company/views.py:174 part/views.py:641
+#: company/views.py:174 part/views.py:639
msgid "Supplied URL is not a valid image file"
msgstr ""
@@ -3256,16 +3272,16 @@ msgid "Supplier part must match supplier"
msgstr ""
#: order/models.py:855 order/models.py:946 order/models.py:1042
-#: templates/js/translated/order.js:1820 templates/js/translated/stock.js:2271
+#: templates/js/translated/order.js:1820 templates/js/translated/stock.js:2395
msgid "Order"
msgstr ""
#: order/models.py:856 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:352
+#: stock/templates/stock/item_base.html:354
#: templates/js/translated/order.js:801 templates/js/translated/part.js:838
-#: templates/js/translated/stock.js:1733 templates/js/translated/stock.js:2591
+#: templates/js/translated/stock.js:1857 templates/js/translated/stock.js:2715
msgid "Purchase Order"
msgstr ""
@@ -3276,7 +3292,7 @@ msgstr ""
#: order/models.py:884 order/templates/order/order_base.html:163
#: templates/js/translated/order.js:589 templates/js/translated/order.js:1118
#: templates/js/translated/part.js:910 templates/js/translated/part.js:937
-#: templates/js/translated/table_filters.js:317
+#: templates/js/translated/table_filters.js:312
msgid "Received"
msgstr ""
@@ -3285,8 +3301,8 @@ msgid "Number of items received"
msgstr ""
#: order/models.py:892 part/templates/part/prices.html:176 stock/models.py:608
-#: stock/serializers.py:170 stock/templates/stock/item_base.html:359
-#: templates/js/translated/stock.js:1787
+#: stock/serializers.py:170 stock/templates/stock/item_base.html:361
+#: templates/js/translated/stock.js:1911
msgid "Purchase Price"
msgstr ""
@@ -3530,7 +3546,7 @@ msgstr ""
#: order/templates/order/order_base.html:94
#: order/templates/order/sales_order_base.html:89
-#: templates/js/translated/stock.js:2327
+#: templates/js/translated/stock.js:2451
msgid "Order Status"
msgstr ""
@@ -3574,73 +3590,20 @@ msgstr ""
msgid "After placing this purchase order, line items will no longer be editable."
msgstr ""
-#: order/templates/order/order_wizard/match_fields.html:9
-#: part/templates/part/bom_upload/match_fields.html:9
-#: part/templates/part/import_wizard/ajax_match_fields.html:9
-#: part/templates/part/import_wizard/match_fields.html:9
-msgid "Missing selections for the following required columns"
-msgstr ""
-
-#: order/templates/order/order_wizard/match_fields.html:20
-#: part/templates/part/bom_upload/match_fields.html:20
-#: part/templates/part/import_wizard/ajax_match_fields.html:20
-#: part/templates/part/import_wizard/match_fields.html:20
-msgid "Duplicate selections found, see below. Fix them then retry submitting."
-msgstr ""
-
-#: order/templates/order/order_wizard/match_fields.html:29
-#: order/templates/order/order_wizard/match_parts.html:21
-#: part/templates/part/bom_upload/match_fields.html:29
-#: part/templates/part/bom_upload/match_parts.html:21
-#: part/templates/part/import_wizard/match_fields.html:29
-#: part/templates/part/import_wizard/match_references.html:21
-msgid "Submit Selections"
-msgstr ""
-
-#: order/templates/order/order_wizard/match_fields.html:35
-#: part/templates/part/bom_upload/match_fields.html:35
-#: part/templates/part/import_wizard/ajax_match_fields.html:28
-#: part/templates/part/import_wizard/match_fields.html:35
-msgid "File Fields"
-msgstr ""
-
-#: order/templates/order/order_wizard/match_fields.html:42
-#: part/templates/part/bom_upload/match_fields.html:42
-#: part/templates/part/import_wizard/ajax_match_fields.html:35
-#: part/templates/part/import_wizard/match_fields.html:42
-msgid "Remove column"
-msgstr ""
-
-#: order/templates/order/order_wizard/match_fields.html:60
-#: part/templates/part/bom_upload/match_fields.html:60
-#: part/templates/part/import_wizard/ajax_match_fields.html:53
-#: part/templates/part/import_wizard/match_fields.html:60
-msgid "Duplicate selection"
-msgstr ""
-
-#: order/templates/order/order_wizard/match_fields.html:71
-#: order/templates/order/order_wizard/match_parts.html:52
-#: part/templates/part/bom_upload/match_fields.html:71
-#: part/templates/part/bom_upload/match_parts.html:53
-#: part/templates/part/import_wizard/ajax_match_fields.html:64
-#: part/templates/part/import_wizard/ajax_match_references.html:42
-#: part/templates/part/import_wizard/match_fields.html:71
-#: part/templates/part/import_wizard/match_references.html:49
-#: templates/js/translated/build.js:300 templates/js/translated/build.js:1311
-#: templates/js/translated/order.js:537 templates/js/translated/order.js:1488
-#: templates/js/translated/stock.js:601 templates/js/translated/stock.js:769
-msgid "Remove row"
-msgstr ""
-
#: order/templates/order/order_wizard/match_parts.html:12
-#: part/templates/part/bom_upload/match_parts.html:12
#: part/templates/part/import_wizard/ajax_match_references.html:12
#: part/templates/part/import_wizard/match_references.html:12
msgid "Errors exist in the submitted data"
msgstr ""
+#: order/templates/order/order_wizard/match_parts.html:21
+#: part/templates/part/import_wizard/match_fields.html:29
+#: part/templates/part/import_wizard/match_references.html:21
+#: templates/patterns/wizard/match_fields.html:28
+msgid "Submit Selections"
+msgstr ""
+
#: order/templates/order/order_wizard/match_parts.html:28
-#: part/templates/part/bom_upload/match_parts.html:28
#: part/templates/part/import_wizard/ajax_match_references.html:21
#: part/templates/part/import_wizard/match_references.html:28
msgid "Row"
@@ -3650,6 +3613,19 @@ msgstr ""
msgid "Select Supplier Part"
msgstr ""
+#: order/templates/order/order_wizard/match_parts.html:52
+#: part/templates/part/import_wizard/ajax_match_fields.html:64
+#: part/templates/part/import_wizard/ajax_match_references.html:42
+#: part/templates/part/import_wizard/match_fields.html:71
+#: part/templates/part/import_wizard/match_references.html:49
+#: templates/js/translated/bom.js:76 templates/js/translated/build.js:380
+#: templates/js/translated/build.js:528 templates/js/translated/build.js:1547
+#: templates/js/translated/order.js:537 templates/js/translated/order.js:1488
+#: templates/js/translated/stock.js:602 templates/js/translated/stock.js:770
+#: templates/patterns/wizard/match_fields.html:70
+msgid "Remove row"
+msgstr ""
+
#: order/templates/order/order_wizard/po_upload.html:8
msgid "Return to Orders"
msgstr ""
@@ -3659,9 +3635,9 @@ msgid "Upload File for Purchase Order"
msgstr ""
#: order/templates/order/order_wizard/po_upload.html:25
-#: part/templates/part/bom_upload/upload_file.html:21
#: part/templates/part/import_wizard/ajax_part_upload.html:10
#: part/templates/part/import_wizard/part_upload.html:23
+#: templates/patterns/wizard/upload.html:11
#, python-format
msgid "Step %(step)s of %(count)s"
msgstr ""
@@ -3819,7 +3795,7 @@ msgid "Pending Shipments"
msgstr ""
#: order/templates/order/sales_order_detail.html:48
-#: templates/js/translated/bom.js:732 templates/js/translated/build.js:1243
+#: templates/js/translated/bom.js:945 templates/js/translated/build.js:1465
msgid "Actions"
msgstr ""
@@ -3922,7 +3898,7 @@ msgstr ""
msgid "This field is required"
msgstr ""
-#: part/bom.py:125 part/models.py:83 part/models.py:849
+#: part/bom.py:125 part/models.py:83 part/models.py:879
#: part/templates/part/category.html:108 part/templates/part/part_base.html:338
msgid "Default Location"
msgstr ""
@@ -3968,7 +3944,7 @@ msgstr ""
msgid "Default keywords for parts in this category"
msgstr ""
-#: part/models.py:97 part/models.py:2533 part/templates/part/category.html:15
+#: part/models.py:97 part/models.py:2569 part/templates/part/category.html:15
#: part/templates/part/part_app_base.html:10
msgid "Part Category"
msgstr ""
@@ -3994,408 +3970,478 @@ msgstr ""
msgid "Invalid choice for parent part"
msgstr ""
-#: part/models.py:502 part/models.py:514
+#: part/models.py:532 part/models.py:544
#, python-brace-format
msgid "Part '{p1}' is used in BOM for '{p2}' (recursive)"
msgstr ""
-#: part/models.py:644
+#: part/models.py:674
msgid "Next available serial numbers are"
msgstr ""
-#: part/models.py:648
+#: part/models.py:678
msgid "Next available serial number is"
msgstr ""
-#: part/models.py:653
+#: part/models.py:683
msgid "Most recent serial number is"
msgstr ""
-#: part/models.py:748
+#: part/models.py:778
msgid "Duplicate IPN not allowed in part settings"
msgstr ""
-#: part/models.py:773
+#: part/models.py:803 part/models.py:2622
msgid "Part name"
msgstr ""
-#: part/models.py:780
+#: part/models.py:810
msgid "Is Template"
msgstr ""
-#: part/models.py:781
+#: part/models.py:811
msgid "Is this part a template part?"
msgstr ""
-#: part/models.py:791
+#: part/models.py:821
msgid "Is this part a variant of another part?"
msgstr ""
-#: part/models.py:792
+#: part/models.py:822
msgid "Variant Of"
msgstr ""
-#: part/models.py:798
+#: part/models.py:828
msgid "Part description"
msgstr ""
-#: part/models.py:803 part/templates/part/category.html:86
+#: part/models.py:833 part/templates/part/category.html:86
#: part/templates/part/part_base.html:302
msgid "Keywords"
msgstr ""
-#: part/models.py:804
+#: part/models.py:834
msgid "Part keywords to improve visibility in search results"
msgstr ""
-#: part/models.py:811 part/models.py:2283 part/models.py:2532
+#: part/models.py:841 part/models.py:2319 part/models.py:2568
#: part/templates/part/part_base.html:265
#: part/templates/part/set_category.html:15
-#: templates/InvenTree/settings/settings.html:186
+#: templates/InvenTree/settings/settings.html:223
#: templates/js/translated/part.js:1268
msgid "Category"
msgstr ""
-#: part/models.py:812
+#: part/models.py:842
msgid "Part category"
msgstr ""
-#: part/models.py:817 part/templates/part/part_base.html:274
+#: part/models.py:847 part/templates/part/part_base.html:274
#: templates/js/translated/part.js:618 templates/js/translated/part.js:1221
-#: templates/js/translated/stock.js:1560
+#: templates/js/translated/stock.js:1684
msgid "IPN"
msgstr ""
-#: part/models.py:818
+#: part/models.py:848
msgid "Internal Part Number"
msgstr ""
-#: part/models.py:824
+#: part/models.py:854
msgid "Part revision or version number"
msgstr ""
-#: part/models.py:825 part/templates/part/part_base.html:281
+#: part/models.py:855 part/templates/part/part_base.html:281
#: report/models.py:200 templates/js/translated/part.js:622
msgid "Revision"
msgstr ""
-#: part/models.py:847
+#: part/models.py:877
msgid "Where is this item normally stored?"
msgstr ""
-#: part/models.py:894 part/templates/part/part_base.html:347
+#: part/models.py:924 part/templates/part/part_base.html:347
msgid "Default Supplier"
msgstr ""
-#: part/models.py:895
+#: part/models.py:925
msgid "Default supplier part"
msgstr ""
-#: part/models.py:902
+#: part/models.py:932
msgid "Default Expiry"
msgstr ""
-#: part/models.py:903
+#: part/models.py:933
msgid "Expiry time (in days) for stock items of this part"
msgstr ""
-#: part/models.py:908 part/templates/part/part_base.html:196
+#: part/models.py:938 part/templates/part/part_base.html:196
msgid "Minimum Stock"
msgstr ""
-#: part/models.py:909
+#: part/models.py:939
msgid "Minimum allowed stock level"
msgstr ""
-#: part/models.py:916
+#: part/models.py:946
msgid "Stock keeping units for this part"
msgstr ""
-#: part/models.py:922
+#: part/models.py:952
msgid "Can this part be built from other parts?"
msgstr ""
-#: part/models.py:928
+#: part/models.py:958
msgid "Can this part be used to build other parts?"
msgstr ""
-#: part/models.py:934
+#: part/models.py:964
msgid "Does this part have tracking for unique items?"
msgstr ""
-#: part/models.py:939
+#: part/models.py:969
msgid "Can this part be purchased from external suppliers?"
msgstr ""
-#: part/models.py:944
+#: part/models.py:974
msgid "Can this part be sold to customers?"
msgstr ""
-#: part/models.py:949
+#: part/models.py:979
msgid "Is this part active?"
msgstr ""
-#: part/models.py:954
+#: part/models.py:984
msgid "Is this a virtual part, such as a software product or license?"
msgstr ""
-#: part/models.py:959
+#: part/models.py:989
msgid "Part notes - supports Markdown formatting"
msgstr ""
-#: part/models.py:962
+#: part/models.py:992
msgid "BOM checksum"
msgstr ""
-#: part/models.py:962
+#: part/models.py:992
msgid "Stored BOM checksum"
msgstr ""
-#: part/models.py:965
+#: part/models.py:995
msgid "BOM checked by"
msgstr ""
-#: part/models.py:967
+#: part/models.py:997
msgid "BOM checked date"
msgstr ""
-#: part/models.py:971
+#: part/models.py:1001
msgid "Creation User"
msgstr ""
-#: part/models.py:1783
+#: part/models.py:1819
msgid "Sell multiple"
msgstr ""
-#: part/models.py:2333
+#: part/models.py:2369
msgid "Test templates can only be created for trackable parts"
msgstr ""
-#: part/models.py:2350
+#: part/models.py:2386
msgid "Test with this name already exists for this part"
msgstr ""
-#: part/models.py:2370 templates/js/translated/part.js:1714
-#: templates/js/translated/stock.js:1284
+#: part/models.py:2406 templates/js/translated/part.js:1714
+#: templates/js/translated/stock.js:1312
msgid "Test Name"
msgstr ""
-#: part/models.py:2371
+#: part/models.py:2407
msgid "Enter a name for the test"
msgstr ""
-#: part/models.py:2376
+#: part/models.py:2412
msgid "Test Description"
msgstr ""
-#: part/models.py:2377
+#: part/models.py:2413
msgid "Enter description for this test"
msgstr ""
-#: part/models.py:2382 templates/js/translated/part.js:1723
-#: templates/js/translated/table_filters.js:281
+#: part/models.py:2418 templates/js/translated/part.js:1723
+#: templates/js/translated/table_filters.js:276
msgid "Required"
msgstr ""
-#: part/models.py:2383
+#: part/models.py:2419
msgid "Is this test required to pass?"
msgstr ""
-#: part/models.py:2388 templates/js/translated/part.js:1731
+#: part/models.py:2424 templates/js/translated/part.js:1731
msgid "Requires Value"
msgstr ""
-#: part/models.py:2389
+#: part/models.py:2425
msgid "Does this test require a value when adding a test result?"
msgstr ""
-#: part/models.py:2394 templates/js/translated/part.js:1738
+#: part/models.py:2430 templates/js/translated/part.js:1738
msgid "Requires Attachment"
msgstr ""
-#: part/models.py:2395
+#: part/models.py:2431
msgid "Does this test require a file attachment when adding a test result?"
msgstr ""
-#: part/models.py:2406
+#: part/models.py:2442
#, python-brace-format
msgid "Illegal character in template name ({c})"
msgstr ""
-#: part/models.py:2442
+#: part/models.py:2478
msgid "Parameter template name must be unique"
msgstr ""
-#: part/models.py:2450
+#: part/models.py:2486
msgid "Parameter Name"
msgstr ""
-#: part/models.py:2457
+#: part/models.py:2493
msgid "Parameter Units"
msgstr ""
-#: part/models.py:2487
+#: part/models.py:2523
msgid "Parent Part"
msgstr ""
-#: part/models.py:2489 part/models.py:2538 part/models.py:2539
-#: templates/InvenTree/settings/settings.html:181
+#: part/models.py:2525 part/models.py:2574 part/models.py:2575
+#: templates/InvenTree/settings/settings.html:218
msgid "Parameter Template"
msgstr ""
-#: part/models.py:2491
+#: part/models.py:2527
msgid "Data"
msgstr ""
-#: part/models.py:2491
+#: part/models.py:2527
msgid "Parameter Value"
msgstr ""
-#: part/models.py:2543 templates/InvenTree/settings/settings.html:190
+#: part/models.py:2579 templates/InvenTree/settings/settings.html:227
msgid "Default Value"
msgstr ""
-#: part/models.py:2544
+#: part/models.py:2580
msgid "Default Parameter Value"
msgstr ""
+#: part/models.py:2614
+msgid "Part ID or part name"
+msgstr ""
+
+#: part/models.py:2617 templates/js/translated/model_renderers.js:182
+msgid "Part ID"
+msgstr ""
+
+#: part/models.py:2618
+msgid "Unique part ID value"
+msgstr ""
+
#: part/models.py:2621
-msgid "Select parent part"
+msgid "Part Name"
+msgstr ""
+
+#: part/models.py:2625
+msgid "Part IPN"
+msgstr ""
+
+#: part/models.py:2626
+msgid "Part IPN value"
msgstr ""
#: part/models.py:2629
-msgid "Sub part"
+msgid "Level"
msgstr ""
#: part/models.py:2630
+msgid "BOM level"
+msgstr ""
+
+#: part/models.py:2690
+msgid "Select parent part"
+msgstr ""
+
+#: part/models.py:2698
+msgid "Sub part"
+msgstr ""
+
+#: part/models.py:2699
msgid "Select part to be used in BOM"
msgstr ""
-#: part/models.py:2636
+#: part/models.py:2705
msgid "BOM quantity for this BOM item"
msgstr ""
-#: part/models.py:2638 templates/js/translated/bom.js:578
-#: templates/js/translated/bom.js:652
+#: part/models.py:2707 part/templates/part/upload_bom.html:58
+#: templates/js/translated/bom.js:791 templates/js/translated/bom.js:865
#: templates/js/translated/table_filters.js:92
msgid "Optional"
msgstr ""
-#: part/models.py:2638
+#: part/models.py:2707
msgid "This BOM item is optional"
msgstr ""
-#: part/models.py:2641
+#: part/models.py:2710 part/templates/part/upload_bom.html:55
msgid "Overage"
msgstr ""
-#: part/models.py:2642
+#: part/models.py:2711
msgid "Estimated build wastage quantity (absolute or percentage)"
msgstr ""
-#: part/models.py:2645
+#: part/models.py:2714
msgid "BOM item reference"
msgstr ""
-#: part/models.py:2648
+#: part/models.py:2717
msgid "BOM item notes"
msgstr ""
-#: part/models.py:2650
+#: part/models.py:2719
msgid "Checksum"
msgstr ""
-#: part/models.py:2650
+#: part/models.py:2719
msgid "BOM line checksum"
msgstr ""
-#: part/models.py:2654 templates/js/translated/bom.js:669
+#: part/models.py:2723 part/templates/part/upload_bom.html:57
+#: templates/js/translated/bom.js:882
#: templates/js/translated/table_filters.js:68
#: templates/js/translated/table_filters.js:88
msgid "Inherited"
msgstr ""
-#: part/models.py:2655
+#: part/models.py:2724
msgid "This BOM item is inherited by BOMs for variant parts"
msgstr ""
-#: part/models.py:2660 templates/js/translated/bom.js:661
+#: part/models.py:2729 part/templates/part/upload_bom.html:56
+#: templates/js/translated/bom.js:874
msgid "Allow Variants"
msgstr ""
-#: part/models.py:2661
+#: part/models.py:2730
msgid "Stock items for variant parts can be used for this BOM item"
msgstr ""
-#: part/models.py:2746 stock/models.py:357
+#: part/models.py:2815 stock/models.py:357
msgid "Quantity must be integer value for trackable parts"
msgstr ""
-#: part/models.py:2755 part/models.py:2757
+#: part/models.py:2824 part/models.py:2826
msgid "Sub part must be specified"
msgstr ""
-#: part/models.py:2886
+#: part/models.py:2955
msgid "BOM Item Substitute"
msgstr ""
-#: part/models.py:2908
+#: part/models.py:2977
msgid "Substitute part cannot be the same as the master part"
msgstr ""
-#: part/models.py:2920
+#: part/models.py:2989
msgid "Parent BOM item"
msgstr ""
-#: part/models.py:2928
+#: part/models.py:2997
msgid "Substitute part"
msgstr ""
-#: part/models.py:2939
+#: part/models.py:3008
msgid "Part 1"
msgstr ""
-#: part/models.py:2943
+#: part/models.py:3012
msgid "Part 2"
msgstr ""
-#: part/models.py:2943
+#: part/models.py:3012
msgid "Select Related Part"
msgstr ""
-#: part/models.py:2975
+#: part/models.py:3044
msgid "Error creating relationship: check that the part is not related to itself and that the relationship is unique"
msgstr ""
-#: part/serializers.py:659
+#: part/serializers.py:667
msgid "Select part to copy BOM from"
msgstr ""
-#: part/serializers.py:670
+#: part/serializers.py:678
msgid "Remove Existing Data"
msgstr ""
-#: part/serializers.py:671
+#: part/serializers.py:679
msgid "Remove existing BOM items before copying"
msgstr ""
-#: part/serializers.py:676
+#: part/serializers.py:684
msgid "Include Inherited"
msgstr ""
-#: part/serializers.py:677
+#: part/serializers.py:685
msgid "Include BOM items which are inherited from templated parts"
msgstr ""
-#: part/serializers.py:682
+#: part/serializers.py:690
msgid "Skip Invalid Rows"
msgstr ""
-#: part/serializers.py:683
+#: part/serializers.py:691
msgid "Enable this option to skip invalid rows"
msgstr ""
-#: part/tasks.py:53
+#: part/serializers.py:734
+msgid "Clear Existing BOM"
+msgstr ""
+
+#: part/serializers.py:735
+msgid "Delete existing BOM items before uploading"
+msgstr ""
+
+#: part/serializers.py:762
+msgid "No part column specified"
+msgstr ""
+
+#: part/serializers.py:806
+msgid "Multiple matching parts found"
+msgstr ""
+
+#: part/serializers.py:809
+msgid "No matching part found"
+msgstr ""
+
+#: part/serializers.py:812
+msgid "Part is not designated as a component"
+msgstr ""
+
+#: part/serializers.py:821
+msgid "Quantity not provided"
+msgstr ""
+
+#: part/serializers.py:829
+msgid "Invalid quantity"
+msgstr ""
+
+#: part/serializers.py:848
+msgid "At least one BOM item is required"
+msgstr ""
+
+#: part/tasks.py:58
msgid "Low stock notification"
msgstr ""
@@ -4418,7 +4464,7 @@ msgstr ""
msgid "The BOM for %(part)s has not been validated."
msgstr ""
-#: part/templates/part/bom.html:30 part/templates/part/detail.html:270
+#: part/templates/part/bom.html:30 part/templates/part/detail.html:273
msgid "BOM actions"
msgstr ""
@@ -4426,34 +4472,6 @@ msgstr ""
msgid "Delete Items"
msgstr ""
-#: part/templates/part/bom_upload/match_parts.html:29
-msgid "Select Part"
-msgstr ""
-
-#: part/templates/part/bom_upload/upload_file.html:8
-msgid "Return to BOM"
-msgstr ""
-
-#: part/templates/part/bom_upload/upload_file.html:13
-msgid "Upload Bill of Materials"
-msgstr ""
-
-#: part/templates/part/bom_upload/upload_file.html:33
-msgid "Requirements for BOM upload"
-msgstr ""
-
-#: part/templates/part/bom_upload/upload_file.html:35
-msgid "The BOM file must contain the required named columns as provided in the "
-msgstr ""
-
-#: part/templates/part/bom_upload/upload_file.html:35
-msgid "BOM Upload Template"
-msgstr ""
-
-#: part/templates/part/bom_upload/upload_file.html:36
-msgid "Each part must already exist in the database"
-msgstr ""
-
#: part/templates/part/category.html:28 part/templates/part/category.html:32
msgid "You are subscribed to notifications for this category"
msgstr ""
@@ -4519,7 +4537,7 @@ msgstr ""
msgid "Create new part"
msgstr ""
-#: part/templates/part/category.html:161 templates/js/translated/bom.js:152
+#: part/templates/part/category.html:161 templates/js/translated/bom.js:365
msgid "New Part"
msgstr ""
@@ -4639,138 +4657,168 @@ msgstr ""
msgid "Sales Order Allocations"
msgstr ""
-#: part/templates/part/detail.html:159
+#: part/templates/part/detail.html:162
msgid "Part Variants"
msgstr ""
-#: part/templates/part/detail.html:163
+#: part/templates/part/detail.html:166
msgid "Create new variant"
msgstr ""
-#: part/templates/part/detail.html:164
+#: part/templates/part/detail.html:167
msgid "New Variant"
msgstr ""
-#: part/templates/part/detail.html:191
+#: part/templates/part/detail.html:194
msgid "Add new parameter"
msgstr ""
-#: part/templates/part/detail.html:228 part/templates/part/part_sidebar.html:49
+#: part/templates/part/detail.html:231 part/templates/part/part_sidebar.html:52
msgid "Related Parts"
msgstr ""
-#: part/templates/part/detail.html:232 part/templates/part/detail.html:233
+#: part/templates/part/detail.html:235 part/templates/part/detail.html:236
msgid "Add Related"
msgstr ""
-#: part/templates/part/detail.html:253 part/templates/part/part_sidebar.html:17
+#: part/templates/part/detail.html:256 part/templates/part/part_sidebar.html:18
msgid "Bill of Materials"
msgstr ""
-#: part/templates/part/detail.html:258
+#: part/templates/part/detail.html:261
msgid "Export actions"
msgstr ""
-#: part/templates/part/detail.html:262 templates/js/translated/bom.js:70
+#: part/templates/part/detail.html:265 templates/js/translated/bom.js:283
msgid "Export BOM"
msgstr ""
-#: part/templates/part/detail.html:264
+#: part/templates/part/detail.html:267
msgid "Print BOM Report"
msgstr ""
-#: part/templates/part/detail.html:274
+#: part/templates/part/detail.html:277
msgid "Upload BOM"
msgstr ""
-#: part/templates/part/detail.html:276 templates/js/translated/part.js:272
+#: part/templates/part/detail.html:279 templates/js/translated/part.js:272
msgid "Copy BOM"
msgstr ""
-#: part/templates/part/detail.html:278
+#: part/templates/part/detail.html:281
msgid "Validate BOM"
msgstr ""
-#: part/templates/part/detail.html:283
+#: part/templates/part/detail.html:286
msgid "New BOM Item"
msgstr ""
-#: part/templates/part/detail.html:284
+#: part/templates/part/detail.html:287
msgid "Add BOM Item"
msgstr ""
-#: part/templates/part/detail.html:297
+#: part/templates/part/detail.html:300
msgid "Assemblies"
msgstr ""
-#: part/templates/part/detail.html:314
+#: part/templates/part/detail.html:317
msgid "Part Builds"
msgstr ""
-#: part/templates/part/detail.html:339
+#: part/templates/part/detail.html:342
msgid "Build Order Allocations"
msgstr ""
-#: part/templates/part/detail.html:349
+#: part/templates/part/detail.html:352
msgid "Part Suppliers"
msgstr ""
-#: part/templates/part/detail.html:377
+#: part/templates/part/detail.html:380
msgid "Part Manufacturers"
msgstr ""
-#: part/templates/part/detail.html:393
+#: part/templates/part/detail.html:396
msgid "Delete manufacturer parts"
msgstr ""
-#: part/templates/part/detail.html:575
+#: part/templates/part/detail.html:578
msgid "Delete selected BOM items?"
msgstr ""
-#: part/templates/part/detail.html:576
+#: part/templates/part/detail.html:579
msgid "All selected BOM items will be deleted"
msgstr ""
-#: part/templates/part/detail.html:625
+#: part/templates/part/detail.html:628
msgid "Create BOM Item"
msgstr ""
-#: part/templates/part/detail.html:682
+#: part/templates/part/detail.html:685
msgid "Related Part"
msgstr ""
-#: part/templates/part/detail.html:690
+#: part/templates/part/detail.html:693
msgid "Add Related Part"
msgstr ""
-#: part/templates/part/detail.html:785
+#: part/templates/part/detail.html:788
msgid "Add Test Result Template"
msgstr ""
-#: part/templates/part/detail.html:842
+#: part/templates/part/detail.html:845
msgid "Edit Part Notes"
msgstr ""
-#: part/templates/part/detail.html:955
+#: part/templates/part/detail.html:958
#, python-format
msgid "Purchase Unit Price - %(currency)s"
msgstr ""
-#: part/templates/part/detail.html:967
+#: part/templates/part/detail.html:970
#, python-format
msgid "Unit Price-Cost Difference - %(currency)s"
msgstr ""
-#: part/templates/part/detail.html:979
+#: part/templates/part/detail.html:982
#, python-format
msgid "Supplier Unit Cost - %(currency)s"
msgstr ""
-#: part/templates/part/detail.html:1068
+#: part/templates/part/detail.html:1071
#, python-format
msgid "Unit Price - %(currency)s"
msgstr ""
+#: part/templates/part/import_wizard/ajax_match_fields.html:9
+#: part/templates/part/import_wizard/match_fields.html:9
+#: templates/patterns/wizard/match_fields.html:8
+msgid "Missing selections for the following required columns"
+msgstr ""
+
+#: part/templates/part/import_wizard/ajax_match_fields.html:20
+#: part/templates/part/import_wizard/match_fields.html:20
+#: templates/patterns/wizard/match_fields.html:19
+msgid "Duplicate selections found, see below. Fix them then retry submitting."
+msgstr ""
+
+#: part/templates/part/import_wizard/ajax_match_fields.html:28
+#: part/templates/part/import_wizard/match_fields.html:35
+#: templates/patterns/wizard/match_fields.html:34
+msgid "File Fields"
+msgstr ""
+
+#: part/templates/part/import_wizard/ajax_match_fields.html:35
+#: part/templates/part/import_wizard/match_fields.html:42
+#: templates/patterns/wizard/match_fields.html:41
+msgid "Remove column"
+msgstr ""
+
+#: part/templates/part/import_wizard/ajax_match_fields.html:53
+#: part/templates/part/import_wizard/match_fields.html:60
+#: templates/patterns/wizard/match_fields.html:59
+msgid "Duplicate selection"
+msgstr ""
+
#: part/templates/part/import_wizard/ajax_part_upload.html:29
#: part/templates/part/import_wizard/part_upload.html:53
msgid "Unsuffitient privileges."
@@ -4819,7 +4867,7 @@ msgid "Show pricing information"
msgstr ""
#: part/templates/part/part_base.html:56
-#: stock/templates/stock/item_base.html:110
+#: stock/templates/stock/item_base.html:112
#: stock/templates/stock/location.html:44
msgid "Stock actions"
msgstr ""
@@ -4912,7 +4960,7 @@ msgstr ""
msgid "Allocated to Orders"
msgstr ""
-#: part/templates/part/part_base.html:239 templates/js/translated/bom.js:690
+#: part/templates/part/part_base.html:239 templates/js/translated/bom.js:903
msgid "Can Build"
msgstr ""
@@ -4930,7 +4978,7 @@ msgid "Latest Serial Number"
msgstr ""
#: part/templates/part/part_base.html:328
-#: stock/templates/stock/item_base.html:166
+#: stock/templates/stock/item_base.html:168
msgid "Search for serial number"
msgstr ""
@@ -4969,7 +5017,7 @@ msgid "Total Cost"
msgstr ""
#: part/templates/part/part_pricing.html:40 part/templates/part/prices.html:40
-#: templates/js/translated/bom.js:644
+#: templates/js/translated/bom.js:857
msgid "No supplier pricing available"
msgstr ""
@@ -5003,20 +5051,20 @@ msgstr ""
msgid "No pricing information is available for this part."
msgstr ""
-#: part/templates/part/part_sidebar.html:11
+#: part/templates/part/part_sidebar.html:12
msgid "Variants"
msgstr ""
-#: part/templates/part/part_sidebar.html:25
+#: part/templates/part/part_sidebar.html:26
msgid "Used In"
msgstr ""
-#: part/templates/part/part_sidebar.html:31
+#: part/templates/part/part_sidebar.html:34
#: stock/templates/stock/stock_sidebar.html:8
msgid "Allocations"
msgstr ""
-#: part/templates/part/part_sidebar.html:45
+#: part/templates/part/part_sidebar.html:48
msgid "Test Templates"
msgstr ""
@@ -5089,7 +5137,7 @@ msgstr ""
msgid "Calculation parameters"
msgstr ""
-#: part/templates/part/prices.html:155 templates/js/translated/bom.js:638
+#: part/templates/part/prices.html:155 templates/js/translated/bom.js:851
msgid "Supplier Cost"
msgstr ""
@@ -5111,7 +5159,7 @@ msgstr ""
msgid "Internal Cost"
msgstr ""
-#: part/templates/part/prices.html:215 part/views.py:1699
+#: part/templates/part/prices.html:215 part/views.py:1390
msgid "Add Internal Price Break"
msgstr ""
@@ -5131,7 +5179,7 @@ msgstr ""
msgid "Set category for the following parts"
msgstr ""
-#: part/templates/part/stock_count.html:7 templates/js/translated/bom.js:600
+#: part/templates/part/stock_count.html:7 templates/js/translated/bom.js:813
#: templates/js/translated/part.js:497 templates/js/translated/part.js:1122
#: templates/js/translated/part.js:1309
msgid "No Stock"
@@ -5141,6 +5189,43 @@ msgstr ""
msgid "Low Stock"
msgstr ""
+#: part/templates/part/upload_bom.html:8
+msgid "Return to BOM"
+msgstr ""
+
+#: part/templates/part/upload_bom.html:13
+msgid "Upload Bill of Materials"
+msgstr ""
+
+#: part/templates/part/upload_bom.html:19
+msgid "BOM upload requirements"
+msgstr ""
+
+#: part/templates/part/upload_bom.html:23
+#: part/templates/part/upload_bom.html:90
+msgid "Upload BOM File"
+msgstr ""
+
+#: part/templates/part/upload_bom.html:29
+msgid "Submit BOM Data"
+msgstr ""
+
+#: part/templates/part/upload_bom.html:37
+msgid "Requirements for BOM upload"
+msgstr ""
+
+#: part/templates/part/upload_bom.html:39
+msgid "The BOM file must contain the required named columns as provided in the "
+msgstr ""
+
+#: part/templates/part/upload_bom.html:39
+msgid "BOM Upload Template"
+msgstr ""
+
+#: part/templates/part/upload_bom.html:40
+msgid "Each part must already exist in the database"
+msgstr ""
+
#: part/templates/part/variant_part.html:9
msgid "Create new part variant"
msgstr ""
@@ -5154,104 +5239,96 @@ msgstr ""
msgid "Unknown database"
msgstr ""
-#: part/views.py:93
+#: part/views.py:90
msgid "Set Part Category"
msgstr ""
-#: part/views.py:143
+#: part/views.py:140
#, python-brace-format
msgid "Set category for {n} parts"
msgstr ""
-#: part/views.py:215
+#: part/views.py:212
msgid "Match References"
msgstr ""
-#: part/views.py:511
+#: part/views.py:509
msgid "None"
msgstr ""
-#: part/views.py:570
+#: part/views.py:568
msgid "Part QR Code"
msgstr ""
-#: part/views.py:672
+#: part/views.py:670
msgid "Select Part Image"
msgstr ""
-#: part/views.py:698
+#: part/views.py:696
msgid "Updated part image"
msgstr ""
-#: part/views.py:701
+#: part/views.py:699
msgid "Part image not found"
msgstr ""
-#: part/views.py:775
-msgid "Match Parts"
-msgstr ""
-
-#: part/views.py:1110
-msgid "Export Bill of Materials"
-msgstr ""
-
-#: part/views.py:1159
+#: part/views.py:850
msgid "Confirm Part Deletion"
msgstr ""
-#: part/views.py:1166
+#: part/views.py:857
msgid "Part was deleted"
msgstr ""
-#: part/views.py:1175
+#: part/views.py:866
msgid "Part Pricing"
msgstr ""
-#: part/views.py:1324
+#: part/views.py:1015
msgid "Create Part Parameter Template"
msgstr ""
-#: part/views.py:1334
+#: part/views.py:1025
msgid "Edit Part Parameter Template"
msgstr ""
-#: part/views.py:1341
+#: part/views.py:1032
msgid "Delete Part Parameter Template"
msgstr ""
-#: part/views.py:1400 templates/js/translated/part.js:315
+#: part/views.py:1091 templates/js/translated/part.js:315
msgid "Edit Part Category"
msgstr ""
-#: part/views.py:1438
+#: part/views.py:1129
msgid "Delete Part Category"
msgstr ""
-#: part/views.py:1444
+#: part/views.py:1135
msgid "Part category was deleted"
msgstr ""
-#: part/views.py:1453
+#: part/views.py:1144
msgid "Create Category Parameter Template"
msgstr ""
-#: part/views.py:1554
+#: part/views.py:1245
msgid "Edit Category Parameter Template"
msgstr ""
-#: part/views.py:1610
+#: part/views.py:1301
msgid "Delete Category Parameter Template"
msgstr ""
-#: part/views.py:1632
+#: part/views.py:1323
msgid "Added new price break"
msgstr ""
-#: part/views.py:1708
+#: part/views.py:1399
msgid "Edit Internal Price Break"
msgstr ""
-#: part/views.py:1716
+#: part/views.py:1407
msgid "Delete Internal Price Break"
msgstr ""
@@ -5453,12 +5530,12 @@ msgid "Stock Item Test Report"
msgstr ""
#: report/templates/report/inventree_test_report_base.html:79
-#: stock/models.py:519 stock/templates/stock/item_base.html:156
-#: templates/js/translated/build.js:293 templates/js/translated/build.js:697
-#: templates/js/translated/build.js:1073
+#: stock/models.py:519 stock/templates/stock/item_base.html:158
+#: templates/js/translated/build.js:373 templates/js/translated/build.js:521
+#: templates/js/translated/build.js:919 templates/js/translated/build.js:1295
#: 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:423
+#: templates/js/translated/order.js:2034 templates/js/translated/stock.js:424
msgid "Serial Number"
msgstr ""
@@ -5479,7 +5556,7 @@ msgstr ""
#: report/templates/report/inventree_test_report_base.html:97
#: templates/InvenTree/settings/plugin.html:50
#: templates/InvenTree/settings/plugin_settings.html:38
-#: templates/js/translated/order.js:849 templates/js/translated/stock.js:2525
+#: templates/js/translated/order.js:849 templates/js/translated/stock.js:2649
msgid "Date"
msgstr ""
@@ -5497,71 +5574,67 @@ msgid "Installed Items"
msgstr ""
#: report/templates/report/inventree_test_report_base.html:137
-#: templates/js/translated/stock.js:586 templates/js/translated/stock.js:756
-#: templates/js/translated/stock.js:2785
+#: templates/js/translated/stock.js:587 templates/js/translated/stock.js:757
+#: templates/js/translated/stock.js:2909
msgid "Serial"
msgstr ""
-#: stock/api.py:476
+#: stock/api.py:501
msgid "Quantity is required"
msgstr ""
-#: stock/api.py:483
+#: stock/api.py:508
msgid "Valid part must be supplied"
msgstr ""
-#: stock/forms.py:77 stock/forms.py:251 stock/models.py:576
-#: stock/templates/stock/item_base.html:193
-#: templates/js/translated/stock.js:1709
+#: stock/api.py:535
+msgid "Serial numbers cannot be supplied for a non-trackable part"
+msgstr ""
+
+#: stock/forms.py:74 stock/forms.py:198 stock/models.py:576
+#: stock/templates/stock/item_base.html:195
+#: templates/js/translated/stock.js:1833
msgid "Expiry Date"
msgstr ""
-#: stock/forms.py:78 stock/forms.py:252
+#: stock/forms.py:75 stock/forms.py:199
msgid "Expiration date for this stock item"
msgstr ""
-#: stock/forms.py:81
+#: stock/forms.py:78
msgid "Enter unique serial numbers (or leave blank)"
msgstr ""
-#: stock/forms.py:136
+#: stock/forms.py:133
msgid "Destination for serialized stock (by default, will remain in current location)"
msgstr ""
-#: stock/forms.py:138
+#: stock/forms.py:135
msgid "Serial numbers"
msgstr ""
-#: stock/forms.py:138
+#: stock/forms.py:135
msgid "Unique serial numbers (must match quantity)"
msgstr ""
-#: stock/forms.py:140 stock/forms.py:224
+#: stock/forms.py:137 stock/forms.py:171
msgid "Add transaction note (optional)"
msgstr ""
-#: stock/forms.py:180
-msgid "Stock item to install"
-msgstr ""
-
-#: stock/forms.py:210
-msgid "Must not exceed available quantity"
-msgstr ""
-
-#: stock/forms.py:222
+#: stock/forms.py:169
msgid "Destination location for uninstalled items"
msgstr ""
-#: stock/forms.py:226
+#: stock/forms.py:173
msgid "Confirm uninstall"
msgstr ""
-#: stock/forms.py:226
+#: stock/forms.py:173
msgid "Confirm removal of installed stock items"
msgstr ""
#: stock/models.py:62 stock/models.py:613
-#: stock/templates/stock/item_base.html:416
+#: stock/templates/stock/item_base.html:418
msgid "Owner"
msgstr ""
@@ -5623,7 +5696,7 @@ msgstr ""
msgid "Packaging this stock item is stored in"
msgstr ""
-#: stock/models.py:502 stock/templates/stock/item_base.html:298
+#: stock/models.py:502 stock/templates/stock/item_base.html:300
msgid "Installed In"
msgstr ""
@@ -5733,7 +5806,7 @@ msgstr ""
msgid "Serialized stock cannot be merged"
msgstr ""
-#: stock/models.py:1214 stock/serializers.py:775
+#: stock/models.py:1214 stock/serializers.py:832
msgid "Duplicate stock items"
msgstr ""
@@ -5769,7 +5842,7 @@ msgstr ""
msgid "Test name"
msgstr ""
-#: stock/models.py:1983 templates/js/translated/table_filters.js:271
+#: stock/models.py:1983
msgid "Test result"
msgstr ""
@@ -5806,7 +5879,7 @@ msgstr ""
msgid "Enter serial numbers for new items"
msgstr ""
-#: stock/serializers.py:326 stock/serializers.py:732 stock/serializers.py:973
+#: stock/serializers.py:326 stock/serializers.py:789 stock/serializers.py:1030
msgid "Destination stock location"
msgstr ""
@@ -5818,63 +5891,79 @@ msgstr ""
msgid "Serial numbers cannot be assigned to this part"
msgstr ""
-#: stock/serializers.py:589
+#: stock/serializers.py:363 stock/views.py:1108
+msgid "Serial numbers already exist"
+msgstr ""
+
+#: stock/serializers.py:405
+msgid "Select stock item to install"
+msgstr ""
+
+#: stock/serializers.py:421
+msgid "Stock item is unavailable"
+msgstr ""
+
+#: stock/serializers.py:428
+msgid "Selected part is not in the Bill of Materials"
+msgstr ""
+
+#: stock/serializers.py:646
msgid "Part must be salable"
msgstr ""
-#: stock/serializers.py:593
+#: stock/serializers.py:650
msgid "Item is allocated to a sales order"
msgstr ""
-#: stock/serializers.py:597
+#: stock/serializers.py:654
msgid "Item is allocated to a build order"
msgstr ""
-#: stock/serializers.py:627
+#: stock/serializers.py:684
msgid "Customer to assign stock items"
msgstr ""
-#: stock/serializers.py:633
+#: stock/serializers.py:690
msgid "Selected company is not a customer"
msgstr ""
-#: stock/serializers.py:641
+#: stock/serializers.py:698
msgid "Stock assignment notes"
msgstr ""
-#: stock/serializers.py:651 stock/serializers.py:881
+#: stock/serializers.py:708 stock/serializers.py:938
msgid "A list of stock items must be provided"
msgstr ""
-#: stock/serializers.py:739
+#: stock/serializers.py:796
msgid "Stock merging notes"
msgstr ""
-#: stock/serializers.py:744
+#: stock/serializers.py:801
msgid "Allow mismatched suppliers"
msgstr ""
-#: stock/serializers.py:745
+#: stock/serializers.py:802
msgid "Allow stock items with different supplier parts to be merged"
msgstr ""
-#: stock/serializers.py:750
+#: stock/serializers.py:807
msgid "Allow mismatched status"
msgstr ""
-#: stock/serializers.py:751
+#: stock/serializers.py:808
msgid "Allow stock items with different status codes to be merged"
msgstr ""
-#: stock/serializers.py:761
+#: stock/serializers.py:818
msgid "At least two stock items must be provided"
msgstr ""
-#: stock/serializers.py:843
+#: stock/serializers.py:900
msgid "StockItem primary key value"
msgstr ""
-#: stock/serializers.py:871
+#: stock/serializers.py:928
msgid "Stock transaction notes"
msgstr ""
@@ -5919,22 +6008,14 @@ msgstr ""
msgid "Installed Stock Items"
msgstr ""
-#: stock/templates/stock/item.html:154 stock/views.py:482
+#: stock/templates/stock/item.html:154 templates/js/translated/stock.js:3018
msgid "Install Stock Item"
msgstr ""
-#: stock/templates/stock/item.html:309 stock/templates/stock/item.html:334
+#: stock/templates/stock/item.html:304 templates/js/translated/stock.js:1480
msgid "Add Test Result"
msgstr ""
-#: stock/templates/stock/item.html:354
-msgid "Edit Test Result"
-msgstr ""
-
-#: stock/templates/stock/item.html:368
-msgid "Delete Test Result"
-msgstr ""
-
#: stock/templates/stock/item_base.html:42
#: templates/js/translated/barcode.js:330
#: templates/js/translated/barcode.js:335
@@ -5995,129 +6076,129 @@ msgstr ""
msgid "Uninstall"
msgstr ""
-#: stock/templates/stock/item_base.html:101
+#: stock/templates/stock/item_base.html:102
msgid "Install stock item"
msgstr ""
-#: stock/templates/stock/item_base.html:101
+#: stock/templates/stock/item_base.html:102
msgid "Install"
msgstr ""
-#: stock/templates/stock/item_base.html:115
+#: stock/templates/stock/item_base.html:117
msgid "Convert to variant"
msgstr ""
-#: stock/templates/stock/item_base.html:118
+#: stock/templates/stock/item_base.html:120
msgid "Duplicate stock item"
msgstr ""
-#: stock/templates/stock/item_base.html:120
+#: stock/templates/stock/item_base.html:122
msgid "Edit stock item"
msgstr ""
-#: stock/templates/stock/item_base.html:123
+#: stock/templates/stock/item_base.html:125
msgid "Delete stock item"
msgstr ""
-#: stock/templates/stock/item_base.html:161
+#: stock/templates/stock/item_base.html:163
msgid "previous page"
msgstr ""
-#: stock/templates/stock/item_base.html:161
+#: stock/templates/stock/item_base.html:163
msgid "Navigate to previous serial number"
msgstr ""
-#: stock/templates/stock/item_base.html:170
+#: stock/templates/stock/item_base.html:172
msgid "next page"
msgstr ""
-#: stock/templates/stock/item_base.html:170
+#: stock/templates/stock/item_base.html:172
msgid "Navigate to next serial number"
msgstr ""
-#: stock/templates/stock/item_base.html:197
+#: stock/templates/stock/item_base.html:199
#, python-format
msgid "This StockItem expired on %(item.expiry_date)s"
msgstr ""
-#: stock/templates/stock/item_base.html:197
+#: stock/templates/stock/item_base.html:199
#: templates/js/translated/table_filters.js:252
msgid "Expired"
msgstr ""
-#: stock/templates/stock/item_base.html:199
+#: stock/templates/stock/item_base.html:201
#, python-format
msgid "This StockItem expires on %(item.expiry_date)s"
msgstr ""
-#: stock/templates/stock/item_base.html:199
+#: stock/templates/stock/item_base.html:201
#: templates/js/translated/table_filters.js:258
msgid "Stale"
msgstr ""
-#: stock/templates/stock/item_base.html:206
-#: templates/js/translated/stock.js:1722
+#: stock/templates/stock/item_base.html:208
+#: templates/js/translated/stock.js:1846
msgid "Last Updated"
msgstr ""
-#: stock/templates/stock/item_base.html:211
+#: stock/templates/stock/item_base.html:213
msgid "Last Stocktake"
msgstr ""
-#: stock/templates/stock/item_base.html:215
+#: stock/templates/stock/item_base.html:217
msgid "No stocktake performed"
msgstr ""
-#: stock/templates/stock/item_base.html:233
+#: stock/templates/stock/item_base.html:235
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:240
+#: stock/templates/stock/item_base.html:242
msgid "This stock item is in production and cannot be edited."
msgstr ""
-#: stock/templates/stock/item_base.html:241
+#: stock/templates/stock/item_base.html:243
msgid "Edit the stock item from the build view."
msgstr ""
-#: stock/templates/stock/item_base.html:254
+#: stock/templates/stock/item_base.html:256
msgid "This stock item has not passed all required tests"
msgstr ""
-#: stock/templates/stock/item_base.html:262
+#: stock/templates/stock/item_base.html:264
msgid "This stock item is allocated to Sales Order"
msgstr ""
-#: stock/templates/stock/item_base.html:270
+#: stock/templates/stock/item_base.html:272
msgid "This stock item is allocated to Build Order"
msgstr ""
-#: stock/templates/stock/item_base.html:276
+#: stock/templates/stock/item_base.html:278
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:317
-#: templates/js/translated/build.js:1095
+#: stock/templates/stock/item_base.html:319
+#: templates/js/translated/build.js:1317
msgid "No location set"
msgstr ""
-#: stock/templates/stock/item_base.html:324
+#: stock/templates/stock/item_base.html:326
msgid "Barcode Identifier"
msgstr ""
-#: stock/templates/stock/item_base.html:366
+#: stock/templates/stock/item_base.html:368
msgid "Parent Item"
msgstr ""
-#: stock/templates/stock/item_base.html:384
+#: stock/templates/stock/item_base.html:386
msgid "No manufacturer set"
msgstr ""
-#: stock/templates/stock/item_base.html:409
+#: stock/templates/stock/item_base.html:411
msgid "Tests"
msgstr ""
-#: stock/templates/stock/item_base.html:499
+#: stock/templates/stock/item_base.html:492
msgid "Edit Stock Status"
msgstr ""
@@ -6130,39 +6211,6 @@ msgstr ""
msgid "This will remove %(qty)s units of %(full_name)s from stock."
msgstr ""
-#: stock/templates/stock/item_install.html:8
-msgid "Install another Stock Item into this item."
-msgstr ""
-
-#: stock/templates/stock/item_install.html:11
-#: stock/templates/stock/item_install.html:24
-msgid "Stock items can only be installed if they meet the following criteria"
-msgstr ""
-
-#: stock/templates/stock/item_install.html:14
-msgid "The Stock Item links to a Part which is in the BOM for this Stock Item"
-msgstr ""
-
-#: stock/templates/stock/item_install.html:15
-msgid "The Stock Item is currently in stock"
-msgstr ""
-
-#: stock/templates/stock/item_install.html:16
-msgid "The Stock Item is serialized and does not belong to another item"
-msgstr ""
-
-#: stock/templates/stock/item_install.html:21
-msgid "Install this Stock Item in another stock item."
-msgstr ""
-
-#: stock/templates/stock/item_install.html:27
-msgid "The part associated to this Stock Item belongs to another part's BOM"
-msgstr ""
-
-#: stock/templates/stock/item_install.html:28
-msgid "This Stock Item is serialized and does not belong to another item"
-msgstr ""
-
#: stock/templates/stock/item_serialize.html:5
msgid "Create serialized items from this stock item."
msgstr ""
@@ -6247,7 +6295,7 @@ msgstr ""
msgid "The following stock items will be uninstalled"
msgstr ""
-#: stock/templates/stock/stockitem_convert.html:7 stock/views.py:879
+#: stock/templates/stock/stockitem_convert.html:7 stock/views.py:730
msgid "Convert Stock Item"
msgstr ""
@@ -6268,11 +6316,11 @@ msgstr ""
msgid "Are you sure you want to delete this stock tracking entry?"
msgstr ""
-#: stock/views.py:162 templates/js/translated/stock.js:139
+#: stock/views.py:162 templates/js/translated/stock.js:140
msgid "Edit Stock Location"
msgstr ""
-#: stock/views.py:269 stock/views.py:858 stock/views.py:984 stock/views.py:1266
+#: stock/views.py:269 stock/views.py:709 stock/views.py:835 stock/views.py:1117
msgid "Owner is required (ownership control is enabled)"
msgstr ""
@@ -6300,59 +6348,63 @@ msgstr ""
msgid "Confirm test data deletion"
msgstr ""
+#: stock/views.py:352
+msgid "Check the confirmation box"
+msgstr ""
+
#: stock/views.py:456
msgid "Stock Item QR Code"
msgstr ""
-#: stock/views.py:630
+#: stock/views.py:481
msgid "Uninstall Stock Items"
msgstr ""
-#: stock/views.py:727 templates/js/translated/stock.js:1074
+#: stock/views.py:578 templates/js/translated/stock.js:1075
msgid "Confirm stock adjustment"
msgstr ""
-#: stock/views.py:738
+#: stock/views.py:589
msgid "Uninstalled stock items"
msgstr ""
-#: stock/views.py:760 templates/js/translated/stock.js:332
+#: stock/views.py:611 templates/js/translated/stock.js:333
msgid "Edit Stock Item"
msgstr ""
-#: stock/views.py:910
+#: stock/views.py:761
msgid "Create new Stock Location"
msgstr ""
-#: stock/views.py:1011
+#: stock/views.py:862
msgid "Create new Stock Item"
msgstr ""
-#: stock/views.py:1153 templates/js/translated/stock.js:312
+#: stock/views.py:1004 templates/js/translated/stock.js:313
msgid "Duplicate Stock Item"
msgstr ""
-#: stock/views.py:1235
+#: stock/views.py:1086
msgid "Quantity cannot be negative"
msgstr ""
-#: stock/views.py:1335
+#: stock/views.py:1186
msgid "Delete Stock Location"
msgstr ""
-#: stock/views.py:1348
+#: stock/views.py:1199
msgid "Delete Stock Item"
msgstr ""
-#: stock/views.py:1359
+#: stock/views.py:1210
msgid "Delete Stock Tracking Entry"
msgstr ""
-#: stock/views.py:1366
+#: stock/views.py:1217
msgid "Edit Stock Tracking Entry"
msgstr ""
-#: stock/views.py:1375
+#: stock/views.py:1226
msgid "Add Stock Tracking Entry"
msgstr ""
@@ -6527,15 +6579,15 @@ msgstr ""
msgid "Part Settings"
msgstr ""
-#: templates/InvenTree/settings/part.html:43
+#: templates/InvenTree/settings/part.html:44
msgid "Part Import"
msgstr ""
-#: templates/InvenTree/settings/part.html:47
+#: templates/InvenTree/settings/part.html:48
msgid "Import Part"
msgstr ""
-#: templates/InvenTree/settings/part.html:61
+#: templates/InvenTree/settings/part.html:62
msgid "Part Parameter Templates"
msgstr ""
@@ -6663,45 +6715,45 @@ msgstr ""
msgid "Report Settings"
msgstr ""
-#: templates/InvenTree/settings/setting.html:30
+#: templates/InvenTree/settings/setting.html:33
msgid "No value set"
msgstr ""
-#: templates/InvenTree/settings/setting.html:41
+#: templates/InvenTree/settings/setting.html:38
msgid "Edit setting"
msgstr ""
-#: templates/InvenTree/settings/settings.html:78
+#: templates/InvenTree/settings/settings.html:115
msgid "Edit Plugin Setting"
msgstr ""
-#: templates/InvenTree/settings/settings.html:80
+#: templates/InvenTree/settings/settings.html:117
msgid "Edit Global Setting"
msgstr ""
-#: templates/InvenTree/settings/settings.html:82
+#: templates/InvenTree/settings/settings.html:119
msgid "Edit User Setting"
msgstr ""
-#: templates/InvenTree/settings/settings.html:171
+#: templates/InvenTree/settings/settings.html:208
msgid "No category parameter templates found"
msgstr ""
-#: templates/InvenTree/settings/settings.html:193
-#: templates/InvenTree/settings/settings.html:292
+#: templates/InvenTree/settings/settings.html:230
+#: templates/InvenTree/settings/settings.html:329
msgid "Edit Template"
msgstr ""
-#: templates/InvenTree/settings/settings.html:194
-#: templates/InvenTree/settings/settings.html:293
+#: templates/InvenTree/settings/settings.html:231
+#: templates/InvenTree/settings/settings.html:330
msgid "Delete Template"
msgstr ""
-#: templates/InvenTree/settings/settings.html:272
+#: templates/InvenTree/settings/settings.html:309
msgid "No part parameter templates found"
msgstr ""
-#: templates/InvenTree/settings/settings.html:276
+#: templates/InvenTree/settings/settings.html:313
msgid "ID"
msgstr ""
@@ -6996,10 +7048,11 @@ msgid "InvenTree Version Information"
msgstr ""
#: templates/about.html:11 templates/about.html:105
-#: templates/js/translated/bom.js:407 templates/js/translated/modals.js:53
-#: templates/js/translated/modals.js:584 templates/js/translated/modals.js:678
-#: templates/js/translated/modals.js:983 templates/modals.html:15
-#: templates/modals.html:27 templates/modals.html:39 templates/modals.html:50
+#: templates/js/translated/bom.js:132 templates/js/translated/bom.js:620
+#: templates/js/translated/modals.js:53 templates/js/translated/modals.js:584
+#: templates/js/translated/modals.js:678 templates/js/translated/modals.js:986
+#: templates/modals.html:15 templates/modals.html:27 templates/modals.html:39
+#: templates/modals.html:50
msgid "Close"
msgstr ""
@@ -7275,14 +7328,14 @@ msgid "The following parts are low on required stock"
msgstr ""
#: templates/email/build_order_required_stock.html:18
-#: templates/js/translated/bom.js:1117
+#: templates/js/translated/bom.js:1335
msgid "Required Quantity"
msgstr ""
#: templates/email/build_order_required_stock.html:19
#: templates/email/low_stock_notification.html:18
-#: templates/js/translated/bom.js:591 templates/js/translated/build.js:1189
-#: templates/js/translated/build.js:1810
+#: templates/js/translated/bom.js:804 templates/js/translated/build.js:1411
+#: templates/js/translated/build.js:2048
#: templates/js/translated/table_filters.js:178
msgid "Available"
msgstr ""
@@ -7325,11 +7378,11 @@ msgstr ""
msgid "Remote image must not exceed maximum allowable file size"
msgstr ""
-#: templates/js/translated/api.js:185 templates/js/translated/modals.js:1053
+#: templates/js/translated/api.js:185 templates/js/translated/modals.js:1056
msgid "No Response"
msgstr ""
-#: templates/js/translated/api.js:186 templates/js/translated/modals.js:1054
+#: templates/js/translated/api.js:186 templates/js/translated/modals.js:1057
msgid "No response from the InvenTree server"
msgstr ""
@@ -7341,27 +7394,27 @@ msgstr ""
msgid "API request returned error code 400"
msgstr ""
-#: templates/js/translated/api.js:197 templates/js/translated/modals.js:1063
+#: templates/js/translated/api.js:197 templates/js/translated/modals.js:1066
msgid "Error 401: Not Authenticated"
msgstr ""
-#: templates/js/translated/api.js:198 templates/js/translated/modals.js:1064
+#: templates/js/translated/api.js:198 templates/js/translated/modals.js:1067
msgid "Authentication credentials not supplied"
msgstr ""
-#: templates/js/translated/api.js:202 templates/js/translated/modals.js:1068
+#: templates/js/translated/api.js:202 templates/js/translated/modals.js:1071
msgid "Error 403: Permission Denied"
msgstr ""
-#: templates/js/translated/api.js:203 templates/js/translated/modals.js:1069
+#: templates/js/translated/api.js:203 templates/js/translated/modals.js:1072
msgid "You do not have the required permissions to access this function"
msgstr ""
-#: templates/js/translated/api.js:207 templates/js/translated/modals.js:1073
+#: templates/js/translated/api.js:207 templates/js/translated/modals.js:1076
msgid "Error 404: Resource Not Found"
msgstr ""
-#: templates/js/translated/api.js:208 templates/js/translated/modals.js:1074
+#: templates/js/translated/api.js:208 templates/js/translated/modals.js:1077
msgid "The requested resource could not be located on the server"
msgstr ""
@@ -7373,11 +7426,11 @@ msgstr ""
msgid "HTTP method not allowed at URL"
msgstr ""
-#: templates/js/translated/api.js:217 templates/js/translated/modals.js:1078
+#: templates/js/translated/api.js:217 templates/js/translated/modals.js:1081
msgid "Error 408: Timeout"
msgstr ""
-#: templates/js/translated/api.js:218 templates/js/translated/modals.js:1079
+#: templates/js/translated/api.js:218 templates/js/translated/modals.js:1082
msgid "Connection timeout while requesting data from server"
msgstr ""
@@ -7446,7 +7499,7 @@ msgid "Unknown response from server"
msgstr ""
#: templates/js/translated/barcode.js:140
-#: templates/js/translated/modals.js:1043
+#: templates/js/translated/modals.js:1046
msgid "Invalid server response"
msgstr ""
@@ -7474,7 +7527,7 @@ msgstr ""
msgid "Unlink"
msgstr ""
-#: templates/js/translated/barcode.js:397 templates/js/translated/stock.js:1026
+#: templates/js/translated/barcode.js:397 templates/js/translated/stock.js:1027
msgid "Remove stock item"
msgstr ""
@@ -7516,327 +7569,369 @@ msgstr ""
msgid "Barcode does not match a valid location"
msgstr ""
-#: templates/js/translated/bom.js:36
+#: templates/js/translated/bom.js:75
+msgid "Display row data"
+msgstr ""
+
+#: templates/js/translated/bom.js:131
+msgid "Row Data"
+msgstr ""
+
+#: templates/js/translated/bom.js:249
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:518
+#: templates/js/translated/bom.js:252 templates/js/translated/bom.js:286
+#: templates/js/translated/order.js:369 templates/js/translated/stock.js:519
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:519
+#: templates/js/translated/bom.js:253 templates/js/translated/bom.js:287
+#: templates/js/translated/order.js:370 templates/js/translated/stock.js:520
msgid "Select file format"
msgstr ""
-#: templates/js/translated/bom.js:81
+#: templates/js/translated/bom.js:294
msgid "Cascading"
msgstr ""
-#: templates/js/translated/bom.js:82
+#: templates/js/translated/bom.js:295
msgid "Download cascading / multi-level BOM"
msgstr ""
-#: templates/js/translated/bom.js:87
+#: templates/js/translated/bom.js:300
msgid "Levels"
msgstr ""
-#: templates/js/translated/bom.js:88
+#: templates/js/translated/bom.js:301
msgid "Select maximum number of BOM levels to export (0 = all levels)"
msgstr ""
-#: templates/js/translated/bom.js:94
+#: templates/js/translated/bom.js:307
msgid "Include Parameter Data"
msgstr ""
-#: templates/js/translated/bom.js:95
+#: templates/js/translated/bom.js:308
msgid "Include part parameter data in exported BOM"
msgstr ""
-#: templates/js/translated/bom.js:100
+#: templates/js/translated/bom.js:313
msgid "Include Stock Data"
msgstr ""
-#: templates/js/translated/bom.js:101
+#: templates/js/translated/bom.js:314
msgid "Include part stock data in exported BOM"
msgstr ""
-#: templates/js/translated/bom.js:106
+#: templates/js/translated/bom.js:319
msgid "Include Manufacturer Data"
msgstr ""
-#: templates/js/translated/bom.js:107
+#: templates/js/translated/bom.js:320
msgid "Include part manufacturer data in exported BOM"
msgstr ""
-#: templates/js/translated/bom.js:112
+#: templates/js/translated/bom.js:325
msgid "Include Supplier Data"
msgstr ""
-#: templates/js/translated/bom.js:113
+#: templates/js/translated/bom.js:326
msgid "Include part supplier data in exported BOM"
msgstr ""
-#: templates/js/translated/bom.js:296
+#: templates/js/translated/bom.js:509
msgid "Remove substitute part"
msgstr ""
-#: templates/js/translated/bom.js:352
+#: templates/js/translated/bom.js:565
msgid "Select and add a new substitute part using the input below"
msgstr ""
-#: templates/js/translated/bom.js:363
+#: templates/js/translated/bom.js:576
msgid "Are you sure you wish to remove this substitute part link?"
msgstr ""
-#: templates/js/translated/bom.js:369
+#: templates/js/translated/bom.js:582
msgid "Remove Substitute Part"
msgstr ""
-#: templates/js/translated/bom.js:408
+#: templates/js/translated/bom.js:621
msgid "Add Substitute"
msgstr ""
-#: templates/js/translated/bom.js:409
+#: templates/js/translated/bom.js:622
msgid "Edit BOM Item Substitutes"
msgstr ""
-#: templates/js/translated/bom.js:528
+#: templates/js/translated/bom.js:741
msgid "Substitutes Available"
msgstr ""
-#: templates/js/translated/bom.js:532 templates/js/translated/build.js:1171
+#: templates/js/translated/bom.js:745 templates/js/translated/build.js:1393
msgid "Variant stock allowed"
msgstr ""
-#: templates/js/translated/bom.js:537
+#: templates/js/translated/bom.js:750
msgid "Open subassembly"
msgstr ""
-#: templates/js/translated/bom.js:609
+#: templates/js/translated/bom.js:822
msgid "Substitutes"
msgstr ""
-#: templates/js/translated/bom.js:624
+#: templates/js/translated/bom.js:837
msgid "Purchase Price Range"
msgstr ""
-#: templates/js/translated/bom.js:631
+#: templates/js/translated/bom.js:844
msgid "Purchase Price Average"
msgstr ""
-#: templates/js/translated/bom.js:680 templates/js/translated/bom.js:769
+#: templates/js/translated/bom.js:893 templates/js/translated/bom.js:982
msgid "View BOM"
msgstr ""
-#: templates/js/translated/bom.js:740
+#: templates/js/translated/bom.js:953
msgid "Validate BOM Item"
msgstr ""
-#: templates/js/translated/bom.js:742
+#: templates/js/translated/bom.js:955
msgid "This line has been validated"
msgstr ""
-#: templates/js/translated/bom.js:744
+#: templates/js/translated/bom.js:957
msgid "Edit substitute parts"
msgstr ""
-#: templates/js/translated/bom.js:746 templates/js/translated/bom.js:920
+#: templates/js/translated/bom.js:959 templates/js/translated/bom.js:1138
msgid "Edit BOM Item"
msgstr ""
-#: templates/js/translated/bom.js:748 templates/js/translated/bom.js:903
+#: templates/js/translated/bom.js:961 templates/js/translated/bom.js:1121
msgid "Delete BOM Item"
msgstr ""
-#: templates/js/translated/bom.js:842 templates/js/translated/build.js:915
+#: templates/js/translated/bom.js:1060 templates/js/translated/build.js:1137
msgid "No BOM items found"
msgstr ""
-#: templates/js/translated/bom.js:898
+#: templates/js/translated/bom.js:1116
msgid "Are you sure you want to delete this BOM item?"
msgstr ""
-#: templates/js/translated/bom.js:1100 templates/js/translated/build.js:1155
+#: templates/js/translated/bom.js:1318 templates/js/translated/build.js:1377
msgid "Required Part"
msgstr ""
-#: templates/js/translated/bom.js:1122
+#: templates/js/translated/bom.js:1340
msgid "Inherited from parent BOM"
msgstr ""
-#: templates/js/translated/build.js:84
+#: templates/js/translated/build.js:85
msgid "Edit Build Order"
msgstr ""
-#: templates/js/translated/build.js:118
+#: templates/js/translated/build.js:119
msgid "Create Build Order"
msgstr ""
-#: templates/js/translated/build.js:139
+#: templates/js/translated/build.js:140
msgid "Build order is ready to be completed"
msgstr ""
-#: templates/js/translated/build.js:144
+#: templates/js/translated/build.js:145
msgid "Build Order is incomplete"
msgstr ""
-#: templates/js/translated/build.js:172
+#: templates/js/translated/build.js:173
msgid "Complete Build Order"
msgstr ""
-#: templates/js/translated/build.js:193
+#: templates/js/translated/build.js:214 templates/js/translated/stock.js:93
+#: templates/js/translated/stock.js:182
+msgid "Next available serial number"
+msgstr ""
+
+#: templates/js/translated/build.js:216 templates/js/translated/stock.js:95
+#: templates/js/translated/stock.js:184
+msgid "Latest serial number"
+msgstr ""
+
+#: templates/js/translated/build.js:225
+msgid "The Bill of Materials contains trackable parts"
+msgstr ""
+
+#: templates/js/translated/build.js:226
+msgid "Build outputs must be generated individually"
+msgstr ""
+
+#: templates/js/translated/build.js:234
+msgid "Trackable parts can have serial numbers specified"
+msgstr ""
+
+#: templates/js/translated/build.js:235
+msgid "Enter serial numbers to generate multiple single build outputs"
+msgstr ""
+
+#: templates/js/translated/build.js:242
+msgid "Create Build Output"
+msgstr ""
+
+#: templates/js/translated/build.js:273
msgid "Allocate stock items to this build output"
msgstr ""
-#: templates/js/translated/build.js:204
+#: templates/js/translated/build.js:284
msgid "Unallocate stock from build output"
msgstr ""
-#: templates/js/translated/build.js:213
+#: templates/js/translated/build.js:293
msgid "Complete build output"
msgstr ""
-#: templates/js/translated/build.js:221
+#: templates/js/translated/build.js:301
msgid "Delete build output"
msgstr ""
-#: templates/js/translated/build.js:244
+#: templates/js/translated/build.js:324
msgid "Are you sure you wish to unallocate stock items from this build?"
msgstr ""
-#: templates/js/translated/build.js:262
+#: templates/js/translated/build.js:342
msgid "Unallocate Stock Items"
msgstr ""
-#: templates/js/translated/build.js:280
+#: templates/js/translated/build.js:360 templates/js/translated/build.js:508
msgid "Select Build Outputs"
msgstr ""
-#: templates/js/translated/build.js:281
+#: templates/js/translated/build.js:361 templates/js/translated/build.js:509
msgid "At least one build output must be selected"
msgstr ""
-#: templates/js/translated/build.js:335
+#: templates/js/translated/build.js:415 templates/js/translated/build.js:563
msgid "Output"
msgstr ""
-#: templates/js/translated/build.js:351
+#: templates/js/translated/build.js:431
msgid "Complete Build Outputs"
msgstr ""
-#: templates/js/translated/build.js:446
+#: templates/js/translated/build.js:576
+msgid "Delete Build Outputs"
+msgstr ""
+
+#: templates/js/translated/build.js:665
msgid "No build order allocations found"
msgstr ""
-#: templates/js/translated/build.js:484 templates/js/translated/order.js:1848
+#: templates/js/translated/build.js:703 templates/js/translated/order.js:1848
msgid "Location not specified"
msgstr ""
-#: templates/js/translated/build.js:663
+#: templates/js/translated/build.js:885
msgid "No active build outputs found"
msgstr ""
-#: templates/js/translated/build.js:1112 templates/js/translated/build.js:1821
+#: templates/js/translated/build.js:1334 templates/js/translated/build.js:2059
#: templates/js/translated/order.js:1982
msgid "Edit stock allocation"
msgstr ""
-#: templates/js/translated/build.js:1114 templates/js/translated/build.js:1822
+#: templates/js/translated/build.js:1336 templates/js/translated/build.js:2060
#: templates/js/translated/order.js:1983
msgid "Delete stock allocation"
msgstr ""
-#: templates/js/translated/build.js:1132
+#: templates/js/translated/build.js:1354
msgid "Edit Allocation"
msgstr ""
-#: templates/js/translated/build.js:1142
+#: templates/js/translated/build.js:1364
msgid "Remove Allocation"
msgstr ""
-#: templates/js/translated/build.js:1167
+#: templates/js/translated/build.js:1389
msgid "Substitute parts available"
msgstr ""
-#: templates/js/translated/build.js:1184
+#: templates/js/translated/build.js:1406
msgid "Quantity Per"
msgstr ""
-#: templates/js/translated/build.js:1194 templates/js/translated/build.js:1420
-#: templates/js/translated/build.js:1817 templates/js/translated/order.js:2227
+#: templates/js/translated/build.js:1416 templates/js/translated/build.js:1656
+#: templates/js/translated/build.js:2055 templates/js/translated/order.js:2227
msgid "Allocated"
msgstr ""
-#: templates/js/translated/build.js:1250 templates/js/translated/order.js:2307
+#: templates/js/translated/build.js:1472 templates/js/translated/order.js:2307
msgid "Build stock"
msgstr ""
-#: templates/js/translated/build.js:1254 templates/stock_table.html:53
+#: templates/js/translated/build.js:1476 templates/stock_table.html:53
msgid "Order stock"
msgstr ""
-#: templates/js/translated/build.js:1257 templates/js/translated/order.js:2300
+#: templates/js/translated/build.js:1479 templates/js/translated/order.js:2300
msgid "Allocate stock"
msgstr ""
-#: templates/js/translated/build.js:1322 templates/js/translated/order.js:1499
+#: templates/js/translated/build.js:1558 templates/js/translated/order.js:1499
msgid "Specify stock allocation quantity"
msgstr ""
-#: templates/js/translated/build.js:1393 templates/js/translated/label.js:134
+#: templates/js/translated/build.js:1629 templates/js/translated/label.js:134
#: templates/js/translated/order.js:1550 templates/js/translated/report.js:225
msgid "Select Parts"
msgstr ""
-#: templates/js/translated/build.js:1394 templates/js/translated/order.js:1551
+#: templates/js/translated/build.js:1630 templates/js/translated/order.js:1551
msgid "You must select at least one part to allocate"
msgstr ""
-#: templates/js/translated/build.js:1408 templates/js/translated/order.js:1565
+#: templates/js/translated/build.js:1644 templates/js/translated/order.js:1565
msgid "Select source location (leave blank to take from all locations)"
msgstr ""
-#: templates/js/translated/build.js:1437 templates/js/translated/order.js:1600
+#: templates/js/translated/build.js:1673 templates/js/translated/order.js:1600
msgid "Confirm stock allocation"
msgstr ""
-#: templates/js/translated/build.js:1438
+#: templates/js/translated/build.js:1674
msgid "Allocate Stock Items to Build Order"
msgstr ""
-#: templates/js/translated/build.js:1449 templates/js/translated/order.js:1613
+#: templates/js/translated/build.js:1685 templates/js/translated/order.js:1613
msgid "No matching stock locations"
msgstr ""
-#: templates/js/translated/build.js:1519 templates/js/translated/order.js:1690
+#: templates/js/translated/build.js:1757 templates/js/translated/order.js:1690
msgid "No matching stock items"
msgstr ""
-#: templates/js/translated/build.js:1637
+#: templates/js/translated/build.js:1875
msgid "No builds matching query"
msgstr ""
-#: templates/js/translated/build.js:1654 templates/js/translated/part.js:1213
-#: templates/js/translated/part.js:1624 templates/js/translated/stock.js:1520
-#: templates/js/translated/stock.js:2479
+#: templates/js/translated/build.js:1892 templates/js/translated/part.js:1213
+#: templates/js/translated/part.js:1624 templates/js/translated/stock.js:1644
+#: templates/js/translated/stock.js:2603
msgid "Select"
msgstr ""
-#: templates/js/translated/build.js:1674
+#: templates/js/translated/build.js:1912
msgid "Build order is overdue"
msgstr ""
-#: templates/js/translated/build.js:1735 templates/js/translated/stock.js:2698
+#: templates/js/translated/build.js:1973 templates/js/translated/stock.js:2822
msgid "No user information"
msgstr ""
-#: templates/js/translated/build.js:1747
+#: templates/js/translated/build.js:1985
msgid "No information"
msgstr ""
-#: templates/js/translated/build.js:1798
+#: templates/js/translated/build.js:2036
msgid "No parts allocated for"
msgstr ""
@@ -7966,48 +8061,60 @@ msgstr ""
msgid "Create filter"
msgstr ""
-#: templates/js/translated/forms.js:350 templates/js/translated/forms.js:365
-#: templates/js/translated/forms.js:379 templates/js/translated/forms.js:393
+#: templates/js/translated/forms.js:351 templates/js/translated/forms.js:366
+#: templates/js/translated/forms.js:380 templates/js/translated/forms.js:394
msgid "Action Prohibited"
msgstr ""
-#: templates/js/translated/forms.js:352
+#: templates/js/translated/forms.js:353
msgid "Create operation not allowed"
msgstr ""
-#: templates/js/translated/forms.js:367
+#: templates/js/translated/forms.js:368
msgid "Update operation not allowed"
msgstr ""
-#: templates/js/translated/forms.js:381
+#: templates/js/translated/forms.js:382
msgid "Delete operation not allowed"
msgstr ""
-#: templates/js/translated/forms.js:395
+#: templates/js/translated/forms.js:396
msgid "View operation not allowed"
msgstr ""
-#: templates/js/translated/forms.js:680
+#: templates/js/translated/forms.js:681
msgid "Enter a valid number"
msgstr ""
-#: templates/js/translated/forms.js:1082 templates/modals.html:19
+#: templates/js/translated/forms.js:1129 templates/modals.html:19
#: templates/modals.html:43
msgid "Form errors exist"
msgstr ""
-#: templates/js/translated/forms.js:1487
+#: templates/js/translated/forms.js:1558
msgid "No results found"
msgstr ""
-#: templates/js/translated/forms.js:1691
+#: templates/js/translated/forms.js:1768
msgid "Searching"
msgstr ""
-#: templates/js/translated/forms.js:1930
+#: templates/js/translated/forms.js:2013
msgid "Clear input"
msgstr ""
+#: templates/js/translated/forms.js:2479
+msgid "File Column"
+msgstr ""
+
+#: templates/js/translated/forms.js:2479
+msgid "Field Name"
+msgstr ""
+
+#: templates/js/translated/forms.js:2491
+msgid "Select Columns"
+msgstr ""
+
#: templates/js/translated/helpers.js:19
msgid "YES"
msgstr ""
@@ -8017,7 +8124,7 @@ msgid "NO"
msgstr ""
#: templates/js/translated/label.js:29 templates/js/translated/report.js:118
-#: templates/js/translated/stock.js:1050
+#: templates/js/translated/stock.js:1051
msgid "Select Stock Items"
msgstr ""
@@ -8072,7 +8179,7 @@ msgid "Cancel"
msgstr ""
#: templates/js/translated/modals.js:77 templates/js/translated/modals.js:119
-#: templates/js/translated/modals.js:677 templates/js/translated/modals.js:982
+#: templates/js/translated/modals.js:677 templates/js/translated/modals.js:985
#: templates/modals.html:28 templates/modals.html:51
msgid "Submit"
msgstr ""
@@ -8097,31 +8204,31 @@ msgstr ""
msgid "Loading Data"
msgstr ""
-#: templates/js/translated/modals.js:934
+#: templates/js/translated/modals.js:937
msgid "Invalid response from server"
msgstr ""
-#: templates/js/translated/modals.js:934
+#: templates/js/translated/modals.js:937
msgid "Form data missing from server response"
msgstr ""
-#: templates/js/translated/modals.js:946
+#: templates/js/translated/modals.js:949
msgid "Error posting form data"
msgstr ""
-#: templates/js/translated/modals.js:1043
+#: templates/js/translated/modals.js:1046
msgid "JSON response missing form data"
msgstr ""
-#: templates/js/translated/modals.js:1058
+#: templates/js/translated/modals.js:1061
msgid "Error 400: Bad Request"
msgstr ""
-#: templates/js/translated/modals.js:1059
+#: templates/js/translated/modals.js:1062
msgid "Server returned error code 400"
msgstr ""
-#: templates/js/translated/modals.js:1082
+#: templates/js/translated/modals.js:1085
msgid "Error requesting form data"
msgstr ""
@@ -8141,10 +8248,6 @@ msgstr ""
msgid "Build ID"
msgstr ""
-#: templates/js/translated/model_renderers.js:182
-msgid "Part ID"
-msgstr ""
-
#: templates/js/translated/model_renderers.js:249
#: templates/js/translated/model_renderers.js:270
msgid "Order ID"
@@ -8210,7 +8313,7 @@ msgstr ""
msgid "Quantity to receive"
msgstr ""
-#: templates/js/translated/order.js:520 templates/js/translated/stock.js:2131
+#: templates/js/translated/order.js:520 templates/js/translated/stock.js:2255
msgid "Stock Status"
msgstr ""
@@ -8344,7 +8447,7 @@ msgid "Delete Stock Allocation"
msgstr ""
#: templates/js/translated/order.js:1959 templates/js/translated/order.js:2048
-#: templates/js/translated/stock.js:1436
+#: templates/js/translated/stock.js:1560
msgid "Shipped to customer"
msgstr ""
@@ -8545,12 +8648,12 @@ msgid "No category"
msgstr ""
#: templates/js/translated/part.js:1296
-#: templates/js/translated/table_filters.js:430
+#: templates/js/translated/table_filters.js:425
msgid "Low stock"
msgstr ""
#: templates/js/translated/part.js:1387 templates/js/translated/part.js:1559
-#: templates/js/translated/stock.js:2440
+#: templates/js/translated/stock.js:2564
msgid "Display as list"
msgstr ""
@@ -8558,7 +8661,7 @@ msgstr ""
msgid "Display as grid"
msgstr ""
-#: templates/js/translated/part.js:1578 templates/js/translated/stock.js:2459
+#: templates/js/translated/part.js:1578 templates/js/translated/stock.js:2583
msgid "Display as tree"
msgstr ""
@@ -8566,7 +8669,7 @@ msgstr ""
msgid "Subscribed category"
msgstr ""
-#: templates/js/translated/part.js:1656 templates/js/translated/stock.js:2503
+#: templates/js/translated/part.js:1656 templates/js/translated/stock.js:2627
msgid "Path"
msgstr ""
@@ -8574,11 +8677,12 @@ msgstr ""
msgid "No test templates matching query"
msgstr ""
-#: templates/js/translated/part.js:1751 templates/js/translated/stock.js:1242
+#: templates/js/translated/part.js:1751 templates/js/translated/stock.js:1271
msgid "Edit test result"
msgstr ""
-#: templates/js/translated/part.js:1752 templates/js/translated/stock.js:1243
+#: templates/js/translated/part.js:1752 templates/js/translated/stock.js:1272
+#: templates/js/translated/stock.js:1518
msgid "Delete test result"
msgstr ""
@@ -8687,347 +8791,375 @@ msgstr ""
msgid "Sales Order(s) must be selected before printing report"
msgstr ""
-#: templates/js/translated/stock.js:74
+#: templates/js/translated/stock.js:75
msgid "Serialize Stock Item"
msgstr ""
-#: templates/js/translated/stock.js:92 templates/js/translated/stock.js:181
-msgid "Next available serial number"
-msgstr ""
-
-#: templates/js/translated/stock.js:94 templates/js/translated/stock.js:183
-msgid "Latest serial number"
-msgstr ""
-
-#: templates/js/translated/stock.js:102
+#: templates/js/translated/stock.js:103
msgid "Confirm Stock Serialization"
msgstr ""
-#: templates/js/translated/stock.js:111
+#: templates/js/translated/stock.js:112
msgid "Parent stock location"
msgstr ""
-#: templates/js/translated/stock.js:154
+#: templates/js/translated/stock.js:155
msgid "New Stock Location"
msgstr ""
-#: templates/js/translated/stock.js:194
+#: templates/js/translated/stock.js:195
msgid "This part cannot be serialized"
msgstr ""
-#: templates/js/translated/stock.js:233
+#: templates/js/translated/stock.js:234
msgid "Enter initial quantity for this stock item"
msgstr ""
-#: templates/js/translated/stock.js:239
+#: templates/js/translated/stock.js:240
msgid "Enter serial numbers for new stock (or leave blank)"
msgstr ""
-#: templates/js/translated/stock.js:382
+#: templates/js/translated/stock.js:383
msgid "Created new stock item"
msgstr ""
-#: templates/js/translated/stock.js:395
+#: templates/js/translated/stock.js:396
msgid "Created multiple stock items"
msgstr ""
-#: templates/js/translated/stock.js:420
+#: templates/js/translated/stock.js:421
msgid "Find Serial Number"
msgstr ""
-#: templates/js/translated/stock.js:424 templates/js/translated/stock.js:425
+#: templates/js/translated/stock.js:425 templates/js/translated/stock.js:426
msgid "Enter serial number"
msgstr ""
-#: templates/js/translated/stock.js:441
+#: templates/js/translated/stock.js:442
msgid "Enter a serial number"
msgstr ""
-#: templates/js/translated/stock.js:461
+#: templates/js/translated/stock.js:462
msgid "No matching serial number"
msgstr ""
-#: templates/js/translated/stock.js:470
+#: templates/js/translated/stock.js:471
msgid "More than one matching result found"
msgstr ""
-#: templates/js/translated/stock.js:515
+#: templates/js/translated/stock.js:516
msgid "Export Stock"
msgstr ""
-#: templates/js/translated/stock.js:526
+#: templates/js/translated/stock.js:527
msgid "Include Sublocations"
msgstr ""
-#: templates/js/translated/stock.js:527
+#: templates/js/translated/stock.js:528
msgid "Include stock items in sublocations"
msgstr ""
-#: templates/js/translated/stock.js:636
+#: templates/js/translated/stock.js:637
msgid "Confirm stock assignment"
msgstr ""
-#: templates/js/translated/stock.js:637
+#: templates/js/translated/stock.js:638
msgid "Assign Stock to Customer"
msgstr ""
-#: templates/js/translated/stock.js:714
+#: templates/js/translated/stock.js:715
msgid "Warning: Merge operation cannot be reversed"
msgstr ""
-#: templates/js/translated/stock.js:715
+#: templates/js/translated/stock.js:716
msgid "Some information will be lost when merging stock items"
msgstr ""
-#: templates/js/translated/stock.js:717
+#: templates/js/translated/stock.js:718
msgid "Stock transaction history will be deleted for merged items"
msgstr ""
-#: templates/js/translated/stock.js:718
+#: templates/js/translated/stock.js:719
msgid "Supplier part information will be deleted for merged items"
msgstr ""
-#: templates/js/translated/stock.js:804
+#: templates/js/translated/stock.js:805
msgid "Confirm stock item merge"
msgstr ""
-#: templates/js/translated/stock.js:805
+#: templates/js/translated/stock.js:806
msgid "Merge Stock Items"
msgstr ""
-#: templates/js/translated/stock.js:900
+#: templates/js/translated/stock.js:901
msgid "Transfer Stock"
msgstr ""
-#: templates/js/translated/stock.js:901
+#: templates/js/translated/stock.js:902
msgid "Move"
msgstr ""
-#: templates/js/translated/stock.js:907
+#: templates/js/translated/stock.js:908
msgid "Count Stock"
msgstr ""
-#: templates/js/translated/stock.js:908
+#: templates/js/translated/stock.js:909
msgid "Count"
msgstr ""
-#: templates/js/translated/stock.js:912
+#: templates/js/translated/stock.js:913
msgid "Remove Stock"
msgstr ""
-#: templates/js/translated/stock.js:913
+#: templates/js/translated/stock.js:914
msgid "Take"
msgstr ""
-#: templates/js/translated/stock.js:917
+#: templates/js/translated/stock.js:918
msgid "Add Stock"
msgstr ""
-#: templates/js/translated/stock.js:918 users/models.py:208
+#: templates/js/translated/stock.js:919 users/models.py:213
msgid "Add"
msgstr ""
-#: templates/js/translated/stock.js:922 templates/stock_table.html:58
+#: templates/js/translated/stock.js:923 templates/stock_table.html:58
msgid "Delete Stock"
msgstr ""
-#: templates/js/translated/stock.js:1011
+#: templates/js/translated/stock.js:1012
msgid "Quantity cannot be adjusted for serialized stock"
msgstr ""
-#: templates/js/translated/stock.js:1011
+#: templates/js/translated/stock.js:1012
msgid "Specify stock quantity"
msgstr ""
-#: templates/js/translated/stock.js:1051
+#: templates/js/translated/stock.js:1052
msgid "You must select at least one available stock item"
msgstr ""
-#: templates/js/translated/stock.js:1209
+#: templates/js/translated/stock.js:1210
msgid "PASS"
msgstr ""
-#: templates/js/translated/stock.js:1211
+#: templates/js/translated/stock.js:1212
msgid "FAIL"
msgstr ""
-#: templates/js/translated/stock.js:1216
+#: templates/js/translated/stock.js:1217
msgid "NO RESULT"
msgstr ""
-#: templates/js/translated/stock.js:1238
+#: templates/js/translated/stock.js:1264
+msgid "Pass test"
+msgstr ""
+
+#: templates/js/translated/stock.js:1267
msgid "Add test result"
msgstr ""
-#: templates/js/translated/stock.js:1264
+#: templates/js/translated/stock.js:1293
msgid "No test results found"
msgstr ""
-#: templates/js/translated/stock.js:1321
+#: templates/js/translated/stock.js:1349
msgid "Test Date"
msgstr ""
-#: templates/js/translated/stock.js:1428
+#: templates/js/translated/stock.js:1501
+msgid "Edit Test Result"
+msgstr ""
+
+#: templates/js/translated/stock.js:1523
+msgid "Delete Test Result"
+msgstr ""
+
+#: templates/js/translated/stock.js:1552
msgid "In production"
msgstr ""
-#: templates/js/translated/stock.js:1432
+#: templates/js/translated/stock.js:1556
msgid "Installed in Stock Item"
msgstr ""
-#: templates/js/translated/stock.js:1440
+#: templates/js/translated/stock.js:1564
msgid "Assigned to Sales Order"
msgstr ""
-#: templates/js/translated/stock.js:1446
+#: templates/js/translated/stock.js:1570
msgid "No stock location set"
msgstr ""
-#: templates/js/translated/stock.js:1604
+#: templates/js/translated/stock.js:1728
msgid "Stock item is in production"
msgstr ""
-#: templates/js/translated/stock.js:1609
+#: templates/js/translated/stock.js:1733
msgid "Stock item assigned to sales order"
msgstr ""
-#: templates/js/translated/stock.js:1612
+#: templates/js/translated/stock.js:1736
msgid "Stock item assigned to customer"
msgstr ""
-#: templates/js/translated/stock.js:1616
+#: templates/js/translated/stock.js:1740
msgid "Stock item has expired"
msgstr ""
-#: templates/js/translated/stock.js:1618
+#: templates/js/translated/stock.js:1742
msgid "Stock item will expire soon"
msgstr ""
-#: templates/js/translated/stock.js:1624
+#: templates/js/translated/stock.js:1748
msgid "Serialized stock item has been allocated"
msgstr ""
-#: templates/js/translated/stock.js:1626
+#: templates/js/translated/stock.js:1750
msgid "Stock item has been fully allocated"
msgstr ""
-#: templates/js/translated/stock.js:1628
+#: templates/js/translated/stock.js:1752
msgid "Stock item has been partially allocated"
msgstr ""
-#: templates/js/translated/stock.js:1633
+#: templates/js/translated/stock.js:1757
msgid "Stock item has been installed in another item"
msgstr ""
-#: templates/js/translated/stock.js:1640
+#: templates/js/translated/stock.js:1764
msgid "Stock item has been rejected"
msgstr ""
-#: templates/js/translated/stock.js:1642
+#: templates/js/translated/stock.js:1766
msgid "Stock item is lost"
msgstr ""
-#: templates/js/translated/stock.js:1644
+#: templates/js/translated/stock.js:1768
msgid "Stock item is destroyed"
msgstr ""
-#: templates/js/translated/stock.js:1648
+#: templates/js/translated/stock.js:1772
#: templates/js/translated/table_filters.js:188
msgid "Depleted"
msgstr ""
-#: templates/js/translated/stock.js:1698
+#: templates/js/translated/stock.js:1822
msgid "Stocktake"
msgstr ""
-#: templates/js/translated/stock.js:1771
+#: templates/js/translated/stock.js:1895
msgid "Supplier part not specified"
msgstr ""
-#: templates/js/translated/stock.js:1809
+#: templates/js/translated/stock.js:1933
msgid "No stock items matching query"
msgstr ""
-#: templates/js/translated/stock.js:1830 templates/js/translated/stock.js:1878
+#: templates/js/translated/stock.js:1954 templates/js/translated/stock.js:2002
msgid "items"
msgstr ""
-#: templates/js/translated/stock.js:1918
+#: templates/js/translated/stock.js:2042
msgid "batches"
msgstr ""
-#: templates/js/translated/stock.js:1945
+#: templates/js/translated/stock.js:2069
msgid "locations"
msgstr ""
-#: templates/js/translated/stock.js:1947
+#: templates/js/translated/stock.js:2071
msgid "Undefined location"
msgstr ""
-#: templates/js/translated/stock.js:2146
+#: templates/js/translated/stock.js:2270
msgid "Set Stock Status"
msgstr ""
-#: templates/js/translated/stock.js:2160
+#: templates/js/translated/stock.js:2284
msgid "Select Status Code"
msgstr ""
-#: templates/js/translated/stock.js:2161
+#: templates/js/translated/stock.js:2285
msgid "Status code must be selected"
msgstr ""
-#: templates/js/translated/stock.js:2340
+#: templates/js/translated/stock.js:2464
msgid "Allocated Quantity"
msgstr ""
-#: templates/js/translated/stock.js:2535
+#: templates/js/translated/stock.js:2659
msgid "Invalid date"
msgstr ""
-#: templates/js/translated/stock.js:2557
+#: templates/js/translated/stock.js:2681
msgid "Details"
msgstr ""
-#: templates/js/translated/stock.js:2582
+#: templates/js/translated/stock.js:2706
msgid "Location no longer exists"
msgstr ""
-#: templates/js/translated/stock.js:2601
+#: templates/js/translated/stock.js:2725
msgid "Purchase order no longer exists"
msgstr ""
-#: templates/js/translated/stock.js:2620
+#: templates/js/translated/stock.js:2744
msgid "Customer no longer exists"
msgstr ""
-#: templates/js/translated/stock.js:2638
+#: templates/js/translated/stock.js:2762
msgid "Stock item no longer exists"
msgstr ""
-#: templates/js/translated/stock.js:2661
+#: templates/js/translated/stock.js:2785
msgid "Added"
msgstr ""
-#: templates/js/translated/stock.js:2669
+#: templates/js/translated/stock.js:2793
msgid "Removed"
msgstr ""
-#: templates/js/translated/stock.js:2710
+#: templates/js/translated/stock.js:2834
msgid "Edit tracking entry"
msgstr ""
-#: templates/js/translated/stock.js:2711
+#: templates/js/translated/stock.js:2835
msgid "Delete tracking entry"
msgstr ""
-#: templates/js/translated/stock.js:2762
+#: templates/js/translated/stock.js:2886
msgid "No installed items"
msgstr ""
-#: templates/js/translated/stock.js:2813
+#: templates/js/translated/stock.js:2937
msgid "Uninstall Stock Item"
msgstr ""
+#: templates/js/translated/stock.js:2973
+msgid "Install another stock item into this item"
+msgstr ""
+
+#: templates/js/translated/stock.js:2974
+msgid "Stock items can only be installed if they meet the following criteria"
+msgstr ""
+
+#: templates/js/translated/stock.js:2976
+msgid "The Stock Item links to a Part which is the BOM for this Stock Item"
+msgstr ""
+
+#: templates/js/translated/stock.js:2977
+msgid "The Stock Item is currently available in stock"
+msgstr ""
+
+#: templates/js/translated/stock.js:2978
+msgid "The Stock Item is serialized and does not belong to another item"
+msgstr ""
+
+#: templates/js/translated/stock.js:2991
+msgid "Select part to install"
+msgstr ""
+
#: templates/js/translated/table_filters.js:56
msgid "Trackable Part"
msgstr ""
@@ -9055,12 +9187,12 @@ msgstr ""
#: templates/js/translated/table_filters.js:121
#: templates/js/translated/table_filters.js:122
-#: templates/js/translated/table_filters.js:407
+#: templates/js/translated/table_filters.js:402
msgid "Include subcategories"
msgstr ""
#: templates/js/translated/table_filters.js:126
-#: templates/js/translated/table_filters.js:442
+#: templates/js/translated/table_filters.js:437
msgid "Subscribed"
msgstr ""
@@ -9102,7 +9234,7 @@ msgid "Batch code"
msgstr ""
#: templates/js/translated/table_filters.js:163
-#: templates/js/translated/table_filters.js:379
+#: templates/js/translated/table_filters.js:374
msgid "Active parts"
msgstr ""
@@ -9187,47 +9319,47 @@ msgstr ""
msgid "Show stock which is close to expiring"
msgstr ""
-#: templates/js/translated/table_filters.js:290
+#: templates/js/translated/table_filters.js:285
msgid "Build status"
msgstr ""
-#: templates/js/translated/table_filters.js:303
-#: templates/js/translated/table_filters.js:344
+#: templates/js/translated/table_filters.js:298
+#: templates/js/translated/table_filters.js:339
msgid "Assigned to me"
msgstr ""
-#: templates/js/translated/table_filters.js:320
-#: templates/js/translated/table_filters.js:331
-#: templates/js/translated/table_filters.js:352
+#: templates/js/translated/table_filters.js:315
+#: templates/js/translated/table_filters.js:326
+#: templates/js/translated/table_filters.js:347
msgid "Order status"
msgstr ""
-#: templates/js/translated/table_filters.js:336
-#: templates/js/translated/table_filters.js:357
+#: templates/js/translated/table_filters.js:331
+#: templates/js/translated/table_filters.js:352
msgid "Outstanding"
msgstr ""
-#: templates/js/translated/table_filters.js:408
+#: templates/js/translated/table_filters.js:403
msgid "Include parts in subcategories"
msgstr ""
-#: templates/js/translated/table_filters.js:412
+#: templates/js/translated/table_filters.js:407
msgid "Has IPN"
msgstr ""
-#: templates/js/translated/table_filters.js:413
+#: templates/js/translated/table_filters.js:408
msgid "Part has internal part number"
msgstr ""
-#: templates/js/translated/table_filters.js:418
+#: templates/js/translated/table_filters.js:413
msgid "Show active parts"
msgstr ""
-#: templates/js/translated/table_filters.js:426
+#: templates/js/translated/table_filters.js:421
msgid "Stock available"
msgstr ""
-#: templates/js/translated/table_filters.js:454
+#: templates/js/translated/table_filters.js:449
msgid "Purchasable"
msgstr ""
@@ -9480,35 +9612,35 @@ msgstr ""
msgid "Important dates"
msgstr ""
-#: users/models.py:195
+#: users/models.py:200
msgid "Permission set"
msgstr ""
-#: users/models.py:203
+#: users/models.py:208
msgid "Group"
msgstr ""
-#: users/models.py:206
+#: users/models.py:211
msgid "View"
msgstr ""
-#: users/models.py:206
+#: users/models.py:211
msgid "Permission to view items"
msgstr ""
-#: users/models.py:208
+#: users/models.py:213
msgid "Permission to add items"
msgstr ""
-#: users/models.py:210
+#: users/models.py:215
msgid "Change"
msgstr ""
-#: users/models.py:210
+#: users/models.py:215
msgid "Permissions to edit items"
msgstr ""
-#: users/models.py:212
+#: users/models.py:217
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 1a73c9dea2..437de0dd78 100644
--- a/InvenTree/locale/tr/LC_MESSAGES/django.po
+++ b/InvenTree/locale/tr/LC_MESSAGES/django.po
@@ -3,8 +3,8 @@ msgid ""
msgstr ""
"Project-Id-Version: inventree\n"
"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2022-01-29 00:17+0000\n"
-"PO-Revision-Date: 2022-01-29 01:11\n"
+"POT-Creation-Date: 2022-02-18 20:36+0000\n"
+"PO-Revision-Date: 2022-02-18 20:38\n"
"Last-Translator: \n"
"Language-Team: Turkish\n"
"Language: tr_TR\n"
@@ -34,9 +34,9 @@ msgstr "Eşleşen eylem bulunamadı"
msgid "Enter date"
msgstr "Tarih giriniz"
-#: InvenTree/forms.py:126 build/forms.py:48 build/forms.py:69 order/forms.py:24
-#: order/forms.py:35 order/forms.py:46 order/forms.py:57
-#: templates/account/email_confirm.html:20 templates/js/translated/forms.js:595
+#: InvenTree/forms.py:126 order/forms.py:24 order/forms.py:35 order/forms.py:46
+#: order/forms.py:57 templates/account/email_confirm.html:20
+#: templates/js/translated/forms.js:596
msgid "Confirm"
msgstr "Onay"
@@ -86,7 +86,7 @@ msgid "Duplicate serial: {n}"
msgstr "Tekrarlanan seri {n}"
#: InvenTree/helpers.py:446 order/models.py:282 order/models.py:425
-#: stock/views.py:1231
+#: stock/views.py:1082
msgid "Invalid quantity provided"
msgstr "Geçersiz veri sağlandı"
@@ -119,133 +119,133 @@ msgstr "Seri numarası bulunamadı"
msgid "Number of unique serial number ({s}) must match quantity ({q})"
msgstr "Benzersiz seri numaralarının sayısı ({s}) girilen miktarla eşleşmeli ({q})"
-#: InvenTree/models.py:120
+#: InvenTree/models.py:176
msgid "Missing file"
msgstr ""
-#: InvenTree/models.py:121
+#: InvenTree/models.py:177
msgid "Missing external link"
msgstr ""
-#: InvenTree/models.py:132 stock/models.py:1995
+#: InvenTree/models.py:188 stock/models.py:1995
#: templates/js/translated/attachment.js:119
msgid "Attachment"
msgstr "Ek"
-#: InvenTree/models.py:133
+#: InvenTree/models.py:189
msgid "Select file to attach"
msgstr "Eklenecek dosyayı seç"
-#: InvenTree/models.py:139 company/models.py:131 company/models.py:348
-#: company/models.py:564 order/models.py:127 part/models.py:830
+#: InvenTree/models.py:195 company/models.py:131 company/models.py:348
+#: company/models.py:564 order/models.py:127 part/models.py:860
#: report/templates/report/inventree_build_order_base.html:165
#: templates/js/translated/company.js:540
#: templates/js/translated/company.js:829 templates/js/translated/part.js:1324
msgid "Link"
msgstr "Bağlantı"
-#: InvenTree/models.py:140 build/models.py:332 part/models.py:831
+#: InvenTree/models.py:196 build/models.py:332 part/models.py:861
#: stock/models.py:529
msgid "Link to external URL"
msgstr "Harici URL'ye bağlantı"
-#: InvenTree/models.py:143 templates/js/translated/attachment.js:163
+#: InvenTree/models.py:199 templates/js/translated/attachment.js:163
msgid "Comment"
msgstr "Yorum"
-#: InvenTree/models.py:143
+#: InvenTree/models.py:199
msgid "File comment"
msgstr "Dosya yorumu"
-#: InvenTree/models.py:149 InvenTree/models.py:150 common/models.py:1223
-#: common/models.py:1224 common/models.py:1452 common/models.py:1453
-#: part/models.py:2265 part/models.py:2285
+#: InvenTree/models.py:205 InvenTree/models.py:206 common/models.py:1235
+#: common/models.py:1236 common/models.py:1464 common/models.py:1465
+#: part/models.py:2301 part/models.py:2321
#: report/templates/report/inventree_test_report_base.html:96
-#: templates/js/translated/stock.js:2692
+#: templates/js/translated/stock.js:2816
msgid "User"
msgstr "Kullanıcı"
-#: InvenTree/models.py:153
+#: InvenTree/models.py:209
msgid "upload date"
msgstr "yükleme tarihi"
-#: InvenTree/models.py:176
+#: InvenTree/models.py:232
msgid "Filename must not be empty"
msgstr ""
-#: InvenTree/models.py:199
+#: InvenTree/models.py:255
msgid "Invalid attachment directory"
msgstr ""
-#: InvenTree/models.py:209
+#: InvenTree/models.py:265
#, python-brace-format
msgid "Filename contains illegal character '{c}'"
msgstr ""
-#: InvenTree/models.py:212
+#: InvenTree/models.py:268
msgid "Filename missing extension"
msgstr ""
-#: InvenTree/models.py:219
+#: InvenTree/models.py:275
msgid "Attachment with this filename already exists"
msgstr ""
-#: InvenTree/models.py:226
+#: InvenTree/models.py:282
msgid "Error renaming file"
msgstr ""
-#: InvenTree/models.py:261
+#: InvenTree/models.py:317
msgid "Invalid choice"
msgstr "Geçersiz seçim"
-#: InvenTree/models.py:277 InvenTree/models.py:278 common/models.py:1438
-#: company/models.py:415 label/models.py:112 part/models.py:774
-#: part/models.py:2449 plugin/models.py:40 report/models.py:181
+#: InvenTree/models.py:333 InvenTree/models.py:334 common/models.py:1450
+#: company/models.py:415 label/models.py:112 part/models.py:804
+#: part/models.py:2485 plugin/models.py:40 report/models.py:181
#: templates/InvenTree/settings/mixins/urls.html:13
#: templates/InvenTree/settings/plugin.html:48
#: templates/InvenTree/settings/plugin.html:125
#: templates/InvenTree/settings/plugin_settings.html:23
-#: templates/InvenTree/settings/settings.html:282
+#: templates/InvenTree/settings/settings.html:319
#: templates/js/translated/company.js:641 templates/js/translated/part.js:567
#: templates/js/translated/part.js:706 templates/js/translated/part.js:1631
-#: templates/js/translated/stock.js:2485
+#: templates/js/translated/stock.js:2609
msgid "Name"
msgstr "Adı"
-#: InvenTree/models.py:284 build/models.py:209
+#: InvenTree/models.py:340 build/models.py:209
#: build/templates/build/detail.html:25 company/models.py:354
#: company/models.py:570 company/templates/company/company_base.html:68
#: company/templates/company/manufacturer_part.html:76
#: company/templates/company/supplier_part.html:73 label/models.py:119
-#: order/models.py:125 part/models.py:797 part/templates/part/category.html:74
+#: order/models.py:125 part/models.py:827 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:93
#: templates/InvenTree/settings/plugin_settings.html:33
-#: templates/js/translated/bom.js:339 templates/js/translated/bom.js:552
-#: templates/js/translated/build.js:1682 templates/js/translated/company.js:345
+#: templates/js/translated/bom.js:552 templates/js/translated/bom.js:765
+#: templates/js/translated/build.js:1920 templates/js/translated/company.js:345
#: templates/js/translated/company.js:551
#: templates/js/translated/company.js:840 templates/js/translated/order.js:836
#: templates/js/translated/order.js:1019 templates/js/translated/order.js:1258
#: templates/js/translated/part.js:626 templates/js/translated/part.js:999
#: templates/js/translated/part.js:1084 templates/js/translated/part.js:1254
#: templates/js/translated/part.js:1650 templates/js/translated/part.js:1719
-#: templates/js/translated/stock.js:1577 templates/js/translated/stock.js:2314
-#: templates/js/translated/stock.js:2497 templates/js/translated/stock.js:2542
+#: templates/js/translated/stock.js:1701 templates/js/translated/stock.js:2438
+#: templates/js/translated/stock.js:2621 templates/js/translated/stock.js:2666
msgid "Description"
msgstr "Açıklama"
-#: InvenTree/models.py:285
+#: InvenTree/models.py:341
msgid "Description (optional)"
msgstr "Açıklama (isteğe bağlı)"
-#: InvenTree/models.py:293
+#: InvenTree/models.py:349
msgid "parent"
msgstr "üst"
-#: InvenTree/serializers.py:65 part/models.py:2734
+#: InvenTree/serializers.py:65 part/models.py:2803
msgid "Must be a valid number"
msgstr "Geçerli bir numara olmalı"
@@ -253,83 +253,127 @@ msgstr "Geçerli bir numara olmalı"
msgid "Filename"
msgstr ""
-#: InvenTree/settings.py:661
+#: InvenTree/serializers.py:334
+msgid "Invalid value"
+msgstr ""
+
+#: InvenTree/serializers.py:355
+msgid "Data File"
+msgstr ""
+
+#: InvenTree/serializers.py:356
+msgid "Select data file for upload"
+msgstr ""
+
+#: InvenTree/serializers.py:380
+msgid "Unsupported file type"
+msgstr ""
+
+#: InvenTree/serializers.py:386
+msgid "File is too large"
+msgstr ""
+
+#: InvenTree/serializers.py:407
+msgid "No columns found in file"
+msgstr ""
+
+#: InvenTree/serializers.py:410
+msgid "No data rows found in file"
+msgstr ""
+
+#: InvenTree/serializers.py:533
+msgid "No data rows provided"
+msgstr ""
+
+#: InvenTree/serializers.py:536
+msgid "No data columns supplied"
+msgstr ""
+
+#: InvenTree/serializers.py:623
+msgid "Missing required column"
+msgstr ""
+
+#: InvenTree/serializers.py:632
+msgid "Duplicate column"
+msgstr ""
+
+#: InvenTree/settings.py:655
msgid "German"
msgstr "Almanca"
-#: InvenTree/settings.py:662
+#: InvenTree/settings.py:656
msgid "Greek"
msgstr "Yunanca"
-#: InvenTree/settings.py:663
+#: InvenTree/settings.py:657
msgid "English"
msgstr "İngilizce"
-#: InvenTree/settings.py:664
+#: InvenTree/settings.py:658
msgid "Spanish"
msgstr "İspanyolca"
-#: InvenTree/settings.py:665
+#: InvenTree/settings.py:659
msgid "Spanish (Mexican)"
msgstr ""
-#: InvenTree/settings.py:666
+#: InvenTree/settings.py:660
msgid "French"
msgstr "Fransızca"
-#: InvenTree/settings.py:667
+#: InvenTree/settings.py:661
msgid "Hebrew"
msgstr "İbranice"
-#: InvenTree/settings.py:668
+#: InvenTree/settings.py:662
msgid "Italian"
msgstr "İtalyanca"
-#: InvenTree/settings.py:669
+#: InvenTree/settings.py:663
msgid "Japanese"
msgstr "Japonca"
-#: InvenTree/settings.py:670
+#: InvenTree/settings.py:664
msgid "Korean"
msgstr "Korece"
-#: InvenTree/settings.py:671
+#: InvenTree/settings.py:665
msgid "Dutch"
msgstr "Flemenkçe"
-#: InvenTree/settings.py:672
+#: InvenTree/settings.py:666
msgid "Norwegian"
msgstr "Norveççe"
-#: InvenTree/settings.py:673
+#: InvenTree/settings.py:667
msgid "Polish"
msgstr "Polonyaca"
-#: InvenTree/settings.py:674
+#: InvenTree/settings.py:668
msgid "Portugese"
msgstr ""
-#: InvenTree/settings.py:675
+#: InvenTree/settings.py:669
msgid "Russian"
msgstr "Rusça"
-#: InvenTree/settings.py:676
+#: InvenTree/settings.py:670
msgid "Swedish"
msgstr "İsveççe"
-#: InvenTree/settings.py:677
+#: InvenTree/settings.py:671
msgid "Thai"
msgstr "Tay dili"
-#: InvenTree/settings.py:678
+#: InvenTree/settings.py:672
msgid "Turkish"
msgstr "Türkçe"
-#: InvenTree/settings.py:679
+#: InvenTree/settings.py:673
msgid "Vietnamese"
msgstr ""
-#: InvenTree/settings.py:680
+#: InvenTree/settings.py:674
msgid "Chinese"
msgstr "Çince"
@@ -346,7 +390,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:316 templates/js/translated/table_filters.js:313
+#: InvenTree/status_codes.py:316 templates/js/translated/table_filters.js:308
msgid "Pending"
msgstr "Bekliyor"
@@ -456,7 +500,7 @@ msgstr "Üst ögeden ayır"
msgid "Split child item"
msgstr "Alt ögeyi ayır"
-#: InvenTree/status_codes.py:294 templates/js/translated/stock.js:2072
+#: InvenTree/status_codes.py:294 templates/js/translated/stock.js:2196
msgid "Merged stock items"
msgstr ""
@@ -484,41 +528,41 @@ msgstr "Satın alma emri karşılığında alındı"
msgid "Production"
msgstr "Üretim"
-#: InvenTree/validators.py:23
+#: InvenTree/validators.py:25
msgid "Not a valid currency code"
msgstr "Geçerli bir para birimi kodu değil"
-#: InvenTree/validators.py:51
+#: InvenTree/validators.py:53
msgid "Invalid character in part name"
msgstr "Parça adında geçersiz karakter"
-#: InvenTree/validators.py:64
+#: InvenTree/validators.py:66
#, python-brace-format
msgid "IPN must match regex pattern {pat}"
msgstr "IPN regex kalıbıyla eşleşmelidir {pat}"
-#: InvenTree/validators.py:78 InvenTree/validators.py:92
-#: InvenTree/validators.py:106
+#: InvenTree/validators.py:80 InvenTree/validators.py:94
+#: InvenTree/validators.py:108
#, python-brace-format
msgid "Reference must match pattern {pattern}"
msgstr "Referans {pattern} deseniyle mutlaka eşleşmeli"
-#: InvenTree/validators.py:114
+#: InvenTree/validators.py:116
#, python-brace-format
msgid "Illegal character in name ({x})"
msgstr "({x}) adında geçersiz karakter"
-#: InvenTree/validators.py:133 InvenTree/validators.py:149
+#: InvenTree/validators.py:137 InvenTree/validators.py:153
msgid "Overage value must not be negative"
msgstr "Fazlalık değeri negatif olmamalıdır"
-#: InvenTree/validators.py:151
+#: InvenTree/validators.py:155
msgid "Overage must not exceed 100%"
msgstr "Fazlalık %100'ü geçmemelidir"
-#: InvenTree/validators.py:158
-msgid "Overage must be an integer value or a percentage"
-msgstr "Fazlalık bir tamsayı veya yüzde olmalıdır"
+#: InvenTree/validators.py:162
+msgid "Invalid value for overage"
+msgstr ""
#: InvenTree/views.py:538
msgid "Delete Item"
@@ -584,69 +628,11 @@ msgstr ""
msgid "Barcode associated with Stock Item"
msgstr ""
-#: build/forms.py:36 build/models.py:1293
-#: build/templates/build/build_base.html:82
-#: build/templates/build/detail.html:35 common/models.py:1263
-#: company/forms.py:42 company/templates/company/supplier_part.html:251
-#: order/models.py:805 order/models.py:1229 order/serializers.py:816
-#: order/templates/order/order_wizard/match_parts.html:30
-#: order/templates/order/order_wizard/select_parts.html:34 part/forms.py:144
-#: part/forms.py:160 part/forms.py:176 part/models.py:2636
-#: part/templates/part/bom_upload/match_parts.html:31
-#: part/templates/part/detail.html:992 part/templates/part/detail.html:1078
-#: part/templates/part/part_pricing.html:16
-#: report/templates/report/inventree_build_order_base.html:114
-#: report/templates/report/inventree_po_report.html:91
-#: report/templates/report/inventree_so_report.html:91
-#: report/templates/report/inventree_test_report_base.html:81
-#: report/templates/report/inventree_test_report_base.html:139
-#: stock/forms.py:142 stock/serializers.py:293
-#: stock/templates/stock/item_base.html:181
-#: stock/templates/stock/item_base.html:262
-#: stock/templates/stock/item_base.html:270
-#: templates/js/translated/barcode.js:385 templates/js/translated/bom.js:567
-#: templates/js/translated/build.js:295 templates/js/translated/build.js:495
-#: templates/js/translated/build.js:689 templates/js/translated/build.js:699
-#: templates/js/translated/build.js:1075 templates/js/translated/build.js:1422
-#: templates/js/translated/model_renderers.js:99
-#: templates/js/translated/order.js:101 templates/js/translated/order.js:1056
-#: 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:906
-#: templates/js/translated/part.js:1862 templates/js/translated/part.js:1985
-#: templates/js/translated/part.js:2063 templates/js/translated/stock.js:391
-#: templates/js/translated/stock.js:588 templates/js/translated/stock.js:758
-#: templates/js/translated/stock.js:2677 templates/js/translated/stock.js:2779
-msgid "Quantity"
-msgstr "Miktar"
-
-#: build/forms.py:37
-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:820 stock/forms.py:81
-#: stock/serializers.py:314 templates/js/translated/stock.js:238
-#: templates/js/translated/stock.js:392
-msgid "Serial Numbers"
-msgstr "Seri Numaraları"
-
-#: build/forms.py:43
-msgid "Enter serial numbers for build outputs"
-msgstr "Yapım işi çıktısı için seri numaraları girin"
-
-#: build/forms.py:49
-msgid "Confirm creation of build output"
-msgstr "Yapım işi çıktısının oluşturulmasını onaylayın"
-
-#: build/forms.py:70
-msgid "Confirm deletion of build output"
-msgstr "Yapım işi çıktısının silinmesini onaylayın"
-
-#: build/forms.py:89
+#: build/forms.py:20
msgid "Confirm cancel"
msgstr "İptali Onayla"
-#: build/forms.py:89 build/views.py:65
+#: build/forms.py:20 build/views.py:62
msgid "Confirm build cancellation"
msgstr "Yapım işi iptalini onayla"
@@ -657,7 +643,7 @@ msgstr ""
#: build/models.py:139 build/templates/build/build_base.html:9
#: build/templates/build/build_base.html:27
#: report/templates/report/inventree_build_order_base.html:106
-#: templates/js/translated/build.js:457 templates/js/translated/stock.js:2290
+#: templates/js/translated/build.js:676 templates/js/translated/stock.js:2414
msgid "Build Order"
msgstr "Yapım İşi Emri"
@@ -665,7 +651,7 @@ msgstr "Yapım İşi Emri"
#: 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
+#: part/templates/part/part_sidebar.html:21 templates/InvenTree/index.html:221
#: templates/InvenTree/search.html:139
#: templates/InvenTree/settings/sidebar.html:43 users/models.py:44
msgid "Build Orders"
@@ -676,11 +662,11 @@ msgid "Build Order Reference"
msgstr "Yapım İşi Emri Referansı"
#: build/models.py:201 order/models.py:213 order/models.py:541
-#: order/models.py:812 part/models.py:2645
-#: part/templates/part/bom_upload/match_parts.html:30
+#: order/models.py:812 part/models.py:2714
+#: part/templates/part/upload_bom.html:54
#: report/templates/report/inventree_po_report.html:92
#: report/templates/report/inventree_so_report.html:92
-#: templates/js/translated/bom.js:559 templates/js/translated/build.js:1179
+#: templates/js/translated/bom.js:772 templates/js/translated/build.js:1401
#: templates/js/translated/order.js:1050 templates/js/translated/order.js:2144
msgid "Reference"
msgstr "Referans"
@@ -689,7 +675,7 @@ msgstr "Referans"
msgid "Brief description of the build"
msgstr "Yapım işinin kısa açıklaması"
-#: build/models.py:221 build/templates/build/build_base.html:164
+#: build/models.py:221 build/templates/build/build_base.html:169
#: build/templates/build/detail.html:88
msgid "Parent Build"
msgstr "Üst Yapım İşi"
@@ -702,30 +688,31 @@ msgstr "Bu yapım işinin tahsis edildiği yapım işi emri"
#: build/templates/build/detail.html:30 company/models.py:705
#: order/models.py:876 order/models.py:950
#: order/templates/order/order_wizard/select_parts.html:32 part/models.py:359
-#: part/models.py:2211 part/models.py:2227 part/models.py:2246
-#: part/models.py:2263 part/models.py:2365 part/models.py:2487
-#: part/models.py:2620 part/models.py:2927 part/serializers.py:658
-#: part/templates/part/part_app_base.html:8
+#: part/models.py:2247 part/models.py:2263 part/models.py:2282
+#: part/models.py:2299 part/models.py:2401 part/models.py:2523
+#: part/models.py:2613 part/models.py:2689 part/models.py:2996
+#: part/serializers.py:666 part/templates/part/part_app_base.html:8
#: part/templates/part/part_pricing.html:12
#: part/templates/part/set_category.html:13
+#: part/templates/part/upload_bom.html:52
#: 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: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:338
-#: templates/js/translated/bom.js:517 templates/js/translated/build.js:680
-#: templates/js/translated/build.js:1048 templates/js/translated/build.js:1419
-#: templates/js/translated/build.js:1687 templates/js/translated/company.js:492
+#: templates/js/translated/barcode.js:383 templates/js/translated/bom.js:551
+#: templates/js/translated/bom.js:730 templates/js/translated/build.js:902
+#: templates/js/translated/build.js:1270 templates/js/translated/build.js:1655
+#: templates/js/translated/build.js:1925 templates/js/translated/company.js:492
#: templates/js/translated/company.js:749 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:984
#: templates/js/translated/part.js:1065 templates/js/translated/part.js:1232
-#: templates/js/translated/stock.js:562 templates/js/translated/stock.js:727
-#: templates/js/translated/stock.js:934 templates/js/translated/stock.js:1534
-#: templates/js/translated/stock.js:2767
+#: templates/js/translated/stock.js:563 templates/js/translated/stock.js:728
+#: templates/js/translated/stock.js:935 templates/js/translated/stock.js:1658
+#: templates/js/translated/stock.js:2891 templates/js/translated/stock.js:2990
msgid "Part"
msgstr "Parça"
@@ -741,7 +728,7 @@ msgstr "Satış Emri Referansı"
msgid "SalesOrder to which this build is allocated"
msgstr "Bu yapım işinin tahsis edildiği satış emri"
-#: build/models.py:249 templates/js/translated/build.js:1407
+#: build/models.py:249 templates/js/translated/build.js:1643
#: templates/js/translated/order.js:1564
msgid "Source Location"
msgstr "Kaynak Konum"
@@ -782,15 +769,15 @@ msgstr "Yapım İşi Durumu"
msgid "Build status code"
msgstr "Yapım işi durum kodu"
-#: build/models.py:287 stock/models.py:533
+#: build/models.py:287 build/serializers.py:218 stock/models.py:533
msgid "Batch Code"
msgstr "Sıra numarası"
-#: build/models.py:291
+#: build/models.py:291 build/serializers.py:219
msgid "Batch code for this build output"
msgstr "Yapım işi çıktısı için sıra numarası"
-#: build/models.py:294 order/models.py:129 part/models.py:969
+#: build/models.py:294 order/models.py:129 part/models.py:999
#: part/templates/part/part_base.html:313 templates/js/translated/order.js:1271
msgid "Creation Date"
msgstr "Oluşturulma tarihi"
@@ -804,7 +791,7 @@ msgid "Target date for build completion. Build will be overdue after this date."
msgstr "Yapım işinin tamamlanması için hedef tarih. Bu tarihten sonra yapım işi gecikmiş olacak."
#: build/models.py:302 order/models.py:255
-#: templates/js/translated/build.js:1758
+#: templates/js/translated/build.js:1996
msgid "Completion Date"
msgstr "Tamamlama tarihi"
@@ -812,7 +799,7 @@ msgstr "Tamamlama tarihi"
msgid "completed by"
msgstr "tamamlayan"
-#: build/models.py:316 templates/js/translated/build.js:1729
+#: build/models.py:316 templates/js/translated/build.js:1967
msgid "Issued by"
msgstr "Veren"
@@ -820,12 +807,12 @@ msgstr "Veren"
msgid "User who issued this build order"
msgstr "Bu yapım işi emrini veren kullanıcı"
-#: build/models.py:325 build/templates/build/build_base.html:185
+#: build/models.py:325 build/templates/build/build_base.html:190
#: build/templates/build/detail.html:116 order/models.py:143
#: order/templates/order/order_base.html:170
-#: order/templates/order/sales_order_base.html:182 part/models.py:973
+#: order/templates/order/sales_order_base.html:182 part/models.py:1003
#: report/templates/report/inventree_build_order_base.html:159
-#: templates/js/translated/build.js:1741 templates/js/translated/order.js:864
+#: templates/js/translated/build.js:1979 templates/js/translated/order.js:864
msgid "Responsible"
msgstr "Sorumlu"
@@ -837,26 +824,26 @@ msgstr "Bu yapım işi emrinden sorumlu kullanıcı"
#: company/templates/company/manufacturer_part.html:102
#: company/templates/company/supplier_part.html:126
#: part/templates/part/part_base.html:354 stock/models.py:527
-#: stock/templates/stock/item_base.html:373
+#: stock/templates/stock/item_base.html:375
msgid "External Link"
msgstr "Harici Bağlantı"
-#: build/models.py:336 build/serializers.py:201
+#: build/models.py:336 build/serializers.py:380
#: build/templates/build/sidebar.html:21 company/models.py:142
#: company/models.py:577 company/templates/company/sidebar.html:25
#: order/models.py:147 order/models.py:814 order/models.py:1071
#: order/templates/order/po_sidebar.html:11
-#: order/templates/order/so_sidebar.html:17 part/models.py:958
-#: part/templates/part/detail.html:137 part/templates/part/part_sidebar.html:54
+#: order/templates/order/so_sidebar.html:17 part/models.py:988
+#: part/templates/part/detail.html:140 part/templates/part/part_sidebar.html:57
#: report/templates/report/inventree_build_order_base.html:173
-#: stock/forms.py:140 stock/forms.py:190 stock/forms.py:224 stock/models.py:599
+#: stock/forms.py:137 stock/forms.py:171 stock/models.py:599
#: stock/models.py:1895 stock/models.py:2001 stock/serializers.py:332
-#: stock/serializers.py:640 stock/serializers.py:738 stock/serializers.py:870
+#: stock/serializers.py:697 stock/serializers.py:795 stock/serializers.py:927
#: stock/templates/stock/stock_sidebar.html:25
-#: templates/js/translated/barcode.js:58 templates/js/translated/bom.js:723
+#: templates/js/translated/barcode.js:58 templates/js/translated/bom.js:936
#: templates/js/translated/company.js:845 templates/js/translated/order.js:1149
#: templates/js/translated/order.js:1445 templates/js/translated/order.js:2280
-#: templates/js/translated/stock.js:1317 templates/js/translated/stock.js:1803
+#: templates/js/translated/stock.js:1345 templates/js/translated/stock.js:1927
msgid "Notes"
msgstr "Notlar"
@@ -864,208 +851,284 @@ msgstr "Notlar"
msgid "Extra build notes"
msgstr "Yapım işi için ekstra notlar"
-#: build/models.py:717
+#: build/models.py:756
msgid "No build output specified"
msgstr "Yapım işi çıktısı belirtilmedi"
-#: build/models.py:720
+#: build/models.py:759
msgid "Build output is already completed"
msgstr "Yapım işi çıktısı zaten tamamlanmış"
-#: build/models.py:723
+#: build/models.py:762
msgid "Build output does not match Build Order"
msgstr "Yapım işi çıktısı, yapım işi emri ile eşleşmiyor"
-#: build/models.py:1115
+#: build/models.py:1154
msgid "Build item must specify a build output, as master part is marked as trackable"
msgstr "Ana parça izlenebilir olarak işaretlendiğinden, yapım işi çıktısı için bir yapım işi ögesi belirtmelidir"
-#: build/models.py:1124
+#: build/models.py:1163
#, python-brace-format
msgid "Allocated quantity ({q}) must not execed available stock quantity ({a})"
msgstr ""
-#: build/models.py:1134
+#: build/models.py:1173
msgid "Stock item is over-allocated"
msgstr "Stok kalemi fazladan tahsis edilmiş"
-#: build/models.py:1140 order/models.py:1189
+#: build/models.py:1179 order/models.py:1189
msgid "Allocation quantity must be greater than zero"
msgstr "Tahsis edilen miktar sıfırdan büyük olmalıdır"
-#: build/models.py:1146
+#: build/models.py:1185
msgid "Quantity must be 1 for serialized stock"
msgstr "Seri numaralı stok için miktar bir olmalı"
-#: build/models.py:1203
+#: build/models.py:1242
msgid "Selected stock item not found in BOM"
msgstr ""
-#: build/models.py:1263 stock/templates/stock/item_base.html:345
-#: templates/InvenTree/search.html:137 templates/js/translated/build.js:1660
+#: build/models.py:1302 stock/templates/stock/item_base.html:347
+#: templates/InvenTree/search.html:137 templates/js/translated/build.js:1898
#: templates/navbar.html:35
msgid "Build"
msgstr "Yapım İşi"
-#: build/models.py:1264
+#: build/models.py:1303
msgid "Build to allocate parts"
msgstr "Yapım işi için tahsis edilen parçalar"
-#: build/models.py:1280 build/serializers.py:388 order/serializers.py:696
-#: order/serializers.py:714 stock/serializers.py:578 stock/serializers.py:696
-#: stock/templates/stock/item_base.html:9
+#: build/models.py:1319 build/serializers.py:570 order/serializers.py:696
+#: order/serializers.py:714 stock/serializers.py:404 stock/serializers.py:635
+#: stock/serializers.py:753 stock/templates/stock/item_base.html:9
#: stock/templates/stock/item_base.html:23
-#: stock/templates/stock/item_base.html:367
-#: templates/js/translated/build.js:468 templates/js/translated/build.js:473
-#: templates/js/translated/build.js:1421 templates/js/translated/build.js:1803
+#: stock/templates/stock/item_base.html:369
+#: templates/js/translated/build.js:687 templates/js/translated/build.js:692
+#: templates/js/translated/build.js:1657 templates/js/translated/build.js:2041
#: 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:563 templates/js/translated/stock.js:728
-#: templates/js/translated/stock.js:2628
+#: templates/js/translated/stock.js:564 templates/js/translated/stock.js:729
+#: templates/js/translated/stock.js:2752
msgid "Stock Item"
msgstr "Stok Kalemi"
-#: build/models.py:1281
+#: build/models.py:1320
msgid "Source stock item"
msgstr "Kaynak stok kalemi"
-#: build/models.py:1294
+#: build/models.py:1332 build/serializers.py:188
+#: build/templates/build/build_base.html:82
+#: build/templates/build/detail.html:35 common/models.py:1275
+#: company/forms.py:42 company/templates/company/supplier_part.html:251
+#: order/models.py:805 order/models.py:1229 order/serializers.py:816
+#: order/templates/order/order_wizard/match_parts.html:30
+#: order/templates/order/order_wizard/select_parts.html:34 part/forms.py:144
+#: part/forms.py:160 part/forms.py:176 part/models.py:2705
+#: part/templates/part/detail.html:995 part/templates/part/detail.html:1081
+#: part/templates/part/part_pricing.html:16
+#: part/templates/part/upload_bom.html:53
+#: report/templates/report/inventree_build_order_base.html:114
+#: report/templates/report/inventree_po_report.html:91
+#: report/templates/report/inventree_so_report.html:91
+#: report/templates/report/inventree_test_report_base.html:81
+#: report/templates/report/inventree_test_report_base.html:139
+#: stock/forms.py:139 stock/serializers.py:293
+#: stock/templates/stock/item_base.html:183
+#: stock/templates/stock/item_base.html:264
+#: stock/templates/stock/item_base.html:272
+#: templates/js/translated/barcode.js:385 templates/js/translated/bom.js:780
+#: templates/js/translated/build.js:375 templates/js/translated/build.js:523
+#: templates/js/translated/build.js:714 templates/js/translated/build.js:911
+#: templates/js/translated/build.js:921 templates/js/translated/build.js:1297
+#: templates/js/translated/build.js:1658
+#: templates/js/translated/model_renderers.js:99
+#: templates/js/translated/order.js:101 templates/js/translated/order.js:1056
+#: 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:906
+#: templates/js/translated/part.js:1862 templates/js/translated/part.js:1985
+#: templates/js/translated/part.js:2063 templates/js/translated/stock.js:392
+#: templates/js/translated/stock.js:589 templates/js/translated/stock.js:759
+#: templates/js/translated/stock.js:2801 templates/js/translated/stock.js:2903
+msgid "Quantity"
+msgstr "Miktar"
+
+#: build/models.py:1333
msgid "Stock quantity to allocate to build"
msgstr "Yapım işi için tahsis edilen stok miktarı"
-#: build/models.py:1302
+#: build/models.py:1341
msgid "Install into"
msgstr "Kurulduğu yer"
-#: build/models.py:1303
+#: build/models.py:1342
msgid "Destination stock item"
msgstr "Hedef stok kalemi"
-#: build/serializers.py:137 build/serializers.py:417
+#: build/serializers.py:138 build/serializers.py:599
msgid "Build Output"
msgstr ""
-#: build/serializers.py:146
+#: build/serializers.py:150
msgid "Build output does not match the parent build"
msgstr ""
-#: build/serializers.py:150
+#: build/serializers.py:154
msgid "Output part does not match BuildOrder part"
msgstr ""
-#: build/serializers.py:154
+#: build/serializers.py:158
msgid "This build output has already been completed"
msgstr ""
-#: build/serializers.py:158
+#: build/serializers.py:164
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:731
-#: stock/serializers.py:972 stock/templates/stock/item_base.html:313
-#: templates/js/translated/barcode.js:384
-#: templates/js/translated/barcode.js:557 templates/js/translated/build.js:480
-#: templates/js/translated/build.js:1087 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:179 templates/js/translated/stock.js:564
-#: templates/js/translated/stock.js:729 templates/js/translated/stock.js:936
-#: templates/js/translated/stock.js:1684 templates/js/translated/stock.js:2569
-msgid "Location"
-msgstr "Konum"
+#: build/serializers.py:189
+msgid "Enter quantity for build output"
+msgstr "Yapım işi çıktısı için miktarını girin"
-#: build/serializers.py:191
-msgid "Location for completed build outputs"
-msgstr ""
-
-#: build/serializers.py:197 build/templates/build/build_base.html:137
-#: build/templates/build/detail.html:63 order/models.py:557
-#: order/serializers.py:247 stock/templates/stock/item_base.html:187
-#: templates/js/translated/barcode.js:140 templates/js/translated/build.js:1716
-#: templates/js/translated/order.js:591 templates/js/translated/order.js:840
-#: templates/js/translated/order.js:1263 templates/js/translated/stock.js:1659
-#: templates/js/translated/stock.js:2646 templates/js/translated/stock.js:2795
-msgid "Status"
-msgstr "Durum"
-
-#: build/serializers.py:213
-msgid "A list of build outputs must be provided"
-msgstr ""
-
-#: build/serializers.py:249
-msgid "Accept Unallocated"
-msgstr ""
-
-#: build/serializers.py:250
-msgid "Accept that stock items have not been fully allocated to this build order"
-msgstr ""
-
-#: build/serializers.py:260 templates/js/translated/build.js:149
-msgid "Required stock has not been fully allocated"
-msgstr "Gerekli stok tamamen tahsis edilemedi"
-
-#: build/serializers.py:265
-msgid "Accept Incomplete"
-msgstr ""
-
-#: build/serializers.py:266
-msgid "Accept that the required number of build outputs have not been completed"
-msgstr ""
-
-#: build/serializers.py:276 templates/js/translated/build.js:153
-msgid "Required build quantity has not been completed"
-msgstr "Gerekli yapım işi miktarı tamamlanmadı"
-
-#: build/serializers.py:285
-msgid "Build order has incomplete outputs"
-msgstr ""
-
-#: build/serializers.py:313 build/serializers.py:362 part/models.py:2760
-#: part/models.py:2919
-msgid "BOM Item"
-msgstr ""
-
-#: build/serializers.py:323
-msgid "Build output"
-msgstr ""
-
-#: build/serializers.py:332
-msgid "Build output must point to the same build"
-msgstr ""
-
-#: build/serializers.py:379
-msgid "bom_item.part must point to the same part as the build order"
-msgstr ""
-
-#: build/serializers.py:394 stock/serializers.py:585
-msgid "Item must be in stock"
-msgstr ""
-
-#: build/serializers.py:408 order/models.py:280 order/serializers.py:240
+#: build/serializers.py:201 build/serializers.py:590 order/models.py:280
+#: order/serializers.py:240 part/serializers.py:471 part/serializers.py:827
#: stock/models.py:367 stock/models.py:1105 stock/serializers.py:305
msgid "Quantity must be greater than zero"
msgstr ""
-#: build/serializers.py:450 order/serializers.py:747
+#: build/serializers.py:208
+msgid "Integer quantity required for trackable parts"
+msgstr ""
+
+#: build/serializers.py:211
+msgid "Integer quantity required, as the bill of materials contains trackable parts"
+msgstr ""
+
+#: build/serializers.py:225 order/serializers.py:820 stock/forms.py:78
+#: stock/serializers.py:314 templates/js/translated/stock.js:239
+#: templates/js/translated/stock.js:393
+msgid "Serial Numbers"
+msgstr "Seri Numaraları"
+
+#: build/serializers.py:226
+msgid "Enter serial numbers for build outputs"
+msgstr "Yapım işi çıktısı için seri numaraları girin"
+
+#: build/serializers.py:239
+msgid "Auto Allocate Serial Numbers"
+msgstr ""
+
+#: build/serializers.py:240
+msgid "Automatically allocate required items with matching serial numbers"
+msgstr ""
+
+#: build/serializers.py:274 stock/api.py:551
+msgid "The following serial numbers already exist"
+msgstr ""
+
+#: build/serializers.py:327 build/serializers.py:392
+msgid "A list of build outputs must be provided"
+msgstr ""
+
+#: build/serializers.py:369 order/serializers.py:226 order/serializers.py:294
+#: stock/forms.py:169 stock/serializers.py:325 stock/serializers.py:788
+#: stock/serializers.py:1029 stock/templates/stock/item_base.html:315
+#: templates/js/translated/barcode.js:384
+#: templates/js/translated/barcode.js:557 templates/js/translated/build.js:699
+#: templates/js/translated/build.js:1309 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:179 templates/js/translated/stock.js:565
+#: templates/js/translated/stock.js:730 templates/js/translated/stock.js:937
+#: templates/js/translated/stock.js:1808 templates/js/translated/stock.js:2693
+msgid "Location"
+msgstr "Konum"
+
+#: build/serializers.py:370
+msgid "Location for completed build outputs"
+msgstr ""
+
+#: build/serializers.py:376 build/templates/build/build_base.html:142
+#: build/templates/build/detail.html:63 order/models.py:557
+#: order/serializers.py:247 stock/templates/stock/item_base.html:189
+#: templates/js/translated/barcode.js:140 templates/js/translated/build.js:1954
+#: templates/js/translated/order.js:591 templates/js/translated/order.js:840
+#: templates/js/translated/order.js:1263 templates/js/translated/stock.js:1783
+#: templates/js/translated/stock.js:2770 templates/js/translated/stock.js:2919
+msgid "Status"
+msgstr "Durum"
+
+#: build/serializers.py:428
+msgid "Accept Unallocated"
+msgstr ""
+
+#: build/serializers.py:429
+msgid "Accept that stock items have not been fully allocated to this build order"
+msgstr ""
+
+#: build/serializers.py:439 templates/js/translated/build.js:150
+msgid "Required stock has not been fully allocated"
+msgstr "Gerekli stok tamamen tahsis edilemedi"
+
+#: build/serializers.py:444
+msgid "Accept Incomplete"
+msgstr ""
+
+#: build/serializers.py:445
+msgid "Accept that the required number of build outputs have not been completed"
+msgstr ""
+
+#: build/serializers.py:455 templates/js/translated/build.js:154
+msgid "Required build quantity has not been completed"
+msgstr "Gerekli yapım işi miktarı tamamlanmadı"
+
+#: build/serializers.py:464
+msgid "Build order has incomplete outputs"
+msgstr ""
+
+#: build/serializers.py:467 build/templates/build/build_base.html:95
+msgid "No build outputs have been created for this build order"
+msgstr ""
+
+#: build/serializers.py:495 build/serializers.py:544 part/models.py:2829
+#: part/models.py:2988
+msgid "BOM Item"
+msgstr ""
+
+#: build/serializers.py:505
+msgid "Build output"
+msgstr ""
+
+#: build/serializers.py:514
+msgid "Build output must point to the same build"
+msgstr ""
+
+#: build/serializers.py:561
+msgid "bom_item.part must point to the same part as the build order"
+msgstr ""
+
+#: build/serializers.py:576 stock/serializers.py:642
+msgid "Item must be in stock"
+msgstr ""
+
+#: build/serializers.py:632 order/serializers.py:747
#, python-brace-format
msgid "Available quantity ({q}) exceeded"
msgstr ""
-#: build/serializers.py:456
+#: build/serializers.py:638
msgid "Build output must be specified for allocation of tracked parts"
msgstr ""
-#: build/serializers.py:463
+#: build/serializers.py:645
msgid "Build output cannot be specified for allocation of untracked parts"
msgstr ""
-#: build/serializers.py:491 order/serializers.py:990
+#: build/serializers.py:673 order/serializers.py:990
msgid "Allocation items must be provided"
msgstr ""
-#: build/tasks.py:92
+#: build/tasks.py:98
msgid "Stock required for build order"
msgstr ""
@@ -1088,7 +1151,7 @@ msgid "Edit Build"
msgstr "Yapım İşini Düzenle"
#: build/templates/build/build_base.html:56
-#: build/templates/build/build_base.html:215 build/views.py:56
+#: build/templates/build/build_base.html:220 build/views.py:53
msgid "Cancel Build"
msgstr "Yapım İşini İptal Et"
@@ -1105,110 +1168,90 @@ msgstr "Tamamlanmış Yapım İşi"
msgid "Build Description"
msgstr ""
-#: build/templates/build/build_base.html:96
+#: build/templates/build/build_base.html:101
#, 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:103
+#: build/templates/build/build_base.html:108
#, 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:110
+#: build/templates/build/build_base.html:115
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:115
+#: build/templates/build/build_base.html:120
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:120
+#: build/templates/build/build_base.html:125
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:125
+#: build/templates/build/build_base.html:130
msgid "Stock has not been fully allocated to this Build Order"
msgstr "Stok, yapım işi emri için tamamen tahsis edilemedi"
-#: build/templates/build/build_base.html:146
+#: build/templates/build/build_base.html:151
#: build/templates/build/detail.html:132
#: order/templates/order/order_base.html:156
#: order/templates/order/sales_order_base.html:163
#: report/templates/report/inventree_build_order_base.html:126
-#: templates/js/translated/build.js:1753 templates/js/translated/order.js:854
+#: templates/js/translated/build.js:1991 templates/js/translated/order.js:854
#: templates/js/translated/order.js:1276
msgid "Target Date"
msgstr "Hedeflenen tarih"
-#: build/templates/build/build_base.html:151
+#: build/templates/build/build_base.html:156
#, python-format
msgid "This build was due on %(target)s"
msgstr "Bu yapım işinin %(target)s tarihinde süresi doluyor"
-#: build/templates/build/build_base.html:151
-#: build/templates/build/build_base.html:196
+#: build/templates/build/build_base.html:156
+#: build/templates/build/build_base.html:201
#: order/templates/order/order_base.html:98
#: order/templates/order/sales_order_base.html:93
-#: templates/js/translated/table_filters.js:299
-#: templates/js/translated/table_filters.js:340
-#: templates/js/translated/table_filters.js:361
+#: templates/js/translated/table_filters.js:294
+#: templates/js/translated/table_filters.js:335
+#: templates/js/translated/table_filters.js:356
msgid "Overdue"
msgstr "Vadesi geçmiş"
-#: build/templates/build/build_base.html:158
+#: build/templates/build/build_base.html:163
#: build/templates/build/detail.html:68 build/templates/build/detail.html:143
#: order/templates/order/sales_order_base.html:170
-#: templates/js/translated/build.js:1702
-#: templates/js/translated/table_filters.js:370
+#: templates/js/translated/build.js:1940
+#: templates/js/translated/table_filters.js:365
msgid "Completed"
msgstr "Tamamlandı"
-#: build/templates/build/build_base.html:171
+#: build/templates/build/build_base.html:176
#: build/templates/build/detail.html:95 order/models.py:947
#: order/models.py:1043 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:307
-#: templates/js/translated/order.js:1218 templates/js/translated/stock.js:2304
+#: stock/templates/stock/item_base.html:309
+#: templates/js/translated/order.js:1218 templates/js/translated/stock.js:2428
msgid "Sales Order"
msgstr "Sipariş Emri"
-#: build/templates/build/build_base.html:178
+#: build/templates/build/build_base.html:183
#: build/templates/build/detail.html:109
#: report/templates/report/inventree_build_order_base.html:153
msgid "Issued By"
msgstr "Veren"
-#: build/templates/build/build_base.html:223
+#: build/templates/build/build_base.html:228
msgid "Incomplete Outputs"
msgstr "Tamamlanmamış Çıktılar"
-#: build/templates/build/build_base.html:224
+#: build/templates/build/build_base.html:229
msgid "Build Order cannot be completed as incomplete build outputs remain"
msgstr "Tamamlanmamış yapım işi çıktıları kaldığı için yapım işi emri tamamlanamıyor"
-#: build/templates/build/build_output_create.html:7
-msgid "The Bill of Materials contains trackable parts"
-msgstr "Bu Malzeme Listesi takip edilebilir parçalar içeriyor"
-
-#: build/templates/build/build_output_create.html:8
-msgid "Build outputs must be generated individually."
-msgstr "Yapım işi çıktıları ayrı ayrı oluşturulmalıdır."
-
-#: build/templates/build/build_output_create.html:9
-msgid "Multiple build outputs will be created based on the quantity specified."
-msgstr ""
-
-#: build/templates/build/build_output_create.html:15
-msgid "Trackable parts can have serial numbers specified"
-msgstr "Takip edilebilir parçaların seri numaraları belirtilmiş olmalı"
-
-#: build/templates/build/build_output_create.html:16
-msgid "Enter serial numbers to generate multiple single build outputs"
-msgstr "Birden çok tek yapım işi çıktısı oluşturmak için seri numaraları girin"
-
#: build/templates/build/cancel.html:5
msgid "Are you sure you wish to cancel this build?"
msgstr ""
@@ -1225,7 +1268,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:898 stock/forms.py:136
+#: build/templates/build/detail.html:50 order/models.py:898 stock/forms.py:133
#: templates/js/translated/order.js:592 templates/js/translated/order.js:1138
msgid "Destination"
msgstr "Hedef"
@@ -1234,13 +1277,13 @@ msgstr "Hedef"
msgid "Destination location not specified"
msgstr "Hedef konumu belirtilmedi"
-#: build/templates/build/detail.html:74 templates/js/translated/build.js:707
+#: build/templates/build/detail.html:74 templates/js/translated/build.js:929
msgid "Allocated Parts"
msgstr ""
#: build/templates/build/detail.html:81
-#: stock/templates/stock/item_base.html:331
-#: templates/js/translated/stock.js:1673 templates/js/translated/stock.js:2802
+#: stock/templates/stock/item_base.html:333
+#: templates/js/translated/stock.js:1797 templates/js/translated/stock.js:2926
#: templates/js/translated/table_filters.js:151
#: templates/js/translated/table_filters.js:238
msgid "Batch"
@@ -1249,7 +1292,7 @@ msgstr "Toplu"
#: build/templates/build/detail.html:127
#: order/templates/order/order_base.html:143
#: order/templates/order/sales_order_base.html:157
-#: templates/js/translated/build.js:1724
+#: templates/js/translated/build.js:1962
msgid "Created"
msgstr "Oluşturuldu"
@@ -1269,7 +1312,7 @@ msgstr "Alt Yapım İşi Emrileri"
msgid "Allocate Stock to Build"
msgstr "Yapım İşi için Stok Tahsis Et"
-#: build/templates/build/detail.html:177 templates/js/translated/build.js:1262
+#: build/templates/build/detail.html:177 templates/js/translated/build.js:1484
msgid "Unallocate stock"
msgstr "Stok tahsisini kaldır"
@@ -1329,52 +1372,60 @@ msgid "Output Actions"
msgstr ""
#: build/templates/build/detail.html:250
-msgid "Complete selected items"
+msgid "Complete selected build outputs"
msgstr ""
#: build/templates/build/detail.html:251
msgid "Complete outputs"
msgstr ""
-#: build/templates/build/detail.html:266
+#: build/templates/build/detail.html:253
+msgid "Delete selected build outputs"
+msgstr ""
+
+#: build/templates/build/detail.html:254
+msgid "Delete outputs"
+msgstr ""
+
+#: build/templates/build/detail.html:270
msgid "Completed Build Outputs"
msgstr "Tamamlanmış Yapım İşi Çıktıları"
-#: build/templates/build/detail.html:278 build/templates/build/sidebar.html:19
+#: build/templates/build/detail.html:282 build/templates/build/sidebar.html:19
#: order/templates/order/po_sidebar.html:9
#: order/templates/order/purchase_order_detail.html:60
#: order/templates/order/sales_order_detail.html:107
-#: order/templates/order/so_sidebar.html:15 part/templates/part/detail.html:213
-#: part/templates/part/part_sidebar.html:52 stock/templates/stock/item.html:112
+#: order/templates/order/so_sidebar.html:15 part/templates/part/detail.html:216
+#: part/templates/part/part_sidebar.html:55 stock/templates/stock/item.html:112
#: stock/templates/stock/stock_sidebar.html:23
msgid "Attachments"
msgstr "Ekler"
-#: build/templates/build/detail.html:294
+#: build/templates/build/detail.html:298
msgid "Build Notes"
msgstr "Yapım İşi Notları"
-#: build/templates/build/detail.html:298 build/templates/build/detail.html:453
+#: build/templates/build/detail.html:302 build/templates/build/detail.html:478
#: company/templates/company/detail.html:188
#: company/templates/company/detail.html:215
#: order/templates/order/purchase_order_detail.html:80
#: order/templates/order/purchase_order_detail.html:108
#: order/templates/order/sales_order_detail.html:127
#: order/templates/order/sales_order_detail.html:186
-#: part/templates/part/detail.html:141 stock/templates/stock/item.html:132
-#: stock/templates/stock/item.html:235
+#: part/templates/part/detail.html:144 stock/templates/stock/item.html:132
+#: stock/templates/stock/item.html:230
msgid "Edit Notes"
msgstr "Notları Düzenle"
-#: build/templates/build/detail.html:477
+#: build/templates/build/detail.html:502
msgid "Allocation Complete"
msgstr ""
-#: build/templates/build/detail.html:478
+#: build/templates/build/detail.html:503
msgid "All untracked stock items have been allocated"
msgstr ""
-#: build/templates/build/index.html:18 part/templates/part/detail.html:320
+#: build/templates/build/index.html:18 part/templates/part/detail.html:323
msgid "New Build Order"
msgstr "Yeni Yapım İşi Emri"
@@ -1406,51 +1457,11 @@ msgstr ""
msgid "Completed Items"
msgstr ""
-#: build/views.py:76
+#: build/views.py:73
msgid "Build was cancelled"
msgstr "Yapım işi iptal edildi"
-#: build/views.py:88
-msgid "Create Build Output"
-msgstr "Yapım İşi Çıktısı Oluştur"
-
-#: build/views.py:106
-msgid "Maximum output quantity is "
-msgstr "Maksimum çıktı miktarı "
-
-#: build/views.py:122 stock/serializers.py:363 stock/views.py:1257
-msgid "Serial numbers already exist"
-msgstr "Seri numaraları zaten mevcut"
-
-#: build/views.py:131
-msgid "Serial numbers required for trackable build output"
-msgstr "Seri numaraları takip edilebilir yapım işi çıktıları için gerekli"
-
-#: build/views.py:197
-msgid "Delete Build Output"
-msgstr "Yapım İşi Çıktısı Sil"
-
-#: build/views.py:218
-msgid "Confirm unallocation of build stock"
-msgstr "Yapım işi stoku tahsisinin iptalini onayla"
-
-#: build/views.py:219 stock/views.py:352
-msgid "Check the confirmation box"
-msgstr "Onay kutusunu işaretleyin"
-
-#: build/views.py:231
-msgid "Build output does not match build"
-msgstr "Yapım işi çıktısı yapım işi ile eşleşmiyor"
-
-#: build/views.py:233
-msgid "Build output must be specified"
-msgstr "Yapım işi çıktısı belirtilmeli"
-
-#: build/views.py:245
-msgid "Build output deleted"
-msgstr "Yapım işi çıktısı silindi"
-
-#: build/views.py:286
+#: build/views.py:114
msgid "Delete Build Order"
msgstr "Yapım İşi Emrini Sil"
@@ -1639,9 +1650,9 @@ msgstr "Kategori Paremetre Sablonu Kopyala"
msgid "Copy category parameter templates when creating a part"
msgstr "Parça oluştururken kategori parametre şablonlarını kopyala"
-#: common/models.py:705 part/models.py:2489 report/models.py:187
+#: common/models.py:705 part/models.py:2525 report/models.py:187
#: templates/js/translated/table_filters.js:38
-#: templates/js/translated/table_filters.js:422
+#: templates/js/translated/table_filters.js:417
msgid "Template"
msgstr "Şablon"
@@ -1649,9 +1660,9 @@ msgstr "Şablon"
msgid "Parts are templates by default"
msgstr "Parçaları varsayılan olan şablondur"
-#: common/models.py:712 part/models.py:921 templates/js/translated/bom.js:1082
+#: common/models.py:712 part/models.py:951 templates/js/translated/bom.js:1300
#: templates/js/translated/table_filters.js:168
-#: templates/js/translated/table_filters.js:434
+#: templates/js/translated/table_filters.js:429
msgid "Assembly"
msgstr "Montaj"
@@ -1659,8 +1670,8 @@ msgstr "Montaj"
msgid "Parts can be assembled from other components by default"
msgstr "Parçalar varsayılan olarak başka bileşenlerden monte edilebilir"
-#: common/models.py:719 part/models.py:927
-#: templates/js/translated/table_filters.js:438
+#: common/models.py:719 part/models.py:957
+#: templates/js/translated/table_filters.js:433
msgid "Component"
msgstr "Bileşen"
@@ -1668,7 +1679,7 @@ msgstr "Bileşen"
msgid "Parts can be used as sub-components by default"
msgstr "Parçalar varsayılan olarak alt bileşen olarak kullanılabilir"
-#: common/models.py:726 part/models.py:938
+#: common/models.py:726 part/models.py:968
msgid "Purchaseable"
msgstr "Satın Alınabilir"
@@ -1676,8 +1687,8 @@ msgstr "Satın Alınabilir"
msgid "Parts are purchaseable by default"
msgstr "Parçalar varsayılan olarak satın alınabilir"
-#: common/models.py:733 part/models.py:943
-#: templates/js/translated/table_filters.js:446
+#: common/models.py:733 part/models.py:973
+#: templates/js/translated/table_filters.js:441
msgid "Salable"
msgstr "Satılabilir"
@@ -1685,10 +1696,10 @@ msgstr "Satılabilir"
msgid "Parts are salable by default"
msgstr "Parçalar varsayılan olarak satılabilir"
-#: common/models.py:740 part/models.py:933
+#: common/models.py:740 part/models.py:963
#: templates/js/translated/table_filters.js:46
#: templates/js/translated/table_filters.js:100
-#: templates/js/translated/table_filters.js:450
+#: templates/js/translated/table_filters.js:445
msgid "Trackable"
msgstr "Takip Edilebilir"
@@ -1696,7 +1707,7 @@ msgstr "Takip Edilebilir"
msgid "Parts are trackable by default"
msgstr "Parçalar varsayılan olarak takip edilebilir"
-#: common/models.py:747 part/models.py:953
+#: common/models.py:747 part/models.py:983
#: part/templates/part/part_base.html:147
#: templates/js/translated/table_filters.js:42
msgid "Virtual"
@@ -1730,589 +1741,595 @@ msgstr ""
msgid "Include pricing information in BOM tables"
msgstr ""
-#: common/models.py:780
+#: common/models.py:785
+msgid "Show Price History"
+msgstr ""
+
+#: common/models.py:786
+msgid "Display historical pricing for Part"
+msgstr ""
+
+#: common/models.py:792
msgid "Show related parts"
msgstr "İlgili parçaları göster"
-#: common/models.py:781
+#: common/models.py:793
msgid "Display related parts for a part"
msgstr ""
-#: common/models.py:787
+#: common/models.py:799
msgid "Create initial stock"
msgstr ""
-#: common/models.py:788
+#: common/models.py:800
msgid "Create initial stock on part creation"
msgstr ""
-#: common/models.py:794
+#: common/models.py:806
msgid "Internal Prices"
msgstr ""
-#: common/models.py:795
+#: common/models.py:807
msgid "Enable internal prices for parts"
msgstr ""
-#: common/models.py:801
+#: common/models.py:813
msgid "Internal Price as BOM-Price"
msgstr ""
-#: common/models.py:802
+#: common/models.py:814
msgid "Use the internal price (if set) in BOM-price calculations"
msgstr ""
-#: common/models.py:808
+#: common/models.py:820
msgid "Part Name Display Format"
msgstr ""
-#: common/models.py:809
+#: common/models.py:821
msgid "Format to display the part name"
msgstr ""
-#: common/models.py:816
+#: common/models.py:828
msgid "Enable Reports"
msgstr ""
-#: common/models.py:817
+#: common/models.py:829
msgid "Enable generation of reports"
msgstr ""
-#: common/models.py:823 templates/stats.html:25
+#: common/models.py:835 templates/stats.html:25
msgid "Debug Mode"
msgstr "Hata Ayıklama Modu"
-#: common/models.py:824
+#: common/models.py:836
msgid "Generate reports in debug mode (HTML output)"
msgstr "Raporları hata ayıklama modunda üret (HTML çıktısı)"
-#: common/models.py:830
+#: common/models.py:842
msgid "Page Size"
msgstr "Sayfa Boyutu"
-#: common/models.py:831
+#: common/models.py:843
msgid "Default page size for PDF reports"
msgstr "PDF raporlar için varsayılan sayfa boyutu"
-#: common/models.py:841
+#: common/models.py:853
msgid "Test Reports"
msgstr "Test Raporları"
-#: common/models.py:842
+#: common/models.py:854
msgid "Enable generation of test reports"
msgstr ""
-#: common/models.py:848
+#: common/models.py:860
msgid "Stock Expiry"
msgstr ""
-#: common/models.py:849
+#: common/models.py:861
msgid "Enable stock expiry functionality"
msgstr ""
-#: common/models.py:855
+#: common/models.py:867
msgid "Sell Expired Stock"
msgstr ""
-#: common/models.py:856
+#: common/models.py:868
msgid "Allow sale of expired stock"
msgstr ""
-#: common/models.py:862
+#: common/models.py:874
msgid "Stock Stale Time"
msgstr ""
-#: common/models.py:863
+#: common/models.py:875
msgid "Number of days stock items are considered stale before expiring"
msgstr ""
-#: common/models.py:865
+#: common/models.py:877
msgid "days"
msgstr "günler"
-#: common/models.py:870
+#: common/models.py:882
msgid "Build Expired Stock"
msgstr ""
-#: common/models.py:871
+#: common/models.py:883
msgid "Allow building with expired stock"
msgstr ""
-#: common/models.py:877
+#: common/models.py:889
msgid "Stock Ownership Control"
msgstr ""
-#: common/models.py:878
+#: common/models.py:890
msgid "Enable ownership control over stock locations and items"
msgstr "Stok konumu ve ögeler üzerinde sahiplik kontrolünü etkinleştirin"
-#: common/models.py:884
+#: common/models.py:896
msgid "Build Order Reference Prefix"
msgstr ""
-#: common/models.py:885
+#: common/models.py:897
msgid "Prefix value for build order reference"
msgstr ""
-#: common/models.py:890
+#: common/models.py:902
msgid "Build Order Reference Regex"
msgstr ""
-#: common/models.py:891
+#: common/models.py:903
msgid "Regular expression pattern for matching build order reference"
msgstr ""
-#: common/models.py:895
+#: common/models.py:907
msgid "Sales Order Reference Prefix"
msgstr ""
-#: common/models.py:896
+#: common/models.py:908
msgid "Prefix value for sales order reference"
msgstr ""
-#: common/models.py:901
+#: common/models.py:913
msgid "Purchase Order Reference Prefix"
msgstr ""
-#: common/models.py:902
+#: common/models.py:914
msgid "Prefix value for purchase order reference"
msgstr ""
-#: common/models.py:908
+#: common/models.py:920
msgid "Enable password forgot"
msgstr ""
-#: common/models.py:909
+#: common/models.py:921
msgid "Enable password forgot function on the login pages"
msgstr ""
-#: common/models.py:914
+#: common/models.py:926
msgid "Enable registration"
msgstr ""
-#: common/models.py:915
+#: common/models.py:927
msgid "Enable self-registration for users on the login pages"
msgstr ""
-#: common/models.py:920
+#: common/models.py:932
msgid "Enable SSO"
msgstr ""
-#: common/models.py:921
+#: common/models.py:933
msgid "Enable SSO on the login pages"
msgstr ""
-#: common/models.py:926
+#: common/models.py:938
msgid "Email required"
msgstr ""
-#: common/models.py:927
+#: common/models.py:939
msgid "Require user to supply mail on signup"
msgstr ""
-#: common/models.py:932
+#: common/models.py:944
msgid "Auto-fill SSO users"
msgstr ""
-#: common/models.py:933
+#: common/models.py:945
msgid "Automatically fill out user-details from SSO account-data"
msgstr ""
-#: common/models.py:938
+#: common/models.py:950
msgid "Mail twice"
msgstr ""
-#: common/models.py:939
+#: common/models.py:951
msgid "On signup ask users twice for their mail"
msgstr ""
-#: common/models.py:944
+#: common/models.py:956
msgid "Password twice"
msgstr ""
-#: common/models.py:945
+#: common/models.py:957
msgid "On signup ask users twice for their password"
msgstr ""
-#: common/models.py:950
+#: common/models.py:962
msgid "Group on signup"
msgstr ""
-#: common/models.py:951
+#: common/models.py:963
msgid "Group to which new users are assigned on registration"
msgstr ""
-#: common/models.py:956
+#: common/models.py:968
msgid "Enforce MFA"
msgstr ""
-#: common/models.py:957
+#: common/models.py:969
msgid "Users must use multifactor security."
msgstr ""
-#: common/models.py:964
+#: common/models.py:976
msgid "Enable URL integration"
msgstr ""
-#: common/models.py:965
+#: common/models.py:977
msgid "Enable plugins to add URL routes"
msgstr ""
-#: common/models.py:971
+#: common/models.py:983
msgid "Enable navigation integration"
msgstr ""
-#: common/models.py:972
+#: common/models.py:984
msgid "Enable plugins to integrate into navigation"
msgstr ""
-#: common/models.py:978
+#: common/models.py:990
msgid "Enable app integration"
msgstr ""
-#: common/models.py:979
+#: common/models.py:991
msgid "Enable plugins to add apps"
msgstr ""
-#: common/models.py:985
+#: common/models.py:997
msgid "Enable schedule integration"
msgstr ""
-#: common/models.py:986
+#: common/models.py:998
msgid "Enable plugins to run scheduled tasks"
msgstr ""
-#: common/models.py:992
+#: common/models.py:1004
msgid "Enable event integration"
msgstr ""
-#: common/models.py:993
+#: common/models.py:1005
msgid "Enable plugins to respond to internal events"
msgstr ""
-#: common/models.py:1008 common/models.py:1216
+#: common/models.py:1020 common/models.py:1228
msgid "Settings key (must be unique - case insensitive"
msgstr ""
-#: common/models.py:1039
+#: common/models.py:1051
msgid "Show subscribed parts"
msgstr ""
-#: common/models.py:1040
+#: common/models.py:1052
msgid "Show subscribed parts on the homepage"
msgstr ""
-#: common/models.py:1045
+#: common/models.py:1057
msgid "Show subscribed categories"
msgstr ""
-#: common/models.py:1046
+#: common/models.py:1058
msgid "Show subscribed part categories on the homepage"
msgstr ""
-#: common/models.py:1051
+#: common/models.py:1063
msgid "Show latest parts"
msgstr ""
-#: common/models.py:1052
+#: common/models.py:1064
msgid "Show latest parts on the homepage"
msgstr ""
-#: common/models.py:1057
+#: common/models.py:1069
msgid "Recent Part Count"
msgstr ""
-#: common/models.py:1058
+#: common/models.py:1070
msgid "Number of recent parts to display on index page"
msgstr ""
-#: common/models.py:1064
+#: common/models.py:1076
msgid "Show unvalidated BOMs"
msgstr ""
-#: common/models.py:1065
+#: common/models.py:1077
msgid "Show BOMs that await validation on the homepage"
msgstr ""
-#: common/models.py:1070
+#: common/models.py:1082
msgid "Show recent stock changes"
msgstr ""
-#: common/models.py:1071
+#: common/models.py:1083
msgid "Show recently changed stock items on the homepage"
msgstr ""
-#: common/models.py:1076
+#: common/models.py:1088
msgid "Recent Stock Count"
msgstr ""
-#: common/models.py:1077
+#: common/models.py:1089
msgid "Number of recent stock items to display on index page"
msgstr ""
-#: common/models.py:1082
+#: common/models.py:1094
msgid "Show low stock"
msgstr ""
-#: common/models.py:1083
+#: common/models.py:1095
msgid "Show low stock items on the homepage"
msgstr ""
-#: common/models.py:1088
+#: common/models.py:1100
msgid "Show depleted stock"
msgstr ""
-#: common/models.py:1089
+#: common/models.py:1101
msgid "Show depleted stock items on the homepage"
msgstr ""
-#: common/models.py:1094
+#: common/models.py:1106
msgid "Show needed stock"
msgstr ""
-#: common/models.py:1095
+#: common/models.py:1107
msgid "Show stock items needed for builds on the homepage"
msgstr ""
-#: common/models.py:1100
+#: common/models.py:1112
msgid "Show expired stock"
msgstr ""
-#: common/models.py:1101
+#: common/models.py:1113
msgid "Show expired stock items on the homepage"
msgstr ""
-#: common/models.py:1106
+#: common/models.py:1118
msgid "Show stale stock"
msgstr ""
-#: common/models.py:1107
+#: common/models.py:1119
msgid "Show stale stock items on the homepage"
msgstr ""
-#: common/models.py:1112
+#: common/models.py:1124
msgid "Show pending builds"
msgstr ""
-#: common/models.py:1113
+#: common/models.py:1125
msgid "Show pending builds on the homepage"
msgstr ""
-#: common/models.py:1118
+#: common/models.py:1130
msgid "Show overdue builds"
msgstr ""
-#: common/models.py:1119
+#: common/models.py:1131
msgid "Show overdue builds on the homepage"
msgstr ""
-#: common/models.py:1124
+#: common/models.py:1136
msgid "Show outstanding POs"
msgstr ""
-#: common/models.py:1125
+#: common/models.py:1137
msgid "Show outstanding POs on the homepage"
msgstr ""
-#: common/models.py:1130
+#: common/models.py:1142
msgid "Show overdue POs"
msgstr ""
-#: common/models.py:1131
+#: common/models.py:1143
msgid "Show overdue POs on the homepage"
msgstr ""
-#: common/models.py:1136
+#: common/models.py:1148
msgid "Show outstanding SOs"
msgstr ""
-#: common/models.py:1137
+#: common/models.py:1149
msgid "Show outstanding SOs on the homepage"
msgstr ""
-#: common/models.py:1142
+#: common/models.py:1154
msgid "Show overdue SOs"
msgstr ""
-#: common/models.py:1143
+#: common/models.py:1155
msgid "Show overdue SOs on the homepage"
msgstr ""
-#: common/models.py:1149
+#: common/models.py:1161
msgid "Inline label display"
msgstr ""
-#: common/models.py:1150
+#: common/models.py:1162
msgid "Display PDF labels in the browser, instead of downloading as a file"
msgstr ""
-#: common/models.py:1156
+#: common/models.py:1168
msgid "Inline report display"
msgstr ""
-#: common/models.py:1157
+#: common/models.py:1169
msgid "Display PDF reports in the browser, instead of downloading as a file"
msgstr ""
-#: common/models.py:1163
+#: common/models.py:1175
msgid "Search Preview Results"
msgstr ""
-#: common/models.py:1164
+#: common/models.py:1176
msgid "Number of results to show in search preview window"
msgstr ""
-#: common/models.py:1170
+#: common/models.py:1182
msgid "Search Show Stock"
msgstr ""
-#: common/models.py:1171
+#: common/models.py:1183
msgid "Display stock levels in search preview window"
msgstr ""
-#: common/models.py:1177
+#: common/models.py:1189
msgid "Hide Inactive Parts"
msgstr ""
-#: common/models.py:1178
+#: common/models.py:1190
msgid "Hide inactive parts in search preview window"
msgstr ""
-#: common/models.py:1184
+#: common/models.py:1196
msgid "Show Quantity in Forms"
msgstr "Formlarda Miktarı Göster"
-#: common/models.py:1185
+#: common/models.py:1197
msgid "Display available part quantity in some forms"
msgstr ""
-#: common/models.py:1191
+#: common/models.py:1203
msgid "Escape Key Closes Forms"
msgstr ""
-#: common/models.py:1192
+#: common/models.py:1204
msgid "Use the escape key to close modal forms"
msgstr ""
-#: common/models.py:1198
+#: common/models.py:1210
msgid "Fixed Navbar"
msgstr ""
-#: common/models.py:1199
+#: common/models.py:1211
msgid "InvenTree navbar position is fixed to the top of the screen"
msgstr ""
-#: common/models.py:1264 company/forms.py:43
+#: common/models.py:1276 company/forms.py:43
msgid "Price break quantity"
msgstr ""
-#: common/models.py:1271 company/serializers.py:264
+#: common/models.py:1283 company/serializers.py:264
#: company/templates/company/supplier_part.html:256
#: templates/js/translated/part.js:915 templates/js/translated/part.js:1867
msgid "Price"
msgstr "Fiyat"
-#: common/models.py:1272
+#: common/models.py:1284
msgid "Unit price at specified quantity"
msgstr ""
-#: common/models.py:1429 common/models.py:1568
+#: common/models.py:1441 common/models.py:1580
msgid "Endpoint"
msgstr ""
-#: common/models.py:1430
+#: common/models.py:1442
msgid "Endpoint at which this webhook is received"
msgstr ""
-#: common/models.py:1439
+#: common/models.py:1451
msgid "Name for this webhook"
msgstr ""
-#: common/models.py:1444 part/models.py:948 plugin/models.py:46
+#: common/models.py:1456 part/models.py:978 plugin/models.py:46
#: templates/js/translated/table_filters.js:34
#: templates/js/translated/table_filters.js:96
-#: templates/js/translated/table_filters.js:295
-#: templates/js/translated/table_filters.js:417
+#: templates/js/translated/table_filters.js:290
+#: templates/js/translated/table_filters.js:412
msgid "Active"
msgstr "Aktif"
-#: common/models.py:1445
+#: common/models.py:1457
msgid "Is this webhook active"
msgstr ""
-#: common/models.py:1459
+#: common/models.py:1471
msgid "Token"
msgstr ""
-#: common/models.py:1460
+#: common/models.py:1472
msgid "Token for access"
msgstr ""
-#: common/models.py:1467
+#: common/models.py:1479
msgid "Secret"
msgstr ""
-#: common/models.py:1468
+#: common/models.py:1480
msgid "Shared secret for HMAC"
msgstr ""
-#: common/models.py:1535
+#: common/models.py:1547
msgid "Message ID"
msgstr ""
-#: common/models.py:1536
+#: common/models.py:1548
msgid "Unique identifier for this message"
msgstr ""
-#: common/models.py:1544
+#: common/models.py:1556
msgid "Host"
msgstr ""
-#: common/models.py:1545
+#: common/models.py:1557
msgid "Host from which this message was received"
msgstr ""
-#: common/models.py:1552
+#: common/models.py:1564
msgid "Header"
msgstr ""
-#: common/models.py:1553
+#: common/models.py:1565
msgid "Header of this message"
msgstr ""
-#: common/models.py:1559
+#: common/models.py:1571
msgid "Body"
msgstr ""
-#: common/models.py:1560
+#: common/models.py:1572
msgid "Body of this message"
msgstr ""
-#: common/models.py:1569
+#: common/models.py:1581
msgid "Endpoint on which this message was received"
msgstr ""
-#: common/models.py:1574
+#: common/models.py:1586
msgid "Worked on"
msgstr ""
-#: common/models.py:1575
+#: common/models.py:1587
msgid "Was the work on this message finished?"
msgstr ""
#: common/views.py:93 order/templates/order/order_wizard/po_upload.html:49
#: order/templates/order/purchase_order_detail.html:24 order/views.py:243
-#: part/templates/part/bom_upload/upload_file.html:52
-#: part/templates/part/import_wizard/part_upload.html:47 part/views.py:213
-#: part/views.py:773
+#: part/templates/part/import_wizard/part_upload.html:47 part/views.py:210
+#: templates/patterns/wizard/upload.html:35
msgid "Upload File"
msgstr "Dosya Yükle"
-#: common/views.py:94 order/templates/order/order_wizard/match_fields.html:52
-#: order/views.py:244 part/templates/part/bom_upload/match_fields.html:52
+#: common/views.py:94 order/views.py:244
#: part/templates/part/import_wizard/ajax_match_fields.html:45
-#: part/templates/part/import_wizard/match_fields.html:52 part/views.py:214
-#: part/views.py:774
+#: part/templates/part/import_wizard/match_fields.html:52 part/views.py:211
+#: templates/patterns/wizard/match_fields.html:51
msgid "Match Fields"
msgstr "Alanları Eşleştir"
@@ -2328,15 +2345,13 @@ msgstr ""
msgid "Parts imported"
msgstr ""
-#: common/views.py:517 order/templates/order/order_wizard/match_fields.html:27
-#: order/templates/order/order_wizard/match_parts.html:19
+#: common/views.py:517 order/templates/order/order_wizard/match_parts.html:19
#: order/templates/order/order_wizard/po_upload.html:47
-#: part/templates/part/bom_upload/match_fields.html:27
-#: part/templates/part/bom_upload/match_parts.html:19
-#: part/templates/part/bom_upload/upload_file.html:50
#: part/templates/part/import_wizard/match_fields.html:27
#: part/templates/part/import_wizard/match_references.html:19
#: part/templates/part/import_wizard/part_upload.html:45
+#: templates/patterns/wizard/match_fields.html:26
+#: templates/patterns/wizard/upload.html:33
msgid "Previous Step"
msgstr ""
@@ -2404,7 +2419,7 @@ msgstr ""
msgid "Link to external company information"
msgstr ""
-#: company/models.py:139 part/models.py:840
+#: company/models.py:139 part/models.py:870
msgid "Image"
msgstr "Resim"
@@ -2442,7 +2457,7 @@ 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:471
-#: stock/templates/stock/item_base.html:142 templates/js/translated/bom.js:328
+#: stock/templates/stock/item_base.html:144 templates/js/translated/bom.js:541
msgid "Base Part"
msgstr "Temel Parça"
@@ -2453,11 +2468,11 @@ 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:380
+#: stock/templates/stock/item_base.html:382
#: templates/js/translated/company.js:333
#: templates/js/translated/company.js:517
#: templates/js/translated/company.js:800 templates/js/translated/part.js:234
-#: templates/js/translated/table_filters.js:389
+#: templates/js/translated/table_filters.js:384
msgid "Manufacturer"
msgstr "Üretici"
@@ -2488,7 +2503,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:390
+#: stock/templates/stock/item_base.html:392
msgid "Manufacturer Part"
msgstr ""
@@ -2499,7 +2514,7 @@ msgstr "Parametre adı"
#: company/models.py:422
#: report/templates/report/inventree_test_report_base.html:95
#: stock/models.py:1988 templates/js/translated/company.js:647
-#: templates/js/translated/part.js:715 templates/js/translated/stock.js:1304
+#: templates/js/translated/part.js:715 templates/js/translated/stock.js:1332
msgid "Value"
msgstr "Değer"
@@ -2507,9 +2522,9 @@ msgstr "Değer"
msgid "Parameter value"
msgstr "Parametre değeri"
-#: company/models.py:429 part/models.py:915 part/models.py:2457
+#: company/models.py:429 part/models.py:945 part/models.py:2493
#: part/templates/part/part_base.html:288
-#: templates/InvenTree/settings/settings.html:287
+#: templates/InvenTree/settings/settings.html:324
#: templates/js/translated/company.js:653 templates/js/translated/part.js:721
msgid "Units"
msgstr ""
@@ -2526,11 +2541,11 @@ msgstr ""
#: company/templates/company/supplier_part.html:87 order/models.py:227
#: order/templates/order/order_base.html:112
#: order/templates/order/order_wizard/select_pos.html:30 part/bom.py:237
-#: part/bom.py:265 stock/templates/stock/item_base.html:397
+#: part/bom.py:265 stock/templates/stock/item_base.html:399
#: templates/js/translated/company.js:337
#: templates/js/translated/company.js:774 templates/js/translated/order.js:823
#: templates/js/translated/part.js:215 templates/js/translated/part.js:863
-#: templates/js/translated/table_filters.js:393
+#: templates/js/translated/table_filters.js:388
msgid "Supplier"
msgstr "Tedarikçi"
@@ -2561,22 +2576,23 @@ msgid "Supplier part description"
msgstr ""
#: company/models.py:576 company/templates/company/supplier_part.html:119
-#: part/models.py:2648 report/templates/report/inventree_po_report.html:93
-#: report/templates/report/inventree_so_report.html:93
+#: part/models.py:2717 part/templates/part/upload_bom.html:59
+#: report/templates/report/inventree_po_report.html:93
+#: report/templates/report/inventree_so_report.html:93 stock/serializers.py:409
msgid "Note"
msgstr "Not"
-#: company/models.py:580 part/models.py:1781
+#: company/models.py:580 part/models.py:1817
msgid "base cost"
msgstr "temel maliyet"
-#: company/models.py:580 part/models.py:1781
+#: company/models.py:580 part/models.py:1817
msgid "Minimum charge (e.g. stocking fee)"
msgstr ""
#: company/models.py:582 company/templates/company/supplier_part.html:112
-#: stock/models.py:495 stock/templates/stock/item_base.html:338
-#: templates/js/translated/company.js:850 templates/js/translated/stock.js:1799
+#: stock/models.py:495 stock/templates/stock/item_base.html:340
+#: templates/js/translated/company.js:850 templates/js/translated/stock.js:1923
msgid "Packaging"
msgstr "Paketleme"
@@ -2584,7 +2600,7 @@ msgstr "Paketleme"
msgid "Part packaging"
msgstr ""
-#: company/models.py:584 part/models.py:1783
+#: company/models.py:584 part/models.py:1819
msgid "multiple"
msgstr "çoklu"
@@ -2645,11 +2661,11 @@ msgstr ""
#: company/templates/company/company_base.html:83 order/models.py:552
#: order/templates/order/sales_order_base.html:115 stock/models.py:514
-#: stock/models.py:515 stock/serializers.py:626
-#: stock/templates/stock/item_base.html:290
+#: stock/models.py:515 stock/serializers.py:683
+#: stock/templates/stock/item_base.html:292
#: templates/js/translated/company.js:329 templates/js/translated/order.js:1240
-#: templates/js/translated/stock.js:2610
-#: templates/js/translated/table_filters.js:397
+#: templates/js/translated/stock.js:2734
+#: templates/js/translated/table_filters.js:392
msgid "Customer"
msgstr "Müşteri"
@@ -2679,7 +2695,7 @@ msgstr "Yeni tedarikçi parçası oluştur"
#: company/templates/company/detail.html:20
#: company/templates/company/manufacturer_part.html:118
-#: part/templates/part/detail.html:353
+#: part/templates/part/detail.html:356
msgid "New Supplier Part"
msgstr "Yeni Tedarikçi Parçası"
@@ -2687,8 +2703,8 @@ msgstr "Yeni Tedarikçi Parçası"
#: company/templates/company/detail.html:79
#: company/templates/company/manufacturer_part.html:127
#: company/templates/company/manufacturer_part.html:156
-#: part/templates/part/category.html:171 part/templates/part/detail.html:362
-#: part/templates/part/detail.html:391
+#: part/templates/part/category.html:171 part/templates/part/detail.html:365
+#: part/templates/part/detail.html:394
msgid "Options"
msgstr ""
@@ -2716,7 +2732,7 @@ msgstr ""
msgid "Create new manufacturer part"
msgstr ""
-#: company/templates/company/detail.html:67 part/templates/part/detail.html:381
+#: company/templates/company/detail.html:67 part/templates/part/detail.html:384
msgid "New Manufacturer Part"
msgstr ""
@@ -2730,7 +2746,7 @@ msgstr "Tedarikçi Stoku"
#: order/templates/order/order_base.html:13
#: order/templates/order/purchase_orders.html:8
#: order/templates/order/purchase_orders.html:12
-#: part/templates/part/detail.html:85 part/templates/part/part_sidebar.html:37
+#: part/templates/part/detail.html:85 part/templates/part/part_sidebar.html:40
#: templates/InvenTree/index.html:252 templates/InvenTree/search.html:197
#: templates/InvenTree/settings/sidebar.html:45 templates/navbar.html:47
#: users/models.py:45
@@ -2752,7 +2768,7 @@ msgstr "Yeni Satın Alma Emri"
#: order/templates/order/sales_order_base.html:13
#: order/templates/order/sales_orders.html:8
#: order/templates/order/sales_orders.html:15
-#: part/templates/part/detail.html:108 part/templates/part/part_sidebar.html:41
+#: part/templates/part/detail.html:108 part/templates/part/part_sidebar.html:44
#: templates/InvenTree/index.html:283 templates/InvenTree/search.html:217
#: templates/InvenTree/settings/sidebar.html:47 templates/navbar.html:58
#: users/models.py:46
@@ -2770,7 +2786,7 @@ msgid "New Sales Order"
msgstr "Yeni Satış Emri"
#: company/templates/company/detail.html:168
-#: templates/js/translated/build.js:1059
+#: templates/js/translated/build.js:1281
msgid "Assigned Stock"
msgstr "Atanan Stok"
@@ -2780,13 +2796,13 @@ msgstr ""
#: company/templates/company/detail.html:384
#: company/templates/company/manufacturer_part.html:215
-#: part/templates/part/detail.html:435
+#: part/templates/part/detail.html:438
msgid "Delete Supplier Parts?"
msgstr ""
#: company/templates/company/detail.html:385
#: company/templates/company/manufacturer_part.html:216
-#: part/templates/part/detail.html:436
+#: part/templates/part/detail.html:439
msgid "All selected supplier parts will be deleted"
msgstr ""
@@ -2824,36 +2840,36 @@ 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:35 part/templates/part/prices.html:163
+#: part/templates/part/part_sidebar.html:38 part/templates/part/prices.html:163
#: templates/InvenTree/search.html:188 templates/navbar.html:45
msgid "Suppliers"
msgstr ""
#: company/templates/company/manufacturer_part.html:129
-#: part/templates/part/detail.html:364
+#: part/templates/part/detail.html:367
msgid "Delete supplier parts"
msgstr "Tedarikçi parçalarını sil"
#: company/templates/company/manufacturer_part.html:129
#: company/templates/company/manufacturer_part.html:158
#: company/templates/company/manufacturer_part.html:254
-#: part/templates/part/detail.html:364 part/templates/part/detail.html:393
+#: part/templates/part/detail.html:367 part/templates/part/detail.html:396
#: templates/js/translated/company.js:426 templates/js/translated/helpers.js:31
-#: users/models.py:212
+#: users/models.py:217
msgid "Delete"
msgstr ""
#: company/templates/company/manufacturer_part.html:143
#: company/templates/company/manufacturer_part_sidebar.html:5
#: part/templates/part/category_sidebar.html:17
-#: part/templates/part/detail.html:187 part/templates/part/part_sidebar.html:8
+#: part/templates/part/detail.html:190 part/templates/part/part_sidebar.html:9
msgid "Parameters"
msgstr ""
#: company/templates/company/manufacturer_part.html:147
-#: part/templates/part/detail.html:192
+#: part/templates/part/detail.html:195
#: templates/InvenTree/settings/category.html:12
-#: templates/InvenTree/settings/part.html:65
+#: templates/InvenTree/settings/part.html:66
msgid "New Parameter"
msgstr ""
@@ -2862,7 +2878,7 @@ msgid "Delete parameters"
msgstr ""
#: company/templates/company/manufacturer_part.html:191
-#: part/templates/part/detail.html:892
+#: part/templates/part/detail.html:895
msgid "Add Parameter"
msgstr ""
@@ -2892,8 +2908,8 @@ msgstr ""
#: company/templates/company/supplier_part.html:7
#: company/templates/company/supplier_part.html:24 stock/models.py:479
-#: stock/templates/stock/item_base.html:402
-#: templates/js/translated/company.js:790 templates/js/translated/stock.js:1756
+#: stock/templates/stock/item_base.html:404
+#: templates/js/translated/company.js:790 templates/js/translated/stock.js:1880
msgid "Supplier Part"
msgstr "Tedarikçi Parçası"
@@ -2919,7 +2935,7 @@ msgstr ""
#: company/templates/company/supplier_part.html:142
#: part/templates/part/detail.html:25 stock/templates/stock/location.html:167
-#: templates/js/translated/stock.js:368
+#: templates/js/translated/stock.js:369
msgid "New Stock Item"
msgstr ""
@@ -2940,7 +2956,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:1628
+#: part/templates/part/prices.html:271 part/views.py:1319
msgid "Add Price Break"
msgstr ""
@@ -2948,11 +2964,11 @@ msgstr ""
msgid "No price break information found"
msgstr ""
-#: company/templates/company/supplier_part.html:224 part/views.py:1690
+#: company/templates/company/supplier_part.html:224 part/views.py:1381
msgid "Delete Price Break"
msgstr ""
-#: company/templates/company/supplier_part.html:238 part/views.py:1676
+#: company/templates/company/supplier_part.html:238 part/views.py:1367
msgid "Edit Price Break"
msgstr ""
@@ -2965,15 +2981,15 @@ msgid "Delete price break"
msgstr ""
#: company/templates/company/supplier_part_navbar.html:15
-#: part/templates/part/part_sidebar.html:14
+#: part/templates/part/part_sidebar.html:15
#: 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:150
#: templates/InvenTree/settings/sidebar.html:41
-#: templates/js/translated/bom.js:340 templates/js/translated/part.js:495
+#: templates/js/translated/bom.js:553 templates/js/translated/part.js:495
#: templates/js/translated/part.js:630 templates/js/translated/part.js:1125
-#: templates/js/translated/part.js:1286 templates/js/translated/stock.js:935
-#: templates/js/translated/stock.js:1588 templates/navbar.html:28
+#: templates/js/translated/part.js:1286 templates/js/translated/stock.js:936
+#: templates/js/translated/stock.js:1712 templates/navbar.html:28
msgid "Stock"
msgstr "Stok"
@@ -2987,7 +3003,7 @@ msgid "Supplier Part Pricing"
msgstr "Tedarikçi Parçası Fiyatlandırması"
#: company/templates/company/supplier_part_navbar.html:29
-#: part/templates/part/part_sidebar.html:28
+#: part/templates/part/part_sidebar.html:30
msgid "Pricing"
msgstr "Fiyatlandırma"
@@ -2996,7 +3012,7 @@ msgstr "Fiyatlandırma"
#: stock/templates/stock/location.html:151
#: stock/templates/stock/location.html:163
#: stock/templates/stock/location_sidebar.html:7
-#: templates/InvenTree/search.html:152 templates/js/translated/stock.js:2509
+#: templates/InvenTree/search.html:152 templates/js/translated/stock.js:2633
#: templates/stats.html:105 templates/stats.html:114 users/models.py:43
msgid "Stock Items"
msgstr "Stok Kalemleri"
@@ -3026,20 +3042,20 @@ msgstr "Şirketler"
msgid "New Company"
msgstr "Yeni Şirket"
-#: company/views.py:129 part/views.py:593
+#: company/views.py:129 part/views.py:591
msgid "Download Image"
msgstr "Resmi İndirin"
-#: company/views.py:158 part/views.py:625
+#: company/views.py:158 part/views.py:623
msgid "Image size exceeds maximum allowable size for download"
msgstr ""
-#: company/views.py:165 part/views.py:632
+#: company/views.py:165 part/views.py:630
#, python-brace-format
msgid "Invalid response: {code}"
msgstr "Geçersiz yanıt: {code}"
-#: company/views.py:174 part/views.py:641
+#: company/views.py:174 part/views.py:639
msgid "Supplied URL is not a valid image file"
msgstr "Sağlanan URL geçerli bir resim dosyası değil"
@@ -3256,16 +3272,16 @@ msgid "Supplier part must match supplier"
msgstr ""
#: order/models.py:855 order/models.py:946 order/models.py:1042
-#: templates/js/translated/order.js:1820 templates/js/translated/stock.js:2271
+#: templates/js/translated/order.js:1820 templates/js/translated/stock.js:2395
msgid "Order"
msgstr ""
#: order/models.py:856 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:352
+#: stock/templates/stock/item_base.html:354
#: templates/js/translated/order.js:801 templates/js/translated/part.js:838
-#: templates/js/translated/stock.js:1733 templates/js/translated/stock.js:2591
+#: templates/js/translated/stock.js:1857 templates/js/translated/stock.js:2715
msgid "Purchase Order"
msgstr ""
@@ -3276,7 +3292,7 @@ msgstr ""
#: order/models.py:884 order/templates/order/order_base.html:163
#: templates/js/translated/order.js:589 templates/js/translated/order.js:1118
#: templates/js/translated/part.js:910 templates/js/translated/part.js:937
-#: templates/js/translated/table_filters.js:317
+#: templates/js/translated/table_filters.js:312
msgid "Received"
msgstr ""
@@ -3285,8 +3301,8 @@ msgid "Number of items received"
msgstr ""
#: order/models.py:892 part/templates/part/prices.html:176 stock/models.py:608
-#: stock/serializers.py:170 stock/templates/stock/item_base.html:359
-#: templates/js/translated/stock.js:1787
+#: stock/serializers.py:170 stock/templates/stock/item_base.html:361
+#: templates/js/translated/stock.js:1911
msgid "Purchase Price"
msgstr ""
@@ -3530,7 +3546,7 @@ msgstr ""
#: order/templates/order/order_base.html:94
#: order/templates/order/sales_order_base.html:89
-#: templates/js/translated/stock.js:2327
+#: templates/js/translated/stock.js:2451
msgid "Order Status"
msgstr ""
@@ -3574,73 +3590,20 @@ msgstr ""
msgid "After placing this purchase order, line items will no longer be editable."
msgstr ""
-#: order/templates/order/order_wizard/match_fields.html:9
-#: part/templates/part/bom_upload/match_fields.html:9
-#: part/templates/part/import_wizard/ajax_match_fields.html:9
-#: part/templates/part/import_wizard/match_fields.html:9
-msgid "Missing selections for the following required columns"
-msgstr "Aşağıdaki gerekli sütunlar için eksik seçimler"
-
-#: order/templates/order/order_wizard/match_fields.html:20
-#: part/templates/part/bom_upload/match_fields.html:20
-#: part/templates/part/import_wizard/ajax_match_fields.html:20
-#: part/templates/part/import_wizard/match_fields.html:20
-msgid "Duplicate selections found, see below. Fix them then retry submitting."
-msgstr ""
-
-#: order/templates/order/order_wizard/match_fields.html:29
-#: order/templates/order/order_wizard/match_parts.html:21
-#: part/templates/part/bom_upload/match_fields.html:29
-#: part/templates/part/bom_upload/match_parts.html:21
-#: part/templates/part/import_wizard/match_fields.html:29
-#: part/templates/part/import_wizard/match_references.html:21
-msgid "Submit Selections"
-msgstr ""
-
-#: order/templates/order/order_wizard/match_fields.html:35
-#: part/templates/part/bom_upload/match_fields.html:35
-#: part/templates/part/import_wizard/ajax_match_fields.html:28
-#: part/templates/part/import_wizard/match_fields.html:35
-msgid "File Fields"
-msgstr "Dosya Alanları"
-
-#: order/templates/order/order_wizard/match_fields.html:42
-#: part/templates/part/bom_upload/match_fields.html:42
-#: part/templates/part/import_wizard/ajax_match_fields.html:35
-#: part/templates/part/import_wizard/match_fields.html:42
-msgid "Remove column"
-msgstr ""
-
-#: order/templates/order/order_wizard/match_fields.html:60
-#: part/templates/part/bom_upload/match_fields.html:60
-#: part/templates/part/import_wizard/ajax_match_fields.html:53
-#: part/templates/part/import_wizard/match_fields.html:60
-msgid "Duplicate selection"
-msgstr ""
-
-#: order/templates/order/order_wizard/match_fields.html:71
-#: order/templates/order/order_wizard/match_parts.html:52
-#: part/templates/part/bom_upload/match_fields.html:71
-#: part/templates/part/bom_upload/match_parts.html:53
-#: part/templates/part/import_wizard/ajax_match_fields.html:64
-#: part/templates/part/import_wizard/ajax_match_references.html:42
-#: part/templates/part/import_wizard/match_fields.html:71
-#: part/templates/part/import_wizard/match_references.html:49
-#: templates/js/translated/build.js:300 templates/js/translated/build.js:1311
-#: templates/js/translated/order.js:537 templates/js/translated/order.js:1488
-#: templates/js/translated/stock.js:601 templates/js/translated/stock.js:769
-msgid "Remove row"
-msgstr ""
-
#: order/templates/order/order_wizard/match_parts.html:12
-#: part/templates/part/bom_upload/match_parts.html:12
#: part/templates/part/import_wizard/ajax_match_references.html:12
#: part/templates/part/import_wizard/match_references.html:12
msgid "Errors exist in the submitted data"
msgstr ""
+#: order/templates/order/order_wizard/match_parts.html:21
+#: part/templates/part/import_wizard/match_fields.html:29
+#: part/templates/part/import_wizard/match_references.html:21
+#: templates/patterns/wizard/match_fields.html:28
+msgid "Submit Selections"
+msgstr ""
+
#: order/templates/order/order_wizard/match_parts.html:28
-#: part/templates/part/bom_upload/match_parts.html:28
#: part/templates/part/import_wizard/ajax_match_references.html:21
#: part/templates/part/import_wizard/match_references.html:28
msgid "Row"
@@ -3650,6 +3613,19 @@ msgstr ""
msgid "Select Supplier Part"
msgstr "Tedarikçi Parçası Seçin"
+#: order/templates/order/order_wizard/match_parts.html:52
+#: part/templates/part/import_wizard/ajax_match_fields.html:64
+#: part/templates/part/import_wizard/ajax_match_references.html:42
+#: part/templates/part/import_wizard/match_fields.html:71
+#: part/templates/part/import_wizard/match_references.html:49
+#: templates/js/translated/bom.js:76 templates/js/translated/build.js:380
+#: templates/js/translated/build.js:528 templates/js/translated/build.js:1547
+#: templates/js/translated/order.js:537 templates/js/translated/order.js:1488
+#: templates/js/translated/stock.js:602 templates/js/translated/stock.js:770
+#: templates/patterns/wizard/match_fields.html:70
+msgid "Remove row"
+msgstr ""
+
#: order/templates/order/order_wizard/po_upload.html:8
msgid "Return to Orders"
msgstr ""
@@ -3659,9 +3635,9 @@ msgid "Upload File for Purchase Order"
msgstr "Sipariş Emri için Dosya Yükle"
#: order/templates/order/order_wizard/po_upload.html:25
-#: part/templates/part/bom_upload/upload_file.html:21
#: part/templates/part/import_wizard/ajax_part_upload.html:10
#: part/templates/part/import_wizard/part_upload.html:23
+#: templates/patterns/wizard/upload.html:11
#, python-format
msgid "Step %(step)s of %(count)s"
msgstr ""
@@ -3819,7 +3795,7 @@ msgid "Pending Shipments"
msgstr ""
#: order/templates/order/sales_order_detail.html:48
-#: templates/js/translated/bom.js:732 templates/js/translated/build.js:1243
+#: templates/js/translated/bom.js:945 templates/js/translated/build.js:1465
msgid "Actions"
msgstr "İşlemler"
@@ -3922,7 +3898,7 @@ msgstr ""
msgid "This field is required"
msgstr ""
-#: part/bom.py:125 part/models.py:83 part/models.py:849
+#: part/bom.py:125 part/models.py:83 part/models.py:879
#: part/templates/part/category.html:108 part/templates/part/part_base.html:338
msgid "Default Location"
msgstr "Varsayılan Konum"
@@ -3968,7 +3944,7 @@ msgstr ""
msgid "Default keywords for parts in this category"
msgstr ""
-#: part/models.py:97 part/models.py:2533 part/templates/part/category.html:15
+#: part/models.py:97 part/models.py:2569 part/templates/part/category.html:15
#: part/templates/part/part_app_base.html:10
msgid "Part Category"
msgstr ""
@@ -3994,408 +3970,478 @@ msgstr "Parçalar"
msgid "Invalid choice for parent part"
msgstr ""
-#: part/models.py:502 part/models.py:514
+#: part/models.py:532 part/models.py:544
#, python-brace-format
msgid "Part '{p1}' is used in BOM for '{p2}' (recursive)"
msgstr ""
-#: part/models.py:644
+#: part/models.py:674
msgid "Next available serial numbers are"
msgstr "Sonraki kullanılabilir seri numaraları"
-#: part/models.py:648
+#: part/models.py:678
msgid "Next available serial number is"
msgstr "Sonraki müsait seri numarası"
-#: part/models.py:653
+#: part/models.py:683
msgid "Most recent serial number is"
msgstr "En son seri numarası"
-#: part/models.py:748
+#: part/models.py:778
msgid "Duplicate IPN not allowed in part settings"
msgstr "Yinelenen DPN'ye parça ayarlarında izin verilmiyor"
-#: part/models.py:773
+#: part/models.py:803 part/models.py:2622
msgid "Part name"
msgstr "Parça adı"
-#: part/models.py:780
+#: part/models.py:810
msgid "Is Template"
msgstr "Şablon Mu"
-#: part/models.py:781
+#: part/models.py:811
msgid "Is this part a template part?"
msgstr "Bu parça bir şablon parçası mı?"
-#: part/models.py:791
+#: part/models.py:821
msgid "Is this part a variant of another part?"
msgstr "Bu parça başka bir parçanın çeşidi mi?"
-#: part/models.py:792
+#: part/models.py:822
msgid "Variant Of"
msgstr "Çeşidi"
-#: part/models.py:798
+#: part/models.py:828
msgid "Part description"
msgstr "Parça açıklaması"
-#: part/models.py:803 part/templates/part/category.html:86
+#: part/models.py:833 part/templates/part/category.html:86
#: part/templates/part/part_base.html:302
msgid "Keywords"
msgstr "Anahtar kelimeler"
-#: part/models.py:804
+#: part/models.py:834
msgid "Part keywords to improve visibility in search results"
msgstr ""
-#: part/models.py:811 part/models.py:2283 part/models.py:2532
+#: part/models.py:841 part/models.py:2319 part/models.py:2568
#: part/templates/part/part_base.html:265
#: part/templates/part/set_category.html:15
-#: templates/InvenTree/settings/settings.html:186
+#: templates/InvenTree/settings/settings.html:223
#: templates/js/translated/part.js:1268
msgid "Category"
msgstr ""
-#: part/models.py:812
+#: part/models.py:842
msgid "Part category"
msgstr ""
-#: part/models.py:817 part/templates/part/part_base.html:274
+#: part/models.py:847 part/templates/part/part_base.html:274
#: templates/js/translated/part.js:618 templates/js/translated/part.js:1221
-#: templates/js/translated/stock.js:1560
+#: templates/js/translated/stock.js:1684
msgid "IPN"
msgstr "DPN"
-#: part/models.py:818
+#: part/models.py:848
msgid "Internal Part Number"
msgstr ""
-#: part/models.py:824
+#: part/models.py:854
msgid "Part revision or version number"
msgstr "Parça revizyon veya versiyon numarası"
-#: part/models.py:825 part/templates/part/part_base.html:281
+#: part/models.py:855 part/templates/part/part_base.html:281
#: report/models.py:200 templates/js/translated/part.js:622
msgid "Revision"
msgstr "Revizyon"
-#: part/models.py:847
+#: part/models.py:877
msgid "Where is this item normally stored?"
msgstr ""
-#: part/models.py:894 part/templates/part/part_base.html:347
+#: part/models.py:924 part/templates/part/part_base.html:347
msgid "Default Supplier"
msgstr "Varsayılan Tedarikçi"
-#: part/models.py:895
+#: part/models.py:925
msgid "Default supplier part"
msgstr "Varsayılan tedarikçi parçası"
-#: part/models.py:902
+#: part/models.py:932
msgid "Default Expiry"
msgstr ""
-#: part/models.py:903
+#: part/models.py:933
msgid "Expiry time (in days) for stock items of this part"
msgstr ""
-#: part/models.py:908 part/templates/part/part_base.html:196
+#: part/models.py:938 part/templates/part/part_base.html:196
msgid "Minimum Stock"
msgstr "Minimum Stok"
-#: part/models.py:909
+#: part/models.py:939
msgid "Minimum allowed stock level"
msgstr ""
-#: part/models.py:916
+#: part/models.py:946
msgid "Stock keeping units for this part"
msgstr ""
-#: part/models.py:922
+#: part/models.py:952
msgid "Can this part be built from other parts?"
msgstr "Bu parça diğer parçalardan yapılabilir mi?"
-#: part/models.py:928
+#: part/models.py:958
msgid "Can this part be used to build other parts?"
msgstr "Bu parça diğer parçaların yapımında kullanılabilir mi?"
-#: part/models.py:934
+#: part/models.py:964
msgid "Does this part have tracking for unique items?"
msgstr ""
-#: part/models.py:939
+#: part/models.py:969
msgid "Can this part be purchased from external suppliers?"
msgstr "Bu parça dış tedarikçilerden satın alınabilir mi?"
-#: part/models.py:944
+#: part/models.py:974
msgid "Can this part be sold to customers?"
msgstr "Bu parça müşterilere satılabilir mi?"
-#: part/models.py:949
+#: part/models.py:979
msgid "Is this part active?"
msgstr "Bu parça aktif mi?"
-#: part/models.py:954
+#: part/models.py:984
msgid "Is this a virtual part, such as a software product or license?"
msgstr ""
-#: part/models.py:959
+#: part/models.py:989
msgid "Part notes - supports Markdown formatting"
msgstr ""
-#: part/models.py:962
+#: part/models.py:992
msgid "BOM checksum"
msgstr ""
-#: part/models.py:962
+#: part/models.py:992
msgid "Stored BOM checksum"
msgstr ""
-#: part/models.py:965
+#: part/models.py:995
msgid "BOM checked by"
msgstr ""
-#: part/models.py:967
+#: part/models.py:997
msgid "BOM checked date"
msgstr ""
-#: part/models.py:971
+#: part/models.py:1001
msgid "Creation User"
msgstr "Oluşturan Kullanıcı"
-#: part/models.py:1783
+#: part/models.py:1819
msgid "Sell multiple"
msgstr ""
-#: part/models.py:2333
+#: part/models.py:2369
msgid "Test templates can only be created for trackable parts"
msgstr "Test şablonları sadece takip edilebilir paçalar için oluşturulabilir"
-#: part/models.py:2350
+#: part/models.py:2386
msgid "Test with this name already exists for this part"
msgstr ""
-#: part/models.py:2370 templates/js/translated/part.js:1714
-#: templates/js/translated/stock.js:1284
+#: part/models.py:2406 templates/js/translated/part.js:1714
+#: templates/js/translated/stock.js:1312
msgid "Test Name"
msgstr "Test Adı"
-#: part/models.py:2371
+#: part/models.py:2407
msgid "Enter a name for the test"
msgstr ""
-#: part/models.py:2376
+#: part/models.py:2412
msgid "Test Description"
msgstr "Test Açıklaması"
-#: part/models.py:2377
+#: part/models.py:2413
msgid "Enter description for this test"
msgstr ""
-#: part/models.py:2382 templates/js/translated/part.js:1723
-#: templates/js/translated/table_filters.js:281
+#: part/models.py:2418 templates/js/translated/part.js:1723
+#: templates/js/translated/table_filters.js:276
msgid "Required"
msgstr "Gerekli"
-#: part/models.py:2383
+#: part/models.py:2419
msgid "Is this test required to pass?"
msgstr "Testi geçmesi için bu gerekli mi?"
-#: part/models.py:2388 templates/js/translated/part.js:1731
+#: part/models.py:2424 templates/js/translated/part.js:1731
msgid "Requires Value"
msgstr ""
-#: part/models.py:2389
+#: part/models.py:2425
msgid "Does this test require a value when adding a test result?"
msgstr ""
-#: part/models.py:2394 templates/js/translated/part.js:1738
+#: part/models.py:2430 templates/js/translated/part.js:1738
msgid "Requires Attachment"
msgstr ""
-#: part/models.py:2395
+#: part/models.py:2431
msgid "Does this test require a file attachment when adding a test result?"
msgstr ""
-#: part/models.py:2406
+#: part/models.py:2442
#, python-brace-format
msgid "Illegal character in template name ({c})"
msgstr ""
-#: part/models.py:2442
+#: part/models.py:2478
msgid "Parameter template name must be unique"
msgstr "Parametre şablon adı benzersiz olmalıdır"
-#: part/models.py:2450
+#: part/models.py:2486
msgid "Parameter Name"
msgstr ""
-#: part/models.py:2457
+#: part/models.py:2493
msgid "Parameter Units"
msgstr ""
-#: part/models.py:2487
+#: part/models.py:2523
msgid "Parent Part"
msgstr ""
-#: part/models.py:2489 part/models.py:2538 part/models.py:2539
-#: templates/InvenTree/settings/settings.html:181
+#: part/models.py:2525 part/models.py:2574 part/models.py:2575
+#: templates/InvenTree/settings/settings.html:218
msgid "Parameter Template"
msgstr "Parametre Şablonu"
-#: part/models.py:2491
+#: part/models.py:2527
msgid "Data"
msgstr ""
-#: part/models.py:2491
+#: part/models.py:2527
msgid "Parameter Value"
msgstr ""
-#: part/models.py:2543 templates/InvenTree/settings/settings.html:190
+#: part/models.py:2579 templates/InvenTree/settings/settings.html:227
msgid "Default Value"
msgstr ""
-#: part/models.py:2544
+#: part/models.py:2580
msgid "Default Parameter Value"
msgstr ""
+#: part/models.py:2614
+msgid "Part ID or part name"
+msgstr ""
+
+#: part/models.py:2617 templates/js/translated/model_renderers.js:182
+msgid "Part ID"
+msgstr ""
+
+#: part/models.py:2618
+msgid "Unique part ID value"
+msgstr ""
+
#: part/models.py:2621
-msgid "Select parent part"
+msgid "Part Name"
+msgstr ""
+
+#: part/models.py:2625
+msgid "Part IPN"
+msgstr ""
+
+#: part/models.py:2626
+msgid "Part IPN value"
msgstr ""
#: part/models.py:2629
-msgid "Sub part"
+msgid "Level"
msgstr ""
#: part/models.py:2630
+msgid "BOM level"
+msgstr ""
+
+#: part/models.py:2690
+msgid "Select parent part"
+msgstr ""
+
+#: part/models.py:2698
+msgid "Sub part"
+msgstr ""
+
+#: part/models.py:2699
msgid "Select part to be used in BOM"
msgstr ""
-#: part/models.py:2636
+#: part/models.py:2705
msgid "BOM quantity for this BOM item"
msgstr ""
-#: part/models.py:2638 templates/js/translated/bom.js:578
-#: templates/js/translated/bom.js:652
+#: part/models.py:2707 part/templates/part/upload_bom.html:58
+#: templates/js/translated/bom.js:791 templates/js/translated/bom.js:865
#: templates/js/translated/table_filters.js:92
msgid "Optional"
msgstr ""
-#: part/models.py:2638
+#: part/models.py:2707
msgid "This BOM item is optional"
msgstr ""
-#: part/models.py:2641
+#: part/models.py:2710 part/templates/part/upload_bom.html:55
msgid "Overage"
msgstr ""
-#: part/models.py:2642
+#: part/models.py:2711
msgid "Estimated build wastage quantity (absolute or percentage)"
msgstr ""
-#: part/models.py:2645
+#: part/models.py:2714
msgid "BOM item reference"
msgstr ""
-#: part/models.py:2648
+#: part/models.py:2717
msgid "BOM item notes"
msgstr ""
-#: part/models.py:2650
+#: part/models.py:2719
msgid "Checksum"
msgstr ""
-#: part/models.py:2650
+#: part/models.py:2719
msgid "BOM line checksum"
msgstr ""
-#: part/models.py:2654 templates/js/translated/bom.js:669
+#: part/models.py:2723 part/templates/part/upload_bom.html:57
+#: templates/js/translated/bom.js:882
#: templates/js/translated/table_filters.js:68
#: templates/js/translated/table_filters.js:88
msgid "Inherited"
msgstr ""
-#: part/models.py:2655
+#: part/models.py:2724
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:2660 templates/js/translated/bom.js:661
+#: part/models.py:2729 part/templates/part/upload_bom.html:56
+#: templates/js/translated/bom.js:874
msgid "Allow Variants"
msgstr "Çeşide İzin Ver"
-#: part/models.py:2661
+#: part/models.py:2730
msgid "Stock items for variant parts can be used for this BOM item"
msgstr "Çeşit parçaların stok kalemleri bu malzeme listesinde kullanılabilir"
-#: part/models.py:2746 stock/models.py:357
+#: part/models.py:2815 stock/models.py:357
msgid "Quantity must be integer value for trackable parts"
msgstr ""
-#: part/models.py:2755 part/models.py:2757
+#: part/models.py:2824 part/models.py:2826
msgid "Sub part must be specified"
msgstr ""
-#: part/models.py:2886
+#: part/models.py:2955
msgid "BOM Item Substitute"
msgstr ""
-#: part/models.py:2908
+#: part/models.py:2977
msgid "Substitute part cannot be the same as the master part"
msgstr ""
-#: part/models.py:2920
+#: part/models.py:2989
msgid "Parent BOM item"
msgstr ""
-#: part/models.py:2928
+#: part/models.py:2997
msgid "Substitute part"
msgstr ""
-#: part/models.py:2939
+#: part/models.py:3008
msgid "Part 1"
msgstr ""
-#: part/models.py:2943
+#: part/models.py:3012
msgid "Part 2"
msgstr ""
-#: part/models.py:2943
+#: part/models.py:3012
msgid "Select Related Part"
msgstr ""
-#: part/models.py:2975
+#: part/models.py:3044
msgid "Error creating relationship: check that the part is not related to itself and that the relationship is unique"
msgstr ""
-#: part/serializers.py:659
+#: part/serializers.py:667
msgid "Select part to copy BOM from"
msgstr ""
-#: part/serializers.py:670
+#: part/serializers.py:678
msgid "Remove Existing Data"
msgstr ""
-#: part/serializers.py:671
+#: part/serializers.py:679
msgid "Remove existing BOM items before copying"
msgstr ""
-#: part/serializers.py:676
+#: part/serializers.py:684
msgid "Include Inherited"
msgstr ""
-#: part/serializers.py:677
+#: part/serializers.py:685
msgid "Include BOM items which are inherited from templated parts"
msgstr ""
-#: part/serializers.py:682
+#: part/serializers.py:690
msgid "Skip Invalid Rows"
msgstr ""
-#: part/serializers.py:683
+#: part/serializers.py:691
msgid "Enable this option to skip invalid rows"
msgstr ""
-#: part/tasks.py:53
+#: part/serializers.py:734
+msgid "Clear Existing BOM"
+msgstr ""
+
+#: part/serializers.py:735
+msgid "Delete existing BOM items before uploading"
+msgstr ""
+
+#: part/serializers.py:762
+msgid "No part column specified"
+msgstr ""
+
+#: part/serializers.py:806
+msgid "Multiple matching parts found"
+msgstr ""
+
+#: part/serializers.py:809
+msgid "No matching part found"
+msgstr ""
+
+#: part/serializers.py:812
+msgid "Part is not designated as a component"
+msgstr ""
+
+#: part/serializers.py:821
+msgid "Quantity not provided"
+msgstr ""
+
+#: part/serializers.py:829
+msgid "Invalid quantity"
+msgstr ""
+
+#: part/serializers.py:848
+msgid "At least one BOM item is required"
+msgstr ""
+
+#: part/tasks.py:58
msgid "Low stock notification"
msgstr ""
@@ -4418,7 +4464,7 @@ msgstr ""
msgid "The BOM for %(part)s has not been validated."
msgstr ""
-#: part/templates/part/bom.html:30 part/templates/part/detail.html:270
+#: part/templates/part/bom.html:30 part/templates/part/detail.html:273
msgid "BOM actions"
msgstr ""
@@ -4426,34 +4472,6 @@ msgstr ""
msgid "Delete Items"
msgstr ""
-#: part/templates/part/bom_upload/match_parts.html:29
-msgid "Select Part"
-msgstr ""
-
-#: part/templates/part/bom_upload/upload_file.html:8
-msgid "Return to BOM"
-msgstr ""
-
-#: part/templates/part/bom_upload/upload_file.html:13
-msgid "Upload Bill of Materials"
-msgstr ""
-
-#: part/templates/part/bom_upload/upload_file.html:33
-msgid "Requirements for BOM upload"
-msgstr ""
-
-#: part/templates/part/bom_upload/upload_file.html:35
-msgid "The BOM file must contain the required named columns as provided in the "
-msgstr "Malzeme Listesi dosyası gerekli sütün adlarını sağlandığı şekilde içermelidir "
-
-#: part/templates/part/bom_upload/upload_file.html:35
-msgid "BOM Upload Template"
-msgstr "Malzeme Listesi Şablonu Yükle"
-
-#: part/templates/part/bom_upload/upload_file.html:36
-msgid "Each part must already exist in the database"
-msgstr ""
-
#: part/templates/part/category.html:28 part/templates/part/category.html:32
msgid "You are subscribed to notifications for this category"
msgstr ""
@@ -4519,7 +4537,7 @@ msgstr ""
msgid "Create new part"
msgstr ""
-#: part/templates/part/category.html:161 templates/js/translated/bom.js:152
+#: part/templates/part/category.html:161 templates/js/translated/bom.js:365
msgid "New Part"
msgstr ""
@@ -4639,138 +4657,168 @@ msgstr "Test Şablonu Ekle"
msgid "Sales Order Allocations"
msgstr ""
-#: part/templates/part/detail.html:159
+#: part/templates/part/detail.html:162
msgid "Part Variants"
msgstr "Parça Çeşitleri"
-#: part/templates/part/detail.html:163
+#: part/templates/part/detail.html:166
msgid "Create new variant"
msgstr "Yeni çeşit oluştur"
-#: part/templates/part/detail.html:164
+#: part/templates/part/detail.html:167
msgid "New Variant"
msgstr "Yeni Çeşit"
-#: part/templates/part/detail.html:191
+#: part/templates/part/detail.html:194
msgid "Add new parameter"
msgstr ""
-#: part/templates/part/detail.html:228 part/templates/part/part_sidebar.html:49
+#: part/templates/part/detail.html:231 part/templates/part/part_sidebar.html:52
msgid "Related Parts"
msgstr ""
-#: part/templates/part/detail.html:232 part/templates/part/detail.html:233
+#: part/templates/part/detail.html:235 part/templates/part/detail.html:236
msgid "Add Related"
msgstr ""
-#: part/templates/part/detail.html:253 part/templates/part/part_sidebar.html:17
+#: part/templates/part/detail.html:256 part/templates/part/part_sidebar.html:18
msgid "Bill of Materials"
msgstr ""
-#: part/templates/part/detail.html:258
+#: part/templates/part/detail.html:261
msgid "Export actions"
msgstr ""
-#: part/templates/part/detail.html:262 templates/js/translated/bom.js:70
+#: part/templates/part/detail.html:265 templates/js/translated/bom.js:283
msgid "Export BOM"
msgstr ""
-#: part/templates/part/detail.html:264
+#: part/templates/part/detail.html:267
msgid "Print BOM Report"
msgstr ""
-#: part/templates/part/detail.html:274
+#: part/templates/part/detail.html:277
msgid "Upload BOM"
msgstr ""
-#: part/templates/part/detail.html:276 templates/js/translated/part.js:272
+#: part/templates/part/detail.html:279 templates/js/translated/part.js:272
msgid "Copy BOM"
msgstr ""
-#: part/templates/part/detail.html:278
+#: part/templates/part/detail.html:281
msgid "Validate BOM"
msgstr ""
-#: part/templates/part/detail.html:283
+#: part/templates/part/detail.html:286
msgid "New BOM Item"
msgstr ""
-#: part/templates/part/detail.html:284
+#: part/templates/part/detail.html:287
msgid "Add BOM Item"
msgstr ""
-#: part/templates/part/detail.html:297
+#: part/templates/part/detail.html:300
msgid "Assemblies"
msgstr ""
-#: part/templates/part/detail.html:314
+#: part/templates/part/detail.html:317
msgid "Part Builds"
msgstr ""
-#: part/templates/part/detail.html:339
+#: part/templates/part/detail.html:342
msgid "Build Order Allocations"
msgstr ""
-#: part/templates/part/detail.html:349
+#: part/templates/part/detail.html:352
msgid "Part Suppliers"
msgstr "Parça Tedarikçileri"
-#: part/templates/part/detail.html:377
+#: part/templates/part/detail.html:380
msgid "Part Manufacturers"
msgstr ""
-#: part/templates/part/detail.html:393
+#: part/templates/part/detail.html:396
msgid "Delete manufacturer parts"
msgstr ""
-#: part/templates/part/detail.html:575
+#: part/templates/part/detail.html:578
msgid "Delete selected BOM items?"
msgstr ""
-#: part/templates/part/detail.html:576
+#: part/templates/part/detail.html:579
msgid "All selected BOM items will be deleted"
msgstr ""
-#: part/templates/part/detail.html:625
+#: part/templates/part/detail.html:628
msgid "Create BOM Item"
msgstr ""
-#: part/templates/part/detail.html:682
+#: part/templates/part/detail.html:685
msgid "Related Part"
msgstr ""
-#: part/templates/part/detail.html:690
+#: part/templates/part/detail.html:693
msgid "Add Related Part"
msgstr ""
-#: part/templates/part/detail.html:785
+#: part/templates/part/detail.html:788
msgid "Add Test Result Template"
msgstr ""
-#: part/templates/part/detail.html:842
+#: part/templates/part/detail.html:845
msgid "Edit Part Notes"
msgstr ""
-#: part/templates/part/detail.html:955
+#: part/templates/part/detail.html:958
#, python-format
msgid "Purchase Unit Price - %(currency)s"
msgstr ""
-#: part/templates/part/detail.html:967
+#: part/templates/part/detail.html:970
#, python-format
msgid "Unit Price-Cost Difference - %(currency)s"
msgstr ""
-#: part/templates/part/detail.html:979
+#: part/templates/part/detail.html:982
#, python-format
msgid "Supplier Unit Cost - %(currency)s"
msgstr ""
-#: part/templates/part/detail.html:1068
+#: part/templates/part/detail.html:1071
#, python-format
msgid "Unit Price - %(currency)s"
msgstr ""
+#: part/templates/part/import_wizard/ajax_match_fields.html:9
+#: part/templates/part/import_wizard/match_fields.html:9
+#: templates/patterns/wizard/match_fields.html:8
+msgid "Missing selections for the following required columns"
+msgstr "Aşağıdaki gerekli sütunlar için eksik seçimler"
+
+#: part/templates/part/import_wizard/ajax_match_fields.html:20
+#: part/templates/part/import_wizard/match_fields.html:20
+#: templates/patterns/wizard/match_fields.html:19
+msgid "Duplicate selections found, see below. Fix them then retry submitting."
+msgstr ""
+
+#: part/templates/part/import_wizard/ajax_match_fields.html:28
+#: part/templates/part/import_wizard/match_fields.html:35
+#: templates/patterns/wizard/match_fields.html:34
+msgid "File Fields"
+msgstr "Dosya Alanları"
+
+#: part/templates/part/import_wizard/ajax_match_fields.html:35
+#: part/templates/part/import_wizard/match_fields.html:42
+#: templates/patterns/wizard/match_fields.html:41
+msgid "Remove column"
+msgstr ""
+
+#: part/templates/part/import_wizard/ajax_match_fields.html:53
+#: part/templates/part/import_wizard/match_fields.html:60
+#: templates/patterns/wizard/match_fields.html:59
+msgid "Duplicate selection"
+msgstr ""
+
#: part/templates/part/import_wizard/ajax_part_upload.html:29
#: part/templates/part/import_wizard/part_upload.html:53
msgid "Unsuffitient privileges."
@@ -4819,7 +4867,7 @@ msgid "Show pricing information"
msgstr ""
#: part/templates/part/part_base.html:56
-#: stock/templates/stock/item_base.html:110
+#: stock/templates/stock/item_base.html:112
#: stock/templates/stock/location.html:44
msgid "Stock actions"
msgstr "Stok işlemleri"
@@ -4912,7 +4960,7 @@ msgstr "Satış Emirleri için Gerekli"
msgid "Allocated to Orders"
msgstr ""
-#: part/templates/part/part_base.html:239 templates/js/translated/bom.js:690
+#: part/templates/part/part_base.html:239 templates/js/translated/bom.js:903
msgid "Can Build"
msgstr ""
@@ -4930,7 +4978,7 @@ msgid "Latest Serial Number"
msgstr "Son Seri Numarası"
#: part/templates/part/part_base.html:328
-#: stock/templates/stock/item_base.html:166
+#: stock/templates/stock/item_base.html:168
msgid "Search for serial number"
msgstr ""
@@ -4969,7 +5017,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:644
+#: templates/js/translated/bom.js:857
msgid "No supplier pricing available"
msgstr ""
@@ -5003,20 +5051,20 @@ msgstr ""
msgid "No pricing information is available for this part."
msgstr ""
-#: part/templates/part/part_sidebar.html:11
+#: part/templates/part/part_sidebar.html:12
msgid "Variants"
msgstr ""
-#: part/templates/part/part_sidebar.html:25
+#: part/templates/part/part_sidebar.html:26
msgid "Used In"
msgstr ""
-#: part/templates/part/part_sidebar.html:31
+#: part/templates/part/part_sidebar.html:34
#: stock/templates/stock/stock_sidebar.html:8
msgid "Allocations"
msgstr ""
-#: part/templates/part/part_sidebar.html:45
+#: part/templates/part/part_sidebar.html:48
msgid "Test Templates"
msgstr ""
@@ -5089,7 +5137,7 @@ msgstr ""
msgid "Calculation parameters"
msgstr ""
-#: part/templates/part/prices.html:155 templates/js/translated/bom.js:638
+#: part/templates/part/prices.html:155 templates/js/translated/bom.js:851
msgid "Supplier Cost"
msgstr ""
@@ -5111,7 +5159,7 @@ msgstr ""
msgid "Internal Cost"
msgstr ""
-#: part/templates/part/prices.html:215 part/views.py:1699
+#: part/templates/part/prices.html:215 part/views.py:1390
msgid "Add Internal Price Break"
msgstr ""
@@ -5131,7 +5179,7 @@ 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:600
+#: part/templates/part/stock_count.html:7 templates/js/translated/bom.js:813
#: templates/js/translated/part.js:497 templates/js/translated/part.js:1122
#: templates/js/translated/part.js:1309
msgid "No Stock"
@@ -5141,6 +5189,43 @@ msgstr "Stok Yok"
msgid "Low Stock"
msgstr "Düşük Stok"
+#: part/templates/part/upload_bom.html:8
+msgid "Return to BOM"
+msgstr ""
+
+#: part/templates/part/upload_bom.html:13
+msgid "Upload Bill of Materials"
+msgstr ""
+
+#: part/templates/part/upload_bom.html:19
+msgid "BOM upload requirements"
+msgstr ""
+
+#: part/templates/part/upload_bom.html:23
+#: part/templates/part/upload_bom.html:90
+msgid "Upload BOM File"
+msgstr ""
+
+#: part/templates/part/upload_bom.html:29
+msgid "Submit BOM Data"
+msgstr ""
+
+#: part/templates/part/upload_bom.html:37
+msgid "Requirements for BOM upload"
+msgstr ""
+
+#: part/templates/part/upload_bom.html:39
+msgid "The BOM file must contain the required named columns as provided in the "
+msgstr "Malzeme Listesi dosyası gerekli sütün adlarını sağlandığı şekilde içermelidir "
+
+#: part/templates/part/upload_bom.html:39
+msgid "BOM Upload Template"
+msgstr "Malzeme Listesi Şablonu Yükle"
+
+#: part/templates/part/upload_bom.html:40
+msgid "Each part must already exist in the database"
+msgstr ""
+
#: part/templates/part/variant_part.html:9
msgid "Create new part variant"
msgstr "Yeni parça çeşidi oluştur"
@@ -5154,104 +5239,96 @@ msgstr ""
msgid "Unknown database"
msgstr ""
-#: part/views.py:93
+#: part/views.py:90
msgid "Set Part Category"
msgstr ""
-#: part/views.py:143
+#: part/views.py:140
#, python-brace-format
msgid "Set category for {n} parts"
msgstr ""
-#: part/views.py:215
+#: part/views.py:212
msgid "Match References"
msgstr ""
-#: part/views.py:511
+#: part/views.py:509
msgid "None"
msgstr "Hiçbiri"
-#: part/views.py:570
+#: part/views.py:568
msgid "Part QR Code"
msgstr ""
-#: part/views.py:672
+#: part/views.py:670
msgid "Select Part Image"
msgstr ""
-#: part/views.py:698
+#: part/views.py:696
msgid "Updated part image"
msgstr ""
-#: part/views.py:701
+#: part/views.py:699
msgid "Part image not found"
msgstr ""
-#: part/views.py:775
-msgid "Match Parts"
-msgstr ""
-
-#: part/views.py:1110
-msgid "Export Bill of Materials"
-msgstr ""
-
-#: part/views.py:1159
+#: part/views.py:850
msgid "Confirm Part Deletion"
msgstr ""
-#: part/views.py:1166
+#: part/views.py:857
msgid "Part was deleted"
msgstr ""
-#: part/views.py:1175
+#: part/views.py:866
msgid "Part Pricing"
msgstr ""
-#: part/views.py:1324
+#: part/views.py:1015
msgid "Create Part Parameter Template"
msgstr "Parça Parametre Şablonu Oluştur"
-#: part/views.py:1334
+#: part/views.py:1025
msgid "Edit Part Parameter Template"
msgstr "Parça Parametre Şablonu Düzenle"
-#: part/views.py:1341
+#: part/views.py:1032
msgid "Delete Part Parameter Template"
msgstr "Parça Parametre Şablonu Sil"
-#: part/views.py:1400 templates/js/translated/part.js:315
+#: part/views.py:1091 templates/js/translated/part.js:315
msgid "Edit Part Category"
msgstr ""
-#: part/views.py:1438
+#: part/views.py:1129
msgid "Delete Part Category"
msgstr ""
-#: part/views.py:1444
+#: part/views.py:1135
msgid "Part category was deleted"
msgstr ""
-#: part/views.py:1453
+#: part/views.py:1144
msgid "Create Category Parameter Template"
msgstr "Kategori Parametre Şablonu Oluştur"
-#: part/views.py:1554
+#: part/views.py:1245
msgid "Edit Category Parameter Template"
msgstr "Kategori Parametre Şablonu Düzenle"
-#: part/views.py:1610
+#: part/views.py:1301
msgid "Delete Category Parameter Template"
msgstr "Kategori Parametre Şablonu Sil"
-#: part/views.py:1632
+#: part/views.py:1323
msgid "Added new price break"
msgstr ""
-#: part/views.py:1708
+#: part/views.py:1399
msgid "Edit Internal Price Break"
msgstr ""
-#: part/views.py:1716
+#: part/views.py:1407
msgid "Delete Internal Price Break"
msgstr ""
@@ -5453,12 +5530,12 @@ msgid "Stock Item Test Report"
msgstr ""
#: report/templates/report/inventree_test_report_base.html:79
-#: stock/models.py:519 stock/templates/stock/item_base.html:156
-#: templates/js/translated/build.js:293 templates/js/translated/build.js:697
-#: templates/js/translated/build.js:1073
+#: stock/models.py:519 stock/templates/stock/item_base.html:158
+#: templates/js/translated/build.js:373 templates/js/translated/build.js:521
+#: templates/js/translated/build.js:919 templates/js/translated/build.js:1295
#: 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:423
+#: templates/js/translated/order.js:2034 templates/js/translated/stock.js:424
msgid "Serial Number"
msgstr "Seri Numara"
@@ -5479,7 +5556,7 @@ msgstr ""
#: report/templates/report/inventree_test_report_base.html:97
#: templates/InvenTree/settings/plugin.html:50
#: templates/InvenTree/settings/plugin_settings.html:38
-#: templates/js/translated/order.js:849 templates/js/translated/stock.js:2525
+#: templates/js/translated/order.js:849 templates/js/translated/stock.js:2649
msgid "Date"
msgstr ""
@@ -5497,71 +5574,67 @@ msgid "Installed Items"
msgstr ""
#: report/templates/report/inventree_test_report_base.html:137
-#: templates/js/translated/stock.js:586 templates/js/translated/stock.js:756
-#: templates/js/translated/stock.js:2785
+#: templates/js/translated/stock.js:587 templates/js/translated/stock.js:757
+#: templates/js/translated/stock.js:2909
msgid "Serial"
msgstr "Seri No"
-#: stock/api.py:476
+#: stock/api.py:501
msgid "Quantity is required"
msgstr ""
-#: stock/api.py:483
+#: stock/api.py:508
msgid "Valid part must be supplied"
msgstr ""
-#: stock/forms.py:77 stock/forms.py:251 stock/models.py:576
-#: stock/templates/stock/item_base.html:193
-#: templates/js/translated/stock.js:1709
+#: stock/api.py:535
+msgid "Serial numbers cannot be supplied for a non-trackable part"
+msgstr ""
+
+#: stock/forms.py:74 stock/forms.py:198 stock/models.py:576
+#: stock/templates/stock/item_base.html:195
+#: templates/js/translated/stock.js:1833
msgid "Expiry Date"
msgstr ""
-#: stock/forms.py:78 stock/forms.py:252
+#: stock/forms.py:75 stock/forms.py:199
msgid "Expiration date for this stock item"
msgstr "Bu stok kalemi için son kullanma tarihi"
-#: stock/forms.py:81
+#: stock/forms.py:78
msgid "Enter unique serial numbers (or leave blank)"
msgstr "Benzersiz seri numaraları giriniz (veya boş bırakınız)"
-#: stock/forms.py:136
+#: stock/forms.py:133
msgid "Destination for serialized stock (by default, will remain in current location)"
msgstr "Seri numaralandırılmış stok için hedef konum(varsayılan olarak, geçerli konumda kalacaktır)"
-#: stock/forms.py:138
+#: stock/forms.py:135
msgid "Serial numbers"
msgstr "Seri numaraları"
-#: stock/forms.py:138
+#: stock/forms.py:135
msgid "Unique serial numbers (must match quantity)"
msgstr "Benzersiz seri numaraları (miktar ile eşleşmeli)"
-#: stock/forms.py:140 stock/forms.py:224
+#: stock/forms.py:137 stock/forms.py:171
msgid "Add transaction note (optional)"
msgstr "İşlem notu ekle (isteğe bağlı)"
-#: stock/forms.py:180
-msgid "Stock item to install"
-msgstr "Kurulacak stok kalemi"
-
-#: stock/forms.py:210
-msgid "Must not exceed available quantity"
-msgstr ""
-
-#: stock/forms.py:222
+#: stock/forms.py:169
msgid "Destination location for uninstalled items"
msgstr "Sökülen ögeler için hedef konum"
-#: stock/forms.py:226
+#: stock/forms.py:173
msgid "Confirm uninstall"
msgstr ""
-#: stock/forms.py:226
+#: stock/forms.py:173
msgid "Confirm removal of installed stock items"
msgstr "Kurulu stok kalemlerinin kaldırılmasını onayla"
#: stock/models.py:62 stock/models.py:613
-#: stock/templates/stock/item_base.html:416
+#: stock/templates/stock/item_base.html:418
msgid "Owner"
msgstr ""
@@ -5623,7 +5696,7 @@ msgstr ""
msgid "Packaging this stock item is stored in"
msgstr ""
-#: stock/models.py:502 stock/templates/stock/item_base.html:298
+#: stock/models.py:502 stock/templates/stock/item_base.html:300
msgid "Installed In"
msgstr ""
@@ -5733,7 +5806,7 @@ msgstr ""
msgid "Serialized stock cannot be merged"
msgstr ""
-#: stock/models.py:1214 stock/serializers.py:775
+#: stock/models.py:1214 stock/serializers.py:832
msgid "Duplicate stock items"
msgstr ""
@@ -5769,7 +5842,7 @@ msgstr ""
msgid "Test name"
msgstr ""
-#: stock/models.py:1983 templates/js/translated/table_filters.js:271
+#: stock/models.py:1983
msgid "Test result"
msgstr ""
@@ -5806,7 +5879,7 @@ msgstr ""
msgid "Enter serial numbers for new items"
msgstr ""
-#: stock/serializers.py:326 stock/serializers.py:732 stock/serializers.py:973
+#: stock/serializers.py:326 stock/serializers.py:789 stock/serializers.py:1030
msgid "Destination stock location"
msgstr ""
@@ -5818,63 +5891,79 @@ msgstr ""
msgid "Serial numbers cannot be assigned to this part"
msgstr ""
-#: stock/serializers.py:589
+#: stock/serializers.py:363 stock/views.py:1108
+msgid "Serial numbers already exist"
+msgstr "Seri numaraları zaten mevcut"
+
+#: stock/serializers.py:405
+msgid "Select stock item to install"
+msgstr ""
+
+#: stock/serializers.py:421
+msgid "Stock item is unavailable"
+msgstr ""
+
+#: stock/serializers.py:428
+msgid "Selected part is not in the Bill of Materials"
+msgstr ""
+
+#: stock/serializers.py:646
msgid "Part must be salable"
msgstr ""
-#: stock/serializers.py:593
+#: stock/serializers.py:650
msgid "Item is allocated to a sales order"
msgstr ""
-#: stock/serializers.py:597
+#: stock/serializers.py:654
msgid "Item is allocated to a build order"
msgstr ""
-#: stock/serializers.py:627
+#: stock/serializers.py:684
msgid "Customer to assign stock items"
msgstr ""
-#: stock/serializers.py:633
+#: stock/serializers.py:690
msgid "Selected company is not a customer"
msgstr ""
-#: stock/serializers.py:641
+#: stock/serializers.py:698
msgid "Stock assignment notes"
msgstr ""
-#: stock/serializers.py:651 stock/serializers.py:881
+#: stock/serializers.py:708 stock/serializers.py:938
msgid "A list of stock items must be provided"
msgstr ""
-#: stock/serializers.py:739
+#: stock/serializers.py:796
msgid "Stock merging notes"
msgstr ""
-#: stock/serializers.py:744
+#: stock/serializers.py:801
msgid "Allow mismatched suppliers"
msgstr ""
-#: stock/serializers.py:745
+#: stock/serializers.py:802
msgid "Allow stock items with different supplier parts to be merged"
msgstr ""
-#: stock/serializers.py:750
+#: stock/serializers.py:807
msgid "Allow mismatched status"
msgstr ""
-#: stock/serializers.py:751
+#: stock/serializers.py:808
msgid "Allow stock items with different status codes to be merged"
msgstr ""
-#: stock/serializers.py:761
+#: stock/serializers.py:818
msgid "At least two stock items must be provided"
msgstr ""
-#: stock/serializers.py:843
+#: stock/serializers.py:900
msgid "StockItem primary key value"
msgstr ""
-#: stock/serializers.py:871
+#: stock/serializers.py:928
msgid "Stock transaction notes"
msgstr ""
@@ -5919,22 +6008,14 @@ msgstr ""
msgid "Installed Stock Items"
msgstr ""
-#: stock/templates/stock/item.html:154 stock/views.py:482
+#: stock/templates/stock/item.html:154 templates/js/translated/stock.js:3018
msgid "Install Stock Item"
msgstr ""
-#: stock/templates/stock/item.html:309 stock/templates/stock/item.html:334
+#: stock/templates/stock/item.html:304 templates/js/translated/stock.js:1480
msgid "Add Test Result"
msgstr ""
-#: stock/templates/stock/item.html:354
-msgid "Edit Test Result"
-msgstr ""
-
-#: stock/templates/stock/item.html:368
-msgid "Delete Test Result"
-msgstr ""
-
#: stock/templates/stock/item_base.html:42
#: templates/js/translated/barcode.js:330
#: templates/js/translated/barcode.js:335
@@ -5995,129 +6076,129 @@ msgstr ""
msgid "Uninstall"
msgstr ""
-#: stock/templates/stock/item_base.html:101
+#: stock/templates/stock/item_base.html:102
msgid "Install stock item"
msgstr ""
-#: stock/templates/stock/item_base.html:101
+#: stock/templates/stock/item_base.html:102
msgid "Install"
msgstr ""
-#: stock/templates/stock/item_base.html:115
+#: stock/templates/stock/item_base.html:117
msgid "Convert to variant"
msgstr "Çeşide çevir"
-#: stock/templates/stock/item_base.html:118
+#: stock/templates/stock/item_base.html:120
msgid "Duplicate stock item"
msgstr ""
-#: stock/templates/stock/item_base.html:120
+#: stock/templates/stock/item_base.html:122
msgid "Edit stock item"
msgstr ""
-#: stock/templates/stock/item_base.html:123
+#: stock/templates/stock/item_base.html:125
msgid "Delete stock item"
msgstr ""
-#: stock/templates/stock/item_base.html:161
+#: stock/templates/stock/item_base.html:163
msgid "previous page"
msgstr ""
-#: stock/templates/stock/item_base.html:161
+#: stock/templates/stock/item_base.html:163
msgid "Navigate to previous serial number"
msgstr ""
-#: stock/templates/stock/item_base.html:170
+#: stock/templates/stock/item_base.html:172
msgid "next page"
msgstr ""
-#: stock/templates/stock/item_base.html:170
+#: stock/templates/stock/item_base.html:172
msgid "Navigate to next serial number"
msgstr ""
-#: stock/templates/stock/item_base.html:197
+#: stock/templates/stock/item_base.html:199
#, 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:197
+#: stock/templates/stock/item_base.html:199
#: templates/js/translated/table_filters.js:252
msgid "Expired"
msgstr ""
-#: stock/templates/stock/item_base.html:199
+#: stock/templates/stock/item_base.html:201
#, 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:199
+#: stock/templates/stock/item_base.html:201
#: templates/js/translated/table_filters.js:258
msgid "Stale"
msgstr ""
-#: stock/templates/stock/item_base.html:206
-#: templates/js/translated/stock.js:1722
+#: stock/templates/stock/item_base.html:208
+#: templates/js/translated/stock.js:1846
msgid "Last Updated"
msgstr ""
-#: stock/templates/stock/item_base.html:211
+#: stock/templates/stock/item_base.html:213
msgid "Last Stocktake"
msgstr ""
-#: stock/templates/stock/item_base.html:215
+#: stock/templates/stock/item_base.html:217
msgid "No stocktake performed"
msgstr ""
-#: stock/templates/stock/item_base.html:233
+#: stock/templates/stock/item_base.html:235
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:240
+#: stock/templates/stock/item_base.html:242
msgid "This stock item is in production and cannot be edited."
msgstr ""
-#: stock/templates/stock/item_base.html:241
+#: stock/templates/stock/item_base.html:243
msgid "Edit the stock item from the build view."
msgstr ""
-#: stock/templates/stock/item_base.html:254
+#: stock/templates/stock/item_base.html:256
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:262
+#: stock/templates/stock/item_base.html:264
msgid "This stock item is allocated to Sales Order"
msgstr ""
-#: stock/templates/stock/item_base.html:270
+#: stock/templates/stock/item_base.html:272
msgid "This stock item is allocated to Build Order"
msgstr ""
-#: stock/templates/stock/item_base.html:276
+#: stock/templates/stock/item_base.html:278
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:317
-#: templates/js/translated/build.js:1095
+#: stock/templates/stock/item_base.html:319
+#: templates/js/translated/build.js:1317
msgid "No location set"
msgstr "Konum ayarlanmadı"
-#: stock/templates/stock/item_base.html:324
+#: stock/templates/stock/item_base.html:326
msgid "Barcode Identifier"
msgstr ""
-#: stock/templates/stock/item_base.html:366
+#: stock/templates/stock/item_base.html:368
msgid "Parent Item"
msgstr ""
-#: stock/templates/stock/item_base.html:384
+#: stock/templates/stock/item_base.html:386
msgid "No manufacturer set"
msgstr ""
-#: stock/templates/stock/item_base.html:409
+#: stock/templates/stock/item_base.html:411
msgid "Tests"
msgstr ""
-#: stock/templates/stock/item_base.html:499
+#: stock/templates/stock/item_base.html:492
msgid "Edit Stock Status"
msgstr ""
@@ -6130,39 +6211,6 @@ msgstr ""
msgid "This will remove %(qty)s units of %(full_name)s from stock."
msgstr ""
-#: stock/templates/stock/item_install.html:8
-msgid "Install another Stock Item into this item."
-msgstr ""
-
-#: stock/templates/stock/item_install.html:11
-#: stock/templates/stock/item_install.html:24
-msgid "Stock items can only be installed if they meet the following criteria"
-msgstr ""
-
-#: stock/templates/stock/item_install.html:14
-msgid "The Stock Item links to a Part which is in the BOM for this Stock Item"
-msgstr ""
-
-#: stock/templates/stock/item_install.html:15
-msgid "The Stock Item is currently in stock"
-msgstr ""
-
-#: stock/templates/stock/item_install.html:16
-msgid "The Stock Item is serialized and does not belong to another item"
-msgstr ""
-
-#: stock/templates/stock/item_install.html:21
-msgid "Install this Stock Item in another stock item."
-msgstr ""
-
-#: stock/templates/stock/item_install.html:27
-msgid "The part associated to this Stock Item belongs to another part's BOM"
-msgstr ""
-
-#: stock/templates/stock/item_install.html:28
-msgid "This Stock Item is serialized and does not belong to another item"
-msgstr ""
-
#: stock/templates/stock/item_serialize.html:5
msgid "Create serialized items from this stock item."
msgstr "Bu stok kalemi için seri numaralandırılmış ögeler oluştur."
@@ -6247,7 +6295,7 @@ msgstr ""
msgid "The following stock items will be uninstalled"
msgstr ""
-#: stock/templates/stock/stockitem_convert.html:7 stock/views.py:879
+#: stock/templates/stock/stockitem_convert.html:7 stock/views.py:730
msgid "Convert Stock Item"
msgstr "Stok Kalemine Dönüştür"
@@ -6268,11 +6316,11 @@ msgstr "Bu işlem kolayca geri alınamaz"
msgid "Are you sure you want to delete this stock tracking entry?"
msgstr ""
-#: stock/views.py:162 templates/js/translated/stock.js:139
+#: stock/views.py:162 templates/js/translated/stock.js:140
msgid "Edit Stock Location"
msgstr "Stok konumunu düzenle"
-#: stock/views.py:269 stock/views.py:858 stock/views.py:984 stock/views.py:1266
+#: stock/views.py:269 stock/views.py:709 stock/views.py:835 stock/views.py:1117
msgid "Owner is required (ownership control is enabled)"
msgstr "Sahip gerekli (sahip kontrolü etkinleştirildi)"
@@ -6300,59 +6348,63 @@ msgstr ""
msgid "Confirm test data deletion"
msgstr ""
+#: stock/views.py:352
+msgid "Check the confirmation box"
+msgstr "Onay kutusunu işaretleyin"
+
#: stock/views.py:456
msgid "Stock Item QR Code"
msgstr ""
-#: stock/views.py:630
+#: stock/views.py:481
msgid "Uninstall Stock Items"
msgstr ""
-#: stock/views.py:727 templates/js/translated/stock.js:1074
+#: stock/views.py:578 templates/js/translated/stock.js:1075
msgid "Confirm stock adjustment"
msgstr "Stok ayarlamasını onayla"
-#: stock/views.py:738
+#: stock/views.py:589
msgid "Uninstalled stock items"
msgstr ""
-#: stock/views.py:760 templates/js/translated/stock.js:332
+#: stock/views.py:611 templates/js/translated/stock.js:333
msgid "Edit Stock Item"
msgstr ""
-#: stock/views.py:910
+#: stock/views.py:761
msgid "Create new Stock Location"
msgstr "Yeni Stok konumu oluştur"
-#: stock/views.py:1011
+#: stock/views.py:862
msgid "Create new Stock Item"
msgstr ""
-#: stock/views.py:1153 templates/js/translated/stock.js:312
+#: stock/views.py:1004 templates/js/translated/stock.js:313
msgid "Duplicate Stock Item"
msgstr ""
-#: stock/views.py:1235
+#: stock/views.py:1086
msgid "Quantity cannot be negative"
msgstr ""
-#: stock/views.py:1335
+#: stock/views.py:1186
msgid "Delete Stock Location"
msgstr "Stok Konumunu Sil"
-#: stock/views.py:1348
+#: stock/views.py:1199
msgid "Delete Stock Item"
msgstr ""
-#: stock/views.py:1359
+#: stock/views.py:1210
msgid "Delete Stock Tracking Entry"
msgstr ""
-#: stock/views.py:1366
+#: stock/views.py:1217
msgid "Edit Stock Tracking Entry"
msgstr ""
-#: stock/views.py:1375
+#: stock/views.py:1226
msgid "Add Stock Tracking Entry"
msgstr ""
@@ -6527,15 +6579,15 @@ msgstr ""
msgid "Part Settings"
msgstr ""
-#: templates/InvenTree/settings/part.html:43
+#: templates/InvenTree/settings/part.html:44
msgid "Part Import"
msgstr ""
-#: templates/InvenTree/settings/part.html:47
+#: templates/InvenTree/settings/part.html:48
msgid "Import Part"
msgstr ""
-#: templates/InvenTree/settings/part.html:61
+#: templates/InvenTree/settings/part.html:62
msgid "Part Parameter Templates"
msgstr "Parça Parametre Şablonu"
@@ -6663,45 +6715,45 @@ msgstr ""
msgid "Report Settings"
msgstr ""
-#: templates/InvenTree/settings/setting.html:30
+#: templates/InvenTree/settings/setting.html:33
msgid "No value set"
msgstr ""
-#: templates/InvenTree/settings/setting.html:41
+#: templates/InvenTree/settings/setting.html:38
msgid "Edit setting"
msgstr ""
-#: templates/InvenTree/settings/settings.html:78
+#: templates/InvenTree/settings/settings.html:115
msgid "Edit Plugin Setting"
msgstr ""
-#: templates/InvenTree/settings/settings.html:80
+#: templates/InvenTree/settings/settings.html:117
msgid "Edit Global Setting"
msgstr ""
-#: templates/InvenTree/settings/settings.html:82
+#: templates/InvenTree/settings/settings.html:119
msgid "Edit User Setting"
msgstr ""
-#: templates/InvenTree/settings/settings.html:171
+#: templates/InvenTree/settings/settings.html:208
msgid "No category parameter templates found"
msgstr "Kategori parametre şablonu bulunamadı"
-#: templates/InvenTree/settings/settings.html:193
-#: templates/InvenTree/settings/settings.html:292
+#: templates/InvenTree/settings/settings.html:230
+#: templates/InvenTree/settings/settings.html:329
msgid "Edit Template"
msgstr "Şablonu Düzenle"
-#: templates/InvenTree/settings/settings.html:194
-#: templates/InvenTree/settings/settings.html:293
+#: templates/InvenTree/settings/settings.html:231
+#: templates/InvenTree/settings/settings.html:330
msgid "Delete Template"
msgstr "Şablonu Sil"
-#: templates/InvenTree/settings/settings.html:272
+#: templates/InvenTree/settings/settings.html:309
msgid "No part parameter templates found"
msgstr "Parça parametre şablonu bulunamadı"
-#: templates/InvenTree/settings/settings.html:276
+#: templates/InvenTree/settings/settings.html:313
msgid "ID"
msgstr ""
@@ -6996,10 +7048,11 @@ msgid "InvenTree Version Information"
msgstr "InvenTree Sürüm Bilgisi"
#: templates/about.html:11 templates/about.html:105
-#: templates/js/translated/bom.js:407 templates/js/translated/modals.js:53
-#: templates/js/translated/modals.js:584 templates/js/translated/modals.js:678
-#: templates/js/translated/modals.js:983 templates/modals.html:15
-#: templates/modals.html:27 templates/modals.html:39 templates/modals.html:50
+#: templates/js/translated/bom.js:132 templates/js/translated/bom.js:620
+#: templates/js/translated/modals.js:53 templates/js/translated/modals.js:584
+#: templates/js/translated/modals.js:678 templates/js/translated/modals.js:986
+#: templates/modals.html:15 templates/modals.html:27 templates/modals.html:39
+#: templates/modals.html:50
msgid "Close"
msgstr "Kapat"
@@ -7275,14 +7328,14 @@ msgid "The following parts are low on required stock"
msgstr ""
#: templates/email/build_order_required_stock.html:18
-#: templates/js/translated/bom.js:1117
+#: templates/js/translated/bom.js:1335
msgid "Required Quantity"
msgstr ""
#: templates/email/build_order_required_stock.html:19
#: templates/email/low_stock_notification.html:18
-#: templates/js/translated/bom.js:591 templates/js/translated/build.js:1189
-#: templates/js/translated/build.js:1810
+#: templates/js/translated/bom.js:804 templates/js/translated/build.js:1411
+#: templates/js/translated/build.js:2048
#: templates/js/translated/table_filters.js:178
msgid "Available"
msgstr "Mevcut"
@@ -7325,11 +7378,11 @@ msgstr ""
msgid "Remote image must not exceed maximum allowable file size"
msgstr ""
-#: templates/js/translated/api.js:185 templates/js/translated/modals.js:1053
+#: templates/js/translated/api.js:185 templates/js/translated/modals.js:1056
msgid "No Response"
msgstr "Cevap Yok"
-#: templates/js/translated/api.js:186 templates/js/translated/modals.js:1054
+#: templates/js/translated/api.js:186 templates/js/translated/modals.js:1057
msgid "No response from the InvenTree server"
msgstr ""
@@ -7341,27 +7394,27 @@ msgstr ""
msgid "API request returned error code 400"
msgstr ""
-#: templates/js/translated/api.js:197 templates/js/translated/modals.js:1063
+#: templates/js/translated/api.js:197 templates/js/translated/modals.js:1066
msgid "Error 401: Not Authenticated"
msgstr ""
-#: templates/js/translated/api.js:198 templates/js/translated/modals.js:1064
+#: templates/js/translated/api.js:198 templates/js/translated/modals.js:1067
msgid "Authentication credentials not supplied"
msgstr ""
-#: templates/js/translated/api.js:202 templates/js/translated/modals.js:1068
+#: templates/js/translated/api.js:202 templates/js/translated/modals.js:1071
msgid "Error 403: Permission Denied"
msgstr ""
-#: templates/js/translated/api.js:203 templates/js/translated/modals.js:1069
+#: templates/js/translated/api.js:203 templates/js/translated/modals.js:1072
msgid "You do not have the required permissions to access this function"
msgstr "Bu fonksiyona erişmek için gerekli izinlere sahip değilsiniz"
-#: templates/js/translated/api.js:207 templates/js/translated/modals.js:1073
+#: templates/js/translated/api.js:207 templates/js/translated/modals.js:1076
msgid "Error 404: Resource Not Found"
msgstr ""
-#: templates/js/translated/api.js:208 templates/js/translated/modals.js:1074
+#: templates/js/translated/api.js:208 templates/js/translated/modals.js:1077
msgid "The requested resource could not be located on the server"
msgstr ""
@@ -7373,11 +7426,11 @@ msgstr ""
msgid "HTTP method not allowed at URL"
msgstr ""
-#: templates/js/translated/api.js:217 templates/js/translated/modals.js:1078
+#: templates/js/translated/api.js:217 templates/js/translated/modals.js:1081
msgid "Error 408: Timeout"
msgstr ""
-#: templates/js/translated/api.js:218 templates/js/translated/modals.js:1079
+#: templates/js/translated/api.js:218 templates/js/translated/modals.js:1082
msgid "Connection timeout while requesting data from server"
msgstr ""
@@ -7446,7 +7499,7 @@ msgid "Unknown response from server"
msgstr ""
#: templates/js/translated/barcode.js:140
-#: templates/js/translated/modals.js:1043
+#: templates/js/translated/modals.js:1046
msgid "Invalid server response"
msgstr ""
@@ -7474,7 +7527,7 @@ msgstr ""
msgid "Unlink"
msgstr ""
-#: templates/js/translated/barcode.js:397 templates/js/translated/stock.js:1026
+#: templates/js/translated/barcode.js:397 templates/js/translated/stock.js:1027
msgid "Remove stock item"
msgstr ""
@@ -7516,327 +7569,369 @@ 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:36
+#: templates/js/translated/bom.js:75
+msgid "Display row data"
+msgstr ""
+
+#: templates/js/translated/bom.js:131
+msgid "Row Data"
+msgstr ""
+
+#: templates/js/translated/bom.js:249
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:518
+#: templates/js/translated/bom.js:252 templates/js/translated/bom.js:286
+#: templates/js/translated/order.js:369 templates/js/translated/stock.js:519
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:519
+#: templates/js/translated/bom.js:253 templates/js/translated/bom.js:287
+#: templates/js/translated/order.js:370 templates/js/translated/stock.js:520
msgid "Select file format"
msgstr ""
-#: templates/js/translated/bom.js:81
+#: templates/js/translated/bom.js:294
msgid "Cascading"
msgstr ""
-#: templates/js/translated/bom.js:82
+#: templates/js/translated/bom.js:295
msgid "Download cascading / multi-level BOM"
msgstr ""
-#: templates/js/translated/bom.js:87
+#: templates/js/translated/bom.js:300
msgid "Levels"
msgstr "Seviyeler"
-#: templates/js/translated/bom.js:88
+#: templates/js/translated/bom.js:301
msgid "Select maximum number of BOM levels to export (0 = all levels)"
msgstr ""
-#: templates/js/translated/bom.js:94
+#: templates/js/translated/bom.js:307
msgid "Include Parameter Data"
msgstr ""
-#: templates/js/translated/bom.js:95
+#: templates/js/translated/bom.js:308
msgid "Include part parameter data in exported BOM"
msgstr ""
-#: templates/js/translated/bom.js:100
+#: templates/js/translated/bom.js:313
msgid "Include Stock Data"
msgstr ""
-#: templates/js/translated/bom.js:101
+#: templates/js/translated/bom.js:314
msgid "Include part stock data in exported BOM"
msgstr ""
-#: templates/js/translated/bom.js:106
+#: templates/js/translated/bom.js:319
msgid "Include Manufacturer Data"
msgstr ""
-#: templates/js/translated/bom.js:107
+#: templates/js/translated/bom.js:320
msgid "Include part manufacturer data in exported BOM"
msgstr ""
-#: templates/js/translated/bom.js:112
+#: templates/js/translated/bom.js:325
msgid "Include Supplier Data"
msgstr ""
-#: templates/js/translated/bom.js:113
+#: templates/js/translated/bom.js:326
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
+#: templates/js/translated/bom.js:509
msgid "Remove substitute part"
msgstr ""
-#: templates/js/translated/bom.js:352
+#: templates/js/translated/bom.js:565
msgid "Select and add a new substitute part using the input below"
msgstr ""
-#: templates/js/translated/bom.js:363
+#: templates/js/translated/bom.js:576
msgid "Are you sure you wish to remove this substitute part link?"
msgstr ""
-#: templates/js/translated/bom.js:369
+#: templates/js/translated/bom.js:582
msgid "Remove Substitute Part"
msgstr ""
-#: templates/js/translated/bom.js:408
+#: templates/js/translated/bom.js:621
msgid "Add Substitute"
msgstr ""
-#: templates/js/translated/bom.js:409
+#: templates/js/translated/bom.js:622
msgid "Edit BOM Item Substitutes"
msgstr ""
-#: templates/js/translated/bom.js:528
+#: templates/js/translated/bom.js:741
msgid "Substitutes Available"
msgstr ""
-#: templates/js/translated/bom.js:532 templates/js/translated/build.js:1171
+#: templates/js/translated/bom.js:745 templates/js/translated/build.js:1393
msgid "Variant stock allowed"
msgstr ""
-#: templates/js/translated/bom.js:537
+#: templates/js/translated/bom.js:750
msgid "Open subassembly"
msgstr ""
-#: templates/js/translated/bom.js:609
+#: templates/js/translated/bom.js:822
msgid "Substitutes"
msgstr ""
-#: templates/js/translated/bom.js:624
+#: templates/js/translated/bom.js:837
msgid "Purchase Price Range"
msgstr ""
-#: templates/js/translated/bom.js:631
+#: templates/js/translated/bom.js:844
msgid "Purchase Price Average"
msgstr ""
-#: templates/js/translated/bom.js:680 templates/js/translated/bom.js:769
+#: templates/js/translated/bom.js:893 templates/js/translated/bom.js:982
msgid "View BOM"
msgstr ""
-#: templates/js/translated/bom.js:740
+#: templates/js/translated/bom.js:953
msgid "Validate BOM Item"
msgstr ""
-#: templates/js/translated/bom.js:742
+#: templates/js/translated/bom.js:955
msgid "This line has been validated"
msgstr ""
-#: templates/js/translated/bom.js:744
+#: templates/js/translated/bom.js:957
msgid "Edit substitute parts"
msgstr ""
-#: templates/js/translated/bom.js:746 templates/js/translated/bom.js:920
+#: templates/js/translated/bom.js:959 templates/js/translated/bom.js:1138
msgid "Edit BOM Item"
msgstr ""
-#: templates/js/translated/bom.js:748 templates/js/translated/bom.js:903
+#: templates/js/translated/bom.js:961 templates/js/translated/bom.js:1121
msgid "Delete BOM Item"
msgstr ""
-#: templates/js/translated/bom.js:842 templates/js/translated/build.js:915
+#: templates/js/translated/bom.js:1060 templates/js/translated/build.js:1137
msgid "No BOM items found"
msgstr ""
-#: templates/js/translated/bom.js:898
+#: templates/js/translated/bom.js:1116
msgid "Are you sure you want to delete this BOM item?"
msgstr ""
-#: templates/js/translated/bom.js:1100 templates/js/translated/build.js:1155
+#: templates/js/translated/bom.js:1318 templates/js/translated/build.js:1377
msgid "Required Part"
msgstr "Gerekli Parça"
-#: templates/js/translated/bom.js:1122
+#: templates/js/translated/bom.js:1340
msgid "Inherited from parent BOM"
msgstr ""
-#: templates/js/translated/build.js:84
+#: templates/js/translated/build.js:85
msgid "Edit Build Order"
msgstr ""
-#: templates/js/translated/build.js:118
+#: templates/js/translated/build.js:119
msgid "Create Build Order"
msgstr ""
-#: templates/js/translated/build.js:139
+#: templates/js/translated/build.js:140
msgid "Build order is ready to be completed"
msgstr ""
-#: templates/js/translated/build.js:144
+#: templates/js/translated/build.js:145
msgid "Build Order is incomplete"
msgstr "Yapım işi emri eksik"
-#: templates/js/translated/build.js:172
+#: templates/js/translated/build.js:173
msgid "Complete Build Order"
msgstr "Tamamlanmış Yapım İşi Emri"
-#: templates/js/translated/build.js:193
+#: templates/js/translated/build.js:214 templates/js/translated/stock.js:93
+#: templates/js/translated/stock.js:182
+msgid "Next available serial number"
+msgstr ""
+
+#: templates/js/translated/build.js:216 templates/js/translated/stock.js:95
+#: templates/js/translated/stock.js:184
+msgid "Latest serial number"
+msgstr ""
+
+#: templates/js/translated/build.js:225
+msgid "The Bill of Materials contains trackable parts"
+msgstr "Bu Malzeme Listesi takip edilebilir parçalar içeriyor"
+
+#: templates/js/translated/build.js:226
+msgid "Build outputs must be generated individually"
+msgstr ""
+
+#: templates/js/translated/build.js:234
+msgid "Trackable parts can have serial numbers specified"
+msgstr "Takip edilebilir parçaların seri numaraları belirtilmiş olmalı"
+
+#: templates/js/translated/build.js:235
+msgid "Enter serial numbers to generate multiple single build outputs"
+msgstr "Birden çok tek yapım işi çıktısı oluşturmak için seri numaraları girin"
+
+#: templates/js/translated/build.js:242
+msgid "Create Build Output"
+msgstr "Yapım İşi Çıktısı Oluştur"
+
+#: templates/js/translated/build.js:273
msgid "Allocate stock items to this build output"
msgstr ""
-#: templates/js/translated/build.js:204
+#: templates/js/translated/build.js:284
msgid "Unallocate stock from build output"
msgstr ""
-#: templates/js/translated/build.js:213
+#: templates/js/translated/build.js:293
msgid "Complete build output"
msgstr ""
-#: templates/js/translated/build.js:221
+#: templates/js/translated/build.js:301
msgid "Delete build output"
msgstr ""
-#: templates/js/translated/build.js:244
+#: templates/js/translated/build.js:324
msgid "Are you sure you wish to unallocate stock items from this build?"
msgstr ""
-#: templates/js/translated/build.js:262
+#: templates/js/translated/build.js:342
msgid "Unallocate Stock Items"
msgstr ""
-#: templates/js/translated/build.js:280
+#: templates/js/translated/build.js:360 templates/js/translated/build.js:508
msgid "Select Build Outputs"
msgstr ""
-#: templates/js/translated/build.js:281
+#: templates/js/translated/build.js:361 templates/js/translated/build.js:509
msgid "At least one build output must be selected"
msgstr ""
-#: templates/js/translated/build.js:335
+#: templates/js/translated/build.js:415 templates/js/translated/build.js:563
msgid "Output"
msgstr ""
-#: templates/js/translated/build.js:351
+#: templates/js/translated/build.js:431
msgid "Complete Build Outputs"
msgstr ""
-#: templates/js/translated/build.js:446
+#: templates/js/translated/build.js:576
+msgid "Delete Build Outputs"
+msgstr ""
+
+#: templates/js/translated/build.js:665
msgid "No build order allocations found"
msgstr ""
-#: templates/js/translated/build.js:484 templates/js/translated/order.js:1848
+#: templates/js/translated/build.js:703 templates/js/translated/order.js:1848
msgid "Location not specified"
msgstr ""
-#: templates/js/translated/build.js:663
+#: templates/js/translated/build.js:885
msgid "No active build outputs found"
msgstr ""
-#: templates/js/translated/build.js:1112 templates/js/translated/build.js:1821
+#: templates/js/translated/build.js:1334 templates/js/translated/build.js:2059
#: templates/js/translated/order.js:1982
msgid "Edit stock allocation"
msgstr "Stok tahsisini düzenle"
-#: templates/js/translated/build.js:1114 templates/js/translated/build.js:1822
+#: templates/js/translated/build.js:1336 templates/js/translated/build.js:2060
#: templates/js/translated/order.js:1983
msgid "Delete stock allocation"
msgstr "Stok tahsisini sil"
-#: templates/js/translated/build.js:1132
+#: templates/js/translated/build.js:1354
msgid "Edit Allocation"
msgstr ""
-#: templates/js/translated/build.js:1142
+#: templates/js/translated/build.js:1364
msgid "Remove Allocation"
msgstr ""
-#: templates/js/translated/build.js:1167
+#: templates/js/translated/build.js:1389
msgid "Substitute parts available"
msgstr ""
-#: templates/js/translated/build.js:1184
+#: templates/js/translated/build.js:1406
msgid "Quantity Per"
msgstr ""
-#: templates/js/translated/build.js:1194 templates/js/translated/build.js:1420
-#: templates/js/translated/build.js:1817 templates/js/translated/order.js:2227
+#: templates/js/translated/build.js:1416 templates/js/translated/build.js:1656
+#: templates/js/translated/build.js:2055 templates/js/translated/order.js:2227
msgid "Allocated"
msgstr ""
-#: templates/js/translated/build.js:1250 templates/js/translated/order.js:2307
+#: templates/js/translated/build.js:1472 templates/js/translated/order.js:2307
msgid "Build stock"
msgstr ""
-#: templates/js/translated/build.js:1254 templates/stock_table.html:53
+#: templates/js/translated/build.js:1476 templates/stock_table.html:53
msgid "Order stock"
msgstr ""
-#: templates/js/translated/build.js:1257 templates/js/translated/order.js:2300
+#: templates/js/translated/build.js:1479 templates/js/translated/order.js:2300
msgid "Allocate stock"
msgstr ""
-#: templates/js/translated/build.js:1322 templates/js/translated/order.js:1499
+#: templates/js/translated/build.js:1558 templates/js/translated/order.js:1499
msgid "Specify stock allocation quantity"
msgstr ""
-#: templates/js/translated/build.js:1393 templates/js/translated/label.js:134
+#: templates/js/translated/build.js:1629 templates/js/translated/label.js:134
#: templates/js/translated/order.js:1550 templates/js/translated/report.js:225
msgid "Select Parts"
msgstr "Parçaları Seçin"
-#: templates/js/translated/build.js:1394 templates/js/translated/order.js:1551
+#: templates/js/translated/build.js:1630 templates/js/translated/order.js:1551
msgid "You must select at least one part to allocate"
msgstr ""
-#: templates/js/translated/build.js:1408 templates/js/translated/order.js:1565
+#: templates/js/translated/build.js:1644 templates/js/translated/order.js:1565
msgid "Select source location (leave blank to take from all locations)"
msgstr ""
-#: templates/js/translated/build.js:1437 templates/js/translated/order.js:1600
+#: templates/js/translated/build.js:1673 templates/js/translated/order.js:1600
msgid "Confirm stock allocation"
msgstr "Stok tahsisini onayla"
-#: templates/js/translated/build.js:1438
+#: templates/js/translated/build.js:1674
msgid "Allocate Stock Items to Build Order"
msgstr ""
-#: templates/js/translated/build.js:1449 templates/js/translated/order.js:1613
+#: templates/js/translated/build.js:1685 templates/js/translated/order.js:1613
msgid "No matching stock locations"
msgstr ""
-#: templates/js/translated/build.js:1519 templates/js/translated/order.js:1690
+#: templates/js/translated/build.js:1757 templates/js/translated/order.js:1690
msgid "No matching stock items"
msgstr ""
-#: templates/js/translated/build.js:1637
+#: templates/js/translated/build.js:1875
msgid "No builds matching query"
msgstr ""
-#: templates/js/translated/build.js:1654 templates/js/translated/part.js:1213
-#: templates/js/translated/part.js:1624 templates/js/translated/stock.js:1520
-#: templates/js/translated/stock.js:2479
+#: templates/js/translated/build.js:1892 templates/js/translated/part.js:1213
+#: templates/js/translated/part.js:1624 templates/js/translated/stock.js:1644
+#: templates/js/translated/stock.js:2603
msgid "Select"
msgstr ""
-#: templates/js/translated/build.js:1674
+#: templates/js/translated/build.js:1912
msgid "Build order is overdue"
msgstr ""
-#: templates/js/translated/build.js:1735 templates/js/translated/stock.js:2698
+#: templates/js/translated/build.js:1973 templates/js/translated/stock.js:2822
msgid "No user information"
msgstr ""
-#: templates/js/translated/build.js:1747
+#: templates/js/translated/build.js:1985
msgid "No information"
msgstr ""
-#: templates/js/translated/build.js:1798
+#: templates/js/translated/build.js:2036
msgid "No parts allocated for"
msgstr ""
@@ -7966,48 +8061,60 @@ msgstr ""
msgid "Create filter"
msgstr ""
-#: templates/js/translated/forms.js:350 templates/js/translated/forms.js:365
-#: templates/js/translated/forms.js:379 templates/js/translated/forms.js:393
+#: templates/js/translated/forms.js:351 templates/js/translated/forms.js:366
+#: templates/js/translated/forms.js:380 templates/js/translated/forms.js:394
msgid "Action Prohibited"
msgstr ""
-#: templates/js/translated/forms.js:352
+#: templates/js/translated/forms.js:353
msgid "Create operation not allowed"
msgstr ""
-#: templates/js/translated/forms.js:367
+#: templates/js/translated/forms.js:368
msgid "Update operation not allowed"
msgstr ""
-#: templates/js/translated/forms.js:381
+#: templates/js/translated/forms.js:382
msgid "Delete operation not allowed"
msgstr ""
-#: templates/js/translated/forms.js:395
+#: templates/js/translated/forms.js:396
msgid "View operation not allowed"
msgstr ""
-#: templates/js/translated/forms.js:680
+#: templates/js/translated/forms.js:681
msgid "Enter a valid number"
msgstr ""
-#: templates/js/translated/forms.js:1082 templates/modals.html:19
+#: templates/js/translated/forms.js:1129 templates/modals.html:19
#: templates/modals.html:43
msgid "Form errors exist"
msgstr ""
-#: templates/js/translated/forms.js:1487
+#: templates/js/translated/forms.js:1558
msgid "No results found"
msgstr ""
-#: templates/js/translated/forms.js:1691
+#: templates/js/translated/forms.js:1768
msgid "Searching"
msgstr ""
-#: templates/js/translated/forms.js:1930
+#: templates/js/translated/forms.js:2013
msgid "Clear input"
msgstr ""
+#: templates/js/translated/forms.js:2479
+msgid "File Column"
+msgstr ""
+
+#: templates/js/translated/forms.js:2479
+msgid "Field Name"
+msgstr ""
+
+#: templates/js/translated/forms.js:2491
+msgid "Select Columns"
+msgstr ""
+
#: templates/js/translated/helpers.js:19
msgid "YES"
msgstr ""
@@ -8017,7 +8124,7 @@ msgid "NO"
msgstr ""
#: templates/js/translated/label.js:29 templates/js/translated/report.js:118
-#: templates/js/translated/stock.js:1050
+#: templates/js/translated/stock.js:1051
msgid "Select Stock Items"
msgstr ""
@@ -8072,7 +8179,7 @@ msgid "Cancel"
msgstr ""
#: templates/js/translated/modals.js:77 templates/js/translated/modals.js:119
-#: templates/js/translated/modals.js:677 templates/js/translated/modals.js:982
+#: templates/js/translated/modals.js:677 templates/js/translated/modals.js:985
#: templates/modals.html:28 templates/modals.html:51
msgid "Submit"
msgstr ""
@@ -8097,31 +8204,31 @@ msgstr ""
msgid "Loading Data"
msgstr ""
-#: templates/js/translated/modals.js:934
+#: templates/js/translated/modals.js:937
msgid "Invalid response from server"
msgstr ""
-#: templates/js/translated/modals.js:934
+#: templates/js/translated/modals.js:937
msgid "Form data missing from server response"
msgstr ""
-#: templates/js/translated/modals.js:946
+#: templates/js/translated/modals.js:949
msgid "Error posting form data"
msgstr ""
-#: templates/js/translated/modals.js:1043
+#: templates/js/translated/modals.js:1046
msgid "JSON response missing form data"
msgstr ""
-#: templates/js/translated/modals.js:1058
+#: templates/js/translated/modals.js:1061
msgid "Error 400: Bad Request"
msgstr ""
-#: templates/js/translated/modals.js:1059
+#: templates/js/translated/modals.js:1062
msgid "Server returned error code 400"
msgstr ""
-#: templates/js/translated/modals.js:1082
+#: templates/js/translated/modals.js:1085
msgid "Error requesting form data"
msgstr ""
@@ -8141,10 +8248,6 @@ msgstr ""
msgid "Build ID"
msgstr ""
-#: templates/js/translated/model_renderers.js:182
-msgid "Part ID"
-msgstr ""
-
#: templates/js/translated/model_renderers.js:249
#: templates/js/translated/model_renderers.js:270
msgid "Order ID"
@@ -8210,7 +8313,7 @@ msgstr ""
msgid "Quantity to receive"
msgstr ""
-#: templates/js/translated/order.js:520 templates/js/translated/stock.js:2131
+#: templates/js/translated/order.js:520 templates/js/translated/stock.js:2255
msgid "Stock Status"
msgstr ""
@@ -8344,7 +8447,7 @@ msgid "Delete Stock Allocation"
msgstr ""
#: templates/js/translated/order.js:1959 templates/js/translated/order.js:2048
-#: templates/js/translated/stock.js:1436
+#: templates/js/translated/stock.js:1560
msgid "Shipped to customer"
msgstr ""
@@ -8545,12 +8648,12 @@ msgid "No category"
msgstr ""
#: templates/js/translated/part.js:1296
-#: templates/js/translated/table_filters.js:430
+#: templates/js/translated/table_filters.js:425
msgid "Low stock"
msgstr ""
#: templates/js/translated/part.js:1387 templates/js/translated/part.js:1559
-#: templates/js/translated/stock.js:2440
+#: templates/js/translated/stock.js:2564
msgid "Display as list"
msgstr ""
@@ -8558,7 +8661,7 @@ msgstr ""
msgid "Display as grid"
msgstr ""
-#: templates/js/translated/part.js:1578 templates/js/translated/stock.js:2459
+#: templates/js/translated/part.js:1578 templates/js/translated/stock.js:2583
msgid "Display as tree"
msgstr ""
@@ -8566,7 +8669,7 @@ msgstr ""
msgid "Subscribed category"
msgstr ""
-#: templates/js/translated/part.js:1656 templates/js/translated/stock.js:2503
+#: templates/js/translated/part.js:1656 templates/js/translated/stock.js:2627
msgid "Path"
msgstr ""
@@ -8574,11 +8677,12 @@ msgstr ""
msgid "No test templates matching query"
msgstr "Sorgu ile eşleşen test şablonu bulunamadı"
-#: templates/js/translated/part.js:1751 templates/js/translated/stock.js:1242
+#: templates/js/translated/part.js:1751 templates/js/translated/stock.js:1271
msgid "Edit test result"
msgstr ""
-#: templates/js/translated/part.js:1752 templates/js/translated/stock.js:1243
+#: templates/js/translated/part.js:1752 templates/js/translated/stock.js:1272
+#: templates/js/translated/stock.js:1518
msgid "Delete test result"
msgstr ""
@@ -8687,347 +8791,375 @@ msgstr ""
msgid "Sales Order(s) must be selected before printing report"
msgstr ""
-#: templates/js/translated/stock.js:74
+#: templates/js/translated/stock.js:75
msgid "Serialize Stock Item"
msgstr ""
-#: templates/js/translated/stock.js:92 templates/js/translated/stock.js:181
-msgid "Next available serial number"
-msgstr ""
-
-#: templates/js/translated/stock.js:94 templates/js/translated/stock.js:183
-msgid "Latest serial number"
-msgstr ""
-
-#: templates/js/translated/stock.js:102
+#: templates/js/translated/stock.js:103
msgid "Confirm Stock Serialization"
msgstr ""
-#: templates/js/translated/stock.js:111
+#: templates/js/translated/stock.js:112
msgid "Parent stock location"
msgstr ""
-#: templates/js/translated/stock.js:154
+#: templates/js/translated/stock.js:155
msgid "New Stock Location"
msgstr ""
-#: templates/js/translated/stock.js:194
+#: templates/js/translated/stock.js:195
msgid "This part cannot be serialized"
msgstr ""
-#: templates/js/translated/stock.js:233
+#: templates/js/translated/stock.js:234
msgid "Enter initial quantity for this stock item"
msgstr ""
-#: templates/js/translated/stock.js:239
+#: templates/js/translated/stock.js:240
msgid "Enter serial numbers for new stock (or leave blank)"
msgstr ""
-#: templates/js/translated/stock.js:382
+#: templates/js/translated/stock.js:383
msgid "Created new stock item"
msgstr ""
-#: templates/js/translated/stock.js:395
+#: templates/js/translated/stock.js:396
msgid "Created multiple stock items"
msgstr ""
-#: templates/js/translated/stock.js:420
+#: templates/js/translated/stock.js:421
msgid "Find Serial Number"
msgstr ""
-#: templates/js/translated/stock.js:424 templates/js/translated/stock.js:425
+#: templates/js/translated/stock.js:425 templates/js/translated/stock.js:426
msgid "Enter serial number"
msgstr ""
-#: templates/js/translated/stock.js:441
+#: templates/js/translated/stock.js:442
msgid "Enter a serial number"
msgstr ""
-#: templates/js/translated/stock.js:461
+#: templates/js/translated/stock.js:462
msgid "No matching serial number"
msgstr ""
-#: templates/js/translated/stock.js:470
+#: templates/js/translated/stock.js:471
msgid "More than one matching result found"
msgstr ""
-#: templates/js/translated/stock.js:515
+#: templates/js/translated/stock.js:516
msgid "Export Stock"
msgstr ""
-#: templates/js/translated/stock.js:526
+#: templates/js/translated/stock.js:527
msgid "Include Sublocations"
msgstr ""
-#: templates/js/translated/stock.js:527
+#: templates/js/translated/stock.js:528
msgid "Include stock items in sublocations"
msgstr ""
-#: templates/js/translated/stock.js:636
+#: templates/js/translated/stock.js:637
msgid "Confirm stock assignment"
msgstr ""
-#: templates/js/translated/stock.js:637
+#: templates/js/translated/stock.js:638
msgid "Assign Stock to Customer"
msgstr ""
-#: templates/js/translated/stock.js:714
+#: templates/js/translated/stock.js:715
msgid "Warning: Merge operation cannot be reversed"
msgstr ""
-#: templates/js/translated/stock.js:715
+#: templates/js/translated/stock.js:716
msgid "Some information will be lost when merging stock items"
msgstr ""
-#: templates/js/translated/stock.js:717
+#: templates/js/translated/stock.js:718
msgid "Stock transaction history will be deleted for merged items"
msgstr ""
-#: templates/js/translated/stock.js:718
+#: templates/js/translated/stock.js:719
msgid "Supplier part information will be deleted for merged items"
msgstr ""
-#: templates/js/translated/stock.js:804
+#: templates/js/translated/stock.js:805
msgid "Confirm stock item merge"
msgstr ""
-#: templates/js/translated/stock.js:805
+#: templates/js/translated/stock.js:806
msgid "Merge Stock Items"
msgstr ""
-#: templates/js/translated/stock.js:900
+#: templates/js/translated/stock.js:901
msgid "Transfer Stock"
msgstr ""
-#: templates/js/translated/stock.js:901
+#: templates/js/translated/stock.js:902
msgid "Move"
msgstr ""
-#: templates/js/translated/stock.js:907
+#: templates/js/translated/stock.js:908
msgid "Count Stock"
msgstr ""
-#: templates/js/translated/stock.js:908
+#: templates/js/translated/stock.js:909
msgid "Count"
msgstr ""
-#: templates/js/translated/stock.js:912
+#: templates/js/translated/stock.js:913
msgid "Remove Stock"
msgstr ""
-#: templates/js/translated/stock.js:913
+#: templates/js/translated/stock.js:914
msgid "Take"
msgstr ""
-#: templates/js/translated/stock.js:917
+#: templates/js/translated/stock.js:918
msgid "Add Stock"
msgstr ""
-#: templates/js/translated/stock.js:918 users/models.py:208
+#: templates/js/translated/stock.js:919 users/models.py:213
msgid "Add"
msgstr ""
-#: templates/js/translated/stock.js:922 templates/stock_table.html:58
+#: templates/js/translated/stock.js:923 templates/stock_table.html:58
msgid "Delete Stock"
msgstr ""
-#: templates/js/translated/stock.js:1011
+#: templates/js/translated/stock.js:1012
msgid "Quantity cannot be adjusted for serialized stock"
msgstr ""
-#: templates/js/translated/stock.js:1011
+#: templates/js/translated/stock.js:1012
msgid "Specify stock quantity"
msgstr ""
-#: templates/js/translated/stock.js:1051
+#: templates/js/translated/stock.js:1052
msgid "You must select at least one available stock item"
msgstr ""
-#: templates/js/translated/stock.js:1209
+#: templates/js/translated/stock.js:1210
msgid "PASS"
msgstr ""
-#: templates/js/translated/stock.js:1211
+#: templates/js/translated/stock.js:1212
msgid "FAIL"
msgstr ""
-#: templates/js/translated/stock.js:1216
+#: templates/js/translated/stock.js:1217
msgid "NO RESULT"
msgstr ""
-#: templates/js/translated/stock.js:1238
+#: templates/js/translated/stock.js:1264
+msgid "Pass test"
+msgstr ""
+
+#: templates/js/translated/stock.js:1267
msgid "Add test result"
msgstr ""
-#: templates/js/translated/stock.js:1264
+#: templates/js/translated/stock.js:1293
msgid "No test results found"
msgstr ""
-#: templates/js/translated/stock.js:1321
+#: templates/js/translated/stock.js:1349
msgid "Test Date"
msgstr ""
-#: templates/js/translated/stock.js:1428
+#: templates/js/translated/stock.js:1501
+msgid "Edit Test Result"
+msgstr ""
+
+#: templates/js/translated/stock.js:1523
+msgid "Delete Test Result"
+msgstr ""
+
+#: templates/js/translated/stock.js:1552
msgid "In production"
msgstr ""
-#: templates/js/translated/stock.js:1432
+#: templates/js/translated/stock.js:1556
msgid "Installed in Stock Item"
msgstr ""
-#: templates/js/translated/stock.js:1440
+#: templates/js/translated/stock.js:1564
msgid "Assigned to Sales Order"
msgstr ""
-#: templates/js/translated/stock.js:1446
+#: templates/js/translated/stock.js:1570
msgid "No stock location set"
msgstr "Stok konumu ayarlanmadı"
-#: templates/js/translated/stock.js:1604
+#: templates/js/translated/stock.js:1728
msgid "Stock item is in production"
msgstr ""
-#: templates/js/translated/stock.js:1609
+#: templates/js/translated/stock.js:1733
msgid "Stock item assigned to sales order"
msgstr ""
-#: templates/js/translated/stock.js:1612
+#: templates/js/translated/stock.js:1736
msgid "Stock item assigned to customer"
msgstr ""
-#: templates/js/translated/stock.js:1616
+#: templates/js/translated/stock.js:1740
msgid "Stock item has expired"
msgstr ""
-#: templates/js/translated/stock.js:1618
+#: templates/js/translated/stock.js:1742
msgid "Stock item will expire soon"
msgstr ""
-#: templates/js/translated/stock.js:1624
+#: templates/js/translated/stock.js:1748
msgid "Serialized stock item has been allocated"
msgstr ""
-#: templates/js/translated/stock.js:1626
+#: templates/js/translated/stock.js:1750
msgid "Stock item has been fully allocated"
msgstr ""
-#: templates/js/translated/stock.js:1628
+#: templates/js/translated/stock.js:1752
msgid "Stock item has been partially allocated"
msgstr ""
-#: templates/js/translated/stock.js:1633
+#: templates/js/translated/stock.js:1757
msgid "Stock item has been installed in another item"
msgstr ""
-#: templates/js/translated/stock.js:1640
+#: templates/js/translated/stock.js:1764
msgid "Stock item has been rejected"
msgstr ""
-#: templates/js/translated/stock.js:1642
+#: templates/js/translated/stock.js:1766
msgid "Stock item is lost"
msgstr ""
-#: templates/js/translated/stock.js:1644
+#: templates/js/translated/stock.js:1768
msgid "Stock item is destroyed"
msgstr ""
-#: templates/js/translated/stock.js:1648
+#: templates/js/translated/stock.js:1772
#: templates/js/translated/table_filters.js:188
msgid "Depleted"
msgstr ""
-#: templates/js/translated/stock.js:1698
+#: templates/js/translated/stock.js:1822
msgid "Stocktake"
msgstr ""
-#: templates/js/translated/stock.js:1771
+#: templates/js/translated/stock.js:1895
msgid "Supplier part not specified"
msgstr ""
-#: templates/js/translated/stock.js:1809
+#: templates/js/translated/stock.js:1933
msgid "No stock items matching query"
msgstr ""
-#: templates/js/translated/stock.js:1830 templates/js/translated/stock.js:1878
+#: templates/js/translated/stock.js:1954 templates/js/translated/stock.js:2002
msgid "items"
msgstr ""
-#: templates/js/translated/stock.js:1918
+#: templates/js/translated/stock.js:2042
msgid "batches"
msgstr ""
-#: templates/js/translated/stock.js:1945
+#: templates/js/translated/stock.js:2069
msgid "locations"
msgstr "konumlar"
-#: templates/js/translated/stock.js:1947
+#: templates/js/translated/stock.js:2071
msgid "Undefined location"
msgstr "Tanımsız konum"
-#: templates/js/translated/stock.js:2146
+#: templates/js/translated/stock.js:2270
msgid "Set Stock Status"
msgstr ""
-#: templates/js/translated/stock.js:2160
+#: templates/js/translated/stock.js:2284
msgid "Select Status Code"
msgstr ""
-#: templates/js/translated/stock.js:2161
+#: templates/js/translated/stock.js:2285
msgid "Status code must be selected"
msgstr ""
-#: templates/js/translated/stock.js:2340
+#: templates/js/translated/stock.js:2464
msgid "Allocated Quantity"
msgstr ""
-#: templates/js/translated/stock.js:2535
+#: templates/js/translated/stock.js:2659
msgid "Invalid date"
msgstr ""
-#: templates/js/translated/stock.js:2557
+#: templates/js/translated/stock.js:2681
msgid "Details"
msgstr "Detaylar"
-#: templates/js/translated/stock.js:2582
+#: templates/js/translated/stock.js:2706
msgid "Location no longer exists"
msgstr "Konum artık yok"
-#: templates/js/translated/stock.js:2601
+#: templates/js/translated/stock.js:2725
msgid "Purchase order no longer exists"
msgstr ""
-#: templates/js/translated/stock.js:2620
+#: templates/js/translated/stock.js:2744
msgid "Customer no longer exists"
msgstr ""
-#: templates/js/translated/stock.js:2638
+#: templates/js/translated/stock.js:2762
msgid "Stock item no longer exists"
msgstr ""
-#: templates/js/translated/stock.js:2661
+#: templates/js/translated/stock.js:2785
msgid "Added"
msgstr ""
-#: templates/js/translated/stock.js:2669
+#: templates/js/translated/stock.js:2793
msgid "Removed"
msgstr ""
-#: templates/js/translated/stock.js:2710
+#: templates/js/translated/stock.js:2834
msgid "Edit tracking entry"
msgstr ""
-#: templates/js/translated/stock.js:2711
+#: templates/js/translated/stock.js:2835
msgid "Delete tracking entry"
msgstr ""
-#: templates/js/translated/stock.js:2762
+#: templates/js/translated/stock.js:2886
msgid "No installed items"
msgstr ""
-#: templates/js/translated/stock.js:2813
+#: templates/js/translated/stock.js:2937
msgid "Uninstall Stock Item"
msgstr ""
+#: templates/js/translated/stock.js:2973
+msgid "Install another stock item into this item"
+msgstr ""
+
+#: templates/js/translated/stock.js:2974
+msgid "Stock items can only be installed if they meet the following criteria"
+msgstr ""
+
+#: templates/js/translated/stock.js:2976
+msgid "The Stock Item links to a Part which is the BOM for this Stock Item"
+msgstr ""
+
+#: templates/js/translated/stock.js:2977
+msgid "The Stock Item is currently available in stock"
+msgstr ""
+
+#: templates/js/translated/stock.js:2978
+msgid "The Stock Item is serialized and does not belong to another item"
+msgstr ""
+
+#: templates/js/translated/stock.js:2991
+msgid "Select part to install"
+msgstr ""
+
#: templates/js/translated/table_filters.js:56
msgid "Trackable Part"
msgstr ""
@@ -9055,12 +9187,12 @@ msgstr "Konumları dahil et"
#: templates/js/translated/table_filters.js:121
#: templates/js/translated/table_filters.js:122
-#: templates/js/translated/table_filters.js:407
+#: templates/js/translated/table_filters.js:402
msgid "Include subcategories"
msgstr ""
#: templates/js/translated/table_filters.js:126
-#: templates/js/translated/table_filters.js:442
+#: templates/js/translated/table_filters.js:437
msgid "Subscribed"
msgstr ""
@@ -9102,7 +9234,7 @@ msgid "Batch code"
msgstr ""
#: templates/js/translated/table_filters.js:163
-#: templates/js/translated/table_filters.js:379
+#: templates/js/translated/table_filters.js:374
msgid "Active parts"
msgstr ""
@@ -9187,47 +9319,47 @@ msgstr ""
msgid "Show stock which is close to expiring"
msgstr ""
-#: templates/js/translated/table_filters.js:290
+#: templates/js/translated/table_filters.js:285
msgid "Build status"
msgstr ""
-#: templates/js/translated/table_filters.js:303
-#: templates/js/translated/table_filters.js:344
+#: templates/js/translated/table_filters.js:298
+#: templates/js/translated/table_filters.js:339
msgid "Assigned to me"
msgstr ""
-#: templates/js/translated/table_filters.js:320
-#: templates/js/translated/table_filters.js:331
-#: templates/js/translated/table_filters.js:352
+#: templates/js/translated/table_filters.js:315
+#: templates/js/translated/table_filters.js:326
+#: templates/js/translated/table_filters.js:347
msgid "Order status"
msgstr ""
-#: templates/js/translated/table_filters.js:336
-#: templates/js/translated/table_filters.js:357
+#: templates/js/translated/table_filters.js:331
+#: templates/js/translated/table_filters.js:352
msgid "Outstanding"
msgstr ""
-#: templates/js/translated/table_filters.js:408
+#: templates/js/translated/table_filters.js:403
msgid "Include parts in subcategories"
msgstr "Alt kategorilerdeki parçaları dahil et"
-#: templates/js/translated/table_filters.js:412
+#: templates/js/translated/table_filters.js:407
msgid "Has IPN"
msgstr "DPN Var"
-#: templates/js/translated/table_filters.js:413
+#: templates/js/translated/table_filters.js:408
msgid "Part has internal part number"
msgstr ""
-#: templates/js/translated/table_filters.js:418
+#: templates/js/translated/table_filters.js:413
msgid "Show active parts"
msgstr ""
-#: templates/js/translated/table_filters.js:426
+#: templates/js/translated/table_filters.js:421
msgid "Stock available"
msgstr ""
-#: templates/js/translated/table_filters.js:454
+#: templates/js/translated/table_filters.js:449
msgid "Purchasable"
msgstr ""
@@ -9480,35 +9612,35 @@ msgstr ""
msgid "Important dates"
msgstr ""
-#: users/models.py:195
+#: users/models.py:200
msgid "Permission set"
msgstr ""
-#: users/models.py:203
+#: users/models.py:208
msgid "Group"
msgstr ""
-#: users/models.py:206
+#: users/models.py:211
msgid "View"
msgstr ""
-#: users/models.py:206
+#: users/models.py:211
msgid "Permission to view items"
msgstr ""
-#: users/models.py:208
+#: users/models.py:213
msgid "Permission to add items"
msgstr ""
-#: users/models.py:210
+#: users/models.py:215
msgid "Change"
msgstr ""
-#: users/models.py:210
+#: users/models.py:215
msgid "Permissions to edit items"
msgstr ""
-#: users/models.py:212
+#: users/models.py:217
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 fc68f7dd4a..d364825e86 100644
--- a/InvenTree/locale/vi/LC_MESSAGES/django.po
+++ b/InvenTree/locale/vi/LC_MESSAGES/django.po
@@ -3,8 +3,8 @@ msgid ""
msgstr ""
"Project-Id-Version: inventree\n"
"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2022-01-29 00:17+0000\n"
-"PO-Revision-Date: 2022-01-29 01:11\n"
+"POT-Creation-Date: 2022-02-18 20:36+0000\n"
+"PO-Revision-Date: 2022-02-18 20:38\n"
"Last-Translator: \n"
"Language-Team: Vietnamese\n"
"Language: vi_VN\n"
@@ -34,9 +34,9 @@ msgstr ""
msgid "Enter date"
msgstr ""
-#: InvenTree/forms.py:126 build/forms.py:48 build/forms.py:69 order/forms.py:24
-#: order/forms.py:35 order/forms.py:46 order/forms.py:57
-#: templates/account/email_confirm.html:20 templates/js/translated/forms.js:595
+#: InvenTree/forms.py:126 order/forms.py:24 order/forms.py:35 order/forms.py:46
+#: order/forms.py:57 templates/account/email_confirm.html:20
+#: templates/js/translated/forms.js:596
msgid "Confirm"
msgstr ""
@@ -86,7 +86,7 @@ msgid "Duplicate serial: {n}"
msgstr ""
#: InvenTree/helpers.py:446 order/models.py:282 order/models.py:425
-#: stock/views.py:1231
+#: stock/views.py:1082
msgid "Invalid quantity provided"
msgstr ""
@@ -119,133 +119,133 @@ msgstr ""
msgid "Number of unique serial number ({s}) must match quantity ({q})"
msgstr ""
-#: InvenTree/models.py:120
+#: InvenTree/models.py:176
msgid "Missing file"
msgstr ""
-#: InvenTree/models.py:121
+#: InvenTree/models.py:177
msgid "Missing external link"
msgstr ""
-#: InvenTree/models.py:132 stock/models.py:1995
+#: InvenTree/models.py:188 stock/models.py:1995
#: templates/js/translated/attachment.js:119
msgid "Attachment"
msgstr ""
-#: InvenTree/models.py:133
+#: InvenTree/models.py:189
msgid "Select file to attach"
msgstr ""
-#: InvenTree/models.py:139 company/models.py:131 company/models.py:348
-#: company/models.py:564 order/models.py:127 part/models.py:830
+#: InvenTree/models.py:195 company/models.py:131 company/models.py:348
+#: company/models.py:564 order/models.py:127 part/models.py:860
#: report/templates/report/inventree_build_order_base.html:165
#: templates/js/translated/company.js:540
#: templates/js/translated/company.js:829 templates/js/translated/part.js:1324
msgid "Link"
msgstr ""
-#: InvenTree/models.py:140 build/models.py:332 part/models.py:831
+#: InvenTree/models.py:196 build/models.py:332 part/models.py:861
#: stock/models.py:529
msgid "Link to external URL"
msgstr ""
-#: InvenTree/models.py:143 templates/js/translated/attachment.js:163
+#: InvenTree/models.py:199 templates/js/translated/attachment.js:163
msgid "Comment"
msgstr "Bình luận"
-#: InvenTree/models.py:143
+#: InvenTree/models.py:199
msgid "File comment"
msgstr ""
-#: InvenTree/models.py:149 InvenTree/models.py:150 common/models.py:1223
-#: common/models.py:1224 common/models.py:1452 common/models.py:1453
-#: part/models.py:2265 part/models.py:2285
+#: InvenTree/models.py:205 InvenTree/models.py:206 common/models.py:1235
+#: common/models.py:1236 common/models.py:1464 common/models.py:1465
+#: part/models.py:2301 part/models.py:2321
#: report/templates/report/inventree_test_report_base.html:96
-#: templates/js/translated/stock.js:2692
+#: templates/js/translated/stock.js:2816
msgid "User"
msgstr "Người dùng"
-#: InvenTree/models.py:153
+#: InvenTree/models.py:209
msgid "upload date"
msgstr "Ngày tải lên"
-#: InvenTree/models.py:176
+#: InvenTree/models.py:232
msgid "Filename must not be empty"
msgstr "Tên tập tin không được để trống"
-#: InvenTree/models.py:199
+#: InvenTree/models.py:255
msgid "Invalid attachment directory"
msgstr ""
-#: InvenTree/models.py:209
+#: InvenTree/models.py:265
#, python-brace-format
msgid "Filename contains illegal character '{c}'"
msgstr ""
-#: InvenTree/models.py:212
+#: InvenTree/models.py:268
msgid "Filename missing extension"
msgstr ""
-#: InvenTree/models.py:219
+#: InvenTree/models.py:275
msgid "Attachment with this filename already exists"
msgstr ""
-#: InvenTree/models.py:226
+#: InvenTree/models.py:282
msgid "Error renaming file"
msgstr ""
-#: InvenTree/models.py:261
+#: InvenTree/models.py:317
msgid "Invalid choice"
msgstr ""
-#: InvenTree/models.py:277 InvenTree/models.py:278 common/models.py:1438
-#: company/models.py:415 label/models.py:112 part/models.py:774
-#: part/models.py:2449 plugin/models.py:40 report/models.py:181
+#: InvenTree/models.py:333 InvenTree/models.py:334 common/models.py:1450
+#: company/models.py:415 label/models.py:112 part/models.py:804
+#: part/models.py:2485 plugin/models.py:40 report/models.py:181
#: templates/InvenTree/settings/mixins/urls.html:13
#: templates/InvenTree/settings/plugin.html:48
#: templates/InvenTree/settings/plugin.html:125
#: templates/InvenTree/settings/plugin_settings.html:23
-#: templates/InvenTree/settings/settings.html:282
+#: templates/InvenTree/settings/settings.html:319
#: templates/js/translated/company.js:641 templates/js/translated/part.js:567
#: templates/js/translated/part.js:706 templates/js/translated/part.js:1631
-#: templates/js/translated/stock.js:2485
+#: templates/js/translated/stock.js:2609
msgid "Name"
msgstr ""
-#: InvenTree/models.py:284 build/models.py:209
+#: InvenTree/models.py:340 build/models.py:209
#: build/templates/build/detail.html:25 company/models.py:354
#: company/models.py:570 company/templates/company/company_base.html:68
#: company/templates/company/manufacturer_part.html:76
#: company/templates/company/supplier_part.html:73 label/models.py:119
-#: order/models.py:125 part/models.py:797 part/templates/part/category.html:74
+#: order/models.py:125 part/models.py:827 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:93
#: templates/InvenTree/settings/plugin_settings.html:33
-#: templates/js/translated/bom.js:339 templates/js/translated/bom.js:552
-#: templates/js/translated/build.js:1682 templates/js/translated/company.js:345
+#: templates/js/translated/bom.js:552 templates/js/translated/bom.js:765
+#: templates/js/translated/build.js:1920 templates/js/translated/company.js:345
#: templates/js/translated/company.js:551
#: templates/js/translated/company.js:840 templates/js/translated/order.js:836
#: templates/js/translated/order.js:1019 templates/js/translated/order.js:1258
#: templates/js/translated/part.js:626 templates/js/translated/part.js:999
#: templates/js/translated/part.js:1084 templates/js/translated/part.js:1254
#: templates/js/translated/part.js:1650 templates/js/translated/part.js:1719
-#: templates/js/translated/stock.js:1577 templates/js/translated/stock.js:2314
-#: templates/js/translated/stock.js:2497 templates/js/translated/stock.js:2542
+#: templates/js/translated/stock.js:1701 templates/js/translated/stock.js:2438
+#: templates/js/translated/stock.js:2621 templates/js/translated/stock.js:2666
msgid "Description"
msgstr "Mô tả"
-#: InvenTree/models.py:285
+#: InvenTree/models.py:341
msgid "Description (optional)"
msgstr "Mô tả (tùy chọn)"
-#: InvenTree/models.py:293
+#: InvenTree/models.py:349
msgid "parent"
msgstr ""
-#: InvenTree/serializers.py:65 part/models.py:2734
+#: InvenTree/serializers.py:65 part/models.py:2803
msgid "Must be a valid number"
msgstr ""
@@ -253,83 +253,127 @@ msgstr ""
msgid "Filename"
msgstr "Tên tập tin"
-#: InvenTree/settings.py:661
+#: InvenTree/serializers.py:334
+msgid "Invalid value"
+msgstr ""
+
+#: InvenTree/serializers.py:355
+msgid "Data File"
+msgstr ""
+
+#: InvenTree/serializers.py:356
+msgid "Select data file for upload"
+msgstr ""
+
+#: InvenTree/serializers.py:380
+msgid "Unsupported file type"
+msgstr ""
+
+#: InvenTree/serializers.py:386
+msgid "File is too large"
+msgstr ""
+
+#: InvenTree/serializers.py:407
+msgid "No columns found in file"
+msgstr ""
+
+#: InvenTree/serializers.py:410
+msgid "No data rows found in file"
+msgstr ""
+
+#: InvenTree/serializers.py:533
+msgid "No data rows provided"
+msgstr ""
+
+#: InvenTree/serializers.py:536
+msgid "No data columns supplied"
+msgstr ""
+
+#: InvenTree/serializers.py:623
+msgid "Missing required column"
+msgstr ""
+
+#: InvenTree/serializers.py:632
+msgid "Duplicate column"
+msgstr ""
+
+#: InvenTree/settings.py:655
msgid "German"
msgstr ""
-#: InvenTree/settings.py:662
+#: InvenTree/settings.py:656
msgid "Greek"
msgstr ""
-#: InvenTree/settings.py:663
+#: InvenTree/settings.py:657
msgid "English"
msgstr ""
-#: InvenTree/settings.py:664
+#: InvenTree/settings.py:658
msgid "Spanish"
msgstr ""
-#: InvenTree/settings.py:665
+#: InvenTree/settings.py:659
msgid "Spanish (Mexican)"
msgstr ""
-#: InvenTree/settings.py:666
+#: InvenTree/settings.py:660
msgid "French"
msgstr ""
-#: InvenTree/settings.py:667
+#: InvenTree/settings.py:661
msgid "Hebrew"
msgstr ""
-#: InvenTree/settings.py:668
+#: InvenTree/settings.py:662
msgid "Italian"
msgstr ""
-#: InvenTree/settings.py:669
+#: InvenTree/settings.py:663
msgid "Japanese"
msgstr ""
-#: InvenTree/settings.py:670
+#: InvenTree/settings.py:664
msgid "Korean"
msgstr ""
-#: InvenTree/settings.py:671
+#: InvenTree/settings.py:665
msgid "Dutch"
msgstr ""
-#: InvenTree/settings.py:672
+#: InvenTree/settings.py:666
msgid "Norwegian"
msgstr ""
-#: InvenTree/settings.py:673
+#: InvenTree/settings.py:667
msgid "Polish"
msgstr ""
-#: InvenTree/settings.py:674
+#: InvenTree/settings.py:668
msgid "Portugese"
msgstr ""
-#: InvenTree/settings.py:675
+#: InvenTree/settings.py:669
msgid "Russian"
msgstr ""
-#: InvenTree/settings.py:676
+#: InvenTree/settings.py:670
msgid "Swedish"
msgstr ""
-#: InvenTree/settings.py:677
+#: InvenTree/settings.py:671
msgid "Thai"
msgstr ""
-#: InvenTree/settings.py:678
+#: InvenTree/settings.py:672
msgid "Turkish"
msgstr ""
-#: InvenTree/settings.py:679
+#: InvenTree/settings.py:673
msgid "Vietnamese"
msgstr ""
-#: InvenTree/settings.py:680
+#: InvenTree/settings.py:674
msgid "Chinese"
msgstr ""
@@ -346,7 +390,7 @@ msgid "InvenTree system health checks failed"
msgstr ""
#: InvenTree/status_codes.py:101 InvenTree/status_codes.py:142
-#: InvenTree/status_codes.py:316 templates/js/translated/table_filters.js:313
+#: InvenTree/status_codes.py:316 templates/js/translated/table_filters.js:308
msgid "Pending"
msgstr ""
@@ -456,7 +500,7 @@ msgstr ""
msgid "Split child item"
msgstr ""
-#: InvenTree/status_codes.py:294 templates/js/translated/stock.js:2072
+#: InvenTree/status_codes.py:294 templates/js/translated/stock.js:2196
msgid "Merged stock items"
msgstr ""
@@ -484,40 +528,40 @@ msgstr ""
msgid "Production"
msgstr ""
-#: InvenTree/validators.py:23
+#: InvenTree/validators.py:25
msgid "Not a valid currency code"
msgstr ""
-#: InvenTree/validators.py:51
+#: InvenTree/validators.py:53
msgid "Invalid character in part name"
msgstr ""
-#: InvenTree/validators.py:64
+#: InvenTree/validators.py:66
#, python-brace-format
msgid "IPN must match regex pattern {pat}"
msgstr ""
-#: InvenTree/validators.py:78 InvenTree/validators.py:92
-#: InvenTree/validators.py:106
+#: InvenTree/validators.py:80 InvenTree/validators.py:94
+#: InvenTree/validators.py:108
#, python-brace-format
msgid "Reference must match pattern {pattern}"
msgstr ""
-#: InvenTree/validators.py:114
+#: InvenTree/validators.py:116
#, python-brace-format
msgid "Illegal character in name ({x})"
msgstr ""
-#: InvenTree/validators.py:133 InvenTree/validators.py:149
+#: InvenTree/validators.py:137 InvenTree/validators.py:153
msgid "Overage value must not be negative"
msgstr ""
-#: InvenTree/validators.py:151
+#: InvenTree/validators.py:155
msgid "Overage must not exceed 100%"
msgstr ""
-#: InvenTree/validators.py:158
-msgid "Overage must be an integer value or a percentage"
+#: InvenTree/validators.py:162
+msgid "Invalid value for overage"
msgstr ""
#: InvenTree/views.py:538
@@ -584,69 +628,11 @@ msgstr ""
msgid "Barcode associated with Stock Item"
msgstr ""
-#: build/forms.py:36 build/models.py:1293
-#: build/templates/build/build_base.html:82
-#: build/templates/build/detail.html:35 common/models.py:1263
-#: company/forms.py:42 company/templates/company/supplier_part.html:251
-#: order/models.py:805 order/models.py:1229 order/serializers.py:816
-#: order/templates/order/order_wizard/match_parts.html:30
-#: order/templates/order/order_wizard/select_parts.html:34 part/forms.py:144
-#: part/forms.py:160 part/forms.py:176 part/models.py:2636
-#: part/templates/part/bom_upload/match_parts.html:31
-#: part/templates/part/detail.html:992 part/templates/part/detail.html:1078
-#: part/templates/part/part_pricing.html:16
-#: report/templates/report/inventree_build_order_base.html:114
-#: report/templates/report/inventree_po_report.html:91
-#: report/templates/report/inventree_so_report.html:91
-#: report/templates/report/inventree_test_report_base.html:81
-#: report/templates/report/inventree_test_report_base.html:139
-#: stock/forms.py:142 stock/serializers.py:293
-#: stock/templates/stock/item_base.html:181
-#: stock/templates/stock/item_base.html:262
-#: stock/templates/stock/item_base.html:270
-#: templates/js/translated/barcode.js:385 templates/js/translated/bom.js:567
-#: templates/js/translated/build.js:295 templates/js/translated/build.js:495
-#: templates/js/translated/build.js:689 templates/js/translated/build.js:699
-#: templates/js/translated/build.js:1075 templates/js/translated/build.js:1422
-#: templates/js/translated/model_renderers.js:99
-#: templates/js/translated/order.js:101 templates/js/translated/order.js:1056
-#: 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:906
-#: templates/js/translated/part.js:1862 templates/js/translated/part.js:1985
-#: templates/js/translated/part.js:2063 templates/js/translated/stock.js:391
-#: templates/js/translated/stock.js:588 templates/js/translated/stock.js:758
-#: templates/js/translated/stock.js:2677 templates/js/translated/stock.js:2779
-msgid "Quantity"
-msgstr ""
-
-#: build/forms.py:37
-msgid "Enter quantity for build output"
-msgstr ""
-
-#: build/forms.py:41 order/serializers.py:820 stock/forms.py:81
-#: stock/serializers.py:314 templates/js/translated/stock.js:238
-#: templates/js/translated/stock.js:392
-msgid "Serial Numbers"
-msgstr ""
-
-#: build/forms.py:43
-msgid "Enter serial numbers for build outputs"
-msgstr ""
-
-#: build/forms.py:49
-msgid "Confirm creation of build output"
-msgstr ""
-
-#: build/forms.py:70
-msgid "Confirm deletion of build output"
-msgstr ""
-
-#: build/forms.py:89
+#: build/forms.py:20
msgid "Confirm cancel"
msgstr ""
-#: build/forms.py:89 build/views.py:65
+#: build/forms.py:20 build/views.py:62
msgid "Confirm build cancellation"
msgstr ""
@@ -657,7 +643,7 @@ msgstr ""
#: build/models.py:139 build/templates/build/build_base.html:9
#: build/templates/build/build_base.html:27
#: report/templates/report/inventree_build_order_base.html:106
-#: templates/js/translated/build.js:457 templates/js/translated/stock.js:2290
+#: templates/js/translated/build.js:676 templates/js/translated/stock.js:2414
msgid "Build Order"
msgstr "Tạo đơn hàng"
@@ -665,7 +651,7 @@ msgstr "Tạo đơn hàng"
#: 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
+#: part/templates/part/part_sidebar.html:21 templates/InvenTree/index.html:221
#: templates/InvenTree/search.html:139
#: templates/InvenTree/settings/sidebar.html:43 users/models.py:44
msgid "Build Orders"
@@ -676,11 +662,11 @@ msgid "Build Order Reference"
msgstr ""
#: build/models.py:201 order/models.py:213 order/models.py:541
-#: order/models.py:812 part/models.py:2645
-#: part/templates/part/bom_upload/match_parts.html:30
+#: order/models.py:812 part/models.py:2714
+#: part/templates/part/upload_bom.html:54
#: report/templates/report/inventree_po_report.html:92
#: report/templates/report/inventree_so_report.html:92
-#: templates/js/translated/bom.js:559 templates/js/translated/build.js:1179
+#: templates/js/translated/bom.js:772 templates/js/translated/build.js:1401
#: templates/js/translated/order.js:1050 templates/js/translated/order.js:2144
msgid "Reference"
msgstr ""
@@ -689,7 +675,7 @@ msgstr ""
msgid "Brief description of the build"
msgstr ""
-#: build/models.py:221 build/templates/build/build_base.html:164
+#: build/models.py:221 build/templates/build/build_base.html:169
#: build/templates/build/detail.html:88
msgid "Parent Build"
msgstr ""
@@ -702,30 +688,31 @@ msgstr ""
#: build/templates/build/detail.html:30 company/models.py:705
#: order/models.py:876 order/models.py:950
#: order/templates/order/order_wizard/select_parts.html:32 part/models.py:359
-#: part/models.py:2211 part/models.py:2227 part/models.py:2246
-#: part/models.py:2263 part/models.py:2365 part/models.py:2487
-#: part/models.py:2620 part/models.py:2927 part/serializers.py:658
-#: part/templates/part/part_app_base.html:8
+#: part/models.py:2247 part/models.py:2263 part/models.py:2282
+#: part/models.py:2299 part/models.py:2401 part/models.py:2523
+#: part/models.py:2613 part/models.py:2689 part/models.py:2996
+#: part/serializers.py:666 part/templates/part/part_app_base.html:8
#: part/templates/part/part_pricing.html:12
#: part/templates/part/set_category.html:13
+#: part/templates/part/upload_bom.html:52
#: 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: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:338
-#: templates/js/translated/bom.js:517 templates/js/translated/build.js:680
-#: templates/js/translated/build.js:1048 templates/js/translated/build.js:1419
-#: templates/js/translated/build.js:1687 templates/js/translated/company.js:492
+#: templates/js/translated/barcode.js:383 templates/js/translated/bom.js:551
+#: templates/js/translated/bom.js:730 templates/js/translated/build.js:902
+#: templates/js/translated/build.js:1270 templates/js/translated/build.js:1655
+#: templates/js/translated/build.js:1925 templates/js/translated/company.js:492
#: templates/js/translated/company.js:749 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:984
#: templates/js/translated/part.js:1065 templates/js/translated/part.js:1232
-#: templates/js/translated/stock.js:562 templates/js/translated/stock.js:727
-#: templates/js/translated/stock.js:934 templates/js/translated/stock.js:1534
-#: templates/js/translated/stock.js:2767
+#: templates/js/translated/stock.js:563 templates/js/translated/stock.js:728
+#: templates/js/translated/stock.js:935 templates/js/translated/stock.js:1658
+#: templates/js/translated/stock.js:2891 templates/js/translated/stock.js:2990
msgid "Part"
msgstr "Nguyên liệu"
@@ -741,7 +728,7 @@ msgstr ""
msgid "SalesOrder to which this build is allocated"
msgstr ""
-#: build/models.py:249 templates/js/translated/build.js:1407
+#: build/models.py:249 templates/js/translated/build.js:1643
#: templates/js/translated/order.js:1564
msgid "Source Location"
msgstr ""
@@ -782,15 +769,15 @@ msgstr ""
msgid "Build status code"
msgstr ""
-#: build/models.py:287 stock/models.py:533
+#: build/models.py:287 build/serializers.py:218 stock/models.py:533
msgid "Batch Code"
msgstr ""
-#: build/models.py:291
+#: build/models.py:291 build/serializers.py:219
msgid "Batch code for this build output"
msgstr ""
-#: build/models.py:294 order/models.py:129 part/models.py:969
+#: build/models.py:294 order/models.py:129 part/models.py:999
#: part/templates/part/part_base.html:313 templates/js/translated/order.js:1271
msgid "Creation Date"
msgstr ""
@@ -804,7 +791,7 @@ msgid "Target date for build completion. Build will be overdue after this date."
msgstr ""
#: build/models.py:302 order/models.py:255
-#: templates/js/translated/build.js:1758
+#: templates/js/translated/build.js:1996
msgid "Completion Date"
msgstr "Ngày hoàn thành"
@@ -812,7 +799,7 @@ msgstr "Ngày hoàn thành"
msgid "completed by"
msgstr ""
-#: build/models.py:316 templates/js/translated/build.js:1729
+#: build/models.py:316 templates/js/translated/build.js:1967
msgid "Issued by"
msgstr ""
@@ -820,12 +807,12 @@ msgstr ""
msgid "User who issued this build order"
msgstr ""
-#: build/models.py:325 build/templates/build/build_base.html:185
+#: build/models.py:325 build/templates/build/build_base.html:190
#: build/templates/build/detail.html:116 order/models.py:143
#: order/templates/order/order_base.html:170
-#: order/templates/order/sales_order_base.html:182 part/models.py:973
+#: order/templates/order/sales_order_base.html:182 part/models.py:1003
#: report/templates/report/inventree_build_order_base.html:159
-#: templates/js/translated/build.js:1741 templates/js/translated/order.js:864
+#: templates/js/translated/build.js:1979 templates/js/translated/order.js:864
msgid "Responsible"
msgstr ""
@@ -837,26 +824,26 @@ msgstr ""
#: company/templates/company/manufacturer_part.html:102
#: company/templates/company/supplier_part.html:126
#: part/templates/part/part_base.html:354 stock/models.py:527
-#: stock/templates/stock/item_base.html:373
+#: stock/templates/stock/item_base.html:375
msgid "External Link"
msgstr ""
-#: build/models.py:336 build/serializers.py:201
+#: build/models.py:336 build/serializers.py:380
#: build/templates/build/sidebar.html:21 company/models.py:142
#: company/models.py:577 company/templates/company/sidebar.html:25
#: order/models.py:147 order/models.py:814 order/models.py:1071
#: order/templates/order/po_sidebar.html:11
-#: order/templates/order/so_sidebar.html:17 part/models.py:958
-#: part/templates/part/detail.html:137 part/templates/part/part_sidebar.html:54
+#: order/templates/order/so_sidebar.html:17 part/models.py:988
+#: part/templates/part/detail.html:140 part/templates/part/part_sidebar.html:57
#: report/templates/report/inventree_build_order_base.html:173
-#: stock/forms.py:140 stock/forms.py:190 stock/forms.py:224 stock/models.py:599
+#: stock/forms.py:137 stock/forms.py:171 stock/models.py:599
#: stock/models.py:1895 stock/models.py:2001 stock/serializers.py:332
-#: stock/serializers.py:640 stock/serializers.py:738 stock/serializers.py:870
+#: stock/serializers.py:697 stock/serializers.py:795 stock/serializers.py:927
#: stock/templates/stock/stock_sidebar.html:25
-#: templates/js/translated/barcode.js:58 templates/js/translated/bom.js:723
+#: templates/js/translated/barcode.js:58 templates/js/translated/bom.js:936
#: templates/js/translated/company.js:845 templates/js/translated/order.js:1149
#: templates/js/translated/order.js:1445 templates/js/translated/order.js:2280
-#: templates/js/translated/stock.js:1317 templates/js/translated/stock.js:1803
+#: templates/js/translated/stock.js:1345 templates/js/translated/stock.js:1927
msgid "Notes"
msgstr ""
@@ -864,208 +851,284 @@ msgstr ""
msgid "Extra build notes"
msgstr ""
-#: build/models.py:717
+#: build/models.py:756
msgid "No build output specified"
msgstr ""
-#: build/models.py:720
+#: build/models.py:759
msgid "Build output is already completed"
msgstr ""
-#: build/models.py:723
+#: build/models.py:762
msgid "Build output does not match Build Order"
msgstr ""
-#: build/models.py:1115
+#: build/models.py:1154
msgid "Build item must specify a build output, as master part is marked as trackable"
msgstr ""
-#: build/models.py:1124
+#: build/models.py:1163
#, python-brace-format
msgid "Allocated quantity ({q}) must not execed available stock quantity ({a})"
msgstr ""
-#: build/models.py:1134
+#: build/models.py:1173
msgid "Stock item is over-allocated"
msgstr ""
-#: build/models.py:1140 order/models.py:1189
+#: build/models.py:1179 order/models.py:1189
msgid "Allocation quantity must be greater than zero"
msgstr ""
-#: build/models.py:1146
+#: build/models.py:1185
msgid "Quantity must be 1 for serialized stock"
msgstr ""
-#: build/models.py:1203
+#: build/models.py:1242
msgid "Selected stock item not found in BOM"
msgstr ""
-#: build/models.py:1263 stock/templates/stock/item_base.html:345
-#: templates/InvenTree/search.html:137 templates/js/translated/build.js:1660
+#: build/models.py:1302 stock/templates/stock/item_base.html:347
+#: templates/InvenTree/search.html:137 templates/js/translated/build.js:1898
#: templates/navbar.html:35
msgid "Build"
msgstr ""
-#: build/models.py:1264
+#: build/models.py:1303
msgid "Build to allocate parts"
msgstr ""
-#: build/models.py:1280 build/serializers.py:388 order/serializers.py:696
-#: order/serializers.py:714 stock/serializers.py:578 stock/serializers.py:696
-#: stock/templates/stock/item_base.html:9
+#: build/models.py:1319 build/serializers.py:570 order/serializers.py:696
+#: order/serializers.py:714 stock/serializers.py:404 stock/serializers.py:635
+#: stock/serializers.py:753 stock/templates/stock/item_base.html:9
#: stock/templates/stock/item_base.html:23
-#: stock/templates/stock/item_base.html:367
-#: templates/js/translated/build.js:468 templates/js/translated/build.js:473
-#: templates/js/translated/build.js:1421 templates/js/translated/build.js:1803
+#: stock/templates/stock/item_base.html:369
+#: templates/js/translated/build.js:687 templates/js/translated/build.js:692
+#: templates/js/translated/build.js:1657 templates/js/translated/build.js:2041
#: 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:563 templates/js/translated/stock.js:728
-#: templates/js/translated/stock.js:2628
+#: templates/js/translated/stock.js:564 templates/js/translated/stock.js:729
+#: templates/js/translated/stock.js:2752
msgid "Stock Item"
msgstr ""
-#: build/models.py:1281
+#: build/models.py:1320
msgid "Source stock item"
msgstr ""
-#: build/models.py:1294
+#: build/models.py:1332 build/serializers.py:188
+#: build/templates/build/build_base.html:82
+#: build/templates/build/detail.html:35 common/models.py:1275
+#: company/forms.py:42 company/templates/company/supplier_part.html:251
+#: order/models.py:805 order/models.py:1229 order/serializers.py:816
+#: order/templates/order/order_wizard/match_parts.html:30
+#: order/templates/order/order_wizard/select_parts.html:34 part/forms.py:144
+#: part/forms.py:160 part/forms.py:176 part/models.py:2705
+#: part/templates/part/detail.html:995 part/templates/part/detail.html:1081
+#: part/templates/part/part_pricing.html:16
+#: part/templates/part/upload_bom.html:53
+#: report/templates/report/inventree_build_order_base.html:114
+#: report/templates/report/inventree_po_report.html:91
+#: report/templates/report/inventree_so_report.html:91
+#: report/templates/report/inventree_test_report_base.html:81
+#: report/templates/report/inventree_test_report_base.html:139
+#: stock/forms.py:139 stock/serializers.py:293
+#: stock/templates/stock/item_base.html:183
+#: stock/templates/stock/item_base.html:264
+#: stock/templates/stock/item_base.html:272
+#: templates/js/translated/barcode.js:385 templates/js/translated/bom.js:780
+#: templates/js/translated/build.js:375 templates/js/translated/build.js:523
+#: templates/js/translated/build.js:714 templates/js/translated/build.js:911
+#: templates/js/translated/build.js:921 templates/js/translated/build.js:1297
+#: templates/js/translated/build.js:1658
+#: templates/js/translated/model_renderers.js:99
+#: templates/js/translated/order.js:101 templates/js/translated/order.js:1056
+#: 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:906
+#: templates/js/translated/part.js:1862 templates/js/translated/part.js:1985
+#: templates/js/translated/part.js:2063 templates/js/translated/stock.js:392
+#: templates/js/translated/stock.js:589 templates/js/translated/stock.js:759
+#: templates/js/translated/stock.js:2801 templates/js/translated/stock.js:2903
+msgid "Quantity"
+msgstr ""
+
+#: build/models.py:1333
msgid "Stock quantity to allocate to build"
msgstr ""
-#: build/models.py:1302
+#: build/models.py:1341
msgid "Install into"
msgstr ""
-#: build/models.py:1303
+#: build/models.py:1342
msgid "Destination stock item"
msgstr ""
-#: build/serializers.py:137 build/serializers.py:417
+#: build/serializers.py:138 build/serializers.py:599
msgid "Build Output"
msgstr ""
-#: build/serializers.py:146
+#: build/serializers.py:150
msgid "Build output does not match the parent build"
msgstr ""
-#: build/serializers.py:150
+#: build/serializers.py:154
msgid "Output part does not match BuildOrder part"
msgstr ""
-#: build/serializers.py:154
+#: build/serializers.py:158
msgid "This build output has already been completed"
msgstr ""
-#: build/serializers.py:158
+#: build/serializers.py:164
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:731
-#: stock/serializers.py:972 stock/templates/stock/item_base.html:313
-#: templates/js/translated/barcode.js:384
-#: templates/js/translated/barcode.js:557 templates/js/translated/build.js:480
-#: templates/js/translated/build.js:1087 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:179 templates/js/translated/stock.js:564
-#: templates/js/translated/stock.js:729 templates/js/translated/stock.js:936
-#: templates/js/translated/stock.js:1684 templates/js/translated/stock.js:2569
-msgid "Location"
+#: build/serializers.py:189
+msgid "Enter quantity for build output"
msgstr ""
-#: build/serializers.py:191
-msgid "Location for completed build outputs"
-msgstr ""
-
-#: build/serializers.py:197 build/templates/build/build_base.html:137
-#: build/templates/build/detail.html:63 order/models.py:557
-#: order/serializers.py:247 stock/templates/stock/item_base.html:187
-#: templates/js/translated/barcode.js:140 templates/js/translated/build.js:1716
-#: templates/js/translated/order.js:591 templates/js/translated/order.js:840
-#: templates/js/translated/order.js:1263 templates/js/translated/stock.js:1659
-#: templates/js/translated/stock.js:2646 templates/js/translated/stock.js:2795
-msgid "Status"
-msgstr "Trạng thái"
-
-#: build/serializers.py:213
-msgid "A list of build outputs must be provided"
-msgstr ""
-
-#: build/serializers.py:249
-msgid "Accept Unallocated"
-msgstr ""
-
-#: build/serializers.py:250
-msgid "Accept that stock items have not been fully allocated to this build order"
-msgstr ""
-
-#: build/serializers.py:260 templates/js/translated/build.js:149
-msgid "Required stock has not been fully allocated"
-msgstr ""
-
-#: build/serializers.py:265
-msgid "Accept Incomplete"
-msgstr ""
-
-#: build/serializers.py:266
-msgid "Accept that the required number of build outputs have not been completed"
-msgstr ""
-
-#: build/serializers.py:276 templates/js/translated/build.js:153
-msgid "Required build quantity has not been completed"
-msgstr ""
-
-#: build/serializers.py:285
-msgid "Build order has incomplete outputs"
-msgstr ""
-
-#: build/serializers.py:313 build/serializers.py:362 part/models.py:2760
-#: part/models.py:2919
-msgid "BOM Item"
-msgstr ""
-
-#: build/serializers.py:323
-msgid "Build output"
-msgstr ""
-
-#: build/serializers.py:332
-msgid "Build output must point to the same build"
-msgstr ""
-
-#: build/serializers.py:379
-msgid "bom_item.part must point to the same part as the build order"
-msgstr ""
-
-#: build/serializers.py:394 stock/serializers.py:585
-msgid "Item must be in stock"
-msgstr ""
-
-#: build/serializers.py:408 order/models.py:280 order/serializers.py:240
+#: build/serializers.py:201 build/serializers.py:590 order/models.py:280
+#: order/serializers.py:240 part/serializers.py:471 part/serializers.py:827
#: stock/models.py:367 stock/models.py:1105 stock/serializers.py:305
msgid "Quantity must be greater than zero"
msgstr ""
-#: build/serializers.py:450 order/serializers.py:747
+#: build/serializers.py:208
+msgid "Integer quantity required for trackable parts"
+msgstr ""
+
+#: build/serializers.py:211
+msgid "Integer quantity required, as the bill of materials contains trackable parts"
+msgstr ""
+
+#: build/serializers.py:225 order/serializers.py:820 stock/forms.py:78
+#: stock/serializers.py:314 templates/js/translated/stock.js:239
+#: templates/js/translated/stock.js:393
+msgid "Serial Numbers"
+msgstr ""
+
+#: build/serializers.py:226
+msgid "Enter serial numbers for build outputs"
+msgstr ""
+
+#: build/serializers.py:239
+msgid "Auto Allocate Serial Numbers"
+msgstr ""
+
+#: build/serializers.py:240
+msgid "Automatically allocate required items with matching serial numbers"
+msgstr ""
+
+#: build/serializers.py:274 stock/api.py:551
+msgid "The following serial numbers already exist"
+msgstr ""
+
+#: build/serializers.py:327 build/serializers.py:392
+msgid "A list of build outputs must be provided"
+msgstr ""
+
+#: build/serializers.py:369 order/serializers.py:226 order/serializers.py:294
+#: stock/forms.py:169 stock/serializers.py:325 stock/serializers.py:788
+#: stock/serializers.py:1029 stock/templates/stock/item_base.html:315
+#: templates/js/translated/barcode.js:384
+#: templates/js/translated/barcode.js:557 templates/js/translated/build.js:699
+#: templates/js/translated/build.js:1309 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:179 templates/js/translated/stock.js:565
+#: templates/js/translated/stock.js:730 templates/js/translated/stock.js:937
+#: templates/js/translated/stock.js:1808 templates/js/translated/stock.js:2693
+msgid "Location"
+msgstr ""
+
+#: build/serializers.py:370
+msgid "Location for completed build outputs"
+msgstr ""
+
+#: build/serializers.py:376 build/templates/build/build_base.html:142
+#: build/templates/build/detail.html:63 order/models.py:557
+#: order/serializers.py:247 stock/templates/stock/item_base.html:189
+#: templates/js/translated/barcode.js:140 templates/js/translated/build.js:1954
+#: templates/js/translated/order.js:591 templates/js/translated/order.js:840
+#: templates/js/translated/order.js:1263 templates/js/translated/stock.js:1783
+#: templates/js/translated/stock.js:2770 templates/js/translated/stock.js:2919
+msgid "Status"
+msgstr "Trạng thái"
+
+#: build/serializers.py:428
+msgid "Accept Unallocated"
+msgstr ""
+
+#: build/serializers.py:429
+msgid "Accept that stock items have not been fully allocated to this build order"
+msgstr ""
+
+#: build/serializers.py:439 templates/js/translated/build.js:150
+msgid "Required stock has not been fully allocated"
+msgstr ""
+
+#: build/serializers.py:444
+msgid "Accept Incomplete"
+msgstr ""
+
+#: build/serializers.py:445
+msgid "Accept that the required number of build outputs have not been completed"
+msgstr ""
+
+#: build/serializers.py:455 templates/js/translated/build.js:154
+msgid "Required build quantity has not been completed"
+msgstr ""
+
+#: build/serializers.py:464
+msgid "Build order has incomplete outputs"
+msgstr ""
+
+#: build/serializers.py:467 build/templates/build/build_base.html:95
+msgid "No build outputs have been created for this build order"
+msgstr ""
+
+#: build/serializers.py:495 build/serializers.py:544 part/models.py:2829
+#: part/models.py:2988
+msgid "BOM Item"
+msgstr ""
+
+#: build/serializers.py:505
+msgid "Build output"
+msgstr ""
+
+#: build/serializers.py:514
+msgid "Build output must point to the same build"
+msgstr ""
+
+#: build/serializers.py:561
+msgid "bom_item.part must point to the same part as the build order"
+msgstr ""
+
+#: build/serializers.py:576 stock/serializers.py:642
+msgid "Item must be in stock"
+msgstr ""
+
+#: build/serializers.py:632 order/serializers.py:747
#, python-brace-format
msgid "Available quantity ({q}) exceeded"
msgstr ""
-#: build/serializers.py:456
+#: build/serializers.py:638
msgid "Build output must be specified for allocation of tracked parts"
msgstr ""
-#: build/serializers.py:463
+#: build/serializers.py:645
msgid "Build output cannot be specified for allocation of untracked parts"
msgstr ""
-#: build/serializers.py:491 order/serializers.py:990
+#: build/serializers.py:673 order/serializers.py:990
msgid "Allocation items must be provided"
msgstr ""
-#: build/tasks.py:92
+#: build/tasks.py:98
msgid "Stock required for build order"
msgstr ""
@@ -1088,7 +1151,7 @@ msgid "Edit Build"
msgstr ""
#: build/templates/build/build_base.html:56
-#: build/templates/build/build_base.html:215 build/views.py:56
+#: build/templates/build/build_base.html:220 build/views.py:53
msgid "Cancel Build"
msgstr ""
@@ -1105,110 +1168,90 @@ msgstr ""
msgid "Build Description"
msgstr ""
-#: build/templates/build/build_base.html:96
+#: build/templates/build/build_base.html:101
#, python-format
msgid "This Build Order is allocated to Sales Order %(link)s"
msgstr ""
-#: build/templates/build/build_base.html:103
+#: build/templates/build/build_base.html:108
#, python-format
msgid "This Build Order is a child of Build Order %(link)s"
msgstr ""
-#: build/templates/build/build_base.html:110
+#: build/templates/build/build_base.html:115
msgid "Build Order is ready to mark as completed"
msgstr ""
-#: build/templates/build/build_base.html:115
+#: build/templates/build/build_base.html:120
msgid "Build Order cannot be completed as outstanding outputs remain"
msgstr ""
-#: build/templates/build/build_base.html:120
+#: build/templates/build/build_base.html:125
msgid "Required build quantity has not yet been completed"
msgstr ""
-#: build/templates/build/build_base.html:125
+#: build/templates/build/build_base.html:130
msgid "Stock has not been fully allocated to this Build Order"
msgstr ""
-#: build/templates/build/build_base.html:146
+#: build/templates/build/build_base.html:151
#: build/templates/build/detail.html:132
#: order/templates/order/order_base.html:156
#: order/templates/order/sales_order_base.html:163
#: report/templates/report/inventree_build_order_base.html:126
-#: templates/js/translated/build.js:1753 templates/js/translated/order.js:854
+#: templates/js/translated/build.js:1991 templates/js/translated/order.js:854
#: templates/js/translated/order.js:1276
msgid "Target Date"
msgstr ""
-#: build/templates/build/build_base.html:151
+#: build/templates/build/build_base.html:156
#, python-format
msgid "This build was due on %(target)s"
msgstr ""
-#: build/templates/build/build_base.html:151
-#: build/templates/build/build_base.html:196
+#: build/templates/build/build_base.html:156
+#: build/templates/build/build_base.html:201
#: order/templates/order/order_base.html:98
#: order/templates/order/sales_order_base.html:93
-#: templates/js/translated/table_filters.js:299
-#: templates/js/translated/table_filters.js:340
-#: templates/js/translated/table_filters.js:361
+#: templates/js/translated/table_filters.js:294
+#: templates/js/translated/table_filters.js:335
+#: templates/js/translated/table_filters.js:356
msgid "Overdue"
msgstr ""
-#: build/templates/build/build_base.html:158
+#: build/templates/build/build_base.html:163
#: build/templates/build/detail.html:68 build/templates/build/detail.html:143
#: order/templates/order/sales_order_base.html:170
-#: templates/js/translated/build.js:1702
-#: templates/js/translated/table_filters.js:370
+#: templates/js/translated/build.js:1940
+#: templates/js/translated/table_filters.js:365
msgid "Completed"
msgstr "Đã hoàn thành"
-#: build/templates/build/build_base.html:171
+#: build/templates/build/build_base.html:176
#: build/templates/build/detail.html:95 order/models.py:947
#: order/models.py:1043 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:307
-#: templates/js/translated/order.js:1218 templates/js/translated/stock.js:2304
+#: stock/templates/stock/item_base.html:309
+#: templates/js/translated/order.js:1218 templates/js/translated/stock.js:2428
msgid "Sales Order"
msgstr ""
-#: build/templates/build/build_base.html:178
+#: build/templates/build/build_base.html:183
#: build/templates/build/detail.html:109
#: report/templates/report/inventree_build_order_base.html:153
msgid "Issued By"
msgstr ""
-#: build/templates/build/build_base.html:223
+#: build/templates/build/build_base.html:228
msgid "Incomplete Outputs"
msgstr ""
-#: build/templates/build/build_base.html:224
+#: build/templates/build/build_base.html:229
msgid "Build Order cannot be completed as incomplete build outputs remain"
msgstr ""
-#: build/templates/build/build_output_create.html:7
-msgid "The Bill of Materials contains trackable parts"
-msgstr ""
-
-#: build/templates/build/build_output_create.html:8
-msgid "Build outputs must be generated individually."
-msgstr ""
-
-#: build/templates/build/build_output_create.html:9
-msgid "Multiple build outputs will be created based on the quantity specified."
-msgstr ""
-
-#: build/templates/build/build_output_create.html:15
-msgid "Trackable parts can have serial numbers specified"
-msgstr ""
-
-#: build/templates/build/build_output_create.html:16
-msgid "Enter serial numbers to generate multiple single build outputs"
-msgstr ""
-
#: build/templates/build/cancel.html:5
msgid "Are you sure you wish to cancel this build?"
msgstr ""
@@ -1225,7 +1268,7 @@ msgstr ""
msgid "Stock can be taken from any available location."
msgstr ""
-#: build/templates/build/detail.html:50 order/models.py:898 stock/forms.py:136
+#: build/templates/build/detail.html:50 order/models.py:898 stock/forms.py:133
#: templates/js/translated/order.js:592 templates/js/translated/order.js:1138
msgid "Destination"
msgstr ""
@@ -1234,13 +1277,13 @@ msgstr ""
msgid "Destination location not specified"
msgstr ""
-#: build/templates/build/detail.html:74 templates/js/translated/build.js:707
+#: build/templates/build/detail.html:74 templates/js/translated/build.js:929
msgid "Allocated Parts"
msgstr ""
#: build/templates/build/detail.html:81
-#: stock/templates/stock/item_base.html:331
-#: templates/js/translated/stock.js:1673 templates/js/translated/stock.js:2802
+#: stock/templates/stock/item_base.html:333
+#: templates/js/translated/stock.js:1797 templates/js/translated/stock.js:2926
#: templates/js/translated/table_filters.js:151
#: templates/js/translated/table_filters.js:238
msgid "Batch"
@@ -1249,7 +1292,7 @@ msgstr ""
#: build/templates/build/detail.html:127
#: order/templates/order/order_base.html:143
#: order/templates/order/sales_order_base.html:157
-#: templates/js/translated/build.js:1724
+#: templates/js/translated/build.js:1962
msgid "Created"
msgstr ""
@@ -1269,7 +1312,7 @@ msgstr ""
msgid "Allocate Stock to Build"
msgstr ""
-#: build/templates/build/detail.html:177 templates/js/translated/build.js:1262
+#: build/templates/build/detail.html:177 templates/js/translated/build.js:1484
msgid "Unallocate stock"
msgstr ""
@@ -1329,52 +1372,60 @@ msgid "Output Actions"
msgstr ""
#: build/templates/build/detail.html:250
-msgid "Complete selected items"
+msgid "Complete selected build outputs"
msgstr ""
#: build/templates/build/detail.html:251
msgid "Complete outputs"
msgstr ""
-#: build/templates/build/detail.html:266
+#: build/templates/build/detail.html:253
+msgid "Delete selected build outputs"
+msgstr ""
+
+#: build/templates/build/detail.html:254
+msgid "Delete outputs"
+msgstr ""
+
+#: build/templates/build/detail.html:270
msgid "Completed Build Outputs"
msgstr ""
-#: build/templates/build/detail.html:278 build/templates/build/sidebar.html:19
+#: build/templates/build/detail.html:282 build/templates/build/sidebar.html:19
#: order/templates/order/po_sidebar.html:9
#: order/templates/order/purchase_order_detail.html:60
#: order/templates/order/sales_order_detail.html:107
-#: order/templates/order/so_sidebar.html:15 part/templates/part/detail.html:213
-#: part/templates/part/part_sidebar.html:52 stock/templates/stock/item.html:112
+#: order/templates/order/so_sidebar.html:15 part/templates/part/detail.html:216
+#: part/templates/part/part_sidebar.html:55 stock/templates/stock/item.html:112
#: stock/templates/stock/stock_sidebar.html:23
msgid "Attachments"
msgstr ""
-#: build/templates/build/detail.html:294
+#: build/templates/build/detail.html:298
msgid "Build Notes"
msgstr ""
-#: build/templates/build/detail.html:298 build/templates/build/detail.html:453
+#: build/templates/build/detail.html:302 build/templates/build/detail.html:478
#: company/templates/company/detail.html:188
#: company/templates/company/detail.html:215
#: order/templates/order/purchase_order_detail.html:80
#: order/templates/order/purchase_order_detail.html:108
#: order/templates/order/sales_order_detail.html:127
#: order/templates/order/sales_order_detail.html:186
-#: part/templates/part/detail.html:141 stock/templates/stock/item.html:132
-#: stock/templates/stock/item.html:235
+#: part/templates/part/detail.html:144 stock/templates/stock/item.html:132
+#: stock/templates/stock/item.html:230
msgid "Edit Notes"
msgstr ""
-#: build/templates/build/detail.html:477
+#: build/templates/build/detail.html:502
msgid "Allocation Complete"
msgstr ""
-#: build/templates/build/detail.html:478
+#: build/templates/build/detail.html:503
msgid "All untracked stock items have been allocated"
msgstr ""
-#: build/templates/build/index.html:18 part/templates/part/detail.html:320
+#: build/templates/build/index.html:18 part/templates/part/detail.html:323
msgid "New Build Order"
msgstr ""
@@ -1406,51 +1457,11 @@ msgstr ""
msgid "Completed Items"
msgstr ""
-#: build/views.py:76
+#: build/views.py:73
msgid "Build was cancelled"
msgstr ""
-#: build/views.py:88
-msgid "Create Build Output"
-msgstr ""
-
-#: build/views.py:106
-msgid "Maximum output quantity is "
-msgstr ""
-
-#: build/views.py:122 stock/serializers.py:363 stock/views.py:1257
-msgid "Serial numbers already exist"
-msgstr ""
-
-#: build/views.py:131
-msgid "Serial numbers required for trackable build output"
-msgstr ""
-
-#: build/views.py:197
-msgid "Delete Build Output"
-msgstr ""
-
-#: build/views.py:218
-msgid "Confirm unallocation of build stock"
-msgstr ""
-
-#: build/views.py:219 stock/views.py:352
-msgid "Check the confirmation box"
-msgstr ""
-
-#: build/views.py:231
-msgid "Build output does not match build"
-msgstr ""
-
-#: build/views.py:233
-msgid "Build output must be specified"
-msgstr ""
-
-#: build/views.py:245
-msgid "Build output deleted"
-msgstr ""
-
-#: build/views.py:286
+#: build/views.py:114
msgid "Delete Build Order"
msgstr ""
@@ -1639,9 +1650,9 @@ msgstr ""
msgid "Copy category parameter templates when creating a part"
msgstr ""
-#: common/models.py:705 part/models.py:2489 report/models.py:187
+#: common/models.py:705 part/models.py:2525 report/models.py:187
#: templates/js/translated/table_filters.js:38
-#: templates/js/translated/table_filters.js:422
+#: templates/js/translated/table_filters.js:417
msgid "Template"
msgstr ""
@@ -1649,9 +1660,9 @@ msgstr ""
msgid "Parts are templates by default"
msgstr ""
-#: common/models.py:712 part/models.py:921 templates/js/translated/bom.js:1082
+#: common/models.py:712 part/models.py:951 templates/js/translated/bom.js:1300
#: templates/js/translated/table_filters.js:168
-#: templates/js/translated/table_filters.js:434
+#: templates/js/translated/table_filters.js:429
msgid "Assembly"
msgstr ""
@@ -1659,8 +1670,8 @@ msgstr ""
msgid "Parts can be assembled from other components by default"
msgstr ""
-#: common/models.py:719 part/models.py:927
-#: templates/js/translated/table_filters.js:438
+#: common/models.py:719 part/models.py:957
+#: templates/js/translated/table_filters.js:433
msgid "Component"
msgstr ""
@@ -1668,7 +1679,7 @@ msgstr ""
msgid "Parts can be used as sub-components by default"
msgstr ""
-#: common/models.py:726 part/models.py:938
+#: common/models.py:726 part/models.py:968
msgid "Purchaseable"
msgstr ""
@@ -1676,8 +1687,8 @@ msgstr ""
msgid "Parts are purchaseable by default"
msgstr ""
-#: common/models.py:733 part/models.py:943
-#: templates/js/translated/table_filters.js:446
+#: common/models.py:733 part/models.py:973
+#: templates/js/translated/table_filters.js:441
msgid "Salable"
msgstr ""
@@ -1685,10 +1696,10 @@ msgstr ""
msgid "Parts are salable by default"
msgstr ""
-#: common/models.py:740 part/models.py:933
+#: common/models.py:740 part/models.py:963
#: templates/js/translated/table_filters.js:46
#: templates/js/translated/table_filters.js:100
-#: templates/js/translated/table_filters.js:450
+#: templates/js/translated/table_filters.js:445
msgid "Trackable"
msgstr ""
@@ -1696,7 +1707,7 @@ msgstr ""
msgid "Parts are trackable by default"
msgstr ""
-#: common/models.py:747 part/models.py:953
+#: common/models.py:747 part/models.py:983
#: part/templates/part/part_base.html:147
#: templates/js/translated/table_filters.js:42
msgid "Virtual"
@@ -1730,589 +1741,595 @@ msgstr ""
msgid "Include pricing information in BOM tables"
msgstr ""
-#: common/models.py:780
+#: common/models.py:785
+msgid "Show Price History"
+msgstr ""
+
+#: common/models.py:786
+msgid "Display historical pricing for Part"
+msgstr ""
+
+#: common/models.py:792
msgid "Show related parts"
msgstr ""
-#: common/models.py:781
+#: common/models.py:793
msgid "Display related parts for a part"
msgstr ""
-#: common/models.py:787
+#: common/models.py:799
msgid "Create initial stock"
msgstr ""
-#: common/models.py:788
+#: common/models.py:800
msgid "Create initial stock on part creation"
msgstr ""
-#: common/models.py:794
+#: common/models.py:806
msgid "Internal Prices"
msgstr ""
-#: common/models.py:795
+#: common/models.py:807
msgid "Enable internal prices for parts"
msgstr ""
-#: common/models.py:801
+#: common/models.py:813
msgid "Internal Price as BOM-Price"
msgstr ""
-#: common/models.py:802
+#: common/models.py:814
msgid "Use the internal price (if set) in BOM-price calculations"
msgstr ""
-#: common/models.py:808
+#: common/models.py:820
msgid "Part Name Display Format"
msgstr ""
-#: common/models.py:809
+#: common/models.py:821
msgid "Format to display the part name"
msgstr ""
-#: common/models.py:816
+#: common/models.py:828
msgid "Enable Reports"
msgstr ""
-#: common/models.py:817
+#: common/models.py:829
msgid "Enable generation of reports"
msgstr ""
-#: common/models.py:823 templates/stats.html:25
+#: common/models.py:835 templates/stats.html:25
msgid "Debug Mode"
msgstr ""
-#: common/models.py:824
+#: common/models.py:836
msgid "Generate reports in debug mode (HTML output)"
msgstr ""
-#: common/models.py:830
+#: common/models.py:842
msgid "Page Size"
msgstr ""
-#: common/models.py:831
+#: common/models.py:843
msgid "Default page size for PDF reports"
msgstr ""
-#: common/models.py:841
+#: common/models.py:853
msgid "Test Reports"
msgstr ""
-#: common/models.py:842
+#: common/models.py:854
msgid "Enable generation of test reports"
msgstr ""
-#: common/models.py:848
+#: common/models.py:860
msgid "Stock Expiry"
msgstr ""
-#: common/models.py:849
+#: common/models.py:861
msgid "Enable stock expiry functionality"
msgstr ""
-#: common/models.py:855
+#: common/models.py:867
msgid "Sell Expired Stock"
msgstr ""
-#: common/models.py:856
+#: common/models.py:868
msgid "Allow sale of expired stock"
msgstr ""
-#: common/models.py:862
+#: common/models.py:874
msgid "Stock Stale Time"
msgstr ""
-#: common/models.py:863
+#: common/models.py:875
msgid "Number of days stock items are considered stale before expiring"
msgstr ""
-#: common/models.py:865
+#: common/models.py:877
msgid "days"
msgstr ""
-#: common/models.py:870
+#: common/models.py:882
msgid "Build Expired Stock"
msgstr ""
-#: common/models.py:871
+#: common/models.py:883
msgid "Allow building with expired stock"
msgstr ""
-#: common/models.py:877
+#: common/models.py:889
msgid "Stock Ownership Control"
msgstr ""
-#: common/models.py:878
+#: common/models.py:890
msgid "Enable ownership control over stock locations and items"
msgstr ""
-#: common/models.py:884
+#: common/models.py:896
msgid "Build Order Reference Prefix"
msgstr ""
-#: common/models.py:885
+#: common/models.py:897
msgid "Prefix value for build order reference"
msgstr ""
-#: common/models.py:890
+#: common/models.py:902
msgid "Build Order Reference Regex"
msgstr ""
-#: common/models.py:891
+#: common/models.py:903
msgid "Regular expression pattern for matching build order reference"
msgstr ""
-#: common/models.py:895
+#: common/models.py:907
msgid "Sales Order Reference Prefix"
msgstr ""
-#: common/models.py:896
+#: common/models.py:908
msgid "Prefix value for sales order reference"
msgstr ""
-#: common/models.py:901
+#: common/models.py:913
msgid "Purchase Order Reference Prefix"
msgstr ""
-#: common/models.py:902
+#: common/models.py:914
msgid "Prefix value for purchase order reference"
msgstr ""
-#: common/models.py:908
+#: common/models.py:920
msgid "Enable password forgot"
msgstr ""
-#: common/models.py:909
+#: common/models.py:921
msgid "Enable password forgot function on the login pages"
msgstr ""
-#: common/models.py:914
+#: common/models.py:926
msgid "Enable registration"
msgstr ""
-#: common/models.py:915
+#: common/models.py:927
msgid "Enable self-registration for users on the login pages"
msgstr ""
-#: common/models.py:920
+#: common/models.py:932
msgid "Enable SSO"
msgstr ""
-#: common/models.py:921
+#: common/models.py:933
msgid "Enable SSO on the login pages"
msgstr ""
-#: common/models.py:926
+#: common/models.py:938
msgid "Email required"
msgstr ""
-#: common/models.py:927
+#: common/models.py:939
msgid "Require user to supply mail on signup"
msgstr ""
-#: common/models.py:932
+#: common/models.py:944
msgid "Auto-fill SSO users"
msgstr ""
-#: common/models.py:933
+#: common/models.py:945
msgid "Automatically fill out user-details from SSO account-data"
msgstr ""
-#: common/models.py:938
+#: common/models.py:950
msgid "Mail twice"
msgstr ""
-#: common/models.py:939
+#: common/models.py:951
msgid "On signup ask users twice for their mail"
msgstr ""
-#: common/models.py:944
+#: common/models.py:956
msgid "Password twice"
msgstr ""
-#: common/models.py:945
+#: common/models.py:957
msgid "On signup ask users twice for their password"
msgstr ""
-#: common/models.py:950
+#: common/models.py:962
msgid "Group on signup"
msgstr ""
-#: common/models.py:951
+#: common/models.py:963
msgid "Group to which new users are assigned on registration"
msgstr ""
-#: common/models.py:956
+#: common/models.py:968
msgid "Enforce MFA"
msgstr ""
-#: common/models.py:957
+#: common/models.py:969
msgid "Users must use multifactor security."
msgstr ""
-#: common/models.py:964
+#: common/models.py:976
msgid "Enable URL integration"
msgstr ""
-#: common/models.py:965
+#: common/models.py:977
msgid "Enable plugins to add URL routes"
msgstr ""
-#: common/models.py:971
+#: common/models.py:983
msgid "Enable navigation integration"
msgstr ""
-#: common/models.py:972
+#: common/models.py:984
msgid "Enable plugins to integrate into navigation"
msgstr ""
-#: common/models.py:978
+#: common/models.py:990
msgid "Enable app integration"
msgstr ""
-#: common/models.py:979
+#: common/models.py:991
msgid "Enable plugins to add apps"
msgstr ""
-#: common/models.py:985
+#: common/models.py:997
msgid "Enable schedule integration"
msgstr ""
-#: common/models.py:986
+#: common/models.py:998
msgid "Enable plugins to run scheduled tasks"
msgstr ""
-#: common/models.py:992
+#: common/models.py:1004
msgid "Enable event integration"
msgstr ""
-#: common/models.py:993
+#: common/models.py:1005
msgid "Enable plugins to respond to internal events"
msgstr ""
-#: common/models.py:1008 common/models.py:1216
+#: common/models.py:1020 common/models.py:1228
msgid "Settings key (must be unique - case insensitive"
msgstr ""
-#: common/models.py:1039
+#: common/models.py:1051
msgid "Show subscribed parts"
msgstr ""
-#: common/models.py:1040
+#: common/models.py:1052
msgid "Show subscribed parts on the homepage"
msgstr ""
-#: common/models.py:1045
+#: common/models.py:1057
msgid "Show subscribed categories"
msgstr ""
-#: common/models.py:1046
+#: common/models.py:1058
msgid "Show subscribed part categories on the homepage"
msgstr ""
-#: common/models.py:1051
+#: common/models.py:1063
msgid "Show latest parts"
msgstr "Hiển thị nguyên liệu mới nhất"
-#: common/models.py:1052
+#: common/models.py:1064
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:1057
+#: common/models.py:1069
msgid "Recent Part Count"
msgstr ""
-#: common/models.py:1058
+#: common/models.py:1070
msgid "Number of recent parts to display on index page"
msgstr ""
-#: common/models.py:1064
+#: common/models.py:1076
msgid "Show unvalidated BOMs"
msgstr ""
-#: common/models.py:1065
+#: common/models.py:1077
msgid "Show BOMs that await validation on the homepage"
msgstr ""
-#: common/models.py:1070
+#: common/models.py:1082
msgid "Show recent stock changes"
msgstr ""
-#: common/models.py:1071
+#: common/models.py:1083
msgid "Show recently changed stock items on the homepage"
msgstr ""
-#: common/models.py:1076
+#: common/models.py:1088
msgid "Recent Stock Count"
msgstr ""
-#: common/models.py:1077
+#: common/models.py:1089
msgid "Number of recent stock items to display on index page"
msgstr ""
-#: common/models.py:1082
+#: common/models.py:1094
msgid "Show low stock"
msgstr ""
-#: common/models.py:1083
+#: common/models.py:1095
msgid "Show low stock items on the homepage"
msgstr ""
-#: common/models.py:1088
+#: common/models.py:1100
msgid "Show depleted stock"
msgstr ""
-#: common/models.py:1089
+#: common/models.py:1101
msgid "Show depleted stock items on the homepage"
msgstr ""
-#: common/models.py:1094
+#: common/models.py:1106
msgid "Show needed stock"
msgstr ""
-#: common/models.py:1095
+#: common/models.py:1107
msgid "Show stock items needed for builds on the homepage"
msgstr ""
-#: common/models.py:1100
+#: common/models.py:1112
msgid "Show expired stock"
msgstr ""
-#: common/models.py:1101
+#: common/models.py:1113
msgid "Show expired stock items on the homepage"
msgstr ""
-#: common/models.py:1106
+#: common/models.py:1118
msgid "Show stale stock"
msgstr ""
-#: common/models.py:1107
+#: common/models.py:1119
msgid "Show stale stock items on the homepage"
msgstr ""
-#: common/models.py:1112
+#: common/models.py:1124
msgid "Show pending builds"
msgstr ""
-#: common/models.py:1113
+#: common/models.py:1125
msgid "Show pending builds on the homepage"
msgstr ""
-#: common/models.py:1118
+#: common/models.py:1130
msgid "Show overdue builds"
msgstr ""
-#: common/models.py:1119
+#: common/models.py:1131
msgid "Show overdue builds on the homepage"
msgstr ""
-#: common/models.py:1124
+#: common/models.py:1136
msgid "Show outstanding POs"
msgstr ""
-#: common/models.py:1125
+#: common/models.py:1137
msgid "Show outstanding POs on the homepage"
msgstr ""
-#: common/models.py:1130
+#: common/models.py:1142
msgid "Show overdue POs"
msgstr ""
-#: common/models.py:1131
+#: common/models.py:1143
msgid "Show overdue POs on the homepage"
msgstr ""
-#: common/models.py:1136
+#: common/models.py:1148
msgid "Show outstanding SOs"
msgstr ""
-#: common/models.py:1137
+#: common/models.py:1149
msgid "Show outstanding SOs on the homepage"
msgstr ""
-#: common/models.py:1142
+#: common/models.py:1154
msgid "Show overdue SOs"
msgstr ""
-#: common/models.py:1143
+#: common/models.py:1155
msgid "Show overdue SOs on the homepage"
msgstr ""
-#: common/models.py:1149
+#: common/models.py:1161
msgid "Inline label display"
msgstr ""
-#: common/models.py:1150
+#: common/models.py:1162
msgid "Display PDF labels in the browser, instead of downloading as a file"
msgstr ""
-#: common/models.py:1156
+#: common/models.py:1168
msgid "Inline report display"
msgstr ""
-#: common/models.py:1157
+#: common/models.py:1169
msgid "Display PDF reports in the browser, instead of downloading as a file"
msgstr ""
-#: common/models.py:1163
+#: common/models.py:1175
msgid "Search Preview Results"
msgstr ""
-#: common/models.py:1164
+#: common/models.py:1176
msgid "Number of results to show in search preview window"
msgstr ""
-#: common/models.py:1170
+#: common/models.py:1182
msgid "Search Show Stock"
msgstr ""
-#: common/models.py:1171
+#: common/models.py:1183
msgid "Display stock levels in search preview window"
msgstr ""
-#: common/models.py:1177
+#: common/models.py:1189
msgid "Hide Inactive Parts"
msgstr ""
-#: common/models.py:1178
+#: common/models.py:1190
msgid "Hide inactive parts in search preview window"
msgstr ""
-#: common/models.py:1184
+#: common/models.py:1196
msgid "Show Quantity in Forms"
msgstr ""
-#: common/models.py:1185
+#: common/models.py:1197
msgid "Display available part quantity in some forms"
msgstr ""
-#: common/models.py:1191
+#: common/models.py:1203
msgid "Escape Key Closes Forms"
msgstr ""
-#: common/models.py:1192
+#: common/models.py:1204
msgid "Use the escape key to close modal forms"
msgstr ""
-#: common/models.py:1198
+#: common/models.py:1210
msgid "Fixed Navbar"
msgstr ""
-#: common/models.py:1199
+#: common/models.py:1211
msgid "InvenTree navbar position is fixed to the top of the screen"
msgstr ""
-#: common/models.py:1264 company/forms.py:43
+#: common/models.py:1276 company/forms.py:43
msgid "Price break quantity"
msgstr ""
-#: common/models.py:1271 company/serializers.py:264
+#: common/models.py:1283 company/serializers.py:264
#: company/templates/company/supplier_part.html:256
#: templates/js/translated/part.js:915 templates/js/translated/part.js:1867
msgid "Price"
msgstr ""
-#: common/models.py:1272
+#: common/models.py:1284
msgid "Unit price at specified quantity"
msgstr ""
-#: common/models.py:1429 common/models.py:1568
+#: common/models.py:1441 common/models.py:1580
msgid "Endpoint"
msgstr ""
-#: common/models.py:1430
+#: common/models.py:1442
msgid "Endpoint at which this webhook is received"
msgstr ""
-#: common/models.py:1439
+#: common/models.py:1451
msgid "Name for this webhook"
msgstr ""
-#: common/models.py:1444 part/models.py:948 plugin/models.py:46
+#: common/models.py:1456 part/models.py:978 plugin/models.py:46
#: templates/js/translated/table_filters.js:34
#: templates/js/translated/table_filters.js:96
-#: templates/js/translated/table_filters.js:295
-#: templates/js/translated/table_filters.js:417
+#: templates/js/translated/table_filters.js:290
+#: templates/js/translated/table_filters.js:412
msgid "Active"
msgstr ""
-#: common/models.py:1445
+#: common/models.py:1457
msgid "Is this webhook active"
msgstr ""
-#: common/models.py:1459
+#: common/models.py:1471
msgid "Token"
msgstr ""
-#: common/models.py:1460
+#: common/models.py:1472
msgid "Token for access"
msgstr ""
-#: common/models.py:1467
+#: common/models.py:1479
msgid "Secret"
msgstr ""
-#: common/models.py:1468
+#: common/models.py:1480
msgid "Shared secret for HMAC"
msgstr ""
-#: common/models.py:1535
+#: common/models.py:1547
msgid "Message ID"
msgstr ""
-#: common/models.py:1536
+#: common/models.py:1548
msgid "Unique identifier for this message"
msgstr ""
-#: common/models.py:1544
+#: common/models.py:1556
msgid "Host"
msgstr ""
-#: common/models.py:1545
+#: common/models.py:1557
msgid "Host from which this message was received"
msgstr ""
-#: common/models.py:1552
+#: common/models.py:1564
msgid "Header"
msgstr ""
-#: common/models.py:1553
+#: common/models.py:1565
msgid "Header of this message"
msgstr ""
-#: common/models.py:1559
+#: common/models.py:1571
msgid "Body"
msgstr ""
-#: common/models.py:1560
+#: common/models.py:1572
msgid "Body of this message"
msgstr ""
-#: common/models.py:1569
+#: common/models.py:1581
msgid "Endpoint on which this message was received"
msgstr ""
-#: common/models.py:1574
+#: common/models.py:1586
msgid "Worked on"
msgstr ""
-#: common/models.py:1575
+#: common/models.py:1587
msgid "Was the work on this message finished?"
msgstr ""
#: common/views.py:93 order/templates/order/order_wizard/po_upload.html:49
#: order/templates/order/purchase_order_detail.html:24 order/views.py:243
-#: part/templates/part/bom_upload/upload_file.html:52
-#: part/templates/part/import_wizard/part_upload.html:47 part/views.py:213
-#: part/views.py:773
+#: part/templates/part/import_wizard/part_upload.html:47 part/views.py:210
+#: templates/patterns/wizard/upload.html:35
msgid "Upload File"
msgstr ""
-#: common/views.py:94 order/templates/order/order_wizard/match_fields.html:52
-#: order/views.py:244 part/templates/part/bom_upload/match_fields.html:52
+#: common/views.py:94 order/views.py:244
#: part/templates/part/import_wizard/ajax_match_fields.html:45
-#: part/templates/part/import_wizard/match_fields.html:52 part/views.py:214
-#: part/views.py:774
+#: part/templates/part/import_wizard/match_fields.html:52 part/views.py:211
+#: templates/patterns/wizard/match_fields.html:51
msgid "Match Fields"
msgstr ""
@@ -2328,15 +2345,13 @@ msgstr ""
msgid "Parts imported"
msgstr ""
-#: common/views.py:517 order/templates/order/order_wizard/match_fields.html:27
-#: order/templates/order/order_wizard/match_parts.html:19
+#: common/views.py:517 order/templates/order/order_wizard/match_parts.html:19
#: order/templates/order/order_wizard/po_upload.html:47
-#: part/templates/part/bom_upload/match_fields.html:27
-#: part/templates/part/bom_upload/match_parts.html:19
-#: part/templates/part/bom_upload/upload_file.html:50
#: part/templates/part/import_wizard/match_fields.html:27
#: part/templates/part/import_wizard/match_references.html:19
#: part/templates/part/import_wizard/part_upload.html:45
+#: templates/patterns/wizard/match_fields.html:26
+#: templates/patterns/wizard/upload.html:33
msgid "Previous Step"
msgstr ""
@@ -2404,7 +2419,7 @@ msgstr ""
msgid "Link to external company information"
msgstr ""
-#: company/models.py:139 part/models.py:840
+#: company/models.py:139 part/models.py:870
msgid "Image"
msgstr ""
@@ -2442,7 +2457,7 @@ msgid "Default currency used for this company"
msgstr ""
#: company/models.py:320 company/models.py:535 stock/models.py:471
-#: stock/templates/stock/item_base.html:142 templates/js/translated/bom.js:328
+#: stock/templates/stock/item_base.html:144 templates/js/translated/bom.js:541
msgid "Base Part"
msgstr ""
@@ -2453,11 +2468,11 @@ 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:380
+#: stock/templates/stock/item_base.html:382
#: templates/js/translated/company.js:333
#: templates/js/translated/company.js:517
#: templates/js/translated/company.js:800 templates/js/translated/part.js:234
-#: templates/js/translated/table_filters.js:389
+#: templates/js/translated/table_filters.js:384
msgid "Manufacturer"
msgstr "Nhà sản xuất"
@@ -2488,7 +2503,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:390
+#: stock/templates/stock/item_base.html:392
msgid "Manufacturer Part"
msgstr ""
@@ -2499,7 +2514,7 @@ msgstr ""
#: company/models.py:422
#: report/templates/report/inventree_test_report_base.html:95
#: stock/models.py:1988 templates/js/translated/company.js:647
-#: templates/js/translated/part.js:715 templates/js/translated/stock.js:1304
+#: templates/js/translated/part.js:715 templates/js/translated/stock.js:1332
msgid "Value"
msgstr ""
@@ -2507,9 +2522,9 @@ msgstr ""
msgid "Parameter value"
msgstr ""
-#: company/models.py:429 part/models.py:915 part/models.py:2457
+#: company/models.py:429 part/models.py:945 part/models.py:2493
#: part/templates/part/part_base.html:288
-#: templates/InvenTree/settings/settings.html:287
+#: templates/InvenTree/settings/settings.html:324
#: templates/js/translated/company.js:653 templates/js/translated/part.js:721
msgid "Units"
msgstr ""
@@ -2526,11 +2541,11 @@ msgstr ""
#: company/templates/company/supplier_part.html:87 order/models.py:227
#: order/templates/order/order_base.html:112
#: order/templates/order/order_wizard/select_pos.html:30 part/bom.py:237
-#: part/bom.py:265 stock/templates/stock/item_base.html:397
+#: part/bom.py:265 stock/templates/stock/item_base.html:399
#: templates/js/translated/company.js:337
#: templates/js/translated/company.js:774 templates/js/translated/order.js:823
#: templates/js/translated/part.js:215 templates/js/translated/part.js:863
-#: templates/js/translated/table_filters.js:393
+#: templates/js/translated/table_filters.js:388
msgid "Supplier"
msgstr "Nhà cung cấp"
@@ -2561,22 +2576,23 @@ msgid "Supplier part description"
msgstr ""
#: company/models.py:576 company/templates/company/supplier_part.html:119
-#: part/models.py:2648 report/templates/report/inventree_po_report.html:93
-#: report/templates/report/inventree_so_report.html:93
+#: part/models.py:2717 part/templates/part/upload_bom.html:59
+#: report/templates/report/inventree_po_report.html:93
+#: report/templates/report/inventree_so_report.html:93 stock/serializers.py:409
msgid "Note"
msgstr ""
-#: company/models.py:580 part/models.py:1781
+#: company/models.py:580 part/models.py:1817
msgid "base cost"
msgstr ""
-#: company/models.py:580 part/models.py:1781
+#: company/models.py:580 part/models.py:1817
msgid "Minimum charge (e.g. stocking fee)"
msgstr ""
#: company/models.py:582 company/templates/company/supplier_part.html:112
-#: stock/models.py:495 stock/templates/stock/item_base.html:338
-#: templates/js/translated/company.js:850 templates/js/translated/stock.js:1799
+#: stock/models.py:495 stock/templates/stock/item_base.html:340
+#: templates/js/translated/company.js:850 templates/js/translated/stock.js:1923
msgid "Packaging"
msgstr ""
@@ -2584,7 +2600,7 @@ msgstr ""
msgid "Part packaging"
msgstr ""
-#: company/models.py:584 part/models.py:1783
+#: company/models.py:584 part/models.py:1819
msgid "multiple"
msgstr ""
@@ -2645,11 +2661,11 @@ msgstr ""
#: company/templates/company/company_base.html:83 order/models.py:552
#: order/templates/order/sales_order_base.html:115 stock/models.py:514
-#: stock/models.py:515 stock/serializers.py:626
-#: stock/templates/stock/item_base.html:290
+#: stock/models.py:515 stock/serializers.py:683
+#: stock/templates/stock/item_base.html:292
#: templates/js/translated/company.js:329 templates/js/translated/order.js:1240
-#: templates/js/translated/stock.js:2610
-#: templates/js/translated/table_filters.js:397
+#: templates/js/translated/stock.js:2734
+#: templates/js/translated/table_filters.js:392
msgid "Customer"
msgstr ""
@@ -2679,7 +2695,7 @@ msgstr ""
#: company/templates/company/detail.html:20
#: company/templates/company/manufacturer_part.html:118
-#: part/templates/part/detail.html:353
+#: part/templates/part/detail.html:356
msgid "New Supplier Part"
msgstr ""
@@ -2687,8 +2703,8 @@ msgstr ""
#: company/templates/company/detail.html:79
#: company/templates/company/manufacturer_part.html:127
#: company/templates/company/manufacturer_part.html:156
-#: part/templates/part/category.html:171 part/templates/part/detail.html:362
-#: part/templates/part/detail.html:391
+#: part/templates/part/category.html:171 part/templates/part/detail.html:365
+#: part/templates/part/detail.html:394
msgid "Options"
msgstr ""
@@ -2716,7 +2732,7 @@ msgstr ""
msgid "Create new manufacturer part"
msgstr ""
-#: company/templates/company/detail.html:67 part/templates/part/detail.html:381
+#: company/templates/company/detail.html:67 part/templates/part/detail.html:384
msgid "New Manufacturer Part"
msgstr ""
@@ -2730,7 +2746,7 @@ msgstr ""
#: order/templates/order/order_base.html:13
#: order/templates/order/purchase_orders.html:8
#: order/templates/order/purchase_orders.html:12
-#: part/templates/part/detail.html:85 part/templates/part/part_sidebar.html:37
+#: part/templates/part/detail.html:85 part/templates/part/part_sidebar.html:40
#: templates/InvenTree/index.html:252 templates/InvenTree/search.html:197
#: templates/InvenTree/settings/sidebar.html:45 templates/navbar.html:47
#: users/models.py:45
@@ -2752,7 +2768,7 @@ msgstr ""
#: order/templates/order/sales_order_base.html:13
#: order/templates/order/sales_orders.html:8
#: order/templates/order/sales_orders.html:15
-#: part/templates/part/detail.html:108 part/templates/part/part_sidebar.html:41
+#: part/templates/part/detail.html:108 part/templates/part/part_sidebar.html:44
#: templates/InvenTree/index.html:283 templates/InvenTree/search.html:217
#: templates/InvenTree/settings/sidebar.html:47 templates/navbar.html:58
#: users/models.py:46
@@ -2770,7 +2786,7 @@ msgid "New Sales Order"
msgstr ""
#: company/templates/company/detail.html:168
-#: templates/js/translated/build.js:1059
+#: templates/js/translated/build.js:1281
msgid "Assigned Stock"
msgstr ""
@@ -2780,13 +2796,13 @@ msgstr ""
#: company/templates/company/detail.html:384
#: company/templates/company/manufacturer_part.html:215
-#: part/templates/part/detail.html:435
+#: part/templates/part/detail.html:438
msgid "Delete Supplier Parts?"
msgstr ""
#: company/templates/company/detail.html:385
#: company/templates/company/manufacturer_part.html:216
-#: part/templates/part/detail.html:436
+#: part/templates/part/detail.html:439
msgid "All selected supplier parts will be deleted"
msgstr ""
@@ -2824,36 +2840,36 @@ 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:35 part/templates/part/prices.html:163
+#: part/templates/part/part_sidebar.html:38 part/templates/part/prices.html:163
#: templates/InvenTree/search.html:188 templates/navbar.html:45
msgid "Suppliers"
msgstr ""
#: company/templates/company/manufacturer_part.html:129
-#: part/templates/part/detail.html:364
+#: part/templates/part/detail.html:367
msgid "Delete supplier parts"
msgstr ""
#: company/templates/company/manufacturer_part.html:129
#: company/templates/company/manufacturer_part.html:158
#: company/templates/company/manufacturer_part.html:254
-#: part/templates/part/detail.html:364 part/templates/part/detail.html:393
+#: part/templates/part/detail.html:367 part/templates/part/detail.html:396
#: templates/js/translated/company.js:426 templates/js/translated/helpers.js:31
-#: users/models.py:212
+#: users/models.py:217
msgid "Delete"
msgstr ""
#: company/templates/company/manufacturer_part.html:143
#: company/templates/company/manufacturer_part_sidebar.html:5
#: part/templates/part/category_sidebar.html:17
-#: part/templates/part/detail.html:187 part/templates/part/part_sidebar.html:8
+#: part/templates/part/detail.html:190 part/templates/part/part_sidebar.html:9
msgid "Parameters"
msgstr ""
#: company/templates/company/manufacturer_part.html:147
-#: part/templates/part/detail.html:192
+#: part/templates/part/detail.html:195
#: templates/InvenTree/settings/category.html:12
-#: templates/InvenTree/settings/part.html:65
+#: templates/InvenTree/settings/part.html:66
msgid "New Parameter"
msgstr ""
@@ -2862,7 +2878,7 @@ msgid "Delete parameters"
msgstr ""
#: company/templates/company/manufacturer_part.html:191
-#: part/templates/part/detail.html:892
+#: part/templates/part/detail.html:895
msgid "Add Parameter"
msgstr ""
@@ -2892,8 +2908,8 @@ msgstr ""
#: company/templates/company/supplier_part.html:7
#: company/templates/company/supplier_part.html:24 stock/models.py:479
-#: stock/templates/stock/item_base.html:402
-#: templates/js/translated/company.js:790 templates/js/translated/stock.js:1756
+#: stock/templates/stock/item_base.html:404
+#: templates/js/translated/company.js:790 templates/js/translated/stock.js:1880
msgid "Supplier Part"
msgstr ""
@@ -2919,7 +2935,7 @@ msgstr ""
#: company/templates/company/supplier_part.html:142
#: part/templates/part/detail.html:25 stock/templates/stock/location.html:167
-#: templates/js/translated/stock.js:368
+#: templates/js/translated/stock.js:369
msgid "New Stock Item"
msgstr ""
@@ -2940,7 +2956,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:1628
+#: part/templates/part/prices.html:271 part/views.py:1319
msgid "Add Price Break"
msgstr ""
@@ -2948,11 +2964,11 @@ msgstr ""
msgid "No price break information found"
msgstr ""
-#: company/templates/company/supplier_part.html:224 part/views.py:1690
+#: company/templates/company/supplier_part.html:224 part/views.py:1381
msgid "Delete Price Break"
msgstr ""
-#: company/templates/company/supplier_part.html:238 part/views.py:1676
+#: company/templates/company/supplier_part.html:238 part/views.py:1367
msgid "Edit Price Break"
msgstr ""
@@ -2965,15 +2981,15 @@ msgid "Delete price break"
msgstr ""
#: company/templates/company/supplier_part_navbar.html:15
-#: part/templates/part/part_sidebar.html:14
+#: part/templates/part/part_sidebar.html:15
#: 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:150
#: templates/InvenTree/settings/sidebar.html:41
-#: templates/js/translated/bom.js:340 templates/js/translated/part.js:495
+#: templates/js/translated/bom.js:553 templates/js/translated/part.js:495
#: templates/js/translated/part.js:630 templates/js/translated/part.js:1125
-#: templates/js/translated/part.js:1286 templates/js/translated/stock.js:935
-#: templates/js/translated/stock.js:1588 templates/navbar.html:28
+#: templates/js/translated/part.js:1286 templates/js/translated/stock.js:936
+#: templates/js/translated/stock.js:1712 templates/navbar.html:28
msgid "Stock"
msgstr "Kiện hàng"
@@ -2987,7 +3003,7 @@ msgid "Supplier Part Pricing"
msgstr ""
#: company/templates/company/supplier_part_navbar.html:29
-#: part/templates/part/part_sidebar.html:28
+#: part/templates/part/part_sidebar.html:30
msgid "Pricing"
msgstr ""
@@ -2996,7 +3012,7 @@ msgstr ""
#: stock/templates/stock/location.html:151
#: stock/templates/stock/location.html:163
#: stock/templates/stock/location_sidebar.html:7
-#: templates/InvenTree/search.html:152 templates/js/translated/stock.js:2509
+#: templates/InvenTree/search.html:152 templates/js/translated/stock.js:2633
#: templates/stats.html:105 templates/stats.html:114 users/models.py:43
msgid "Stock Items"
msgstr ""
@@ -3026,20 +3042,20 @@ msgstr ""
msgid "New Company"
msgstr ""
-#: company/views.py:129 part/views.py:593
+#: company/views.py:129 part/views.py:591
msgid "Download Image"
msgstr ""
-#: company/views.py:158 part/views.py:625
+#: company/views.py:158 part/views.py:623
msgid "Image size exceeds maximum allowable size for download"
msgstr ""
-#: company/views.py:165 part/views.py:632
+#: company/views.py:165 part/views.py:630
#, python-brace-format
msgid "Invalid response: {code}"
msgstr ""
-#: company/views.py:174 part/views.py:641
+#: company/views.py:174 part/views.py:639
msgid "Supplied URL is not a valid image file"
msgstr ""
@@ -3256,16 +3272,16 @@ msgid "Supplier part must match supplier"
msgstr ""
#: order/models.py:855 order/models.py:946 order/models.py:1042
-#: templates/js/translated/order.js:1820 templates/js/translated/stock.js:2271
+#: templates/js/translated/order.js:1820 templates/js/translated/stock.js:2395
msgid "Order"
msgstr ""
#: order/models.py:856 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:352
+#: stock/templates/stock/item_base.html:354
#: templates/js/translated/order.js:801 templates/js/translated/part.js:838
-#: templates/js/translated/stock.js:1733 templates/js/translated/stock.js:2591
+#: templates/js/translated/stock.js:1857 templates/js/translated/stock.js:2715
msgid "Purchase Order"
msgstr "Đơn hàng"
@@ -3276,7 +3292,7 @@ msgstr ""
#: order/models.py:884 order/templates/order/order_base.html:163
#: templates/js/translated/order.js:589 templates/js/translated/order.js:1118
#: templates/js/translated/part.js:910 templates/js/translated/part.js:937
-#: templates/js/translated/table_filters.js:317
+#: templates/js/translated/table_filters.js:312
msgid "Received"
msgstr ""
@@ -3285,8 +3301,8 @@ msgid "Number of items received"
msgstr ""
#: order/models.py:892 part/templates/part/prices.html:176 stock/models.py:608
-#: stock/serializers.py:170 stock/templates/stock/item_base.html:359
-#: templates/js/translated/stock.js:1787
+#: stock/serializers.py:170 stock/templates/stock/item_base.html:361
+#: templates/js/translated/stock.js:1911
msgid "Purchase Price"
msgstr "Giá mua"
@@ -3530,7 +3546,7 @@ msgstr ""
#: order/templates/order/order_base.html:94
#: order/templates/order/sales_order_base.html:89
-#: templates/js/translated/stock.js:2327
+#: templates/js/translated/stock.js:2451
msgid "Order Status"
msgstr ""
@@ -3574,73 +3590,20 @@ msgstr ""
msgid "After placing this purchase order, line items will no longer be editable."
msgstr ""
-#: order/templates/order/order_wizard/match_fields.html:9
-#: part/templates/part/bom_upload/match_fields.html:9
-#: part/templates/part/import_wizard/ajax_match_fields.html:9
-#: part/templates/part/import_wizard/match_fields.html:9
-msgid "Missing selections for the following required columns"
-msgstr ""
-
-#: order/templates/order/order_wizard/match_fields.html:20
-#: part/templates/part/bom_upload/match_fields.html:20
-#: part/templates/part/import_wizard/ajax_match_fields.html:20
-#: part/templates/part/import_wizard/match_fields.html:20
-msgid "Duplicate selections found, see below. Fix them then retry submitting."
-msgstr ""
-
-#: order/templates/order/order_wizard/match_fields.html:29
-#: order/templates/order/order_wizard/match_parts.html:21
-#: part/templates/part/bom_upload/match_fields.html:29
-#: part/templates/part/bom_upload/match_parts.html:21
-#: part/templates/part/import_wizard/match_fields.html:29
-#: part/templates/part/import_wizard/match_references.html:21
-msgid "Submit Selections"
-msgstr ""
-
-#: order/templates/order/order_wizard/match_fields.html:35
-#: part/templates/part/bom_upload/match_fields.html:35
-#: part/templates/part/import_wizard/ajax_match_fields.html:28
-#: part/templates/part/import_wizard/match_fields.html:35
-msgid "File Fields"
-msgstr ""
-
-#: order/templates/order/order_wizard/match_fields.html:42
-#: part/templates/part/bom_upload/match_fields.html:42
-#: part/templates/part/import_wizard/ajax_match_fields.html:35
-#: part/templates/part/import_wizard/match_fields.html:42
-msgid "Remove column"
-msgstr ""
-
-#: order/templates/order/order_wizard/match_fields.html:60
-#: part/templates/part/bom_upload/match_fields.html:60
-#: part/templates/part/import_wizard/ajax_match_fields.html:53
-#: part/templates/part/import_wizard/match_fields.html:60
-msgid "Duplicate selection"
-msgstr ""
-
-#: order/templates/order/order_wizard/match_fields.html:71
-#: order/templates/order/order_wizard/match_parts.html:52
-#: part/templates/part/bom_upload/match_fields.html:71
-#: part/templates/part/bom_upload/match_parts.html:53
-#: part/templates/part/import_wizard/ajax_match_fields.html:64
-#: part/templates/part/import_wizard/ajax_match_references.html:42
-#: part/templates/part/import_wizard/match_fields.html:71
-#: part/templates/part/import_wizard/match_references.html:49
-#: templates/js/translated/build.js:300 templates/js/translated/build.js:1311
-#: templates/js/translated/order.js:537 templates/js/translated/order.js:1488
-#: templates/js/translated/stock.js:601 templates/js/translated/stock.js:769
-msgid "Remove row"
-msgstr ""
-
#: order/templates/order/order_wizard/match_parts.html:12
-#: part/templates/part/bom_upload/match_parts.html:12
#: part/templates/part/import_wizard/ajax_match_references.html:12
#: part/templates/part/import_wizard/match_references.html:12
msgid "Errors exist in the submitted data"
msgstr ""
+#: order/templates/order/order_wizard/match_parts.html:21
+#: part/templates/part/import_wizard/match_fields.html:29
+#: part/templates/part/import_wizard/match_references.html:21
+#: templates/patterns/wizard/match_fields.html:28
+msgid "Submit Selections"
+msgstr ""
+
#: order/templates/order/order_wizard/match_parts.html:28
-#: part/templates/part/bom_upload/match_parts.html:28
#: part/templates/part/import_wizard/ajax_match_references.html:21
#: part/templates/part/import_wizard/match_references.html:28
msgid "Row"
@@ -3650,6 +3613,19 @@ msgstr ""
msgid "Select Supplier Part"
msgstr ""
+#: order/templates/order/order_wizard/match_parts.html:52
+#: part/templates/part/import_wizard/ajax_match_fields.html:64
+#: part/templates/part/import_wizard/ajax_match_references.html:42
+#: part/templates/part/import_wizard/match_fields.html:71
+#: part/templates/part/import_wizard/match_references.html:49
+#: templates/js/translated/bom.js:76 templates/js/translated/build.js:380
+#: templates/js/translated/build.js:528 templates/js/translated/build.js:1547
+#: templates/js/translated/order.js:537 templates/js/translated/order.js:1488
+#: templates/js/translated/stock.js:602 templates/js/translated/stock.js:770
+#: templates/patterns/wizard/match_fields.html:70
+msgid "Remove row"
+msgstr ""
+
#: order/templates/order/order_wizard/po_upload.html:8
msgid "Return to Orders"
msgstr ""
@@ -3659,9 +3635,9 @@ msgid "Upload File for Purchase Order"
msgstr ""
#: order/templates/order/order_wizard/po_upload.html:25
-#: part/templates/part/bom_upload/upload_file.html:21
#: part/templates/part/import_wizard/ajax_part_upload.html:10
#: part/templates/part/import_wizard/part_upload.html:23
+#: templates/patterns/wizard/upload.html:11
#, python-format
msgid "Step %(step)s of %(count)s"
msgstr ""
@@ -3819,7 +3795,7 @@ msgid "Pending Shipments"
msgstr ""
#: order/templates/order/sales_order_detail.html:48
-#: templates/js/translated/bom.js:732 templates/js/translated/build.js:1243
+#: templates/js/translated/bom.js:945 templates/js/translated/build.js:1465
msgid "Actions"
msgstr ""
@@ -3922,7 +3898,7 @@ msgstr ""
msgid "This field is required"
msgstr ""
-#: part/bom.py:125 part/models.py:83 part/models.py:849
+#: part/bom.py:125 part/models.py:83 part/models.py:879
#: part/templates/part/category.html:108 part/templates/part/part_base.html:338
msgid "Default Location"
msgstr ""
@@ -3968,7 +3944,7 @@ msgstr ""
msgid "Default keywords for parts in this category"
msgstr ""
-#: part/models.py:97 part/models.py:2533 part/templates/part/category.html:15
+#: part/models.py:97 part/models.py:2569 part/templates/part/category.html:15
#: part/templates/part/part_app_base.html:10
msgid "Part Category"
msgstr ""
@@ -3994,408 +3970,478 @@ msgstr "Nguyên liệu"
msgid "Invalid choice for parent part"
msgstr ""
-#: part/models.py:502 part/models.py:514
+#: part/models.py:532 part/models.py:544
#, python-brace-format
msgid "Part '{p1}' is used in BOM for '{p2}' (recursive)"
msgstr ""
-#: part/models.py:644
+#: part/models.py:674
msgid "Next available serial numbers are"
msgstr ""
-#: part/models.py:648
+#: part/models.py:678
msgid "Next available serial number is"
msgstr ""
-#: part/models.py:653
+#: part/models.py:683
msgid "Most recent serial number is"
msgstr ""
-#: part/models.py:748
+#: part/models.py:778
msgid "Duplicate IPN not allowed in part settings"
msgstr ""
-#: part/models.py:773
+#: part/models.py:803 part/models.py:2622
msgid "Part name"
msgstr ""
-#: part/models.py:780
+#: part/models.py:810
msgid "Is Template"
msgstr ""
-#: part/models.py:781
+#: part/models.py:811
msgid "Is this part a template part?"
msgstr ""
-#: part/models.py:791
+#: part/models.py:821
msgid "Is this part a variant of another part?"
msgstr ""
-#: part/models.py:792
+#: part/models.py:822
msgid "Variant Of"
msgstr ""
-#: part/models.py:798
+#: part/models.py:828
msgid "Part description"
msgstr ""
-#: part/models.py:803 part/templates/part/category.html:86
+#: part/models.py:833 part/templates/part/category.html:86
#: part/templates/part/part_base.html:302
msgid "Keywords"
msgstr ""
-#: part/models.py:804
+#: part/models.py:834
msgid "Part keywords to improve visibility in search results"
msgstr ""
-#: part/models.py:811 part/models.py:2283 part/models.py:2532
+#: part/models.py:841 part/models.py:2319 part/models.py:2568
#: part/templates/part/part_base.html:265
#: part/templates/part/set_category.html:15
-#: templates/InvenTree/settings/settings.html:186
+#: templates/InvenTree/settings/settings.html:223
#: templates/js/translated/part.js:1268
msgid "Category"
msgstr ""
-#: part/models.py:812
+#: part/models.py:842
msgid "Part category"
msgstr ""
-#: part/models.py:817 part/templates/part/part_base.html:274
+#: part/models.py:847 part/templates/part/part_base.html:274
#: templates/js/translated/part.js:618 templates/js/translated/part.js:1221
-#: templates/js/translated/stock.js:1560
+#: templates/js/translated/stock.js:1684
msgid "IPN"
msgstr ""
-#: part/models.py:818
+#: part/models.py:848
msgid "Internal Part Number"
msgstr ""
-#: part/models.py:824
+#: part/models.py:854
msgid "Part revision or version number"
msgstr ""
-#: part/models.py:825 part/templates/part/part_base.html:281
+#: part/models.py:855 part/templates/part/part_base.html:281
#: report/models.py:200 templates/js/translated/part.js:622
msgid "Revision"
msgstr ""
-#: part/models.py:847
+#: part/models.py:877
msgid "Where is this item normally stored?"
msgstr ""
-#: part/models.py:894 part/templates/part/part_base.html:347
+#: part/models.py:924 part/templates/part/part_base.html:347
msgid "Default Supplier"
msgstr ""
-#: part/models.py:895
+#: part/models.py:925
msgid "Default supplier part"
msgstr ""
-#: part/models.py:902
+#: part/models.py:932
msgid "Default Expiry"
msgstr ""
-#: part/models.py:903
+#: part/models.py:933
msgid "Expiry time (in days) for stock items of this part"
msgstr ""
-#: part/models.py:908 part/templates/part/part_base.html:196
+#: part/models.py:938 part/templates/part/part_base.html:196
msgid "Minimum Stock"
msgstr ""
-#: part/models.py:909
+#: part/models.py:939
msgid "Minimum allowed stock level"
msgstr ""
-#: part/models.py:916
+#: part/models.py:946
msgid "Stock keeping units for this part"
msgstr ""
-#: part/models.py:922
+#: part/models.py:952
msgid "Can this part be built from other parts?"
msgstr ""
-#: part/models.py:928
+#: part/models.py:958
msgid "Can this part be used to build other parts?"
msgstr ""
-#: part/models.py:934
+#: part/models.py:964
msgid "Does this part have tracking for unique items?"
msgstr ""
-#: part/models.py:939
+#: part/models.py:969
msgid "Can this part be purchased from external suppliers?"
msgstr ""
-#: part/models.py:944
+#: part/models.py:974
msgid "Can this part be sold to customers?"
msgstr ""
-#: part/models.py:949
+#: part/models.py:979
msgid "Is this part active?"
msgstr ""
-#: part/models.py:954
+#: part/models.py:984
msgid "Is this a virtual part, such as a software product or license?"
msgstr ""
-#: part/models.py:959
+#: part/models.py:989
msgid "Part notes - supports Markdown formatting"
msgstr ""
-#: part/models.py:962
+#: part/models.py:992
msgid "BOM checksum"
msgstr ""
-#: part/models.py:962
+#: part/models.py:992
msgid "Stored BOM checksum"
msgstr ""
-#: part/models.py:965
+#: part/models.py:995
msgid "BOM checked by"
msgstr ""
-#: part/models.py:967
+#: part/models.py:997
msgid "BOM checked date"
msgstr ""
-#: part/models.py:971
+#: part/models.py:1001
msgid "Creation User"
msgstr ""
-#: part/models.py:1783
+#: part/models.py:1819
msgid "Sell multiple"
msgstr ""
-#: part/models.py:2333
+#: part/models.py:2369
msgid "Test templates can only be created for trackable parts"
msgstr ""
-#: part/models.py:2350
+#: part/models.py:2386
msgid "Test with this name already exists for this part"
msgstr ""
-#: part/models.py:2370 templates/js/translated/part.js:1714
-#: templates/js/translated/stock.js:1284
+#: part/models.py:2406 templates/js/translated/part.js:1714
+#: templates/js/translated/stock.js:1312
msgid "Test Name"
msgstr ""
-#: part/models.py:2371
+#: part/models.py:2407
msgid "Enter a name for the test"
msgstr ""
-#: part/models.py:2376
+#: part/models.py:2412
msgid "Test Description"
msgstr ""
-#: part/models.py:2377
+#: part/models.py:2413
msgid "Enter description for this test"
msgstr ""
-#: part/models.py:2382 templates/js/translated/part.js:1723
-#: templates/js/translated/table_filters.js:281
+#: part/models.py:2418 templates/js/translated/part.js:1723
+#: templates/js/translated/table_filters.js:276
msgid "Required"
msgstr ""
-#: part/models.py:2383
+#: part/models.py:2419
msgid "Is this test required to pass?"
msgstr ""
-#: part/models.py:2388 templates/js/translated/part.js:1731
+#: part/models.py:2424 templates/js/translated/part.js:1731
msgid "Requires Value"
msgstr ""
-#: part/models.py:2389
+#: part/models.py:2425
msgid "Does this test require a value when adding a test result?"
msgstr ""
-#: part/models.py:2394 templates/js/translated/part.js:1738
+#: part/models.py:2430 templates/js/translated/part.js:1738
msgid "Requires Attachment"
msgstr ""
-#: part/models.py:2395
+#: part/models.py:2431
msgid "Does this test require a file attachment when adding a test result?"
msgstr ""
-#: part/models.py:2406
+#: part/models.py:2442
#, python-brace-format
msgid "Illegal character in template name ({c})"
msgstr ""
-#: part/models.py:2442
+#: part/models.py:2478
msgid "Parameter template name must be unique"
msgstr ""
-#: part/models.py:2450
+#: part/models.py:2486
msgid "Parameter Name"
msgstr ""
-#: part/models.py:2457
+#: part/models.py:2493
msgid "Parameter Units"
msgstr ""
-#: part/models.py:2487
+#: part/models.py:2523
msgid "Parent Part"
msgstr ""
-#: part/models.py:2489 part/models.py:2538 part/models.py:2539
-#: templates/InvenTree/settings/settings.html:181
+#: part/models.py:2525 part/models.py:2574 part/models.py:2575
+#: templates/InvenTree/settings/settings.html:218
msgid "Parameter Template"
msgstr ""
-#: part/models.py:2491
+#: part/models.py:2527
msgid "Data"
msgstr ""
-#: part/models.py:2491
+#: part/models.py:2527
msgid "Parameter Value"
msgstr ""
-#: part/models.py:2543 templates/InvenTree/settings/settings.html:190
+#: part/models.py:2579 templates/InvenTree/settings/settings.html:227
msgid "Default Value"
msgstr ""
-#: part/models.py:2544
+#: part/models.py:2580
msgid "Default Parameter Value"
msgstr ""
+#: part/models.py:2614
+msgid "Part ID or part name"
+msgstr ""
+
+#: part/models.py:2617 templates/js/translated/model_renderers.js:182
+msgid "Part ID"
+msgstr ""
+
+#: part/models.py:2618
+msgid "Unique part ID value"
+msgstr ""
+
#: part/models.py:2621
-msgid "Select parent part"
+msgid "Part Name"
+msgstr ""
+
+#: part/models.py:2625
+msgid "Part IPN"
+msgstr ""
+
+#: part/models.py:2626
+msgid "Part IPN value"
msgstr ""
#: part/models.py:2629
-msgid "Sub part"
+msgid "Level"
msgstr ""
#: part/models.py:2630
+msgid "BOM level"
+msgstr ""
+
+#: part/models.py:2690
+msgid "Select parent part"
+msgstr ""
+
+#: part/models.py:2698
+msgid "Sub part"
+msgstr ""
+
+#: part/models.py:2699
msgid "Select part to be used in BOM"
msgstr ""
-#: part/models.py:2636
+#: part/models.py:2705
msgid "BOM quantity for this BOM item"
msgstr ""
-#: part/models.py:2638 templates/js/translated/bom.js:578
-#: templates/js/translated/bom.js:652
+#: part/models.py:2707 part/templates/part/upload_bom.html:58
+#: templates/js/translated/bom.js:791 templates/js/translated/bom.js:865
#: templates/js/translated/table_filters.js:92
msgid "Optional"
msgstr ""
-#: part/models.py:2638
+#: part/models.py:2707
msgid "This BOM item is optional"
msgstr ""
-#: part/models.py:2641
+#: part/models.py:2710 part/templates/part/upload_bom.html:55
msgid "Overage"
msgstr ""
-#: part/models.py:2642
+#: part/models.py:2711
msgid "Estimated build wastage quantity (absolute or percentage)"
msgstr ""
-#: part/models.py:2645
+#: part/models.py:2714
msgid "BOM item reference"
msgstr ""
-#: part/models.py:2648
+#: part/models.py:2717
msgid "BOM item notes"
msgstr ""
-#: part/models.py:2650
+#: part/models.py:2719
msgid "Checksum"
msgstr ""
-#: part/models.py:2650
+#: part/models.py:2719
msgid "BOM line checksum"
msgstr ""
-#: part/models.py:2654 templates/js/translated/bom.js:669
+#: part/models.py:2723 part/templates/part/upload_bom.html:57
+#: templates/js/translated/bom.js:882
#: templates/js/translated/table_filters.js:68
#: templates/js/translated/table_filters.js:88
msgid "Inherited"
msgstr ""
-#: part/models.py:2655
+#: part/models.py:2724
msgid "This BOM item is inherited by BOMs for variant parts"
msgstr ""
-#: part/models.py:2660 templates/js/translated/bom.js:661
+#: part/models.py:2729 part/templates/part/upload_bom.html:56
+#: templates/js/translated/bom.js:874
msgid "Allow Variants"
msgstr ""
-#: part/models.py:2661
+#: part/models.py:2730
msgid "Stock items for variant parts can be used for this BOM item"
msgstr ""
-#: part/models.py:2746 stock/models.py:357
+#: part/models.py:2815 stock/models.py:357
msgid "Quantity must be integer value for trackable parts"
msgstr ""
-#: part/models.py:2755 part/models.py:2757
+#: part/models.py:2824 part/models.py:2826
msgid "Sub part must be specified"
msgstr ""
-#: part/models.py:2886
+#: part/models.py:2955
msgid "BOM Item Substitute"
msgstr ""
-#: part/models.py:2908
+#: part/models.py:2977
msgid "Substitute part cannot be the same as the master part"
msgstr ""
-#: part/models.py:2920
+#: part/models.py:2989
msgid "Parent BOM item"
msgstr ""
-#: part/models.py:2928
+#: part/models.py:2997
msgid "Substitute part"
msgstr ""
-#: part/models.py:2939
+#: part/models.py:3008
msgid "Part 1"
msgstr ""
-#: part/models.py:2943
+#: part/models.py:3012
msgid "Part 2"
msgstr ""
-#: part/models.py:2943
+#: part/models.py:3012
msgid "Select Related Part"
msgstr ""
-#: part/models.py:2975
+#: part/models.py:3044
msgid "Error creating relationship: check that the part is not related to itself and that the relationship is unique"
msgstr ""
-#: part/serializers.py:659
+#: part/serializers.py:667
msgid "Select part to copy BOM from"
msgstr ""
-#: part/serializers.py:670
+#: part/serializers.py:678
msgid "Remove Existing Data"
msgstr ""
-#: part/serializers.py:671
+#: part/serializers.py:679
msgid "Remove existing BOM items before copying"
msgstr ""
-#: part/serializers.py:676
+#: part/serializers.py:684
msgid "Include Inherited"
msgstr ""
-#: part/serializers.py:677
+#: part/serializers.py:685
msgid "Include BOM items which are inherited from templated parts"
msgstr ""
-#: part/serializers.py:682
+#: part/serializers.py:690
msgid "Skip Invalid Rows"
msgstr ""
-#: part/serializers.py:683
+#: part/serializers.py:691
msgid "Enable this option to skip invalid rows"
msgstr ""
-#: part/tasks.py:53
+#: part/serializers.py:734
+msgid "Clear Existing BOM"
+msgstr ""
+
+#: part/serializers.py:735
+msgid "Delete existing BOM items before uploading"
+msgstr ""
+
+#: part/serializers.py:762
+msgid "No part column specified"
+msgstr ""
+
+#: part/serializers.py:806
+msgid "Multiple matching parts found"
+msgstr ""
+
+#: part/serializers.py:809
+msgid "No matching part found"
+msgstr ""
+
+#: part/serializers.py:812
+msgid "Part is not designated as a component"
+msgstr ""
+
+#: part/serializers.py:821
+msgid "Quantity not provided"
+msgstr ""
+
+#: part/serializers.py:829
+msgid "Invalid quantity"
+msgstr ""
+
+#: part/serializers.py:848
+msgid "At least one BOM item is required"
+msgstr ""
+
+#: part/tasks.py:58
msgid "Low stock notification"
msgstr ""
@@ -4418,7 +4464,7 @@ msgstr ""
msgid "The BOM for %(part)s has not been validated."
msgstr ""
-#: part/templates/part/bom.html:30 part/templates/part/detail.html:270
+#: part/templates/part/bom.html:30 part/templates/part/detail.html:273
msgid "BOM actions"
msgstr ""
@@ -4426,34 +4472,6 @@ msgstr ""
msgid "Delete Items"
msgstr ""
-#: part/templates/part/bom_upload/match_parts.html:29
-msgid "Select Part"
-msgstr ""
-
-#: part/templates/part/bom_upload/upload_file.html:8
-msgid "Return to BOM"
-msgstr ""
-
-#: part/templates/part/bom_upload/upload_file.html:13
-msgid "Upload Bill of Materials"
-msgstr ""
-
-#: part/templates/part/bom_upload/upload_file.html:33
-msgid "Requirements for BOM upload"
-msgstr ""
-
-#: part/templates/part/bom_upload/upload_file.html:35
-msgid "The BOM file must contain the required named columns as provided in the "
-msgstr ""
-
-#: part/templates/part/bom_upload/upload_file.html:35
-msgid "BOM Upload Template"
-msgstr ""
-
-#: part/templates/part/bom_upload/upload_file.html:36
-msgid "Each part must already exist in the database"
-msgstr ""
-
#: part/templates/part/category.html:28 part/templates/part/category.html:32
msgid "You are subscribed to notifications for this category"
msgstr ""
@@ -4519,7 +4537,7 @@ msgstr ""
msgid "Create new part"
msgstr ""
-#: part/templates/part/category.html:161 templates/js/translated/bom.js:152
+#: part/templates/part/category.html:161 templates/js/translated/bom.js:365
msgid "New Part"
msgstr ""
@@ -4639,138 +4657,168 @@ msgstr ""
msgid "Sales Order Allocations"
msgstr ""
-#: part/templates/part/detail.html:159
+#: part/templates/part/detail.html:162
msgid "Part Variants"
msgstr ""
-#: part/templates/part/detail.html:163
+#: part/templates/part/detail.html:166
msgid "Create new variant"
msgstr ""
-#: part/templates/part/detail.html:164
+#: part/templates/part/detail.html:167
msgid "New Variant"
msgstr ""
-#: part/templates/part/detail.html:191
+#: part/templates/part/detail.html:194
msgid "Add new parameter"
msgstr ""
-#: part/templates/part/detail.html:228 part/templates/part/part_sidebar.html:49
+#: part/templates/part/detail.html:231 part/templates/part/part_sidebar.html:52
msgid "Related Parts"
msgstr ""
-#: part/templates/part/detail.html:232 part/templates/part/detail.html:233
+#: part/templates/part/detail.html:235 part/templates/part/detail.html:236
msgid "Add Related"
msgstr ""
-#: part/templates/part/detail.html:253 part/templates/part/part_sidebar.html:17
+#: part/templates/part/detail.html:256 part/templates/part/part_sidebar.html:18
msgid "Bill of Materials"
msgstr ""
-#: part/templates/part/detail.html:258
+#: part/templates/part/detail.html:261
msgid "Export actions"
msgstr ""
-#: part/templates/part/detail.html:262 templates/js/translated/bom.js:70
+#: part/templates/part/detail.html:265 templates/js/translated/bom.js:283
msgid "Export BOM"
msgstr ""
-#: part/templates/part/detail.html:264
+#: part/templates/part/detail.html:267
msgid "Print BOM Report"
msgstr ""
-#: part/templates/part/detail.html:274
+#: part/templates/part/detail.html:277
msgid "Upload BOM"
msgstr ""
-#: part/templates/part/detail.html:276 templates/js/translated/part.js:272
+#: part/templates/part/detail.html:279 templates/js/translated/part.js:272
msgid "Copy BOM"
msgstr ""
-#: part/templates/part/detail.html:278
+#: part/templates/part/detail.html:281
msgid "Validate BOM"
msgstr ""
-#: part/templates/part/detail.html:283
+#: part/templates/part/detail.html:286
msgid "New BOM Item"
msgstr ""
-#: part/templates/part/detail.html:284
+#: part/templates/part/detail.html:287
msgid "Add BOM Item"
msgstr ""
-#: part/templates/part/detail.html:297
+#: part/templates/part/detail.html:300
msgid "Assemblies"
msgstr ""
-#: part/templates/part/detail.html:314
+#: part/templates/part/detail.html:317
msgid "Part Builds"
msgstr ""
-#: part/templates/part/detail.html:339
+#: part/templates/part/detail.html:342
msgid "Build Order Allocations"
msgstr ""
-#: part/templates/part/detail.html:349
+#: part/templates/part/detail.html:352
msgid "Part Suppliers"
msgstr ""
-#: part/templates/part/detail.html:377
+#: part/templates/part/detail.html:380
msgid "Part Manufacturers"
msgstr ""
-#: part/templates/part/detail.html:393
+#: part/templates/part/detail.html:396
msgid "Delete manufacturer parts"
msgstr ""
-#: part/templates/part/detail.html:575
+#: part/templates/part/detail.html:578
msgid "Delete selected BOM items?"
msgstr ""
-#: part/templates/part/detail.html:576
+#: part/templates/part/detail.html:579
msgid "All selected BOM items will be deleted"
msgstr ""
-#: part/templates/part/detail.html:625
+#: part/templates/part/detail.html:628
msgid "Create BOM Item"
msgstr ""
-#: part/templates/part/detail.html:682
+#: part/templates/part/detail.html:685
msgid "Related Part"
msgstr ""
-#: part/templates/part/detail.html:690
+#: part/templates/part/detail.html:693
msgid "Add Related Part"
msgstr ""
-#: part/templates/part/detail.html:785
+#: part/templates/part/detail.html:788
msgid "Add Test Result Template"
msgstr ""
-#: part/templates/part/detail.html:842
+#: part/templates/part/detail.html:845
msgid "Edit Part Notes"
msgstr ""
-#: part/templates/part/detail.html:955
+#: part/templates/part/detail.html:958
#, python-format
msgid "Purchase Unit Price - %(currency)s"
msgstr ""
-#: part/templates/part/detail.html:967
+#: part/templates/part/detail.html:970
#, python-format
msgid "Unit Price-Cost Difference - %(currency)s"
msgstr ""
-#: part/templates/part/detail.html:979
+#: part/templates/part/detail.html:982
#, python-format
msgid "Supplier Unit Cost - %(currency)s"
msgstr ""
-#: part/templates/part/detail.html:1068
+#: part/templates/part/detail.html:1071
#, python-format
msgid "Unit Price - %(currency)s"
msgstr ""
+#: part/templates/part/import_wizard/ajax_match_fields.html:9
+#: part/templates/part/import_wizard/match_fields.html:9
+#: templates/patterns/wizard/match_fields.html:8
+msgid "Missing selections for the following required columns"
+msgstr ""
+
+#: part/templates/part/import_wizard/ajax_match_fields.html:20
+#: part/templates/part/import_wizard/match_fields.html:20
+#: templates/patterns/wizard/match_fields.html:19
+msgid "Duplicate selections found, see below. Fix them then retry submitting."
+msgstr ""
+
+#: part/templates/part/import_wizard/ajax_match_fields.html:28
+#: part/templates/part/import_wizard/match_fields.html:35
+#: templates/patterns/wizard/match_fields.html:34
+msgid "File Fields"
+msgstr ""
+
+#: part/templates/part/import_wizard/ajax_match_fields.html:35
+#: part/templates/part/import_wizard/match_fields.html:42
+#: templates/patterns/wizard/match_fields.html:41
+msgid "Remove column"
+msgstr ""
+
+#: part/templates/part/import_wizard/ajax_match_fields.html:53
+#: part/templates/part/import_wizard/match_fields.html:60
+#: templates/patterns/wizard/match_fields.html:59
+msgid "Duplicate selection"
+msgstr ""
+
#: part/templates/part/import_wizard/ajax_part_upload.html:29
#: part/templates/part/import_wizard/part_upload.html:53
msgid "Unsuffitient privileges."
@@ -4819,7 +4867,7 @@ msgid "Show pricing information"
msgstr ""
#: part/templates/part/part_base.html:56
-#: stock/templates/stock/item_base.html:110
+#: stock/templates/stock/item_base.html:112
#: stock/templates/stock/location.html:44
msgid "Stock actions"
msgstr ""
@@ -4912,7 +4960,7 @@ msgstr ""
msgid "Allocated to Orders"
msgstr ""
-#: part/templates/part/part_base.html:239 templates/js/translated/bom.js:690
+#: part/templates/part/part_base.html:239 templates/js/translated/bom.js:903
msgid "Can Build"
msgstr ""
@@ -4930,7 +4978,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:166
+#: stock/templates/stock/item_base.html:168
msgid "Search for serial number"
msgstr ""
@@ -4969,7 +5017,7 @@ msgid "Total Cost"
msgstr ""
#: part/templates/part/part_pricing.html:40 part/templates/part/prices.html:40
-#: templates/js/translated/bom.js:644
+#: templates/js/translated/bom.js:857
msgid "No supplier pricing available"
msgstr ""
@@ -5003,20 +5051,20 @@ msgstr ""
msgid "No pricing information is available for this part."
msgstr ""
-#: part/templates/part/part_sidebar.html:11
+#: part/templates/part/part_sidebar.html:12
msgid "Variants"
msgstr ""
-#: part/templates/part/part_sidebar.html:25
+#: part/templates/part/part_sidebar.html:26
msgid "Used In"
msgstr ""
-#: part/templates/part/part_sidebar.html:31
+#: part/templates/part/part_sidebar.html:34
#: stock/templates/stock/stock_sidebar.html:8
msgid "Allocations"
msgstr ""
-#: part/templates/part/part_sidebar.html:45
+#: part/templates/part/part_sidebar.html:48
msgid "Test Templates"
msgstr ""
@@ -5089,7 +5137,7 @@ msgstr ""
msgid "Calculation parameters"
msgstr ""
-#: part/templates/part/prices.html:155 templates/js/translated/bom.js:638
+#: part/templates/part/prices.html:155 templates/js/translated/bom.js:851
msgid "Supplier Cost"
msgstr ""
@@ -5111,7 +5159,7 @@ msgstr ""
msgid "Internal Cost"
msgstr ""
-#: part/templates/part/prices.html:215 part/views.py:1699
+#: part/templates/part/prices.html:215 part/views.py:1390
msgid "Add Internal Price Break"
msgstr ""
@@ -5131,7 +5179,7 @@ msgstr ""
msgid "Set category for the following parts"
msgstr ""
-#: part/templates/part/stock_count.html:7 templates/js/translated/bom.js:600
+#: part/templates/part/stock_count.html:7 templates/js/translated/bom.js:813
#: templates/js/translated/part.js:497 templates/js/translated/part.js:1122
#: templates/js/translated/part.js:1309
msgid "No Stock"
@@ -5141,6 +5189,43 @@ msgstr ""
msgid "Low Stock"
msgstr "Hàng còn ít"
+#: part/templates/part/upload_bom.html:8
+msgid "Return to BOM"
+msgstr ""
+
+#: part/templates/part/upload_bom.html:13
+msgid "Upload Bill of Materials"
+msgstr ""
+
+#: part/templates/part/upload_bom.html:19
+msgid "BOM upload requirements"
+msgstr ""
+
+#: part/templates/part/upload_bom.html:23
+#: part/templates/part/upload_bom.html:90
+msgid "Upload BOM File"
+msgstr ""
+
+#: part/templates/part/upload_bom.html:29
+msgid "Submit BOM Data"
+msgstr ""
+
+#: part/templates/part/upload_bom.html:37
+msgid "Requirements for BOM upload"
+msgstr ""
+
+#: part/templates/part/upload_bom.html:39
+msgid "The BOM file must contain the required named columns as provided in the "
+msgstr ""
+
+#: part/templates/part/upload_bom.html:39
+msgid "BOM Upload Template"
+msgstr ""
+
+#: part/templates/part/upload_bom.html:40
+msgid "Each part must already exist in the database"
+msgstr ""
+
#: part/templates/part/variant_part.html:9
msgid "Create new part variant"
msgstr ""
@@ -5154,104 +5239,96 @@ msgstr ""
msgid "Unknown database"
msgstr ""
-#: part/views.py:93
+#: part/views.py:90
msgid "Set Part Category"
msgstr ""
-#: part/views.py:143
+#: part/views.py:140
#, python-brace-format
msgid "Set category for {n} parts"
msgstr ""
-#: part/views.py:215
+#: part/views.py:212
msgid "Match References"
msgstr ""
-#: part/views.py:511
+#: part/views.py:509
msgid "None"
msgstr ""
-#: part/views.py:570
+#: part/views.py:568
msgid "Part QR Code"
msgstr ""
-#: part/views.py:672
+#: part/views.py:670
msgid "Select Part Image"
msgstr ""
-#: part/views.py:698
+#: part/views.py:696
msgid "Updated part image"
msgstr ""
-#: part/views.py:701
+#: part/views.py:699
msgid "Part image not found"
msgstr ""
-#: part/views.py:775
-msgid "Match Parts"
-msgstr ""
-
-#: part/views.py:1110
-msgid "Export Bill of Materials"
-msgstr ""
-
-#: part/views.py:1159
+#: part/views.py:850
msgid "Confirm Part Deletion"
msgstr ""
-#: part/views.py:1166
+#: part/views.py:857
msgid "Part was deleted"
msgstr ""
-#: part/views.py:1175
+#: part/views.py:866
msgid "Part Pricing"
msgstr ""
-#: part/views.py:1324
+#: part/views.py:1015
msgid "Create Part Parameter Template"
msgstr ""
-#: part/views.py:1334
+#: part/views.py:1025
msgid "Edit Part Parameter Template"
msgstr ""
-#: part/views.py:1341
+#: part/views.py:1032
msgid "Delete Part Parameter Template"
msgstr ""
-#: part/views.py:1400 templates/js/translated/part.js:315
+#: part/views.py:1091 templates/js/translated/part.js:315
msgid "Edit Part Category"
msgstr ""
-#: part/views.py:1438
+#: part/views.py:1129
msgid "Delete Part Category"
msgstr ""
-#: part/views.py:1444
+#: part/views.py:1135
msgid "Part category was deleted"
msgstr ""
-#: part/views.py:1453
+#: part/views.py:1144
msgid "Create Category Parameter Template"
msgstr ""
-#: part/views.py:1554
+#: part/views.py:1245
msgid "Edit Category Parameter Template"
msgstr ""
-#: part/views.py:1610
+#: part/views.py:1301
msgid "Delete Category Parameter Template"
msgstr ""
-#: part/views.py:1632
+#: part/views.py:1323
msgid "Added new price break"
msgstr ""
-#: part/views.py:1708
+#: part/views.py:1399
msgid "Edit Internal Price Break"
msgstr ""
-#: part/views.py:1716
+#: part/views.py:1407
msgid "Delete Internal Price Break"
msgstr ""
@@ -5453,12 +5530,12 @@ msgid "Stock Item Test Report"
msgstr ""
#: report/templates/report/inventree_test_report_base.html:79
-#: stock/models.py:519 stock/templates/stock/item_base.html:156
-#: templates/js/translated/build.js:293 templates/js/translated/build.js:697
-#: templates/js/translated/build.js:1073
+#: stock/models.py:519 stock/templates/stock/item_base.html:158
+#: templates/js/translated/build.js:373 templates/js/translated/build.js:521
+#: templates/js/translated/build.js:919 templates/js/translated/build.js:1295
#: 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:423
+#: templates/js/translated/order.js:2034 templates/js/translated/stock.js:424
msgid "Serial Number"
msgstr ""
@@ -5479,7 +5556,7 @@ msgstr ""
#: report/templates/report/inventree_test_report_base.html:97
#: templates/InvenTree/settings/plugin.html:50
#: templates/InvenTree/settings/plugin_settings.html:38
-#: templates/js/translated/order.js:849 templates/js/translated/stock.js:2525
+#: templates/js/translated/order.js:849 templates/js/translated/stock.js:2649
msgid "Date"
msgstr ""
@@ -5497,71 +5574,67 @@ msgid "Installed Items"
msgstr ""
#: report/templates/report/inventree_test_report_base.html:137
-#: templates/js/translated/stock.js:586 templates/js/translated/stock.js:756
-#: templates/js/translated/stock.js:2785
+#: templates/js/translated/stock.js:587 templates/js/translated/stock.js:757
+#: templates/js/translated/stock.js:2909
msgid "Serial"
msgstr ""
-#: stock/api.py:476
+#: stock/api.py:501
msgid "Quantity is required"
msgstr ""
-#: stock/api.py:483
+#: stock/api.py:508
msgid "Valid part must be supplied"
msgstr ""
-#: stock/forms.py:77 stock/forms.py:251 stock/models.py:576
-#: stock/templates/stock/item_base.html:193
-#: templates/js/translated/stock.js:1709
+#: stock/api.py:535
+msgid "Serial numbers cannot be supplied for a non-trackable part"
+msgstr ""
+
+#: stock/forms.py:74 stock/forms.py:198 stock/models.py:576
+#: stock/templates/stock/item_base.html:195
+#: templates/js/translated/stock.js:1833
msgid "Expiry Date"
msgstr ""
-#: stock/forms.py:78 stock/forms.py:252
+#: stock/forms.py:75 stock/forms.py:199
msgid "Expiration date for this stock item"
msgstr ""
-#: stock/forms.py:81
+#: stock/forms.py:78
msgid "Enter unique serial numbers (or leave blank)"
msgstr ""
-#: stock/forms.py:136
+#: stock/forms.py:133
msgid "Destination for serialized stock (by default, will remain in current location)"
msgstr ""
-#: stock/forms.py:138
+#: stock/forms.py:135
msgid "Serial numbers"
msgstr ""
-#: stock/forms.py:138
+#: stock/forms.py:135
msgid "Unique serial numbers (must match quantity)"
msgstr ""
-#: stock/forms.py:140 stock/forms.py:224
+#: stock/forms.py:137 stock/forms.py:171
msgid "Add transaction note (optional)"
msgstr ""
-#: stock/forms.py:180
-msgid "Stock item to install"
-msgstr ""
-
-#: stock/forms.py:210
-msgid "Must not exceed available quantity"
-msgstr ""
-
-#: stock/forms.py:222
+#: stock/forms.py:169
msgid "Destination location for uninstalled items"
msgstr ""
-#: stock/forms.py:226
+#: stock/forms.py:173
msgid "Confirm uninstall"
msgstr ""
-#: stock/forms.py:226
+#: stock/forms.py:173
msgid "Confirm removal of installed stock items"
msgstr ""
#: stock/models.py:62 stock/models.py:613
-#: stock/templates/stock/item_base.html:416
+#: stock/templates/stock/item_base.html:418
msgid "Owner"
msgstr ""
@@ -5623,7 +5696,7 @@ msgstr ""
msgid "Packaging this stock item is stored in"
msgstr ""
-#: stock/models.py:502 stock/templates/stock/item_base.html:298
+#: stock/models.py:502 stock/templates/stock/item_base.html:300
msgid "Installed In"
msgstr ""
@@ -5733,7 +5806,7 @@ msgstr ""
msgid "Serialized stock cannot be merged"
msgstr ""
-#: stock/models.py:1214 stock/serializers.py:775
+#: stock/models.py:1214 stock/serializers.py:832
msgid "Duplicate stock items"
msgstr ""
@@ -5769,7 +5842,7 @@ msgstr ""
msgid "Test name"
msgstr ""
-#: stock/models.py:1983 templates/js/translated/table_filters.js:271
+#: stock/models.py:1983
msgid "Test result"
msgstr ""
@@ -5806,7 +5879,7 @@ msgstr ""
msgid "Enter serial numbers for new items"
msgstr ""
-#: stock/serializers.py:326 stock/serializers.py:732 stock/serializers.py:973
+#: stock/serializers.py:326 stock/serializers.py:789 stock/serializers.py:1030
msgid "Destination stock location"
msgstr ""
@@ -5818,63 +5891,79 @@ msgstr ""
msgid "Serial numbers cannot be assigned to this part"
msgstr ""
-#: stock/serializers.py:589
+#: stock/serializers.py:363 stock/views.py:1108
+msgid "Serial numbers already exist"
+msgstr ""
+
+#: stock/serializers.py:405
+msgid "Select stock item to install"
+msgstr ""
+
+#: stock/serializers.py:421
+msgid "Stock item is unavailable"
+msgstr ""
+
+#: stock/serializers.py:428
+msgid "Selected part is not in the Bill of Materials"
+msgstr ""
+
+#: stock/serializers.py:646
msgid "Part must be salable"
msgstr ""
-#: stock/serializers.py:593
+#: stock/serializers.py:650
msgid "Item is allocated to a sales order"
msgstr ""
-#: stock/serializers.py:597
+#: stock/serializers.py:654
msgid "Item is allocated to a build order"
msgstr ""
-#: stock/serializers.py:627
+#: stock/serializers.py:684
msgid "Customer to assign stock items"
msgstr ""
-#: stock/serializers.py:633
+#: stock/serializers.py:690
msgid "Selected company is not a customer"
msgstr ""
-#: stock/serializers.py:641
+#: stock/serializers.py:698
msgid "Stock assignment notes"
msgstr ""
-#: stock/serializers.py:651 stock/serializers.py:881
+#: stock/serializers.py:708 stock/serializers.py:938
msgid "A list of stock items must be provided"
msgstr ""
-#: stock/serializers.py:739
+#: stock/serializers.py:796
msgid "Stock merging notes"
msgstr ""
-#: stock/serializers.py:744
+#: stock/serializers.py:801
msgid "Allow mismatched suppliers"
msgstr ""
-#: stock/serializers.py:745
+#: stock/serializers.py:802
msgid "Allow stock items with different supplier parts to be merged"
msgstr ""
-#: stock/serializers.py:750
+#: stock/serializers.py:807
msgid "Allow mismatched status"
msgstr ""
-#: stock/serializers.py:751
+#: stock/serializers.py:808
msgid "Allow stock items with different status codes to be merged"
msgstr ""
-#: stock/serializers.py:761
+#: stock/serializers.py:818
msgid "At least two stock items must be provided"
msgstr ""
-#: stock/serializers.py:843
+#: stock/serializers.py:900
msgid "StockItem primary key value"
msgstr ""
-#: stock/serializers.py:871
+#: stock/serializers.py:928
msgid "Stock transaction notes"
msgstr ""
@@ -5919,22 +6008,14 @@ msgstr ""
msgid "Installed Stock Items"
msgstr ""
-#: stock/templates/stock/item.html:154 stock/views.py:482
+#: stock/templates/stock/item.html:154 templates/js/translated/stock.js:3018
msgid "Install Stock Item"
msgstr ""
-#: stock/templates/stock/item.html:309 stock/templates/stock/item.html:334
+#: stock/templates/stock/item.html:304 templates/js/translated/stock.js:1480
msgid "Add Test Result"
msgstr ""
-#: stock/templates/stock/item.html:354
-msgid "Edit Test Result"
-msgstr ""
-
-#: stock/templates/stock/item.html:368
-msgid "Delete Test Result"
-msgstr ""
-
#: stock/templates/stock/item_base.html:42
#: templates/js/translated/barcode.js:330
#: templates/js/translated/barcode.js:335
@@ -5995,129 +6076,129 @@ msgstr ""
msgid "Uninstall"
msgstr ""
-#: stock/templates/stock/item_base.html:101
+#: stock/templates/stock/item_base.html:102
msgid "Install stock item"
msgstr ""
-#: stock/templates/stock/item_base.html:101
+#: stock/templates/stock/item_base.html:102
msgid "Install"
msgstr ""
-#: stock/templates/stock/item_base.html:115
+#: stock/templates/stock/item_base.html:117
msgid "Convert to variant"
msgstr ""
-#: stock/templates/stock/item_base.html:118
+#: stock/templates/stock/item_base.html:120
msgid "Duplicate stock item"
msgstr ""
-#: stock/templates/stock/item_base.html:120
+#: stock/templates/stock/item_base.html:122
msgid "Edit stock item"
msgstr ""
-#: stock/templates/stock/item_base.html:123
+#: stock/templates/stock/item_base.html:125
msgid "Delete stock item"
msgstr ""
-#: stock/templates/stock/item_base.html:161
+#: stock/templates/stock/item_base.html:163
msgid "previous page"
msgstr ""
-#: stock/templates/stock/item_base.html:161
+#: stock/templates/stock/item_base.html:163
msgid "Navigate to previous serial number"
msgstr ""
-#: stock/templates/stock/item_base.html:170
+#: stock/templates/stock/item_base.html:172
msgid "next page"
msgstr ""
-#: stock/templates/stock/item_base.html:170
+#: stock/templates/stock/item_base.html:172
msgid "Navigate to next serial number"
msgstr ""
-#: stock/templates/stock/item_base.html:197
+#: stock/templates/stock/item_base.html:199
#, python-format
msgid "This StockItem expired on %(item.expiry_date)s"
msgstr ""
-#: stock/templates/stock/item_base.html:197
+#: stock/templates/stock/item_base.html:199
#: templates/js/translated/table_filters.js:252
msgid "Expired"
msgstr ""
-#: stock/templates/stock/item_base.html:199
+#: stock/templates/stock/item_base.html:201
#, python-format
msgid "This StockItem expires on %(item.expiry_date)s"
msgstr ""
-#: stock/templates/stock/item_base.html:199
+#: stock/templates/stock/item_base.html:201
#: templates/js/translated/table_filters.js:258
msgid "Stale"
msgstr ""
-#: stock/templates/stock/item_base.html:206
-#: templates/js/translated/stock.js:1722
+#: stock/templates/stock/item_base.html:208
+#: templates/js/translated/stock.js:1846
msgid "Last Updated"
msgstr ""
-#: stock/templates/stock/item_base.html:211
+#: stock/templates/stock/item_base.html:213
msgid "Last Stocktake"
msgstr ""
-#: stock/templates/stock/item_base.html:215
+#: stock/templates/stock/item_base.html:217
msgid "No stocktake performed"
msgstr ""
-#: stock/templates/stock/item_base.html:233
+#: stock/templates/stock/item_base.html:235
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:240
+#: stock/templates/stock/item_base.html:242
msgid "This stock item is in production and cannot be edited."
msgstr ""
-#: stock/templates/stock/item_base.html:241
+#: stock/templates/stock/item_base.html:243
msgid "Edit the stock item from the build view."
msgstr ""
-#: stock/templates/stock/item_base.html:254
+#: stock/templates/stock/item_base.html:256
msgid "This stock item has not passed all required tests"
msgstr ""
-#: stock/templates/stock/item_base.html:262
+#: stock/templates/stock/item_base.html:264
msgid "This stock item is allocated to Sales Order"
msgstr ""
-#: stock/templates/stock/item_base.html:270
+#: stock/templates/stock/item_base.html:272
msgid "This stock item is allocated to Build Order"
msgstr ""
-#: stock/templates/stock/item_base.html:276
+#: stock/templates/stock/item_base.html:278
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:317
-#: templates/js/translated/build.js:1095
+#: stock/templates/stock/item_base.html:319
+#: templates/js/translated/build.js:1317
msgid "No location set"
msgstr ""
-#: stock/templates/stock/item_base.html:324
+#: stock/templates/stock/item_base.html:326
msgid "Barcode Identifier"
msgstr ""
-#: stock/templates/stock/item_base.html:366
+#: stock/templates/stock/item_base.html:368
msgid "Parent Item"
msgstr ""
-#: stock/templates/stock/item_base.html:384
+#: stock/templates/stock/item_base.html:386
msgid "No manufacturer set"
msgstr ""
-#: stock/templates/stock/item_base.html:409
+#: stock/templates/stock/item_base.html:411
msgid "Tests"
msgstr ""
-#: stock/templates/stock/item_base.html:499
+#: stock/templates/stock/item_base.html:492
msgid "Edit Stock Status"
msgstr ""
@@ -6130,39 +6211,6 @@ msgstr ""
msgid "This will remove %(qty)s units of %(full_name)s from stock."
msgstr ""
-#: stock/templates/stock/item_install.html:8
-msgid "Install another Stock Item into this item."
-msgstr ""
-
-#: stock/templates/stock/item_install.html:11
-#: stock/templates/stock/item_install.html:24
-msgid "Stock items can only be installed if they meet the following criteria"
-msgstr ""
-
-#: stock/templates/stock/item_install.html:14
-msgid "The Stock Item links to a Part which is in the BOM for this Stock Item"
-msgstr ""
-
-#: stock/templates/stock/item_install.html:15
-msgid "The Stock Item is currently in stock"
-msgstr ""
-
-#: stock/templates/stock/item_install.html:16
-msgid "The Stock Item is serialized and does not belong to another item"
-msgstr ""
-
-#: stock/templates/stock/item_install.html:21
-msgid "Install this Stock Item in another stock item."
-msgstr ""
-
-#: stock/templates/stock/item_install.html:27
-msgid "The part associated to this Stock Item belongs to another part's BOM"
-msgstr ""
-
-#: stock/templates/stock/item_install.html:28
-msgid "This Stock Item is serialized and does not belong to another item"
-msgstr ""
-
#: stock/templates/stock/item_serialize.html:5
msgid "Create serialized items from this stock item."
msgstr ""
@@ -6247,7 +6295,7 @@ msgstr ""
msgid "The following stock items will be uninstalled"
msgstr ""
-#: stock/templates/stock/stockitem_convert.html:7 stock/views.py:879
+#: stock/templates/stock/stockitem_convert.html:7 stock/views.py:730
msgid "Convert Stock Item"
msgstr ""
@@ -6268,11 +6316,11 @@ msgstr ""
msgid "Are you sure you want to delete this stock tracking entry?"
msgstr ""
-#: stock/views.py:162 templates/js/translated/stock.js:139
+#: stock/views.py:162 templates/js/translated/stock.js:140
msgid "Edit Stock Location"
msgstr ""
-#: stock/views.py:269 stock/views.py:858 stock/views.py:984 stock/views.py:1266
+#: stock/views.py:269 stock/views.py:709 stock/views.py:835 stock/views.py:1117
msgid "Owner is required (ownership control is enabled)"
msgstr ""
@@ -6300,59 +6348,63 @@ msgstr ""
msgid "Confirm test data deletion"
msgstr ""
+#: stock/views.py:352
+msgid "Check the confirmation box"
+msgstr ""
+
#: stock/views.py:456
msgid "Stock Item QR Code"
msgstr ""
-#: stock/views.py:630
+#: stock/views.py:481
msgid "Uninstall Stock Items"
msgstr ""
-#: stock/views.py:727 templates/js/translated/stock.js:1074
+#: stock/views.py:578 templates/js/translated/stock.js:1075
msgid "Confirm stock adjustment"
msgstr ""
-#: stock/views.py:738
+#: stock/views.py:589
msgid "Uninstalled stock items"
msgstr ""
-#: stock/views.py:760 templates/js/translated/stock.js:332
+#: stock/views.py:611 templates/js/translated/stock.js:333
msgid "Edit Stock Item"
msgstr ""
-#: stock/views.py:910
+#: stock/views.py:761
msgid "Create new Stock Location"
msgstr ""
-#: stock/views.py:1011
+#: stock/views.py:862
msgid "Create new Stock Item"
msgstr ""
-#: stock/views.py:1153 templates/js/translated/stock.js:312
+#: stock/views.py:1004 templates/js/translated/stock.js:313
msgid "Duplicate Stock Item"
msgstr ""
-#: stock/views.py:1235
+#: stock/views.py:1086
msgid "Quantity cannot be negative"
msgstr ""
-#: stock/views.py:1335
+#: stock/views.py:1186
msgid "Delete Stock Location"
msgstr ""
-#: stock/views.py:1348
+#: stock/views.py:1199
msgid "Delete Stock Item"
msgstr ""
-#: stock/views.py:1359
+#: stock/views.py:1210
msgid "Delete Stock Tracking Entry"
msgstr ""
-#: stock/views.py:1366
+#: stock/views.py:1217
msgid "Edit Stock Tracking Entry"
msgstr ""
-#: stock/views.py:1375
+#: stock/views.py:1226
msgid "Add Stock Tracking Entry"
msgstr ""
@@ -6527,15 +6579,15 @@ msgstr ""
msgid "Part Settings"
msgstr ""
-#: templates/InvenTree/settings/part.html:43
+#: templates/InvenTree/settings/part.html:44
msgid "Part Import"
msgstr ""
-#: templates/InvenTree/settings/part.html:47
+#: templates/InvenTree/settings/part.html:48
msgid "Import Part"
msgstr ""
-#: templates/InvenTree/settings/part.html:61
+#: templates/InvenTree/settings/part.html:62
msgid "Part Parameter Templates"
msgstr ""
@@ -6663,45 +6715,45 @@ msgstr ""
msgid "Report Settings"
msgstr ""
-#: templates/InvenTree/settings/setting.html:30
+#: templates/InvenTree/settings/setting.html:33
msgid "No value set"
msgstr ""
-#: templates/InvenTree/settings/setting.html:41
+#: templates/InvenTree/settings/setting.html:38
msgid "Edit setting"
msgstr ""
-#: templates/InvenTree/settings/settings.html:78
+#: templates/InvenTree/settings/settings.html:115
msgid "Edit Plugin Setting"
msgstr ""
-#: templates/InvenTree/settings/settings.html:80
+#: templates/InvenTree/settings/settings.html:117
msgid "Edit Global Setting"
msgstr "Chỉnh sửa cài đặt toàn cục"
-#: templates/InvenTree/settings/settings.html:82
+#: templates/InvenTree/settings/settings.html:119
msgid "Edit User Setting"
msgstr "Chỉnh sửa cài đặt người dùng"
-#: templates/InvenTree/settings/settings.html:171
+#: templates/InvenTree/settings/settings.html:208
msgid "No category parameter templates found"
msgstr ""
-#: templates/InvenTree/settings/settings.html:193
-#: templates/InvenTree/settings/settings.html:292
+#: templates/InvenTree/settings/settings.html:230
+#: templates/InvenTree/settings/settings.html:329
msgid "Edit Template"
msgstr ""
-#: templates/InvenTree/settings/settings.html:194
-#: templates/InvenTree/settings/settings.html:293
+#: templates/InvenTree/settings/settings.html:231
+#: templates/InvenTree/settings/settings.html:330
msgid "Delete Template"
msgstr ""
-#: templates/InvenTree/settings/settings.html:272
+#: templates/InvenTree/settings/settings.html:309
msgid "No part parameter templates found"
msgstr ""
-#: templates/InvenTree/settings/settings.html:276
+#: templates/InvenTree/settings/settings.html:313
msgid "ID"
msgstr ""
@@ -6996,10 +7048,11 @@ msgid "InvenTree Version Information"
msgstr ""
#: templates/about.html:11 templates/about.html:105
-#: templates/js/translated/bom.js:407 templates/js/translated/modals.js:53
-#: templates/js/translated/modals.js:584 templates/js/translated/modals.js:678
-#: templates/js/translated/modals.js:983 templates/modals.html:15
-#: templates/modals.html:27 templates/modals.html:39 templates/modals.html:50
+#: templates/js/translated/bom.js:132 templates/js/translated/bom.js:620
+#: templates/js/translated/modals.js:53 templates/js/translated/modals.js:584
+#: templates/js/translated/modals.js:678 templates/js/translated/modals.js:986
+#: templates/modals.html:15 templates/modals.html:27 templates/modals.html:39
+#: templates/modals.html:50
msgid "Close"
msgstr ""
@@ -7275,14 +7328,14 @@ msgid "The following parts are low on required stock"
msgstr ""
#: templates/email/build_order_required_stock.html:18
-#: templates/js/translated/bom.js:1117
+#: templates/js/translated/bom.js:1335
msgid "Required Quantity"
msgstr ""
#: templates/email/build_order_required_stock.html:19
#: templates/email/low_stock_notification.html:18
-#: templates/js/translated/bom.js:591 templates/js/translated/build.js:1189
-#: templates/js/translated/build.js:1810
+#: templates/js/translated/bom.js:804 templates/js/translated/build.js:1411
+#: templates/js/translated/build.js:2048
#: templates/js/translated/table_filters.js:178
msgid "Available"
msgstr ""
@@ -7325,11 +7378,11 @@ msgstr ""
msgid "Remote image must not exceed maximum allowable file size"
msgstr ""
-#: templates/js/translated/api.js:185 templates/js/translated/modals.js:1053
+#: templates/js/translated/api.js:185 templates/js/translated/modals.js:1056
msgid "No Response"
msgstr ""
-#: templates/js/translated/api.js:186 templates/js/translated/modals.js:1054
+#: templates/js/translated/api.js:186 templates/js/translated/modals.js:1057
msgid "No response from the InvenTree server"
msgstr ""
@@ -7341,27 +7394,27 @@ msgstr ""
msgid "API request returned error code 400"
msgstr ""
-#: templates/js/translated/api.js:197 templates/js/translated/modals.js:1063
+#: templates/js/translated/api.js:197 templates/js/translated/modals.js:1066
msgid "Error 401: Not Authenticated"
msgstr ""
-#: templates/js/translated/api.js:198 templates/js/translated/modals.js:1064
+#: templates/js/translated/api.js:198 templates/js/translated/modals.js:1067
msgid "Authentication credentials not supplied"
msgstr ""
-#: templates/js/translated/api.js:202 templates/js/translated/modals.js:1068
+#: templates/js/translated/api.js:202 templates/js/translated/modals.js:1071
msgid "Error 403: Permission Denied"
msgstr ""
-#: templates/js/translated/api.js:203 templates/js/translated/modals.js:1069
+#: templates/js/translated/api.js:203 templates/js/translated/modals.js:1072
msgid "You do not have the required permissions to access this function"
msgstr ""
-#: templates/js/translated/api.js:207 templates/js/translated/modals.js:1073
+#: templates/js/translated/api.js:207 templates/js/translated/modals.js:1076
msgid "Error 404: Resource Not Found"
msgstr ""
-#: templates/js/translated/api.js:208 templates/js/translated/modals.js:1074
+#: templates/js/translated/api.js:208 templates/js/translated/modals.js:1077
msgid "The requested resource could not be located on the server"
msgstr ""
@@ -7373,11 +7426,11 @@ msgstr ""
msgid "HTTP method not allowed at URL"
msgstr ""
-#: templates/js/translated/api.js:217 templates/js/translated/modals.js:1078
+#: templates/js/translated/api.js:217 templates/js/translated/modals.js:1081
msgid "Error 408: Timeout"
msgstr ""
-#: templates/js/translated/api.js:218 templates/js/translated/modals.js:1079
+#: templates/js/translated/api.js:218 templates/js/translated/modals.js:1082
msgid "Connection timeout while requesting data from server"
msgstr ""
@@ -7446,7 +7499,7 @@ msgid "Unknown response from server"
msgstr ""
#: templates/js/translated/barcode.js:140
-#: templates/js/translated/modals.js:1043
+#: templates/js/translated/modals.js:1046
msgid "Invalid server response"
msgstr ""
@@ -7474,7 +7527,7 @@ msgstr ""
msgid "Unlink"
msgstr ""
-#: templates/js/translated/barcode.js:397 templates/js/translated/stock.js:1026
+#: templates/js/translated/barcode.js:397 templates/js/translated/stock.js:1027
msgid "Remove stock item"
msgstr ""
@@ -7516,327 +7569,369 @@ msgstr ""
msgid "Barcode does not match a valid location"
msgstr ""
-#: templates/js/translated/bom.js:36
+#: templates/js/translated/bom.js:75
+msgid "Display row data"
+msgstr ""
+
+#: templates/js/translated/bom.js:131
+msgid "Row Data"
+msgstr ""
+
+#: templates/js/translated/bom.js:249
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:518
+#: templates/js/translated/bom.js:252 templates/js/translated/bom.js:286
+#: templates/js/translated/order.js:369 templates/js/translated/stock.js:519
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:519
+#: templates/js/translated/bom.js:253 templates/js/translated/bom.js:287
+#: templates/js/translated/order.js:370 templates/js/translated/stock.js:520
msgid "Select file format"
msgstr ""
-#: templates/js/translated/bom.js:81
+#: templates/js/translated/bom.js:294
msgid "Cascading"
msgstr ""
-#: templates/js/translated/bom.js:82
+#: templates/js/translated/bom.js:295
msgid "Download cascading / multi-level BOM"
msgstr ""
-#: templates/js/translated/bom.js:87
+#: templates/js/translated/bom.js:300
msgid "Levels"
msgstr ""
-#: templates/js/translated/bom.js:88
+#: templates/js/translated/bom.js:301
msgid "Select maximum number of BOM levels to export (0 = all levels)"
msgstr ""
-#: templates/js/translated/bom.js:94
+#: templates/js/translated/bom.js:307
msgid "Include Parameter Data"
msgstr ""
-#: templates/js/translated/bom.js:95
+#: templates/js/translated/bom.js:308
msgid "Include part parameter data in exported BOM"
msgstr ""
-#: templates/js/translated/bom.js:100
+#: templates/js/translated/bom.js:313
msgid "Include Stock Data"
msgstr ""
-#: templates/js/translated/bom.js:101
+#: templates/js/translated/bom.js:314
msgid "Include part stock data in exported BOM"
msgstr ""
-#: templates/js/translated/bom.js:106
+#: templates/js/translated/bom.js:319
msgid "Include Manufacturer Data"
msgstr ""
-#: templates/js/translated/bom.js:107
+#: templates/js/translated/bom.js:320
msgid "Include part manufacturer data in exported BOM"
msgstr ""
-#: templates/js/translated/bom.js:112
+#: templates/js/translated/bom.js:325
msgid "Include Supplier Data"
msgstr ""
-#: templates/js/translated/bom.js:113
+#: templates/js/translated/bom.js:326
msgid "Include part supplier data in exported BOM"
msgstr ""
-#: templates/js/translated/bom.js:296
+#: templates/js/translated/bom.js:509
msgid "Remove substitute part"
msgstr ""
-#: templates/js/translated/bom.js:352
+#: templates/js/translated/bom.js:565
msgid "Select and add a new substitute part using the input below"
msgstr ""
-#: templates/js/translated/bom.js:363
+#: templates/js/translated/bom.js:576
msgid "Are you sure you wish to remove this substitute part link?"
msgstr ""
-#: templates/js/translated/bom.js:369
+#: templates/js/translated/bom.js:582
msgid "Remove Substitute Part"
msgstr ""
-#: templates/js/translated/bom.js:408
+#: templates/js/translated/bom.js:621
msgid "Add Substitute"
msgstr ""
-#: templates/js/translated/bom.js:409
+#: templates/js/translated/bom.js:622
msgid "Edit BOM Item Substitutes"
msgstr ""
-#: templates/js/translated/bom.js:528
+#: templates/js/translated/bom.js:741
msgid "Substitutes Available"
msgstr ""
-#: templates/js/translated/bom.js:532 templates/js/translated/build.js:1171
+#: templates/js/translated/bom.js:745 templates/js/translated/build.js:1393
msgid "Variant stock allowed"
msgstr ""
-#: templates/js/translated/bom.js:537
+#: templates/js/translated/bom.js:750
msgid "Open subassembly"
msgstr ""
-#: templates/js/translated/bom.js:609
+#: templates/js/translated/bom.js:822
msgid "Substitutes"
msgstr ""
-#: templates/js/translated/bom.js:624
+#: templates/js/translated/bom.js:837
msgid "Purchase Price Range"
msgstr ""
-#: templates/js/translated/bom.js:631
+#: templates/js/translated/bom.js:844
msgid "Purchase Price Average"
msgstr ""
-#: templates/js/translated/bom.js:680 templates/js/translated/bom.js:769
+#: templates/js/translated/bom.js:893 templates/js/translated/bom.js:982
msgid "View BOM"
msgstr ""
-#: templates/js/translated/bom.js:740
+#: templates/js/translated/bom.js:953
msgid "Validate BOM Item"
msgstr ""
-#: templates/js/translated/bom.js:742
+#: templates/js/translated/bom.js:955
msgid "This line has been validated"
msgstr ""
-#: templates/js/translated/bom.js:744
+#: templates/js/translated/bom.js:957
msgid "Edit substitute parts"
msgstr ""
-#: templates/js/translated/bom.js:746 templates/js/translated/bom.js:920
+#: templates/js/translated/bom.js:959 templates/js/translated/bom.js:1138
msgid "Edit BOM Item"
msgstr ""
-#: templates/js/translated/bom.js:748 templates/js/translated/bom.js:903
+#: templates/js/translated/bom.js:961 templates/js/translated/bom.js:1121
msgid "Delete BOM Item"
msgstr ""
-#: templates/js/translated/bom.js:842 templates/js/translated/build.js:915
+#: templates/js/translated/bom.js:1060 templates/js/translated/build.js:1137
msgid "No BOM items found"
msgstr ""
-#: templates/js/translated/bom.js:898
+#: templates/js/translated/bom.js:1116
msgid "Are you sure you want to delete this BOM item?"
msgstr ""
-#: templates/js/translated/bom.js:1100 templates/js/translated/build.js:1155
+#: templates/js/translated/bom.js:1318 templates/js/translated/build.js:1377
msgid "Required Part"
msgstr ""
-#: templates/js/translated/bom.js:1122
+#: templates/js/translated/bom.js:1340
msgid "Inherited from parent BOM"
msgstr ""
-#: templates/js/translated/build.js:84
+#: templates/js/translated/build.js:85
msgid "Edit Build Order"
msgstr ""
-#: templates/js/translated/build.js:118
+#: templates/js/translated/build.js:119
msgid "Create Build Order"
msgstr ""
-#: templates/js/translated/build.js:139
+#: templates/js/translated/build.js:140
msgid "Build order is ready to be completed"
msgstr ""
-#: templates/js/translated/build.js:144
+#: templates/js/translated/build.js:145
msgid "Build Order is incomplete"
msgstr ""
-#: templates/js/translated/build.js:172
+#: templates/js/translated/build.js:173
msgid "Complete Build Order"
msgstr ""
-#: templates/js/translated/build.js:193
+#: templates/js/translated/build.js:214 templates/js/translated/stock.js:93
+#: templates/js/translated/stock.js:182
+msgid "Next available serial number"
+msgstr ""
+
+#: templates/js/translated/build.js:216 templates/js/translated/stock.js:95
+#: templates/js/translated/stock.js:184
+msgid "Latest serial number"
+msgstr "Số seri mới nhất"
+
+#: templates/js/translated/build.js:225
+msgid "The Bill of Materials contains trackable parts"
+msgstr ""
+
+#: templates/js/translated/build.js:226
+msgid "Build outputs must be generated individually"
+msgstr ""
+
+#: templates/js/translated/build.js:234
+msgid "Trackable parts can have serial numbers specified"
+msgstr ""
+
+#: templates/js/translated/build.js:235
+msgid "Enter serial numbers to generate multiple single build outputs"
+msgstr ""
+
+#: templates/js/translated/build.js:242
+msgid "Create Build Output"
+msgstr ""
+
+#: templates/js/translated/build.js:273
msgid "Allocate stock items to this build output"
msgstr ""
-#: templates/js/translated/build.js:204
+#: templates/js/translated/build.js:284
msgid "Unallocate stock from build output"
msgstr ""
-#: templates/js/translated/build.js:213
+#: templates/js/translated/build.js:293
msgid "Complete build output"
msgstr ""
-#: templates/js/translated/build.js:221
+#: templates/js/translated/build.js:301
msgid "Delete build output"
msgstr ""
-#: templates/js/translated/build.js:244
+#: templates/js/translated/build.js:324
msgid "Are you sure you wish to unallocate stock items from this build?"
msgstr ""
-#: templates/js/translated/build.js:262
+#: templates/js/translated/build.js:342
msgid "Unallocate Stock Items"
msgstr ""
-#: templates/js/translated/build.js:280
+#: templates/js/translated/build.js:360 templates/js/translated/build.js:508
msgid "Select Build Outputs"
msgstr ""
-#: templates/js/translated/build.js:281
+#: templates/js/translated/build.js:361 templates/js/translated/build.js:509
msgid "At least one build output must be selected"
msgstr ""
-#: templates/js/translated/build.js:335
+#: templates/js/translated/build.js:415 templates/js/translated/build.js:563
msgid "Output"
msgstr ""
-#: templates/js/translated/build.js:351
+#: templates/js/translated/build.js:431
msgid "Complete Build Outputs"
msgstr ""
-#: templates/js/translated/build.js:446
+#: templates/js/translated/build.js:576
+msgid "Delete Build Outputs"
+msgstr ""
+
+#: templates/js/translated/build.js:665
msgid "No build order allocations found"
msgstr ""
-#: templates/js/translated/build.js:484 templates/js/translated/order.js:1848
+#: templates/js/translated/build.js:703 templates/js/translated/order.js:1848
msgid "Location not specified"
msgstr ""
-#: templates/js/translated/build.js:663
+#: templates/js/translated/build.js:885
msgid "No active build outputs found"
msgstr ""
-#: templates/js/translated/build.js:1112 templates/js/translated/build.js:1821
+#: templates/js/translated/build.js:1334 templates/js/translated/build.js:2059
#: templates/js/translated/order.js:1982
msgid "Edit stock allocation"
msgstr ""
-#: templates/js/translated/build.js:1114 templates/js/translated/build.js:1822
+#: templates/js/translated/build.js:1336 templates/js/translated/build.js:2060
#: templates/js/translated/order.js:1983
msgid "Delete stock allocation"
msgstr ""
-#: templates/js/translated/build.js:1132
+#: templates/js/translated/build.js:1354
msgid "Edit Allocation"
msgstr ""
-#: templates/js/translated/build.js:1142
+#: templates/js/translated/build.js:1364
msgid "Remove Allocation"
msgstr ""
-#: templates/js/translated/build.js:1167
+#: templates/js/translated/build.js:1389
msgid "Substitute parts available"
msgstr ""
-#: templates/js/translated/build.js:1184
+#: templates/js/translated/build.js:1406
msgid "Quantity Per"
msgstr ""
-#: templates/js/translated/build.js:1194 templates/js/translated/build.js:1420
-#: templates/js/translated/build.js:1817 templates/js/translated/order.js:2227
+#: templates/js/translated/build.js:1416 templates/js/translated/build.js:1656
+#: templates/js/translated/build.js:2055 templates/js/translated/order.js:2227
msgid "Allocated"
msgstr ""
-#: templates/js/translated/build.js:1250 templates/js/translated/order.js:2307
+#: templates/js/translated/build.js:1472 templates/js/translated/order.js:2307
msgid "Build stock"
msgstr ""
-#: templates/js/translated/build.js:1254 templates/stock_table.html:53
+#: templates/js/translated/build.js:1476 templates/stock_table.html:53
msgid "Order stock"
msgstr ""
-#: templates/js/translated/build.js:1257 templates/js/translated/order.js:2300
+#: templates/js/translated/build.js:1479 templates/js/translated/order.js:2300
msgid "Allocate stock"
msgstr ""
-#: templates/js/translated/build.js:1322 templates/js/translated/order.js:1499
+#: templates/js/translated/build.js:1558 templates/js/translated/order.js:1499
msgid "Specify stock allocation quantity"
msgstr ""
-#: templates/js/translated/build.js:1393 templates/js/translated/label.js:134
+#: templates/js/translated/build.js:1629 templates/js/translated/label.js:134
#: templates/js/translated/order.js:1550 templates/js/translated/report.js:225
msgid "Select Parts"
msgstr ""
-#: templates/js/translated/build.js:1394 templates/js/translated/order.js:1551
+#: templates/js/translated/build.js:1630 templates/js/translated/order.js:1551
msgid "You must select at least one part to allocate"
msgstr ""
-#: templates/js/translated/build.js:1408 templates/js/translated/order.js:1565
+#: templates/js/translated/build.js:1644 templates/js/translated/order.js:1565
msgid "Select source location (leave blank to take from all locations)"
msgstr ""
-#: templates/js/translated/build.js:1437 templates/js/translated/order.js:1600
+#: templates/js/translated/build.js:1673 templates/js/translated/order.js:1600
msgid "Confirm stock allocation"
msgstr ""
-#: templates/js/translated/build.js:1438
+#: templates/js/translated/build.js:1674
msgid "Allocate Stock Items to Build Order"
msgstr ""
-#: templates/js/translated/build.js:1449 templates/js/translated/order.js:1613
+#: templates/js/translated/build.js:1685 templates/js/translated/order.js:1613
msgid "No matching stock locations"
msgstr ""
-#: templates/js/translated/build.js:1519 templates/js/translated/order.js:1690
+#: templates/js/translated/build.js:1757 templates/js/translated/order.js:1690
msgid "No matching stock items"
msgstr ""
-#: templates/js/translated/build.js:1637
+#: templates/js/translated/build.js:1875
msgid "No builds matching query"
msgstr ""
-#: templates/js/translated/build.js:1654 templates/js/translated/part.js:1213
-#: templates/js/translated/part.js:1624 templates/js/translated/stock.js:1520
-#: templates/js/translated/stock.js:2479
+#: templates/js/translated/build.js:1892 templates/js/translated/part.js:1213
+#: templates/js/translated/part.js:1624 templates/js/translated/stock.js:1644
+#: templates/js/translated/stock.js:2603
msgid "Select"
msgstr ""
-#: templates/js/translated/build.js:1674
+#: templates/js/translated/build.js:1912
msgid "Build order is overdue"
msgstr ""
-#: templates/js/translated/build.js:1735 templates/js/translated/stock.js:2698
+#: templates/js/translated/build.js:1973 templates/js/translated/stock.js:2822
msgid "No user information"
msgstr ""
-#: templates/js/translated/build.js:1747
+#: templates/js/translated/build.js:1985
msgid "No information"
msgstr ""
-#: templates/js/translated/build.js:1798
+#: templates/js/translated/build.js:2036
msgid "No parts allocated for"
msgstr ""
@@ -7966,48 +8061,60 @@ msgstr ""
msgid "Create filter"
msgstr ""
-#: templates/js/translated/forms.js:350 templates/js/translated/forms.js:365
-#: templates/js/translated/forms.js:379 templates/js/translated/forms.js:393
+#: templates/js/translated/forms.js:351 templates/js/translated/forms.js:366
+#: templates/js/translated/forms.js:380 templates/js/translated/forms.js:394
msgid "Action Prohibited"
msgstr ""
-#: templates/js/translated/forms.js:352
+#: templates/js/translated/forms.js:353
msgid "Create operation not allowed"
msgstr ""
-#: templates/js/translated/forms.js:367
+#: templates/js/translated/forms.js:368
msgid "Update operation not allowed"
msgstr ""
-#: templates/js/translated/forms.js:381
+#: templates/js/translated/forms.js:382
msgid "Delete operation not allowed"
msgstr ""
-#: templates/js/translated/forms.js:395
+#: templates/js/translated/forms.js:396
msgid "View operation not allowed"
msgstr ""
-#: templates/js/translated/forms.js:680
+#: templates/js/translated/forms.js:681
msgid "Enter a valid number"
msgstr ""
-#: templates/js/translated/forms.js:1082 templates/modals.html:19
+#: templates/js/translated/forms.js:1129 templates/modals.html:19
#: templates/modals.html:43
msgid "Form errors exist"
msgstr ""
-#: templates/js/translated/forms.js:1487
+#: templates/js/translated/forms.js:1558
msgid "No results found"
msgstr ""
-#: templates/js/translated/forms.js:1691
+#: templates/js/translated/forms.js:1768
msgid "Searching"
msgstr ""
-#: templates/js/translated/forms.js:1930
+#: templates/js/translated/forms.js:2013
msgid "Clear input"
msgstr ""
+#: templates/js/translated/forms.js:2479
+msgid "File Column"
+msgstr ""
+
+#: templates/js/translated/forms.js:2479
+msgid "Field Name"
+msgstr ""
+
+#: templates/js/translated/forms.js:2491
+msgid "Select Columns"
+msgstr ""
+
#: templates/js/translated/helpers.js:19
msgid "YES"
msgstr ""
@@ -8017,7 +8124,7 @@ msgid "NO"
msgstr ""
#: templates/js/translated/label.js:29 templates/js/translated/report.js:118
-#: templates/js/translated/stock.js:1050
+#: templates/js/translated/stock.js:1051
msgid "Select Stock Items"
msgstr ""
@@ -8072,7 +8179,7 @@ msgid "Cancel"
msgstr ""
#: templates/js/translated/modals.js:77 templates/js/translated/modals.js:119
-#: templates/js/translated/modals.js:677 templates/js/translated/modals.js:982
+#: templates/js/translated/modals.js:677 templates/js/translated/modals.js:985
#: templates/modals.html:28 templates/modals.html:51
msgid "Submit"
msgstr ""
@@ -8097,31 +8204,31 @@ msgstr ""
msgid "Loading Data"
msgstr ""
-#: templates/js/translated/modals.js:934
+#: templates/js/translated/modals.js:937
msgid "Invalid response from server"
msgstr ""
-#: templates/js/translated/modals.js:934
+#: templates/js/translated/modals.js:937
msgid "Form data missing from server response"
msgstr ""
-#: templates/js/translated/modals.js:946
+#: templates/js/translated/modals.js:949
msgid "Error posting form data"
msgstr ""
-#: templates/js/translated/modals.js:1043
+#: templates/js/translated/modals.js:1046
msgid "JSON response missing form data"
msgstr ""
-#: templates/js/translated/modals.js:1058
+#: templates/js/translated/modals.js:1061
msgid "Error 400: Bad Request"
msgstr ""
-#: templates/js/translated/modals.js:1059
+#: templates/js/translated/modals.js:1062
msgid "Server returned error code 400"
msgstr ""
-#: templates/js/translated/modals.js:1082
+#: templates/js/translated/modals.js:1085
msgid "Error requesting form data"
msgstr ""
@@ -8141,10 +8248,6 @@ msgstr ""
msgid "Build ID"
msgstr ""
-#: templates/js/translated/model_renderers.js:182
-msgid "Part ID"
-msgstr ""
-
#: templates/js/translated/model_renderers.js:249
#: templates/js/translated/model_renderers.js:270
msgid "Order ID"
@@ -8210,7 +8313,7 @@ msgstr ""
msgid "Quantity to receive"
msgstr ""
-#: templates/js/translated/order.js:520 templates/js/translated/stock.js:2131
+#: templates/js/translated/order.js:520 templates/js/translated/stock.js:2255
msgid "Stock Status"
msgstr ""
@@ -8344,7 +8447,7 @@ msgid "Delete Stock Allocation"
msgstr ""
#: templates/js/translated/order.js:1959 templates/js/translated/order.js:2048
-#: templates/js/translated/stock.js:1436
+#: templates/js/translated/stock.js:1560
msgid "Shipped to customer"
msgstr ""
@@ -8545,12 +8648,12 @@ msgid "No category"
msgstr ""
#: templates/js/translated/part.js:1296
-#: templates/js/translated/table_filters.js:430
+#: templates/js/translated/table_filters.js:425
msgid "Low stock"
msgstr ""
#: templates/js/translated/part.js:1387 templates/js/translated/part.js:1559
-#: templates/js/translated/stock.js:2440
+#: templates/js/translated/stock.js:2564
msgid "Display as list"
msgstr ""
@@ -8558,7 +8661,7 @@ msgstr ""
msgid "Display as grid"
msgstr ""
-#: templates/js/translated/part.js:1578 templates/js/translated/stock.js:2459
+#: templates/js/translated/part.js:1578 templates/js/translated/stock.js:2583
msgid "Display as tree"
msgstr ""
@@ -8566,7 +8669,7 @@ msgstr ""
msgid "Subscribed category"
msgstr ""
-#: templates/js/translated/part.js:1656 templates/js/translated/stock.js:2503
+#: templates/js/translated/part.js:1656 templates/js/translated/stock.js:2627
msgid "Path"
msgstr ""
@@ -8574,11 +8677,12 @@ msgstr ""
msgid "No test templates matching query"
msgstr ""
-#: templates/js/translated/part.js:1751 templates/js/translated/stock.js:1242
+#: templates/js/translated/part.js:1751 templates/js/translated/stock.js:1271
msgid "Edit test result"
msgstr ""
-#: templates/js/translated/part.js:1752 templates/js/translated/stock.js:1243
+#: templates/js/translated/part.js:1752 templates/js/translated/stock.js:1272
+#: templates/js/translated/stock.js:1518
msgid "Delete test result"
msgstr ""
@@ -8687,347 +8791,375 @@ msgstr ""
msgid "Sales Order(s) must be selected before printing report"
msgstr ""
-#: templates/js/translated/stock.js:74
+#: templates/js/translated/stock.js:75
msgid "Serialize Stock Item"
msgstr ""
-#: templates/js/translated/stock.js:92 templates/js/translated/stock.js:181
-msgid "Next available serial number"
-msgstr ""
-
-#: templates/js/translated/stock.js:94 templates/js/translated/stock.js:183
-msgid "Latest serial number"
-msgstr "Số seri mới nhất"
-
-#: templates/js/translated/stock.js:102
+#: templates/js/translated/stock.js:103
msgid "Confirm Stock Serialization"
msgstr ""
-#: templates/js/translated/stock.js:111
+#: templates/js/translated/stock.js:112
msgid "Parent stock location"
msgstr ""
-#: templates/js/translated/stock.js:154
+#: templates/js/translated/stock.js:155
msgid "New Stock Location"
msgstr ""
-#: templates/js/translated/stock.js:194
+#: templates/js/translated/stock.js:195
msgid "This part cannot be serialized"
msgstr ""
-#: templates/js/translated/stock.js:233
+#: templates/js/translated/stock.js:234
msgid "Enter initial quantity for this stock item"
msgstr ""
-#: templates/js/translated/stock.js:239
+#: templates/js/translated/stock.js:240
msgid "Enter serial numbers for new stock (or leave blank)"
msgstr ""
-#: templates/js/translated/stock.js:382
+#: templates/js/translated/stock.js:383
msgid "Created new stock item"
msgstr ""
-#: templates/js/translated/stock.js:395
+#: templates/js/translated/stock.js:396
msgid "Created multiple stock items"
msgstr ""
-#: templates/js/translated/stock.js:420
+#: templates/js/translated/stock.js:421
msgid "Find Serial Number"
msgstr ""
-#: templates/js/translated/stock.js:424 templates/js/translated/stock.js:425
+#: templates/js/translated/stock.js:425 templates/js/translated/stock.js:426
msgid "Enter serial number"
msgstr ""
-#: templates/js/translated/stock.js:441
+#: templates/js/translated/stock.js:442
msgid "Enter a serial number"
msgstr ""
-#: templates/js/translated/stock.js:461
+#: templates/js/translated/stock.js:462
msgid "No matching serial number"
msgstr ""
-#: templates/js/translated/stock.js:470
+#: templates/js/translated/stock.js:471
msgid "More than one matching result found"
msgstr ""
-#: templates/js/translated/stock.js:515
+#: templates/js/translated/stock.js:516
msgid "Export Stock"
msgstr ""
-#: templates/js/translated/stock.js:526
+#: templates/js/translated/stock.js:527
msgid "Include Sublocations"
msgstr ""
-#: templates/js/translated/stock.js:527
+#: templates/js/translated/stock.js:528
msgid "Include stock items in sublocations"
msgstr ""
-#: templates/js/translated/stock.js:636
+#: templates/js/translated/stock.js:637
msgid "Confirm stock assignment"
msgstr ""
-#: templates/js/translated/stock.js:637
+#: templates/js/translated/stock.js:638
msgid "Assign Stock to Customer"
msgstr ""
-#: templates/js/translated/stock.js:714
+#: templates/js/translated/stock.js:715
msgid "Warning: Merge operation cannot be reversed"
msgstr ""
-#: templates/js/translated/stock.js:715
+#: templates/js/translated/stock.js:716
msgid "Some information will be lost when merging stock items"
msgstr ""
-#: templates/js/translated/stock.js:717
+#: templates/js/translated/stock.js:718
msgid "Stock transaction history will be deleted for merged items"
msgstr ""
-#: templates/js/translated/stock.js:718
+#: templates/js/translated/stock.js:719
msgid "Supplier part information will be deleted for merged items"
msgstr ""
-#: templates/js/translated/stock.js:804
+#: templates/js/translated/stock.js:805
msgid "Confirm stock item merge"
msgstr ""
-#: templates/js/translated/stock.js:805
+#: templates/js/translated/stock.js:806
msgid "Merge Stock Items"
msgstr ""
-#: templates/js/translated/stock.js:900
+#: templates/js/translated/stock.js:901
msgid "Transfer Stock"
msgstr ""
-#: templates/js/translated/stock.js:901
+#: templates/js/translated/stock.js:902
msgid "Move"
msgstr ""
-#: templates/js/translated/stock.js:907
+#: templates/js/translated/stock.js:908
msgid "Count Stock"
msgstr ""
-#: templates/js/translated/stock.js:908
+#: templates/js/translated/stock.js:909
msgid "Count"
msgstr ""
-#: templates/js/translated/stock.js:912
+#: templates/js/translated/stock.js:913
msgid "Remove Stock"
msgstr ""
-#: templates/js/translated/stock.js:913
+#: templates/js/translated/stock.js:914
msgid "Take"
msgstr ""
-#: templates/js/translated/stock.js:917
+#: templates/js/translated/stock.js:918
msgid "Add Stock"
msgstr ""
-#: templates/js/translated/stock.js:918 users/models.py:208
+#: templates/js/translated/stock.js:919 users/models.py:213
msgid "Add"
msgstr ""
-#: templates/js/translated/stock.js:922 templates/stock_table.html:58
+#: templates/js/translated/stock.js:923 templates/stock_table.html:58
msgid "Delete Stock"
msgstr ""
-#: templates/js/translated/stock.js:1011
+#: templates/js/translated/stock.js:1012
msgid "Quantity cannot be adjusted for serialized stock"
msgstr ""
-#: templates/js/translated/stock.js:1011
+#: templates/js/translated/stock.js:1012
msgid "Specify stock quantity"
msgstr ""
-#: templates/js/translated/stock.js:1051
+#: templates/js/translated/stock.js:1052
msgid "You must select at least one available stock item"
msgstr ""
-#: templates/js/translated/stock.js:1209
+#: templates/js/translated/stock.js:1210
msgid "PASS"
msgstr ""
-#: templates/js/translated/stock.js:1211
+#: templates/js/translated/stock.js:1212
msgid "FAIL"
msgstr ""
-#: templates/js/translated/stock.js:1216
+#: templates/js/translated/stock.js:1217
msgid "NO RESULT"
msgstr ""
-#: templates/js/translated/stock.js:1238
+#: templates/js/translated/stock.js:1264
+msgid "Pass test"
+msgstr ""
+
+#: templates/js/translated/stock.js:1267
msgid "Add test result"
msgstr ""
-#: templates/js/translated/stock.js:1264
+#: templates/js/translated/stock.js:1293
msgid "No test results found"
msgstr ""
-#: templates/js/translated/stock.js:1321
+#: templates/js/translated/stock.js:1349
msgid "Test Date"
msgstr ""
-#: templates/js/translated/stock.js:1428
+#: templates/js/translated/stock.js:1501
+msgid "Edit Test Result"
+msgstr ""
+
+#: templates/js/translated/stock.js:1523
+msgid "Delete Test Result"
+msgstr ""
+
+#: templates/js/translated/stock.js:1552
msgid "In production"
msgstr ""
-#: templates/js/translated/stock.js:1432
+#: templates/js/translated/stock.js:1556
msgid "Installed in Stock Item"
msgstr ""
-#: templates/js/translated/stock.js:1440
+#: templates/js/translated/stock.js:1564
msgid "Assigned to Sales Order"
msgstr ""
-#: templates/js/translated/stock.js:1446
+#: templates/js/translated/stock.js:1570
msgid "No stock location set"
msgstr ""
-#: templates/js/translated/stock.js:1604
+#: templates/js/translated/stock.js:1728
msgid "Stock item is in production"
msgstr ""
-#: templates/js/translated/stock.js:1609
+#: templates/js/translated/stock.js:1733
msgid "Stock item assigned to sales order"
msgstr ""
-#: templates/js/translated/stock.js:1612
+#: templates/js/translated/stock.js:1736
msgid "Stock item assigned to customer"
msgstr ""
-#: templates/js/translated/stock.js:1616
+#: templates/js/translated/stock.js:1740
msgid "Stock item has expired"
msgstr ""
-#: templates/js/translated/stock.js:1618
+#: templates/js/translated/stock.js:1742
msgid "Stock item will expire soon"
msgstr ""
-#: templates/js/translated/stock.js:1624
+#: templates/js/translated/stock.js:1748
msgid "Serialized stock item has been allocated"
msgstr ""
-#: templates/js/translated/stock.js:1626
+#: templates/js/translated/stock.js:1750
msgid "Stock item has been fully allocated"
msgstr ""
-#: templates/js/translated/stock.js:1628
+#: templates/js/translated/stock.js:1752
msgid "Stock item has been partially allocated"
msgstr ""
-#: templates/js/translated/stock.js:1633
+#: templates/js/translated/stock.js:1757
msgid "Stock item has been installed in another item"
msgstr ""
-#: templates/js/translated/stock.js:1640
+#: templates/js/translated/stock.js:1764
msgid "Stock item has been rejected"
msgstr ""
-#: templates/js/translated/stock.js:1642
+#: templates/js/translated/stock.js:1766
msgid "Stock item is lost"
msgstr ""
-#: templates/js/translated/stock.js:1644
+#: templates/js/translated/stock.js:1768
msgid "Stock item is destroyed"
msgstr ""
-#: templates/js/translated/stock.js:1648
+#: templates/js/translated/stock.js:1772
#: templates/js/translated/table_filters.js:188
msgid "Depleted"
msgstr ""
-#: templates/js/translated/stock.js:1698
+#: templates/js/translated/stock.js:1822
msgid "Stocktake"
msgstr ""
-#: templates/js/translated/stock.js:1771
+#: templates/js/translated/stock.js:1895
msgid "Supplier part not specified"
msgstr ""
-#: templates/js/translated/stock.js:1809
+#: templates/js/translated/stock.js:1933
msgid "No stock items matching query"
msgstr ""
-#: templates/js/translated/stock.js:1830 templates/js/translated/stock.js:1878
+#: templates/js/translated/stock.js:1954 templates/js/translated/stock.js:2002
msgid "items"
msgstr ""
-#: templates/js/translated/stock.js:1918
+#: templates/js/translated/stock.js:2042
msgid "batches"
msgstr ""
-#: templates/js/translated/stock.js:1945
+#: templates/js/translated/stock.js:2069
msgid "locations"
msgstr ""
-#: templates/js/translated/stock.js:1947
+#: templates/js/translated/stock.js:2071
msgid "Undefined location"
msgstr ""
-#: templates/js/translated/stock.js:2146
+#: templates/js/translated/stock.js:2270
msgid "Set Stock Status"
msgstr ""
-#: templates/js/translated/stock.js:2160
+#: templates/js/translated/stock.js:2284
msgid "Select Status Code"
msgstr ""
-#: templates/js/translated/stock.js:2161
+#: templates/js/translated/stock.js:2285
msgid "Status code must be selected"
msgstr ""
-#: templates/js/translated/stock.js:2340
+#: templates/js/translated/stock.js:2464
msgid "Allocated Quantity"
msgstr ""
-#: templates/js/translated/stock.js:2535
+#: templates/js/translated/stock.js:2659
msgid "Invalid date"
msgstr ""
-#: templates/js/translated/stock.js:2557
+#: templates/js/translated/stock.js:2681
msgid "Details"
msgstr ""
-#: templates/js/translated/stock.js:2582
+#: templates/js/translated/stock.js:2706
msgid "Location no longer exists"
msgstr ""
-#: templates/js/translated/stock.js:2601
+#: templates/js/translated/stock.js:2725
msgid "Purchase order no longer exists"
msgstr ""
-#: templates/js/translated/stock.js:2620
+#: templates/js/translated/stock.js:2744
msgid "Customer no longer exists"
msgstr ""
-#: templates/js/translated/stock.js:2638
+#: templates/js/translated/stock.js:2762
msgid "Stock item no longer exists"
msgstr ""
-#: templates/js/translated/stock.js:2661
+#: templates/js/translated/stock.js:2785
msgid "Added"
msgstr ""
-#: templates/js/translated/stock.js:2669
+#: templates/js/translated/stock.js:2793
msgid "Removed"
msgstr ""
-#: templates/js/translated/stock.js:2710
+#: templates/js/translated/stock.js:2834
msgid "Edit tracking entry"
msgstr ""
-#: templates/js/translated/stock.js:2711
+#: templates/js/translated/stock.js:2835
msgid "Delete tracking entry"
msgstr ""
-#: templates/js/translated/stock.js:2762
+#: templates/js/translated/stock.js:2886
msgid "No installed items"
msgstr ""
-#: templates/js/translated/stock.js:2813
+#: templates/js/translated/stock.js:2937
msgid "Uninstall Stock Item"
msgstr ""
+#: templates/js/translated/stock.js:2973
+msgid "Install another stock item into this item"
+msgstr ""
+
+#: templates/js/translated/stock.js:2974
+msgid "Stock items can only be installed if they meet the following criteria"
+msgstr ""
+
+#: templates/js/translated/stock.js:2976
+msgid "The Stock Item links to a Part which is the BOM for this Stock Item"
+msgstr ""
+
+#: templates/js/translated/stock.js:2977
+msgid "The Stock Item is currently available in stock"
+msgstr ""
+
+#: templates/js/translated/stock.js:2978
+msgid "The Stock Item is serialized and does not belong to another item"
+msgstr ""
+
+#: templates/js/translated/stock.js:2991
+msgid "Select part to install"
+msgstr ""
+
#: templates/js/translated/table_filters.js:56
msgid "Trackable Part"
msgstr ""
@@ -9055,12 +9187,12 @@ msgstr ""
#: templates/js/translated/table_filters.js:121
#: templates/js/translated/table_filters.js:122
-#: templates/js/translated/table_filters.js:407
+#: templates/js/translated/table_filters.js:402
msgid "Include subcategories"
msgstr ""
#: templates/js/translated/table_filters.js:126
-#: templates/js/translated/table_filters.js:442
+#: templates/js/translated/table_filters.js:437
msgid "Subscribed"
msgstr ""
@@ -9102,7 +9234,7 @@ msgid "Batch code"
msgstr ""
#: templates/js/translated/table_filters.js:163
-#: templates/js/translated/table_filters.js:379
+#: templates/js/translated/table_filters.js:374
msgid "Active parts"
msgstr ""
@@ -9187,47 +9319,47 @@ msgstr ""
msgid "Show stock which is close to expiring"
msgstr ""
-#: templates/js/translated/table_filters.js:290
+#: templates/js/translated/table_filters.js:285
msgid "Build status"
msgstr ""
-#: templates/js/translated/table_filters.js:303
-#: templates/js/translated/table_filters.js:344
+#: templates/js/translated/table_filters.js:298
+#: templates/js/translated/table_filters.js:339
msgid "Assigned to me"
msgstr ""
-#: templates/js/translated/table_filters.js:320
-#: templates/js/translated/table_filters.js:331
-#: templates/js/translated/table_filters.js:352
+#: templates/js/translated/table_filters.js:315
+#: templates/js/translated/table_filters.js:326
+#: templates/js/translated/table_filters.js:347
msgid "Order status"
msgstr ""
-#: templates/js/translated/table_filters.js:336
-#: templates/js/translated/table_filters.js:357
+#: templates/js/translated/table_filters.js:331
+#: templates/js/translated/table_filters.js:352
msgid "Outstanding"
msgstr ""
-#: templates/js/translated/table_filters.js:408
+#: templates/js/translated/table_filters.js:403
msgid "Include parts in subcategories"
msgstr ""
-#: templates/js/translated/table_filters.js:412
+#: templates/js/translated/table_filters.js:407
msgid "Has IPN"
msgstr ""
-#: templates/js/translated/table_filters.js:413
+#: templates/js/translated/table_filters.js:408
msgid "Part has internal part number"
msgstr ""
-#: templates/js/translated/table_filters.js:418
+#: templates/js/translated/table_filters.js:413
msgid "Show active parts"
msgstr ""
-#: templates/js/translated/table_filters.js:426
+#: templates/js/translated/table_filters.js:421
msgid "Stock available"
msgstr ""
-#: templates/js/translated/table_filters.js:454
+#: templates/js/translated/table_filters.js:449
msgid "Purchasable"
msgstr ""
@@ -9480,35 +9612,35 @@ msgstr ""
msgid "Important dates"
msgstr ""
-#: users/models.py:195
+#: users/models.py:200
msgid "Permission set"
msgstr ""
-#: users/models.py:203
+#: users/models.py:208
msgid "Group"
msgstr ""
-#: users/models.py:206
+#: users/models.py:211
msgid "View"
msgstr ""
-#: users/models.py:206
+#: users/models.py:211
msgid "Permission to view items"
msgstr ""
-#: users/models.py:208
+#: users/models.py:213
msgid "Permission to add items"
msgstr ""
-#: users/models.py:210
+#: users/models.py:215
msgid "Change"
msgstr ""
-#: users/models.py:210
+#: users/models.py:215
msgid "Permissions to edit items"
msgstr ""
-#: users/models.py:212
+#: users/models.py:217
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 5335bbbfeb..8378fb6ddb 100644
--- a/InvenTree/locale/zh/LC_MESSAGES/django.po
+++ b/InvenTree/locale/zh/LC_MESSAGES/django.po
@@ -3,8 +3,8 @@ msgid ""
msgstr ""
"Project-Id-Version: inventree\n"
"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2022-01-29 00:17+0000\n"
-"PO-Revision-Date: 2022-01-29 01:11\n"
+"POT-Creation-Date: 2022-02-18 20:36+0000\n"
+"PO-Revision-Date: 2022-02-18 20:38\n"
"Last-Translator: \n"
"Language-Team: Chinese Simplified\n"
"Language: zh_CN\n"
@@ -34,9 +34,9 @@ msgstr "未找到指定操作"
msgid "Enter date"
msgstr "输入日期"
-#: InvenTree/forms.py:126 build/forms.py:48 build/forms.py:69 order/forms.py:24
-#: order/forms.py:35 order/forms.py:46 order/forms.py:57
-#: templates/account/email_confirm.html:20 templates/js/translated/forms.js:595
+#: InvenTree/forms.py:126 order/forms.py:24 order/forms.py:35 order/forms.py:46
+#: order/forms.py:57 templates/account/email_confirm.html:20
+#: templates/js/translated/forms.js:596
msgid "Confirm"
msgstr "确认"
@@ -86,7 +86,7 @@ msgid "Duplicate serial: {n}"
msgstr "重复的序列号: {n}"
#: InvenTree/helpers.py:446 order/models.py:282 order/models.py:425
-#: stock/views.py:1231
+#: stock/views.py:1082
msgid "Invalid quantity provided"
msgstr "提供的数量无效"
@@ -119,133 +119,133 @@ msgstr "未找到序列号"
msgid "Number of unique serial number ({s}) must match quantity ({q})"
msgstr "唯一序列号 ({s}) 必须匹配数量 ({q})"
-#: InvenTree/models.py:120
+#: InvenTree/models.py:176
msgid "Missing file"
msgstr "缺少文件"
-#: InvenTree/models.py:121
+#: InvenTree/models.py:177
msgid "Missing external link"
msgstr ""
-#: InvenTree/models.py:132 stock/models.py:1995
+#: InvenTree/models.py:188 stock/models.py:1995
#: templates/js/translated/attachment.js:119
msgid "Attachment"
msgstr "附件"
-#: InvenTree/models.py:133
+#: InvenTree/models.py:189
msgid "Select file to attach"
msgstr "选择附件"
-#: InvenTree/models.py:139 company/models.py:131 company/models.py:348
-#: company/models.py:564 order/models.py:127 part/models.py:830
+#: InvenTree/models.py:195 company/models.py:131 company/models.py:348
+#: company/models.py:564 order/models.py:127 part/models.py:860
#: report/templates/report/inventree_build_order_base.html:165
#: templates/js/translated/company.js:540
#: templates/js/translated/company.js:829 templates/js/translated/part.js:1324
msgid "Link"
msgstr "链接"
-#: InvenTree/models.py:140 build/models.py:332 part/models.py:831
+#: InvenTree/models.py:196 build/models.py:332 part/models.py:861
#: stock/models.py:529
msgid "Link to external URL"
msgstr "链接到外部 URL"
-#: InvenTree/models.py:143 templates/js/translated/attachment.js:163
+#: InvenTree/models.py:199 templates/js/translated/attachment.js:163
msgid "Comment"
msgstr "注释"
-#: InvenTree/models.py:143
+#: InvenTree/models.py:199
msgid "File comment"
msgstr "文件注释"
-#: InvenTree/models.py:149 InvenTree/models.py:150 common/models.py:1223
-#: common/models.py:1224 common/models.py:1452 common/models.py:1453
-#: part/models.py:2265 part/models.py:2285
+#: InvenTree/models.py:205 InvenTree/models.py:206 common/models.py:1235
+#: common/models.py:1236 common/models.py:1464 common/models.py:1465
+#: part/models.py:2301 part/models.py:2321
#: report/templates/report/inventree_test_report_base.html:96
-#: templates/js/translated/stock.js:2692
+#: templates/js/translated/stock.js:2816
msgid "User"
msgstr "用户"
-#: InvenTree/models.py:153
+#: InvenTree/models.py:209
msgid "upload date"
msgstr "上传日期"
-#: InvenTree/models.py:176
+#: InvenTree/models.py:232
msgid "Filename must not be empty"
msgstr "文件名不能为空!"
-#: InvenTree/models.py:199
+#: InvenTree/models.py:255
msgid "Invalid attachment directory"
msgstr "非法的附件目录"
-#: InvenTree/models.py:209
+#: InvenTree/models.py:265
#, python-brace-format
msgid "Filename contains illegal character '{c}'"
msgstr "文件名包含非法字符 '{c}'"
-#: InvenTree/models.py:212
+#: InvenTree/models.py:268
msgid "Filename missing extension"
msgstr "缺少文件名扩展"
-#: InvenTree/models.py:219
+#: InvenTree/models.py:275
msgid "Attachment with this filename already exists"
msgstr "使用此文件名的附件已存在"
-#: InvenTree/models.py:226
+#: InvenTree/models.py:282
msgid "Error renaming file"
msgstr "重命名文件出错"
-#: InvenTree/models.py:261
+#: InvenTree/models.py:317
msgid "Invalid choice"
msgstr "选择无效"
-#: InvenTree/models.py:277 InvenTree/models.py:278 common/models.py:1438
-#: company/models.py:415 label/models.py:112 part/models.py:774
-#: part/models.py:2449 plugin/models.py:40 report/models.py:181
+#: InvenTree/models.py:333 InvenTree/models.py:334 common/models.py:1450
+#: company/models.py:415 label/models.py:112 part/models.py:804
+#: part/models.py:2485 plugin/models.py:40 report/models.py:181
#: templates/InvenTree/settings/mixins/urls.html:13
#: templates/InvenTree/settings/plugin.html:48
#: templates/InvenTree/settings/plugin.html:125
#: templates/InvenTree/settings/plugin_settings.html:23
-#: templates/InvenTree/settings/settings.html:282
+#: templates/InvenTree/settings/settings.html:319
#: templates/js/translated/company.js:641 templates/js/translated/part.js:567
#: templates/js/translated/part.js:706 templates/js/translated/part.js:1631
-#: templates/js/translated/stock.js:2485
+#: templates/js/translated/stock.js:2609
msgid "Name"
msgstr "名称"
-#: InvenTree/models.py:284 build/models.py:209
+#: InvenTree/models.py:340 build/models.py:209
#: build/templates/build/detail.html:25 company/models.py:354
#: company/models.py:570 company/templates/company/company_base.html:68
#: company/templates/company/manufacturer_part.html:76
#: company/templates/company/supplier_part.html:73 label/models.py:119
-#: order/models.py:125 part/models.py:797 part/templates/part/category.html:74
+#: order/models.py:125 part/models.py:827 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:93
#: templates/InvenTree/settings/plugin_settings.html:33
-#: templates/js/translated/bom.js:339 templates/js/translated/bom.js:552
-#: templates/js/translated/build.js:1682 templates/js/translated/company.js:345
+#: templates/js/translated/bom.js:552 templates/js/translated/bom.js:765
+#: templates/js/translated/build.js:1920 templates/js/translated/company.js:345
#: templates/js/translated/company.js:551
#: templates/js/translated/company.js:840 templates/js/translated/order.js:836
#: templates/js/translated/order.js:1019 templates/js/translated/order.js:1258
#: templates/js/translated/part.js:626 templates/js/translated/part.js:999
#: templates/js/translated/part.js:1084 templates/js/translated/part.js:1254
#: templates/js/translated/part.js:1650 templates/js/translated/part.js:1719
-#: templates/js/translated/stock.js:1577 templates/js/translated/stock.js:2314
-#: templates/js/translated/stock.js:2497 templates/js/translated/stock.js:2542
+#: templates/js/translated/stock.js:1701 templates/js/translated/stock.js:2438
+#: templates/js/translated/stock.js:2621 templates/js/translated/stock.js:2666
msgid "Description"
msgstr "描述信息"
-#: InvenTree/models.py:285
+#: InvenTree/models.py:341
msgid "Description (optional)"
msgstr "描述 (可选)"
-#: InvenTree/models.py:293
+#: InvenTree/models.py:349
msgid "parent"
msgstr "上级项"
-#: InvenTree/serializers.py:65 part/models.py:2734
+#: InvenTree/serializers.py:65 part/models.py:2803
msgid "Must be a valid number"
msgstr "必须是有效数字"
@@ -253,83 +253,127 @@ msgstr "必须是有效数字"
msgid "Filename"
msgstr "文件名"
-#: InvenTree/settings.py:661
+#: InvenTree/serializers.py:334
+msgid "Invalid value"
+msgstr ""
+
+#: InvenTree/serializers.py:355
+msgid "Data File"
+msgstr ""
+
+#: InvenTree/serializers.py:356
+msgid "Select data file for upload"
+msgstr ""
+
+#: InvenTree/serializers.py:380
+msgid "Unsupported file type"
+msgstr ""
+
+#: InvenTree/serializers.py:386
+msgid "File is too large"
+msgstr ""
+
+#: InvenTree/serializers.py:407
+msgid "No columns found in file"
+msgstr ""
+
+#: InvenTree/serializers.py:410
+msgid "No data rows found in file"
+msgstr ""
+
+#: InvenTree/serializers.py:533
+msgid "No data rows provided"
+msgstr ""
+
+#: InvenTree/serializers.py:536
+msgid "No data columns supplied"
+msgstr ""
+
+#: InvenTree/serializers.py:623
+msgid "Missing required column"
+msgstr ""
+
+#: InvenTree/serializers.py:632
+msgid "Duplicate column"
+msgstr ""
+
+#: InvenTree/settings.py:655
msgid "German"
msgstr "德语"
-#: InvenTree/settings.py:662
+#: InvenTree/settings.py:656
msgid "Greek"
msgstr "希腊语"
-#: InvenTree/settings.py:663
+#: InvenTree/settings.py:657
msgid "English"
msgstr "英语"
-#: InvenTree/settings.py:664
+#: InvenTree/settings.py:658
msgid "Spanish"
msgstr "西班牙语"
-#: InvenTree/settings.py:665
+#: InvenTree/settings.py:659
msgid "Spanish (Mexican)"
msgstr ""
-#: InvenTree/settings.py:666
+#: InvenTree/settings.py:660
msgid "French"
msgstr "法语"
-#: InvenTree/settings.py:667
+#: InvenTree/settings.py:661
msgid "Hebrew"
msgstr "希伯来语"
-#: InvenTree/settings.py:668
+#: InvenTree/settings.py:662
msgid "Italian"
msgstr "意大利语"
-#: InvenTree/settings.py:669
+#: InvenTree/settings.py:663
msgid "Japanese"
msgstr "日语"
-#: InvenTree/settings.py:670
+#: InvenTree/settings.py:664
msgid "Korean"
msgstr "韩语"
-#: InvenTree/settings.py:671
+#: InvenTree/settings.py:665
msgid "Dutch"
msgstr "荷兰语"
-#: InvenTree/settings.py:672
+#: InvenTree/settings.py:666
msgid "Norwegian"
msgstr "挪威语"
-#: InvenTree/settings.py:673
+#: InvenTree/settings.py:667
msgid "Polish"
msgstr "波兰语"
-#: InvenTree/settings.py:674
+#: InvenTree/settings.py:668
msgid "Portugese"
msgstr ""
-#: InvenTree/settings.py:675
+#: InvenTree/settings.py:669
msgid "Russian"
msgstr "俄语"
-#: InvenTree/settings.py:676
+#: InvenTree/settings.py:670
msgid "Swedish"
msgstr "瑞典语"
-#: InvenTree/settings.py:677
+#: InvenTree/settings.py:671
msgid "Thai"
msgstr "泰语"
-#: InvenTree/settings.py:678
+#: InvenTree/settings.py:672
msgid "Turkish"
msgstr "土耳其语"
-#: InvenTree/settings.py:679
+#: InvenTree/settings.py:673
msgid "Vietnamese"
msgstr "越南语"
-#: InvenTree/settings.py:680
+#: InvenTree/settings.py:674
msgid "Chinese"
msgstr "中文(简体)"
@@ -346,7 +390,7 @@ msgid "InvenTree system health checks failed"
msgstr "InventTree系统健康检查失败"
#: InvenTree/status_codes.py:101 InvenTree/status_codes.py:142
-#: InvenTree/status_codes.py:316 templates/js/translated/table_filters.js:313
+#: InvenTree/status_codes.py:316 templates/js/translated/table_filters.js:308
msgid "Pending"
msgstr "待定"
@@ -456,7 +500,7 @@ msgstr "从父项拆分"
msgid "Split child item"
msgstr "拆分子项"
-#: InvenTree/status_codes.py:294 templates/js/translated/stock.js:2072
+#: InvenTree/status_codes.py:294 templates/js/translated/stock.js:2196
msgid "Merged stock items"
msgstr ""
@@ -484,41 +528,41 @@ msgstr "收到定购单"
msgid "Production"
msgstr "生产中"
-#: InvenTree/validators.py:23
+#: InvenTree/validators.py:25
msgid "Not a valid currency code"
msgstr "不是有效的货币代码"
-#: InvenTree/validators.py:51
+#: InvenTree/validators.py:53
msgid "Invalid character in part name"
msgstr "商品名称中存在无效字符"
-#: InvenTree/validators.py:64
+#: InvenTree/validators.py:66
#, python-brace-format
msgid "IPN must match regex pattern {pat}"
msgstr "IPN 必须匹配正则表达式 {pat}"
-#: InvenTree/validators.py:78 InvenTree/validators.py:92
-#: InvenTree/validators.py:106
+#: InvenTree/validators.py:80 InvenTree/validators.py:94
+#: InvenTree/validators.py:108
#, python-brace-format
msgid "Reference must match pattern {pattern}"
msgstr "引用必须匹配模板 {pattern}"
-#: InvenTree/validators.py:114
+#: InvenTree/validators.py:116
#, python-brace-format
msgid "Illegal character in name ({x})"
msgstr "名称中存在非法字符 ({x})"
-#: InvenTree/validators.py:133 InvenTree/validators.py:149
+#: InvenTree/validators.py:137 InvenTree/validators.py:153
msgid "Overage value must not be negative"
msgstr "备损值不能为负数"
-#: InvenTree/validators.py:151
+#: InvenTree/validators.py:155
msgid "Overage must not exceed 100%"
msgstr "备损不能超过 100%"
-#: InvenTree/validators.py:158
-msgid "Overage must be an integer value or a percentage"
-msgstr "备损必须是整数值或百分比"
+#: InvenTree/validators.py:162
+msgid "Invalid value for overage"
+msgstr ""
#: InvenTree/views.py:538
msgid "Delete Item"
@@ -584,69 +628,11 @@ msgstr ""
msgid "Barcode associated with Stock Item"
msgstr ""
-#: build/forms.py:36 build/models.py:1293
-#: build/templates/build/build_base.html:82
-#: build/templates/build/detail.html:35 common/models.py:1263
-#: company/forms.py:42 company/templates/company/supplier_part.html:251
-#: order/models.py:805 order/models.py:1229 order/serializers.py:816
-#: order/templates/order/order_wizard/match_parts.html:30
-#: order/templates/order/order_wizard/select_parts.html:34 part/forms.py:144
-#: part/forms.py:160 part/forms.py:176 part/models.py:2636
-#: part/templates/part/bom_upload/match_parts.html:31
-#: part/templates/part/detail.html:992 part/templates/part/detail.html:1078
-#: part/templates/part/part_pricing.html:16
-#: report/templates/report/inventree_build_order_base.html:114
-#: report/templates/report/inventree_po_report.html:91
-#: report/templates/report/inventree_so_report.html:91
-#: report/templates/report/inventree_test_report_base.html:81
-#: report/templates/report/inventree_test_report_base.html:139
-#: stock/forms.py:142 stock/serializers.py:293
-#: stock/templates/stock/item_base.html:181
-#: stock/templates/stock/item_base.html:262
-#: stock/templates/stock/item_base.html:270
-#: templates/js/translated/barcode.js:385 templates/js/translated/bom.js:567
-#: templates/js/translated/build.js:295 templates/js/translated/build.js:495
-#: templates/js/translated/build.js:689 templates/js/translated/build.js:699
-#: templates/js/translated/build.js:1075 templates/js/translated/build.js:1422
-#: templates/js/translated/model_renderers.js:99
-#: templates/js/translated/order.js:101 templates/js/translated/order.js:1056
-#: 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:906
-#: templates/js/translated/part.js:1862 templates/js/translated/part.js:1985
-#: templates/js/translated/part.js:2063 templates/js/translated/stock.js:391
-#: templates/js/translated/stock.js:588 templates/js/translated/stock.js:758
-#: templates/js/translated/stock.js:2677 templates/js/translated/stock.js:2779
-msgid "Quantity"
-msgstr "数量"
-
-#: build/forms.py:37
-msgid "Enter quantity for build output"
-msgstr "输入生产产出数量"
-
-#: build/forms.py:41 order/serializers.py:820 stock/forms.py:81
-#: stock/serializers.py:314 templates/js/translated/stock.js:238
-#: templates/js/translated/stock.js:392
-msgid "Serial Numbers"
-msgstr "序列号"
-
-#: build/forms.py:43
-msgid "Enter serial numbers for build outputs"
-msgstr "输入生产产出的序列号"
-
-#: build/forms.py:49
-msgid "Confirm creation of build output"
-msgstr "确认创建生产产出"
-
-#: build/forms.py:70
-msgid "Confirm deletion of build output"
-msgstr "确认删除生产产出"
-
-#: build/forms.py:89
+#: build/forms.py:20
msgid "Confirm cancel"
msgstr "确认取消"
-#: build/forms.py:89 build/views.py:65
+#: build/forms.py:20 build/views.py:62
msgid "Confirm build cancellation"
msgstr "确认生产取消"
@@ -657,7 +643,7 @@ msgstr "上级生产选项无效"
#: build/models.py:139 build/templates/build/build_base.html:9
#: build/templates/build/build_base.html:27
#: report/templates/report/inventree_build_order_base.html:106
-#: templates/js/translated/build.js:457 templates/js/translated/stock.js:2290
+#: templates/js/translated/build.js:676 templates/js/translated/stock.js:2414
msgid "Build Order"
msgstr "生产订单"
@@ -665,7 +651,7 @@ msgstr "生产订单"
#: 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
+#: part/templates/part/part_sidebar.html:21 templates/InvenTree/index.html:221
#: templates/InvenTree/search.html:139
#: templates/InvenTree/settings/sidebar.html:43 users/models.py:44
msgid "Build Orders"
@@ -676,11 +662,11 @@ msgid "Build Order Reference"
msgstr "相关生产订单"
#: build/models.py:201 order/models.py:213 order/models.py:541
-#: order/models.py:812 part/models.py:2645
-#: part/templates/part/bom_upload/match_parts.html:30
+#: order/models.py:812 part/models.py:2714
+#: part/templates/part/upload_bom.html:54
#: report/templates/report/inventree_po_report.html:92
#: report/templates/report/inventree_so_report.html:92
-#: templates/js/translated/bom.js:559 templates/js/translated/build.js:1179
+#: templates/js/translated/bom.js:772 templates/js/translated/build.js:1401
#: templates/js/translated/order.js:1050 templates/js/translated/order.js:2144
msgid "Reference"
msgstr "引用"
@@ -689,7 +675,7 @@ msgstr "引用"
msgid "Brief description of the build"
msgstr "生产的简短描述."
-#: build/models.py:221 build/templates/build/build_base.html:164
+#: build/models.py:221 build/templates/build/build_base.html:169
#: build/templates/build/detail.html:88
msgid "Parent Build"
msgstr "上级生产"
@@ -702,30 +688,31 @@ msgstr "此次生产匹配的订单"
#: build/templates/build/detail.html:30 company/models.py:705
#: order/models.py:876 order/models.py:950
#: order/templates/order/order_wizard/select_parts.html:32 part/models.py:359
-#: part/models.py:2211 part/models.py:2227 part/models.py:2246
-#: part/models.py:2263 part/models.py:2365 part/models.py:2487
-#: part/models.py:2620 part/models.py:2927 part/serializers.py:658
-#: part/templates/part/part_app_base.html:8
+#: part/models.py:2247 part/models.py:2263 part/models.py:2282
+#: part/models.py:2299 part/models.py:2401 part/models.py:2523
+#: part/models.py:2613 part/models.py:2689 part/models.py:2996
+#: part/serializers.py:666 part/templates/part/part_app_base.html:8
#: part/templates/part/part_pricing.html:12
#: part/templates/part/set_category.html:13
+#: part/templates/part/upload_bom.html:52
#: 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: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:338
-#: templates/js/translated/bom.js:517 templates/js/translated/build.js:680
-#: templates/js/translated/build.js:1048 templates/js/translated/build.js:1419
-#: templates/js/translated/build.js:1687 templates/js/translated/company.js:492
+#: templates/js/translated/barcode.js:383 templates/js/translated/bom.js:551
+#: templates/js/translated/bom.js:730 templates/js/translated/build.js:902
+#: templates/js/translated/build.js:1270 templates/js/translated/build.js:1655
+#: templates/js/translated/build.js:1925 templates/js/translated/company.js:492
#: templates/js/translated/company.js:749 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:984
#: templates/js/translated/part.js:1065 templates/js/translated/part.js:1232
-#: templates/js/translated/stock.js:562 templates/js/translated/stock.js:727
-#: templates/js/translated/stock.js:934 templates/js/translated/stock.js:1534
-#: templates/js/translated/stock.js:2767
+#: templates/js/translated/stock.js:563 templates/js/translated/stock.js:728
+#: templates/js/translated/stock.js:935 templates/js/translated/stock.js:1658
+#: templates/js/translated/stock.js:2891 templates/js/translated/stock.js:2990
msgid "Part"
msgstr "商品"
@@ -741,7 +728,7 @@ msgstr "相关销售订单"
msgid "SalesOrder to which this build is allocated"
msgstr "此次生产匹配的销售订单"
-#: build/models.py:249 templates/js/translated/build.js:1407
+#: build/models.py:249 templates/js/translated/build.js:1643
#: templates/js/translated/order.js:1564
msgid "Source Location"
msgstr "来源地点"
@@ -782,15 +769,15 @@ msgstr "生产状态"
msgid "Build status code"
msgstr "生产状态代码"
-#: build/models.py:287 stock/models.py:533
+#: build/models.py:287 build/serializers.py:218 stock/models.py:533
msgid "Batch Code"
msgstr "批量代码"
-#: build/models.py:291
+#: build/models.py:291 build/serializers.py:219
msgid "Batch code for this build output"
msgstr "此生产产出的批量代码"
-#: build/models.py:294 order/models.py:129 part/models.py:969
+#: build/models.py:294 order/models.py:129 part/models.py:999
#: part/templates/part/part_base.html:313 templates/js/translated/order.js:1271
msgid "Creation Date"
msgstr "创建日期"
@@ -804,7 +791,7 @@ msgid "Target date for build completion. Build will be overdue after this date."
msgstr "生产完成的目标日期。生产将在此日期之后逾期。"
#: build/models.py:302 order/models.py:255
-#: templates/js/translated/build.js:1758
+#: templates/js/translated/build.js:1996
msgid "Completion Date"
msgstr "完成日期:"
@@ -812,7 +799,7 @@ msgstr "完成日期:"
msgid "completed by"
msgstr "完成人"
-#: build/models.py:316 templates/js/translated/build.js:1729
+#: build/models.py:316 templates/js/translated/build.js:1967
msgid "Issued by"
msgstr "发布者"
@@ -820,12 +807,12 @@ msgstr "发布者"
msgid "User who issued this build order"
msgstr "发布此生产订单的用户"
-#: build/models.py:325 build/templates/build/build_base.html:185
+#: build/models.py:325 build/templates/build/build_base.html:190
#: build/templates/build/detail.html:116 order/models.py:143
#: order/templates/order/order_base.html:170
-#: order/templates/order/sales_order_base.html:182 part/models.py:973
+#: order/templates/order/sales_order_base.html:182 part/models.py:1003
#: report/templates/report/inventree_build_order_base.html:159
-#: templates/js/translated/build.js:1741 templates/js/translated/order.js:864
+#: templates/js/translated/build.js:1979 templates/js/translated/order.js:864
msgid "Responsible"
msgstr "责任人"
@@ -837,26 +824,26 @@ msgstr "负责此生产订单的用户"
#: company/templates/company/manufacturer_part.html:102
#: company/templates/company/supplier_part.html:126
#: part/templates/part/part_base.html:354 stock/models.py:527
-#: stock/templates/stock/item_base.html:373
+#: stock/templates/stock/item_base.html:375
msgid "External Link"
msgstr "外部链接"
-#: build/models.py:336 build/serializers.py:201
+#: build/models.py:336 build/serializers.py:380
#: build/templates/build/sidebar.html:21 company/models.py:142
#: company/models.py:577 company/templates/company/sidebar.html:25
#: order/models.py:147 order/models.py:814 order/models.py:1071
#: order/templates/order/po_sidebar.html:11
-#: order/templates/order/so_sidebar.html:17 part/models.py:958
-#: part/templates/part/detail.html:137 part/templates/part/part_sidebar.html:54
+#: order/templates/order/so_sidebar.html:17 part/models.py:988
+#: part/templates/part/detail.html:140 part/templates/part/part_sidebar.html:57
#: report/templates/report/inventree_build_order_base.html:173
-#: stock/forms.py:140 stock/forms.py:190 stock/forms.py:224 stock/models.py:599
+#: stock/forms.py:137 stock/forms.py:171 stock/models.py:599
#: stock/models.py:1895 stock/models.py:2001 stock/serializers.py:332
-#: stock/serializers.py:640 stock/serializers.py:738 stock/serializers.py:870
+#: stock/serializers.py:697 stock/serializers.py:795 stock/serializers.py:927
#: stock/templates/stock/stock_sidebar.html:25
-#: templates/js/translated/barcode.js:58 templates/js/translated/bom.js:723
+#: templates/js/translated/barcode.js:58 templates/js/translated/bom.js:936
#: templates/js/translated/company.js:845 templates/js/translated/order.js:1149
#: templates/js/translated/order.js:1445 templates/js/translated/order.js:2280
-#: templates/js/translated/stock.js:1317 templates/js/translated/stock.js:1803
+#: templates/js/translated/stock.js:1345 templates/js/translated/stock.js:1927
msgid "Notes"
msgstr "备注"
@@ -864,208 +851,284 @@ msgstr "备注"
msgid "Extra build notes"
msgstr "额外的生产备注"
-#: build/models.py:717
+#: build/models.py:756
msgid "No build output specified"
msgstr "未指定生产产出"
-#: build/models.py:720
+#: build/models.py:759
msgid "Build output is already completed"
msgstr "生产产出已完成"
-#: build/models.py:723
+#: build/models.py:762
msgid "Build output does not match Build Order"
msgstr "生产产出与订单不匹配"
-#: build/models.py:1115
+#: build/models.py:1154
msgid "Build item must specify a build output, as master part is marked as trackable"
msgstr ""
-#: build/models.py:1124
+#: build/models.py:1163
#, python-brace-format
msgid "Allocated quantity ({q}) must not execed available stock quantity ({a})"
msgstr ""
-#: build/models.py:1134
+#: build/models.py:1173
msgid "Stock item is over-allocated"
msgstr "库存物品分配过度!"
-#: build/models.py:1140 order/models.py:1189
+#: build/models.py:1179 order/models.py:1189
msgid "Allocation quantity must be greater than zero"
msgstr "分配数量必须大于0"
-#: build/models.py:1146
+#: build/models.py:1185
msgid "Quantity must be 1 for serialized stock"
msgstr ""
-#: build/models.py:1203
+#: build/models.py:1242
msgid "Selected stock item not found in BOM"
msgstr ""
-#: build/models.py:1263 stock/templates/stock/item_base.html:345
-#: templates/InvenTree/search.html:137 templates/js/translated/build.js:1660
+#: build/models.py:1302 stock/templates/stock/item_base.html:347
+#: templates/InvenTree/search.html:137 templates/js/translated/build.js:1898
#: templates/navbar.html:35
msgid "Build"
msgstr "生产"
-#: build/models.py:1264
+#: build/models.py:1303
msgid "Build to allocate parts"
msgstr ""
-#: build/models.py:1280 build/serializers.py:388 order/serializers.py:696
-#: order/serializers.py:714 stock/serializers.py:578 stock/serializers.py:696
-#: stock/templates/stock/item_base.html:9
+#: build/models.py:1319 build/serializers.py:570 order/serializers.py:696
+#: order/serializers.py:714 stock/serializers.py:404 stock/serializers.py:635
+#: stock/serializers.py:753 stock/templates/stock/item_base.html:9
#: stock/templates/stock/item_base.html:23
-#: stock/templates/stock/item_base.html:367
-#: templates/js/translated/build.js:468 templates/js/translated/build.js:473
-#: templates/js/translated/build.js:1421 templates/js/translated/build.js:1803
+#: stock/templates/stock/item_base.html:369
+#: templates/js/translated/build.js:687 templates/js/translated/build.js:692
+#: templates/js/translated/build.js:1657 templates/js/translated/build.js:2041
#: 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:563 templates/js/translated/stock.js:728
-#: templates/js/translated/stock.js:2628
+#: templates/js/translated/stock.js:564 templates/js/translated/stock.js:729
+#: templates/js/translated/stock.js:2752
msgid "Stock Item"
msgstr "库存项"
-#: build/models.py:1281
+#: build/models.py:1320
msgid "Source stock item"
msgstr "源库存项"
-#: build/models.py:1294
+#: build/models.py:1332 build/serializers.py:188
+#: build/templates/build/build_base.html:82
+#: build/templates/build/detail.html:35 common/models.py:1275
+#: company/forms.py:42 company/templates/company/supplier_part.html:251
+#: order/models.py:805 order/models.py:1229 order/serializers.py:816
+#: order/templates/order/order_wizard/match_parts.html:30
+#: order/templates/order/order_wizard/select_parts.html:34 part/forms.py:144
+#: part/forms.py:160 part/forms.py:176 part/models.py:2705
+#: part/templates/part/detail.html:995 part/templates/part/detail.html:1081
+#: part/templates/part/part_pricing.html:16
+#: part/templates/part/upload_bom.html:53
+#: report/templates/report/inventree_build_order_base.html:114
+#: report/templates/report/inventree_po_report.html:91
+#: report/templates/report/inventree_so_report.html:91
+#: report/templates/report/inventree_test_report_base.html:81
+#: report/templates/report/inventree_test_report_base.html:139
+#: stock/forms.py:139 stock/serializers.py:293
+#: stock/templates/stock/item_base.html:183
+#: stock/templates/stock/item_base.html:264
+#: stock/templates/stock/item_base.html:272
+#: templates/js/translated/barcode.js:385 templates/js/translated/bom.js:780
+#: templates/js/translated/build.js:375 templates/js/translated/build.js:523
+#: templates/js/translated/build.js:714 templates/js/translated/build.js:911
+#: templates/js/translated/build.js:921 templates/js/translated/build.js:1297
+#: templates/js/translated/build.js:1658
+#: templates/js/translated/model_renderers.js:99
+#: templates/js/translated/order.js:101 templates/js/translated/order.js:1056
+#: 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:906
+#: templates/js/translated/part.js:1862 templates/js/translated/part.js:1985
+#: templates/js/translated/part.js:2063 templates/js/translated/stock.js:392
+#: templates/js/translated/stock.js:589 templates/js/translated/stock.js:759
+#: templates/js/translated/stock.js:2801 templates/js/translated/stock.js:2903
+msgid "Quantity"
+msgstr "数量"
+
+#: build/models.py:1333
msgid "Stock quantity to allocate to build"
msgstr ""
-#: build/models.py:1302
+#: build/models.py:1341
msgid "Install into"
msgstr "安装到"
-#: build/models.py:1303
+#: build/models.py:1342
msgid "Destination stock item"
msgstr ""
-#: build/serializers.py:137 build/serializers.py:417
+#: build/serializers.py:138 build/serializers.py:599
msgid "Build Output"
msgstr ""
-#: build/serializers.py:146
+#: build/serializers.py:150
msgid "Build output does not match the parent build"
msgstr ""
-#: build/serializers.py:150
+#: build/serializers.py:154
msgid "Output part does not match BuildOrder part"
msgstr ""
-#: build/serializers.py:154
+#: build/serializers.py:158
msgid "This build output has already been completed"
msgstr ""
-#: build/serializers.py:158
+#: build/serializers.py:164
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:731
-#: stock/serializers.py:972 stock/templates/stock/item_base.html:313
-#: templates/js/translated/barcode.js:384
-#: templates/js/translated/barcode.js:557 templates/js/translated/build.js:480
-#: templates/js/translated/build.js:1087 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:179 templates/js/translated/stock.js:564
-#: templates/js/translated/stock.js:729 templates/js/translated/stock.js:936
-#: templates/js/translated/stock.js:1684 templates/js/translated/stock.js:2569
-msgid "Location"
-msgstr "地点"
+#: build/serializers.py:189
+msgid "Enter quantity for build output"
+msgstr "输入生产产出数量"
-#: build/serializers.py:191
-msgid "Location for completed build outputs"
-msgstr ""
-
-#: build/serializers.py:197 build/templates/build/build_base.html:137
-#: build/templates/build/detail.html:63 order/models.py:557
-#: order/serializers.py:247 stock/templates/stock/item_base.html:187
-#: templates/js/translated/barcode.js:140 templates/js/translated/build.js:1716
-#: templates/js/translated/order.js:591 templates/js/translated/order.js:840
-#: templates/js/translated/order.js:1263 templates/js/translated/stock.js:1659
-#: templates/js/translated/stock.js:2646 templates/js/translated/stock.js:2795
-msgid "Status"
-msgstr "状态"
-
-#: build/serializers.py:213
-msgid "A list of build outputs must be provided"
-msgstr ""
-
-#: build/serializers.py:249
-msgid "Accept Unallocated"
-msgstr ""
-
-#: build/serializers.py:250
-msgid "Accept that stock items have not been fully allocated to this build order"
-msgstr ""
-
-#: build/serializers.py:260 templates/js/translated/build.js:149
-msgid "Required stock has not been fully allocated"
-msgstr "所需库存尚未完全分配"
-
-#: build/serializers.py:265
-msgid "Accept Incomplete"
-msgstr ""
-
-#: build/serializers.py:266
-msgid "Accept that the required number of build outputs have not been completed"
-msgstr ""
-
-#: build/serializers.py:276 templates/js/translated/build.js:153
-msgid "Required build quantity has not been completed"
-msgstr "所需生产数量尚未完成"
-
-#: build/serializers.py:285
-msgid "Build order has incomplete outputs"
-msgstr ""
-
-#: build/serializers.py:313 build/serializers.py:362 part/models.py:2760
-#: part/models.py:2919
-msgid "BOM Item"
-msgstr ""
-
-#: build/serializers.py:323
-msgid "Build output"
-msgstr ""
-
-#: build/serializers.py:332
-msgid "Build output must point to the same build"
-msgstr ""
-
-#: build/serializers.py:379
-msgid "bom_item.part must point to the same part as the build order"
-msgstr ""
-
-#: build/serializers.py:394 stock/serializers.py:585
-msgid "Item must be in stock"
-msgstr ""
-
-#: build/serializers.py:408 order/models.py:280 order/serializers.py:240
+#: build/serializers.py:201 build/serializers.py:590 order/models.py:280
+#: order/serializers.py:240 part/serializers.py:471 part/serializers.py:827
#: stock/models.py:367 stock/models.py:1105 stock/serializers.py:305
msgid "Quantity must be greater than zero"
msgstr ""
-#: build/serializers.py:450 order/serializers.py:747
+#: build/serializers.py:208
+msgid "Integer quantity required for trackable parts"
+msgstr ""
+
+#: build/serializers.py:211
+msgid "Integer quantity required, as the bill of materials contains trackable parts"
+msgstr ""
+
+#: build/serializers.py:225 order/serializers.py:820 stock/forms.py:78
+#: stock/serializers.py:314 templates/js/translated/stock.js:239
+#: templates/js/translated/stock.js:393
+msgid "Serial Numbers"
+msgstr "序列号"
+
+#: build/serializers.py:226
+msgid "Enter serial numbers for build outputs"
+msgstr "输入生产产出的序列号"
+
+#: build/serializers.py:239
+msgid "Auto Allocate Serial Numbers"
+msgstr ""
+
+#: build/serializers.py:240
+msgid "Automatically allocate required items with matching serial numbers"
+msgstr ""
+
+#: build/serializers.py:274 stock/api.py:551
+msgid "The following serial numbers already exist"
+msgstr ""
+
+#: build/serializers.py:327 build/serializers.py:392
+msgid "A list of build outputs must be provided"
+msgstr ""
+
+#: build/serializers.py:369 order/serializers.py:226 order/serializers.py:294
+#: stock/forms.py:169 stock/serializers.py:325 stock/serializers.py:788
+#: stock/serializers.py:1029 stock/templates/stock/item_base.html:315
+#: templates/js/translated/barcode.js:384
+#: templates/js/translated/barcode.js:557 templates/js/translated/build.js:699
+#: templates/js/translated/build.js:1309 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:179 templates/js/translated/stock.js:565
+#: templates/js/translated/stock.js:730 templates/js/translated/stock.js:937
+#: templates/js/translated/stock.js:1808 templates/js/translated/stock.js:2693
+msgid "Location"
+msgstr "地点"
+
+#: build/serializers.py:370
+msgid "Location for completed build outputs"
+msgstr ""
+
+#: build/serializers.py:376 build/templates/build/build_base.html:142
+#: build/templates/build/detail.html:63 order/models.py:557
+#: order/serializers.py:247 stock/templates/stock/item_base.html:189
+#: templates/js/translated/barcode.js:140 templates/js/translated/build.js:1954
+#: templates/js/translated/order.js:591 templates/js/translated/order.js:840
+#: templates/js/translated/order.js:1263 templates/js/translated/stock.js:1783
+#: templates/js/translated/stock.js:2770 templates/js/translated/stock.js:2919
+msgid "Status"
+msgstr "状态"
+
+#: build/serializers.py:428
+msgid "Accept Unallocated"
+msgstr ""
+
+#: build/serializers.py:429
+msgid "Accept that stock items have not been fully allocated to this build order"
+msgstr ""
+
+#: build/serializers.py:439 templates/js/translated/build.js:150
+msgid "Required stock has not been fully allocated"
+msgstr "所需库存尚未完全分配"
+
+#: build/serializers.py:444
+msgid "Accept Incomplete"
+msgstr ""
+
+#: build/serializers.py:445
+msgid "Accept that the required number of build outputs have not been completed"
+msgstr ""
+
+#: build/serializers.py:455 templates/js/translated/build.js:154
+msgid "Required build quantity has not been completed"
+msgstr "所需生产数量尚未完成"
+
+#: build/serializers.py:464
+msgid "Build order has incomplete outputs"
+msgstr ""
+
+#: build/serializers.py:467 build/templates/build/build_base.html:95
+msgid "No build outputs have been created for this build order"
+msgstr ""
+
+#: build/serializers.py:495 build/serializers.py:544 part/models.py:2829
+#: part/models.py:2988
+msgid "BOM Item"
+msgstr ""
+
+#: build/serializers.py:505
+msgid "Build output"
+msgstr ""
+
+#: build/serializers.py:514
+msgid "Build output must point to the same build"
+msgstr ""
+
+#: build/serializers.py:561
+msgid "bom_item.part must point to the same part as the build order"
+msgstr ""
+
+#: build/serializers.py:576 stock/serializers.py:642
+msgid "Item must be in stock"
+msgstr ""
+
+#: build/serializers.py:632 order/serializers.py:747
#, python-brace-format
msgid "Available quantity ({q}) exceeded"
msgstr ""
-#: build/serializers.py:456
+#: build/serializers.py:638
msgid "Build output must be specified for allocation of tracked parts"
msgstr ""
-#: build/serializers.py:463
+#: build/serializers.py:645
msgid "Build output cannot be specified for allocation of untracked parts"
msgstr ""
-#: build/serializers.py:491 order/serializers.py:990
+#: build/serializers.py:673 order/serializers.py:990
msgid "Allocation items must be provided"
msgstr ""
-#: build/tasks.py:92
+#: build/tasks.py:98
msgid "Stock required for build order"
msgstr ""
@@ -1088,7 +1151,7 @@ msgid "Edit Build"
msgstr "编辑生产"
#: build/templates/build/build_base.html:56
-#: build/templates/build/build_base.html:215 build/views.py:56
+#: build/templates/build/build_base.html:220 build/views.py:53
msgid "Cancel Build"
msgstr "取消生产"
@@ -1105,110 +1168,90 @@ msgstr "生产完成"
msgid "Build Description"
msgstr ""
-#: build/templates/build/build_base.html:96
+#: build/templates/build/build_base.html:101
#, python-format
msgid "This Build Order is allocated to Sales Order %(link)s"
msgstr ""
-#: build/templates/build/build_base.html:103
+#: build/templates/build/build_base.html:108
#, python-format
msgid "This Build Order is a child of Build Order %(link)s"
msgstr ""
-#: build/templates/build/build_base.html:110
+#: build/templates/build/build_base.html:115
msgid "Build Order is ready to mark as completed"
msgstr ""
-#: build/templates/build/build_base.html:115
+#: build/templates/build/build_base.html:120
msgid "Build Order cannot be completed as outstanding outputs remain"
msgstr ""
-#: build/templates/build/build_base.html:120
+#: build/templates/build/build_base.html:125
msgid "Required build quantity has not yet been completed"
msgstr "所需生产数量尚未完成"
-#: build/templates/build/build_base.html:125
+#: build/templates/build/build_base.html:130
msgid "Stock has not been fully allocated to this Build Order"
msgstr ""
-#: build/templates/build/build_base.html:146
+#: build/templates/build/build_base.html:151
#: build/templates/build/detail.html:132
#: order/templates/order/order_base.html:156
#: order/templates/order/sales_order_base.html:163
#: report/templates/report/inventree_build_order_base.html:126
-#: templates/js/translated/build.js:1753 templates/js/translated/order.js:854
+#: templates/js/translated/build.js:1991 templates/js/translated/order.js:854
#: templates/js/translated/order.js:1276
msgid "Target Date"
msgstr "预计日期"
-#: build/templates/build/build_base.html:151
+#: build/templates/build/build_base.html:156
#, python-format
msgid "This build was due on %(target)s"
msgstr "此次生产的截止日期为 %(target)s"
-#: build/templates/build/build_base.html:151
-#: build/templates/build/build_base.html:196
+#: build/templates/build/build_base.html:156
+#: build/templates/build/build_base.html:201
#: order/templates/order/order_base.html:98
#: order/templates/order/sales_order_base.html:93
-#: templates/js/translated/table_filters.js:299
-#: templates/js/translated/table_filters.js:340
-#: templates/js/translated/table_filters.js:361
+#: templates/js/translated/table_filters.js:294
+#: templates/js/translated/table_filters.js:335
+#: templates/js/translated/table_filters.js:356
msgid "Overdue"
msgstr "逾期"
-#: build/templates/build/build_base.html:158
+#: build/templates/build/build_base.html:163
#: build/templates/build/detail.html:68 build/templates/build/detail.html:143
#: order/templates/order/sales_order_base.html:170
-#: templates/js/translated/build.js:1702
-#: templates/js/translated/table_filters.js:370
+#: templates/js/translated/build.js:1940
+#: templates/js/translated/table_filters.js:365
msgid "Completed"
msgstr "已完成"
-#: build/templates/build/build_base.html:171
+#: build/templates/build/build_base.html:176
#: build/templates/build/detail.html:95 order/models.py:947
#: order/models.py:1043 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:307
-#: templates/js/translated/order.js:1218 templates/js/translated/stock.js:2304
+#: stock/templates/stock/item_base.html:309
+#: templates/js/translated/order.js:1218 templates/js/translated/stock.js:2428
msgid "Sales Order"
msgstr "销售订单"
-#: build/templates/build/build_base.html:178
+#: build/templates/build/build_base.html:183
#: build/templates/build/detail.html:109
#: report/templates/report/inventree_build_order_base.html:153
msgid "Issued By"
msgstr "发布者"
-#: build/templates/build/build_base.html:223
+#: build/templates/build/build_base.html:228
msgid "Incomplete Outputs"
msgstr "未完成输出"
-#: build/templates/build/build_base.html:224
+#: build/templates/build/build_base.html:229
msgid "Build Order cannot be completed as incomplete build outputs remain"
msgstr ""
-#: build/templates/build/build_output_create.html:7
-msgid "The Bill of Materials contains trackable parts"
-msgstr ""
-
-#: build/templates/build/build_output_create.html:8
-msgid "Build outputs must be generated individually."
-msgstr ""
-
-#: build/templates/build/build_output_create.html:9
-msgid "Multiple build outputs will be created based on the quantity specified."
-msgstr ""
-
-#: build/templates/build/build_output_create.html:15
-msgid "Trackable parts can have serial numbers specified"
-msgstr "可追踪商品可以指定序列号"
-
-#: build/templates/build/build_output_create.html:16
-msgid "Enter serial numbers to generate multiple single build outputs"
-msgstr ""
-
#: build/templates/build/cancel.html:5
msgid "Are you sure you wish to cancel this build?"
msgstr "是否确定取消生产?"
@@ -1225,7 +1268,7 @@ msgstr ""
msgid "Stock can be taken from any available location."
msgstr ""
-#: build/templates/build/detail.html:50 order/models.py:898 stock/forms.py:136
+#: build/templates/build/detail.html:50 order/models.py:898 stock/forms.py:133
#: templates/js/translated/order.js:592 templates/js/translated/order.js:1138
msgid "Destination"
msgstr ""
@@ -1234,13 +1277,13 @@ msgstr ""
msgid "Destination location not specified"
msgstr ""
-#: build/templates/build/detail.html:74 templates/js/translated/build.js:707
+#: build/templates/build/detail.html:74 templates/js/translated/build.js:929
msgid "Allocated Parts"
msgstr ""
#: build/templates/build/detail.html:81
-#: stock/templates/stock/item_base.html:331
-#: templates/js/translated/stock.js:1673 templates/js/translated/stock.js:2802
+#: stock/templates/stock/item_base.html:333
+#: templates/js/translated/stock.js:1797 templates/js/translated/stock.js:2926
#: templates/js/translated/table_filters.js:151
#: templates/js/translated/table_filters.js:238
msgid "Batch"
@@ -1249,7 +1292,7 @@ msgstr ""
#: build/templates/build/detail.html:127
#: order/templates/order/order_base.html:143
#: order/templates/order/sales_order_base.html:157
-#: templates/js/translated/build.js:1724
+#: templates/js/translated/build.js:1962
msgid "Created"
msgstr "已创建"
@@ -1269,7 +1312,7 @@ msgstr "子生产订单"
msgid "Allocate Stock to Build"
msgstr "为生产分配库存"
-#: build/templates/build/detail.html:177 templates/js/translated/build.js:1262
+#: build/templates/build/detail.html:177 templates/js/translated/build.js:1484
msgid "Unallocate stock"
msgstr "未分配库存"
@@ -1329,52 +1372,60 @@ msgid "Output Actions"
msgstr ""
#: build/templates/build/detail.html:250
-msgid "Complete selected items"
+msgid "Complete selected build outputs"
msgstr ""
#: build/templates/build/detail.html:251
msgid "Complete outputs"
msgstr ""
-#: build/templates/build/detail.html:266
+#: build/templates/build/detail.html:253
+msgid "Delete selected build outputs"
+msgstr ""
+
+#: build/templates/build/detail.html:254
+msgid "Delete outputs"
+msgstr ""
+
+#: build/templates/build/detail.html:270
msgid "Completed Build Outputs"
msgstr ""
-#: build/templates/build/detail.html:278 build/templates/build/sidebar.html:19
+#: build/templates/build/detail.html:282 build/templates/build/sidebar.html:19
#: order/templates/order/po_sidebar.html:9
#: order/templates/order/purchase_order_detail.html:60
#: order/templates/order/sales_order_detail.html:107
-#: order/templates/order/so_sidebar.html:15 part/templates/part/detail.html:213
-#: part/templates/part/part_sidebar.html:52 stock/templates/stock/item.html:112
+#: order/templates/order/so_sidebar.html:15 part/templates/part/detail.html:216
+#: part/templates/part/part_sidebar.html:55 stock/templates/stock/item.html:112
#: stock/templates/stock/stock_sidebar.html:23
msgid "Attachments"
msgstr "附件"
-#: build/templates/build/detail.html:294
+#: build/templates/build/detail.html:298
msgid "Build Notes"
msgstr "生产备注"
-#: build/templates/build/detail.html:298 build/templates/build/detail.html:453
+#: build/templates/build/detail.html:302 build/templates/build/detail.html:478
#: company/templates/company/detail.html:188
#: company/templates/company/detail.html:215
#: order/templates/order/purchase_order_detail.html:80
#: order/templates/order/purchase_order_detail.html:108
#: order/templates/order/sales_order_detail.html:127
#: order/templates/order/sales_order_detail.html:186
-#: part/templates/part/detail.html:141 stock/templates/stock/item.html:132
-#: stock/templates/stock/item.html:235
+#: part/templates/part/detail.html:144 stock/templates/stock/item.html:132
+#: stock/templates/stock/item.html:230
msgid "Edit Notes"
msgstr "编辑备注"
-#: build/templates/build/detail.html:477
+#: build/templates/build/detail.html:502
msgid "Allocation Complete"
msgstr ""
-#: build/templates/build/detail.html:478
+#: build/templates/build/detail.html:503
msgid "All untracked stock items have been allocated"
msgstr ""
-#: build/templates/build/index.html:18 part/templates/part/detail.html:320
+#: build/templates/build/index.html:18 part/templates/part/detail.html:323
msgid "New Build Order"
msgstr "新建生产订单"
@@ -1406,51 +1457,11 @@ msgstr ""
msgid "Completed Items"
msgstr ""
-#: build/views.py:76
+#: build/views.py:73
msgid "Build was cancelled"
msgstr "生产已取消"
-#: build/views.py:88
-msgid "Create Build Output"
-msgstr "创建创建生产产出"
-
-#: build/views.py:106
-msgid "Maximum output quantity is "
-msgstr "最大产出量是 "
-
-#: build/views.py:122 stock/serializers.py:363 stock/views.py:1257
-msgid "Serial numbers already exist"
-msgstr "序列号已存在"
-
-#: build/views.py:131
-msgid "Serial numbers required for trackable build output"
-msgstr "可追踪的生产产出需要序列号"
-
-#: build/views.py:197
-msgid "Delete Build Output"
-msgstr "删除生产产出"
-
-#: build/views.py:218
-msgid "Confirm unallocation of build stock"
-msgstr ""
-
-#: build/views.py:219 stock/views.py:352
-msgid "Check the confirmation box"
-msgstr "选中确认框"
-
-#: build/views.py:231
-msgid "Build output does not match build"
-msgstr "生产产出与生产不匹配"
-
-#: build/views.py:233
-msgid "Build output must be specified"
-msgstr "必须指定生成产出"
-
-#: build/views.py:245
-msgid "Build output deleted"
-msgstr "生产产出已删除"
-
-#: build/views.py:286
+#: build/views.py:114
msgid "Delete Build Order"
msgstr "删除生产订单"
@@ -1639,9 +1650,9 @@ msgstr ""
msgid "Copy category parameter templates when creating a part"
msgstr ""
-#: common/models.py:705 part/models.py:2489 report/models.py:187
+#: common/models.py:705 part/models.py:2525 report/models.py:187
#: templates/js/translated/table_filters.js:38
-#: templates/js/translated/table_filters.js:422
+#: templates/js/translated/table_filters.js:417
msgid "Template"
msgstr "模板"
@@ -1649,9 +1660,9 @@ msgstr "模板"
msgid "Parts are templates by default"
msgstr ""
-#: common/models.py:712 part/models.py:921 templates/js/translated/bom.js:1082
+#: common/models.py:712 part/models.py:951 templates/js/translated/bom.js:1300
#: templates/js/translated/table_filters.js:168
-#: templates/js/translated/table_filters.js:434
+#: templates/js/translated/table_filters.js:429
msgid "Assembly"
msgstr "组装"
@@ -1659,8 +1670,8 @@ msgstr "组装"
msgid "Parts can be assembled from other components by default"
msgstr ""
-#: common/models.py:719 part/models.py:927
-#: templates/js/translated/table_filters.js:438
+#: common/models.py:719 part/models.py:957
+#: templates/js/translated/table_filters.js:433
msgid "Component"
msgstr "组件"
@@ -1668,7 +1679,7 @@ msgstr "组件"
msgid "Parts can be used as sub-components by default"
msgstr ""
-#: common/models.py:726 part/models.py:938
+#: common/models.py:726 part/models.py:968
msgid "Purchaseable"
msgstr "可购买"
@@ -1676,8 +1687,8 @@ msgstr "可购买"
msgid "Parts are purchaseable by default"
msgstr "商品默认可购买"
-#: common/models.py:733 part/models.py:943
-#: templates/js/translated/table_filters.js:446
+#: common/models.py:733 part/models.py:973
+#: templates/js/translated/table_filters.js:441
msgid "Salable"
msgstr "可销售"
@@ -1685,10 +1696,10 @@ msgstr "可销售"
msgid "Parts are salable by default"
msgstr "商品默认可销售"
-#: common/models.py:740 part/models.py:933
+#: common/models.py:740 part/models.py:963
#: templates/js/translated/table_filters.js:46
#: templates/js/translated/table_filters.js:100
-#: templates/js/translated/table_filters.js:450
+#: templates/js/translated/table_filters.js:445
msgid "Trackable"
msgstr "可追踪"
@@ -1696,7 +1707,7 @@ msgstr "可追踪"
msgid "Parts are trackable by default"
msgstr "商品默认可跟踪"
-#: common/models.py:747 part/models.py:953
+#: common/models.py:747 part/models.py:983
#: part/templates/part/part_base.html:147
#: templates/js/translated/table_filters.js:42
msgid "Virtual"
@@ -1730,589 +1741,595 @@ msgstr ""
msgid "Include pricing information in BOM tables"
msgstr ""
-#: common/models.py:780
+#: common/models.py:785
+msgid "Show Price History"
+msgstr ""
+
+#: common/models.py:786
+msgid "Display historical pricing for Part"
+msgstr ""
+
+#: common/models.py:792
msgid "Show related parts"
msgstr "显示相关商品"
-#: common/models.py:781
+#: common/models.py:793
msgid "Display related parts for a part"
msgstr ""
-#: common/models.py:787
+#: common/models.py:799
msgid "Create initial stock"
msgstr "创建初始库存"
-#: common/models.py:788
+#: common/models.py:800
msgid "Create initial stock on part creation"
msgstr ""
-#: common/models.py:794
+#: common/models.py:806
msgid "Internal Prices"
msgstr "内部价格"
-#: common/models.py:795
+#: common/models.py:807
msgid "Enable internal prices for parts"
msgstr "启用内部商品价格"
-#: common/models.py:801
+#: common/models.py:813
msgid "Internal Price as BOM-Price"
msgstr "内部价格为BOM价格"
-#: common/models.py:802
+#: common/models.py:814
msgid "Use the internal price (if set) in BOM-price calculations"
msgstr "在 BOM价格计算中使用内部价格(如设置)"
-#: common/models.py:808
+#: common/models.py:820
msgid "Part Name Display Format"
msgstr ""
-#: common/models.py:809
+#: common/models.py:821
msgid "Format to display the part name"
msgstr ""
-#: common/models.py:816
+#: common/models.py:828
msgid "Enable Reports"
msgstr ""
-#: common/models.py:817
+#: common/models.py:829
msgid "Enable generation of reports"
msgstr ""
-#: common/models.py:823 templates/stats.html:25
+#: common/models.py:835 templates/stats.html:25
msgid "Debug Mode"
msgstr "调试模式"
-#: common/models.py:824
+#: common/models.py:836
msgid "Generate reports in debug mode (HTML output)"
msgstr "在调试模式生成报告(HTML输出)"
-#: common/models.py:830
+#: common/models.py:842
msgid "Page Size"
msgstr "页面大小"
-#: common/models.py:831
+#: common/models.py:843
msgid "Default page size for PDF reports"
msgstr "PDF 报表默认页面大小"
-#: common/models.py:841
+#: common/models.py:853
msgid "Test Reports"
msgstr "测试报表"
-#: common/models.py:842
+#: common/models.py:854
msgid "Enable generation of test reports"
msgstr "启用生成测试报表"
-#: common/models.py:848
+#: common/models.py:860
msgid "Stock Expiry"
msgstr "库存到期"
-#: common/models.py:849
+#: common/models.py:861
msgid "Enable stock expiry functionality"
msgstr "启用库存到期功能"
-#: common/models.py:855
+#: common/models.py:867
msgid "Sell Expired Stock"
msgstr "销售过期库存"
-#: common/models.py:856
+#: common/models.py:868
msgid "Allow sale of expired stock"
msgstr "允许销售过期库存"
-#: common/models.py:862
+#: common/models.py:874
msgid "Stock Stale Time"
msgstr ""
-#: common/models.py:863
+#: common/models.py:875
msgid "Number of days stock items are considered stale before expiring"
msgstr ""
-#: common/models.py:865
+#: common/models.py:877
msgid "days"
msgstr "天"
-#: common/models.py:870
+#: common/models.py:882
msgid "Build Expired Stock"
msgstr ""
-#: common/models.py:871
+#: common/models.py:883
msgid "Allow building with expired stock"
msgstr ""
-#: common/models.py:877
+#: common/models.py:889
msgid "Stock Ownership Control"
msgstr "库存所有权控制"
-#: common/models.py:878
+#: common/models.py:890
msgid "Enable ownership control over stock locations and items"
msgstr ""
-#: common/models.py:884
+#: common/models.py:896
msgid "Build Order Reference Prefix"
msgstr "生产订单参考前缀"
-#: common/models.py:885
+#: common/models.py:897
msgid "Prefix value for build order reference"
msgstr ""
-#: common/models.py:890
+#: common/models.py:902
msgid "Build Order Reference Regex"
msgstr ""
-#: common/models.py:891
+#: common/models.py:903
msgid "Regular expression pattern for matching build order reference"
msgstr ""
-#: common/models.py:895
+#: common/models.py:907
msgid "Sales Order Reference Prefix"
msgstr ""
-#: common/models.py:896
+#: common/models.py:908
msgid "Prefix value for sales order reference"
msgstr ""
-#: common/models.py:901
+#: common/models.py:913
msgid "Purchase Order Reference Prefix"
msgstr ""
-#: common/models.py:902
+#: common/models.py:914
msgid "Prefix value for purchase order reference"
msgstr ""
-#: common/models.py:908
+#: common/models.py:920
msgid "Enable password forgot"
msgstr ""
-#: common/models.py:909
+#: common/models.py:921
msgid "Enable password forgot function on the login pages"
msgstr ""
-#: common/models.py:914
+#: common/models.py:926
msgid "Enable registration"
msgstr ""
-#: common/models.py:915
+#: common/models.py:927
msgid "Enable self-registration for users on the login pages"
msgstr ""
-#: common/models.py:920
+#: common/models.py:932
msgid "Enable SSO"
msgstr ""
-#: common/models.py:921
+#: common/models.py:933
msgid "Enable SSO on the login pages"
msgstr ""
-#: common/models.py:926
+#: common/models.py:938
msgid "Email required"
msgstr ""
-#: common/models.py:927
+#: common/models.py:939
msgid "Require user to supply mail on signup"
msgstr ""
-#: common/models.py:932
+#: common/models.py:944
msgid "Auto-fill SSO users"
msgstr ""
-#: common/models.py:933
+#: common/models.py:945
msgid "Automatically fill out user-details from SSO account-data"
msgstr ""
-#: common/models.py:938
+#: common/models.py:950
msgid "Mail twice"
msgstr ""
-#: common/models.py:939
+#: common/models.py:951
msgid "On signup ask users twice for their mail"
msgstr ""
-#: common/models.py:944
+#: common/models.py:956
msgid "Password twice"
msgstr ""
-#: common/models.py:945
+#: common/models.py:957
msgid "On signup ask users twice for their password"
msgstr ""
-#: common/models.py:950
+#: common/models.py:962
msgid "Group on signup"
msgstr ""
-#: common/models.py:951
+#: common/models.py:963
msgid "Group to which new users are assigned on registration"
msgstr ""
-#: common/models.py:956
+#: common/models.py:968
msgid "Enforce MFA"
msgstr ""
-#: common/models.py:957
+#: common/models.py:969
msgid "Users must use multifactor security."
msgstr ""
-#: common/models.py:964
+#: common/models.py:976
msgid "Enable URL integration"
msgstr ""
-#: common/models.py:965
+#: common/models.py:977
msgid "Enable plugins to add URL routes"
msgstr ""
-#: common/models.py:971
+#: common/models.py:983
msgid "Enable navigation integration"
msgstr ""
-#: common/models.py:972
+#: common/models.py:984
msgid "Enable plugins to integrate into navigation"
msgstr ""
-#: common/models.py:978
+#: common/models.py:990
msgid "Enable app integration"
msgstr ""
-#: common/models.py:979
+#: common/models.py:991
msgid "Enable plugins to add apps"
msgstr ""
-#: common/models.py:985
+#: common/models.py:997
msgid "Enable schedule integration"
msgstr ""
-#: common/models.py:986
+#: common/models.py:998
msgid "Enable plugins to run scheduled tasks"
msgstr ""
-#: common/models.py:992
+#: common/models.py:1004
msgid "Enable event integration"
msgstr ""
-#: common/models.py:993
+#: common/models.py:1005
msgid "Enable plugins to respond to internal events"
msgstr ""
-#: common/models.py:1008 common/models.py:1216
+#: common/models.py:1020 common/models.py:1228
msgid "Settings key (must be unique - case insensitive"
msgstr ""
-#: common/models.py:1039
+#: common/models.py:1051
msgid "Show subscribed parts"
msgstr ""
-#: common/models.py:1040
+#: common/models.py:1052
msgid "Show subscribed parts on the homepage"
msgstr ""
-#: common/models.py:1045
+#: common/models.py:1057
msgid "Show subscribed categories"
msgstr ""
-#: common/models.py:1046
+#: common/models.py:1058
msgid "Show subscribed part categories on the homepage"
msgstr ""
-#: common/models.py:1051
+#: common/models.py:1063
msgid "Show latest parts"
msgstr "显示最近商品"
-#: common/models.py:1052
+#: common/models.py:1064
msgid "Show latest parts on the homepage"
msgstr "在主页上显示最近商品"
-#: common/models.py:1057
+#: common/models.py:1069
msgid "Recent Part Count"
msgstr ""
-#: common/models.py:1058
+#: common/models.py:1070
msgid "Number of recent parts to display on index page"
msgstr ""
-#: common/models.py:1064
+#: common/models.py:1076
msgid "Show unvalidated BOMs"
msgstr ""
-#: common/models.py:1065
+#: common/models.py:1077
msgid "Show BOMs that await validation on the homepage"
msgstr ""
-#: common/models.py:1070
+#: common/models.py:1082
msgid "Show recent stock changes"
msgstr ""
-#: common/models.py:1071
+#: common/models.py:1083
msgid "Show recently changed stock items on the homepage"
msgstr ""
-#: common/models.py:1076
+#: common/models.py:1088
msgid "Recent Stock Count"
msgstr ""
-#: common/models.py:1077
+#: common/models.py:1089
msgid "Number of recent stock items to display on index page"
msgstr ""
-#: common/models.py:1082
+#: common/models.py:1094
msgid "Show low stock"
msgstr ""
-#: common/models.py:1083
+#: common/models.py:1095
msgid "Show low stock items on the homepage"
msgstr ""
-#: common/models.py:1088
+#: common/models.py:1100
msgid "Show depleted stock"
msgstr ""
-#: common/models.py:1089
+#: common/models.py:1101
msgid "Show depleted stock items on the homepage"
msgstr ""
-#: common/models.py:1094
+#: common/models.py:1106
msgid "Show needed stock"
msgstr ""
-#: common/models.py:1095
+#: common/models.py:1107
msgid "Show stock items needed for builds on the homepage"
msgstr ""
-#: common/models.py:1100
+#: common/models.py:1112
msgid "Show expired stock"
msgstr ""
-#: common/models.py:1101
+#: common/models.py:1113
msgid "Show expired stock items on the homepage"
msgstr ""
-#: common/models.py:1106
+#: common/models.py:1118
msgid "Show stale stock"
msgstr ""
-#: common/models.py:1107
+#: common/models.py:1119
msgid "Show stale stock items on the homepage"
msgstr ""
-#: common/models.py:1112
+#: common/models.py:1124
msgid "Show pending builds"
msgstr ""
-#: common/models.py:1113
+#: common/models.py:1125
msgid "Show pending builds on the homepage"
msgstr ""
-#: common/models.py:1118
+#: common/models.py:1130
msgid "Show overdue builds"
msgstr "显示逾期生产"
-#: common/models.py:1119
+#: common/models.py:1131
msgid "Show overdue builds on the homepage"
msgstr "在主页上显示逾期的生产"
-#: common/models.py:1124
+#: common/models.py:1136
msgid "Show outstanding POs"
msgstr ""
-#: common/models.py:1125
+#: common/models.py:1137
msgid "Show outstanding POs on the homepage"
msgstr ""
-#: common/models.py:1130
+#: common/models.py:1142
msgid "Show overdue POs"
msgstr ""
-#: common/models.py:1131
+#: common/models.py:1143
msgid "Show overdue POs on the homepage"
msgstr ""
-#: common/models.py:1136
+#: common/models.py:1148
msgid "Show outstanding SOs"
msgstr ""
-#: common/models.py:1137
+#: common/models.py:1149
msgid "Show outstanding SOs on the homepage"
msgstr ""
-#: common/models.py:1142
+#: common/models.py:1154
msgid "Show overdue SOs"
msgstr ""
-#: common/models.py:1143
+#: common/models.py:1155
msgid "Show overdue SOs on the homepage"
msgstr ""
-#: common/models.py:1149
+#: common/models.py:1161
msgid "Inline label display"
msgstr "内嵌标签显示"
-#: common/models.py:1150
+#: common/models.py:1162
msgid "Display PDF labels in the browser, instead of downloading as a file"
msgstr "在浏览器中显示 PDF 标签,而不是以文件形式下载"
-#: common/models.py:1156
+#: common/models.py:1168
msgid "Inline report display"
msgstr ""
-#: common/models.py:1157
+#: common/models.py:1169
msgid "Display PDF reports in the browser, instead of downloading as a file"
msgstr "在浏览器中显示 PDF 报告,而不是以文件形式下载"
-#: common/models.py:1163
+#: common/models.py:1175
msgid "Search Preview Results"
msgstr "搜索预览结果"
-#: common/models.py:1164
+#: common/models.py:1176
msgid "Number of results to show in search preview window"
msgstr "搜索预览窗口中显示的结果数"
-#: common/models.py:1170
+#: common/models.py:1182
msgid "Search Show Stock"
msgstr ""
-#: common/models.py:1171
+#: common/models.py:1183
msgid "Display stock levels in search preview window"
msgstr ""
-#: common/models.py:1177
+#: common/models.py:1189
msgid "Hide Inactive Parts"
msgstr ""
-#: common/models.py:1178
+#: common/models.py:1190
msgid "Hide inactive parts in search preview window"
msgstr ""
-#: common/models.py:1184
+#: common/models.py:1196
msgid "Show Quantity in Forms"
msgstr "在表格中显示数量"
-#: common/models.py:1185
+#: common/models.py:1197
msgid "Display available part quantity in some forms"
msgstr "在某些表格中显示可用的商品数量"
-#: common/models.py:1191
+#: common/models.py:1203
msgid "Escape Key Closes Forms"
msgstr ""
-#: common/models.py:1192
+#: common/models.py:1204
msgid "Use the escape key to close modal forms"
msgstr ""
-#: common/models.py:1198
+#: common/models.py:1210
msgid "Fixed Navbar"
msgstr ""
-#: common/models.py:1199
+#: common/models.py:1211
msgid "InvenTree navbar position is fixed to the top of the screen"
msgstr ""
-#: common/models.py:1264 company/forms.py:43
+#: common/models.py:1276 company/forms.py:43
msgid "Price break quantity"
msgstr ""
-#: common/models.py:1271 company/serializers.py:264
+#: common/models.py:1283 company/serializers.py:264
#: company/templates/company/supplier_part.html:256
#: templates/js/translated/part.js:915 templates/js/translated/part.js:1867
msgid "Price"
msgstr "价格"
-#: common/models.py:1272
+#: common/models.py:1284
msgid "Unit price at specified quantity"
msgstr ""
-#: common/models.py:1429 common/models.py:1568
+#: common/models.py:1441 common/models.py:1580
msgid "Endpoint"
msgstr ""
-#: common/models.py:1430
+#: common/models.py:1442
msgid "Endpoint at which this webhook is received"
msgstr ""
-#: common/models.py:1439
+#: common/models.py:1451
msgid "Name for this webhook"
msgstr ""
-#: common/models.py:1444 part/models.py:948 plugin/models.py:46
+#: common/models.py:1456 part/models.py:978 plugin/models.py:46
#: templates/js/translated/table_filters.js:34
#: templates/js/translated/table_filters.js:96
-#: templates/js/translated/table_filters.js:295
-#: templates/js/translated/table_filters.js:417
+#: templates/js/translated/table_filters.js:290
+#: templates/js/translated/table_filters.js:412
msgid "Active"
msgstr ""
-#: common/models.py:1445
+#: common/models.py:1457
msgid "Is this webhook active"
msgstr ""
-#: common/models.py:1459
+#: common/models.py:1471
msgid "Token"
msgstr ""
-#: common/models.py:1460
+#: common/models.py:1472
msgid "Token for access"
msgstr ""
-#: common/models.py:1467
+#: common/models.py:1479
msgid "Secret"
msgstr ""
-#: common/models.py:1468
+#: common/models.py:1480
msgid "Shared secret for HMAC"
msgstr ""
-#: common/models.py:1535
+#: common/models.py:1547
msgid "Message ID"
msgstr ""
-#: common/models.py:1536
+#: common/models.py:1548
msgid "Unique identifier for this message"
msgstr ""
-#: common/models.py:1544
+#: common/models.py:1556
msgid "Host"
msgstr ""
-#: common/models.py:1545
+#: common/models.py:1557
msgid "Host from which this message was received"
msgstr ""
-#: common/models.py:1552
+#: common/models.py:1564
msgid "Header"
msgstr ""
-#: common/models.py:1553
+#: common/models.py:1565
msgid "Header of this message"
msgstr ""
-#: common/models.py:1559
+#: common/models.py:1571
msgid "Body"
msgstr ""
-#: common/models.py:1560
+#: common/models.py:1572
msgid "Body of this message"
msgstr ""
-#: common/models.py:1569
+#: common/models.py:1581
msgid "Endpoint on which this message was received"
msgstr ""
-#: common/models.py:1574
+#: common/models.py:1586
msgid "Worked on"
msgstr ""
-#: common/models.py:1575
+#: common/models.py:1587
msgid "Was the work on this message finished?"
msgstr ""
#: common/views.py:93 order/templates/order/order_wizard/po_upload.html:49
#: order/templates/order/purchase_order_detail.html:24 order/views.py:243
-#: part/templates/part/bom_upload/upload_file.html:52
-#: part/templates/part/import_wizard/part_upload.html:47 part/views.py:213
-#: part/views.py:773
+#: part/templates/part/import_wizard/part_upload.html:47 part/views.py:210
+#: templates/patterns/wizard/upload.html:35
msgid "Upload File"
msgstr "上传文件"
-#: common/views.py:94 order/templates/order/order_wizard/match_fields.html:52
-#: order/views.py:244 part/templates/part/bom_upload/match_fields.html:52
+#: common/views.py:94 order/views.py:244
#: part/templates/part/import_wizard/ajax_match_fields.html:45
-#: part/templates/part/import_wizard/match_fields.html:52 part/views.py:214
-#: part/views.py:774
+#: part/templates/part/import_wizard/match_fields.html:52 part/views.py:211
+#: templates/patterns/wizard/match_fields.html:51
msgid "Match Fields"
msgstr "匹配字段"
@@ -2328,15 +2345,13 @@ msgstr "字段匹配失败"
msgid "Parts imported"
msgstr "已导入商品"
-#: common/views.py:517 order/templates/order/order_wizard/match_fields.html:27
-#: order/templates/order/order_wizard/match_parts.html:19
+#: common/views.py:517 order/templates/order/order_wizard/match_parts.html:19
#: order/templates/order/order_wizard/po_upload.html:47
-#: part/templates/part/bom_upload/match_fields.html:27
-#: part/templates/part/bom_upload/match_parts.html:19
-#: part/templates/part/bom_upload/upload_file.html:50
#: part/templates/part/import_wizard/match_fields.html:27
#: part/templates/part/import_wizard/match_references.html:19
#: part/templates/part/import_wizard/part_upload.html:45
+#: templates/patterns/wizard/match_fields.html:26
+#: templates/patterns/wizard/upload.html:33
msgid "Previous Step"
msgstr ""
@@ -2404,7 +2419,7 @@ msgstr ""
msgid "Link to external company information"
msgstr "链接到外部公司信息"
-#: company/models.py:139 part/models.py:840
+#: company/models.py:139 part/models.py:870
msgid "Image"
msgstr "图片"
@@ -2442,7 +2457,7 @@ msgid "Default currency used for this company"
msgstr "该公司使用的默认货币"
#: company/models.py:320 company/models.py:535 stock/models.py:471
-#: stock/templates/stock/item_base.html:142 templates/js/translated/bom.js:328
+#: stock/templates/stock/item_base.html:144 templates/js/translated/bom.js:541
msgid "Base Part"
msgstr ""
@@ -2453,11 +2468,11 @@ 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:380
+#: stock/templates/stock/item_base.html:382
#: templates/js/translated/company.js:333
#: templates/js/translated/company.js:517
#: templates/js/translated/company.js:800 templates/js/translated/part.js:234
-#: templates/js/translated/table_filters.js:389
+#: templates/js/translated/table_filters.js:384
msgid "Manufacturer"
msgstr "制造商"
@@ -2488,7 +2503,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:390
+#: stock/templates/stock/item_base.html:392
msgid "Manufacturer Part"
msgstr "制造商商品"
@@ -2499,7 +2514,7 @@ msgstr "参数名称"
#: company/models.py:422
#: report/templates/report/inventree_test_report_base.html:95
#: stock/models.py:1988 templates/js/translated/company.js:647
-#: templates/js/translated/part.js:715 templates/js/translated/stock.js:1304
+#: templates/js/translated/part.js:715 templates/js/translated/stock.js:1332
msgid "Value"
msgstr "数值"
@@ -2507,9 +2522,9 @@ msgstr "数值"
msgid "Parameter value"
msgstr "参数值"
-#: company/models.py:429 part/models.py:915 part/models.py:2457
+#: company/models.py:429 part/models.py:945 part/models.py:2493
#: part/templates/part/part_base.html:288
-#: templates/InvenTree/settings/settings.html:287
+#: templates/InvenTree/settings/settings.html:324
#: templates/js/translated/company.js:653 templates/js/translated/part.js:721
msgid "Units"
msgstr "单位"
@@ -2526,11 +2541,11 @@ msgstr ""
#: company/templates/company/supplier_part.html:87 order/models.py:227
#: order/templates/order/order_base.html:112
#: order/templates/order/order_wizard/select_pos.html:30 part/bom.py:237
-#: part/bom.py:265 stock/templates/stock/item_base.html:397
+#: part/bom.py:265 stock/templates/stock/item_base.html:399
#: templates/js/translated/company.js:337
#: templates/js/translated/company.js:774 templates/js/translated/order.js:823
#: templates/js/translated/part.js:215 templates/js/translated/part.js:863
-#: templates/js/translated/table_filters.js:393
+#: templates/js/translated/table_filters.js:388
msgid "Supplier"
msgstr "供应商"
@@ -2561,22 +2576,23 @@ msgid "Supplier part description"
msgstr "供应商商品描述"
#: company/models.py:576 company/templates/company/supplier_part.html:119
-#: part/models.py:2648 report/templates/report/inventree_po_report.html:93
-#: report/templates/report/inventree_so_report.html:93
+#: part/models.py:2717 part/templates/part/upload_bom.html:59
+#: report/templates/report/inventree_po_report.html:93
+#: report/templates/report/inventree_so_report.html:93 stock/serializers.py:409
msgid "Note"
msgstr "备注"
-#: company/models.py:580 part/models.py:1781
+#: company/models.py:580 part/models.py:1817
msgid "base cost"
msgstr ""
-#: company/models.py:580 part/models.py:1781
+#: company/models.py:580 part/models.py:1817
msgid "Minimum charge (e.g. stocking fee)"
msgstr "最低收费(例如库存费)"
#: company/models.py:582 company/templates/company/supplier_part.html:112
-#: stock/models.py:495 stock/templates/stock/item_base.html:338
-#: templates/js/translated/company.js:850 templates/js/translated/stock.js:1799
+#: stock/models.py:495 stock/templates/stock/item_base.html:340
+#: templates/js/translated/company.js:850 templates/js/translated/stock.js:1923
msgid "Packaging"
msgstr "打包"
@@ -2584,7 +2600,7 @@ msgstr "打包"
msgid "Part packaging"
msgstr "商品打包"
-#: company/models.py:584 part/models.py:1783
+#: company/models.py:584 part/models.py:1819
msgid "multiple"
msgstr ""
@@ -2645,11 +2661,11 @@ msgstr "从 URL 下载图片"
#: company/templates/company/company_base.html:83 order/models.py:552
#: order/templates/order/sales_order_base.html:115 stock/models.py:514
-#: stock/models.py:515 stock/serializers.py:626
-#: stock/templates/stock/item_base.html:290
+#: stock/models.py:515 stock/serializers.py:683
+#: stock/templates/stock/item_base.html:292
#: templates/js/translated/company.js:329 templates/js/translated/order.js:1240
-#: templates/js/translated/stock.js:2610
-#: templates/js/translated/table_filters.js:397
+#: templates/js/translated/stock.js:2734
+#: templates/js/translated/table_filters.js:392
msgid "Customer"
msgstr "客户"
@@ -2679,7 +2695,7 @@ msgstr "创建新的供应商商品"
#: company/templates/company/detail.html:20
#: company/templates/company/manufacturer_part.html:118
-#: part/templates/part/detail.html:353
+#: part/templates/part/detail.html:356
msgid "New Supplier Part"
msgstr "新建供应商商品"
@@ -2687,8 +2703,8 @@ msgstr "新建供应商商品"
#: company/templates/company/detail.html:79
#: company/templates/company/manufacturer_part.html:127
#: company/templates/company/manufacturer_part.html:156
-#: part/templates/part/category.html:171 part/templates/part/detail.html:362
-#: part/templates/part/detail.html:391
+#: part/templates/part/category.html:171 part/templates/part/detail.html:365
+#: part/templates/part/detail.html:394
msgid "Options"
msgstr "选项"
@@ -2716,7 +2732,7 @@ msgstr "制造商商品"
msgid "Create new manufacturer part"
msgstr "新建制造商商品"
-#: company/templates/company/detail.html:67 part/templates/part/detail.html:381
+#: company/templates/company/detail.html:67 part/templates/part/detail.html:384
msgid "New Manufacturer Part"
msgstr "新建制造商商品"
@@ -2730,7 +2746,7 @@ msgstr "供货商库存"
#: order/templates/order/order_base.html:13
#: order/templates/order/purchase_orders.html:8
#: order/templates/order/purchase_orders.html:12
-#: part/templates/part/detail.html:85 part/templates/part/part_sidebar.html:37
+#: part/templates/part/detail.html:85 part/templates/part/part_sidebar.html:40
#: templates/InvenTree/index.html:252 templates/InvenTree/search.html:197
#: templates/InvenTree/settings/sidebar.html:45 templates/navbar.html:47
#: users/models.py:45
@@ -2752,7 +2768,7 @@ msgstr "新建采购订单"
#: order/templates/order/sales_order_base.html:13
#: order/templates/order/sales_orders.html:8
#: order/templates/order/sales_orders.html:15
-#: part/templates/part/detail.html:108 part/templates/part/part_sidebar.html:41
+#: part/templates/part/detail.html:108 part/templates/part/part_sidebar.html:44
#: templates/InvenTree/index.html:283 templates/InvenTree/search.html:217
#: templates/InvenTree/settings/sidebar.html:47 templates/navbar.html:58
#: users/models.py:46
@@ -2770,7 +2786,7 @@ msgid "New Sales Order"
msgstr "新建销售订单"
#: company/templates/company/detail.html:168
-#: templates/js/translated/build.js:1059
+#: templates/js/translated/build.js:1281
msgid "Assigned Stock"
msgstr ""
@@ -2780,13 +2796,13 @@ msgstr "公司备注"
#: company/templates/company/detail.html:384
#: company/templates/company/manufacturer_part.html:215
-#: part/templates/part/detail.html:435
+#: part/templates/part/detail.html:438
msgid "Delete Supplier Parts?"
msgstr "删除供应商商品?"
#: company/templates/company/detail.html:385
#: company/templates/company/manufacturer_part.html:216
-#: part/templates/part/detail.html:436
+#: part/templates/part/detail.html:439
msgid "All selected supplier parts will be deleted"
msgstr "删除所有选定的供应商商品"
@@ -2824,36 +2840,36 @@ 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:35 part/templates/part/prices.html:163
+#: part/templates/part/part_sidebar.html:38 part/templates/part/prices.html:163
#: templates/InvenTree/search.html:188 templates/navbar.html:45
msgid "Suppliers"
msgstr "供应商"
#: company/templates/company/manufacturer_part.html:129
-#: part/templates/part/detail.html:364
+#: part/templates/part/detail.html:367
msgid "Delete supplier parts"
msgstr "删除供应商商品"
#: company/templates/company/manufacturer_part.html:129
#: company/templates/company/manufacturer_part.html:158
#: company/templates/company/manufacturer_part.html:254
-#: part/templates/part/detail.html:364 part/templates/part/detail.html:393
+#: part/templates/part/detail.html:367 part/templates/part/detail.html:396
#: templates/js/translated/company.js:426 templates/js/translated/helpers.js:31
-#: users/models.py:212
+#: users/models.py:217
msgid "Delete"
msgstr "删除"
#: company/templates/company/manufacturer_part.html:143
#: company/templates/company/manufacturer_part_sidebar.html:5
#: part/templates/part/category_sidebar.html:17
-#: part/templates/part/detail.html:187 part/templates/part/part_sidebar.html:8
+#: part/templates/part/detail.html:190 part/templates/part/part_sidebar.html:9
msgid "Parameters"
msgstr "参数"
#: company/templates/company/manufacturer_part.html:147
-#: part/templates/part/detail.html:192
+#: part/templates/part/detail.html:195
#: templates/InvenTree/settings/category.html:12
-#: templates/InvenTree/settings/part.html:65
+#: templates/InvenTree/settings/part.html:66
msgid "New Parameter"
msgstr "新建参数"
@@ -2862,7 +2878,7 @@ msgid "Delete parameters"
msgstr "删除参数"
#: company/templates/company/manufacturer_part.html:191
-#: part/templates/part/detail.html:892
+#: part/templates/part/detail.html:895
msgid "Add Parameter"
msgstr "添加参数"
@@ -2892,8 +2908,8 @@ msgstr ""
#: company/templates/company/supplier_part.html:7
#: company/templates/company/supplier_part.html:24 stock/models.py:479
-#: stock/templates/stock/item_base.html:402
-#: templates/js/translated/company.js:790 templates/js/translated/stock.js:1756
+#: stock/templates/stock/item_base.html:404
+#: templates/js/translated/company.js:790 templates/js/translated/stock.js:1880
msgid "Supplier Part"
msgstr "供应商商品"
@@ -2919,7 +2935,7 @@ msgstr ""
#: company/templates/company/supplier_part.html:142
#: part/templates/part/detail.html:25 stock/templates/stock/location.html:167
-#: templates/js/translated/stock.js:368
+#: templates/js/translated/stock.js:369
msgid "New Stock Item"
msgstr ""
@@ -2940,7 +2956,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:1628
+#: part/templates/part/prices.html:271 part/views.py:1319
msgid "Add Price Break"
msgstr ""
@@ -2948,11 +2964,11 @@ msgstr ""
msgid "No price break information found"
msgstr ""
-#: company/templates/company/supplier_part.html:224 part/views.py:1690
+#: company/templates/company/supplier_part.html:224 part/views.py:1381
msgid "Delete Price Break"
msgstr ""
-#: company/templates/company/supplier_part.html:238 part/views.py:1676
+#: company/templates/company/supplier_part.html:238 part/views.py:1367
msgid "Edit Price Break"
msgstr ""
@@ -2965,15 +2981,15 @@ msgid "Delete price break"
msgstr ""
#: company/templates/company/supplier_part_navbar.html:15
-#: part/templates/part/part_sidebar.html:14
+#: part/templates/part/part_sidebar.html:15
#: 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:150
#: templates/InvenTree/settings/sidebar.html:41
-#: templates/js/translated/bom.js:340 templates/js/translated/part.js:495
+#: templates/js/translated/bom.js:553 templates/js/translated/part.js:495
#: templates/js/translated/part.js:630 templates/js/translated/part.js:1125
-#: templates/js/translated/part.js:1286 templates/js/translated/stock.js:935
-#: templates/js/translated/stock.js:1588 templates/navbar.html:28
+#: templates/js/translated/part.js:1286 templates/js/translated/stock.js:936
+#: templates/js/translated/stock.js:1712 templates/navbar.html:28
msgid "Stock"
msgstr "库存"
@@ -2987,7 +3003,7 @@ msgid "Supplier Part Pricing"
msgstr "供应商商品价格"
#: company/templates/company/supplier_part_navbar.html:29
-#: part/templates/part/part_sidebar.html:28
+#: part/templates/part/part_sidebar.html:30
msgid "Pricing"
msgstr "定价"
@@ -2996,7 +3012,7 @@ msgstr "定价"
#: stock/templates/stock/location.html:151
#: stock/templates/stock/location.html:163
#: stock/templates/stock/location_sidebar.html:7
-#: templates/InvenTree/search.html:152 templates/js/translated/stock.js:2509
+#: templates/InvenTree/search.html:152 templates/js/translated/stock.js:2633
#: templates/stats.html:105 templates/stats.html:114 users/models.py:43
msgid "Stock Items"
msgstr "库存项"
@@ -3026,20 +3042,20 @@ msgstr "公司"
msgid "New Company"
msgstr "新建公司信息"
-#: company/views.py:129 part/views.py:593
+#: company/views.py:129 part/views.py:591
msgid "Download Image"
msgstr "下载图片"
-#: company/views.py:158 part/views.py:625
+#: company/views.py:158 part/views.py:623
msgid "Image size exceeds maximum allowable size for download"
msgstr "图像大小超过下载允许的最大尺寸"
-#: company/views.py:165 part/views.py:632
+#: company/views.py:165 part/views.py:630
#, python-brace-format
msgid "Invalid response: {code}"
msgstr "无效响应: {code}"
-#: company/views.py:174 part/views.py:641
+#: company/views.py:174 part/views.py:639
msgid "Supplied URL is not a valid image file"
msgstr "提供的 URL 不是一个有效的图片文件"
@@ -3256,16 +3272,16 @@ msgid "Supplier part must match supplier"
msgstr ""
#: order/models.py:855 order/models.py:946 order/models.py:1042
-#: templates/js/translated/order.js:1820 templates/js/translated/stock.js:2271
+#: templates/js/translated/order.js:1820 templates/js/translated/stock.js:2395
msgid "Order"
msgstr ""
#: order/models.py:856 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:352
+#: stock/templates/stock/item_base.html:354
#: templates/js/translated/order.js:801 templates/js/translated/part.js:838
-#: templates/js/translated/stock.js:1733 templates/js/translated/stock.js:2591
+#: templates/js/translated/stock.js:1857 templates/js/translated/stock.js:2715
msgid "Purchase Order"
msgstr ""
@@ -3276,7 +3292,7 @@ msgstr "供应商商品"
#: order/models.py:884 order/templates/order/order_base.html:163
#: templates/js/translated/order.js:589 templates/js/translated/order.js:1118
#: templates/js/translated/part.js:910 templates/js/translated/part.js:937
-#: templates/js/translated/table_filters.js:317
+#: templates/js/translated/table_filters.js:312
msgid "Received"
msgstr ""
@@ -3285,8 +3301,8 @@ msgid "Number of items received"
msgstr ""
#: order/models.py:892 part/templates/part/prices.html:176 stock/models.py:608
-#: stock/serializers.py:170 stock/templates/stock/item_base.html:359
-#: templates/js/translated/stock.js:1787
+#: stock/serializers.py:170 stock/templates/stock/item_base.html:361
+#: templates/js/translated/stock.js:1911
msgid "Purchase Price"
msgstr "采购价格"
@@ -3530,7 +3546,7 @@ msgstr ""
#: order/templates/order/order_base.html:94
#: order/templates/order/sales_order_base.html:89
-#: templates/js/translated/stock.js:2327
+#: templates/js/translated/stock.js:2451
msgid "Order Status"
msgstr ""
@@ -3574,73 +3590,20 @@ msgstr ""
msgid "After placing this purchase order, line items will no longer be editable."
msgstr ""
-#: order/templates/order/order_wizard/match_fields.html:9
-#: part/templates/part/bom_upload/match_fields.html:9
-#: part/templates/part/import_wizard/ajax_match_fields.html:9
-#: part/templates/part/import_wizard/match_fields.html:9
-msgid "Missing selections for the following required columns"
-msgstr ""
-
-#: order/templates/order/order_wizard/match_fields.html:20
-#: part/templates/part/bom_upload/match_fields.html:20
-#: part/templates/part/import_wizard/ajax_match_fields.html:20
-#: part/templates/part/import_wizard/match_fields.html:20
-msgid "Duplicate selections found, see below. Fix them then retry submitting."
-msgstr ""
-
-#: order/templates/order/order_wizard/match_fields.html:29
-#: order/templates/order/order_wizard/match_parts.html:21
-#: part/templates/part/bom_upload/match_fields.html:29
-#: part/templates/part/bom_upload/match_parts.html:21
-#: part/templates/part/import_wizard/match_fields.html:29
-#: part/templates/part/import_wizard/match_references.html:21
-msgid "Submit Selections"
-msgstr ""
-
-#: order/templates/order/order_wizard/match_fields.html:35
-#: part/templates/part/bom_upload/match_fields.html:35
-#: part/templates/part/import_wizard/ajax_match_fields.html:28
-#: part/templates/part/import_wizard/match_fields.html:35
-msgid "File Fields"
-msgstr "文件字段"
-
-#: order/templates/order/order_wizard/match_fields.html:42
-#: part/templates/part/bom_upload/match_fields.html:42
-#: part/templates/part/import_wizard/ajax_match_fields.html:35
-#: part/templates/part/import_wizard/match_fields.html:42
-msgid "Remove column"
-msgstr "移除列"
-
-#: order/templates/order/order_wizard/match_fields.html:60
-#: part/templates/part/bom_upload/match_fields.html:60
-#: part/templates/part/import_wizard/ajax_match_fields.html:53
-#: part/templates/part/import_wizard/match_fields.html:60
-msgid "Duplicate selection"
-msgstr ""
-
-#: order/templates/order/order_wizard/match_fields.html:71
-#: order/templates/order/order_wizard/match_parts.html:52
-#: part/templates/part/bom_upload/match_fields.html:71
-#: part/templates/part/bom_upload/match_parts.html:53
-#: part/templates/part/import_wizard/ajax_match_fields.html:64
-#: part/templates/part/import_wizard/ajax_match_references.html:42
-#: part/templates/part/import_wizard/match_fields.html:71
-#: part/templates/part/import_wizard/match_references.html:49
-#: templates/js/translated/build.js:300 templates/js/translated/build.js:1311
-#: templates/js/translated/order.js:537 templates/js/translated/order.js:1488
-#: templates/js/translated/stock.js:601 templates/js/translated/stock.js:769
-msgid "Remove row"
-msgstr "移除行"
-
#: order/templates/order/order_wizard/match_parts.html:12
-#: part/templates/part/bom_upload/match_parts.html:12
#: part/templates/part/import_wizard/ajax_match_references.html:12
#: part/templates/part/import_wizard/match_references.html:12
msgid "Errors exist in the submitted data"
msgstr "提交数据中存在错误"
+#: order/templates/order/order_wizard/match_parts.html:21
+#: part/templates/part/import_wizard/match_fields.html:29
+#: part/templates/part/import_wizard/match_references.html:21
+#: templates/patterns/wizard/match_fields.html:28
+msgid "Submit Selections"
+msgstr ""
+
#: order/templates/order/order_wizard/match_parts.html:28
-#: part/templates/part/bom_upload/match_parts.html:28
#: part/templates/part/import_wizard/ajax_match_references.html:21
#: part/templates/part/import_wizard/match_references.html:28
msgid "Row"
@@ -3650,6 +3613,19 @@ msgstr "行"
msgid "Select Supplier Part"
msgstr "选择供应商商品"
+#: order/templates/order/order_wizard/match_parts.html:52
+#: part/templates/part/import_wizard/ajax_match_fields.html:64
+#: part/templates/part/import_wizard/ajax_match_references.html:42
+#: part/templates/part/import_wizard/match_fields.html:71
+#: part/templates/part/import_wizard/match_references.html:49
+#: templates/js/translated/bom.js:76 templates/js/translated/build.js:380
+#: templates/js/translated/build.js:528 templates/js/translated/build.js:1547
+#: templates/js/translated/order.js:537 templates/js/translated/order.js:1488
+#: templates/js/translated/stock.js:602 templates/js/translated/stock.js:770
+#: templates/patterns/wizard/match_fields.html:70
+msgid "Remove row"
+msgstr "移除行"
+
#: order/templates/order/order_wizard/po_upload.html:8
msgid "Return to Orders"
msgstr ""
@@ -3659,9 +3635,9 @@ msgid "Upload File for Purchase Order"
msgstr ""
#: order/templates/order/order_wizard/po_upload.html:25
-#: part/templates/part/bom_upload/upload_file.html:21
#: part/templates/part/import_wizard/ajax_part_upload.html:10
#: part/templates/part/import_wizard/part_upload.html:23
+#: templates/patterns/wizard/upload.html:11
#, python-format
msgid "Step %(step)s of %(count)s"
msgstr "步骤 %(step)s / %(count)s"
@@ -3819,7 +3795,7 @@ msgid "Pending Shipments"
msgstr ""
#: order/templates/order/sales_order_detail.html:48
-#: templates/js/translated/bom.js:732 templates/js/translated/build.js:1243
+#: templates/js/translated/bom.js:945 templates/js/translated/build.js:1465
msgid "Actions"
msgstr ""
@@ -3922,7 +3898,7 @@ msgstr "指定初始初始商品仓储地点"
msgid "This field is required"
msgstr "此字段为必填"
-#: part/bom.py:125 part/models.py:83 part/models.py:849
+#: part/bom.py:125 part/models.py:83 part/models.py:879
#: part/templates/part/category.html:108 part/templates/part/part_base.html:338
msgid "Default Location"
msgstr "默认仓储地点"
@@ -3968,7 +3944,7 @@ msgstr ""
msgid "Default keywords for parts in this category"
msgstr "此类别商品的默认关键字"
-#: part/models.py:97 part/models.py:2533 part/templates/part/category.html:15
+#: part/models.py:97 part/models.py:2569 part/templates/part/category.html:15
#: part/templates/part/part_app_base.html:10
msgid "Part Category"
msgstr "商品类别"
@@ -3994,408 +3970,478 @@ msgstr "商品"
msgid "Invalid choice for parent part"
msgstr ""
-#: part/models.py:502 part/models.py:514
+#: part/models.py:532 part/models.py:544
#, python-brace-format
msgid "Part '{p1}' is used in BOM for '{p2}' (recursive)"
msgstr ""
-#: part/models.py:644
+#: part/models.py:674
msgid "Next available serial numbers are"
msgstr ""
-#: part/models.py:648
+#: part/models.py:678
msgid "Next available serial number is"
msgstr ""
-#: part/models.py:653
+#: part/models.py:683
msgid "Most recent serial number is"
msgstr ""
-#: part/models.py:748
+#: part/models.py:778
msgid "Duplicate IPN not allowed in part settings"
msgstr "在商品设置中不允许重复的IPN"
-#: part/models.py:773
+#: part/models.py:803 part/models.py:2622
msgid "Part name"
msgstr "商品名称"
-#: part/models.py:780
+#: part/models.py:810
msgid "Is Template"
msgstr ""
-#: part/models.py:781
+#: part/models.py:811
msgid "Is this part a template part?"
msgstr ""
-#: part/models.py:791
+#: part/models.py:821
msgid "Is this part a variant of another part?"
msgstr ""
-#: part/models.py:792
+#: part/models.py:822
msgid "Variant Of"
msgstr ""
-#: part/models.py:798
+#: part/models.py:828
msgid "Part description"
msgstr "商品描述"
-#: part/models.py:803 part/templates/part/category.html:86
+#: part/models.py:833 part/templates/part/category.html:86
#: part/templates/part/part_base.html:302
msgid "Keywords"
msgstr "关键词"
-#: part/models.py:804
+#: part/models.py:834
msgid "Part keywords to improve visibility in search results"
msgstr "提高搜索结果可见性的关键字"
-#: part/models.py:811 part/models.py:2283 part/models.py:2532
+#: part/models.py:841 part/models.py:2319 part/models.py:2568
#: part/templates/part/part_base.html:265
#: part/templates/part/set_category.html:15
-#: templates/InvenTree/settings/settings.html:186
+#: templates/InvenTree/settings/settings.html:223
#: templates/js/translated/part.js:1268
msgid "Category"
msgstr "类别"
-#: part/models.py:812
+#: part/models.py:842
msgid "Part category"
msgstr "商品类别"
-#: part/models.py:817 part/templates/part/part_base.html:274
+#: part/models.py:847 part/templates/part/part_base.html:274
#: templates/js/translated/part.js:618 templates/js/translated/part.js:1221
-#: templates/js/translated/stock.js:1560
+#: templates/js/translated/stock.js:1684
msgid "IPN"
msgstr ""
-#: part/models.py:818
+#: part/models.py:848
msgid "Internal Part Number"
msgstr "内部商品编号"
-#: part/models.py:824
+#: part/models.py:854
msgid "Part revision or version number"
msgstr "商品版本号"
-#: part/models.py:825 part/templates/part/part_base.html:281
+#: part/models.py:855 part/templates/part/part_base.html:281
#: report/models.py:200 templates/js/translated/part.js:622
msgid "Revision"
msgstr ""
-#: part/models.py:847
+#: part/models.py:877
msgid "Where is this item normally stored?"
msgstr ""
-#: part/models.py:894 part/templates/part/part_base.html:347
+#: part/models.py:924 part/templates/part/part_base.html:347
msgid "Default Supplier"
msgstr ""
-#: part/models.py:895
+#: part/models.py:925
msgid "Default supplier part"
msgstr "默认供应商商品"
-#: part/models.py:902
+#: part/models.py:932
msgid "Default Expiry"
msgstr ""
-#: part/models.py:903
+#: part/models.py:933
msgid "Expiry time (in days) for stock items of this part"
msgstr ""
-#: part/models.py:908 part/templates/part/part_base.html:196
+#: part/models.py:938 part/templates/part/part_base.html:196
msgid "Minimum Stock"
msgstr "最低库存"
-#: part/models.py:909
+#: part/models.py:939
msgid "Minimum allowed stock level"
msgstr ""
-#: part/models.py:916
+#: part/models.py:946
msgid "Stock keeping units for this part"
msgstr ""
-#: part/models.py:922
+#: part/models.py:952
msgid "Can this part be built from other parts?"
msgstr ""
-#: part/models.py:928
+#: part/models.py:958
msgid "Can this part be used to build other parts?"
msgstr ""
-#: part/models.py:934
+#: part/models.py:964
msgid "Does this part have tracking for unique items?"
msgstr ""
-#: part/models.py:939
+#: part/models.py:969
msgid "Can this part be purchased from external suppliers?"
msgstr ""
-#: part/models.py:944
+#: part/models.py:974
msgid "Can this part be sold to customers?"
msgstr "此商品可以销售给客户吗?"
-#: part/models.py:949
+#: part/models.py:979
msgid "Is this part active?"
msgstr ""
-#: part/models.py:954
+#: part/models.py:984
msgid "Is this a virtual part, such as a software product or license?"
msgstr "这是一个虚拟商品,如软件产品或许可证吗?"
-#: part/models.py:959
+#: part/models.py:989
msgid "Part notes - supports Markdown formatting"
msgstr ""
-#: part/models.py:962
+#: part/models.py:992
msgid "BOM checksum"
msgstr ""
-#: part/models.py:962
+#: part/models.py:992
msgid "Stored BOM checksum"
msgstr ""
-#: part/models.py:965
+#: part/models.py:995
msgid "BOM checked by"
msgstr ""
-#: part/models.py:967
+#: part/models.py:997
msgid "BOM checked date"
msgstr ""
-#: part/models.py:971
+#: part/models.py:1001
msgid "Creation User"
msgstr "新建用户"
-#: part/models.py:1783
+#: part/models.py:1819
msgid "Sell multiple"
msgstr ""
-#: part/models.py:2333
+#: part/models.py:2369
msgid "Test templates can only be created for trackable parts"
msgstr ""
-#: part/models.py:2350
+#: part/models.py:2386
msgid "Test with this name already exists for this part"
msgstr ""
-#: part/models.py:2370 templates/js/translated/part.js:1714
-#: templates/js/translated/stock.js:1284
+#: part/models.py:2406 templates/js/translated/part.js:1714
+#: templates/js/translated/stock.js:1312
msgid "Test Name"
msgstr ""
-#: part/models.py:2371
+#: part/models.py:2407
msgid "Enter a name for the test"
msgstr ""
-#: part/models.py:2376
+#: part/models.py:2412
msgid "Test Description"
msgstr ""
-#: part/models.py:2377
+#: part/models.py:2413
msgid "Enter description for this test"
msgstr ""
-#: part/models.py:2382 templates/js/translated/part.js:1723
-#: templates/js/translated/table_filters.js:281
+#: part/models.py:2418 templates/js/translated/part.js:1723
+#: templates/js/translated/table_filters.js:276
msgid "Required"
msgstr ""
-#: part/models.py:2383
+#: part/models.py:2419
msgid "Is this test required to pass?"
msgstr ""
-#: part/models.py:2388 templates/js/translated/part.js:1731
+#: part/models.py:2424 templates/js/translated/part.js:1731
msgid "Requires Value"
msgstr ""
-#: part/models.py:2389
+#: part/models.py:2425
msgid "Does this test require a value when adding a test result?"
msgstr ""
-#: part/models.py:2394 templates/js/translated/part.js:1738
+#: part/models.py:2430 templates/js/translated/part.js:1738
msgid "Requires Attachment"
msgstr ""
-#: part/models.py:2395
+#: part/models.py:2431
msgid "Does this test require a file attachment when adding a test result?"
msgstr ""
-#: part/models.py:2406
+#: part/models.py:2442
#, python-brace-format
msgid "Illegal character in template name ({c})"
msgstr ""
-#: part/models.py:2442
+#: part/models.py:2478
msgid "Parameter template name must be unique"
msgstr ""
-#: part/models.py:2450
+#: part/models.py:2486
msgid "Parameter Name"
msgstr ""
-#: part/models.py:2457
+#: part/models.py:2493
msgid "Parameter Units"
msgstr ""
-#: part/models.py:2487
+#: part/models.py:2523
msgid "Parent Part"
msgstr ""
-#: part/models.py:2489 part/models.py:2538 part/models.py:2539
-#: templates/InvenTree/settings/settings.html:181
+#: part/models.py:2525 part/models.py:2574 part/models.py:2575
+#: templates/InvenTree/settings/settings.html:218
msgid "Parameter Template"
msgstr "参数模板"
-#: part/models.py:2491
+#: part/models.py:2527
msgid "Data"
msgstr ""
-#: part/models.py:2491
+#: part/models.py:2527
msgid "Parameter Value"
msgstr ""
-#: part/models.py:2543 templates/InvenTree/settings/settings.html:190
+#: part/models.py:2579 templates/InvenTree/settings/settings.html:227
msgid "Default Value"
msgstr "默认值"
-#: part/models.py:2544
+#: part/models.py:2580
msgid "Default Parameter Value"
msgstr ""
+#: part/models.py:2614
+msgid "Part ID or part name"
+msgstr ""
+
+#: part/models.py:2617 templates/js/translated/model_renderers.js:182
+msgid "Part ID"
+msgstr "商品ID"
+
+#: part/models.py:2618
+msgid "Unique part ID value"
+msgstr ""
+
#: part/models.py:2621
-msgid "Select parent part"
+msgid "Part Name"
+msgstr ""
+
+#: part/models.py:2625
+msgid "Part IPN"
+msgstr ""
+
+#: part/models.py:2626
+msgid "Part IPN value"
msgstr ""
#: part/models.py:2629
-msgid "Sub part"
+msgid "Level"
msgstr ""
#: part/models.py:2630
+msgid "BOM level"
+msgstr ""
+
+#: part/models.py:2690
+msgid "Select parent part"
+msgstr ""
+
+#: part/models.py:2698
+msgid "Sub part"
+msgstr ""
+
+#: part/models.py:2699
msgid "Select part to be used in BOM"
msgstr ""
-#: part/models.py:2636
+#: part/models.py:2705
msgid "BOM quantity for this BOM item"
msgstr ""
-#: part/models.py:2638 templates/js/translated/bom.js:578
-#: templates/js/translated/bom.js:652
+#: part/models.py:2707 part/templates/part/upload_bom.html:58
+#: templates/js/translated/bom.js:791 templates/js/translated/bom.js:865
#: templates/js/translated/table_filters.js:92
msgid "Optional"
msgstr "可选项"
-#: part/models.py:2638
+#: part/models.py:2707
msgid "This BOM item is optional"
msgstr ""
-#: part/models.py:2641
+#: part/models.py:2710 part/templates/part/upload_bom.html:55
msgid "Overage"
msgstr ""
-#: part/models.py:2642
+#: part/models.py:2711
msgid "Estimated build wastage quantity (absolute or percentage)"
msgstr ""
-#: part/models.py:2645
+#: part/models.py:2714
msgid "BOM item reference"
msgstr ""
-#: part/models.py:2648
+#: part/models.py:2717
msgid "BOM item notes"
msgstr ""
-#: part/models.py:2650
+#: part/models.py:2719
msgid "Checksum"
msgstr ""
-#: part/models.py:2650
+#: part/models.py:2719
msgid "BOM line checksum"
msgstr ""
-#: part/models.py:2654 templates/js/translated/bom.js:669
+#: part/models.py:2723 part/templates/part/upload_bom.html:57
+#: templates/js/translated/bom.js:882
#: templates/js/translated/table_filters.js:68
#: templates/js/translated/table_filters.js:88
msgid "Inherited"
msgstr "继承项"
-#: part/models.py:2655
+#: part/models.py:2724
msgid "This BOM item is inherited by BOMs for variant parts"
msgstr ""
-#: part/models.py:2660 templates/js/translated/bom.js:661
+#: part/models.py:2729 part/templates/part/upload_bom.html:56
+#: templates/js/translated/bom.js:874
msgid "Allow Variants"
msgstr ""
-#: part/models.py:2661
+#: part/models.py:2730
msgid "Stock items for variant parts can be used for this BOM item"
msgstr ""
-#: part/models.py:2746 stock/models.py:357
+#: part/models.py:2815 stock/models.py:357
msgid "Quantity must be integer value for trackable parts"
msgstr ""
-#: part/models.py:2755 part/models.py:2757
+#: part/models.py:2824 part/models.py:2826
msgid "Sub part must be specified"
msgstr ""
-#: part/models.py:2886
+#: part/models.py:2955
msgid "BOM Item Substitute"
msgstr ""
-#: part/models.py:2908
+#: part/models.py:2977
msgid "Substitute part cannot be the same as the master part"
msgstr ""
-#: part/models.py:2920
+#: part/models.py:2989
msgid "Parent BOM item"
msgstr ""
-#: part/models.py:2928
+#: part/models.py:2997
msgid "Substitute part"
msgstr ""
-#: part/models.py:2939
+#: part/models.py:3008
msgid "Part 1"
msgstr ""
-#: part/models.py:2943
+#: part/models.py:3012
msgid "Part 2"
msgstr ""
-#: part/models.py:2943
+#: part/models.py:3012
msgid "Select Related Part"
msgstr ""
-#: part/models.py:2975
+#: part/models.py:3044
msgid "Error creating relationship: check that the part is not related to itself and that the relationship is unique"
msgstr ""
-#: part/serializers.py:659
+#: part/serializers.py:667
msgid "Select part to copy BOM from"
msgstr ""
-#: part/serializers.py:670
+#: part/serializers.py:678
msgid "Remove Existing Data"
msgstr ""
-#: part/serializers.py:671
+#: part/serializers.py:679
msgid "Remove existing BOM items before copying"
msgstr ""
-#: part/serializers.py:676
+#: part/serializers.py:684
msgid "Include Inherited"
msgstr ""
-#: part/serializers.py:677
+#: part/serializers.py:685
msgid "Include BOM items which are inherited from templated parts"
msgstr ""
-#: part/serializers.py:682
+#: part/serializers.py:690
msgid "Skip Invalid Rows"
msgstr ""
-#: part/serializers.py:683
+#: part/serializers.py:691
msgid "Enable this option to skip invalid rows"
msgstr ""
-#: part/tasks.py:53
+#: part/serializers.py:734
+msgid "Clear Existing BOM"
+msgstr ""
+
+#: part/serializers.py:735
+msgid "Delete existing BOM items before uploading"
+msgstr ""
+
+#: part/serializers.py:762
+msgid "No part column specified"
+msgstr ""
+
+#: part/serializers.py:806
+msgid "Multiple matching parts found"
+msgstr ""
+
+#: part/serializers.py:809
+msgid "No matching part found"
+msgstr ""
+
+#: part/serializers.py:812
+msgid "Part is not designated as a component"
+msgstr ""
+
+#: part/serializers.py:821
+msgid "Quantity not provided"
+msgstr ""
+
+#: part/serializers.py:829
+msgid "Invalid quantity"
+msgstr ""
+
+#: part/serializers.py:848
+msgid "At least one BOM item is required"
+msgstr ""
+
+#: part/tasks.py:58
msgid "Low stock notification"
msgstr ""
@@ -4418,7 +4464,7 @@ msgstr ""
msgid "The BOM for %(part)s has not been validated."
msgstr ""
-#: part/templates/part/bom.html:30 part/templates/part/detail.html:270
+#: part/templates/part/bom.html:30 part/templates/part/detail.html:273
msgid "BOM actions"
msgstr ""
@@ -4426,34 +4472,6 @@ msgstr ""
msgid "Delete Items"
msgstr ""
-#: part/templates/part/bom_upload/match_parts.html:29
-msgid "Select Part"
-msgstr "选择商品"
-
-#: part/templates/part/bom_upload/upload_file.html:8
-msgid "Return to BOM"
-msgstr ""
-
-#: part/templates/part/bom_upload/upload_file.html:13
-msgid "Upload Bill of Materials"
-msgstr ""
-
-#: part/templates/part/bom_upload/upload_file.html:33
-msgid "Requirements for BOM upload"
-msgstr ""
-
-#: part/templates/part/bom_upload/upload_file.html:35
-msgid "The BOM file must contain the required named columns as provided in the "
-msgstr ""
-
-#: part/templates/part/bom_upload/upload_file.html:35
-msgid "BOM Upload Template"
-msgstr ""
-
-#: part/templates/part/bom_upload/upload_file.html:36
-msgid "Each part must already exist in the database"
-msgstr "每个商品必须已经存在于数据库"
-
#: part/templates/part/category.html:28 part/templates/part/category.html:32
msgid "You are subscribed to notifications for this category"
msgstr ""
@@ -4519,7 +4537,7 @@ msgstr "导出"
msgid "Create new part"
msgstr "新建商品"
-#: part/templates/part/category.html:161 templates/js/translated/bom.js:152
+#: part/templates/part/category.html:161 templates/js/translated/bom.js:365
msgid "New Part"
msgstr "新商品"
@@ -4639,138 +4657,168 @@ msgstr ""
msgid "Sales Order Allocations"
msgstr ""
-#: part/templates/part/detail.html:159
+#: part/templates/part/detail.html:162
msgid "Part Variants"
msgstr ""
-#: part/templates/part/detail.html:163
+#: part/templates/part/detail.html:166
msgid "Create new variant"
msgstr ""
-#: part/templates/part/detail.html:164
+#: part/templates/part/detail.html:167
msgid "New Variant"
msgstr ""
-#: part/templates/part/detail.html:191
+#: part/templates/part/detail.html:194
msgid "Add new parameter"
msgstr ""
-#: part/templates/part/detail.html:228 part/templates/part/part_sidebar.html:49
+#: part/templates/part/detail.html:231 part/templates/part/part_sidebar.html:52
msgid "Related Parts"
msgstr ""
-#: part/templates/part/detail.html:232 part/templates/part/detail.html:233
+#: part/templates/part/detail.html:235 part/templates/part/detail.html:236
msgid "Add Related"
msgstr ""
-#: part/templates/part/detail.html:253 part/templates/part/part_sidebar.html:17
+#: part/templates/part/detail.html:256 part/templates/part/part_sidebar.html:18
msgid "Bill of Materials"
msgstr ""
-#: part/templates/part/detail.html:258
+#: part/templates/part/detail.html:261
msgid "Export actions"
msgstr ""
-#: part/templates/part/detail.html:262 templates/js/translated/bom.js:70
+#: part/templates/part/detail.html:265 templates/js/translated/bom.js:283
msgid "Export BOM"
msgstr ""
-#: part/templates/part/detail.html:264
+#: part/templates/part/detail.html:267
msgid "Print BOM Report"
msgstr ""
-#: part/templates/part/detail.html:274
+#: part/templates/part/detail.html:277
msgid "Upload BOM"
msgstr ""
-#: part/templates/part/detail.html:276 templates/js/translated/part.js:272
+#: part/templates/part/detail.html:279 templates/js/translated/part.js:272
msgid "Copy BOM"
msgstr ""
-#: part/templates/part/detail.html:278
+#: part/templates/part/detail.html:281
msgid "Validate BOM"
msgstr ""
-#: part/templates/part/detail.html:283
+#: part/templates/part/detail.html:286
msgid "New BOM Item"
msgstr ""
-#: part/templates/part/detail.html:284
+#: part/templates/part/detail.html:287
msgid "Add BOM Item"
msgstr ""
-#: part/templates/part/detail.html:297
+#: part/templates/part/detail.html:300
msgid "Assemblies"
msgstr ""
-#: part/templates/part/detail.html:314
+#: part/templates/part/detail.html:317
msgid "Part Builds"
msgstr ""
-#: part/templates/part/detail.html:339
+#: part/templates/part/detail.html:342
msgid "Build Order Allocations"
msgstr ""
-#: part/templates/part/detail.html:349
+#: part/templates/part/detail.html:352
msgid "Part Suppliers"
msgstr "商品供应商"
-#: part/templates/part/detail.html:377
+#: part/templates/part/detail.html:380
msgid "Part Manufacturers"
msgstr "商品制造商"
-#: part/templates/part/detail.html:393
+#: part/templates/part/detail.html:396
msgid "Delete manufacturer parts"
msgstr "删除制造商商品"
-#: part/templates/part/detail.html:575
+#: part/templates/part/detail.html:578
msgid "Delete selected BOM items?"
msgstr ""
-#: part/templates/part/detail.html:576
+#: part/templates/part/detail.html:579
msgid "All selected BOM items will be deleted"
msgstr ""
-#: part/templates/part/detail.html:625
+#: part/templates/part/detail.html:628
msgid "Create BOM Item"
msgstr ""
-#: part/templates/part/detail.html:682
+#: part/templates/part/detail.html:685
msgid "Related Part"
msgstr ""
-#: part/templates/part/detail.html:690
+#: part/templates/part/detail.html:693
msgid "Add Related Part"
msgstr ""
-#: part/templates/part/detail.html:785
+#: part/templates/part/detail.html:788
msgid "Add Test Result Template"
msgstr ""
-#: part/templates/part/detail.html:842
+#: part/templates/part/detail.html:845
msgid "Edit Part Notes"
msgstr "编辑商品注释"
-#: part/templates/part/detail.html:955
+#: part/templates/part/detail.html:958
#, python-format
msgid "Purchase Unit Price - %(currency)s"
msgstr ""
-#: part/templates/part/detail.html:967
+#: part/templates/part/detail.html:970
#, python-format
msgid "Unit Price-Cost Difference - %(currency)s"
msgstr ""
-#: part/templates/part/detail.html:979
+#: part/templates/part/detail.html:982
#, python-format
msgid "Supplier Unit Cost - %(currency)s"
msgstr ""
-#: part/templates/part/detail.html:1068
+#: part/templates/part/detail.html:1071
#, python-format
msgid "Unit Price - %(currency)s"
msgstr ""
+#: part/templates/part/import_wizard/ajax_match_fields.html:9
+#: part/templates/part/import_wizard/match_fields.html:9
+#: templates/patterns/wizard/match_fields.html:8
+msgid "Missing selections for the following required columns"
+msgstr ""
+
+#: part/templates/part/import_wizard/ajax_match_fields.html:20
+#: part/templates/part/import_wizard/match_fields.html:20
+#: templates/patterns/wizard/match_fields.html:19
+msgid "Duplicate selections found, see below. Fix them then retry submitting."
+msgstr ""
+
+#: part/templates/part/import_wizard/ajax_match_fields.html:28
+#: part/templates/part/import_wizard/match_fields.html:35
+#: templates/patterns/wizard/match_fields.html:34
+msgid "File Fields"
+msgstr "文件字段"
+
+#: part/templates/part/import_wizard/ajax_match_fields.html:35
+#: part/templates/part/import_wizard/match_fields.html:42
+#: templates/patterns/wizard/match_fields.html:41
+msgid "Remove column"
+msgstr "移除列"
+
+#: part/templates/part/import_wizard/ajax_match_fields.html:53
+#: part/templates/part/import_wizard/match_fields.html:60
+#: templates/patterns/wizard/match_fields.html:59
+msgid "Duplicate selection"
+msgstr ""
+
#: part/templates/part/import_wizard/ajax_part_upload.html:29
#: part/templates/part/import_wizard/part_upload.html:53
msgid "Unsuffitient privileges."
@@ -4819,7 +4867,7 @@ msgid "Show pricing information"
msgstr ""
#: part/templates/part/part_base.html:56
-#: stock/templates/stock/item_base.html:110
+#: stock/templates/stock/item_base.html:112
#: stock/templates/stock/location.html:44
msgid "Stock actions"
msgstr ""
@@ -4912,7 +4960,7 @@ msgstr ""
msgid "Allocated to Orders"
msgstr ""
-#: part/templates/part/part_base.html:239 templates/js/translated/bom.js:690
+#: part/templates/part/part_base.html:239 templates/js/translated/bom.js:903
msgid "Can Build"
msgstr ""
@@ -4930,7 +4978,7 @@ msgid "Latest Serial Number"
msgstr ""
#: part/templates/part/part_base.html:328
-#: stock/templates/stock/item_base.html:166
+#: stock/templates/stock/item_base.html:168
msgid "Search for serial number"
msgstr ""
@@ -4969,7 +5017,7 @@ msgid "Total Cost"
msgstr ""
#: part/templates/part/part_pricing.html:40 part/templates/part/prices.html:40
-#: templates/js/translated/bom.js:644
+#: templates/js/translated/bom.js:857
msgid "No supplier pricing available"
msgstr ""
@@ -5003,20 +5051,20 @@ msgstr ""
msgid "No pricing information is available for this part."
msgstr "此商品无价格信息可用。"
-#: part/templates/part/part_sidebar.html:11
+#: part/templates/part/part_sidebar.html:12
msgid "Variants"
msgstr ""
-#: part/templates/part/part_sidebar.html:25
+#: part/templates/part/part_sidebar.html:26
msgid "Used In"
msgstr ""
-#: part/templates/part/part_sidebar.html:31
+#: part/templates/part/part_sidebar.html:34
#: stock/templates/stock/stock_sidebar.html:8
msgid "Allocations"
msgstr ""
-#: part/templates/part/part_sidebar.html:45
+#: part/templates/part/part_sidebar.html:48
msgid "Test Templates"
msgstr ""
@@ -5089,7 +5137,7 @@ msgstr ""
msgid "Calculation parameters"
msgstr ""
-#: part/templates/part/prices.html:155 templates/js/translated/bom.js:638
+#: part/templates/part/prices.html:155 templates/js/translated/bom.js:851
msgid "Supplier Cost"
msgstr ""
@@ -5111,7 +5159,7 @@ msgstr ""
msgid "Internal Cost"
msgstr ""
-#: part/templates/part/prices.html:215 part/views.py:1699
+#: part/templates/part/prices.html:215 part/views.py:1390
msgid "Add Internal Price Break"
msgstr ""
@@ -5131,7 +5179,7 @@ msgstr ""
msgid "Set category for the following parts"
msgstr "为以下商品设置类别"
-#: part/templates/part/stock_count.html:7 templates/js/translated/bom.js:600
+#: part/templates/part/stock_count.html:7 templates/js/translated/bom.js:813
#: templates/js/translated/part.js:497 templates/js/translated/part.js:1122
#: templates/js/translated/part.js:1309
msgid "No Stock"
@@ -5141,6 +5189,43 @@ msgstr ""
msgid "Low Stock"
msgstr ""
+#: part/templates/part/upload_bom.html:8
+msgid "Return to BOM"
+msgstr ""
+
+#: part/templates/part/upload_bom.html:13
+msgid "Upload Bill of Materials"
+msgstr ""
+
+#: part/templates/part/upload_bom.html:19
+msgid "BOM upload requirements"
+msgstr ""
+
+#: part/templates/part/upload_bom.html:23
+#: part/templates/part/upload_bom.html:90
+msgid "Upload BOM File"
+msgstr ""
+
+#: part/templates/part/upload_bom.html:29
+msgid "Submit BOM Data"
+msgstr ""
+
+#: part/templates/part/upload_bom.html:37
+msgid "Requirements for BOM upload"
+msgstr ""
+
+#: part/templates/part/upload_bom.html:39
+msgid "The BOM file must contain the required named columns as provided in the "
+msgstr ""
+
+#: part/templates/part/upload_bom.html:39
+msgid "BOM Upload Template"
+msgstr ""
+
+#: part/templates/part/upload_bom.html:40
+msgid "Each part must already exist in the database"
+msgstr "每个商品必须已经存在于数据库"
+
#: part/templates/part/variant_part.html:9
msgid "Create new part variant"
msgstr ""
@@ -5154,104 +5239,96 @@ msgstr ""
msgid "Unknown database"
msgstr ""
-#: part/views.py:93
+#: part/views.py:90
msgid "Set Part Category"
msgstr "设置商品类别"
-#: part/views.py:143
+#: part/views.py:140
#, python-brace-format
msgid "Set category for {n} parts"
msgstr "为 {n} 个商品设置类别"
-#: part/views.py:215
+#: part/views.py:212
msgid "Match References"
msgstr ""
-#: part/views.py:511
+#: part/views.py:509
msgid "None"
msgstr ""
-#: part/views.py:570
+#: part/views.py:568
msgid "Part QR Code"
msgstr "商品二维码"
-#: part/views.py:672
+#: part/views.py:670
msgid "Select Part Image"
msgstr "选择商品图像"
-#: part/views.py:698
+#: part/views.py:696
msgid "Updated part image"
msgstr "更新商品图像"
-#: part/views.py:701
+#: part/views.py:699
msgid "Part image not found"
msgstr "未找到商品图像"
-#: part/views.py:775
-msgid "Match Parts"
-msgstr "匹配商品"
-
-#: part/views.py:1110
-msgid "Export Bill of Materials"
-msgstr ""
-
-#: part/views.py:1159
+#: part/views.py:850
msgid "Confirm Part Deletion"
msgstr "确认删除商品"
-#: part/views.py:1166
+#: part/views.py:857
msgid "Part was deleted"
msgstr "商品已删除"
-#: part/views.py:1175
+#: part/views.py:866
msgid "Part Pricing"
msgstr "商品价格"
-#: part/views.py:1324
+#: part/views.py:1015
msgid "Create Part Parameter Template"
msgstr ""
-#: part/views.py:1334
+#: part/views.py:1025
msgid "Edit Part Parameter Template"
msgstr ""
-#: part/views.py:1341
+#: part/views.py:1032
msgid "Delete Part Parameter Template"
msgstr ""
-#: part/views.py:1400 templates/js/translated/part.js:315
+#: part/views.py:1091 templates/js/translated/part.js:315
msgid "Edit Part Category"
msgstr "编辑商品类别"
-#: part/views.py:1438
+#: part/views.py:1129
msgid "Delete Part Category"
msgstr "删除商品类别"
-#: part/views.py:1444
+#: part/views.py:1135
msgid "Part category was deleted"
msgstr "商品类别已删除"
-#: part/views.py:1453
+#: part/views.py:1144
msgid "Create Category Parameter Template"
msgstr "创建类别参数模板"
-#: part/views.py:1554
+#: part/views.py:1245
msgid "Edit Category Parameter Template"
msgstr "编辑类别参数模板"
-#: part/views.py:1610
+#: part/views.py:1301
msgid "Delete Category Parameter Template"
msgstr "删除类别参数模板"
-#: part/views.py:1632
+#: part/views.py:1323
msgid "Added new price break"
msgstr ""
-#: part/views.py:1708
+#: part/views.py:1399
msgid "Edit Internal Price Break"
msgstr ""
-#: part/views.py:1716
+#: part/views.py:1407
msgid "Delete Internal Price Break"
msgstr ""
@@ -5453,12 +5530,12 @@ msgid "Stock Item Test Report"
msgstr ""
#: report/templates/report/inventree_test_report_base.html:79
-#: stock/models.py:519 stock/templates/stock/item_base.html:156
-#: templates/js/translated/build.js:293 templates/js/translated/build.js:697
-#: templates/js/translated/build.js:1073
+#: stock/models.py:519 stock/templates/stock/item_base.html:158
+#: templates/js/translated/build.js:373 templates/js/translated/build.js:521
+#: templates/js/translated/build.js:919 templates/js/translated/build.js:1295
#: 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:423
+#: templates/js/translated/order.js:2034 templates/js/translated/stock.js:424
msgid "Serial Number"
msgstr "序列号"
@@ -5479,7 +5556,7 @@ msgstr ""
#: report/templates/report/inventree_test_report_base.html:97
#: templates/InvenTree/settings/plugin.html:50
#: templates/InvenTree/settings/plugin_settings.html:38
-#: templates/js/translated/order.js:849 templates/js/translated/stock.js:2525
+#: templates/js/translated/order.js:849 templates/js/translated/stock.js:2649
msgid "Date"
msgstr ""
@@ -5497,71 +5574,67 @@ msgid "Installed Items"
msgstr ""
#: report/templates/report/inventree_test_report_base.html:137
-#: templates/js/translated/stock.js:586 templates/js/translated/stock.js:756
-#: templates/js/translated/stock.js:2785
+#: templates/js/translated/stock.js:587 templates/js/translated/stock.js:757
+#: templates/js/translated/stock.js:2909
msgid "Serial"
msgstr ""
-#: stock/api.py:476
+#: stock/api.py:501
msgid "Quantity is required"
msgstr ""
-#: stock/api.py:483
+#: stock/api.py:508
msgid "Valid part must be supplied"
msgstr ""
-#: stock/forms.py:77 stock/forms.py:251 stock/models.py:576
-#: stock/templates/stock/item_base.html:193
-#: templates/js/translated/stock.js:1709
+#: stock/api.py:535
+msgid "Serial numbers cannot be supplied for a non-trackable part"
+msgstr ""
+
+#: stock/forms.py:74 stock/forms.py:198 stock/models.py:576
+#: stock/templates/stock/item_base.html:195
+#: templates/js/translated/stock.js:1833
msgid "Expiry Date"
msgstr ""
-#: stock/forms.py:78 stock/forms.py:252
+#: stock/forms.py:75 stock/forms.py:199
msgid "Expiration date for this stock item"
msgstr ""
-#: stock/forms.py:81
+#: stock/forms.py:78
msgid "Enter unique serial numbers (or leave blank)"
msgstr ""
-#: stock/forms.py:136
+#: stock/forms.py:133
msgid "Destination for serialized stock (by default, will remain in current location)"
msgstr ""
-#: stock/forms.py:138
+#: stock/forms.py:135
msgid "Serial numbers"
msgstr ""
-#: stock/forms.py:138
+#: stock/forms.py:135
msgid "Unique serial numbers (must match quantity)"
msgstr ""
-#: stock/forms.py:140 stock/forms.py:224
+#: stock/forms.py:137 stock/forms.py:171
msgid "Add transaction note (optional)"
msgstr ""
-#: stock/forms.py:180
-msgid "Stock item to install"
-msgstr ""
-
-#: stock/forms.py:210
-msgid "Must not exceed available quantity"
-msgstr ""
-
-#: stock/forms.py:222
+#: stock/forms.py:169
msgid "Destination location for uninstalled items"
msgstr ""
-#: stock/forms.py:226
+#: stock/forms.py:173
msgid "Confirm uninstall"
msgstr ""
-#: stock/forms.py:226
+#: stock/forms.py:173
msgid "Confirm removal of installed stock items"
msgstr ""
#: stock/models.py:62 stock/models.py:613
-#: stock/templates/stock/item_base.html:416
+#: stock/templates/stock/item_base.html:418
msgid "Owner"
msgstr ""
@@ -5623,7 +5696,7 @@ msgstr ""
msgid "Packaging this stock item is stored in"
msgstr ""
-#: stock/models.py:502 stock/templates/stock/item_base.html:298
+#: stock/models.py:502 stock/templates/stock/item_base.html:300
msgid "Installed In"
msgstr ""
@@ -5733,7 +5806,7 @@ msgstr ""
msgid "Serialized stock cannot be merged"
msgstr ""
-#: stock/models.py:1214 stock/serializers.py:775
+#: stock/models.py:1214 stock/serializers.py:832
msgid "Duplicate stock items"
msgstr ""
@@ -5769,7 +5842,7 @@ msgstr ""
msgid "Test name"
msgstr ""
-#: stock/models.py:1983 templates/js/translated/table_filters.js:271
+#: stock/models.py:1983
msgid "Test result"
msgstr ""
@@ -5806,7 +5879,7 @@ msgstr ""
msgid "Enter serial numbers for new items"
msgstr ""
-#: stock/serializers.py:326 stock/serializers.py:732 stock/serializers.py:973
+#: stock/serializers.py:326 stock/serializers.py:789 stock/serializers.py:1030
msgid "Destination stock location"
msgstr ""
@@ -5818,63 +5891,79 @@ msgstr ""
msgid "Serial numbers cannot be assigned to this part"
msgstr ""
-#: stock/serializers.py:589
+#: stock/serializers.py:363 stock/views.py:1108
+msgid "Serial numbers already exist"
+msgstr "序列号已存在"
+
+#: stock/serializers.py:405
+msgid "Select stock item to install"
+msgstr ""
+
+#: stock/serializers.py:421
+msgid "Stock item is unavailable"
+msgstr ""
+
+#: stock/serializers.py:428
+msgid "Selected part is not in the Bill of Materials"
+msgstr ""
+
+#: stock/serializers.py:646
msgid "Part must be salable"
msgstr ""
-#: stock/serializers.py:593
+#: stock/serializers.py:650
msgid "Item is allocated to a sales order"
msgstr ""
-#: stock/serializers.py:597
+#: stock/serializers.py:654
msgid "Item is allocated to a build order"
msgstr ""
-#: stock/serializers.py:627
+#: stock/serializers.py:684
msgid "Customer to assign stock items"
msgstr ""
-#: stock/serializers.py:633
+#: stock/serializers.py:690
msgid "Selected company is not a customer"
msgstr ""
-#: stock/serializers.py:641
+#: stock/serializers.py:698
msgid "Stock assignment notes"
msgstr ""
-#: stock/serializers.py:651 stock/serializers.py:881
+#: stock/serializers.py:708 stock/serializers.py:938
msgid "A list of stock items must be provided"
msgstr ""
-#: stock/serializers.py:739
+#: stock/serializers.py:796
msgid "Stock merging notes"
msgstr ""
-#: stock/serializers.py:744
+#: stock/serializers.py:801
msgid "Allow mismatched suppliers"
msgstr ""
-#: stock/serializers.py:745
+#: stock/serializers.py:802
msgid "Allow stock items with different supplier parts to be merged"
msgstr ""
-#: stock/serializers.py:750
+#: stock/serializers.py:807
msgid "Allow mismatched status"
msgstr ""
-#: stock/serializers.py:751
+#: stock/serializers.py:808
msgid "Allow stock items with different status codes to be merged"
msgstr ""
-#: stock/serializers.py:761
+#: stock/serializers.py:818
msgid "At least two stock items must be provided"
msgstr ""
-#: stock/serializers.py:843
+#: stock/serializers.py:900
msgid "StockItem primary key value"
msgstr ""
-#: stock/serializers.py:871
+#: stock/serializers.py:928
msgid "Stock transaction notes"
msgstr ""
@@ -5919,22 +6008,14 @@ msgstr ""
msgid "Installed Stock Items"
msgstr ""
-#: stock/templates/stock/item.html:154 stock/views.py:482
+#: stock/templates/stock/item.html:154 templates/js/translated/stock.js:3018
msgid "Install Stock Item"
msgstr ""
-#: stock/templates/stock/item.html:309 stock/templates/stock/item.html:334
+#: stock/templates/stock/item.html:304 templates/js/translated/stock.js:1480
msgid "Add Test Result"
msgstr ""
-#: stock/templates/stock/item.html:354
-msgid "Edit Test Result"
-msgstr ""
-
-#: stock/templates/stock/item.html:368
-msgid "Delete Test Result"
-msgstr ""
-
#: stock/templates/stock/item_base.html:42
#: templates/js/translated/barcode.js:330
#: templates/js/translated/barcode.js:335
@@ -5995,129 +6076,129 @@ msgstr ""
msgid "Uninstall"
msgstr ""
-#: stock/templates/stock/item_base.html:101
+#: stock/templates/stock/item_base.html:102
msgid "Install stock item"
msgstr ""
-#: stock/templates/stock/item_base.html:101
+#: stock/templates/stock/item_base.html:102
msgid "Install"
msgstr ""
-#: stock/templates/stock/item_base.html:115
+#: stock/templates/stock/item_base.html:117
msgid "Convert to variant"
msgstr ""
-#: stock/templates/stock/item_base.html:118
+#: stock/templates/stock/item_base.html:120
msgid "Duplicate stock item"
msgstr ""
-#: stock/templates/stock/item_base.html:120
+#: stock/templates/stock/item_base.html:122
msgid "Edit stock item"
msgstr ""
-#: stock/templates/stock/item_base.html:123
+#: stock/templates/stock/item_base.html:125
msgid "Delete stock item"
msgstr ""
-#: stock/templates/stock/item_base.html:161
+#: stock/templates/stock/item_base.html:163
msgid "previous page"
msgstr ""
-#: stock/templates/stock/item_base.html:161
+#: stock/templates/stock/item_base.html:163
msgid "Navigate to previous serial number"
msgstr ""
-#: stock/templates/stock/item_base.html:170
+#: stock/templates/stock/item_base.html:172
msgid "next page"
msgstr ""
-#: stock/templates/stock/item_base.html:170
+#: stock/templates/stock/item_base.html:172
msgid "Navigate to next serial number"
msgstr ""
-#: stock/templates/stock/item_base.html:197
+#: stock/templates/stock/item_base.html:199
#, python-format
msgid "This StockItem expired on %(item.expiry_date)s"
msgstr ""
-#: stock/templates/stock/item_base.html:197
+#: stock/templates/stock/item_base.html:199
#: templates/js/translated/table_filters.js:252
msgid "Expired"
msgstr ""
-#: stock/templates/stock/item_base.html:199
+#: stock/templates/stock/item_base.html:201
#, python-format
msgid "This StockItem expires on %(item.expiry_date)s"
msgstr ""
-#: stock/templates/stock/item_base.html:199
+#: stock/templates/stock/item_base.html:201
#: templates/js/translated/table_filters.js:258
msgid "Stale"
msgstr ""
-#: stock/templates/stock/item_base.html:206
-#: templates/js/translated/stock.js:1722
+#: stock/templates/stock/item_base.html:208
+#: templates/js/translated/stock.js:1846
msgid "Last Updated"
msgstr ""
-#: stock/templates/stock/item_base.html:211
+#: stock/templates/stock/item_base.html:213
msgid "Last Stocktake"
msgstr ""
-#: stock/templates/stock/item_base.html:215
+#: stock/templates/stock/item_base.html:217
msgid "No stocktake performed"
msgstr ""
-#: stock/templates/stock/item_base.html:233
+#: stock/templates/stock/item_base.html:235
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:240
+#: stock/templates/stock/item_base.html:242
msgid "This stock item is in production and cannot be edited."
msgstr "此库存项目正在生产中,无法编辑。"
-#: stock/templates/stock/item_base.html:241
+#: stock/templates/stock/item_base.html:243
msgid "Edit the stock item from the build view."
msgstr ""
-#: stock/templates/stock/item_base.html:254
+#: stock/templates/stock/item_base.html:256
msgid "This stock item has not passed all required tests"
msgstr ""
-#: stock/templates/stock/item_base.html:262
+#: stock/templates/stock/item_base.html:264
msgid "This stock item is allocated to Sales Order"
msgstr ""
-#: stock/templates/stock/item_base.html:270
+#: stock/templates/stock/item_base.html:272
msgid "This stock item is allocated to Build Order"
msgstr ""
-#: stock/templates/stock/item_base.html:276
+#: stock/templates/stock/item_base.html:278
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:317
-#: templates/js/translated/build.js:1095
+#: stock/templates/stock/item_base.html:319
+#: templates/js/translated/build.js:1317
msgid "No location set"
msgstr "未设置仓储地点"
-#: stock/templates/stock/item_base.html:324
+#: stock/templates/stock/item_base.html:326
msgid "Barcode Identifier"
msgstr ""
-#: stock/templates/stock/item_base.html:366
+#: stock/templates/stock/item_base.html:368
msgid "Parent Item"
msgstr ""
-#: stock/templates/stock/item_base.html:384
+#: stock/templates/stock/item_base.html:386
msgid "No manufacturer set"
msgstr ""
-#: stock/templates/stock/item_base.html:409
+#: stock/templates/stock/item_base.html:411
msgid "Tests"
msgstr ""
-#: stock/templates/stock/item_base.html:499
+#: stock/templates/stock/item_base.html:492
msgid "Edit Stock Status"
msgstr ""
@@ -6130,39 +6211,6 @@ msgstr ""
msgid "This will remove %(qty)s units of %(full_name)s from stock."
msgstr ""
-#: stock/templates/stock/item_install.html:8
-msgid "Install another Stock Item into this item."
-msgstr ""
-
-#: stock/templates/stock/item_install.html:11
-#: stock/templates/stock/item_install.html:24
-msgid "Stock items can only be installed if they meet the following criteria"
-msgstr ""
-
-#: stock/templates/stock/item_install.html:14
-msgid "The Stock Item links to a Part which is in the BOM for this Stock Item"
-msgstr ""
-
-#: stock/templates/stock/item_install.html:15
-msgid "The Stock Item is currently in stock"
-msgstr ""
-
-#: stock/templates/stock/item_install.html:16
-msgid "The Stock Item is serialized and does not belong to another item"
-msgstr ""
-
-#: stock/templates/stock/item_install.html:21
-msgid "Install this Stock Item in another stock item."
-msgstr ""
-
-#: stock/templates/stock/item_install.html:27
-msgid "The part associated to this Stock Item belongs to another part's BOM"
-msgstr ""
-
-#: stock/templates/stock/item_install.html:28
-msgid "This Stock Item is serialized and does not belong to another item"
-msgstr ""
-
#: stock/templates/stock/item_serialize.html:5
msgid "Create serialized items from this stock item."
msgstr ""
@@ -6247,7 +6295,7 @@ msgstr ""
msgid "The following stock items will be uninstalled"
msgstr ""
-#: stock/templates/stock/stockitem_convert.html:7 stock/views.py:879
+#: stock/templates/stock/stockitem_convert.html:7 stock/views.py:730
msgid "Convert Stock Item"
msgstr ""
@@ -6268,11 +6316,11 @@ msgstr ""
msgid "Are you sure you want to delete this stock tracking entry?"
msgstr ""
-#: stock/views.py:162 templates/js/translated/stock.js:139
+#: stock/views.py:162 templates/js/translated/stock.js:140
msgid "Edit Stock Location"
msgstr "编辑仓储地点"
-#: stock/views.py:269 stock/views.py:858 stock/views.py:984 stock/views.py:1266
+#: stock/views.py:269 stock/views.py:709 stock/views.py:835 stock/views.py:1117
msgid "Owner is required (ownership control is enabled)"
msgstr ""
@@ -6300,59 +6348,63 @@ msgstr ""
msgid "Confirm test data deletion"
msgstr ""
+#: stock/views.py:352
+msgid "Check the confirmation box"
+msgstr "选中确认框"
+
#: stock/views.py:456
msgid "Stock Item QR Code"
msgstr ""
-#: stock/views.py:630
+#: stock/views.py:481
msgid "Uninstall Stock Items"
msgstr ""
-#: stock/views.py:727 templates/js/translated/stock.js:1074
+#: stock/views.py:578 templates/js/translated/stock.js:1075
msgid "Confirm stock adjustment"
msgstr ""
-#: stock/views.py:738
+#: stock/views.py:589
msgid "Uninstalled stock items"
msgstr ""
-#: stock/views.py:760 templates/js/translated/stock.js:332
+#: stock/views.py:611 templates/js/translated/stock.js:333
msgid "Edit Stock Item"
msgstr ""
-#: stock/views.py:910
+#: stock/views.py:761
msgid "Create new Stock Location"
msgstr "新建仓储地点"
-#: stock/views.py:1011
+#: stock/views.py:862
msgid "Create new Stock Item"
msgstr ""
-#: stock/views.py:1153 templates/js/translated/stock.js:312
+#: stock/views.py:1004 templates/js/translated/stock.js:313
msgid "Duplicate Stock Item"
msgstr ""
-#: stock/views.py:1235
+#: stock/views.py:1086
msgid "Quantity cannot be negative"
msgstr ""
-#: stock/views.py:1335
+#: stock/views.py:1186
msgid "Delete Stock Location"
msgstr "删除仓储地点"
-#: stock/views.py:1348
+#: stock/views.py:1199
msgid "Delete Stock Item"
msgstr ""
-#: stock/views.py:1359
+#: stock/views.py:1210
msgid "Delete Stock Tracking Entry"
msgstr ""
-#: stock/views.py:1366
+#: stock/views.py:1217
msgid "Edit Stock Tracking Entry"
msgstr ""
-#: stock/views.py:1375
+#: stock/views.py:1226
msgid "Add Stock Tracking Entry"
msgstr ""
@@ -6527,15 +6579,15 @@ msgstr ""
msgid "Part Settings"
msgstr "商品设置"
-#: templates/InvenTree/settings/part.html:43
+#: templates/InvenTree/settings/part.html:44
msgid "Part Import"
msgstr "商品导入"
-#: templates/InvenTree/settings/part.html:47
+#: templates/InvenTree/settings/part.html:48
msgid "Import Part"
msgstr "导入商品"
-#: templates/InvenTree/settings/part.html:61
+#: templates/InvenTree/settings/part.html:62
msgid "Part Parameter Templates"
msgstr "商品参数模板"
@@ -6663,45 +6715,45 @@ msgstr "采购订单设置"
msgid "Report Settings"
msgstr "报表设置"
-#: templates/InvenTree/settings/setting.html:30
+#: templates/InvenTree/settings/setting.html:33
msgid "No value set"
msgstr "未设置值"
-#: templates/InvenTree/settings/setting.html:41
+#: templates/InvenTree/settings/setting.html:38
msgid "Edit setting"
msgstr "编辑设置"
-#: templates/InvenTree/settings/settings.html:78
+#: templates/InvenTree/settings/settings.html:115
msgid "Edit Plugin Setting"
msgstr ""
-#: templates/InvenTree/settings/settings.html:80
+#: templates/InvenTree/settings/settings.html:117
msgid "Edit Global Setting"
msgstr ""
-#: templates/InvenTree/settings/settings.html:82
+#: templates/InvenTree/settings/settings.html:119
msgid "Edit User Setting"
msgstr ""
-#: templates/InvenTree/settings/settings.html:171
+#: templates/InvenTree/settings/settings.html:208
msgid "No category parameter templates found"
msgstr "未找到类别参数模板"
-#: templates/InvenTree/settings/settings.html:193
-#: templates/InvenTree/settings/settings.html:292
+#: templates/InvenTree/settings/settings.html:230
+#: templates/InvenTree/settings/settings.html:329
msgid "Edit Template"
msgstr "编辑模板"
-#: templates/InvenTree/settings/settings.html:194
-#: templates/InvenTree/settings/settings.html:293
+#: templates/InvenTree/settings/settings.html:231
+#: templates/InvenTree/settings/settings.html:330
msgid "Delete Template"
msgstr "删除模板"
-#: templates/InvenTree/settings/settings.html:272
+#: templates/InvenTree/settings/settings.html:309
msgid "No part parameter templates found"
msgstr "未找到商品参数模板"
-#: templates/InvenTree/settings/settings.html:276
+#: templates/InvenTree/settings/settings.html:313
msgid "ID"
msgstr ""
@@ -6981,7 +7033,7 @@ 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."
-msgstr "InventTree web 应用程序的本地语言翻译是 社区通过crowdin贡献。欢迎并鼓励提交信息。"
+msgstr ""
#: templates/InvenTree/settings/user_homepage.html:9
msgid "Home Page Settings"
@@ -6996,10 +7048,11 @@ msgid "InvenTree Version Information"
msgstr ""
#: templates/about.html:11 templates/about.html:105
-#: templates/js/translated/bom.js:407 templates/js/translated/modals.js:53
-#: templates/js/translated/modals.js:584 templates/js/translated/modals.js:678
-#: templates/js/translated/modals.js:983 templates/modals.html:15
-#: templates/modals.html:27 templates/modals.html:39 templates/modals.html:50
+#: templates/js/translated/bom.js:132 templates/js/translated/bom.js:620
+#: templates/js/translated/modals.js:53 templates/js/translated/modals.js:584
+#: templates/js/translated/modals.js:678 templates/js/translated/modals.js:986
+#: templates/modals.html:15 templates/modals.html:27 templates/modals.html:39
+#: templates/modals.html:50
msgid "Close"
msgstr ""
@@ -7275,14 +7328,14 @@ msgid "The following parts are low on required stock"
msgstr ""
#: templates/email/build_order_required_stock.html:18
-#: templates/js/translated/bom.js:1117
+#: templates/js/translated/bom.js:1335
msgid "Required Quantity"
msgstr ""
#: templates/email/build_order_required_stock.html:19
#: templates/email/low_stock_notification.html:18
-#: templates/js/translated/bom.js:591 templates/js/translated/build.js:1189
-#: templates/js/translated/build.js:1810
+#: templates/js/translated/bom.js:804 templates/js/translated/build.js:1411
+#: templates/js/translated/build.js:2048
#: templates/js/translated/table_filters.js:178
msgid "Available"
msgstr "空闲"
@@ -7325,11 +7378,11 @@ msgstr ""
msgid "Remote image must not exceed maximum allowable file size"
msgstr ""
-#: templates/js/translated/api.js:185 templates/js/translated/modals.js:1053
+#: templates/js/translated/api.js:185 templates/js/translated/modals.js:1056
msgid "No Response"
msgstr ""
-#: templates/js/translated/api.js:186 templates/js/translated/modals.js:1054
+#: templates/js/translated/api.js:186 templates/js/translated/modals.js:1057
msgid "No response from the InvenTree server"
msgstr ""
@@ -7341,27 +7394,27 @@ msgstr ""
msgid "API request returned error code 400"
msgstr ""
-#: templates/js/translated/api.js:197 templates/js/translated/modals.js:1063
+#: templates/js/translated/api.js:197 templates/js/translated/modals.js:1066
msgid "Error 401: Not Authenticated"
msgstr ""
-#: templates/js/translated/api.js:198 templates/js/translated/modals.js:1064
+#: templates/js/translated/api.js:198 templates/js/translated/modals.js:1067
msgid "Authentication credentials not supplied"
msgstr ""
-#: templates/js/translated/api.js:202 templates/js/translated/modals.js:1068
+#: templates/js/translated/api.js:202 templates/js/translated/modals.js:1071
msgid "Error 403: Permission Denied"
msgstr ""
-#: templates/js/translated/api.js:203 templates/js/translated/modals.js:1069
+#: templates/js/translated/api.js:203 templates/js/translated/modals.js:1072
msgid "You do not have the required permissions to access this function"
msgstr ""
-#: templates/js/translated/api.js:207 templates/js/translated/modals.js:1073
+#: templates/js/translated/api.js:207 templates/js/translated/modals.js:1076
msgid "Error 404: Resource Not Found"
msgstr ""
-#: templates/js/translated/api.js:208 templates/js/translated/modals.js:1074
+#: templates/js/translated/api.js:208 templates/js/translated/modals.js:1077
msgid "The requested resource could not be located on the server"
msgstr ""
@@ -7373,11 +7426,11 @@ msgstr ""
msgid "HTTP method not allowed at URL"
msgstr ""
-#: templates/js/translated/api.js:217 templates/js/translated/modals.js:1078
+#: templates/js/translated/api.js:217 templates/js/translated/modals.js:1081
msgid "Error 408: Timeout"
msgstr ""
-#: templates/js/translated/api.js:218 templates/js/translated/modals.js:1079
+#: templates/js/translated/api.js:218 templates/js/translated/modals.js:1082
msgid "Connection timeout while requesting data from server"
msgstr ""
@@ -7446,7 +7499,7 @@ msgid "Unknown response from server"
msgstr ""
#: templates/js/translated/barcode.js:140
-#: templates/js/translated/modals.js:1043
+#: templates/js/translated/modals.js:1046
msgid "Invalid server response"
msgstr ""
@@ -7474,7 +7527,7 @@ msgstr ""
msgid "Unlink"
msgstr ""
-#: templates/js/translated/barcode.js:397 templates/js/translated/stock.js:1026
+#: templates/js/translated/barcode.js:397 templates/js/translated/stock.js:1027
msgid "Remove stock item"
msgstr ""
@@ -7516,327 +7569,369 @@ msgstr ""
msgid "Barcode does not match a valid location"
msgstr ""
-#: templates/js/translated/bom.js:36
+#: templates/js/translated/bom.js:75
+msgid "Display row data"
+msgstr ""
+
+#: templates/js/translated/bom.js:131
+msgid "Row Data"
+msgstr ""
+
+#: templates/js/translated/bom.js:249
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:518
+#: templates/js/translated/bom.js:252 templates/js/translated/bom.js:286
+#: templates/js/translated/order.js:369 templates/js/translated/stock.js:519
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:519
+#: templates/js/translated/bom.js:253 templates/js/translated/bom.js:287
+#: templates/js/translated/order.js:370 templates/js/translated/stock.js:520
msgid "Select file format"
msgstr ""
-#: templates/js/translated/bom.js:81
+#: templates/js/translated/bom.js:294
msgid "Cascading"
msgstr ""
-#: templates/js/translated/bom.js:82
+#: templates/js/translated/bom.js:295
msgid "Download cascading / multi-level BOM"
msgstr ""
-#: templates/js/translated/bom.js:87
+#: templates/js/translated/bom.js:300
msgid "Levels"
msgstr "等级"
-#: templates/js/translated/bom.js:88
+#: templates/js/translated/bom.js:301
msgid "Select maximum number of BOM levels to export (0 = all levels)"
msgstr ""
-#: templates/js/translated/bom.js:94
+#: templates/js/translated/bom.js:307
msgid "Include Parameter Data"
msgstr "包含参数数据"
-#: templates/js/translated/bom.js:95
+#: templates/js/translated/bom.js:308
msgid "Include part parameter data in exported BOM"
msgstr ""
-#: templates/js/translated/bom.js:100
+#: templates/js/translated/bom.js:313
msgid "Include Stock Data"
msgstr "包括库存数据"
-#: templates/js/translated/bom.js:101
+#: templates/js/translated/bom.js:314
msgid "Include part stock data in exported BOM"
msgstr "在导出 BOM 中包括库存数据"
-#: templates/js/translated/bom.js:106
+#: templates/js/translated/bom.js:319
msgid "Include Manufacturer Data"
msgstr "包括制造商数据"
-#: templates/js/translated/bom.js:107
+#: templates/js/translated/bom.js:320
msgid "Include part manufacturer data in exported BOM"
msgstr "在导出 BOM 中包含制造商数据"
-#: templates/js/translated/bom.js:112
+#: templates/js/translated/bom.js:325
msgid "Include Supplier Data"
msgstr "包含供应商数据"
-#: templates/js/translated/bom.js:113
+#: templates/js/translated/bom.js:326
msgid "Include part supplier data in exported BOM"
msgstr "在导出 BOM 中包含供应商数据"
-#: templates/js/translated/bom.js:296
+#: templates/js/translated/bom.js:509
msgid "Remove substitute part"
msgstr ""
-#: templates/js/translated/bom.js:352
+#: templates/js/translated/bom.js:565
msgid "Select and add a new substitute part using the input below"
msgstr ""
-#: templates/js/translated/bom.js:363
+#: templates/js/translated/bom.js:576
msgid "Are you sure you wish to remove this substitute part link?"
msgstr ""
-#: templates/js/translated/bom.js:369
+#: templates/js/translated/bom.js:582
msgid "Remove Substitute Part"
msgstr ""
-#: templates/js/translated/bom.js:408
+#: templates/js/translated/bom.js:621
msgid "Add Substitute"
msgstr ""
-#: templates/js/translated/bom.js:409
+#: templates/js/translated/bom.js:622
msgid "Edit BOM Item Substitutes"
msgstr ""
-#: templates/js/translated/bom.js:528
+#: templates/js/translated/bom.js:741
msgid "Substitutes Available"
msgstr ""
-#: templates/js/translated/bom.js:532 templates/js/translated/build.js:1171
+#: templates/js/translated/bom.js:745 templates/js/translated/build.js:1393
msgid "Variant stock allowed"
msgstr ""
-#: templates/js/translated/bom.js:537
+#: templates/js/translated/bom.js:750
msgid "Open subassembly"
msgstr ""
-#: templates/js/translated/bom.js:609
+#: templates/js/translated/bom.js:822
msgid "Substitutes"
msgstr ""
-#: templates/js/translated/bom.js:624
+#: templates/js/translated/bom.js:837
msgid "Purchase Price Range"
msgstr ""
-#: templates/js/translated/bom.js:631
+#: templates/js/translated/bom.js:844
msgid "Purchase Price Average"
msgstr ""
-#: templates/js/translated/bom.js:680 templates/js/translated/bom.js:769
+#: templates/js/translated/bom.js:893 templates/js/translated/bom.js:982
msgid "View BOM"
msgstr ""
-#: templates/js/translated/bom.js:740
+#: templates/js/translated/bom.js:953
msgid "Validate BOM Item"
msgstr ""
-#: templates/js/translated/bom.js:742
+#: templates/js/translated/bom.js:955
msgid "This line has been validated"
msgstr ""
-#: templates/js/translated/bom.js:744
+#: templates/js/translated/bom.js:957
msgid "Edit substitute parts"
msgstr ""
-#: templates/js/translated/bom.js:746 templates/js/translated/bom.js:920
+#: templates/js/translated/bom.js:959 templates/js/translated/bom.js:1138
msgid "Edit BOM Item"
msgstr ""
-#: templates/js/translated/bom.js:748 templates/js/translated/bom.js:903
+#: templates/js/translated/bom.js:961 templates/js/translated/bom.js:1121
msgid "Delete BOM Item"
msgstr ""
-#: templates/js/translated/bom.js:842 templates/js/translated/build.js:915
+#: templates/js/translated/bom.js:1060 templates/js/translated/build.js:1137
msgid "No BOM items found"
msgstr ""
-#: templates/js/translated/bom.js:898
+#: templates/js/translated/bom.js:1116
msgid "Are you sure you want to delete this BOM item?"
msgstr ""
-#: templates/js/translated/bom.js:1100 templates/js/translated/build.js:1155
+#: templates/js/translated/bom.js:1318 templates/js/translated/build.js:1377
msgid "Required Part"
msgstr ""
-#: templates/js/translated/bom.js:1122
+#: templates/js/translated/bom.js:1340
msgid "Inherited from parent BOM"
msgstr ""
-#: templates/js/translated/build.js:84
+#: templates/js/translated/build.js:85
msgid "Edit Build Order"
msgstr ""
-#: templates/js/translated/build.js:118
+#: templates/js/translated/build.js:119
msgid "Create Build Order"
msgstr ""
-#: templates/js/translated/build.js:139
+#: templates/js/translated/build.js:140
msgid "Build order is ready to be completed"
msgstr ""
-#: templates/js/translated/build.js:144
+#: templates/js/translated/build.js:145
msgid "Build Order is incomplete"
msgstr "生产订单未完成"
-#: templates/js/translated/build.js:172
+#: templates/js/translated/build.js:173
msgid "Complete Build Order"
msgstr "生产订单完成"
-#: templates/js/translated/build.js:193
+#: templates/js/translated/build.js:214 templates/js/translated/stock.js:93
+#: templates/js/translated/stock.js:182
+msgid "Next available serial number"
+msgstr ""
+
+#: templates/js/translated/build.js:216 templates/js/translated/stock.js:95
+#: templates/js/translated/stock.js:184
+msgid "Latest serial number"
+msgstr ""
+
+#: templates/js/translated/build.js:225
+msgid "The Bill of Materials contains trackable parts"
+msgstr ""
+
+#: templates/js/translated/build.js:226
+msgid "Build outputs must be generated individually"
+msgstr ""
+
+#: templates/js/translated/build.js:234
+msgid "Trackable parts can have serial numbers specified"
+msgstr "可追踪商品可以指定序列号"
+
+#: templates/js/translated/build.js:235
+msgid "Enter serial numbers to generate multiple single build outputs"
+msgstr ""
+
+#: templates/js/translated/build.js:242
+msgid "Create Build Output"
+msgstr "创建创建生产产出"
+
+#: templates/js/translated/build.js:273
msgid "Allocate stock items to this build output"
msgstr ""
-#: templates/js/translated/build.js:204
+#: templates/js/translated/build.js:284
msgid "Unallocate stock from build output"
msgstr ""
-#: templates/js/translated/build.js:213
+#: templates/js/translated/build.js:293
msgid "Complete build output"
msgstr ""
-#: templates/js/translated/build.js:221
+#: templates/js/translated/build.js:301
msgid "Delete build output"
msgstr ""
-#: templates/js/translated/build.js:244
+#: templates/js/translated/build.js:324
msgid "Are you sure you wish to unallocate stock items from this build?"
msgstr ""
-#: templates/js/translated/build.js:262
+#: templates/js/translated/build.js:342
msgid "Unallocate Stock Items"
msgstr ""
-#: templates/js/translated/build.js:280
+#: templates/js/translated/build.js:360 templates/js/translated/build.js:508
msgid "Select Build Outputs"
msgstr ""
-#: templates/js/translated/build.js:281
+#: templates/js/translated/build.js:361 templates/js/translated/build.js:509
msgid "At least one build output must be selected"
msgstr ""
-#: templates/js/translated/build.js:335
+#: templates/js/translated/build.js:415 templates/js/translated/build.js:563
msgid "Output"
msgstr ""
-#: templates/js/translated/build.js:351
+#: templates/js/translated/build.js:431
msgid "Complete Build Outputs"
msgstr ""
-#: templates/js/translated/build.js:446
+#: templates/js/translated/build.js:576
+msgid "Delete Build Outputs"
+msgstr ""
+
+#: templates/js/translated/build.js:665
msgid "No build order allocations found"
msgstr ""
-#: templates/js/translated/build.js:484 templates/js/translated/order.js:1848
+#: templates/js/translated/build.js:703 templates/js/translated/order.js:1848
msgid "Location not specified"
msgstr "未指定仓储地点"
-#: templates/js/translated/build.js:663
+#: templates/js/translated/build.js:885
msgid "No active build outputs found"
msgstr ""
-#: templates/js/translated/build.js:1112 templates/js/translated/build.js:1821
+#: templates/js/translated/build.js:1334 templates/js/translated/build.js:2059
#: templates/js/translated/order.js:1982
msgid "Edit stock allocation"
msgstr ""
-#: templates/js/translated/build.js:1114 templates/js/translated/build.js:1822
+#: templates/js/translated/build.js:1336 templates/js/translated/build.js:2060
#: templates/js/translated/order.js:1983
msgid "Delete stock allocation"
msgstr ""
-#: templates/js/translated/build.js:1132
+#: templates/js/translated/build.js:1354
msgid "Edit Allocation"
msgstr ""
-#: templates/js/translated/build.js:1142
+#: templates/js/translated/build.js:1364
msgid "Remove Allocation"
msgstr ""
-#: templates/js/translated/build.js:1167
+#: templates/js/translated/build.js:1389
msgid "Substitute parts available"
msgstr ""
-#: templates/js/translated/build.js:1184
+#: templates/js/translated/build.js:1406
msgid "Quantity Per"
msgstr ""
-#: templates/js/translated/build.js:1194 templates/js/translated/build.js:1420
-#: templates/js/translated/build.js:1817 templates/js/translated/order.js:2227
+#: templates/js/translated/build.js:1416 templates/js/translated/build.js:1656
+#: templates/js/translated/build.js:2055 templates/js/translated/order.js:2227
msgid "Allocated"
msgstr ""
-#: templates/js/translated/build.js:1250 templates/js/translated/order.js:2307
+#: templates/js/translated/build.js:1472 templates/js/translated/order.js:2307
msgid "Build stock"
msgstr ""
-#: templates/js/translated/build.js:1254 templates/stock_table.html:53
+#: templates/js/translated/build.js:1476 templates/stock_table.html:53
msgid "Order stock"
msgstr ""
-#: templates/js/translated/build.js:1257 templates/js/translated/order.js:2300
+#: templates/js/translated/build.js:1479 templates/js/translated/order.js:2300
msgid "Allocate stock"
msgstr ""
-#: templates/js/translated/build.js:1322 templates/js/translated/order.js:1499
+#: templates/js/translated/build.js:1558 templates/js/translated/order.js:1499
msgid "Specify stock allocation quantity"
msgstr ""
-#: templates/js/translated/build.js:1393 templates/js/translated/label.js:134
+#: templates/js/translated/build.js:1629 templates/js/translated/label.js:134
#: templates/js/translated/order.js:1550 templates/js/translated/report.js:225
msgid "Select Parts"
msgstr "选择商品"
-#: templates/js/translated/build.js:1394 templates/js/translated/order.js:1551
+#: templates/js/translated/build.js:1630 templates/js/translated/order.js:1551
msgid "You must select at least one part to allocate"
msgstr ""
-#: templates/js/translated/build.js:1408 templates/js/translated/order.js:1565
+#: templates/js/translated/build.js:1644 templates/js/translated/order.js:1565
msgid "Select source location (leave blank to take from all locations)"
msgstr ""
-#: templates/js/translated/build.js:1437 templates/js/translated/order.js:1600
+#: templates/js/translated/build.js:1673 templates/js/translated/order.js:1600
msgid "Confirm stock allocation"
msgstr "确认库存分配"
-#: templates/js/translated/build.js:1438
+#: templates/js/translated/build.js:1674
msgid "Allocate Stock Items to Build Order"
msgstr ""
-#: templates/js/translated/build.js:1449 templates/js/translated/order.js:1613
+#: templates/js/translated/build.js:1685 templates/js/translated/order.js:1613
msgid "No matching stock locations"
msgstr ""
-#: templates/js/translated/build.js:1519 templates/js/translated/order.js:1690
+#: templates/js/translated/build.js:1757 templates/js/translated/order.js:1690
msgid "No matching stock items"
msgstr ""
-#: templates/js/translated/build.js:1637
+#: templates/js/translated/build.js:1875
msgid "No builds matching query"
msgstr ""
-#: templates/js/translated/build.js:1654 templates/js/translated/part.js:1213
-#: templates/js/translated/part.js:1624 templates/js/translated/stock.js:1520
-#: templates/js/translated/stock.js:2479
+#: templates/js/translated/build.js:1892 templates/js/translated/part.js:1213
+#: templates/js/translated/part.js:1624 templates/js/translated/stock.js:1644
+#: templates/js/translated/stock.js:2603
msgid "Select"
msgstr ""
-#: templates/js/translated/build.js:1674
+#: templates/js/translated/build.js:1912
msgid "Build order is overdue"
msgstr ""
-#: templates/js/translated/build.js:1735 templates/js/translated/stock.js:2698
+#: templates/js/translated/build.js:1973 templates/js/translated/stock.js:2822
msgid "No user information"
msgstr "没有用户信息"
-#: templates/js/translated/build.js:1747
+#: templates/js/translated/build.js:1985
msgid "No information"
msgstr ""
-#: templates/js/translated/build.js:1798
+#: templates/js/translated/build.js:2036
msgid "No parts allocated for"
msgstr ""
@@ -7966,48 +8061,60 @@ msgstr ""
msgid "Create filter"
msgstr ""
-#: templates/js/translated/forms.js:350 templates/js/translated/forms.js:365
-#: templates/js/translated/forms.js:379 templates/js/translated/forms.js:393
+#: templates/js/translated/forms.js:351 templates/js/translated/forms.js:366
+#: templates/js/translated/forms.js:380 templates/js/translated/forms.js:394
msgid "Action Prohibited"
msgstr ""
-#: templates/js/translated/forms.js:352
+#: templates/js/translated/forms.js:353
msgid "Create operation not allowed"
msgstr ""
-#: templates/js/translated/forms.js:367
+#: templates/js/translated/forms.js:368
msgid "Update operation not allowed"
msgstr ""
-#: templates/js/translated/forms.js:381
+#: templates/js/translated/forms.js:382
msgid "Delete operation not allowed"
msgstr ""
-#: templates/js/translated/forms.js:395
+#: templates/js/translated/forms.js:396
msgid "View operation not allowed"
msgstr ""
-#: templates/js/translated/forms.js:680
+#: templates/js/translated/forms.js:681
msgid "Enter a valid number"
msgstr ""
-#: templates/js/translated/forms.js:1082 templates/modals.html:19
+#: templates/js/translated/forms.js:1129 templates/modals.html:19
#: templates/modals.html:43
msgid "Form errors exist"
msgstr ""
-#: templates/js/translated/forms.js:1487
+#: templates/js/translated/forms.js:1558
msgid "No results found"
msgstr ""
-#: templates/js/translated/forms.js:1691
+#: templates/js/translated/forms.js:1768
msgid "Searching"
msgstr ""
-#: templates/js/translated/forms.js:1930
+#: templates/js/translated/forms.js:2013
msgid "Clear input"
msgstr ""
+#: templates/js/translated/forms.js:2479
+msgid "File Column"
+msgstr ""
+
+#: templates/js/translated/forms.js:2479
+msgid "Field Name"
+msgstr ""
+
+#: templates/js/translated/forms.js:2491
+msgid "Select Columns"
+msgstr ""
+
#: templates/js/translated/helpers.js:19
msgid "YES"
msgstr ""
@@ -8017,7 +8124,7 @@ msgid "NO"
msgstr ""
#: templates/js/translated/label.js:29 templates/js/translated/report.js:118
-#: templates/js/translated/stock.js:1050
+#: templates/js/translated/stock.js:1051
msgid "Select Stock Items"
msgstr "选择库存项"
@@ -8072,7 +8179,7 @@ msgid "Cancel"
msgstr "取消"
#: templates/js/translated/modals.js:77 templates/js/translated/modals.js:119
-#: templates/js/translated/modals.js:677 templates/js/translated/modals.js:982
+#: templates/js/translated/modals.js:677 templates/js/translated/modals.js:985
#: templates/modals.html:28 templates/modals.html:51
msgid "Submit"
msgstr ""
@@ -8097,31 +8204,31 @@ msgstr ""
msgid "Loading Data"
msgstr ""
-#: templates/js/translated/modals.js:934
+#: templates/js/translated/modals.js:937
msgid "Invalid response from server"
msgstr ""
-#: templates/js/translated/modals.js:934
+#: templates/js/translated/modals.js:937
msgid "Form data missing from server response"
msgstr ""
-#: templates/js/translated/modals.js:946
+#: templates/js/translated/modals.js:949
msgid "Error posting form data"
msgstr ""
-#: templates/js/translated/modals.js:1043
+#: templates/js/translated/modals.js:1046
msgid "JSON response missing form data"
msgstr ""
-#: templates/js/translated/modals.js:1058
+#: templates/js/translated/modals.js:1061
msgid "Error 400: Bad Request"
msgstr ""
-#: templates/js/translated/modals.js:1059
+#: templates/js/translated/modals.js:1062
msgid "Server returned error code 400"
msgstr ""
-#: templates/js/translated/modals.js:1082
+#: templates/js/translated/modals.js:1085
msgid "Error requesting form data"
msgstr ""
@@ -8141,10 +8248,6 @@ msgstr ""
msgid "Build ID"
msgstr ""
-#: templates/js/translated/model_renderers.js:182
-msgid "Part ID"
-msgstr "商品ID"
-
#: templates/js/translated/model_renderers.js:249
#: templates/js/translated/model_renderers.js:270
msgid "Order ID"
@@ -8210,7 +8313,7 @@ msgstr ""
msgid "Quantity to receive"
msgstr ""
-#: templates/js/translated/order.js:520 templates/js/translated/stock.js:2131
+#: templates/js/translated/order.js:520 templates/js/translated/stock.js:2255
msgid "Stock Status"
msgstr ""
@@ -8344,7 +8447,7 @@ msgid "Delete Stock Allocation"
msgstr ""
#: templates/js/translated/order.js:1959 templates/js/translated/order.js:2048
-#: templates/js/translated/stock.js:1436
+#: templates/js/translated/stock.js:1560
msgid "Shipped to customer"
msgstr ""
@@ -8545,12 +8648,12 @@ msgid "No category"
msgstr "没有分类"
#: templates/js/translated/part.js:1296
-#: templates/js/translated/table_filters.js:430
+#: templates/js/translated/table_filters.js:425
msgid "Low stock"
msgstr ""
#: templates/js/translated/part.js:1387 templates/js/translated/part.js:1559
-#: templates/js/translated/stock.js:2440
+#: templates/js/translated/stock.js:2564
msgid "Display as list"
msgstr ""
@@ -8558,7 +8661,7 @@ msgstr ""
msgid "Display as grid"
msgstr ""
-#: templates/js/translated/part.js:1578 templates/js/translated/stock.js:2459
+#: templates/js/translated/part.js:1578 templates/js/translated/stock.js:2583
msgid "Display as tree"
msgstr ""
@@ -8566,7 +8669,7 @@ msgstr ""
msgid "Subscribed category"
msgstr ""
-#: templates/js/translated/part.js:1656 templates/js/translated/stock.js:2503
+#: templates/js/translated/part.js:1656 templates/js/translated/stock.js:2627
msgid "Path"
msgstr ""
@@ -8574,11 +8677,12 @@ msgstr ""
msgid "No test templates matching query"
msgstr ""
-#: templates/js/translated/part.js:1751 templates/js/translated/stock.js:1242
+#: templates/js/translated/part.js:1751 templates/js/translated/stock.js:1271
msgid "Edit test result"
msgstr ""
-#: templates/js/translated/part.js:1752 templates/js/translated/stock.js:1243
+#: templates/js/translated/part.js:1752 templates/js/translated/stock.js:1272
+#: templates/js/translated/stock.js:1518
msgid "Delete test result"
msgstr ""
@@ -8687,347 +8791,375 @@ msgstr ""
msgid "Sales Order(s) must be selected before printing report"
msgstr ""
-#: templates/js/translated/stock.js:74
+#: templates/js/translated/stock.js:75
msgid "Serialize Stock Item"
msgstr ""
-#: templates/js/translated/stock.js:92 templates/js/translated/stock.js:181
-msgid "Next available serial number"
-msgstr ""
-
-#: templates/js/translated/stock.js:94 templates/js/translated/stock.js:183
-msgid "Latest serial number"
-msgstr ""
-
-#: templates/js/translated/stock.js:102
+#: templates/js/translated/stock.js:103
msgid "Confirm Stock Serialization"
msgstr ""
-#: templates/js/translated/stock.js:111
+#: templates/js/translated/stock.js:112
msgid "Parent stock location"
msgstr ""
-#: templates/js/translated/stock.js:154
+#: templates/js/translated/stock.js:155
msgid "New Stock Location"
msgstr ""
-#: templates/js/translated/stock.js:194
+#: templates/js/translated/stock.js:195
msgid "This part cannot be serialized"
msgstr ""
-#: templates/js/translated/stock.js:233
+#: templates/js/translated/stock.js:234
msgid "Enter initial quantity for this stock item"
msgstr ""
-#: templates/js/translated/stock.js:239
+#: templates/js/translated/stock.js:240
msgid "Enter serial numbers for new stock (or leave blank)"
msgstr ""
-#: templates/js/translated/stock.js:382
+#: templates/js/translated/stock.js:383
msgid "Created new stock item"
msgstr ""
-#: templates/js/translated/stock.js:395
+#: templates/js/translated/stock.js:396
msgid "Created multiple stock items"
msgstr ""
-#: templates/js/translated/stock.js:420
+#: templates/js/translated/stock.js:421
msgid "Find Serial Number"
msgstr ""
-#: templates/js/translated/stock.js:424 templates/js/translated/stock.js:425
+#: templates/js/translated/stock.js:425 templates/js/translated/stock.js:426
msgid "Enter serial number"
msgstr ""
-#: templates/js/translated/stock.js:441
+#: templates/js/translated/stock.js:442
msgid "Enter a serial number"
msgstr ""
-#: templates/js/translated/stock.js:461
+#: templates/js/translated/stock.js:462
msgid "No matching serial number"
msgstr ""
-#: templates/js/translated/stock.js:470
+#: templates/js/translated/stock.js:471
msgid "More than one matching result found"
msgstr ""
-#: templates/js/translated/stock.js:515
+#: templates/js/translated/stock.js:516
msgid "Export Stock"
msgstr ""
-#: templates/js/translated/stock.js:526
+#: templates/js/translated/stock.js:527
msgid "Include Sublocations"
msgstr ""
-#: templates/js/translated/stock.js:527
+#: templates/js/translated/stock.js:528
msgid "Include stock items in sublocations"
msgstr ""
-#: templates/js/translated/stock.js:636
+#: templates/js/translated/stock.js:637
msgid "Confirm stock assignment"
msgstr ""
-#: templates/js/translated/stock.js:637
+#: templates/js/translated/stock.js:638
msgid "Assign Stock to Customer"
msgstr ""
-#: templates/js/translated/stock.js:714
+#: templates/js/translated/stock.js:715
msgid "Warning: Merge operation cannot be reversed"
msgstr ""
-#: templates/js/translated/stock.js:715
+#: templates/js/translated/stock.js:716
msgid "Some information will be lost when merging stock items"
msgstr ""
-#: templates/js/translated/stock.js:717
+#: templates/js/translated/stock.js:718
msgid "Stock transaction history will be deleted for merged items"
msgstr ""
-#: templates/js/translated/stock.js:718
+#: templates/js/translated/stock.js:719
msgid "Supplier part information will be deleted for merged items"
msgstr ""
-#: templates/js/translated/stock.js:804
+#: templates/js/translated/stock.js:805
msgid "Confirm stock item merge"
msgstr ""
-#: templates/js/translated/stock.js:805
+#: templates/js/translated/stock.js:806
msgid "Merge Stock Items"
msgstr ""
-#: templates/js/translated/stock.js:900
+#: templates/js/translated/stock.js:901
msgid "Transfer Stock"
msgstr ""
-#: templates/js/translated/stock.js:901
+#: templates/js/translated/stock.js:902
msgid "Move"
msgstr ""
-#: templates/js/translated/stock.js:907
+#: templates/js/translated/stock.js:908
msgid "Count Stock"
msgstr ""
-#: templates/js/translated/stock.js:908
+#: templates/js/translated/stock.js:909
msgid "Count"
msgstr ""
-#: templates/js/translated/stock.js:912
+#: templates/js/translated/stock.js:913
msgid "Remove Stock"
msgstr ""
-#: templates/js/translated/stock.js:913
+#: templates/js/translated/stock.js:914
msgid "Take"
msgstr ""
-#: templates/js/translated/stock.js:917
+#: templates/js/translated/stock.js:918
msgid "Add Stock"
msgstr ""
-#: templates/js/translated/stock.js:918 users/models.py:208
+#: templates/js/translated/stock.js:919 users/models.py:213
msgid "Add"
msgstr "添加"
-#: templates/js/translated/stock.js:922 templates/stock_table.html:58
+#: templates/js/translated/stock.js:923 templates/stock_table.html:58
msgid "Delete Stock"
msgstr ""
-#: templates/js/translated/stock.js:1011
+#: templates/js/translated/stock.js:1012
msgid "Quantity cannot be adjusted for serialized stock"
msgstr ""
-#: templates/js/translated/stock.js:1011
+#: templates/js/translated/stock.js:1012
msgid "Specify stock quantity"
msgstr ""
-#: templates/js/translated/stock.js:1051
+#: templates/js/translated/stock.js:1052
msgid "You must select at least one available stock item"
msgstr ""
-#: templates/js/translated/stock.js:1209
+#: templates/js/translated/stock.js:1210
msgid "PASS"
msgstr ""
-#: templates/js/translated/stock.js:1211
+#: templates/js/translated/stock.js:1212
msgid "FAIL"
msgstr ""
-#: templates/js/translated/stock.js:1216
+#: templates/js/translated/stock.js:1217
msgid "NO RESULT"
msgstr ""
-#: templates/js/translated/stock.js:1238
+#: templates/js/translated/stock.js:1264
+msgid "Pass test"
+msgstr ""
+
+#: templates/js/translated/stock.js:1267
msgid "Add test result"
msgstr ""
-#: templates/js/translated/stock.js:1264
+#: templates/js/translated/stock.js:1293
msgid "No test results found"
msgstr ""
-#: templates/js/translated/stock.js:1321
+#: templates/js/translated/stock.js:1349
msgid "Test Date"
msgstr ""
-#: templates/js/translated/stock.js:1428
+#: templates/js/translated/stock.js:1501
+msgid "Edit Test Result"
+msgstr ""
+
+#: templates/js/translated/stock.js:1523
+msgid "Delete Test Result"
+msgstr ""
+
+#: templates/js/translated/stock.js:1552
msgid "In production"
msgstr "正在生产"
-#: templates/js/translated/stock.js:1432
+#: templates/js/translated/stock.js:1556
msgid "Installed in Stock Item"
msgstr ""
-#: templates/js/translated/stock.js:1440
+#: templates/js/translated/stock.js:1564
msgid "Assigned to Sales Order"
msgstr ""
-#: templates/js/translated/stock.js:1446
+#: templates/js/translated/stock.js:1570
msgid "No stock location set"
msgstr "未设置仓储地点"
-#: templates/js/translated/stock.js:1604
+#: templates/js/translated/stock.js:1728
msgid "Stock item is in production"
msgstr "库存品正在生产"
-#: templates/js/translated/stock.js:1609
+#: templates/js/translated/stock.js:1733
msgid "Stock item assigned to sales order"
msgstr ""
-#: templates/js/translated/stock.js:1612
+#: templates/js/translated/stock.js:1736
msgid "Stock item assigned to customer"
msgstr ""
-#: templates/js/translated/stock.js:1616
+#: templates/js/translated/stock.js:1740
msgid "Stock item has expired"
msgstr ""
-#: templates/js/translated/stock.js:1618
+#: templates/js/translated/stock.js:1742
msgid "Stock item will expire soon"
msgstr ""
-#: templates/js/translated/stock.js:1624
+#: templates/js/translated/stock.js:1748
msgid "Serialized stock item has been allocated"
msgstr ""
-#: templates/js/translated/stock.js:1626
+#: templates/js/translated/stock.js:1750
msgid "Stock item has been fully allocated"
msgstr ""
-#: templates/js/translated/stock.js:1628
+#: templates/js/translated/stock.js:1752
msgid "Stock item has been partially allocated"
msgstr ""
-#: templates/js/translated/stock.js:1633
+#: templates/js/translated/stock.js:1757
msgid "Stock item has been installed in another item"
msgstr ""
-#: templates/js/translated/stock.js:1640
+#: templates/js/translated/stock.js:1764
msgid "Stock item has been rejected"
msgstr ""
-#: templates/js/translated/stock.js:1642
+#: templates/js/translated/stock.js:1766
msgid "Stock item is lost"
msgstr ""
-#: templates/js/translated/stock.js:1644
+#: templates/js/translated/stock.js:1768
msgid "Stock item is destroyed"
msgstr ""
-#: templates/js/translated/stock.js:1648
+#: templates/js/translated/stock.js:1772
#: templates/js/translated/table_filters.js:188
msgid "Depleted"
msgstr ""
-#: templates/js/translated/stock.js:1698
+#: templates/js/translated/stock.js:1822
msgid "Stocktake"
msgstr ""
-#: templates/js/translated/stock.js:1771
+#: templates/js/translated/stock.js:1895
msgid "Supplier part not specified"
msgstr ""
-#: templates/js/translated/stock.js:1809
+#: templates/js/translated/stock.js:1933
msgid "No stock items matching query"
msgstr ""
-#: templates/js/translated/stock.js:1830 templates/js/translated/stock.js:1878
+#: templates/js/translated/stock.js:1954 templates/js/translated/stock.js:2002
msgid "items"
msgstr ""
-#: templates/js/translated/stock.js:1918
+#: templates/js/translated/stock.js:2042
msgid "batches"
msgstr ""
-#: templates/js/translated/stock.js:1945
+#: templates/js/translated/stock.js:2069
msgid "locations"
msgstr ""
-#: templates/js/translated/stock.js:1947
+#: templates/js/translated/stock.js:2071
msgid "Undefined location"
msgstr ""
-#: templates/js/translated/stock.js:2146
+#: templates/js/translated/stock.js:2270
msgid "Set Stock Status"
msgstr ""
-#: templates/js/translated/stock.js:2160
+#: templates/js/translated/stock.js:2284
msgid "Select Status Code"
msgstr ""
-#: templates/js/translated/stock.js:2161
+#: templates/js/translated/stock.js:2285
msgid "Status code must be selected"
msgstr ""
-#: templates/js/translated/stock.js:2340
+#: templates/js/translated/stock.js:2464
msgid "Allocated Quantity"
msgstr ""
-#: templates/js/translated/stock.js:2535
+#: templates/js/translated/stock.js:2659
msgid "Invalid date"
msgstr ""
-#: templates/js/translated/stock.js:2557
+#: templates/js/translated/stock.js:2681
msgid "Details"
msgstr "详情"
-#: templates/js/translated/stock.js:2582
+#: templates/js/translated/stock.js:2706
msgid "Location no longer exists"
msgstr ""
-#: templates/js/translated/stock.js:2601
+#: templates/js/translated/stock.js:2725
msgid "Purchase order no longer exists"
msgstr ""
-#: templates/js/translated/stock.js:2620
+#: templates/js/translated/stock.js:2744
msgid "Customer no longer exists"
msgstr ""
-#: templates/js/translated/stock.js:2638
+#: templates/js/translated/stock.js:2762
msgid "Stock item no longer exists"
msgstr ""
-#: templates/js/translated/stock.js:2661
+#: templates/js/translated/stock.js:2785
msgid "Added"
msgstr ""
-#: templates/js/translated/stock.js:2669
+#: templates/js/translated/stock.js:2793
msgid "Removed"
msgstr ""
-#: templates/js/translated/stock.js:2710
+#: templates/js/translated/stock.js:2834
msgid "Edit tracking entry"
msgstr ""
-#: templates/js/translated/stock.js:2711
+#: templates/js/translated/stock.js:2835
msgid "Delete tracking entry"
msgstr ""
-#: templates/js/translated/stock.js:2762
+#: templates/js/translated/stock.js:2886
msgid "No installed items"
msgstr ""
-#: templates/js/translated/stock.js:2813
+#: templates/js/translated/stock.js:2937
msgid "Uninstall Stock Item"
msgstr ""
+#: templates/js/translated/stock.js:2973
+msgid "Install another stock item into this item"
+msgstr ""
+
+#: templates/js/translated/stock.js:2974
+msgid "Stock items can only be installed if they meet the following criteria"
+msgstr ""
+
+#: templates/js/translated/stock.js:2976
+msgid "The Stock Item links to a Part which is the BOM for this Stock Item"
+msgstr ""
+
+#: templates/js/translated/stock.js:2977
+msgid "The Stock Item is currently available in stock"
+msgstr ""
+
+#: templates/js/translated/stock.js:2978
+msgid "The Stock Item is serialized and does not belong to another item"
+msgstr ""
+
+#: templates/js/translated/stock.js:2991
+msgid "Select part to install"
+msgstr ""
+
#: templates/js/translated/table_filters.js:56
msgid "Trackable Part"
msgstr "可追溯商品"
@@ -9055,12 +9187,12 @@ msgstr ""
#: templates/js/translated/table_filters.js:121
#: templates/js/translated/table_filters.js:122
-#: templates/js/translated/table_filters.js:407
+#: templates/js/translated/table_filters.js:402
msgid "Include subcategories"
msgstr ""
#: templates/js/translated/table_filters.js:126
-#: templates/js/translated/table_filters.js:442
+#: templates/js/translated/table_filters.js:437
msgid "Subscribed"
msgstr ""
@@ -9102,7 +9234,7 @@ msgid "Batch code"
msgstr ""
#: templates/js/translated/table_filters.js:163
-#: templates/js/translated/table_filters.js:379
+#: templates/js/translated/table_filters.js:374
msgid "Active parts"
msgstr ""
@@ -9187,47 +9319,47 @@ msgstr ""
msgid "Show stock which is close to expiring"
msgstr ""
-#: templates/js/translated/table_filters.js:290
+#: templates/js/translated/table_filters.js:285
msgid "Build status"
msgstr "生产状态"
-#: templates/js/translated/table_filters.js:303
-#: templates/js/translated/table_filters.js:344
+#: templates/js/translated/table_filters.js:298
+#: templates/js/translated/table_filters.js:339
msgid "Assigned to me"
msgstr ""
-#: templates/js/translated/table_filters.js:320
-#: templates/js/translated/table_filters.js:331
-#: templates/js/translated/table_filters.js:352
+#: templates/js/translated/table_filters.js:315
+#: templates/js/translated/table_filters.js:326
+#: templates/js/translated/table_filters.js:347
msgid "Order status"
msgstr ""
-#: templates/js/translated/table_filters.js:336
-#: templates/js/translated/table_filters.js:357
+#: templates/js/translated/table_filters.js:331
+#: templates/js/translated/table_filters.js:352
msgid "Outstanding"
msgstr ""
-#: templates/js/translated/table_filters.js:408
+#: templates/js/translated/table_filters.js:403
msgid "Include parts in subcategories"
msgstr ""
-#: templates/js/translated/table_filters.js:412
+#: templates/js/translated/table_filters.js:407
msgid "Has IPN"
msgstr ""
-#: templates/js/translated/table_filters.js:413
+#: templates/js/translated/table_filters.js:408
msgid "Part has internal part number"
msgstr "商品有内部编号"
-#: templates/js/translated/table_filters.js:418
+#: templates/js/translated/table_filters.js:413
msgid "Show active parts"
msgstr ""
-#: templates/js/translated/table_filters.js:426
+#: templates/js/translated/table_filters.js:421
msgid "Stock available"
msgstr ""
-#: templates/js/translated/table_filters.js:454
+#: templates/js/translated/table_filters.js:449
msgid "Purchasable"
msgstr ""
@@ -9480,35 +9612,35 @@ msgstr "权限"
msgid "Important dates"
msgstr "重要日期"
-#: users/models.py:195
+#: users/models.py:200
msgid "Permission set"
msgstr "权限设置"
-#: users/models.py:203
+#: users/models.py:208
msgid "Group"
msgstr "群组"
-#: users/models.py:206
+#: users/models.py:211
msgid "View"
msgstr "视图"
-#: users/models.py:206
+#: users/models.py:211
msgid "Permission to view items"
msgstr "查看项目权限"
-#: users/models.py:208
+#: users/models.py:213
msgid "Permission to add items"
msgstr "添加项目权限"
-#: users/models.py:210
+#: users/models.py:215
msgid "Change"
msgstr "更改"
-#: users/models.py:210
+#: users/models.py:215
msgid "Permissions to edit items"
msgstr "编辑项目权限"
-#: users/models.py:212
+#: users/models.py:217
msgid "Permission to delete items"
msgstr "删除项目权限"
diff --git a/InvenTree/part/serializers.py b/InvenTree/part/serializers.py
index 549b546a5b..d3956f3c6c 100644
--- a/InvenTree/part/serializers.py
+++ b/InvenTree/part/serializers.py
@@ -789,21 +789,20 @@ class BomImportExtractSerializer(DataFileExtractSerializer):
pass
# No direct match, where else can we look?
- if part is None:
- if part_name or part_ipn:
- queryset = Part.objects.all()
+ if part is None and (part_name or part_ipn):
+ queryset = Part.objects.all()
- if part_name:
- queryset = queryset.filter(name=part_name)
+ if part_name:
+ queryset = queryset.filter(name=part_name)
- if part_ipn:
- queryset = queryset.filter(IPN=part_ipn)
+ if part_ipn:
+ queryset = queryset.filter(IPN=part_ipn)
- if queryset.exists():
- if queryset.count() == 1:
- part = queryset.first()
- else:
- row['errors']['part'] = _('Multiple matching parts found')
+ if queryset.exists():
+ if queryset.count() == 1:
+ part = queryset.first()
+ else:
+ row['errors']['part'] = _('Multiple matching parts found')
if part is None:
row['errors']['part'] = _('No matching part found')
diff --git a/InvenTree/part/test_bom_import.py b/InvenTree/part/test_bom_import.py
index 8903660f39..6f9006d487 100644
--- a/InvenTree/part/test_bom_import.py
+++ b/InvenTree/part/test_bom_import.py
@@ -41,7 +41,7 @@ class BomUploadTest(InvenTreeAPITestCase):
assembly=False,
)
- def post_bom(self, filename, file_data, part=None, clear_existing=None, expected_code=None, content_type='text/plain'):
+ def post_bom(self, filename, file_data, clear_existing=None, expected_code=None, content_type='text/plain'):
bom_file = SimpleUploadedFile(
filename,
@@ -49,9 +49,6 @@ class BomUploadTest(InvenTreeAPITestCase):
content_type=content_type,
)
- if part is None:
- part = self.part.pk
-
if clear_existing is None:
clear_existing = False
@@ -189,7 +186,7 @@ class BomUploadTest(InvenTreeAPITestCase):
self.assertIn('No part column specified', str(response.data))
- response = self.post(
+ self.post(
url,
{
'rows': rows,
diff --git a/InvenTree/stock/api.py b/InvenTree/stock/api.py
index 9723e01c09..ed7a4b8c40 100644
--- a/InvenTree/stock/api.py
+++ b/InvenTree/stock/api.py
@@ -516,10 +516,8 @@ class StockList(generics.ListCreateAPIView):
data['location'] = location.pk
# An expiry date was *not* specified - try to infer it!
- if 'expiry_date' not in data:
-
- if part.default_expiry > 0:
- data['expiry_date'] = datetime.now().date() + timedelta(days=part.default_expiry)
+ if 'expiry_date' not in data and part.default_expiry > 0:
+ data['expiry_date'] = datetime.now().date() + timedelta(days=part.default_expiry)
# Attempt to extract serial numbers from submitted data
serials = None
diff --git a/InvenTree/stock/test_api.py b/InvenTree/stock/test_api.py
index 1e09dec907..a9dbe9e723 100644
--- a/InvenTree/stock/test_api.py
+++ b/InvenTree/stock/test_api.py
@@ -393,7 +393,7 @@ class StockItemTest(StockAPITestCase):
self.assertEqual(trackable_part.get_stock_count(), 0)
# This should fail, incorrect serial number count
- response = self.post(
+ self.post(
self.list_url,
data={
'part': trackable_part.pk,