diff --git a/InvenTree/InvenTree/locale_stats.json b/InvenTree/InvenTree/locale_stats.json
new file mode 100644
index 0000000000..9f003895c5
--- /dev/null
+++ b/InvenTree/InvenTree/locale_stats.json
@@ -0,0 +1 @@
+{"de": 95, "el": 0, "en": 0, "es": 4, "fr": 6, "he": 0, "id": 0, "it": 0, "ja": 4, "ko": 0, "nl": 0, "no": 0, "pl": 27, "ru": 6, "sv": 0, "th": 0, "tr": 32, "vi": 0, "zh": 1}
\ No newline at end of file
diff --git a/InvenTree/locale/de/LC_MESSAGES/django.po b/InvenTree/locale/de/LC_MESSAGES/django.po
index 80ae21817c..410e78911d 100644
--- a/InvenTree/locale/de/LC_MESSAGES/django.po
+++ b/InvenTree/locale/de/LC_MESSAGES/django.po
@@ -2,8 +2,8 @@ msgid ""
msgstr ""
"Project-Id-Version: inventree\n"
"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2021-08-07 15:14+0000\n"
-"PO-Revision-Date: 2021-08-07 15:30\n"
+"POT-Creation-Date: 2021-09-12 13:15+0000\n"
+"PO-Revision-Date: 2021-09-12 13:44\n"
"Last-Translator: \n"
"Language-Team: German\n"
"Language: de_DE\n"
@@ -36,7 +36,7 @@ msgstr "Datum eingeben"
#: InvenTree/forms.py:111 build/forms.py:102 build/forms.py:123
#: build/forms.py:145 build/forms.py:169 build/forms.py:185 build/forms.py:227
#: order/forms.py:30 order/forms.py:41 order/forms.py:52 order/forms.py:63
-#: order/forms.py:74 part/forms.py:108 templates/js/translated/forms.js:545
+#: order/forms.py:74 part/forms.py:108 templates/js/translated/forms.js:564
msgid "Confirm"
msgstr "Bestätigen"
@@ -73,7 +73,7 @@ msgstr "Kategorie auswählen"
msgid "Duplicate serial: {n}"
msgstr "Doppelte Seriennummer: {n}"
-#: InvenTree/helpers.py:408 order/models.py:315 order/models.py:425
+#: InvenTree/helpers.py:408 order/models.py:315 order/models.py:430
#: stock/views.py:1363
msgid "Invalid quantity provided"
msgstr "Keine gültige Menge"
@@ -102,152 +102,181 @@ 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:61 stock/models.py:1815
+#: InvenTree/models.py:66 stock/models.py:1826
msgid "Attachment"
msgstr "Anhang"
-#: InvenTree/models.py:62
+#: InvenTree/models.py:67
msgid "Select file to attach"
msgstr "Datei zum Anhängen auswählen"
-#: InvenTree/models.py:64 templates/js/translated/attachment.js:52
+#: InvenTree/models.py:69 templates/js/translated/attachment.js:87
msgid "Comment"
msgstr "Kommentar"
-#: InvenTree/models.py:64
+#: InvenTree/models.py:69
msgid "File comment"
msgstr "Datei-Kommentar"
-#: InvenTree/models.py:70 InvenTree/models.py:71 common/models.py:969
-#: common/models.py:970 part/models.py:2035
+#: InvenTree/models.py:75 InvenTree/models.py:76 common/models.py:993
+#: common/models.py:994 part/models.py:2051
#: report/templates/report/inventree_test_report_base.html:91
-#: templates/js/translated/stock.js:1549
+#: templates/js/translated/stock.js:1690
msgid "User"
msgstr "Benutzer"
-#: InvenTree/models.py:74
+#: InvenTree/models.py:79
msgid "upload date"
msgstr "Hochladedatum"
-#: InvenTree/models.py:113
+#: InvenTree/models.py:99
+msgid "Filename must not be empty"
+msgstr "Dateiname darf nicht leer sein"
+
+#: InvenTree/models.py:122
+msgid "Invalid attachment directory"
+msgstr "Ungültiges Verzeichnis für Anhang"
+
+#: InvenTree/models.py:132
+#, python-brace-format
+msgid "Filename contains illegal character '{c}'"
+msgstr "Dateiname enthält ungültiges Zeichen '{c}'"
+
+#: InvenTree/models.py:135
+msgid "Filename missing extension"
+msgstr "Dateiendung fehlt"
+
+#: InvenTree/models.py:142
+msgid "Attachment with this filename already exists"
+msgstr "Anhang mit diesem Dateinamen bereits vorhanden"
+
+#: InvenTree/models.py:149
+msgid "Error renaming file"
+msgstr "Fehler beim Umbenennen"
+
+#: InvenTree/models.py:184
msgid "Invalid choice"
msgstr "Ungültige Auswahl"
-#: InvenTree/models.py:129 InvenTree/models.py:130 company/models.py:412
-#: label/models.py:112 part/models.py:656 part/models.py:2196
-#: part/templates/part/part_base.html:233 report/models.py:181
+#: InvenTree/models.py:200 InvenTree/models.py:201 company/models.py:414
+#: label/models.py:112 part/models.py:658 part/models.py:2212
+#: part/templates/part/part_base.html:241 report/models.py:181
#: templates/InvenTree/search.html:137 templates/InvenTree/search.html:289
-#: templates/js/translated/company.js:583 templates/js/translated/part.js:338
-#: templates/js/translated/part.js:471 templates/js/translated/part.js:963
-#: templates/js/translated/stock.js:1342
+#: templates/js/translated/company.js:636 templates/js/translated/part.js:466
+#: templates/js/translated/part.js:603 templates/js/translated/part.js:1130
+#: templates/js/translated/stock.js:1483
msgid "Name"
msgstr "Name"
-#: InvenTree/models.py:136 build/models.py:187
-#: build/templates/build/detail.html:24 company/models.py:351
-#: company/models.py:519 company/templates/company/manufacturer_part.html:76
+#: InvenTree/models.py:207 build/models.py:187
+#: build/templates/build/detail.html:24 company/models.py:353
+#: company/models.py:569 company/templates/company/manufacturer_part.html:76
#: company/templates/company/supplier_part.html:75 label/models.py:119
-#: order/models.py:158 order/templates/order/purchase_order_detail.html:312
-#: part/models.py:679 part/templates/part/part_base.html:238
+#: order/models.py:158 part/models.py:681
+#: part/templates/part/part_base.html:246
#: part/templates/part/set_category.html:14 report/models.py:194
#: report/models.py:551 report/models.py:590
#: report/templates/report/inventree_build_order_base.html:118
#: templates/InvenTree/search.html:144 templates/InvenTree/search.html:224
#: templates/InvenTree/search.html:296
#: templates/InvenTree/settings/header.html:9
-#: templates/js/translated/bom.js:210 templates/js/translated/build.js:868
-#: templates/js/translated/build.js:1162 templates/js/translated/company.js:299
-#: templates/js/translated/company.js:497
-#: templates/js/translated/company.js:779 templates/js/translated/order.js:267
-#: templates/js/translated/order.js:369 templates/js/translated/part.js:397
-#: templates/js/translated/part.js:581 templates/js/translated/part.js:758
-#: templates/js/translated/part.js:975 templates/js/translated/part.js:1043
-#: templates/js/translated/stock.js:926 templates/js/translated/stock.js:1354
-#: templates/js/translated/stock.js:1399
+#: templates/js/translated/bom.js:230 templates/js/translated/build.js:891
+#: templates/js/translated/build.js:1179 templates/js/translated/company.js:344
+#: templates/js/translated/company.js:546
+#: templates/js/translated/company.js:834 templates/js/translated/order.js:341
+#: templates/js/translated/order.js:486 templates/js/translated/order.js:710
+#: templates/js/translated/part.js:525 templates/js/translated/part.js:713
+#: templates/js/translated/part.js:902 templates/js/translated/part.js:1142
+#: templates/js/translated/part.js:1210 templates/js/translated/stock.js:840
+#: templates/js/translated/stock.js:1495 templates/js/translated/stock.js:1540
msgid "Description"
msgstr "Beschreibung"
-#: InvenTree/models.py:137
+#: InvenTree/models.py:208
msgid "Description (optional)"
msgstr "Beschreibung (optional)"
-#: InvenTree/models.py:145
+#: InvenTree/models.py:216
msgid "parent"
msgstr "Eltern"
-#: InvenTree/serializers.py:52 part/models.py:2438
+#: InvenTree/serializers.py:55 part/models.py:2454
msgid "Must be a valid number"
msgstr "Muss eine gültige Nummer sein"
-#: InvenTree/settings.py:518
+#: InvenTree/serializers.py:244
+msgid "Filename"
+msgstr "Dateiname"
+
+#: InvenTree/settings.py:523
msgid "German"
msgstr "Deutsch"
-#: InvenTree/settings.py:519
+#: InvenTree/settings.py:524
msgid "Greek"
msgstr "Griechisch"
-#: InvenTree/settings.py:520
+#: InvenTree/settings.py:525
msgid "English"
msgstr "Englisch"
-#: InvenTree/settings.py:521
+#: InvenTree/settings.py:526
msgid "Spanish"
msgstr "Spanisch"
-#: InvenTree/settings.py:522
+#: InvenTree/settings.py:527
msgid "French"
msgstr "Französisch"
-#: InvenTree/settings.py:523
+#: InvenTree/settings.py:528
msgid "Hebrew"
msgstr "Hebräisch"
-#: InvenTree/settings.py:524
+#: InvenTree/settings.py:529
msgid "Italian"
msgstr "Italienisch"
-#: InvenTree/settings.py:525
+#: InvenTree/settings.py:530
msgid "Japanese"
msgstr "Japanisch"
-#: InvenTree/settings.py:526
+#: InvenTree/settings.py:531
msgid "Korean"
msgstr "Koreanisch"
-#: InvenTree/settings.py:527
+#: InvenTree/settings.py:532
msgid "Dutch"
msgstr "Niederländisch"
-#: InvenTree/settings.py:528
+#: InvenTree/settings.py:533
msgid "Norwegian"
msgstr "Norwegisch"
-#: InvenTree/settings.py:529
+#: InvenTree/settings.py:534
msgid "Polish"
msgstr "Polnisch"
-#: InvenTree/settings.py:530
+#: InvenTree/settings.py:535
msgid "Russian"
msgstr "Russisch"
-#: InvenTree/settings.py:531
+#: InvenTree/settings.py:536
msgid "Swedish"
msgstr "Schwedisch"
-#: InvenTree/settings.py:532
+#: InvenTree/settings.py:537
msgid "Thai"
msgstr "Thailändisch"
-#: InvenTree/settings.py:533
+#: InvenTree/settings.py:538
msgid "Turkish"
msgstr "Türkisch"
-#: InvenTree/settings.py:534
+#: InvenTree/settings.py:539
msgid "Vietnamese"
msgstr "Vietnamesisch"
-#: InvenTree/settings.py:535
+#: InvenTree/settings.py:540
msgid "Chinese"
msgstr "Chinesisch"
@@ -372,7 +401,7 @@ msgstr "Vom übergeordneten Element geteilt"
msgid "Split child item"
msgstr "Unterobjekt geteilt"
-#: InvenTree/status_codes.py:294 templates/js/translated/table_filters.js:173
+#: InvenTree/status_codes.py:294 templates/js/translated/table_filters.js:186
msgid "Sent to customer"
msgstr "Zum Kunden geschickt"
@@ -432,27 +461,27 @@ msgstr "Überschuss darf 100% nicht überschreiten"
msgid "Overage must be an integer value or a percentage"
msgstr "Überschuss muss eine Ganzzahl oder ein Prozentwert sein"
-#: InvenTree/views.py:612
+#: InvenTree/views.py:610
msgid "Delete Item"
msgstr "Element löschen"
-#: InvenTree/views.py:661
+#: InvenTree/views.py:659
msgid "Check box to confirm item deletion"
msgstr "Häkchen setzen um Löschung von Objekt zu bestätigen"
-#: InvenTree/views.py:676 templates/InvenTree/settings/user.html:14
+#: InvenTree/views.py:674 templates/InvenTree/settings/user.html:14
msgid "Edit User Information"
msgstr "Benutzerinformationen bearbeiten"
-#: InvenTree/views.py:687 templates/InvenTree/settings/user.html:18
+#: InvenTree/views.py:685 templates/InvenTree/settings/user.html:18
msgid "Set Password"
msgstr "Passwort eingeben"
-#: InvenTree/views.py:706
+#: InvenTree/views.py:704
msgid "Password fields must match"
msgstr "Passwörter stimmen nicht überein"
-#: InvenTree/views.py:907 templates/navbar.html:95
+#: InvenTree/views.py:910 templates/navbar.html:105
msgid "System Information"
msgstr "Systeminformationen"
@@ -509,8 +538,8 @@ msgstr "geplantes Bestelldatum"
#: order/templates/order/order_base.html:124
#: order/templates/order/sales_order_base.html:119
#: report/templates/report/inventree_build_order_base.html:126
-#: templates/js/translated/build.js:945 templates/js/translated/order.js:284
-#: templates/js/translated/order.js:387
+#: templates/js/translated/build.js:962 templates/js/translated/order.js:358
+#: templates/js/translated/order.js:728
msgid "Target Date"
msgstr "Zieldatum"
@@ -522,19 +551,18 @@ msgstr "Zieldatum für Bauauftrag-Fertigstellung."
#: build/templates/build/allocation_card.html:23
#: build/templates/build/auto_allocate.html:17
#: build/templates/build/build_base.html:133
-#: build/templates/build/detail.html:34 common/models.py:1001
+#: build/templates/build/detail.html:34 common/models.py:1025
#: company/forms.py:42 company/templates/company/supplier_part.html:226
-#: order/forms.py:120 order/forms.py:142 order/forms.py:159 order/models.py:706
-#: order/models.py:952 order/templates/order/order_wizard/match_parts.html:30
+#: order/forms.py:120 order/forms.py:142 order/forms.py:159 order/models.py:712
+#: order/models.py:964 order/templates/order/order_wizard/match_parts.html:30
#: order/templates/order/order_wizard/select_parts.html:34
-#: order/templates/order/purchase_order_detail.html:348
-#: order/templates/order/sales_order_detail.html:200
-#: order/templates/order/sales_order_detail.html:207
-#: order/templates/order/sales_order_detail.html:292
-#: order/templates/order/sales_order_detail.html:364 part/forms.py:249
-#: part/forms.py:265 part/forms.py:281 part/models.py:2340
+#: order/templates/order/sales_order_detail.html:201
+#: order/templates/order/sales_order_detail.html:208
+#: order/templates/order/sales_order_detail.html:293
+#: order/templates/order/sales_order_detail.html:365 part/forms.py:249
+#: part/forms.py:265 part/forms.py:281 part/models.py:2356
#: part/templates/part/bom_upload/match_parts.html:31
-#: part/templates/part/detail.html:940 part/templates/part/detail.html:1026
+#: part/templates/part/detail.html:973 part/templates/part/detail.html:1059
#: part/templates/part/part_pricing.html:16
#: report/templates/report/inventree_build_order_base.html:114
#: report/templates/report/inventree_po_report.html:91
@@ -542,13 +570,14 @@ msgstr "Zieldatum für Bauauftrag-Fertigstellung."
#: report/templates/report/inventree_test_report_base.html:77
#: stock/forms.py:140 stock/templates/stock/item_base.html:269
#: stock/templates/stock/stock_adjust.html:18
-#: templates/js/translated/barcode.js:364 templates/js/translated/bom.js:225
-#: templates/js/translated/build.js:271 templates/js/translated/build.js:606
-#: templates/js/translated/build.js:1172
-#: templates/js/translated/model_renderers.js:56
-#: templates/js/translated/order.js:482 templates/js/translated/part.js:1148
-#: templates/js/translated/part.js:1270 templates/js/translated/part.js:1326
-#: templates/js/translated/stock.js:1534 templates/js/translated/stock.js:1732
+#: templates/js/translated/barcode.js:386 templates/js/translated/bom.js:245
+#: templates/js/translated/build.js:298 templates/js/translated/build.js:629
+#: templates/js/translated/build.js:1189
+#: templates/js/translated/model_renderers.js:59
+#: templates/js/translated/order.js:522 templates/js/translated/order.js:824
+#: templates/js/translated/part.js:1317 templates/js/translated/part.js:1440
+#: templates/js/translated/part.js:1518 templates/js/translated/stock.js:1675
+#: templates/js/translated/stock.js:1850
msgid "Quantity"
msgstr "Anzahl"
@@ -589,13 +618,15 @@ msgid "Mark build as complete"
msgstr "Bauauftrag als vollständig markieren"
#: build/forms.py:210 build/templates/build/auto_allocate.html:18
-#: stock/forms.py:280 stock/templates/stock/item_base.html:299
+#: order/serializers.py:216 order/serializers.py:275 stock/forms.py:280
+#: stock/templates/stock/item_base.html:299
#: stock/templates/stock/stock_adjust.html:17
-#: templates/InvenTree/search.html:260 templates/js/translated/barcode.js:363
-#: templates/js/translated/barcode.js:531 templates/js/translated/build.js:256
-#: templates/js/translated/build.js:620 templates/js/translated/order.js:467
-#: templates/js/translated/stock.js:134 templates/js/translated/stock.js:260
-#: templates/js/translated/stock.js:1012 templates/js/translated/stock.js:1426
+#: templates/InvenTree/search.html:260 templates/js/translated/barcode.js:385
+#: templates/js/translated/barcode.js:555 templates/js/translated/build.js:283
+#: templates/js/translated/build.js:643 templates/js/translated/order.js:809
+#: templates/js/translated/part.js:174 templates/js/translated/stock.js:203
+#: templates/js/translated/stock.js:329 templates/js/translated/stock.js:942
+#: templates/js/translated/stock.js:1567
msgid "Location"
msgstr "Lagerort"
@@ -604,13 +635,13 @@ msgid "Location of completed parts"
msgstr "Lagerort der Endprodukte"
#: build/forms.py:215 build/templates/build/build_base.html:138
-#: build/templates/build/detail.html:62 order/models.py:549
-#: order/templates/order/receive_parts.html:24
+#: build/templates/build/detail.html:62 order/models.py:555
+#: order/serializers.py:230 order/templates/order/receive_parts.html:24
#: stock/templates/stock/item_base.html:422 templates/InvenTree/search.html:252
-#: templates/js/translated/barcode.js:119 templates/js/translated/build.js:902
-#: templates/js/translated/order.js:271 templates/js/translated/order.js:374
-#: templates/js/translated/stock.js:999 templates/js/translated/stock.js:1503
-#: templates/js/translated/stock.js:1748
+#: templates/js/translated/barcode.js:141 templates/js/translated/build.js:925
+#: templates/js/translated/order.js:345 templates/js/translated/order.js:715
+#: templates/js/translated/stock.js:917 templates/js/translated/stock.js:1644
+#: templates/js/translated/stock.js:1866
msgid "Status"
msgstr "Status"
@@ -649,7 +680,7 @@ msgstr "Ungültige Wahl für übergeordneten Bauauftrag"
#: build/models.py:117 build/templates/build/build_base.html:9
#: build/templates/build/build_base.html:73
#: report/templates/report/inventree_build_order_base.html:106
-#: templates/js/translated/build.js:233
+#: templates/js/translated/build.js:260
msgid "Build Order"
msgstr "Bauauftrag"
@@ -657,8 +688,8 @@ msgstr "Bauauftrag"
#: build/templates/build/index.html:15
#: order/templates/order/sales_order_detail.html:34
#: order/templates/order/so_navbar.html:19
-#: order/templates/order/so_navbar.html:22 part/templates/part/navbar.html:42
-#: part/templates/part/navbar.html:45 templates/InvenTree/index.html:229
+#: order/templates/order/so_navbar.html:22 part/templates/part/navbar.html:50
+#: part/templates/part/navbar.html:53 templates/InvenTree/index.html:229
#: templates/InvenTree/search.html:185
#: templates/InvenTree/settings/navbar.html:101
#: templates/InvenTree/settings/navbar.html:103 users/models.py:44
@@ -669,14 +700,13 @@ msgstr "Bauaufträge"
msgid "Build Order Reference"
msgstr "Bauauftragsreferenz"
-#: build/models.py:179 order/models.py:246 order/models.py:533
-#: order/models.py:713 order/templates/order/purchase_order_detail.html:343
-#: order/templates/order/sales_order_detail.html:359 part/models.py:2349
-#: part/templates/part/bom_upload/match_parts.html:30
+#: build/models.py:179 order/models.py:246 order/models.py:539
+#: order/models.py:719 order/templates/order/sales_order_detail.html:360
+#: part/models.py:2365 part/templates/part/bom_upload/match_parts.html:30
#: report/templates/report/inventree_po_report.html:92
#: report/templates/report/inventree_so_report.html:92
-#: templates/js/translated/bom.js:217 templates/js/translated/build.js:695
-#: templates/js/translated/build.js:1166
+#: templates/js/translated/bom.js:237 templates/js/translated/build.js:718
+#: templates/js/translated/build.js:1183 templates/js/translated/order.js:517
msgid "Reference"
msgstr "Referenz"
@@ -695,15 +725,14 @@ msgstr "Bauauftrag, zu dem dieser Bauauftrag zugwiesen ist"
#: build/models.py:205 build/templates/build/auto_allocate.html:16
#: build/templates/build/build_base.html:128
-#: build/templates/build/detail.html:29 company/models.py:654
-#: order/models.py:766 order/models.py:825
+#: build/templates/build/detail.html:29 company/models.py:704
+#: order/models.py:772 order/models.py:837
#: order/templates/order/order_wizard/select_parts.html:32
-#: order/templates/order/purchase_order_detail.html:297
#: order/templates/order/receive_parts.html:19
-#: order/templates/order/sales_order_detail.html:344 part/models.py:295
-#: part/models.py:1980 part/models.py:1996 part/models.py:2015
-#: part/models.py:2033 part/models.py:2112 part/models.py:2234
-#: part/models.py:2324 part/templates/part/detail.html:199
+#: order/templates/order/sales_order_detail.html:345 part/models.py:297
+#: part/models.py:1996 part/models.py:2012 part/models.py:2031
+#: part/models.py:2049 part/models.py:2128 part/models.py:2250
+#: part/models.py:2340 part/templates/part/detail.html:199
#: part/templates/part/part_app_base.html:8
#: part/templates/part/part_pricing.html:12
#: part/templates/part/set_category.html:13
@@ -711,12 +740,13 @@ msgstr "Bauauftrag, zu dem dieser Bauauftrag zugwiesen ist"
#: report/templates/report/inventree_po_report.html:90
#: report/templates/report/inventree_so_report.html:90
#: templates/InvenTree/search.html:112 templates/InvenTree/search.html:210
-#: templates/js/translated/barcode.js:362 templates/js/translated/bom.js:183
-#: templates/js/translated/build.js:586 templates/js/translated/build.js:873
-#: templates/js/translated/build.js:1139 templates/js/translated/company.js:438
-#: templates/js/translated/company.js:688 templates/js/translated/part.js:562
-#: templates/js/translated/part.js:725 templates/js/translated/stock.js:132
-#: templates/js/translated/stock.js:895 templates/js/translated/stock.js:1720
+#: templates/js/translated/barcode.js:384 templates/js/translated/bom.js:203
+#: templates/js/translated/build.js:609 templates/js/translated/build.js:896
+#: templates/js/translated/build.js:1156 templates/js/translated/company.js:487
+#: templates/js/translated/company.js:743 templates/js/translated/order.js:471
+#: templates/js/translated/part.js:694 templates/js/translated/part.js:864
+#: templates/js/translated/stock.js:201 templates/js/translated/stock.js:797
+#: templates/js/translated/stock.js:1838
msgid "Part"
msgstr "Teil"
@@ -764,7 +794,7 @@ msgstr "Fertiggestellte Teile"
msgid "Number of stock items which have been completed"
msgstr "Anzahl der fertigen BestandsObjekte"
-#: build/models.py:257 part/templates/part/part_base.html:191
+#: build/models.py:257 part/templates/part/part_base.html:198
msgid "Build Status"
msgstr "Bauauftrags-Status"
@@ -772,7 +802,7 @@ msgstr "Bauauftrags-Status"
msgid "Build status code"
msgstr "Bau-Statuscode"
-#: build/models.py:265 stock/models.py:507
+#: build/models.py:265 stock/models.py:513
msgid "Batch Code"
msgstr "Losnummer"
@@ -780,16 +810,16 @@ msgstr "Losnummer"
msgid "Batch code for this build output"
msgstr "Losnummer für dieses Endprodukt"
-#: build/models.py:272 order/models.py:162 part/models.py:851
-#: part/templates/part/part_base.html:264 templates/js/translated/order.js:382
+#: build/models.py:272 order/models.py:162 part/models.py:853
+#: part/templates/part/part_base.html:272 templates/js/translated/order.js:723
msgid "Creation Date"
msgstr "Erstelldatum"
-#: build/models.py:276 order/models.py:555
+#: build/models.py:276 order/models.py:561
msgid "Target completion date"
msgstr "geplantes Fertigstellungsdatum"
-#: build/models.py:280 order/models.py:288 templates/js/translated/build.js:950
+#: build/models.py:280 order/models.py:288 templates/js/translated/build.js:967
msgid "Completion Date"
msgstr "Fertigstellungsdatum"
@@ -797,7 +827,7 @@ msgstr "Fertigstellungsdatum"
msgid "completed by"
msgstr "Fertiggestellt von"
-#: build/models.py:294 templates/js/translated/build.js:915
+#: build/models.py:294 templates/js/translated/build.js:938
msgid "Issued by"
msgstr "Aufgegeben von"
@@ -808,9 +838,9 @@ msgstr "Nutzer der diesen Bauauftrag erstellt hat"
#: build/models.py:303 build/templates/build/build_base.html:184
#: build/templates/build/detail.html:108 order/models.py:176
#: order/templates/order/order_base.html:138
-#: order/templates/order/sales_order_base.html:140 part/models.py:855
+#: order/templates/order/sales_order_base.html:140 part/models.py:857
#: report/templates/report/inventree_build_order_base.html:159
-#: templates/js/translated/build.js:930
+#: templates/js/translated/build.js:950
msgid "Responsible"
msgstr "Verantwortlicher Benutzer"
@@ -821,34 +851,33 @@ msgstr "Nutzer der für diesen Bauauftrag zuständig ist"
#: build/models.py:309 build/templates/build/detail.html:94
#: company/templates/company/manufacturer_part.html:83
#: company/templates/company/supplier_part.html:82
-#: part/templates/part/part_base.html:258 stock/models.py:501
+#: part/templates/part/part_base.html:266 stock/models.py:507
#: stock/templates/stock/item_base.html:359
msgid "External Link"
msgstr "Externer Link"
-#: build/models.py:310 part/models.py:713 stock/models.py:503
+#: build/models.py:310 part/models.py:715 stock/models.py:509
msgid "Link to external URL"
msgstr "Link zu einer externen URL"
#: build/models.py:314 build/templates/build/navbar.html:52
-#: company/models.py:139 company/models.py:526
-#: company/templates/company/navbar.html:63
-#: company/templates/company/navbar.html:66 order/models.py:180
-#: order/models.py:715 order/templates/order/po_navbar.html:38
+#: company/models.py:141 company/models.py:576
+#: company/templates/company/navbar.html:69
+#: company/templates/company/navbar.html:72 order/models.py:180
+#: order/models.py:721 order/templates/order/po_navbar.html:38
#: order/templates/order/po_navbar.html:41
-#: order/templates/order/purchase_order_detail.html:419
-#: order/templates/order/sales_order_detail.html:439
+#: order/templates/order/sales_order_detail.html:440
#: order/templates/order/so_navbar.html:33
-#: order/templates/order/so_navbar.html:36 part/models.py:840
-#: part/templates/part/detail.html:105 part/templates/part/navbar.html:108
-#: part/templates/part/navbar.html:111
+#: order/templates/order/so_navbar.html:36 part/models.py:842
+#: part/templates/part/detail.html:105 part/templates/part/navbar.html:120
+#: part/templates/part/navbar.html:123
#: report/templates/report/inventree_build_order_base.html:173
-#: stock/forms.py:138 stock/forms.py:250 stock/forms.py:282 stock/models.py:573
-#: stock/models.py:1715 stock/models.py:1821
-#: stock/templates/stock/navbar.html:57 templates/js/translated/barcode.js:37
-#: templates/js/translated/bom.js:369 templates/js/translated/company.js:784
-#: templates/js/translated/stock.js:268 templates/js/translated/stock.js:509
-#: templates/js/translated/stock.js:1090
+#: stock/forms.py:138 stock/forms.py:250 stock/forms.py:282 stock/models.py:579
+#: stock/models.py:1726 stock/models.py:1832
+#: stock/templates/stock/navbar.html:57 templates/js/translated/barcode.js:59
+#: templates/js/translated/bom.js:385 templates/js/translated/company.js:839
+#: templates/js/translated/order.js:604 templates/js/translated/stock.js:338
+#: templates/js/translated/stock.js:580 templates/js/translated/stock.js:1061
msgid "Notes"
msgstr "Notizen"
@@ -881,11 +910,11 @@ msgstr "Bauauftragsposition muss ein Endprodukt festlegen, da der übergeordnete
msgid "Allocated quantity ({n}) must not exceed available quantity ({q})"
msgstr "Reserviermenge ({n}) muss kleiner Bestandsmenge ({q}) sein. Zugewiesene Anzahl ({n}) darf nicht die verfügbare ({q}) Anzahl überschreiten"
-#: build/models.py:1244 order/models.py:926
+#: build/models.py:1244 order/models.py:938
msgid "StockItem is over-allocated"
msgstr "Zu viele BestandsObjekt zugewiesen"
-#: build/models.py:1248 order/models.py:929
+#: build/models.py:1248 order/models.py:941
msgid "Allocation quantity must be greater than zero"
msgstr "Reserviermenge muss größer null sein"
@@ -899,8 +928,8 @@ msgid "Selected stock item not found in BOM for part '{p}'"
msgstr "Ausgewähltes BestandsObjekt nicht Stückliste für Teil '{p}' gefunden"
#: build/models.py:1372 stock/templates/stock/item_base.html:331
-#: templates/InvenTree/search.html:183 templates/js/translated/build.js:846
-#: templates/navbar.html:29
+#: templates/InvenTree/search.html:183 templates/js/translated/build.js:869
+#: templates/navbar.html:35
msgid "Build"
msgstr "Bauauftrag"
@@ -912,9 +941,9 @@ msgstr "Bauauftrag starten um Teile zuzuweisen"
#: stock/templates/stock/item_base.html:31
#: stock/templates/stock/item_base.html:353
#: stock/templates/stock/stock_adjust.html:16
-#: templates/js/translated/build.js:244 templates/js/translated/build.js:249
-#: templates/js/translated/build.js:993 templates/js/translated/order.js:455
-#: templates/js/translated/order.js:460 templates/js/translated/stock.js:1485
+#: templates/js/translated/build.js:271 templates/js/translated/build.js:276
+#: templates/js/translated/build.js:1012 templates/js/translated/order.js:797
+#: templates/js/translated/order.js:802 templates/js/translated/stock.js:1626
msgid "Stock Item"
msgstr "BestandsObjekt"
@@ -936,12 +965,12 @@ msgstr "Ziel-BestandsObjekt"
#: build/templates/build/allocation_card.html:21
#: build/templates/build/complete_output.html:46
-#: order/templates/order/sales_order_detail.html:205
-#: order/templates/order/sales_order_detail.html:290
+#: order/templates/order/sales_order_detail.html:206
+#: order/templates/order/sales_order_detail.html:291
#: report/templates/report/inventree_test_report_base.html:75
-#: stock/models.py:495 stock/templates/stock/item_base.html:251
-#: templates/js/translated/build.js:604
-#: templates/js/translated/model_renderers.js:54
+#: stock/models.py:501 stock/templates/stock/item_base.html:251
+#: templates/js/translated/build.js:627
+#: templates/js/translated/model_renderers.js:57
msgid "Serial Number"
msgstr "Seriennummer"
@@ -993,7 +1022,7 @@ msgstr "Lagerbestand wurde Bauauftrag noch nicht vollständig zugewiesen"
#: company/templates/company/supplier_part.html:30
#: order/templates/order/order_base.html:26
#: order/templates/order/sales_order_base.html:37
-#: part/templates/part/category.html:27 part/templates/part/part_base.html:25
+#: part/templates/part/category.html:27 part/templates/part/part_base.html:30
#: stock/templates/stock/item_base.html:62
#: stock/templates/stock/location.html:31
msgid "Admin view"
@@ -1005,9 +1034,9 @@ msgstr "Admin"
#: order/templates/order/order_base.html:86
#: order/templates/order/sales_order_base.html:43
#: order/templates/order/sales_order_base.html:88
-#: templates/js/translated/table_filters.js:259
-#: templates/js/translated/table_filters.js:278
-#: templates/js/translated/table_filters.js:295
+#: templates/js/translated/table_filters.js:272
+#: templates/js/translated/table_filters.js:291
+#: templates/js/translated/table_filters.js:308
msgid "Overdue"
msgstr "Überfällig"
@@ -1039,7 +1068,7 @@ msgstr "Bauauftrag abbrechen"
#: build/templates/build/build_base.html:114
msgid "Delete Build"
-msgstr ""
+msgstr "Bauauftrag löschen"
#: build/templates/build/build_base.html:124
#: build/templates/build/detail.html:15
@@ -1057,14 +1086,14 @@ msgid "Progress"
msgstr "Fortschritt"
#: build/templates/build/build_base.html:170
-#: build/templates/build/detail.html:87 order/models.py:823
+#: build/templates/build/detail.html:87 order/models.py:835
#: order/templates/order/sales_order_base.html:9
#: order/templates/order/sales_order_base.html:35
#: order/templates/order/sales_order_ship.html:25
#: report/templates/report/inventree_build_order_base.html:136
#: report/templates/report/inventree_so_report.html:77
#: stock/templates/stock/item_base.html:293
-#: templates/js/translated/order.js:329
+#: templates/js/translated/order.js:670
msgid "Sales Order"
msgstr "Auftrag"
@@ -1148,8 +1177,8 @@ msgstr "BestandsObjekt zur Zuordnung zum ausgewählten Endprodukt auswählen"
#: build/templates/build/create_build_item.html:11
#, python-format
-msgid "The allocated stock will be installed into the following build output:
%(output)s"
-msgstr "Der zugeordnete Bestand wird in den folgenden Endprodukten verbaut werden:
%(output)s"
+msgid "The allocated stock will be installed into the following build output:
%(output)s"
+msgstr "Der zugeordnete Bestand wird in den folgenden Endprodukten verbaut werden:
%(output)s"
#: build/templates/build/create_build_item.html:17
#, python-format
@@ -1172,9 +1201,9 @@ 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:49 order/forms.py:88 order/models.py:782
-#: order/templates/order/purchase_order_detail.html:408
+#: build/templates/build/detail.html:49 order/forms.py:88 order/models.py:794
#: order/templates/order/receive_parts.html:25 stock/forms.py:134
+#: templates/js/translated/order.js:593
msgid "Destination"
msgstr "Ziel-Lager"
@@ -1184,16 +1213,16 @@ msgstr "Ziel-Lagerort nicht angegeben"
#: build/templates/build/detail.html:73
#: stock/templates/stock/item_base.html:317
-#: templates/js/translated/stock.js:1007 templates/js/translated/stock.js:1755
-#: templates/js/translated/table_filters.js:116
-#: templates/js/translated/table_filters.js:198
+#: templates/js/translated/stock.js:931 templates/js/translated/stock.js:1873
+#: templates/js/translated/table_filters.js:129
+#: templates/js/translated/table_filters.js:211
msgid "Batch"
msgstr "Losnummer"
#: build/templates/build/detail.html:119
#: order/templates/order/order_base.html:111
#: order/templates/order/sales_order_base.html:113
-#: templates/js/translated/build.js:910
+#: templates/js/translated/build.js:933
msgid "Created"
msgstr "Erstellt"
@@ -1201,7 +1230,7 @@ msgstr "Erstellt"
msgid "No target date set"
msgstr "Kein Ziel-Datum gesetzt"
-#: build/templates/build/detail.html:135 templates/js/translated/build.js:888
+#: build/templates/build/detail.html:135 templates/js/translated/build.js:911
msgid "Completed"
msgstr "Fertig"
@@ -1225,7 +1254,7 @@ msgstr "Lagerbestand Bauauftrag zuweisen"
msgid "Auto Allocate"
msgstr "Automatisch zuweisen"
-#: build/templates/build/detail.html:175 templates/js/translated/build.js:778
+#: build/templates/build/detail.html:175 templates/js/translated/build.js:801
msgid "Unallocate stock"
msgstr "Bestandszuordnung aufheben"
@@ -1238,8 +1267,8 @@ msgid "Order required parts"
msgstr "Benötigte Teile bestellen"
#: build/templates/build/detail.html:180
-#: company/templates/company/detail.html:33
-#: company/templates/company/detail.html:75 order/views.py:679
+#: company/templates/company/detail.html:32
+#: company/templates/company/detail.html:72 order/views.py:679
#: part/templates/part/category.html:140
msgid "Order Parts"
msgstr "Teile bestellen"
@@ -1288,8 +1317,8 @@ msgstr "Fertiggestellte Endprodukte"
#: build/templates/build/navbar.html:45 order/templates/order/po_navbar.html:35
#: order/templates/order/sales_order_detail.html:43
#: order/templates/order/so_navbar.html:29 part/templates/part/detail.html:173
-#: part/templates/part/navbar.html:102 part/templates/part/navbar.html:105
-#: stock/templates/stock/item.html:87 stock/templates/stock/navbar.html:47
+#: part/templates/part/navbar.html:114 part/templates/part/navbar.html:117
+#: stock/templates/stock/item.html:88 stock/templates/stock/navbar.html:47
#: stock/templates/stock/navbar.html:50
msgid "Attachments"
msgstr "Anhänge"
@@ -1298,48 +1327,48 @@ msgstr "Anhänge"
msgid "Build Notes"
msgstr "Bauauftrags-Notizen"
-#: build/templates/build/detail.html:261 build/templates/build/detail.html:397
-#: company/templates/company/detail.html:173
-#: company/templates/company/detail.html:200
+#: build/templates/build/detail.html:261 build/templates/build/detail.html:398
+#: company/templates/company/detail.html:169
+#: company/templates/company/detail.html:196
#: order/templates/order/purchase_order_detail.html:62
#: order/templates/order/purchase_order_detail.html:95
#: order/templates/order/sales_order_detail.html:58
#: order/templates/order/sales_order_detail.html:85
-#: part/templates/part/detail.html:109 stock/templates/stock/item.html:102
-#: stock/templates/stock/item.html:187
+#: part/templates/part/detail.html:109 stock/templates/stock/item.html:103
+#: stock/templates/stock/item.html:188
msgid "Edit Notes"
msgstr "Anmerkungen bearbeiten"
#: build/templates/build/detail.html:357
#: order/templates/order/po_attachments.html:79
-#: order/templates/order/purchase_order_detail.html:156
-#: order/templates/order/sales_order_detail.html:145
-#: part/templates/part/detail.html:802 stock/templates/stock/item.html:251
+#: order/templates/order/purchase_order_detail.html:157
+#: order/templates/order/sales_order_detail.html:146
+#: part/templates/part/detail.html:920 stock/templates/stock/item.html:253
#: templates/attachment_table.html:6
msgid "Add Attachment"
msgstr "Anhang hinzufügen"
-#: build/templates/build/detail.html:375
+#: build/templates/build/detail.html:376
#: order/templates/order/po_attachments.html:51
-#: order/templates/order/purchase_order_detail.html:128
-#: order/templates/order/sales_order_detail.html:118
-#: part/templates/part/detail.html:756 stock/templates/stock/item.html:219
+#: order/templates/order/purchase_order_detail.html:129
+#: order/templates/order/sales_order_detail.html:119
+#: part/templates/part/detail.html:874 stock/templates/stock/item.html:221
msgid "Edit Attachment"
msgstr "Anhang bearbeiten"
-#: build/templates/build/detail.html:382
+#: build/templates/build/detail.html:383
#: order/templates/order/po_attachments.html:58
-#: order/templates/order/purchase_order_detail.html:135
-#: order/templates/order/sales_order_detail.html:124
-#: part/templates/part/detail.html:765 stock/templates/stock/item.html:228
+#: order/templates/order/purchase_order_detail.html:136
+#: order/templates/order/sales_order_detail.html:125
+#: part/templates/part/detail.html:883 stock/templates/stock/item.html:230
msgid "Confirm Delete Operation"
msgstr "Löschvorgang bestätigen"
-#: build/templates/build/detail.html:383
+#: build/templates/build/detail.html:384
#: order/templates/order/po_attachments.html:59
-#: order/templates/order/purchase_order_detail.html:136
-#: order/templates/order/sales_order_detail.html:125
-#: part/templates/part/detail.html:766 stock/templates/stock/item.html:229
+#: order/templates/order/purchase_order_detail.html:137
+#: order/templates/order/sales_order_detail.html:126
+#: part/templates/part/detail.html:884 stock/templates/stock/item.html:231
msgid "Delete Attachment"
msgstr "Anhang löschen"
@@ -1372,7 +1401,7 @@ msgid "Build Order Details"
msgstr "Bauauftrag-details"
#: build/templates/build/navbar.html:15 order/templates/order/po_navbar.html:15
-#: templates/js/translated/stock.js:1414
+#: templates/js/translated/stock.js:1555
msgid "Details"
msgstr "Details"
@@ -1501,9 +1530,9 @@ msgstr "Teil muss aktuell im Bestand sein"
msgid "Stock item is over-allocated"
msgstr "BestandObjekt ist zu oft zugewiesen"
-#: build/views.py:705 templates/js/translated/bom.js:250
-#: templates/js/translated/build.js:705 templates/js/translated/build.js:1000
-#: templates/js/translated/build.js:1179
+#: build/views.py:705 templates/js/translated/bom.js:269
+#: templates/js/translated/build.js:728 templates/js/translated/build.js:1019
+#: templates/js/translated/build.js:1196
msgid "Available"
msgstr "Verfügbar"
@@ -1539,7 +1568,7 @@ msgstr "Fehler beim Lesen der Datei (falsche Größe)"
msgid "Error reading file (data could be corrupted)"
msgstr "Fehler beim Lesen der Datei (Daten könnten beschädigt sein)"
-#: common/forms.py:34 templates/js/translated/attachment.js:42
+#: common/forms.py:34 templates/js/translated/attachment.js:54
msgid "File"
msgstr "Datei"
@@ -1556,546 +1585,594 @@ msgstr "{name.title()} Datei"
msgid "Select {name} file to upload"
msgstr "{name} Datei zum Hochladen auswählen"
-#: common/models.py:322 common/models.py:815 common/models.py:962
+#: common/models.py:308 common/models.py:839 common/models.py:986
msgid "Settings key (must be unique - case insensitive"
msgstr "Einstellungs-Schlüssel (muss einzigartig sein, Groß-/ Kleinschreibung wird nicht beachtet)"
-#: common/models.py:324
+#: common/models.py:310
msgid "Settings value"
msgstr "Einstellungs-Wert"
-#: common/models.py:359
+#: common/models.py:345
msgid "Must be an integer value"
msgstr "Nur Ganzzahl eingeben"
-#: common/models.py:382
+#: common/models.py:368
msgid "Value must be a boolean value"
msgstr "Wahrheitswert erforderlich"
-#: common/models.py:393
+#: common/models.py:379
msgid "Value must be an integer value"
msgstr "Nur Ganzzahl eingeben"
-#: common/models.py:416
+#: common/models.py:402
msgid "Key string must be unique"
msgstr "Schlüsseltext muss eindeutig sein"
-#: common/models.py:523
+#: common/models.py:509
msgid "InvenTree Instance Name"
msgstr "InvenTree Instanzname"
-#: common/models.py:525
+#: common/models.py:511
msgid "String descriptor for the server instance"
msgstr "Kurze Beschreibung der Instanz"
-#: common/models.py:529
+#: common/models.py:515
msgid "Use instance name"
msgstr "Name der Instanz verwenden"
-#: common/models.py:530
+#: common/models.py:516
msgid "Use the instance name in the title-bar"
msgstr "Den Namen der Instanz in der Titelleiste verwenden"
-#: common/models.py:536 company/models.py:97 company/models.py:98
+#: common/models.py:522 company/models.py:99 company/models.py:100
msgid "Company name"
msgstr "Firmenname"
-#: common/models.py:537
+#: common/models.py:523
msgid "Internal company name"
msgstr "interner Firmenname"
-#: common/models.py:542
+#: common/models.py:528
msgid "Base URL"
msgstr "Basis-URL"
-#: common/models.py:543
+#: common/models.py:529
msgid "Base URL for server instance"
msgstr "Basis-URL für dieses Instanz"
-#: common/models.py:549
+#: common/models.py:535
msgid "Default Currency"
msgstr "Standardwährung"
-#: common/models.py:550
+#: common/models.py:536
msgid "Default currency"
msgstr "Standardwährung"
-#: common/models.py:556
+#: common/models.py:542
msgid "Download from URL"
msgstr "Von URL herunterladen"
-#: common/models.py:557
+#: common/models.py:543
msgid "Allow download of remote images and files from external URL"
msgstr "Herunterladen von externen Bildern und Dateien von URLs erlaubt"
-#: common/models.py:563
+#: common/models.py:549
msgid "Barcode Support"
msgstr "Bacode-Feature verwenden"
-#: common/models.py:564
+#: common/models.py:550
msgid "Enable barcode scanner support"
msgstr "Barcode-Scanner Unterstützung"
-#: common/models.py:570
+#: common/models.py:556
msgid "IPN Regex"
msgstr "IPN Regex"
-#: common/models.py:571
+#: common/models.py:557
msgid "Regular expression pattern for matching Part IPN"
msgstr "RegEx Muster für die Zuordnung von Teil-IPN"
-#: common/models.py:575
+#: common/models.py:561
msgid "Allow Duplicate IPN"
msgstr "Mehrere Artikel mit gleicher IPN erlaubt"
-#: common/models.py:576
+#: common/models.py:562
msgid "Allow multiple parts to share the same IPN"
msgstr "Mehrere Artikel mit gleicher IPN erlaubt"
-#: common/models.py:582
+#: common/models.py:568
msgid "Allow Editing IPN"
msgstr "Ändern von IPN erlaubt"
-#: common/models.py:583
+#: common/models.py:569
msgid "Allow changing the IPN value while editing a part"
msgstr "Ändern der IPN während des Bearbeiten eines Teils erlaubt"
-#: common/models.py:589
+#: common/models.py:575
msgid "Copy Part BOM Data"
msgstr "Teil-Stückliste kopieren"
-#: common/models.py:590
+#: common/models.py:576
msgid "Copy BOM data by default when duplicating a part"
msgstr "Stückliste von Teil kopieren wenn das Teil dupliziert wird "
-#: common/models.py:596
+#: common/models.py:582
msgid "Copy Part Parameter Data"
msgstr "Teil-Parameter kopieren"
-#: common/models.py:597
+#: common/models.py:583
msgid "Copy parameter data by default when duplicating a part"
msgstr "Parameter-Daten für dieses Teil kopieren wenn das Teil dupliziert wird"
-#: common/models.py:603
+#: common/models.py:589
msgid "Copy Part Test Data"
msgstr "Teil-Testdaten kopieren"
-#: common/models.py:604
+#: common/models.py:590
msgid "Copy test data by default when duplicating a part"
msgstr "Test-Daten für dieses Teil kopieren wenn das Teil dupliziert wird"
-#: common/models.py:610
+#: common/models.py:596
msgid "Copy Category Parameter Templates"
msgstr "Kategorie-Parametervorlage kopieren"
-#: common/models.py:611
+#: common/models.py:597
msgid "Copy category parameter templates when creating a part"
msgstr "Kategorie-Parameter Vorlagen kopieren wenn ein Teil angelegt wird"
-#: common/models.py:617 part/models.py:2236 report/models.py:187
-#: stock/forms.py:224 templates/js/translated/table_filters.js:25
-#: templates/js/translated/table_filters.js:329
+#: common/models.py:603 part/models.py:2252 report/models.py:187
+#: stock/forms.py:224 templates/js/translated/table_filters.js:38
+#: templates/js/translated/table_filters.js:342
msgid "Template"
msgstr "Vorlage"
-#: common/models.py:618
+#: common/models.py:604
msgid "Parts are templates by default"
msgstr "Teile sind standardmäßig Vorlagen"
-#: common/models.py:624 part/models.py:803
-#: templates/js/translated/table_filters.js:133
-#: templates/js/translated/table_filters.js:341
+#: common/models.py:610 part/models.py:805
+#: templates/js/translated/table_filters.js:146
+#: templates/js/translated/table_filters.js:354
msgid "Assembly"
msgstr "Baugruppe"
-#: common/models.py:625
+#: common/models.py:611
msgid "Parts can be assembled from other components by default"
msgstr "Teile können standardmäßig aus anderen Teilen angefertigt werden"
-#: common/models.py:631 part/models.py:809
-#: templates/js/translated/table_filters.js:345
+#: common/models.py:617 part/models.py:811
+#: templates/js/translated/table_filters.js:358
msgid "Component"
msgstr "Komponente"
-#: common/models.py:632
+#: common/models.py:618
msgid "Parts can be used as sub-components by default"
msgstr "Teile können standardmäßig in Baugruppen benutzt werden"
-#: common/models.py:638 part/models.py:820
+#: common/models.py:624 part/models.py:822
msgid "Purchaseable"
msgstr "Kaufbar"
-#: common/models.py:639
+#: common/models.py:625
msgid "Parts are purchaseable by default"
msgstr "Artikel sind grundsätzlich kaufbar"
-#: common/models.py:645 part/models.py:825
-#: templates/js/translated/table_filters.js:353
+#: common/models.py:631 part/models.py:827
+#: templates/js/translated/table_filters.js:366
msgid "Salable"
msgstr "Verkäuflich"
-#: common/models.py:646
+#: common/models.py:632
msgid "Parts are salable by default"
msgstr "Artikel sind grundsätzlich verkaufbar"
-#: common/models.py:652 part/models.py:815
-#: templates/js/translated/table_filters.js:33
-#: templates/js/translated/table_filters.js:357
+#: common/models.py:638 part/models.py:817
+#: templates/js/translated/table_filters.js:46
+#: templates/js/translated/table_filters.js:370
msgid "Trackable"
msgstr "Nachverfolgbar"
-#: common/models.py:653
+#: common/models.py:639
msgid "Parts are trackable by default"
msgstr "Artikel sind grundsätzlich verfolgbar"
-#: common/models.py:659 part/models.py:835
-#: part/templates/part/part_base.html:61
-#: templates/js/translated/table_filters.js:29
+#: common/models.py:645 part/models.py:837
+#: part/templates/part/part_base.html:66
+#: templates/js/translated/table_filters.js:42
msgid "Virtual"
msgstr "Virtuell"
-#: common/models.py:660
+#: common/models.py:646
msgid "Parts are virtual by default"
msgstr "Teile sind grundsätzlich virtuell"
-#: common/models.py:667
+#: common/models.py:653
msgid "Show Quantity in Forms"
msgstr "zeige Bestand in Eingabemasken"
-#: common/models.py:668
+#: common/models.py:654
msgid "Display available part quantity in some forms"
msgstr "Zeige den verfügbaren Bestand in einigen Eingabemasken"
-#: common/models.py:674
+#: common/models.py:660
msgid "Show Import in Views"
msgstr "Import in Ansichten anzeigen"
-#: common/models.py:675
+#: common/models.py:661
msgid "Display the import wizard in some part views"
msgstr "Importassistent in einigen Teil-Ansichten anzeigen"
-#: common/models.py:681
+#: common/models.py:667
msgid "Show Price in Forms"
msgstr "Preis in Formularen anzeigen"
-#: common/models.py:682
+#: common/models.py:668
msgid "Display part price in some forms"
msgstr "Teilpreis in einigen Formularen anzeigen"
-#: common/models.py:688
+#: common/models.py:674
msgid "Show related parts"
msgstr "Verwandte Teile anzeigen"
-#: common/models.py:689
+#: common/models.py:675
msgid "Display related parts for a part"
msgstr "Verwandte Teile eines Teils anzeigen"
-#: common/models.py:695
+#: common/models.py:681
msgid "Create initial stock"
msgstr "Ausgangsbestand erstellen"
-#: common/models.py:696
+#: common/models.py:682
msgid "Create initial stock on part creation"
msgstr "Ausgangsbestand beim Erstellen von Teilen erstellen"
-#: common/models.py:702
+#: common/models.py:688
msgid "Internal Prices"
msgstr "Interne Preise"
-#: common/models.py:703
+#: common/models.py:689
msgid "Enable internal prices for parts"
msgstr "Interne Preise für Teile aktivieren"
-#: common/models.py:709
+#: common/models.py:695
msgid "Internal Price as BOM-Price"
msgstr "Interner Preis als Stückliste-Preis"
-#: common/models.py:710
+#: common/models.py:696
msgid "Use the internal price (if set) in BOM-price calculations"
msgstr "Interner Preis (falls vorhanden) in Stücklisten-Preisberechnungen verwenden"
-#: common/models.py:716 templates/stats.html:25
+#: common/models.py:702 templates/stats.html:25
msgid "Debug Mode"
msgstr "Entwickler-Modus"
-#: common/models.py:717
+#: common/models.py:703
msgid "Generate reports in debug mode (HTML output)"
msgstr "Berichte im Entwickler-Modus generieren (als HTML)"
-#: common/models.py:723
+#: common/models.py:709
msgid "Page Size"
msgstr "Seitengröße"
-#: common/models.py:724
+#: common/models.py:710
msgid "Default page size for PDF reports"
msgstr "Standardseitenformat für PDF-Bericht"
-#: common/models.py:734
+#: common/models.py:720
msgid "Test Reports"
msgstr "Test-Berichte"
-#: common/models.py:735
+#: common/models.py:721
msgid "Enable generation of test reports"
msgstr "Erstellung von Test-Berichten aktivieren"
-#: common/models.py:741
+#: common/models.py:727
msgid "Stock Expiry"
msgstr "Bestands-Ablauf"
-#: common/models.py:742
+#: common/models.py:728
msgid "Enable stock expiry functionality"
msgstr "Ablaufen von Bestand ermöglichen"
-#: common/models.py:748
+#: common/models.py:734
msgid "Sell Expired Stock"
msgstr "Abgelaufenen Bestand verkaufen"
-#: common/models.py:749
+#: common/models.py:735
msgid "Allow sale of expired stock"
msgstr "Verkauf von abgelaufenem Bestand erlaubt"
-#: common/models.py:755
+#: common/models.py:741
msgid "Stock Stale Time"
msgstr "Bestands-Stehzeit"
-#: common/models.py:756
+#: common/models.py:742
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:758
+#: common/models.py:744
msgid "days"
msgstr "Tage"
-#: common/models.py:763
+#: common/models.py:749
msgid "Build Expired Stock"
msgstr "Abgelaufenen Bestand verbauen"
-#: common/models.py:764
+#: common/models.py:750
msgid "Allow building with expired stock"
msgstr "Verbauen von abgelaufenen Bestand erlaubt"
-#: common/models.py:770
+#: common/models.py:756
msgid "Stock Ownership Control"
msgstr "Bestands-Eigentümerkontrolle"
-#: common/models.py:771
+#: common/models.py:757
msgid "Enable ownership control over stock locations and items"
msgstr "Eigentümerkontrolle für Lagerorte und Teile aktivieren"
-#: common/models.py:777
+#: common/models.py:763
msgid "Group by Part"
msgstr "Gruppieren nach Teil"
-#: common/models.py:778
+#: common/models.py:764
msgid "Group stock items by part reference in table views"
msgstr "Bestand in Tabellen anhand von Teil-Referenz gruppieren"
-#: common/models.py:784
+#: common/models.py:770
msgid "Build Order Reference Prefix"
msgstr "Bauauftrag-Referenz Präfix"
-#: common/models.py:785
+#: common/models.py:771
msgid "Prefix value for build order reference"
msgstr "Präfix für Bauauftrag-Referenz"
-#: common/models.py:790
+#: common/models.py:776
msgid "Build Order Reference Regex"
msgstr "Bauauftrag-Referenz RegEx"
-#: common/models.py:791
+#: common/models.py:777
msgid "Regular expression pattern for matching build order reference"
msgstr "RegEx Muster für die Zuordnung von Bauauftrag-Referenzen"
-#: common/models.py:795
+#: common/models.py:781
msgid "Sales Order Reference Prefix"
msgstr "Auftrags-Referenz Präfix"
-#: common/models.py:796
+#: common/models.py:782
msgid "Prefix value for sales order reference"
msgstr "Präfix für Auftrags-Referenz"
-#: common/models.py:801
+#: common/models.py:787
msgid "Purchase Order Reference Prefix"
msgstr "Bestellungs-Referenz Präfix"
-#: common/models.py:802
+#: common/models.py:788
msgid "Prefix value for purchase order reference"
msgstr "Präfix für Bestellungs-Referenz"
-#: common/models.py:826
+#: common/models.py:794
+msgid "Enable build"
+msgstr ""
+
+#: common/models.py:795
+msgid "Enable build functionality in InvenTree interface"
+msgstr ""
+
+#: common/models.py:800
+msgid "Enable buy"
+msgstr ""
+
+#: common/models.py:801
+msgid "Enable buy functionality in InvenTree interface"
+msgstr ""
+
+#: common/models.py:806
+msgid "Enable sell"
+msgstr ""
+
+#: common/models.py:807
+msgid "Enable sell functionality in InvenTree interface"
+msgstr ""
+
+#: common/models.py:812
+msgid "Enable stock"
+msgstr ""
+
+#: common/models.py:813
+msgid "Enable stock functionality in InvenTree interface"
+msgstr ""
+
+#: common/models.py:818
+msgid "Enable SO"
+msgstr ""
+
+#: common/models.py:819
+msgid "Enable SO functionality in InvenTree interface"
+msgstr ""
+
+#: common/models.py:824
+msgid "Enable PO"
+msgstr ""
+
+#: common/models.py:825
+msgid "Enable PO functionality in InvenTree interface"
+msgstr ""
+
+#: common/models.py:850
msgid "Show starred parts"
msgstr "Markierte Teile anzeigen"
-#: common/models.py:827
+#: common/models.py:851
msgid "Show starred parts on the homepage"
msgstr "Zeige markierte Teile auf der Startseite"
-#: common/models.py:832
+#: common/models.py:856
msgid "Show latest parts"
msgstr "Neueste Teile anzeigen"
-#: common/models.py:833
+#: common/models.py:857
msgid "Show latest parts on the homepage"
msgstr "Zeige neueste Teile auf der Startseite"
-#: common/models.py:838
+#: common/models.py:862
msgid "Recent Part Count"
msgstr "Aktuelle Teile-Stände"
-#: common/models.py:839
+#: common/models.py:863
msgid "Number of recent parts to display on index page"
msgstr "Anzahl der neusten Teile auf der Startseite"
-#: common/models.py:845
+#: common/models.py:869
msgid "Show unvalidated BOMs"
msgstr "Nicht validierte Stücklisten anzeigen"
-#: common/models.py:846
+#: common/models.py:870
msgid "Show BOMs that await validation on the homepage"
msgstr ""
-#: common/models.py:851
+#: common/models.py:875
msgid "Show recent stock changes"
msgstr "Neueste Lagerbestand Änderungen anzeigen"
-#: common/models.py:852
+#: common/models.py:876
msgid "Show recently changed stock items on the homepage"
msgstr "Zeige zuletzt geänderte Lagerbestände auf der Startseite"
-#: common/models.py:857
+#: common/models.py:881
msgid "Recent Stock Count"
msgstr "aktueller Bestand"
-#: common/models.py:858
+#: common/models.py:882
msgid "Number of recent stock items to display on index page"
msgstr "Anzahl des geänderten Bestands auf der Startseite"
-#: common/models.py:863
+#: common/models.py:887
msgid "Show low stock"
msgstr "Niedrigen Bestand anzeigen"
-#: common/models.py:864
+#: common/models.py:888
msgid "Show low stock items on the homepage"
msgstr "Zeige geringen Lagerbestand auf der Startseite"
-#: common/models.py:869
+#: common/models.py:893
msgid "Show depleted stock"
msgstr ""
-#: common/models.py:870
+#: common/models.py:894
msgid "Show depleted stock items on the homepage"
msgstr ""
-#: common/models.py:875
+#: common/models.py:899
msgid "Show needed stock"
msgstr "Benötigten Bestand anzeigen"
-#: common/models.py:876
+#: common/models.py:900
msgid "Show stock items needed for builds on the homepage"
msgstr "Zeige Bestand für Bauaufträge auf der Startseite"
-#: common/models.py:881
+#: common/models.py:905
msgid "Show expired stock"
msgstr "Abgelaufenen Bestand anzeigen"
-#: common/models.py:882
+#: common/models.py:906
msgid "Show expired stock items on the homepage"
msgstr "Zeige Abgelaufene Lagerbestände auf der Startseite"
-#: common/models.py:887
+#: common/models.py:911
msgid "Show stale stock"
msgstr ""
-#: common/models.py:888
+#: common/models.py:912
msgid "Show stale stock items on the homepage"
msgstr ""
-#: common/models.py:893
+#: common/models.py:917
msgid "Show pending builds"
msgstr "Ausstehende Bauaufträge anzeigen"
-#: common/models.py:894
+#: common/models.py:918
msgid "Show pending builds on the homepage"
msgstr "Zeige ausstehende Bauaufträge auf der Startseite"
-#: common/models.py:899
+#: common/models.py:923
msgid "Show overdue builds"
msgstr "Zeige überfällige Bauaufträge"
-#: common/models.py:900
+#: common/models.py:924
msgid "Show overdue builds on the homepage"
msgstr "Zeige überfällige Bauaufträge auf der Startseite"
-#: common/models.py:905
+#: common/models.py:929
msgid "Show outstanding POs"
msgstr "Ausstehende POs anzeigen"
-#: common/models.py:906
+#: common/models.py:930
msgid "Show outstanding POs on the homepage"
msgstr "Ausstehende POs auf der Startseite anzeigen"
-#: common/models.py:911
+#: common/models.py:935
msgid "Show overdue POs"
msgstr "Überfällige POs anzeigen"
-#: common/models.py:912
+#: common/models.py:936
msgid "Show overdue POs on the homepage"
msgstr "Überfällige POs auf der Startseite anzeigen"
-#: common/models.py:917
+#: common/models.py:941
msgid "Show outstanding SOs"
msgstr "Ausstehende SOs anzeigen"
-#: common/models.py:918
+#: common/models.py:942
msgid "Show outstanding SOs on the homepage"
msgstr "Ausstehende SOs auf der Startseite anzeigen"
-#: common/models.py:923
+#: common/models.py:947
msgid "Show overdue SOs"
msgstr "Überfällige SOs anzeigen"
-#: common/models.py:924
+#: common/models.py:948
msgid "Show overdue SOs on the homepage"
msgstr "Überfällige SOs auf der Startseite anzeigen"
-#: common/models.py:930
+#: common/models.py:954
msgid "Inline label display"
msgstr ""
-#: common/models.py:931
+#: common/models.py:955
msgid "Display PDF labels in the browser, instead of downloading as a file"
msgstr ""
-#: common/models.py:937
+#: common/models.py:961
msgid "Inline report display"
-msgstr ""
+msgstr "Berichte inline anzeigen"
-#: common/models.py:938
+#: common/models.py:962
msgid "Display PDF reports in the browser, instead of downloading as a file"
-msgstr ""
+msgstr "PDF-Berichte im Browser anzeigen, anstatt als Datei herunterzuladen"
-#: common/models.py:944
+#: common/models.py:968
msgid "Search Preview Results"
msgstr "Anzahl Suchergebnisse"
-#: common/models.py:945
+#: common/models.py:969
msgid "Number of results to show in search preview window"
msgstr "Anzahl der Ergebnisse, die in der Vorschau angezeigt werden sollen"
-#: common/models.py:1002 company/forms.py:43
+#: common/models.py:1026 company/forms.py:43
msgid "Price break quantity"
msgstr "Preisstaffelungs Anzahl"
-#: common/models.py:1009 company/templates/company/supplier_part.html:231
-#: templates/js/translated/part.js:1153
+#: common/models.py:1033 company/templates/company/supplier_part.html:231
+#: templates/js/translated/part.js:1322
msgid "Price"
msgstr "Preis"
-#: common/models.py:1010
+#: common/models.py:1034
msgid "Unit price at specified quantity"
msgstr "Stückpreis für die angegebene Anzahl"
-#: common/models.py:1103
+#: common/models.py:1127
msgid "Default"
msgstr "Standard"
@@ -2123,7 +2200,7 @@ msgstr "Benutzereinstellungen ändern"
#: order/templates/order/po_navbar.html:19
#: order/templates/order/po_navbar.html:22
#: order/templates/order/purchase_order_detail.html:26 order/views.py:290
-#: part/templates/part/bom_upload/upload_file.html:45
+#: part/templates/part/bom_upload/upload_file.html:65
#: part/templates/part/import_wizard/part_upload.html:45 part/views.py:268
#: part/views.py:882
msgid "Upload File"
@@ -2154,7 +2231,7 @@ msgstr "Teile importiert"
#: order/templates/order/order_wizard/po_upload.html:40
#: 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:43
+#: part/templates/part/bom_upload/upload_file.html:63
#: 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:43
@@ -2169,244 +2246,249 @@ msgstr "URL"
msgid "Image URL"
msgstr "Bild-URL"
-#: company/models.py:102
+#: company/models.py:104
msgid "Company description"
msgstr "Firmenbeschreibung"
-#: company/models.py:103
+#: company/models.py:105
msgid "Description of the company"
msgstr "Firmenbeschreibung"
-#: company/models.py:109 company/templates/company/company_base.html:70
-#: templates/js/translated/company.js:303
+#: company/models.py:111 company/templates/company/company_base.html:70
+#: templates/js/translated/company.js:348
msgid "Website"
msgstr "Website"
-#: company/models.py:110
+#: company/models.py:112
msgid "Company website URL"
msgstr "Firmenwebsite Adresse/URL"
-#: company/models.py:114 company/templates/company/company_base.html:88
+#: company/models.py:116 company/templates/company/company_base.html:88
msgid "Address"
msgstr "Adresse"
-#: company/models.py:115
+#: company/models.py:117
msgid "Company address"
msgstr "Firmenadresse"
-#: company/models.py:118
+#: company/models.py:120
msgid "Phone number"
msgstr "Kontakt-Tel."
-#: company/models.py:119
+#: company/models.py:121
msgid "Contact phone number"
msgstr "Kontakt-Telefon"
-#: company/models.py:122 company/templates/company/company_base.html:102
+#: company/models.py:124 company/templates/company/company_base.html:102
msgid "Email"
msgstr "Email"
-#: company/models.py:122
+#: company/models.py:124
msgid "Contact email address"
msgstr "Kontakt-Email"
-#: company/models.py:125 company/templates/company/company_base.html:109
+#: company/models.py:127 company/templates/company/company_base.html:109
msgid "Contact"
msgstr "Kontakt"
-#: company/models.py:126
+#: company/models.py:128
msgid "Point of contact"
msgstr "Anlaufstelle"
-#: company/models.py:128 company/models.py:345 company/models.py:513
-#: order/models.py:160 part/models.py:712
+#: company/models.py:130 company/models.py:347 company/models.py:563
+#: order/models.py:160 part/models.py:714
#: report/templates/report/inventree_build_order_base.html:165
-#: templates/js/translated/company.js:486
-#: templates/js/translated/company.js:768 templates/js/translated/part.js:819
+#: templates/js/translated/company.js:535
+#: templates/js/translated/company.js:823 templates/js/translated/part.js:972
msgid "Link"
msgstr "Link"
-#: company/models.py:128
+#: company/models.py:130
msgid "Link to external company information"
msgstr "Link auf externe Firmeninformation"
-#: company/models.py:136 part/models.py:722
+#: company/models.py:138 part/models.py:724
msgid "Image"
msgstr "Bild"
-#: company/models.py:141
+#: company/models.py:143
msgid "is customer"
msgstr "ist Kunde"
-#: company/models.py:141
+#: company/models.py:143
msgid "Do you sell items to this company?"
msgstr "Verkaufen Sie Teile an diese Firma?"
-#: company/models.py:143
+#: company/models.py:145
msgid "is supplier"
msgstr "ist Zulieferer"
-#: company/models.py:143
+#: company/models.py:145
msgid "Do you purchase items from this company?"
msgstr "Kaufen Sie Teile von dieser Firma?"
-#: company/models.py:145
+#: company/models.py:147
msgid "is manufacturer"
msgstr "ist Hersteller"
-#: company/models.py:145
+#: company/models.py:147
msgid "Does this company manufacture parts?"
msgstr "Produziert diese Firma Teile?"
-#: company/models.py:149 company/serializers.py:245
-#: company/templates/company/company_base.html:76
+#: company/models.py:151 company/serializers.py:264
+#: company/templates/company/company_base.html:76 stock/serializers.py:155
msgid "Currency"
msgstr "Währung"
-#: company/models.py:152
+#: company/models.py:154
msgid "Default currency used for this company"
msgstr "Standard-Währung für diese Firma"
-#: company/models.py:317 company/models.py:484 stock/models.py:448
+#: company/models.py:319 company/models.py:534 stock/models.py:454
#: stock/templates/stock/item_base.html:237
msgid "Base Part"
msgstr "Basisteil"
-#: company/models.py:321 company/models.py:488 order/views.py:1082
+#: company/models.py:323 company/models.py:538 order/views.py:1082
msgid "Select part"
msgstr "Teil auswählen"
-#: company/models.py:332 company/templates/company/company_base.html:116
+#: company/models.py:334 company/templates/company/company_base.html:116
#: company/templates/company/manufacturer_part.html:89
#: company/templates/company/supplier_part.html:98 part/bom.py:170
#: part/bom.py:241 stock/templates/stock/item_base.html:366
-#: templates/js/translated/company.js:287
-#: templates/js/translated/company.js:463
-#: templates/js/translated/company.js:739
+#: templates/js/translated/company.js:332
+#: templates/js/translated/company.js:512
+#: templates/js/translated/company.js:794 templates/js/translated/part.js:222
msgid "Manufacturer"
msgstr "Hersteller"
-#: company/models.py:333
+#: company/models.py:335 templates/js/translated/part.js:223
msgid "Select manufacturer"
msgstr "Hersteller auswählen"
-#: company/models.py:339 company/templates/company/manufacturer_part.html:93
-#: company/templates/company/supplier_part.html:106
-#: order/templates/order/purchase_order_detail.html:331 part/bom.py:171
-#: part/bom.py:242 templates/js/translated/company.js:479
-#: templates/js/translated/company.js:757
+#: company/models.py:341 company/templates/company/manufacturer_part.html:93
+#: company/templates/company/supplier_part.html:106 part/bom.py:171
+#: part/bom.py:242 templates/js/translated/company.js:528
+#: templates/js/translated/company.js:812 templates/js/translated/order.js:505
+#: templates/js/translated/part.js:233
msgid "MPN"
msgstr "MPN"
-#: company/models.py:340
+#: company/models.py:342 templates/js/translated/part.js:234
msgid "Manufacturer Part Number"
msgstr "Hersteller-Teilenummer"
-#: company/models.py:346
+#: company/models.py:348
msgid "URL for external manufacturer part link"
msgstr "Externe URL für das Herstellerteil"
-#: company/models.py:352
+#: company/models.py:354
msgid "Manufacturer part description"
msgstr "Teilbeschreibung des Herstellers"
-#: company/models.py:406 company/models.py:507
+#: company/models.py:408 company/models.py:557
#: company/templates/company/manufacturer_part.html:6
#: company/templates/company/manufacturer_part.html:23
#: stock/templates/stock/item_base.html:376
msgid "Manufacturer Part"
msgstr "Herstellerteil"
-#: company/models.py:413
+#: company/models.py:415
msgid "Parameter name"
msgstr "Parametername"
-#: company/models.py:419
+#: company/models.py:421
#: report/templates/report/inventree_test_report_base.html:90
-#: stock/models.py:1808 templates/InvenTree/settings/header.html:8
-#: templates/js/translated/company.js:589 templates/js/translated/part.js:480
-#: templates/js/translated/stock.js:505
+#: stock/models.py:1819 templates/InvenTree/settings/header.html:8
+#: templates/js/translated/company.js:642 templates/js/translated/part.js:612
+#: templates/js/translated/stock.js:576
msgid "Value"
msgstr "Wert"
-#: company/models.py:420
+#: company/models.py:422
msgid "Parameter value"
msgstr "Parameterwert"
-#: company/models.py:426 part/models.py:797 part/models.py:2204
-#: templates/js/translated/company.js:595 templates/js/translated/part.js:486
+#: company/models.py:428 part/models.py:799 part/models.py:2220
+#: templates/js/translated/company.js:648 templates/js/translated/part.js:618
msgid "Units"
msgstr "Einheiten"
-#: company/models.py:427
+#: company/models.py:429
msgid "Parameter units"
msgstr "Parametereinheit"
-#: company/models.py:494 company/templates/company/company_base.html:121
+#: company/models.py:501
+msgid "Linked manufacturer part must reference the same base part"
+msgstr ""
+
+#: company/models.py:544 company/templates/company/company_base.html:121
#: company/templates/company/supplier_part.html:88 order/models.py:260
#: order/templates/order/order_base.html:92
#: order/templates/order/order_wizard/select_pos.html:30 part/bom.py:175
#: part/bom.py:286 stock/templates/stock/item_base.html:383
-#: templates/js/translated/company.js:291
-#: templates/js/translated/company.js:713 templates/js/translated/order.js:254
+#: templates/js/translated/company.js:336
+#: templates/js/translated/company.js:768 templates/js/translated/order.js:328
+#: templates/js/translated/part.js:203
msgid "Supplier"
msgstr "Zulieferer"
-#: company/models.py:495
+#: company/models.py:545 templates/js/translated/part.js:204
msgid "Select supplier"
msgstr "Zulieferer auswählen"
-#: company/models.py:500 company/templates/company/supplier_part.html:92
-#: order/templates/order/purchase_order_detail.html:318 part/bom.py:176
-#: part/bom.py:287
+#: company/models.py:550 company/templates/company/supplier_part.html:92
+#: part/bom.py:176 part/bom.py:287 templates/js/translated/order.js:492
+#: templates/js/translated/part.js:214
msgid "SKU"
msgstr "SKU (Lagerbestandseinheit)"
-#: company/models.py:501
+#: company/models.py:551 templates/js/translated/part.js:215
msgid "Supplier stock keeping unit"
msgstr "Lagerbestandseinheit (SKU) des Zulieferers"
-#: company/models.py:508
+#: company/models.py:558
msgid "Select manufacturer part"
msgstr "Herstellerteil auswählen"
-#: company/models.py:514
+#: company/models.py:564
msgid "URL for external supplier part link"
msgstr "Teil-URL des Zulieferers"
-#: company/models.py:520
+#: company/models.py:570
msgid "Supplier part description"
msgstr "Zuliefererbeschreibung des Teils"
-#: company/models.py:525 company/templates/company/supplier_part.html:120
-#: part/models.py:2352 report/templates/report/inventree_po_report.html:93
+#: company/models.py:575 company/templates/company/supplier_part.html:120
+#: part/models.py:2368 report/templates/report/inventree_po_report.html:93
#: report/templates/report/inventree_so_report.html:93
msgid "Note"
msgstr "Notiz"
-#: company/models.py:529 part/models.py:1590
+#: company/models.py:579 part/models.py:1599
msgid "base cost"
msgstr "Basiskosten"
-#: company/models.py:529 part/models.py:1590
+#: company/models.py:579 part/models.py:1599
msgid "Minimum charge (e.g. stocking fee)"
msgstr "Mindestpreis"
-#: company/models.py:531 company/templates/company/supplier_part.html:113
-#: stock/models.py:472 stock/templates/stock/item_base.html:324
-#: templates/js/translated/company.js:789 templates/js/translated/stock.js:1086
+#: company/models.py:581 company/templates/company/supplier_part.html:113
+#: stock/models.py:478 stock/templates/stock/item_base.html:324
+#: templates/js/translated/company.js:844 templates/js/translated/stock.js:1057
msgid "Packaging"
msgstr "Verpackungen"
-#: company/models.py:531
+#: company/models.py:581
msgid "Part packaging"
msgstr "Teile-Verpackungen"
-#: company/models.py:533 part/models.py:1592
+#: company/models.py:583 part/models.py:1601
msgid "multiple"
msgstr "Vielfache"
-#: company/models.py:533
+#: company/models.py:583
msgid "Order multiple"
msgstr "Mehrere bestellen"
@@ -2420,7 +2502,7 @@ msgstr "Währungscode"
#: company/templates/company/company_base.html:9
#: company/templates/company/company_base.html:35
-#: templates/InvenTree/search.html:304 templates/js/translated/company.js:276
+#: templates/InvenTree/search.html:304 templates/js/translated/company.js:321
msgid "Company"
msgstr "Firma"
@@ -2435,7 +2517,7 @@ msgid "Download image from URL"
msgstr "Bild von URL herunterladen"
#: company/templates/company/company_base.html:46
-#: templates/js/translated/order.js:83
+#: templates/js/translated/order.js:117
msgid "Create Purchase Order"
msgstr "Bestellung anlegen"
@@ -2460,16 +2542,16 @@ msgstr "verwendet Standard-Währung"
msgid "Phone"
msgstr "Telefon"
-#: company/templates/company/company_base.html:126 order/models.py:544
-#: order/templates/order/sales_order_base.html:94 stock/models.py:490
-#: stock/models.py:491 stock/templates/stock/item_base.html:276
-#: templates/js/translated/company.js:283 templates/js/translated/order.js:351
-#: templates/js/translated/stock.js:1467
+#: company/templates/company/company_base.html:126 order/models.py:550
+#: order/templates/order/sales_order_base.html:94 stock/models.py:496
+#: stock/models.py:497 stock/templates/stock/item_base.html:276
+#: templates/js/translated/company.js:328 templates/js/translated/order.js:692
+#: templates/js/translated/stock.js:1608
msgid "Customer"
msgstr "Kunde"
#: company/templates/company/company_base.html:193
-#: part/templates/part/part_base.html:405
+#: part/templates/part/part_base.html:418
msgid "Upload Image"
msgstr "Bild hochladen"
@@ -2490,8 +2572,8 @@ msgstr "Neues Zuliefererteil anlegen"
msgid "New Supplier Part"
msgstr "Neues Zuliefererteil"
-#: company/templates/company/detail.html:28
-#: company/templates/company/detail.html:70
+#: company/templates/company/detail.html:27
+#: company/templates/company/detail.html:67
#: company/templates/company/manufacturer_part.html:112
#: company/templates/company/manufacturer_part.html:136
#: part/templates/part/category.html:135 part/templates/part/detail.html:292
@@ -2499,106 +2581,106 @@ msgstr "Neues Zuliefererteil"
msgid "Options"
msgstr "Optionen"
-#: company/templates/company/detail.html:33
-#: company/templates/company/detail.html:75
+#: company/templates/company/detail.html:32
+#: company/templates/company/detail.html:72
#: part/templates/part/category.html:140
msgid "Order parts"
msgstr "Teile bestellen"
-#: company/templates/company/detail.html:36
-#: company/templates/company/detail.html:78
+#: company/templates/company/detail.html:35
+#: company/templates/company/detail.html:75
msgid "Delete parts"
msgstr "Teile löschen"
-#: company/templates/company/detail.html:36
-#: company/templates/company/detail.html:78
+#: company/templates/company/detail.html:35
+#: company/templates/company/detail.html:75
msgid "Delete Parts"
msgstr "Teile löschen"
-#: company/templates/company/detail.html:56 templates/InvenTree/search.html:149
+#: company/templates/company/detail.html:54 templates/InvenTree/search.html:149
msgid "Manufacturer Parts"
msgstr "Herstellerteile"
-#: company/templates/company/detail.html:64
+#: company/templates/company/detail.html:62
msgid "Create new manufacturer part"
msgstr "Neues Herstellerteil anlegen"
-#: company/templates/company/detail.html:65 part/templates/part/detail.html:312
+#: company/templates/company/detail.html:63 part/templates/part/detail.html:312
msgid "New Manufacturer Part"
msgstr "Neues Herstellerteil"
-#: company/templates/company/detail.html:97
+#: company/templates/company/detail.html:93
msgid "Supplier Stock"
msgstr "Zulieferer-Bestand"
-#: company/templates/company/detail.html:106
-#: company/templates/company/navbar.html:40
-#: company/templates/company/navbar.html:43
+#: company/templates/company/detail.html:102
+#: company/templates/company/navbar.html:46
+#: company/templates/company/navbar.html:49
#: order/templates/order/purchase_orders.html:8
#: order/templates/order/purchase_orders.html:13
-#: part/templates/part/detail.html:50 part/templates/part/navbar.html:71
-#: part/templates/part/navbar.html:74 templates/InvenTree/index.html:260
+#: part/templates/part/detail.html:50 part/templates/part/navbar.html:82
+#: part/templates/part/navbar.html:85 templates/InvenTree/index.html:260
#: templates/InvenTree/search.html:325
#: templates/InvenTree/settings/navbar.html:107
-#: templates/InvenTree/settings/navbar.html:109 templates/navbar.html:37
+#: templates/InvenTree/settings/navbar.html:109 templates/navbar.html:44
#: users/models.py:45
msgid "Purchase Orders"
msgstr "Bestellungen"
-#: company/templates/company/detail.html:112
+#: company/templates/company/detail.html:108
#: order/templates/order/purchase_orders.html:20
msgid "Create new purchase order"
msgstr "Neue Bestellung anlegen"
-#: company/templates/company/detail.html:113
+#: company/templates/company/detail.html:109
#: order/templates/order/purchase_orders.html:21
msgid "New Purchase Order"
msgstr "Neue Bestellung"
-#: company/templates/company/detail.html:128
-#: company/templates/company/navbar.html:49
-#: company/templates/company/navbar.html:52
+#: company/templates/company/detail.html:124
+#: company/templates/company/navbar.html:55
+#: company/templates/company/navbar.html:58
#: order/templates/order/sales_orders.html:8
#: order/templates/order/sales_orders.html:13
-#: part/templates/part/detail.html:71 part/templates/part/navbar.html:79
-#: part/templates/part/navbar.html:82 templates/InvenTree/index.html:291
+#: part/templates/part/detail.html:71 part/templates/part/navbar.html:91
+#: part/templates/part/navbar.html:94 templates/InvenTree/index.html:291
#: templates/InvenTree/search.html:345
#: templates/InvenTree/settings/navbar.html:113
-#: templates/InvenTree/settings/navbar.html:115 templates/navbar.html:46
+#: templates/InvenTree/settings/navbar.html:115 templates/navbar.html:55
#: users/models.py:46
msgid "Sales Orders"
msgstr "Aufträge"
-#: company/templates/company/detail.html:134
+#: company/templates/company/detail.html:130
#: order/templates/order/sales_orders.html:20
msgid "Create new sales order"
msgstr "Neuen Auftrag anlegen"
-#: company/templates/company/detail.html:135
+#: company/templates/company/detail.html:131
#: order/templates/order/sales_orders.html:21
msgid "New Sales Order"
msgstr "Neuer Auftrag"
-#: company/templates/company/detail.html:151
-#: company/templates/company/navbar.html:55
-#: company/templates/company/navbar.html:58
-#: templates/js/translated/build.js:597
+#: company/templates/company/detail.html:147
+#: company/templates/company/navbar.html:61
+#: company/templates/company/navbar.html:64
+#: templates/js/translated/build.js:620
msgid "Assigned Stock"
msgstr "Zugeordneter Bestand"
-#: company/templates/company/detail.html:169
+#: company/templates/company/detail.html:165
msgid "Company Notes"
msgstr "Firmenbemerkungen"
#: company/templates/company/detail.html:364
#: company/templates/company/manufacturer_part.html:200
-#: part/templates/part/detail.html:826
+#: part/templates/part/detail.html:357
msgid "Delete Supplier Parts?"
msgstr "Zuliefererteil entfernen?"
#: company/templates/company/detail.html:365
#: company/templates/company/manufacturer_part.html:201
-#: part/templates/part/detail.html:827
+#: part/templates/part/detail.html:358
msgid "All selected supplier parts will be deleted"
msgstr "Alle ausgewählten Zulieferteile werden gelöscht"
@@ -2609,17 +2691,17 @@ msgstr "Zulieferer-Liste"
#: company/templates/company/manufacturer_part.html:40
#: company/templates/company/supplier_part.html:40
#: company/templates/company/supplier_part.html:146
-#: part/templates/part/detail.html:55 part/templates/part/part_base.html:109
+#: part/templates/part/detail.html:55 part/templates/part/part_base.html:116
msgid "Order part"
msgstr "Teil bestellen"
#: company/templates/company/manufacturer_part.html:45
-#: templates/js/translated/company.js:511
+#: templates/js/translated/company.js:560
msgid "Edit manufacturer part"
msgstr "Herstellerteil bearbeiten"
#: company/templates/company/manufacturer_part.html:49
-#: templates/js/translated/company.js:512
+#: templates/js/translated/company.js:561
msgid "Delete manufacturer part"
msgstr "Herstellerteil löschen"
@@ -2634,9 +2716,9 @@ msgstr "Internes Teil"
#: company/templates/company/manufacturer_part.html:103
#: company/templates/company/manufacturer_part_navbar.html:21
-#: company/views.py:49 part/templates/part/navbar.html:65
-#: part/templates/part/navbar.html:68 part/templates/part/prices.html:144
-#: templates/InvenTree/search.html:316 templates/navbar.html:35
+#: company/views.py:49 part/templates/part/navbar.html:75
+#: part/templates/part/navbar.html:78 part/templates/part/prices.html:163
+#: templates/InvenTree/search.html:316 templates/navbar.html:41
msgid "Suppliers"
msgstr "Zulieferer"
@@ -2649,8 +2731,8 @@ msgstr "Zuliefererteil entfernen"
#: company/templates/company/manufacturer_part.html:138
#: company/templates/company/manufacturer_part.html:239
#: part/templates/part/detail.html:214 part/templates/part/detail.html:294
-#: part/templates/part/detail.html:317 templates/js/translated/company.js:377
-#: users/models.py:194
+#: part/templates/part/detail.html:317 templates/js/translated/company.js:424
+#: templates/js/translated/helpers.js:31 users/models.py:194
msgid "Delete"
msgstr "Löschen"
@@ -2659,8 +2741,8 @@ msgstr "Löschen"
#: company/templates/company/manufacturer_part_navbar.html:14
#: part/templates/part/category_navbar.html:38
#: part/templates/part/category_navbar.html:41
-#: part/templates/part/detail.html:155 part/templates/part/navbar.html:14
-#: part/templates/part/navbar.html:17
+#: part/templates/part/detail.html:155 part/templates/part/navbar.html:20
+#: part/templates/part/navbar.html:23
msgid "Parameters"
msgstr "Parameter"
@@ -2676,7 +2758,7 @@ msgid "Delete parameters"
msgstr "Parameter löschen"
#: company/templates/company/manufacturer_part.html:176
-#: part/templates/part/detail.html:719
+#: part/templates/part/detail.html:834
msgid "Add Parameter"
msgstr "Parameter hinzufügen"
@@ -2693,18 +2775,18 @@ msgid "Manufacturer Part Stock"
msgstr "Herstellerteil-Bestand"
#: company/templates/company/manufacturer_part_navbar.html:29
-#: company/templates/company/navbar.html:34
+#: company/templates/company/navbar.html:39
#: company/templates/company/supplier_part_navbar.html:15
-#: part/templates/part/navbar.html:31 stock/api.py:53
+#: part/templates/part/navbar.html:38 stock/api.py:54
#: stock/templates/stock/loc_link.html:7 stock/templates/stock/location.html:36
#: stock/templates/stock/stock_app_base.html:10
#: templates/InvenTree/index.html:150 templates/InvenTree/search.html:196
#: templates/InvenTree/search.html:232
#: templates/InvenTree/settings/navbar.html:95
#: templates/InvenTree/settings/navbar.html:97
-#: templates/js/translated/part.js:401 templates/js/translated/part.js:626
-#: templates/js/translated/part.js:786 templates/js/translated/stock.js:133
-#: templates/js/translated/stock.js:935 templates/navbar.html:26
+#: templates/js/translated/part.js:529 templates/js/translated/part.js:758
+#: templates/js/translated/part.js:934 templates/js/translated/stock.js:202
+#: templates/js/translated/stock.js:850 templates/navbar.html:32
msgid "Stock"
msgstr "Lagerbestand"
@@ -2717,41 +2799,41 @@ msgstr "Herstellerteil-Bestellungen"
msgid "Orders"
msgstr "Bestellungen"
-#: company/templates/company/navbar.html:13
-#: company/templates/company/navbar.html:16
+#: company/templates/company/navbar.html:17
+#: company/templates/company/navbar.html:20
msgid "Manufactured Parts"
msgstr "Hergestellte Teile"
-#: company/templates/company/navbar.html:22
-#: company/templates/company/navbar.html:25
+#: company/templates/company/navbar.html:26
+#: company/templates/company/navbar.html:29
msgid "Supplied Parts"
msgstr "Zuliefererteile"
-#: company/templates/company/navbar.html:31 part/templates/part/navbar.html:28
+#: company/templates/company/navbar.html:36 part/templates/part/navbar.html:35
#: stock/templates/stock/location.html:119
#: stock/templates/stock/location.html:134
#: stock/templates/stock/location.html:148
#: stock/templates/stock/location_navbar.html:18
#: stock/templates/stock/location_navbar.html:21
-#: templates/InvenTree/search.html:198 templates/js/translated/stock.js:1366
+#: templates/InvenTree/search.html:198 templates/js/translated/stock.js:1507
#: templates/stats.html:93 templates/stats.html:102 users/models.py:43
msgid "Stock Items"
msgstr "Teilbestand"
#: company/templates/company/supplier_part.html:7
-#: company/templates/company/supplier_part.html:24 stock/models.py:457
+#: company/templates/company/supplier_part.html:24 stock/models.py:463
#: stock/templates/stock/item_base.html:388
-#: templates/js/translated/company.js:729 templates/js/translated/stock.js:1058
+#: templates/js/translated/company.js:784 templates/js/translated/stock.js:1014
msgid "Supplier Part"
msgstr "Zuliefererteil"
#: company/templates/company/supplier_part.html:44
-#: templates/js/translated/company.js:802
+#: templates/js/translated/company.js:857
msgid "Edit supplier part"
msgstr "Zuliefererteil bearbeiten"
#: company/templates/company/supplier_part.html:48
-#: templates/js/translated/company.js:803
+#: templates/js/translated/company.js:858
msgid "Delete supplier part"
msgstr "Zuliefererteil entfernen"
@@ -2775,13 +2857,13 @@ msgid "Order Part"
msgstr "Teil bestellen"
#: company/templates/company/supplier_part.html:158
-#: part/templates/part/navbar.html:58 part/templates/part/prices.html:7
+#: part/templates/part/navbar.html:67 part/templates/part/prices.html:7
msgid "Pricing Information"
msgstr "Preisinformationen ansehen"
#: company/templates/company/supplier_part.html:164
#: company/templates/company/supplier_part.html:265
-#: part/templates/part/prices.html:253 part/views.py:1722
+#: part/templates/part/prices.html:271 part/views.py:1730
msgid "Add Price Break"
msgstr "Preisstaffel hinzufügen"
@@ -2789,11 +2871,11 @@ msgstr "Preisstaffel hinzufügen"
msgid "No price break information found"
msgstr "Keine Informationen zur Preisstaffel gefunden"
-#: company/templates/company/supplier_part.html:199 part/views.py:1784
+#: company/templates/company/supplier_part.html:199 part/views.py:1792
msgid "Delete Price Break"
msgstr "Preisstaffel löschen"
-#: company/templates/company/supplier_part.html:213 part/views.py:1770
+#: company/templates/company/supplier_part.html:213 part/views.py:1778
msgid "Edit Price Break"
msgstr "Preisstaffel bearbeiten"
@@ -2817,8 +2899,8 @@ msgstr "Bepreisung"
msgid "New Supplier"
msgstr "Neuer Zulieferer"
-#: company/views.py:55 part/templates/part/prices.html:148
-#: templates/InvenTree/search.html:306 templates/navbar.html:36
+#: company/views.py:55 part/templates/part/prices.html:167
+#: templates/InvenTree/search.html:306 templates/navbar.html:42
msgid "Manufacturers"
msgstr "Hersteller"
@@ -2827,7 +2909,7 @@ msgid "New Manufacturer"
msgstr "Neuer Hersteller"
#: company/views.py:61 templates/InvenTree/search.html:336
-#: templates/navbar.html:45
+#: templates/navbar.html:53
msgid "Customers"
msgstr "Kunden"
@@ -2929,6 +3011,10 @@ msgstr "Abfragefilter (kommagetrennte Liste mit Schlüssel=Wert-Paaren)"
msgid "Part query filters (comma-separated value of key=value pairs)"
msgstr ""
+#: order/api.py:302
+msgid "Destination location must be specified"
+msgstr ""
+
#: order/forms.py:30 order/templates/order/order_base.html:47
msgid "Place order"
msgstr "Bestellung aufgeben"
@@ -2978,11 +3064,11 @@ msgstr "Nutzer oder Gruppe der/die für diesen Auftrag zuständig ist/sind"
msgid "Order notes"
msgstr "Bestell-Notizen"
-#: order/models.py:247 order/models.py:534
+#: order/models.py:247 order/models.py:540
msgid "Order reference"
msgstr "Bestell-Referenz"
-#: order/models.py:252 order/models.py:549
+#: order/models.py:252 order/models.py:555
msgid "Purchase order status"
msgstr "Bestellungs-Status"
@@ -2991,7 +3077,7 @@ msgid "Company from which the items are being ordered"
msgstr "Firma bei der die Teile bestellt werden"
#: order/models.py:264 order/templates/order/order_base.html:98
-#: templates/js/translated/order.js:263
+#: templates/js/translated/order.js:337
msgid "Supplier Reference"
msgstr "Zulieferer-Referenz"
@@ -3023,7 +3109,7 @@ msgstr "Geplantes Lieferdatum für Auftrag."
msgid "Date order was completed"
msgstr "Datum an dem der Auftrag fertigstellt wurde"
-#: order/models.py:313 stock/models.py:345 stock/models.py:1060
+#: order/models.py:313 stock/models.py:351 stock/models.py:1072
msgid "Quantity must be greater than zero"
msgstr "Anzahl muss größer Null sein"
@@ -3031,150 +3117,182 @@ msgstr "Anzahl muss größer Null sein"
msgid "Part supplier must match PO supplier"
msgstr "Teile-Zulieferer muss dem Zulieferer der Bestellung entsprechen"
-#: order/models.py:416
+#: order/models.py:421
msgid "Lines can only be received against an order marked as 'Placed'"
msgstr "Nur Teile aufgegebener Bestllungen können empfangen werden"
-#: order/models.py:420
+#: order/models.py:425
msgid "Quantity must be an integer"
msgstr "Anzahl muss eine Ganzzahl sein"
-#: order/models.py:422
+#: order/models.py:427
msgid "Quantity must be a positive number"
msgstr "Anzahl muss eine positive Zahl sein"
-#: order/models.py:545
+#: order/models.py:551
msgid "Company to which the items are being sold"
msgstr "Firma an die die Teile verkauft werden"
-#: order/models.py:551
+#: order/models.py:557
msgid "Customer Reference "
msgstr "Kundenreferenz"
-#: order/models.py:551
+#: order/models.py:557
msgid "Customer order reference code"
msgstr "Bestellreferenz"
-#: order/models.py:556
+#: order/models.py:562
msgid "Target date for order completion. Order will be overdue after this date."
msgstr "Zieldatum für Auftrags-Fertigstellung."
-#: order/models.py:559 templates/js/translated/order.js:392
+#: order/models.py:565 templates/js/translated/order.js:733
msgid "Shipment Date"
msgstr "Versanddatum"
-#: order/models.py:566
+#: order/models.py:572
msgid "shipped by"
msgstr "Versand von"
-#: order/models.py:610
+#: order/models.py:616
msgid "SalesOrder cannot be shipped as it is not currently pending"
msgstr "Bestellung kann nicht versendet werden weil er nicht anhängig ist"
-#: order/models.py:707
+#: order/models.py:713
msgid "Item quantity"
msgstr "Anzahl"
-#: order/models.py:713
+#: order/models.py:719
msgid "Line item reference"
msgstr "Position - Referenz"
-#: order/models.py:715
+#: order/models.py:721
msgid "Line item notes"
msgstr "Position - Notizen"
-#: order/models.py:745 order/models.py:823 templates/js/translated/order.js:442
+#: order/models.py:751 order/models.py:835 templates/js/translated/order.js:785
msgid "Order"
msgstr "Bestellung"
-#: order/models.py:746 order/templates/order/order_base.html:9
+#: order/models.py:752 order/templates/order/order_base.html:9
#: order/templates/order/order_base.html:24
#: report/templates/report/inventree_po_report.html:77
#: stock/templates/stock/item_base.html:338
-#: templates/js/translated/order.js:232 templates/js/translated/stock.js:1037
-#: templates/js/translated/stock.js:1448
+#: templates/js/translated/order.js:306 templates/js/translated/stock.js:991
+#: templates/js/translated/stock.js:1589
msgid "Purchase Order"
msgstr "Bestellung"
-#: order/models.py:767
+#: order/models.py:773
msgid "Supplier part"
msgstr "Zuliefererteil"
-#: order/models.py:770 order/templates/order/order_base.html:131
-#: order/templates/order/purchase_order_detail.html:388
+#: order/models.py:780 order/templates/order/order_base.html:131
#: order/templates/order/receive_parts.html:22
#: order/templates/order/sales_order_base.html:133
+#: templates/js/translated/order.js:573
msgid "Received"
msgstr "Empfangen"
-#: order/models.py:770
+#: order/models.py:781
msgid "Number of items received"
msgstr "Empfangene Objekt-Anzahl"
-#: order/models.py:776 part/templates/part/prices.html:157 stock/models.py:582
-#: stock/templates/stock/item_base.html:345
-#: templates/js/translated/stock.js:1081
+#: order/models.py:788 part/templates/part/prices.html:176 stock/models.py:588
+#: stock/serializers.py:147 stock/templates/stock/item_base.html:345
+#: templates/js/translated/stock.js:1045
msgid "Purchase Price"
msgstr "Preis"
-#: order/models.py:777
+#: order/models.py:789
msgid "Unit purchase price"
msgstr "Preis pro Einheit"
-#: order/models.py:785
+#: order/models.py:797
msgid "Where does the Purchaser want this item to be stored?"
msgstr "Wo möchte der Käufer diesen Artikel gelagert haben?"
-#: order/models.py:831 part/templates/part/part_pricing.html:97
-#: part/templates/part/prices.html:97 part/templates/part/prices.html:266
+#: order/models.py:843 part/templates/part/part_pricing.html:112
+#: part/templates/part/prices.html:116 part/templates/part/prices.html:284
msgid "Sale Price"
msgstr "Verkaufspreis"
-#: order/models.py:832
+#: order/models.py:844
msgid "Unit sale price"
msgstr "Stückverkaufspreis"
-#: order/models.py:911 order/models.py:913
+#: order/models.py:923 order/models.py:925
msgid "Stock item has not been assigned"
msgstr "BestandsObjekt wurde nicht zugewiesen"
-#: order/models.py:917
+#: order/models.py:929
msgid "Cannot allocate stock item to a line with a different part"
msgstr "Kann BestandsObjekt keiner Zeile mit einem anderen Teil hinzufügen"
-#: order/models.py:919
+#: order/models.py:931
msgid "Cannot allocate stock to a line without a part"
msgstr "Kann BestandsObjekt keiner Zeile ohne Teil hinzufügen"
-#: order/models.py:922
+#: order/models.py:934
msgid "Allocation quantity cannot exceed stock quantity"
msgstr "Die zugeordnete Anzahl darf nicht die verfügbare Anzahl überschreiten"
-#: order/models.py:932
+#: order/models.py:944
msgid "Quantity must be 1 for serialized stock item"
msgstr "Anzahl für BestandsObjekt mit Seriennummer muss 1 sein"
-#: order/models.py:937
+#: order/models.py:949
msgid "Line"
msgstr "Position"
-#: order/models.py:948
+#: order/models.py:960
msgid "Item"
msgstr "Position"
-#: order/models.py:949
+#: order/models.py:961
msgid "Select stock item to allocate"
msgstr "BestandsObjekt für Zuordnung auswählen"
-#: order/models.py:952
+#: order/models.py:964
msgid "Enter stock allocation quantity"
msgstr "Anzahl für Bestandszuordnung eingeben"
-#: order/serializers.py:139
+#: order/serializers.py:166
msgid "Purchase price currency"
msgstr "Kaufpreiswährung"
-#: order/serializers.py:360
+#: order/serializers.py:201
+msgid "Line Item"
+msgstr ""
+
+#: order/serializers.py:207
+msgid "Line item does not match purchase order"
+msgstr ""
+
+#: order/serializers.py:217 order/serializers.py:276
+msgid "Select destination location for received items"
+msgstr ""
+
+#: order/serializers.py:234
+msgid "Barcode Hash"
+msgstr ""
+
+#: order/serializers.py:235
+msgid "Unique identifier field"
+msgstr ""
+
+#: order/serializers.py:250
+msgid "Barcode is already in use"
+msgstr ""
+
+#: order/serializers.py:289
+msgid "Line items must be provided"
+msgstr ""
+
+#: order/serializers.py:299
+msgid "Supplied barcode values must be unique"
+msgstr ""
+
+#: order/serializers.py:514
msgid "Sale price currency"
msgstr "Verkaufspreis-Währung"
@@ -3227,14 +3345,12 @@ msgid "Edit Purchase Order"
msgstr "Bestellung bearbeiten"
#: order/templates/order/order_base.html:196
-#: order/templates/order/purchase_order_detail.html:265
-#: stock/templates/stock/location.html:250
+#: stock/templates/stock/location.html:250 templates/js/translated/order.js:437
msgid "New Location"
msgstr "Neuer Lagerort"
#: order/templates/order/order_base.html:197
-#: order/templates/order/purchase_order_detail.html:266
-#: stock/templates/stock/location.html:42
+#: stock/templates/stock/location.html:42 templates/js/translated/order.js:438
msgid "Create new stock location"
msgstr "Neuen Lagerort anlegen"
@@ -3336,7 +3452,7 @@ msgid "Upload File for Purchase Order"
msgstr "Datei zur Bestellung hochladen"
#: order/templates/order/order_wizard/po_upload.html:18
-#: part/templates/part/bom_upload/upload_file.html:24
+#: part/templates/part/bom_upload/upload_file.html:34
#: part/templates/part/import_wizard/ajax_part_upload.html:10
#: part/templates/part/import_wizard/part_upload.html:21
#, python-format
@@ -3369,8 +3485,8 @@ msgstr "Kein Preis"
#: order/templates/order/order_wizard/select_parts.html:65
#, python-format
-msgid "Select a supplier for %(name)s"
-msgstr "Zulieferer auswählen für %(name)s"
+msgid "Select a supplier for %(name)s"
+msgstr "Zulieferer auswählen für %(name)s"
#: order/templates/order/order_wizard/select_parts.html:77
#: part/templates/part/set_category.html:32
@@ -3386,7 +3502,7 @@ msgid "Select existing purchase orders, or create new orders."
msgstr "Bestellungen auswählen oder anlegen."
#: order/templates/order/order_wizard/select_pos.html:31
-#: templates/js/translated/order.js:289 templates/js/translated/order.js:397
+#: templates/js/translated/order.js:363 templates/js/translated/order.js:738
msgid "Items"
msgstr "Positionen"
@@ -3425,9 +3541,9 @@ msgid "Purchase Order Items"
msgstr "Bestellungs-Positionen"
#: order/templates/order/purchase_order_detail.html:23
-#: order/templates/order/purchase_order_detail.html:202
+#: order/templates/order/purchase_order_detail.html:203
#: order/templates/order/sales_order_detail.html:23
-#: order/templates/order/sales_order_detail.html:176
+#: order/templates/order/sales_order_detail.html:177
msgid "Add Line Item"
msgstr "Position hinzufügen"
@@ -3436,49 +3552,6 @@ msgstr "Position hinzufügen"
msgid "Order Notes"
msgstr "Notizen zur Bestellung"
-#: order/templates/order/purchase_order_detail.html:238
-#: order/templates/order/sales_order_detail.html:518
-msgid "Edit Line Item"
-msgstr "Position bearbeiten"
-
-#: order/templates/order/purchase_order_detail.html:248
-#: order/templates/order/sales_order_detail.html:528
-msgid "Delete Line Item"
-msgstr "Position löschen"
-
-#: order/templates/order/purchase_order_detail.html:279
-msgid "No line items found"
-msgstr "Keine Positionen gefunden"
-
-#: order/templates/order/purchase_order_detail.html:307
-#: order/templates/order/sales_order_detail.html:353
-msgid "Total"
-msgstr "Summe"
-
-#: order/templates/order/purchase_order_detail.html:360
-#: order/templates/order/sales_order_detail.html:376
-#: templates/js/translated/part.js:1128 templates/js/translated/part.js:1317
-msgid "Unit Price"
-msgstr "Stück-Preis"
-
-#: order/templates/order/purchase_order_detail.html:367
-#: order/templates/order/sales_order_detail.html:383
-msgid "Total price"
-msgstr "Gesamtpreis"
-
-#: order/templates/order/purchase_order_detail.html:431
-#: order/templates/order/sales_order_detail.html:489
-msgid "Edit line item"
-msgstr "Position bearbeiten"
-
-#: order/templates/order/purchase_order_detail.html:432
-msgid "Delete line item"
-msgstr "Position löschen"
-
-#: order/templates/order/purchase_order_detail.html:437
-msgid "Receive line item"
-msgstr "Position empfangen"
-
#: order/templates/order/purchase_orders.html:24
#: order/templates/order/sales_orders.html:24
msgid "Print Order Reports"
@@ -3486,18 +3559,18 @@ msgstr "Berichte drucken"
#: order/templates/order/receive_parts.html:8
#, python-format
-msgid "Receive outstanding parts for %(order)s - %(desc)s"
-msgstr "Ausstehende Teile für %(order)s - %(desc)s empfangen"
+msgid "Receive outstanding parts for %(order)s - %(desc)s"
+msgstr "Ausstehende Teile für %(order)s - %(desc)s empfangen"
-#: order/templates/order/receive_parts.html:14 part/api.py:49
-#: part/models.py:296 part/templates/part/cat_link.html:7
+#: order/templates/order/receive_parts.html:14 part/api.py:54
+#: part/models.py:298 part/templates/part/cat_link.html:7
#: part/templates/part/category.html:108 part/templates/part/category.html:122
#: part/templates/part/category_navbar.html:21
#: part/templates/part/category_navbar.html:24
#: templates/InvenTree/index.html:102 templates/InvenTree/search.html:114
#: templates/InvenTree/settings/navbar.html:83
#: templates/InvenTree/settings/navbar.html:85
-#: templates/js/translated/part.js:987 templates/navbar.html:23
+#: templates/js/translated/part.js:1154 templates/navbar.html:29
#: templates/stats.html:80 templates/stats.html:89 users/models.py:41
msgid "Parts"
msgstr "Teile"
@@ -3511,7 +3584,7 @@ msgid "Order Code"
msgstr "Bestellnummer"
#: order/templates/order/receive_parts.html:21
-#: part/templates/part/part_base.html:160 templates/js/translated/part.js:802
+#: part/templates/part/part_base.html:167 templates/js/translated/part.js:949
msgid "On Order"
msgstr "Bestellt"
@@ -3540,7 +3613,7 @@ msgid "Sales Order Details"
msgstr "Auftragsdetails"
#: order/templates/order/sales_order_base.html:100
-#: templates/js/translated/order.js:364
+#: templates/js/translated/order.js:705
msgid "Customer Reference"
msgstr "Kundenreferenz"
@@ -3563,71 +3636,102 @@ msgstr "Abbruch dieser Bestellung bedeutet, dass sie nicht länger bearbeitbar i
msgid "Sales Order Items"
msgstr "Auftrags-Positionen"
-#: order/templates/order/sales_order_detail.html:225
-#: templates/js/translated/bom.js:378 templates/js/translated/build.js:759
-#: templates/js/translated/build.js:1202
+#: order/templates/order/sales_order_detail.html:226
+#: templates/js/translated/bom.js:394 templates/js/translated/build.js:782
+#: templates/js/translated/build.js:1219
msgid "Actions"
msgstr "Aktionen"
-#: order/templates/order/sales_order_detail.html:232
-#: templates/js/translated/build.js:645 templates/js/translated/build.js:1011
+#: order/templates/order/sales_order_detail.html:233
+#: templates/js/translated/build.js:668 templates/js/translated/build.js:1030
msgid "Edit stock allocation"
msgstr "Bestands-Zuordnung bearbeiten"
-#: order/templates/order/sales_order_detail.html:233
-#: templates/js/translated/build.js:647 templates/js/translated/build.js:1012
+#: order/templates/order/sales_order_detail.html:234
+#: templates/js/translated/build.js:670 templates/js/translated/build.js:1031
msgid "Delete stock allocation"
msgstr "Bestands-Zuordnung löschen"
-#: order/templates/order/sales_order_detail.html:306
+#: order/templates/order/sales_order_detail.html:307
msgid "No matching line items"
msgstr "Keine passenden Positionen gefunden"
-#: order/templates/order/sales_order_detail.html:336
+#: order/templates/order/sales_order_detail.html:337
msgid "ID"
msgstr "ID"
-#: order/templates/order/sales_order_detail.html:404
-#: templates/js/translated/build.js:710 templates/js/translated/build.js:1007
+#: order/templates/order/sales_order_detail.html:354
+#: templates/js/translated/order.js:481
+msgid "Total"
+msgstr "Summe"
+
+#: order/templates/order/sales_order_detail.html:377
+#: templates/js/translated/order.js:534 templates/js/translated/part.js:1296
+#: templates/js/translated/part.js:1507
+msgid "Unit Price"
+msgstr "Stück-Preis"
+
+#: order/templates/order/sales_order_detail.html:384
+#: templates/js/translated/order.js:543
+msgid "Total price"
+msgstr "Gesamtpreis"
+
+#: order/templates/order/sales_order_detail.html:405
+#: templates/js/translated/build.js:733 templates/js/translated/build.js:1026
msgid "Allocated"
msgstr "Zugeordnet"
-#: order/templates/order/sales_order_detail.html:406
+#: order/templates/order/sales_order_detail.html:407
msgid "Fulfilled"
msgstr "Erledigt"
-#: order/templates/order/sales_order_detail.html:443
+#: order/templates/order/sales_order_detail.html:444
msgid "PO"
msgstr "PO"
-#: order/templates/order/sales_order_detail.html:473
+#: order/templates/order/sales_order_detail.html:474
msgid "Allocate serial numbers"
msgstr "Seriennummern zuweisen"
-#: order/templates/order/sales_order_detail.html:476
-#: templates/js/translated/build.js:773
+#: order/templates/order/sales_order_detail.html:477
+#: templates/js/translated/build.js:796
msgid "Allocate stock"
msgstr "Lagerbestand zuweisen"
-#: order/templates/order/sales_order_detail.html:479
+#: order/templates/order/sales_order_detail.html:480
msgid "Purchase stock"
msgstr "Lagerbestand kaufen"
-#: order/templates/order/sales_order_detail.html:483
-#: templates/js/translated/build.js:766 templates/js/translated/build.js:1210
+#: order/templates/order/sales_order_detail.html:484
+#: templates/js/translated/build.js:789 templates/js/translated/build.js:1227
msgid "Build stock"
msgstr "Lagerbestand bauen"
-#: order/templates/order/sales_order_detail.html:486
-#: order/templates/order/sales_order_detail.html:605
+#: order/templates/order/sales_order_detail.html:487
+#: order/templates/order/sales_order_detail.html:606
msgid "Calculate price"
msgstr "Preis berechnen"
#: order/templates/order/sales_order_detail.html:490
+#: templates/js/translated/order.js:616
+msgid "Edit line item"
+msgstr "Position bearbeiten"
+
+#: order/templates/order/sales_order_detail.html:491
msgid "Delete line item "
msgstr "Position löschen "
-#: order/templates/order/sales_order_detail.html:611
+#: order/templates/order/sales_order_detail.html:519
+#: templates/js/translated/order.js:403
+msgid "Edit Line Item"
+msgstr "Position bearbeiten"
+
+#: order/templates/order/sales_order_detail.html:529
+#: templates/js/translated/order.js:415
+msgid "Delete Line Item"
+msgstr "Position löschen"
+
+#: order/templates/order/sales_order_detail.html:612
msgid "Update Unit Price"
msgstr "Stückpreis aktualisieren"
@@ -3814,12 +3918,28 @@ msgstr "Stückpreis für {part} auf {price} aktualisiert"
msgid "Updated {part} unit-price to {price} and quantity to {qty}"
msgstr "{part} Stückpreis auf {price} und Menge auf {qty} aktualisiert"
-#: part/bom.py:133 part/models.py:73 part/models.py:731
-#: part/templates/part/category.html:75 part/templates/part/part_base.html:282
+#: part/api.py:700
+msgid "Must be greater than zero"
+msgstr "Muss größer als 0 sein"
+
+#: part/api.py:704
+msgid "Must be a valid quantity"
+msgstr "Muss eine gültige Nummer sein"
+
+#: part/api.py:719
+msgid "Specify location for initial part stock"
+msgstr "Standort für anfänglichen Bestand angeben"
+
+#: part/api.py:750 part/api.py:754 part/api.py:769 part/api.py:773
+msgid "This field is required"
+msgstr "Dieses Feld ist erforderlich"
+
+#: part/bom.py:133 part/models.py:75 part/models.py:733
+#: part/templates/part/category.html:75 part/templates/part/part_base.html:290
msgid "Default Location"
msgstr "Standard-Lagerort"
-#: part/bom.py:134 part/templates/part/part_base.html:149
+#: part/bom.py:134 part/templates/part/part_base.html:156
msgid "Available Stock"
msgstr "Verfügbarer Lagerbestand"
@@ -3879,7 +3999,7 @@ msgstr "Zulieferer einschließen"
msgid "Include part supplier data in exported BOM"
msgstr "Zulieferer-Daten in Stückliste-Export einschließen"
-#: part/forms.py:96 part/models.py:2234
+#: part/forms.py:96 part/models.py:2250
msgid "Parent Part"
msgstr "Ausgangsteil"
@@ -3923,391 +4043,391 @@ msgstr "Parameter-Vorlage zu allen Kategorien hinzufügen"
msgid "Input quantity for price calculation"
msgstr "Menge für die Preisberechnung"
-#: part/models.py:74
+#: part/models.py:76
msgid "Default location for parts in this category"
msgstr "Standard-Lagerort für Teile dieser Kategorie"
-#: part/models.py:77
+#: part/models.py:79
msgid "Default keywords"
msgstr "Standard Stichwörter"
-#: part/models.py:77
+#: part/models.py:79
msgid "Default keywords for parts in this category"
msgstr "Standard-Stichworte für Teile dieser Kategorie"
-#: part/models.py:87 part/models.py:2280
+#: part/models.py:89 part/models.py:2296
#: part/templates/part/part_app_base.html:10
msgid "Part Category"
msgstr "Teil-Kategorie"
-#: part/models.py:88 part/templates/part/category.html:32
+#: part/models.py:90 part/templates/part/category.html:32
#: part/templates/part/category.html:103 templates/InvenTree/search.html:127
#: templates/stats.html:84 users/models.py:40
msgid "Part Categories"
msgstr "Teil-Kategorien"
-#: part/models.py:381
+#: part/models.py:383
msgid "Invalid choice for parent part"
msgstr "Ungültige Auswahl für übergeordnetes Teil"
-#: part/models.py:433 part/models.py:445
+#: part/models.py:435 part/models.py:447
#, 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:542
+#: part/models.py:544
msgid "Next available serial numbers are"
msgstr "Nächste verfügbare Seriennummern wären"
-#: part/models.py:546
+#: part/models.py:548
msgid "Next available serial number is"
msgstr "Nächste verfügbare Seriennummer ist"
-#: part/models.py:551
+#: part/models.py:553
msgid "Most recent serial number is"
msgstr "Die neuste Seriennummer ist"
-#: part/models.py:630
+#: part/models.py:632
msgid "Duplicate IPN not allowed in part settings"
msgstr "Doppelte IPN in den Teil-Einstellungen nicht erlaubt"
-#: part/models.py:655
+#: part/models.py:657
msgid "Part name"
msgstr "Name des Teils"
-#: part/models.py:662
+#: part/models.py:664
msgid "Is Template"
msgstr "Ist eine Vorlage"
-#: part/models.py:663
+#: part/models.py:665
msgid "Is this part a template part?"
msgstr "Ist dieses Teil eine Vorlage?"
-#: part/models.py:673
+#: part/models.py:675
msgid "Is this part a variant of another part?"
msgstr "Ist dieses Teil eine Variante eines anderen Teils?"
-#: part/models.py:674
+#: part/models.py:676
msgid "Variant Of"
msgstr "Variante von"
-#: part/models.py:680
+#: part/models.py:682
msgid "Part description"
msgstr "Beschreibung des Teils"
-#: part/models.py:685 part/templates/part/category.html:82
-#: part/templates/part/part_base.html:251
+#: part/models.py:687 part/templates/part/category.html:82
+#: part/templates/part/part_base.html:259
msgid "Keywords"
msgstr "Schlüsselwörter"
-#: part/models.py:686
+#: part/models.py:688
msgid "Part keywords to improve visibility in search results"
msgstr "Schlüsselworte um die Sichtbarkeit in Suchergebnissen zu verbessern"
-#: part/models.py:693 part/models.py:2279
+#: part/models.py:695 part/models.py:2295
#: part/templates/part/set_category.html:15
#: templates/InvenTree/settings/settings.html:167
-#: templates/js/translated/part.js:773
+#: templates/js/translated/part.js:916
msgid "Category"
msgstr "Kategorie"
-#: part/models.py:694
+#: part/models.py:696
msgid "Part category"
msgstr "Teile-Kategorie"
-#: part/models.py:699 part/templates/part/part_base.html:227
-#: templates/js/translated/part.js:389 templates/js/translated/part.js:617
+#: part/models.py:701 part/templates/part/part_base.html:235
+#: templates/js/translated/part.js:517 templates/js/translated/part.js:749
msgid "IPN"
msgstr "IPN (Interne Produktnummer)"
-#: part/models.py:700
+#: part/models.py:702
msgid "Internal Part Number"
msgstr "Interne Teilenummer"
-#: part/models.py:706
+#: part/models.py:708
msgid "Part revision or version number"
msgstr "Revisions- oder Versionsnummer"
-#: part/models.py:707 part/templates/part/part_base.html:244
-#: report/models.py:200 templates/js/translated/part.js:393
+#: part/models.py:709 part/templates/part/part_base.html:252
+#: report/models.py:200 templates/js/translated/part.js:521
msgid "Revision"
msgstr "Revision"
-#: part/models.py:729
+#: part/models.py:731
msgid "Where is this item normally stored?"
msgstr "Wo wird dieses Teil normalerweise gelagert?"
-#: part/models.py:776 part/templates/part/part_base.html:289
+#: part/models.py:778 part/templates/part/part_base.html:297
msgid "Default Supplier"
msgstr "Standard Zulieferer"
-#: part/models.py:777
+#: part/models.py:779
msgid "Default supplier part"
msgstr "Standard Zuliefererteil"
-#: part/models.py:784
+#: part/models.py:786
msgid "Default Expiry"
msgstr "Standard Ablaufzeit"
-#: part/models.py:785
+#: part/models.py:787
msgid "Expiry time (in days) for stock items of this part"
msgstr "Ablauf-Zeit (in Tagen) für Lagerbestand dieses Teils"
-#: part/models.py:790
+#: part/models.py:792
msgid "Minimum Stock"
msgstr "Minimaler Lagerbestand"
-#: part/models.py:791
+#: part/models.py:793
msgid "Minimum allowed stock level"
msgstr "Minimal zulässiger Lagerbestand"
-#: part/models.py:798
+#: part/models.py:800
msgid "Stock keeping units for this part"
msgstr "Stock Keeping Units (SKU) für dieses Teil"
-#: part/models.py:804
+#: part/models.py:806
msgid "Can this part be built from other parts?"
msgstr "Kann dieses Teil aus anderen Teilen angefertigt werden?"
-#: part/models.py:810
+#: part/models.py:812
msgid "Can this part be used to build other parts?"
msgstr "Kann dieses Teil zum Bauauftrag von anderen genutzt werden?"
-#: part/models.py:816
+#: part/models.py:818
msgid "Does this part have tracking for unique items?"
msgstr "Hat dieses Teil Tracking für einzelne Objekte?"
-#: part/models.py:821
+#: part/models.py:823
msgid "Can this part be purchased from external suppliers?"
msgstr "Kann dieses Teil von externen Zulieferern gekauft werden?"
-#: part/models.py:826
+#: part/models.py:828
msgid "Can this part be sold to customers?"
msgstr "Kann dieses Teil an Kunden verkauft werden?"
-#: part/models.py:830 templates/js/translated/table_filters.js:21
-#: templates/js/translated/table_filters.js:69
-#: templates/js/translated/table_filters.js:255
-#: templates/js/translated/table_filters.js:324
+#: part/models.py:832 templates/js/translated/table_filters.js:34
+#: templates/js/translated/table_filters.js:82
+#: templates/js/translated/table_filters.js:268
+#: templates/js/translated/table_filters.js:337
msgid "Active"
msgstr "Aktiv"
-#: part/models.py:831
+#: part/models.py:833
msgid "Is this part active?"
msgstr "Ist dieses Teil aktiv?"
-#: part/models.py:836
+#: part/models.py:838
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:841
+#: part/models.py:843
msgid "Part notes - supports Markdown formatting"
msgstr "Bemerkungen - unterstüzt Markdown-Formatierung"
-#: part/models.py:844
+#: part/models.py:846
msgid "BOM checksum"
msgstr "Prüfsumme der Stückliste"
-#: part/models.py:844
+#: part/models.py:846
msgid "Stored BOM checksum"
msgstr "Prüfsumme der Stückliste gespeichert"
-#: part/models.py:847
+#: part/models.py:849
msgid "BOM checked by"
msgstr "Stückliste kontrolliert von"
-#: part/models.py:849
+#: part/models.py:851
msgid "BOM checked date"
msgstr "BOM Kontrolldatum"
-#: part/models.py:853
+#: part/models.py:855
msgid "Creation User"
msgstr "Erstellungs-Nutzer"
-#: part/models.py:1592
+#: part/models.py:1601
msgid "Sell multiple"
msgstr "Mehrere verkaufen"
-#: part/models.py:2080
+#: part/models.py:2096
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:2097
+#: part/models.py:2113
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:2117 templates/js/translated/part.js:1038
-#: templates/js/translated/stock.js:485
+#: part/models.py:2133 templates/js/translated/part.js:1205
+#: templates/js/translated/stock.js:556
msgid "Test Name"
msgstr "Test-Name"
-#: part/models.py:2118
+#: part/models.py:2134
msgid "Enter a name for the test"
msgstr "Namen für diesen Test eingeben"
-#: part/models.py:2123
+#: part/models.py:2139
msgid "Test Description"
msgstr "Test-Beschreibung"
-#: part/models.py:2124
+#: part/models.py:2140
msgid "Enter description for this test"
msgstr "Beschreibung für diesen Test eingeben"
-#: part/models.py:2129 templates/js/translated/part.js:1047
-#: templates/js/translated/table_filters.js:241
+#: part/models.py:2145 templates/js/translated/part.js:1214
+#: templates/js/translated/table_filters.js:254
msgid "Required"
msgstr "Benötigt"
-#: part/models.py:2130
+#: part/models.py:2146
msgid "Is this test required to pass?"
msgstr "Muss dieser Test erfolgreich sein?"
-#: part/models.py:2135 templates/js/translated/part.js:1055
+#: part/models.py:2151 templates/js/translated/part.js:1222
msgid "Requires Value"
msgstr "Erfordert Wert"
-#: part/models.py:2136
+#: part/models.py:2152
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:2141 templates/js/translated/part.js:1062
+#: part/models.py:2157 templates/js/translated/part.js:1229
msgid "Requires Attachment"
msgstr "Anhang muss eingegeben werden"
-#: part/models.py:2142
+#: part/models.py:2158
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:2153
+#: part/models.py:2169
#, python-brace-format
msgid "Illegal character in template name ({c})"
-msgstr ""
+msgstr "Ungültiges Zeichen im Vorlagename ({c})"
-#: part/models.py:2189
+#: part/models.py:2205
msgid "Parameter template name must be unique"
msgstr "Vorlagen-Name des Parameters muss eindeutig sein"
-#: part/models.py:2197
+#: part/models.py:2213
msgid "Parameter Name"
msgstr "Name des Parameters"
-#: part/models.py:2204
+#: part/models.py:2220
msgid "Parameter Units"
msgstr "Einheit des Parameters"
-#: part/models.py:2236 part/models.py:2285 part/models.py:2286
+#: part/models.py:2252 part/models.py:2301 part/models.py:2302
#: templates/InvenTree/settings/settings.html:162
msgid "Parameter Template"
msgstr "Parameter Vorlage"
-#: part/models.py:2238
+#: part/models.py:2254
msgid "Data"
msgstr "Wert"
-#: part/models.py:2238
+#: part/models.py:2254
msgid "Parameter Value"
msgstr "Parameter Wert"
-#: part/models.py:2290 templates/InvenTree/settings/settings.html:171
+#: part/models.py:2306 templates/InvenTree/settings/settings.html:171
msgid "Default Value"
msgstr "Standard-Wert"
-#: part/models.py:2291
+#: part/models.py:2307
msgid "Default Parameter Value"
msgstr "Standard Parameter Wert"
-#: part/models.py:2325
+#: part/models.py:2341
msgid "Select parent part"
msgstr "Ausgangsteil auswählen"
-#: part/models.py:2333
+#: part/models.py:2349
msgid "Sub part"
msgstr "Untergeordnetes Teil"
-#: part/models.py:2334
+#: part/models.py:2350
msgid "Select part to be used in BOM"
msgstr "Teil für die Nutzung in der Stückliste auswählen"
-#: part/models.py:2340
+#: part/models.py:2356
msgid "BOM quantity for this BOM item"
msgstr "Stücklisten-Anzahl für dieses Stücklisten-Teil"
-#: part/models.py:2342 templates/js/translated/bom.js:236
-#: templates/js/translated/bom.js:298
+#: part/models.py:2358 templates/js/translated/bom.js:256
+#: templates/js/translated/bom.js:314
msgid "Optional"
msgstr "Optional"
-#: part/models.py:2342
+#: part/models.py:2358
msgid "This BOM item is optional"
msgstr "Diese Stücklisten-Position ist optional"
-#: part/models.py:2345
+#: part/models.py:2361
msgid "Overage"
msgstr "Überschuss"
-#: part/models.py:2346
+#: part/models.py:2362
msgid "Estimated build wastage quantity (absolute or percentage)"
msgstr "Geschätzter Ausschuss (absolut oder prozentual)"
-#: part/models.py:2349
+#: part/models.py:2365
msgid "BOM item reference"
msgstr "Referenz der Postion auf der Stückliste"
-#: part/models.py:2352
+#: part/models.py:2368
msgid "BOM item notes"
msgstr "Notizen zur Stücklisten-Position"
-#: part/models.py:2354
+#: part/models.py:2370
msgid "Checksum"
msgstr "Prüfsumme"
-#: part/models.py:2354
+#: part/models.py:2370
msgid "BOM line checksum"
msgstr "Prüfsumme der Stückliste"
-#: part/models.py:2358 templates/js/translated/bom.js:315
-#: templates/js/translated/bom.js:322
-#: templates/js/translated/table_filters.js:55
+#: part/models.py:2374 templates/js/translated/bom.js:331
+#: templates/js/translated/bom.js:338
+#: templates/js/translated/table_filters.js:68
msgid "Inherited"
msgstr "Geerbt"
-#: part/models.py:2359
+#: part/models.py:2375
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:2364 templates/js/translated/bom.js:307
+#: part/models.py:2380 templates/js/translated/bom.js:323
msgid "Allow Variants"
msgstr "Varianten zulassen"
-#: part/models.py:2365
+#: part/models.py:2381
msgid "Stock items for variant parts can be used for this BOM item"
msgstr "Lagerbestand von Varianten kann für diese Stücklisten-Position verwendet werden"
-#: part/models.py:2450 stock/models.py:335
+#: part/models.py:2466 stock/models.py:341
msgid "Quantity must be integer value for trackable parts"
msgstr "Menge muss eine Ganzzahl sein"
-#: part/models.py:2459 part/models.py:2461
+#: part/models.py:2475 part/models.py:2477
msgid "Sub part must be specified"
msgstr "Zuliefererteil muss festgelegt sein"
-#: part/models.py:2464
+#: part/models.py:2480
msgid "BOM Item"
msgstr "Stücklisten-Position"
-#: part/models.py:2583
+#: part/models.py:2599
msgid "Part 1"
msgstr "Teil 1"
-#: part/models.py:2587
+#: part/models.py:2603
msgid "Part 2"
msgstr "Teil 2"
-#: part/models.py:2587
+#: part/models.py:2603
msgid "Select Related Part"
msgstr "verknüpftes Teil auswählen"
-#: part/models.py:2619
+#: part/models.py:2635
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?"
@@ -4317,18 +4437,18 @@ msgstr "Sie haben keine Berechtigung zum Bearbeiten der Stückliste."
#: part/templates/part/bom.html:14
#, python-format
-msgid "The BOM for %(part)s has changed, and must be validated.
"
-msgstr "Die Stückliste für %(part)s hat sich geändert und muss kontrolliert werden.
"
+msgid "The BOM for %(part)s has changed, and must be validated.
"
+msgstr "Die Stückliste für %(part)s hat sich geändert und muss kontrolliert werden.
"
#: part/templates/part/bom.html:16
#, python-format
-msgid "The BOM for %(part)s was last checked by %(checker)s on %(check_date)s"
-msgstr "Die Stückliste für %(part)s wurde zuletzt von %(checker)s am %(check_date)s kontrolliert"
+msgid "The BOM for %(part)s was last checked by %(checker)s on %(check_date)s"
+msgstr "Die Stückliste für %(part)s wurde zuletzt von %(checker)s am %(check_date)s kontrolliert"
#: part/templates/part/bom.html:20
#, python-format
-msgid "The BOM for %(part)s has not been validated."
-msgstr "Die Stückliste für %(part)s wurde noch nicht kontrolliert"
+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:27
msgid "Remove selected BOM items"
@@ -4374,34 +4494,35 @@ msgstr "Dieses Teil hat bereits eine Stückliste"
msgid "Select Part"
msgstr "Teil auswählen"
-#: part/templates/part/bom_upload/upload_file.html:7
-msgid "Upload BOM File"
-msgstr "Stückliste-Datei hochgeladen"
+#: part/templates/part/bom_upload/upload_file.html:13
+#: part/templates/part/bom_upload/upload_file.html:16
+msgid "Return To BOM"
+msgstr "Zurück zur Stückliste"
-#: part/templates/part/bom_upload/upload_file.html:12
+#: part/templates/part/bom_upload/upload_file.html:27
msgid "Upload Bill of Materials"
msgstr "Stückliste hochladen"
-#: part/templates/part/bom_upload/upload_file.html:16
+#: part/templates/part/bom_upload/upload_file.html:46
msgid "Requirements for BOM upload"
msgstr "Anforderungen für Stückliste-Datei"
-#: part/templates/part/bom_upload/upload_file.html:18
+#: part/templates/part/bom_upload/upload_file.html:48
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:18
+#: part/templates/part/bom_upload/upload_file.html:48
msgid "BOM Upload Template"
msgstr "Vorlage für Stückliste"
-#: part/templates/part/bom_upload/upload_file.html:19
+#: part/templates/part/bom_upload/upload_file.html:49
msgid "Each part must already exist in the database"
msgstr "Jedes Teil muss bereits in der Datenbank bestehen"
#: part/templates/part/bom_validate.html:6
#, python-format
-msgid "Confirm that the Bill of Materials (BOM) is valid for:
%(part)s"
-msgstr "Bestätigen Sie das die Stückliste für
%(part)s korrekt ist"
+msgid "Confirm that the Bill of Materials (BOM) is valid for:
%(part)s"
+msgstr "Bestätigen Sie das die Stückliste für
%(part)s korrekt ist"
#: part/templates/part/bom_validate.html:9
msgid "This will validate each line in the BOM."
@@ -4435,7 +4556,7 @@ msgstr "Pfad zur Kategorie"
msgid "Category Description"
msgstr "Kategorie-Beschreibung"
-#: part/templates/part/category.html:88 part/templates/part/category.html:174
+#: part/templates/part/category.html:88 part/templates/part/category.html:175
#: part/templates/part/category_navbar.html:14
#: part/templates/part/category_navbar.html:17
msgid "Subcategories"
@@ -4449,7 +4570,7 @@ msgstr "Teile (inklusive Unter-Kategorien)"
msgid "Export Part Data"
msgstr "Teile-Daten exportieren"
-#: part/templates/part/category.html:127 part/templates/part/category.html:141
+#: part/templates/part/category.html:127 part/templates/part/category.html:142
msgid "Export"
msgstr "Exportieren"
@@ -4470,28 +4591,32 @@ msgid "Set Category"
msgstr "Teil-Kategorie auswählen"
#: part/templates/part/category.html:141
+msgid "Print Labels"
+msgstr "Label drucken"
+
+#: part/templates/part/category.html:142
msgid "Export Data"
msgstr "Exportieren"
-#: part/templates/part/category.html:145
+#: part/templates/part/category.html:146
msgid "View list display"
msgstr "Listenansicht anzeigen"
-#: part/templates/part/category.html:148
+#: part/templates/part/category.html:149
msgid "View grid display"
msgstr "Rasteransicht anzeigen"
-#: part/templates/part/category.html:164
+#: part/templates/part/category.html:165
msgid "Part Parameters"
msgstr "Teilparameter"
-#: part/templates/part/category.html:253
+#: part/templates/part/category.html:254
msgid "Create Part Category"
-msgstr ""
+msgstr "Teil-Kategorie hinzufügen"
-#: part/templates/part/category.html:279
+#: part/templates/part/category.html:281
msgid "Create Part"
-msgstr ""
+msgstr "Teil hinzufügen"
#: part/templates/part/category_delete.html:5
msgid "Are you sure you want to delete category"
@@ -4533,7 +4658,7 @@ msgstr "Wenn diese Kat. gelöscht wird, werden diese Teile in die oberste Kat. v
msgid "Import Parts"
msgstr "Teile importieren"
-#: part/templates/part/copy_part.html:9 templates/js/translated/part.js:224
+#: part/templates/part/copy_part.html:9 templates/js/translated/part.js:352
msgid "Duplicate Part"
msgstr "Teil duplizieren"
@@ -4554,8 +4679,8 @@ msgstr "Teil evtl. Duplikat dieser Teile"
#: part/templates/part/create_part.html:17
#, python-format
-msgid "%(full_name)s - %(desc)s (%(match_per)s%% match)"
-msgstr "%(full_name)s - %(desc)s (%(match_per)s%% übereinstimmend)"
+msgid "%(full_name)s - %(desc)s (%(match_per)s%% match)"
+msgstr "%(full_name)s - %(desc)s (%(match_per)s%% übereinstimmend)"
#: part/templates/part/detail.html:16
msgid "Part Stock"
@@ -4563,10 +4688,10 @@ msgstr "Teilbestand"
#: part/templates/part/detail.html:21
#, python-format
-msgid "Showing stock for all variants of %(full_name)s"
-msgstr "Lagerbestand aller Varianten von %(full_name)s"
+msgid "Showing stock for all variants of %(full_name)s"
+msgstr "Lagerbestand aller Varianten von %(full_name)s"
-#: part/templates/part/detail.html:30 part/templates/part/navbar.html:87
+#: part/templates/part/detail.html:30 part/templates/part/navbar.html:99
msgid "Part Test Templates"
msgstr "Teil Test-Vorlagen"
@@ -4584,9 +4709,9 @@ msgstr "Neue Bestellung"
#: part/templates/part/detail.html:90
msgid "Sales Order Allocations"
-msgstr ""
+msgstr "Verkaufsauftragszuweisungen"
-#: part/templates/part/detail.html:130 part/templates/part/navbar.html:21
+#: part/templates/part/detail.html:130 part/templates/part/navbar.html:27
msgid "Part Variants"
msgstr "Teil Varianten"
@@ -4602,8 +4727,8 @@ msgstr "neue Variante anlegen"
msgid "Add new parameter"
msgstr "Parameter hinzufügen"
-#: part/templates/part/detail.html:182 part/templates/part/navbar.html:95
-#: part/templates/part/navbar.html:98
+#: part/templates/part/detail.html:182 part/templates/part/navbar.html:107
+#: part/templates/part/navbar.html:110
msgid "Related Parts"
msgstr "Verknüpfte Teile"
@@ -4611,8 +4736,8 @@ msgstr "Verknüpfte Teile"
msgid "Add Related"
msgstr "Verknüpftes Teil hinzufügen"
-#: part/templates/part/detail.html:228 part/templates/part/navbar.html:35
-#: part/templates/part/navbar.html:38
+#: part/templates/part/detail.html:228 part/templates/part/navbar.html:43
+#: part/templates/part/navbar.html:46
msgid "Bill of Materials"
msgstr "Stückliste"
@@ -4630,7 +4755,7 @@ msgstr "Neuen Bauauftrag beginnen"
#: part/templates/part/detail.html:274
msgid "Build Order Allocations"
-msgstr ""
+msgstr "Bauauftragszuweisungen"
#: part/templates/part/detail.html:283
msgid "Part Suppliers"
@@ -4644,50 +4769,50 @@ msgstr "Teil-Hersteller"
msgid "Delete manufacturer parts"
msgstr "Herstellerteile löschen"
-#: part/templates/part/detail.html:402
+#: part/templates/part/detail.html:502
msgid "Delete selected BOM items?"
msgstr "Ausgewählte Stücklistenpositionen löschen?"
-#: part/templates/part/detail.html:403
+#: part/templates/part/detail.html:503
msgid "All selected BOM items will be deleted"
msgstr "Alle ausgewählte Stücklistenpositionen werden gelöscht"
-#: part/templates/part/detail.html:454
+#: part/templates/part/detail.html:554
msgid "Create BOM Item"
msgstr "Stücklisten-Position anlegen"
-#: part/templates/part/detail.html:589
+#: part/templates/part/detail.html:699
msgid "Add Test Result Template"
msgstr "Testergebnis-Vorlage hinzufügen"
-#: part/templates/part/detail.html:607
+#: part/templates/part/detail.html:716
msgid "Edit Test Result Template"
msgstr "Testergebnis-Vorlage bearbeiten"
-#: part/templates/part/detail.html:619
+#: part/templates/part/detail.html:728
msgid "Delete Test Result Template"
msgstr "Testergebnis-Vorlage löschen"
-#: part/templates/part/detail.html:670
+#: part/templates/part/detail.html:784
msgid "Edit Part Notes"
msgstr "Teilenotizen bearbeiten"
-#: part/templates/part/detail.html:903
+#: part/templates/part/detail.html:936
#, python-format
msgid "Purchase Unit Price - %(currency)s"
-msgstr ""
+msgstr "Stückpreis Einkauf - %(currency)s"
-#: part/templates/part/detail.html:915
+#: part/templates/part/detail.html:948
#, python-format
msgid "Unit Price-Cost Difference - %(currency)s"
-msgstr ""
+msgstr "Stückpreis Differenz - %(currency)s"
-#: part/templates/part/detail.html:927
+#: part/templates/part/detail.html:960
#, python-format
msgid "Supplier Unit Cost - %(currency)s"
-msgstr ""
+msgstr "Stückpreis Zulieferer - %(currency)s"
-#: part/templates/part/detail.html:1016
+#: part/templates/part/detail.html:1049
#, python-format
msgid "Unit Price - %(currency)s"
msgstr "Stückpreis - %(currency)s"
@@ -4701,19 +4826,19 @@ msgstr "Unzureichende Benutzerrechte."
msgid "Import Parts from File"
msgstr "Teile aus Datei importieren"
-#: part/templates/part/navbar.html:24
+#: part/templates/part/navbar.html:30
msgid "Variants"
msgstr "Varianten"
-#: part/templates/part/navbar.html:51 part/templates/part/navbar.html:54
+#: part/templates/part/navbar.html:59 part/templates/part/navbar.html:62
msgid "Used In"
msgstr "Benutzt in"
-#: part/templates/part/navbar.html:61
+#: part/templates/part/navbar.html:70
msgid "Prices"
msgstr "Preise"
-#: part/templates/part/navbar.html:90
+#: part/templates/part/navbar.html:102
msgid "Test Templates"
msgstr "Testvorlagen"
@@ -4721,148 +4846,149 @@ msgstr "Testvorlagen"
msgid "Part List"
msgstr "Teileliste"
-#: part/templates/part/part_base.html:30
+#: part/templates/part/part_base.html:35
msgid "Part is a template part (variants can be made from this part)"
msgstr "Teil ist Vorlage (Varianten können von diesem Teil erstellt werden)"
-#: part/templates/part/part_base.html:33
+#: part/templates/part/part_base.html:38
msgid "Part can be assembled from other parts"
msgstr "Teil kann aus anderen Teilen angefertigt werden"
-#: part/templates/part/part_base.html:36
+#: part/templates/part/part_base.html:41
msgid "Part can be used in assemblies"
msgstr "Teil kann in Baugruppen benutzt werden"
-#: part/templates/part/part_base.html:39
+#: part/templates/part/part_base.html:44
msgid "Part stock is tracked by serial number"
msgstr "Teil wird per Seriennummer verfolgt"
-#: part/templates/part/part_base.html:42
+#: part/templates/part/part_base.html:47
msgid "Part can be purchased from external suppliers"
msgstr "Teil kann von externen Zulieferern gekauft werden"
-#: part/templates/part/part_base.html:45
+#: part/templates/part/part_base.html:50
msgid "Part can be sold to customers"
msgstr "Teil kann an Kunden verkauft werden"
-#: part/templates/part/part_base.html:52 part/templates/part/part_base.html:60
+#: part/templates/part/part_base.html:57 part/templates/part/part_base.html:65
msgid "Part is virtual (not a physical part)"
msgstr "Teil ist virtuell (kein physisches Teil)"
-#: part/templates/part/part_base.html:53 templates/js/translated/company.js:454
-#: templates/js/translated/company.js:704 templates/js/translated/part.js:304
-#: templates/js/translated/part.js:381
+#: part/templates/part/part_base.html:58 templates/js/translated/company.js:503
+#: templates/js/translated/company.js:759 templates/js/translated/part.js:432
+#: templates/js/translated/part.js:509
msgid "Inactive"
msgstr "Inaktiv"
-#: part/templates/part/part_base.html:68
+#: part/templates/part/part_base.html:73
msgid "Star this part"
msgstr "Teil favorisieren"
-#: part/templates/part/part_base.html:75
+#: part/templates/part/part_base.html:80
#: stock/templates/stock/item_base.html:75
#: stock/templates/stock/location.html:51
msgid "Barcode actions"
msgstr "Barcode Aktionen"
-#: part/templates/part/part_base.html:77
+#: part/templates/part/part_base.html:82
#: stock/templates/stock/item_base.html:77
#: stock/templates/stock/location.html:53 templates/qr_button.html:1
msgid "Show QR Code"
msgstr "QR-Code anzeigen"
-#: part/templates/part/part_base.html:78
+#: part/templates/part/part_base.html:83
#: stock/templates/stock/item_base.html:93
#: stock/templates/stock/location.html:54
msgid "Print Label"
msgstr "Label drucken"
-#: part/templates/part/part_base.html:83
+#: part/templates/part/part_base.html:89
msgid "Show pricing information"
msgstr "Kosteninformationen ansehen"
-#: part/templates/part/part_base.html:88
+#: part/templates/part/part_base.html:95
#: stock/templates/stock/item_base.html:142
#: stock/templates/stock/location.html:62
msgid "Stock actions"
msgstr "Bestands-Aktionen"
-#: part/templates/part/part_base.html:95
+#: part/templates/part/part_base.html:102
msgid "Count part stock"
msgstr "Lagerbestand zählen"
-#: part/templates/part/part_base.html:101
+#: part/templates/part/part_base.html:108
msgid "Transfer part stock"
msgstr "Teilbestand verschieben"
-#: part/templates/part/part_base.html:118
+#: part/templates/part/part_base.html:125
msgid "Part actions"
msgstr "Teile Aktionen"
-#: part/templates/part/part_base.html:121
+#: part/templates/part/part_base.html:128
msgid "Duplicate part"
msgstr "Teil duplizieren"
-#: part/templates/part/part_base.html:124
+#: part/templates/part/part_base.html:131
msgid "Edit part"
msgstr "Teil bearbeiten"
-#: part/templates/part/part_base.html:127
+#: part/templates/part/part_base.html:134
msgid "Delete part"
msgstr "Teil löschen"
-#: part/templates/part/part_base.html:139
+#: part/templates/part/part_base.html:146
#, python-format
msgid "This part is a variant of %(link)s"
msgstr "Dieses Teil ist eine Variante von %(link)s"
-#: part/templates/part/part_base.html:154
-#: templates/js/translated/table_filters.js:153
+#: part/templates/part/part_base.html:161
+#: templates/js/translated/table_filters.js:166
msgid "In Stock"
msgstr "Auf Lager"
-#: part/templates/part/part_base.html:167 templates/InvenTree/index.html:186
+#: part/templates/part/part_base.html:174 templates/InvenTree/index.html:186
msgid "Required for Build Orders"
msgstr "Für Bauaufträge benötigt"
-#: part/templates/part/part_base.html:174
+#: part/templates/part/part_base.html:181
msgid "Required for Sales Orders"
msgstr "Benötigt für Aufträge"
-#: part/templates/part/part_base.html:181
+#: part/templates/part/part_base.html:188
msgid "Allocated to Orders"
msgstr "Zu Bauaufträgen zugeordnet"
-#: part/templates/part/part_base.html:196 templates/js/translated/bom.js:336
+#: part/templates/part/part_base.html:203 templates/js/translated/bom.js:352
msgid "Can Build"
msgstr "Herstellbar"
-#: part/templates/part/part_base.html:202 templates/js/translated/part.js:633
-#: templates/js/translated/part.js:806
+#: part/templates/part/part_base.html:209 templates/js/translated/part.js:765
+#: templates/js/translated/part.js:953
msgid "Building"
msgstr "Im Bau"
-#: part/templates/part/part_base.html:275
+#: part/templates/part/part_base.html:223
+#: part/templates/part/part_base.html:524
+#: part/templates/part/part_base.html:550
+msgid "Show Part Details"
+msgstr "Teildetails anzeigen"
+
+#: part/templates/part/part_base.html:283
msgid "Latest Serial Number"
msgstr "letzte Seriennummer"
-#: part/templates/part/part_base.html:383 part/templates/part/prices.html:125
+#: part/templates/part/part_base.html:396 part/templates/part/prices.html:144
msgid "Calculate"
msgstr "Berechnen"
-#: part/templates/part/part_base.html:426
+#: part/templates/part/part_base.html:439
msgid "No matching images found"
-msgstr ""
+msgstr "Keine passenden Bilder gefunden"
-#: part/templates/part/part_base.html:506
-#: part/templates/part/part_base.html:531
+#: part/templates/part/part_base.html:519
+#: part/templates/part/part_base.html:544
msgid "Hide Part Details"
-msgstr ""
-
-#: part/templates/part/part_base.html:511
-#: part/templates/part/part_base.html:537
-msgid "Show Part Details"
-msgstr ""
+msgstr "Teildetails ausblenden"
#: part/templates/part/part_pricing.html:22 part/templates/part/prices.html:21
msgid "Supplier Pricing"
@@ -4870,46 +4996,54 @@ msgstr "Zulieferer-Preise"
#: part/templates/part/part_pricing.html:26
#: part/templates/part/part_pricing.html:52
-#: part/templates/part/part_pricing.html:85
-#: part/templates/part/part_pricing.html:100 part/templates/part/prices.html:25
-#: part/templates/part/prices.html:52 part/templates/part/prices.html:84
-#: part/templates/part/prices.html:101
+#: part/templates/part/part_pricing.html:100
+#: part/templates/part/part_pricing.html:115 part/templates/part/prices.html:25
+#: part/templates/part/prices.html:52 part/templates/part/prices.html:103
+#: part/templates/part/prices.html:120
msgid "Unit Cost"
msgstr "Stückpreis"
#: part/templates/part/part_pricing.html:32
#: part/templates/part/part_pricing.html:58
-#: part/templates/part/part_pricing.html:89
-#: part/templates/part/part_pricing.html:104 part/templates/part/prices.html:32
-#: part/templates/part/prices.html:59 part/templates/part/prices.html:89
-#: part/templates/part/prices.html:106
+#: part/templates/part/part_pricing.html:104
+#: part/templates/part/part_pricing.html:119 part/templates/part/prices.html:32
+#: part/templates/part/prices.html:59 part/templates/part/prices.html:108
+#: part/templates/part/prices.html:125
msgid "Total Cost"
msgstr "Gesamtkosten"
#: part/templates/part/part_pricing.html:40 part/templates/part/prices.html:40
-#: templates/js/translated/bom.js:291
+#: templates/js/translated/bom.js:307
msgid "No supplier pricing available"
msgstr "Keine Zulieferer-Preise verfügbar"
#: part/templates/part/part_pricing.html:48 part/templates/part/prices.html:49
-#: part/templates/part/prices.html:225
+#: part/templates/part/prices.html:243
msgid "BOM Pricing"
msgstr "Stücklistenpreise"
-#: part/templates/part/part_pricing.html:66 part/templates/part/prices.html:67
+#: part/templates/part/part_pricing.html:65 part/templates/part/prices.html:69
+msgid "Unit Purchase Price"
+msgstr "Kaufpreis pro Einheit"
+
+#: part/templates/part/part_pricing.html:71 part/templates/part/prices.html:76
+msgid "Total Purchase Price"
+msgstr "Gesamter Kaufpreis"
+
+#: part/templates/part/part_pricing.html:81 part/templates/part/prices.html:86
msgid "Note: BOM pricing is incomplete for this part"
msgstr "Anmerkung: Stücklistenbepreisung für dieses Teil ist unvollständig"
-#: part/templates/part/part_pricing.html:73 part/templates/part/prices.html:74
+#: part/templates/part/part_pricing.html:88 part/templates/part/prices.html:93
msgid "No BOM pricing available"
msgstr "Keine Stücklisten-Preise verfügbar"
-#: part/templates/part/part_pricing.html:82 part/templates/part/prices.html:83
+#: part/templates/part/part_pricing.html:97 part/templates/part/prices.html:102
msgid "Internal Price"
msgstr "Interner Preis"
-#: part/templates/part/part_pricing.html:113
-#: part/templates/part/prices.html:115
+#: part/templates/part/part_pricing.html:128
+#: part/templates/part/prices.html:134
msgid "No pricing information is available for this part."
msgstr "Keine Preise für dieses Teil verfügbar"
@@ -4919,8 +5053,8 @@ msgstr "Aus vorhandenen Bildern auswählen"
#: part/templates/part/partial_delete.html:7
#, python-format
-msgid "Are you sure you want to delete part '%(full_name)s'?"
-msgstr "Sind Sie sicher, dass Sie das Teil '%(full_name)s' löschen wollen?"
+msgid "Are you sure you want to delete part '%(full_name)s'?"
+msgstr "Sind Sie sicher, dass Sie das Teil '%(full_name)s' löschen wollen?"
#: part/templates/part/partial_delete.html:12
#, python-format
@@ -4963,53 +5097,53 @@ msgstr "Einkaufpreis anzeigen"
msgid "Show BOM cost"
msgstr "Stücklisten-Kosten"
-#: part/templates/part/prices.html:98
+#: part/templates/part/prices.html:117
msgid "Show sale cost"
msgstr "Verkaufskosten anzeigen"
-#: part/templates/part/prices.html:99
+#: part/templates/part/prices.html:118
msgid "Show sale price"
msgstr "Verkaufspreis anzeigen"
-#: part/templates/part/prices.html:121
+#: part/templates/part/prices.html:140
msgid "Calculation parameters"
msgstr "Berechnungsparameter"
-#: part/templates/part/prices.html:136 templates/js/translated/bom.js:285
+#: part/templates/part/prices.html:155 templates/js/translated/bom.js:301
msgid "Supplier Cost"
msgstr "Zuliefererkosten"
-#: part/templates/part/prices.html:137 part/templates/part/prices.html:158
-#: part/templates/part/prices.html:183 part/templates/part/prices.html:213
-#: part/templates/part/prices.html:239 part/templates/part/prices.html:267
+#: part/templates/part/prices.html:156 part/templates/part/prices.html:177
+#: part/templates/part/prices.html:201 part/templates/part/prices.html:231
+#: part/templates/part/prices.html:257 part/templates/part/prices.html:285
msgid "Jump to overview"
msgstr "Zur Übersicht gehen"
-#: part/templates/part/prices.html:162
+#: part/templates/part/prices.html:181
msgid "Stock Pricing"
msgstr "Bestandspreise"
-#: part/templates/part/prices.html:172
+#: part/templates/part/prices.html:190
msgid "No stock pricing history is available for this part."
msgstr "Für dieses Teil sind keine Bestandspreise verfügbar."
-#: part/templates/part/prices.html:182
+#: part/templates/part/prices.html:200
msgid "Internal Cost"
msgstr "Interne Kosten"
-#: part/templates/part/prices.html:197 part/views.py:1793
+#: part/templates/part/prices.html:215 part/views.py:1801
msgid "Add Internal Price Break"
-msgstr ""
+msgstr "Interne Preisspanne hinzufügen"
-#: part/templates/part/prices.html:212
+#: part/templates/part/prices.html:230
msgid "BOM Cost"
msgstr "Stücklistenkosten"
-#: part/templates/part/prices.html:238
+#: part/templates/part/prices.html:256
msgid "Sale Cost"
msgstr "Verkaufskosten"
-#: part/templates/part/prices.html:278
+#: part/templates/part/prices.html:296
msgid "No sale pice history available for this part."
msgstr "Keine Verkaufsgeschichte für diesen Teil verfügbar."
@@ -5017,8 +5151,8 @@ 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:259
-#: templates/js/translated/part.js:623 templates/js/translated/part.js:810
+#: part/templates/part/stock_count.html:7 templates/js/translated/bom.js:278
+#: templates/js/translated/part.js:755 templates/js/translated/part.js:957
msgid "No Stock"
msgstr "Kein Bestand"
@@ -5032,10 +5166,10 @@ msgstr "Neue Teilevariante anlegen"
#: part/templates/part/variant_part.html:10
#, python-format
-msgid "Create a new variant of template '%(full_name)s'."
-msgstr "Neue Variante von Vorlage anlegen '%(full_name)s'."
+msgid "Create a new variant of template '%(full_name)s'."
+msgstr "Neue Variante von Vorlage anlegen '%(full_name)s'."
-#: part/templatetags/inventree_extras.py:105
+#: part/templatetags/inventree_extras.py:106
msgid "Unknown database"
msgstr "Unbekannte Datenbank"
@@ -5116,53 +5250,53 @@ msgstr "Teil wurde gelöscht"
msgid "Part Pricing"
msgstr "Teilbepreisung"
-#: part/views.py:1429
+#: part/views.py:1437
msgid "Create Part Parameter Template"
msgstr "Teilparametervorlage anlegen"
-#: part/views.py:1439
+#: part/views.py:1447
msgid "Edit Part Parameter Template"
msgstr "Teilparametervorlage bearbeiten"
-#: part/views.py:1446
+#: part/views.py:1454
msgid "Delete Part Parameter Template"
msgstr "Teilparametervorlage löschen"
-#: part/views.py:1494 templates/js/translated/part.js:179
+#: part/views.py:1502 templates/js/translated/part.js:303
msgid "Edit Part Category"
msgstr "Teil-Kategorie bearbeiten"
-#: part/views.py:1532
+#: part/views.py:1540
msgid "Delete Part Category"
msgstr "Teil-Kategorie löschen"
-#: part/views.py:1538
+#: part/views.py:1546
msgid "Part category was deleted"
msgstr "Teil-Kategorie wurde gelöscht"
-#: part/views.py:1547
+#: part/views.py:1555
msgid "Create Category Parameter Template"
msgstr "Kategorieparametervorlage anlegen"
-#: part/views.py:1648
+#: part/views.py:1656
msgid "Edit Category Parameter Template"
msgstr "Kategorieparametervorlage bearbeiten"
-#: part/views.py:1704
+#: part/views.py:1712
msgid "Delete Category Parameter Template"
msgstr "Kategorieparametervorlage löschen"
-#: part/views.py:1726
+#: part/views.py:1734
msgid "Added new price break"
msgstr "neue Preisstaffel hinzufügt"
-#: part/views.py:1802
-msgid "Edit Internal Price Break"
-msgstr ""
-
#: part/views.py:1810
+msgid "Edit Internal Price Break"
+msgstr "Interne Preisspanne bearbeiten"
+
+#: part/views.py:1818
msgid "Delete Internal Price Break"
-msgstr ""
+msgstr "Interne Preisspanne löschen"
#: report/models.py:182
msgid "Template name"
@@ -5266,17 +5400,17 @@ msgid "Test Results"
msgstr "Testergebnisse"
#: report/templates/report/inventree_test_report_base.html:88
-#: stock/models.py:1796
+#: stock/models.py:1807
msgid "Test"
msgstr "Test"
#: report/templates/report/inventree_test_report_base.html:89
-#: stock/models.py:1802
+#: stock/models.py:1813
msgid "Result"
msgstr "Ergebnis"
#: report/templates/report/inventree_test_report_base.html:92
-#: templates/js/translated/order.js:279 templates/js/translated/stock.js:1382
+#: templates/js/translated/order.js:353 templates/js/translated/stock.js:1523
msgid "Date"
msgstr "Datum"
@@ -5288,51 +5422,51 @@ msgstr "bestanden"
msgid "Fail"
msgstr "fehlgeschlagen"
-#: stock/api.py:145
+#: stock/api.py:146
msgid "Request must contain list of stock items"
msgstr ""
-#: stock/api.py:153
+#: stock/api.py:154
msgid "Improperly formatted data"
msgstr "Falsch formatierte Daten"
-#: stock/api.py:161
+#: stock/api.py:162
msgid "Each entry must contain a valid integer primary-key"
msgstr ""
-#: stock/api.py:167
+#: stock/api.py:168
msgid "Primary key does not match valid stock item"
msgstr ""
-#: stock/api.py:177
+#: stock/api.py:178
msgid "Invalid quantity value"
msgstr "Ungültige Menge"
-#: stock/api.py:182
+#: stock/api.py:183
msgid "Quantity must not be less than zero"
msgstr "Menge muss größer als Null sein"
-#: stock/api.py:210
+#: stock/api.py:211
#, python-brace-format
msgid "Updated stock for {n} items"
msgstr "Bestand für {n} Objekte geändert"
-#: stock/api.py:246 stock/api.py:279
+#: stock/api.py:247 stock/api.py:280
msgid "Specified quantity exceeds stock quantity"
msgstr "Die angegebene Menge überschreitet die Lagermenge"
-#: stock/api.py:269
+#: stock/api.py:270
msgid "Valid location must be specified"
msgstr "Gültiger Standort muss angegeben werden"
-#: stock/api.py:289
+#: stock/api.py:290
#, python-brace-format
msgid "Moved {n} parts to {loc}"
msgstr "{n} Teile nach {loc} bewegt"
-#: stock/forms.py:79 stock/forms.py:307 stock/models.py:550
+#: stock/forms.py:79 stock/forms.py:307 stock/models.py:556
#: stock/templates/stock/item_base.html:395
-#: templates/js/translated/stock.js:1025
+#: templates/js/translated/stock.js:967
msgid "Expiry Date"
msgstr "Ablaufdatum"
@@ -5384,258 +5518,266 @@ msgstr "nicht mehr verbauen bestätigen"
msgid "Confirm removal of installed stock items"
msgstr "Entfernen der verbauten BestandsObjekt bestätigen"
-#: stock/models.py:57 stock/models.py:587
+#: stock/models.py:57 stock/models.py:593
msgid "Owner"
msgstr "Besitzer"
-#: stock/models.py:58 stock/models.py:588
+#: stock/models.py:58 stock/models.py:594
msgid "Select Owner"
msgstr "Besitzer auswählen"
-#: stock/models.py:316
+#: stock/models.py:322
msgid "StockItem with this serial number already exists"
msgstr "Ein BestandsObjekt mit dieser Seriennummer existiert bereits"
-#: stock/models.py:352
+#: stock/models.py:358
#, python-brace-format
msgid "Part type ('{pf}') must be {pe}"
msgstr "Teile-Typ ('{pf}') muss {pe} sein"
-#: stock/models.py:362 stock/models.py:371
+#: stock/models.py:368 stock/models.py:377
msgid "Quantity must be 1 for item with a serial number"
msgstr "Anzahl muss für Objekte mit Seriennummer 1 sein"
-#: stock/models.py:363
+#: stock/models.py:369
msgid "Serial number cannot be set if quantity greater than 1"
msgstr "Seriennummer kann nicht gesetzt werden wenn die Anzahl größer als 1 ist"
-#: stock/models.py:385
+#: stock/models.py:391
msgid "Item cannot belong to itself"
msgstr "Teil kann nicht zu sich selbst gehören"
-#: stock/models.py:391
+#: stock/models.py:397
msgid "Item must have a build reference if is_building=True"
msgstr "Teil muss eine Referenz haben wenn is_building wahr ist"
-#: stock/models.py:398
+#: stock/models.py:404
msgid "Build reference does not point to the same part object"
msgstr "Referenz verweist nicht auf das gleiche Teil"
-#: stock/models.py:440
+#: stock/models.py:446
msgid "Parent Stock Item"
msgstr "Eltern-BestandsObjekt"
-#: stock/models.py:449
+#: stock/models.py:455
msgid "Base part"
msgstr "Basis-Teil"
-#: stock/models.py:458
+#: stock/models.py:464
msgid "Select a matching supplier part for this stock item"
msgstr "Passendes Zuliefererteil für dieses BestandsObjekt auswählen"
-#: stock/models.py:463 stock/templates/stock/stock_app_base.html:8
+#: stock/models.py:469 stock/templates/stock/stock_app_base.html:8
msgid "Stock Location"
msgstr "Bestand-Lagerort"
-#: stock/models.py:466
+#: stock/models.py:472
msgid "Where is this stock item located?"
msgstr "Wo wird dieses Teil normalerweise gelagert?"
-#: stock/models.py:473
+#: stock/models.py:479
msgid "Packaging this stock item is stored in"
msgstr "Die Verpackung dieses BestandsObjekt ist gelagert in"
-#: stock/models.py:478 stock/templates/stock/item_base.html:284
+#: stock/models.py:484 stock/templates/stock/item_base.html:284
msgid "Installed In"
msgstr "verbaut in"
-#: stock/models.py:481
+#: stock/models.py:487
msgid "Is this item installed in another item?"
msgstr "Ist dieses Teil in einem anderen verbaut?"
-#: stock/models.py:497
+#: stock/models.py:503
msgid "Serial number for this item"
msgstr "Seriennummer für dieses Teil"
-#: stock/models.py:509
+#: stock/models.py:515
msgid "Batch code for this stock item"
msgstr "Losnummer für dieses BestandsObjekt"
-#: stock/models.py:513
+#: stock/models.py:519
msgid "Stock Quantity"
msgstr "Bestand"
-#: stock/models.py:522
+#: stock/models.py:528
msgid "Source Build"
msgstr "Quellbau"
-#: stock/models.py:524
+#: stock/models.py:530
msgid "Build for this stock item"
msgstr "Bauauftrag für dieses BestandsObjekt"
-#: stock/models.py:535
+#: stock/models.py:541
msgid "Source Purchase Order"
msgstr "Quelle Bestellung"
-#: stock/models.py:538
+#: stock/models.py:544
msgid "Purchase order for this stock item"
msgstr "Bestellung für dieses BestandsObjekt"
-#: stock/models.py:544
+#: stock/models.py:550
msgid "Destination Sales Order"
msgstr "Ziel-Auftrag"
-#: stock/models.py:551
+#: stock/models.py:557
msgid "Expiry date for stock item. Stock will be considered expired after this date"
msgstr "Ablaufdatum für BestandsObjekt. Bestand wird danach als abgelaufen gekennzeichnet"
-#: stock/models.py:564
+#: stock/models.py:570
msgid "Delete on deplete"
msgstr "Löschen wenn leer"
-#: stock/models.py:564
+#: stock/models.py:570
msgid "Delete this Stock Item when stock is depleted"
msgstr "Dieses BestandsObjekt löschen wenn Bestand aufgebraucht"
-#: stock/models.py:574 stock/templates/stock/item.html:98
+#: stock/models.py:580 stock/templates/stock/item.html:99
#: stock/templates/stock/navbar.html:54
msgid "Stock Item Notes"
msgstr "BestandsObjekt-Notizen"
-#: stock/models.py:583
+#: stock/models.py:589
msgid "Single unit purchase price at time of purchase"
msgstr "Preis für eine Einheit bei Einkauf"
-#: stock/models.py:1051
+#: stock/models.py:599
+msgid "Scheduled for deletion"
+msgstr ""
+
+#: stock/models.py:600
+msgid "This StockItem will be deleted by the background worker"
+msgstr ""
+
+#: stock/models.py:1063
msgid "Part is not set as trackable"
msgstr "Teil ist nicht verfolgbar"
-#: stock/models.py:1057
+#: stock/models.py:1069
msgid "Quantity must be integer"
msgstr "Anzahl muss eine Ganzzahl sein"
-#: stock/models.py:1063
+#: stock/models.py:1075
#, python-brace-format
msgid "Quantity must not exceed available stock quantity ({n})"
msgstr "Anzahl darf nicht die verfügbare Anzahl überschreiten ({n})"
-#: stock/models.py:1066
+#: stock/models.py:1078
msgid "Serial numbers must be a list of integers"
msgstr "Seriennummern muss eine Liste von Ganzzahlen sein"
-#: stock/models.py:1069
+#: stock/models.py:1081
msgid "Quantity does not match serial numbers"
msgstr "Anzahl stimmt nicht mit den Seriennummern überein"
-#: stock/models.py:1076
+#: stock/models.py:1088
#, python-brace-format
msgid "Serial numbers already exist: {exists}"
msgstr "Seriennummern {exists} existieren bereits"
-#: stock/models.py:1234
+#: stock/models.py:1246
msgid "StockItem cannot be moved as it is not in stock"
msgstr "BestandsObjekt kann nicht bewegt werden, da kein Bestand vorhanden ist"
-#: stock/models.py:1716
+#: stock/models.py:1727
msgid "Entry notes"
msgstr "Eintrags-Notizen"
-#: stock/models.py:1773
+#: stock/models.py:1784
msgid "Value must be provided for this test"
msgstr "Wert muss für diesen Test angegeben werden"
-#: stock/models.py:1779
+#: stock/models.py:1790
msgid "Attachment must be uploaded for this test"
msgstr "Anhang muss für diesen Test hochgeladen werden"
-#: stock/models.py:1797
+#: stock/models.py:1808
msgid "Test name"
msgstr "Name des Tests"
-#: stock/models.py:1803 templates/js/translated/table_filters.js:231
+#: stock/models.py:1814 templates/js/translated/table_filters.js:244
msgid "Test result"
msgstr "Testergebnis"
-#: stock/models.py:1809
+#: stock/models.py:1820
msgid "Test output value"
msgstr "Test Ausgabe Wert"
-#: stock/models.py:1816
+#: stock/models.py:1827
msgid "Test result attachment"
msgstr "Test Ergebnis Anhang"
-#: stock/models.py:1822
+#: stock/models.py:1833
msgid "Test notes"
msgstr "Test Notizen"
-#: stock/templates/stock/item.html:16
+#: stock/templates/stock/item.html:17
msgid "Stock Tracking Information"
msgstr "Informationen zum Lagerbestands-Tracking"
-#: stock/templates/stock/item.html:29
+#: stock/templates/stock/item.html:30
msgid "New Entry"
msgstr "neuer Eintrag"
-#: stock/templates/stock/item.html:42
+#: stock/templates/stock/item.html:43
msgid "Child Stock Items"
msgstr "Kind-BestandsObjekt"
-#: stock/templates/stock/item.html:49
+#: stock/templates/stock/item.html:50
msgid "This stock item does not have any child items"
msgstr "Dieses BestandsObjekt hat keine Kinder"
-#: stock/templates/stock/item.html:57 stock/templates/stock/navbar.html:19
+#: stock/templates/stock/item.html:58 stock/templates/stock/navbar.html:19
#: stock/templates/stock/navbar.html:22
msgid "Test Data"
msgstr "Testdaten"
-#: stock/templates/stock/item.html:65
+#: stock/templates/stock/item.html:66
msgid "Delete Test Data"
msgstr "Testdaten löschen"
-#: stock/templates/stock/item.html:69
+#: stock/templates/stock/item.html:70
msgid "Add Test Data"
msgstr "Testdaten hinzufügen"
-#: stock/templates/stock/item.html:72 stock/templates/stock/item_base.html:95
+#: stock/templates/stock/item.html:73 stock/templates/stock/item_base.html:95
msgid "Test Report"
msgstr "Test-Bericht"
-#: stock/templates/stock/item.html:119 stock/templates/stock/navbar.html:27
+#: stock/templates/stock/item.html:120 stock/templates/stock/navbar.html:27
msgid "Installed Stock Items"
msgstr "Installierte BestandsObjekte"
-#: stock/templates/stock/item.html:124 stock/views.py:534
+#: stock/templates/stock/item.html:125 stock/views.py:534
msgid "Install Stock Item"
msgstr "BestandsObjekt installiert"
-#: stock/templates/stock/item.html:299 stock/templates/stock/item.html:324
+#: stock/templates/stock/item.html:301 stock/templates/stock/item.html:326
msgid "Add Test Result"
msgstr "Testergebnis hinzufügen"
-#: stock/templates/stock/item.html:344
+#: stock/templates/stock/item.html:346
msgid "Edit Test Result"
msgstr "Testergebnis bearbeiten"
-#: stock/templates/stock/item.html:358
+#: stock/templates/stock/item.html:360
msgid "Delete Test Result"
msgstr "Testergebnis löschen"
#: stock/templates/stock/item_base.html:33
#: stock/templates/stock/item_base.html:399
-#: templates/js/translated/table_filters.js:212
+#: templates/js/translated/table_filters.js:225
msgid "Expired"
msgstr "abgelaufen"
#: stock/templates/stock/item_base.html:43
#: stock/templates/stock/item_base.html:401
-#: templates/js/translated/table_filters.js:218
+#: templates/js/translated/table_filters.js:231
msgid "Stale"
msgstr "überfällig"
#: stock/templates/stock/item_base.html:80
-#: templates/js/translated/barcode.js:309
-#: templates/js/translated/barcode.js:314
+#: templates/js/translated/barcode.js:331
+#: templates/js/translated/barcode.js:336
msgid "Unlink Barcode"
msgstr "Barcode abhängen"
@@ -5695,11 +5837,11 @@ msgstr "Deinstallieren"
#: stock/templates/stock/item_base.html:133
msgid "Install stock item"
-msgstr ""
+msgstr "BestandsObjekt installieren"
#: stock/templates/stock/item_base.html:133
msgid "Install"
-msgstr ""
+msgstr "Installieren"
#: stock/templates/stock/item_base.html:145
msgid "Convert to variant"
@@ -5768,7 +5910,7 @@ msgid "next page"
msgstr "nächste Seite"
#: stock/templates/stock/item_base.html:303
-#: templates/js/translated/build.js:628
+#: templates/js/translated/build.js:651
msgid "No location set"
msgstr "Kein Lagerort gesetzt"
@@ -5795,7 +5937,7 @@ msgid "This StockItem expires on %(item.expiry_date)s"
msgstr "Dieses BestandsObjekt läuft am %(item.expiry_date)s ab"
#: stock/templates/stock/item_base.html:408
-#: templates/js/translated/stock.js:1032
+#: templates/js/translated/stock.js:980
msgid "Last Updated"
msgstr "Zuletzt aktualisiert"
@@ -5825,12 +5967,12 @@ msgstr "Sind Sie sicher, dass Sie dieses BestandsObjekt löschen wollen?"
#: stock/templates/stock/item_delete.html:12
#, python-format
-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."
+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 ""
+msgstr "Ein weiteres BestandsObjekt in dieses Teil installiert."
#: stock/templates/stock/item_install.html:11
#: stock/templates/stock/item_install.html:24
@@ -5975,8 +6117,8 @@ msgstr "BestandsObjekt umwandeln"
#: stock/templates/stock/stockitem_convert.html:8
#, python-format
-msgid "This stock item is current an instance of %(part)s"
-msgstr "BestandsObjekt ist aktuell eine Instanz von %(part)s"
+msgid "This stock item is current an instance of %(part)s"
+msgstr "BestandsObjekt ist aktuell eine Instanz von %(part)s"
#: stock/templates/stock/stockitem_convert.html:9
msgid "It can be converted to one of the part variants listed below."
@@ -6039,7 +6181,7 @@ msgstr "BestandsObjekt-QR-Code"
msgid "Uninstall Stock Items"
msgstr "BestandsObjekte deinstallieren"
-#: stock/views.py:780 templates/js/translated/stock.js:282
+#: stock/views.py:780 templates/js/translated/stock.js:353
msgid "Confirm stock adjustment"
msgstr "Bestands-Anpassung bestätigen"
@@ -6059,7 +6201,7 @@ msgstr "Neuen Lagerort erstellen"
msgid "Serialize Stock"
msgstr "Lagerbestand erfassen"
-#: stock/views.py:1143 templates/js/translated/build.js:365
+#: stock/views.py:1143 templates/js/translated/build.js:392
msgid "Create new Stock Item"
msgstr "Neues BestandsObjekt hinzufügen"
@@ -6171,11 +6313,11 @@ msgstr "Suchergebnisse"
msgid "Enter a search query"
msgstr "Eine Sucheanfrage eingeben"
-#: templates/InvenTree/search.html:268 templates/js/translated/stock.js:629
+#: templates/InvenTree/search.html:268 templates/js/translated/stock.js:699
msgid "Shipped to customer"
msgstr "an Kunde versand"
-#: templates/InvenTree/search.html:271 templates/js/translated/stock.js:639
+#: templates/InvenTree/search.html:271 templates/js/translated/stock.js:709
msgid "No stock location set"
msgstr "Kein Lagerort gesetzt"
@@ -6240,7 +6382,7 @@ msgstr "Startseite"
#: templates/InvenTree/settings/navbar.html:27
#: templates/InvenTree/settings/navbar.html:29
-#: templates/js/translated/tables.js:351 templates/search_form.html:6
+#: templates/js/translated/tables.js:366 templates/search_form.html:6
#: templates/search_form.html:8
msgid "Search"
msgstr "Suche"
@@ -6248,16 +6390,16 @@ msgstr "Suche"
#: templates/InvenTree/settings/navbar.html:33
#: templates/InvenTree/settings/navbar.html:35
msgid "Labels"
-msgstr ""
+msgstr "Labels"
#: templates/InvenTree/settings/navbar.html:39
#: templates/InvenTree/settings/navbar.html:41
msgid "Reports"
-msgstr ""
+msgstr "Berichte"
#: templates/InvenTree/settings/navbar.html:46
#: templates/InvenTree/settings/navbar.html:48
-#: templates/InvenTree/settings/settings.html:8 templates/navbar.html:84
+#: templates/InvenTree/settings/settings.html:8 templates/navbar.html:94
msgid "Settings"
msgstr "Einstellungen"
@@ -6332,16 +6474,16 @@ msgid "No category parameter templates found"
msgstr "Keine Kategorie-Parametervorlagen gefunden"
#: templates/InvenTree/settings/settings.html:174
-#: templates/InvenTree/settings/settings.html:271
+#: templates/InvenTree/settings/settings.html:273
msgid "Edit Template"
msgstr "Vorlage bearbeiten"
#: templates/InvenTree/settings/settings.html:175
-#: templates/InvenTree/settings/settings.html:272
+#: templates/InvenTree/settings/settings.html:274
msgid "Delete Template"
msgstr "Vorlage löschen"
-#: templates/InvenTree/settings/settings.html:251
+#: templates/InvenTree/settings/settings.html:253
msgid "No part parameter templates found"
msgstr "Keine Teilparametervorlagen gefunden"
@@ -6358,6 +6500,7 @@ msgid "Account Settings"
msgstr "Kontoeinstellungen"
#: templates/InvenTree/settings/user.html:15
+#: templates/js/translated/helpers.js:26
msgid "Edit"
msgstr "Bearbeiten"
@@ -6397,11 +6540,11 @@ msgstr "Spracheinstellung"
#: templates/InvenTree/settings/user.html:89
#, python-format
msgid "%(lang_translated)s%% translated"
-msgstr ""
+msgstr "%(lang_translated)s%% übersetzt"
#: templates/InvenTree/settings/user.html:91
msgid "No translations available"
-msgstr ""
+msgstr "Keine Übersetzungen verfügbar"
#: templates/InvenTree/settings/user.html:98
msgid "Set Language"
@@ -6409,12 +6552,12 @@ msgstr "Sprache festlegen"
#: templates/InvenTree/settings/user.html:103
msgid "Help the translation efforts!"
-msgstr ""
+msgstr "Hilf bei der Übersetzung!"
#: templates/InvenTree/settings/user.html:104
#, python-format
msgid "Native language translation of the InvenTree web application is community contributed via crowdin. Contributions are welcomed and encouraged."
-msgstr ""
+msgstr "Die Übersetzung von InvenTree wird von Nutzern mit Crowdin betrieben. Wir ermutigen zur und freuen uns über jeden Mithilfe!"
#: templates/InvenTree/settings/user_homepage.html:9
msgid "Home Page Settings"
@@ -6422,7 +6565,7 @@ msgstr "Startseite-Einstellungen"
#: templates/InvenTree/settings/user_labels.html:9
msgid "Label Settings"
-msgstr ""
+msgstr "Labeleinstellungen"
#: templates/InvenTree/settings/user_search.html:9
msgid "Search Settings"
@@ -6436,65 +6579,69 @@ msgstr "InvenTree-Versionsinformationen"
msgid "InvenTree Version"
msgstr "InvenTree-Version"
-#: templates/about.html:26
+#: templates/about.html:27
+msgid "Development Version"
+msgstr ""
+
+#: templates/about.html:30
msgid "Up to Date"
msgstr "Aktuell"
-#: templates/about.html:28
+#: templates/about.html:32
msgid "Update Available"
msgstr "Aktualisierung verfügbar"
-#: templates/about.html:34
-msgid "API Version"
-msgstr "API-Version"
-
-#: templates/about.html:39
-msgid "Python Version"
-msgstr "Python-Version"
-
-#: templates/about.html:44
-msgid "Django Version"
-msgstr "Django-Version"
-
-#: templates/about.html:51
+#: templates/about.html:42
msgid "Commit Hash"
msgstr "Commit-Hash"
-#: templates/about.html:58
+#: templates/about.html:49
msgid "Commit Date"
msgstr "Commit-Datum"
-#: templates/about.html:63
+#: templates/about.html:55
msgid "InvenTree Documentation"
msgstr "InvenTree-Dokumentation"
-#: templates/about.html:68
+#: templates/about.html:60
+msgid "API Version"
+msgstr "API-Version"
+
+#: templates/about.html:65
+msgid "Python Version"
+msgstr "Python-Version"
+
+#: templates/about.html:70
+msgid "Django Version"
+msgstr "Django-Version"
+
+#: templates/about.html:75
msgid "View Code on GitHub"
msgstr "Code auf GitHub ansehen"
-#: templates/about.html:73
+#: templates/about.html:80
msgid "Credits"
msgstr "Danksagung"
-#: templates/about.html:78
+#: templates/about.html:85
msgid "Mobile App"
msgstr "Mobile App"
-#: templates/about.html:83
+#: templates/about.html:90
msgid "Submit Bug Report"
msgstr "Fehlerbericht senden"
-#: templates/about.html:90 templates/clip.html:4
+#: templates/about.html:97 templates/clip.html:4
msgid "copy to clipboard"
msgstr "In die Zwischenablage kopieren"
-#: templates/about.html:90
+#: templates/about.html:97
msgid "copy version information"
msgstr "Versionsinformationen kopieren"
-#: templates/about.html:100 templates/js/translated/modals.js:33
-#: templates/js/translated/modals.js:567 templates/js/translated/modals.js:661
-#: templates/js/translated/modals.js:957 templates/modals.html:29
+#: templates/about.html:107 templates/js/translated/modals.js:50
+#: templates/js/translated/modals.js:584 templates/js/translated/modals.js:678
+#: templates/js/translated/modals.js:971 templates/modals.html:29
#: templates/modals.html:54
msgid "Close"
msgstr "Schliessen"
@@ -6515,1358 +6662,1390 @@ 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/report.js:47 templates/js/translated/report.js:47
+#: templates/js/report.js:47 templates/js/translated/report.js:67
msgid "items selected"
msgstr "BestandsObjekt ausgewählt"
-#: templates/js/report.js:55 templates/js/translated/report.js:55
+#: templates/js/report.js:55 templates/js/translated/report.js:75
msgid "Select Report Template"
msgstr "Bericht-Vorlage auswählen"
-#: templates/js/report.js:70 templates/js/translated/report.js:70
+#: templates/js/report.js:70 templates/js/translated/report.js:90
msgid "Select Test Report Template"
msgstr "Test-Bericht-Vorlage auswählen"
-#: templates/js/report.js:98 templates/js/translated/label.js:10
-#: templates/js/translated/report.js:98 templates/js/translated/stock.js:244
+#: templates/js/report.js:98 templates/js/translated/label.js:29
+#: templates/js/translated/report.js:118 templates/js/translated/stock.js:313
msgid "Select Stock Items"
msgstr "BestandsObjekte auswählen"
-#: templates/js/report.js:99 templates/js/translated/report.js:99
+#: templates/js/report.js:99 templates/js/translated/report.js:119
msgid "Stock item(s) must be selected before printing reports"
msgstr "BestandsObjekt(e) müssen vor dem Berichtsdruck ausgewählt werden"
#: templates/js/report.js:116 templates/js/report.js:169
#: templates/js/report.js:223 templates/js/report.js:277
-#: templates/js/report.js:331 templates/js/translated/report.js:116
-#: templates/js/translated/report.js:169 templates/js/translated/report.js:223
-#: templates/js/translated/report.js:277 templates/js/translated/report.js:331
+#: templates/js/report.js:331 templates/js/translated/report.js:136
+#: templates/js/translated/report.js:189 templates/js/translated/report.js:243
+#: templates/js/translated/report.js:297 templates/js/translated/report.js:351
msgid "No Reports Found"
msgstr "Keine Berichte gefunden"
-#: templates/js/report.js:117 templates/js/translated/report.js:117
+#: templates/js/report.js:117 templates/js/translated/report.js:137
msgid "No report templates found which match selected stock item(s)"
msgstr "Keine Berichtsvorlagen für ausgewählte BestandsObjekt(e) gefunden"
-#: templates/js/report.js:152 templates/js/translated/report.js:152
+#: templates/js/report.js:152 templates/js/translated/report.js:172
msgid "Select Builds"
msgstr "Bauauftrag auswählen"
-#: templates/js/report.js:153 templates/js/translated/report.js:153
+#: templates/js/report.js:153 templates/js/translated/report.js:173
msgid "Build(s) must be selected before printing reports"
msgstr "Bauauftrag muss vor dem Berichtsdruck ausgewählt werden"
-#: templates/js/report.js:170 templates/js/translated/report.js:170
+#: templates/js/report.js:170 templates/js/translated/report.js:190
msgid "No report templates found which match selected build(s)"
msgstr "Keine Berichtvorlagen für ausgewählten Bauauftrag gefunden"
-#: templates/js/report.js:205 templates/js/translated/label.js:115
-#: templates/js/translated/report.js:205
+#: templates/js/report.js:205 templates/js/translated/label.js:134
+#: templates/js/translated/report.js:225
msgid "Select Parts"
msgstr "Teile auswählen"
-#: templates/js/report.js:206 templates/js/translated/report.js:206
+#: templates/js/report.js:206 templates/js/translated/report.js:226
msgid "Part(s) must be selected before printing reports"
msgstr "Teil muss vor dem Berichtsdruck ausgewählt werden"
-#: templates/js/report.js:224 templates/js/translated/report.js:224
+#: templates/js/report.js:224 templates/js/translated/report.js:244
msgid "No report templates found which match selected part(s)"
msgstr "Keine Berichtvorlagen für ausgewählte Teile gefunden"
-#: templates/js/report.js:259 templates/js/translated/report.js:259
+#: templates/js/report.js:259 templates/js/translated/report.js:279
msgid "Select Purchase Orders"
msgstr "Bestellungen auswählen"
-#: templates/js/report.js:260 templates/js/translated/report.js:260
+#: templates/js/report.js:260 templates/js/translated/report.js:280
msgid "Purchase Order(s) must be selected before printing report"
msgstr "Bestellung muss vor dem Berichtsdruck ausgewählt werden"
#: templates/js/report.js:278 templates/js/report.js:332
-#: templates/js/translated/report.js:278 templates/js/translated/report.js:332
+#: templates/js/translated/report.js:298 templates/js/translated/report.js:352
msgid "No report templates found which match selected orders"
msgstr "Keine Berichtvorlagen für ausgewählte Bestellungen gefunden"
-#: templates/js/report.js:313 templates/js/translated/report.js:313
+#: templates/js/report.js:313 templates/js/translated/report.js:333
msgid "Select Sales Orders"
msgstr "Aufträge auswählen"
-#: templates/js/report.js:314 templates/js/translated/report.js:314
+#: templates/js/report.js:314 templates/js/translated/report.js:334
msgid "Sales Order(s) must be selected before printing report"
msgstr "Auftrag muss vor dem Berichtsdruck ausgewählt werden"
-#: templates/js/translated/api.js:161 templates/js/translated/modals.js:1027
+#: templates/js/translated/api.js:174 templates/js/translated/modals.js:1041
msgid "No Response"
msgstr "Keine Antwort"
-#: templates/js/translated/api.js:162 templates/js/translated/modals.js:1028
+#: templates/js/translated/api.js:175 templates/js/translated/modals.js:1042
msgid "No response from the InvenTree server"
msgstr "keine Antwort vom InvenTree Server"
-#: templates/js/translated/api.js:167
+#: templates/js/translated/api.js:181
msgid "Error 400: Bad request"
msgstr "Fehler 400: Fehlerhafte Anfrage"
-#: templates/js/translated/api.js:168
+#: templates/js/translated/api.js:182
msgid "API request returned error code 400"
msgstr "Fehler-Code 400 zurückgegeben"
-#: templates/js/translated/api.js:171 templates/js/translated/modals.js:1037
+#: templates/js/translated/api.js:186 templates/js/translated/modals.js:1051
msgid "Error 401: Not Authenticated"
msgstr "Fehler 401: Nicht Angemeldet"
-#: templates/js/translated/api.js:172 templates/js/translated/modals.js:1038
+#: templates/js/translated/api.js:187 templates/js/translated/modals.js:1052
msgid "Authentication credentials not supplied"
msgstr "Authentication Kredentials nicht angegeben"
-#: templates/js/translated/api.js:175 templates/js/translated/modals.js:1042
+#: templates/js/translated/api.js:191 templates/js/translated/modals.js:1056
msgid "Error 403: Permission Denied"
msgstr "Fehler 403: keine Berechtigung"
-#: templates/js/translated/api.js:176 templates/js/translated/modals.js:1043
+#: templates/js/translated/api.js:192 templates/js/translated/modals.js:1057
msgid "You do not have the required permissions to access this function"
msgstr "Fehlende Berechtigung für diese Aktion"
-#: templates/js/translated/api.js:179 templates/js/translated/modals.js:1047
+#: templates/js/translated/api.js:196 templates/js/translated/modals.js:1061
msgid "Error 404: Resource Not Found"
msgstr "Fehler 404: Ressource nicht gefunden"
-#: templates/js/translated/api.js:180 templates/js/translated/modals.js:1048
+#: templates/js/translated/api.js:197 templates/js/translated/modals.js:1062
msgid "The requested resource could not be located on the server"
msgstr "Die angefragte Ressource kann auf diesem Server nicht gefunden werden"
-#: templates/js/translated/api.js:183 templates/js/translated/modals.js:1052
+#: templates/js/translated/api.js:201 templates/js/translated/modals.js:1066
msgid "Error 408: Timeout"
msgstr "Fehler 408: Zeitüberschreitung"
-#: templates/js/translated/api.js:184 templates/js/translated/modals.js:1053
+#: templates/js/translated/api.js:202 templates/js/translated/modals.js:1067
msgid "Connection timeout while requesting data from server"
msgstr "Verbindungszeitüberschreitung bei der Datenanforderung"
-#: templates/js/translated/api.js:187
+#: templates/js/translated/api.js:205
msgid "Unhandled Error Code"
msgstr "Unbehandelter Fehler-Code"
-#: templates/js/translated/api.js:188
+#: templates/js/translated/api.js:206
msgid "Error code"
msgstr "Fehler-Code"
-#: templates/js/translated/attachment.js:16
+#: templates/js/translated/attachment.js:27
msgid "No attachments found"
msgstr "Keine Anhänge gefunden"
-#: templates/js/translated/attachment.js:56
+#: templates/js/translated/attachment.js:91
msgid "Upload Date"
msgstr "Hochladedatum"
-#: templates/js/translated/attachment.js:69
+#: templates/js/translated/attachment.js:104
msgid "Edit attachment"
msgstr "Anhang bearbeiten"
-#: templates/js/translated/attachment.js:76
+#: templates/js/translated/attachment.js:111
msgid "Delete attachment"
msgstr "Anhang löschen"
-#: templates/js/translated/barcode.js:8
+#: templates/js/translated/barcode.js:30
msgid "Scan barcode data here using wedge scanner"
msgstr "Hier den Barcode scannen"
-#: templates/js/translated/barcode.js:10
+#: templates/js/translated/barcode.js:32
msgid "Enter barcode data"
msgstr "Barcode-Daten eingeben"
-#: templates/js/translated/barcode.js:14
+#: templates/js/translated/barcode.js:36
msgid "Barcode"
msgstr "Barcode"
-#: templates/js/translated/barcode.js:32
+#: templates/js/translated/barcode.js:54
msgid "Enter optional notes for stock transfer"
msgstr "Optionale Notizen zu Bestandsübertragung eingeben"
-#: templates/js/translated/barcode.js:33
+#: templates/js/translated/barcode.js:55
msgid "Enter notes"
msgstr "Notizen eingeben"
-#: templates/js/translated/barcode.js:71
+#: templates/js/translated/barcode.js:93
msgid "Server error"
msgstr "Server-Fehler"
-#: templates/js/translated/barcode.js:92
+#: templates/js/translated/barcode.js:114
msgid "Unknown response from server"
msgstr "Unbekannte Antwort von Server erhalten"
-#: templates/js/translated/barcode.js:119
-#: templates/js/translated/modals.js:1017
+#: templates/js/translated/barcode.js:141
+#: templates/js/translated/modals.js:1031
msgid "Invalid server response"
msgstr "Ungültige Antwort von Server"
-#: templates/js/translated/barcode.js:212
+#: templates/js/translated/barcode.js:234
msgid "Scan barcode data below"
msgstr "Barcode unterhalb scannen"
-#: templates/js/translated/barcode.js:270
+#: templates/js/translated/barcode.js:281 templates/navbar.html:65
+msgid "Scan Barcode"
+msgstr "Barcode scannen"
+
+#: templates/js/translated/barcode.js:292
msgid "No URL in response"
msgstr "keine URL in der Antwort"
-#: templates/js/translated/barcode.js:288
+#: templates/js/translated/barcode.js:310
msgid "Link Barcode to Stock Item"
msgstr "Barcode mit BestandsObjekt verknüpfen"
-#: templates/js/translated/barcode.js:311
+#: templates/js/translated/barcode.js:333
msgid "This will remove the association between this stock item and the barcode"
msgstr "Dadurch wird die Verknüpfung zwischen diesem BestandsObjekt und dem Barcode entfernt"
-#: templates/js/translated/barcode.js:317
+#: templates/js/translated/barcode.js:339
msgid "Unlink"
msgstr "Entfernen"
-#: templates/js/translated/barcode.js:376 templates/js/translated/stock.js:220
+#: templates/js/translated/barcode.js:398 templates/js/translated/stock.js:289
msgid "Remove stock item"
msgstr "BestandsObjekt entfernen"
-#: templates/js/translated/barcode.js:418
+#: templates/js/translated/barcode.js:440
msgid "Check Stock Items into Location"
msgstr "BestandsObjekte in Lagerort buchen"
-#: templates/js/translated/barcode.js:422
-#: templates/js/translated/barcode.js:547
+#: templates/js/translated/barcode.js:444
+#: templates/js/translated/barcode.js:571
msgid "Check In"
msgstr "Einbuchen"
-#: templates/js/translated/barcode.js:462
-#: templates/js/translated/barcode.js:586
+#: templates/js/translated/barcode.js:486
+#: templates/js/translated/barcode.js:610
msgid "Error transferring stock"
msgstr "Fehler bei Bestandsübertragung"
-#: templates/js/translated/barcode.js:481
+#: templates/js/translated/barcode.js:505
msgid "Stock Item already scanned"
msgstr "BestandsObjekte bereits gescannt"
-#: templates/js/translated/barcode.js:485
+#: templates/js/translated/barcode.js:509
msgid "Stock Item already in this location"
msgstr "BestandsObjekt besteht bereits in diesem Lagerort"
-#: templates/js/translated/barcode.js:492
+#: templates/js/translated/barcode.js:516
msgid "Added stock item"
msgstr "BestandsObjekt hinzugefügt"
-#: templates/js/translated/barcode.js:499
+#: templates/js/translated/barcode.js:523
msgid "Barcode does not match Stock Item"
msgstr "Barcode entspricht keinem BestandsObjekt"
-#: templates/js/translated/barcode.js:542
+#: templates/js/translated/barcode.js:566
msgid "Check Into Location"
msgstr "In Lagerorten buchen"
-#: templates/js/translated/barcode.js:605
+#: templates/js/translated/barcode.js:629
msgid "Barcode does not match a valid location"
msgstr "Barcode entspricht keinem Lagerort"
-#: templates/js/translated/bom.js:195 templates/js/translated/build.js:1152
+#: templates/js/translated/bom.js:215 templates/js/translated/build.js:1169
msgid "Open subassembly"
msgstr "Unterbaugruppe öffnen"
-#: templates/js/translated/bom.js:269
+#: templates/js/translated/bom.js:287
msgid "Purchase Price Range"
msgstr "Kaufpreisspanne"
-#: templates/js/translated/bom.js:277
+#: templates/js/translated/bom.js:294
msgid "Purchase Price Average"
msgstr "Durchschnittlicher Kaufpreis"
-#: templates/js/translated/bom.js:326 templates/js/translated/bom.js:412
+#: templates/js/translated/bom.js:342 templates/js/translated/bom.js:428
msgid "View BOM"
msgstr "Stückliste anzeigen"
-#: templates/js/translated/bom.js:386
+#: templates/js/translated/bom.js:402
msgid "Validate BOM Item"
msgstr "Stücklisten-Position kontrollieren"
-#: templates/js/translated/bom.js:388
+#: templates/js/translated/bom.js:404
msgid "This line has been validated"
msgstr "Diese Position wurde kontrolliert"
-#: templates/js/translated/bom.js:390 templates/js/translated/bom.js:555
+#: templates/js/translated/bom.js:406 templates/js/translated/bom.js:569
msgid "Edit BOM Item"
msgstr "Stücklisten-Position bearbeiten"
-#: templates/js/translated/bom.js:392 templates/js/translated/bom.js:539
+#: templates/js/translated/bom.js:408 templates/js/translated/bom.js:554
msgid "Delete BOM Item"
msgstr "Stücklisten-Position löschen"
-#: templates/js/translated/bom.js:483 templates/js/translated/build.js:458
-#: templates/js/translated/build.js:1250
+#: templates/js/translated/bom.js:499 templates/js/translated/build.js:483
+#: templates/js/translated/build.js:1267
msgid "No BOM items found"
msgstr "Keine Stücklisten-Position(en) gefunden"
-#: templates/js/translated/build.js:42
+#: templates/js/translated/build.js:69
msgid "Edit Build Order"
msgstr "Bauauftrag bearbeiten"
-#: templates/js/translated/build.js:68
+#: templates/js/translated/build.js:95
msgid "Create Build Order"
msgstr "Bauauftrag erstellen"
-#: templates/js/translated/build.js:100
+#: templates/js/translated/build.js:127
msgid "Auto-allocate stock items to this output"
msgstr "Teilbestand automatisch Endprodukt zuweisen"
-#: templates/js/translated/build.js:108
+#: templates/js/translated/build.js:135
msgid "Unallocate stock from build output"
msgstr "Bestand von Endpordukt zurücknehmen"
-#: templates/js/translated/build.js:118
+#: templates/js/translated/build.js:145
msgid "Complete build output"
msgstr "Endprodukt fertigstellen"
-#: templates/js/translated/build.js:127
+#: templates/js/translated/build.js:154
msgid "Delete build output"
msgstr "Endprodukt entfernen"
-#: templates/js/translated/build.js:222
+#: templates/js/translated/build.js:249
msgid "No build order allocations found"
msgstr ""
-#: templates/js/translated/build.js:260 templates/js/translated/order.js:471
+#: templates/js/translated/build.js:287 templates/js/translated/order.js:813
msgid "Location not specified"
msgstr "Standort nicht angegeben"
-#: templates/js/translated/build.js:364 templates/stock_table.html:20
+#: templates/js/translated/build.js:391 templates/stock_table.html:20
msgid "New Stock Item"
msgstr "Neues BestandsObjekt"
-#: templates/js/translated/build.js:679
+#: templates/js/translated/build.js:702
msgid "Required Part"
msgstr "benötigtes Teil"
-#: templates/js/translated/build.js:700
+#: templates/js/translated/build.js:723
msgid "Quantity Per"
msgstr "Anzahl pro"
-#: templates/js/translated/build.js:770 templates/js/translated/build.js:1214
+#: templates/js/translated/build.js:793 templates/js/translated/build.js:1231
#: templates/stock_table.html:59
msgid "Order stock"
msgstr "Bestand bestellen"
-#: templates/js/translated/build.js:823
+#: templates/js/translated/build.js:846
msgid "No builds matching query"
msgstr "Keine Bauaufträge passen zur Anfrage"
-#: templates/js/translated/build.js:840 templates/js/translated/part.js:711
-#: templates/js/translated/part.js:956 templates/js/translated/stock.js:883
-#: templates/js/translated/stock.js:1336
+#: templates/js/translated/build.js:863 templates/js/translated/part.js:845
+#: templates/js/translated/part.js:1123 templates/js/translated/stock.js:783
+#: templates/js/translated/stock.js:1477
msgid "Select"
msgstr "Auswählen"
-#: templates/js/translated/build.js:860
+#: templates/js/translated/build.js:883
msgid "Build order is overdue"
msgstr "Bauauftrag ist überfällig"
-#: templates/js/translated/build.js:924 templates/js/translated/stock.js:1558
+#: templates/js/translated/build.js:944 templates/js/translated/stock.js:1696
msgid "No user information"
msgstr "Keine Benutzerinformation"
-#: templates/js/translated/build.js:939
+#: templates/js/translated/build.js:956
msgid "No information"
msgstr "Keine Information"
-#: templates/js/translated/build.js:989
+#: templates/js/translated/build.js:1007
msgid "No parts allocated for"
msgstr "Keine Teile zugeordnet zu"
-#: templates/js/translated/company.js:34
+#: templates/js/translated/company.js:65
msgid "Add Manufacturer"
-msgstr ""
+msgstr "Hersteller hinzufügen"
-#: templates/js/translated/company.js:47 templates/js/translated/company.js:136
+#: templates/js/translated/company.js:78 templates/js/translated/company.js:176
msgid "Add Manufacturer Part"
msgstr "Herstellerteil hinzufügen"
-#: templates/js/translated/company.js:59
+#: templates/js/translated/company.js:99
msgid "Edit Manufacturer Part"
msgstr "Herstellerteil ändern"
-#: templates/js/translated/company.js:68
+#: templates/js/translated/company.js:108
msgid "Delete Manufacturer Part"
msgstr "Herstellerteil löschen"
-#: templates/js/translated/company.js:124 templates/js/translated/order.js:58
+#: templates/js/translated/company.js:164 templates/js/translated/order.js:86
msgid "Add Supplier"
-msgstr ""
+msgstr "Zulieferer hinzufügen"
-#: templates/js/translated/company.js:152
+#: templates/js/translated/company.js:192
msgid "Add Supplier Part"
msgstr "Zuliefererteil hinzufügen"
-#: templates/js/translated/company.js:162
+#: templates/js/translated/company.js:207
msgid "Edit Supplier Part"
msgstr "Zuliefererteil bearbeiten"
-#: templates/js/translated/company.js:172
+#: templates/js/translated/company.js:217
msgid "Delete Supplier Part"
msgstr "Zuliefererteil entfernen"
-#: templates/js/translated/company.js:219
+#: templates/js/translated/company.js:264
msgid "Edit Company"
msgstr "Firma bearbeiten"
-#: templates/js/translated/company.js:240
+#: templates/js/translated/company.js:285
msgid "Add new Company"
msgstr "Neue Firma hinzufügen"
-#: templates/js/translated/company.js:317
+#: templates/js/translated/company.js:362
msgid "Parts Supplied"
msgstr "Teile geliefert"
-#: templates/js/translated/company.js:326
+#: templates/js/translated/company.js:371
msgid "Parts Manufactured"
msgstr "Hersteller-Teile"
-#: templates/js/translated/company.js:339
+#: templates/js/translated/company.js:385
msgid "No company information found"
msgstr "Keine Firmeninformation gefunden"
-#: templates/js/translated/company.js:357
+#: templates/js/translated/company.js:404
msgid "The following manufacturer parts will be deleted"
msgstr "Die folgenden Herstellerteile werden gelöscht"
-#: templates/js/translated/company.js:374
+#: templates/js/translated/company.js:421
msgid "Delete Manufacturer Parts"
msgstr "Herstellerteile löschen"
-#: templates/js/translated/company.js:427
+#: templates/js/translated/company.js:475
msgid "No manufacturer parts found"
msgstr "Keine Herstellerteile gefunden"
-#: templates/js/translated/company.js:446
-#: templates/js/translated/company.js:696 templates/js/translated/part.js:288
-#: templates/js/translated/part.js:373
+#: templates/js/translated/company.js:495
+#: templates/js/translated/company.js:751 templates/js/translated/part.js:416
+#: templates/js/translated/part.js:501
msgid "Template part"
msgstr "Vorlagenteil"
-#: templates/js/translated/company.js:450
-#: templates/js/translated/company.js:700 templates/js/translated/part.js:292
-#: templates/js/translated/part.js:377
+#: templates/js/translated/company.js:499
+#: templates/js/translated/company.js:755 templates/js/translated/part.js:420
+#: templates/js/translated/part.js:505
msgid "Assembled part"
msgstr "Baugruppe"
-#: templates/js/translated/company.js:574 templates/js/translated/part.js:462
+#: templates/js/translated/company.js:626 templates/js/translated/part.js:593
msgid "No parameters found"
msgstr "Keine Parameter gefunden"
-#: templates/js/translated/company.js:610 templates/js/translated/part.js:503
+#: templates/js/translated/company.js:663 templates/js/translated/part.js:635
msgid "Edit parameter"
msgstr "Parameter bearbeiten"
-#: templates/js/translated/company.js:611 templates/js/translated/part.js:504
+#: templates/js/translated/company.js:664 templates/js/translated/part.js:636
msgid "Delete parameter"
msgstr "Parameter löschen"
-#: templates/js/translated/company.js:630 templates/js/translated/part.js:521
+#: templates/js/translated/company.js:683 templates/js/translated/part.js:653
msgid "Edit Parameter"
msgstr "Parameter bearbeiten"
-#: templates/js/translated/company.js:641 templates/js/translated/part.js:533
+#: templates/js/translated/company.js:694 templates/js/translated/part.js:665
msgid "Delete Parameter"
msgstr "Parameter löschen"
-#: templates/js/translated/company.js:677
+#: templates/js/translated/company.js:731
msgid "No supplier parts found"
msgstr "Keine Zuliefererteile gefunden"
-#: templates/js/translated/filters.js:167
-#: templates/js/translated/filters.js:404
+#: templates/js/translated/filters.js:178
+#: templates/js/translated/filters.js:402
msgid "true"
msgstr "ja"
-#: templates/js/translated/filters.js:171
-#: templates/js/translated/filters.js:405
+#: templates/js/translated/filters.js:182
+#: templates/js/translated/filters.js:403
msgid "false"
msgstr "nein"
-#: templates/js/translated/filters.js:193
+#: templates/js/translated/filters.js:204
msgid "Select filter"
msgstr "Filter auswählen"
-#: templates/js/translated/filters.js:268
+#: templates/js/translated/filters.js:279
msgid "Reload data"
-msgstr ""
+msgstr "Daten neu laden"
-#: templates/js/translated/filters.js:270
+#: templates/js/translated/filters.js:281
msgid "Add new filter"
msgstr "Filter hinzufügen"
-#: templates/js/translated/filters.js:273
+#: templates/js/translated/filters.js:284
msgid "Clear all filters"
msgstr "Filter entfernen"
-#: templates/js/translated/filters.js:303
+#: templates/js/translated/filters.js:312
msgid "Create filter"
msgstr "Filter anlegen"
-#: templates/js/translated/forms.js:289 templates/js/translated/forms.js:302
-#: templates/js/translated/forms.js:314 templates/js/translated/forms.js:326
+#: templates/js/translated/forms.js:323 templates/js/translated/forms.js:336
+#: templates/js/translated/forms.js:348 templates/js/translated/forms.js:360
msgid "Action Prohibited"
msgstr "Aktion verboten"
-#: templates/js/translated/forms.js:290
+#: templates/js/translated/forms.js:324
msgid "Create operation not allowed"
msgstr "Erstellvorgang nicht erlaubt"
-#: templates/js/translated/forms.js:303
+#: templates/js/translated/forms.js:337
msgid "Update operation not allowed"
msgstr "Updatevorgang nicht erlaubt"
-#: templates/js/translated/forms.js:315
+#: templates/js/translated/forms.js:349
msgid "Delete operation not allowed"
msgstr "Löschvorgang nicht erlaubt"
-#: templates/js/translated/forms.js:327
+#: templates/js/translated/forms.js:361
msgid "View operation not allowed"
msgstr "Anzeigevorgang nicht erlaubt"
-#: templates/js/translated/forms.js:865 templates/modals.html:21
+#: templates/js/translated/forms.js:889 templates/modals.html:21
#: templates/modals.html:47
msgid "Form errors exist"
msgstr "Fehler in Formular"
-#: templates/js/translated/forms.js:1258
+#: templates/js/translated/forms.js:1379
msgid "Searching"
msgstr "Suche"
-#: templates/js/translated/forms.js:1423
+#: templates/js/translated/forms.js:1593
msgid "Clear input"
msgstr "Eingabe leeren"
-#: templates/js/translated/label.js:11
+#: templates/js/translated/helpers.js:19
+msgid "YES"
+msgstr "JA"
+
+#: templates/js/translated/helpers.js:21
+msgid "NO"
+msgstr "NEIN"
+
+#: templates/js/translated/label.js:30
msgid "Stock item(s) must be selected before printing labels"
msgstr "BestandsObjekt(e) müssen ausgewählt sein bevor Labels gedruckt werden können"
-#: templates/js/translated/label.js:29 templates/js/translated/label.js:79
-#: templates/js/translated/label.js:134
+#: templates/js/translated/label.js:48 templates/js/translated/label.js:98
+#: templates/js/translated/label.js:153
msgid "No Labels Found"
msgstr "Keine Labels gefunden"
-#: templates/js/translated/label.js:30
+#: templates/js/translated/label.js:49
msgid "No labels found which match selected stock item(s)"
msgstr "Keine Labels die zu BestandsObjekt(e) passen gefunden"
-#: templates/js/translated/label.js:61
+#: templates/js/translated/label.js:80
msgid "Select Stock Locations"
msgstr "Bestands-Lagerort auswählen"
-#: templates/js/translated/label.js:62
+#: templates/js/translated/label.js:81
msgid "Stock location(s) must be selected before printing labels"
msgstr "Bestands-Lagerort(e) müssen ausgewählt sein um Labels zu drucken"
-#: templates/js/translated/label.js:80
+#: templates/js/translated/label.js:99
msgid "No labels found which match selected stock location(s)"
msgstr "Keine Labels für die ausgewählten Bestands-Lagerort(e) gefunden"
-#: templates/js/translated/label.js:116
+#: templates/js/translated/label.js:135
msgid "Part(s) must be selected before printing labels"
msgstr "Teile(e) müssen ausgewählt sein bevor Labels gedruckt werden können"
-#: templates/js/translated/label.js:135
+#: templates/js/translated/label.js:154
msgid "No labels found which match the selected part(s)"
msgstr "Keine Labels zu den ausgewählten Teilen gefunden"
-#: templates/js/translated/label.js:209
+#: templates/js/translated/label.js:228
msgid "stock items selected"
msgstr "BestandsObjekte ausgewählt"
-#: templates/js/translated/label.js:217
+#: templates/js/translated/label.js:236
msgid "Select Label"
msgstr "Label auswählen"
-#: templates/js/translated/label.js:232
+#: templates/js/translated/label.js:251
msgid "Select Label Template"
msgstr "Label-Vorlage auswählen"
-#: templates/js/translated/modals.js:59 templates/js/translated/modals.js:103
-#: templates/js/translated/modals.js:593
+#: templates/js/translated/modals.js:76 templates/js/translated/modals.js:120
+#: templates/js/translated/modals.js:610
msgid "Cancel"
msgstr "Abbrechen"
-#: templates/js/translated/modals.js:60 templates/js/translated/modals.js:102
-#: templates/js/translated/modals.js:660 templates/js/translated/modals.js:956
+#: templates/js/translated/modals.js:77 templates/js/translated/modals.js:119
+#: templates/js/translated/modals.js:677 templates/js/translated/modals.js:970
#: templates/modals.html:30 templates/modals.html:55
msgid "Submit"
msgstr "Abschicken"
-#: templates/js/translated/modals.js:101
+#: templates/js/translated/modals.js:118
msgid "Form Title"
msgstr "Formulartitel"
-#: templates/js/translated/modals.js:380
+#: templates/js/translated/modals.js:397
msgid "Waiting for server..."
msgstr "Warte auf Server..."
-#: templates/js/translated/modals.js:539
+#: templates/js/translated/modals.js:556
msgid "Show Error Information"
msgstr "Fehler-Informationen anzeigen"
-#: templates/js/translated/modals.js:592
+#: templates/js/translated/modals.js:609
msgid "Accept"
msgstr "Akzeptieren"
-#: templates/js/translated/modals.js:649
+#: templates/js/translated/modals.js:666
msgid "Loading Data"
msgstr "Lade Daten"
-#: templates/js/translated/modals.js:907
+#: templates/js/translated/modals.js:922
msgid "Invalid response from server"
msgstr "ungültige Antwort vom Server"
-#: templates/js/translated/modals.js:907
+#: templates/js/translated/modals.js:922
msgid "Form data missing from server response"
msgstr "Formulardaten fehlen bei Serverantwort"
-#: templates/js/translated/modals.js:920
+#: templates/js/translated/modals.js:934
msgid "Error posting form data"
msgstr "Formulardaten fehlerhaft"
-#: templates/js/translated/modals.js:1017
+#: templates/js/translated/modals.js:1031
msgid "JSON response missing form data"
msgstr "JSON Antwort enthält keine Formulardaten"
-#: templates/js/translated/modals.js:1032
+#: templates/js/translated/modals.js:1046
msgid "Error 400: Bad Request"
msgstr "Fehler 400: Ungültige Anfrage"
-#: templates/js/translated/modals.js:1033
+#: templates/js/translated/modals.js:1047
msgid "Server returned error code 400"
msgstr "Fehler 400 von Server erhalten"
-#: templates/js/translated/modals.js:1056
+#: templates/js/translated/modals.js:1070
msgid "Error requesting form data"
msgstr "Fehler bei Formulardaten-Anfrage"
-#: templates/js/translated/model_renderers.js:38
+#: templates/js/translated/model_renderers.js:40
msgid "Company ID"
msgstr "Firmen-ID"
-#: templates/js/translated/model_renderers.js:78
+#: templates/js/translated/model_renderers.js:82
msgid "Location ID"
msgstr "Standort-ID"
-#: templates/js/translated/model_renderers.js:95
+#: templates/js/translated/model_renderers.js:99
msgid "Build ID"
msgstr "Bauauftrag-ID"
-#: templates/js/translated/model_renderers.js:114
+#: templates/js/translated/model_renderers.js:119
msgid "Part ID"
msgstr "Teil-ID"
-#: templates/js/translated/model_renderers.js:163
+#: templates/js/translated/model_renderers.js:171
msgid "Category ID"
msgstr "Kategorie-ID"
-#: templates/js/translated/model_renderers.js:199
+#: templates/js/translated/model_renderers.js:208
msgid "Manufacturer Part ID"
msgstr "Herstellerteil-ID"
-#: templates/js/translated/model_renderers.js:227
+#: templates/js/translated/model_renderers.js:237
msgid "Supplier Part ID"
msgstr "Zuliefererteil-ID"
-#: templates/js/translated/order.js:17
+#: templates/js/translated/order.js:45
msgid "Add Customer"
-msgstr ""
+msgstr "Kunden hinzufügen"
-#: templates/js/translated/order.js:42
+#: templates/js/translated/order.js:70
msgid "Create Sales Order"
msgstr "Auftrag anlegen"
-#: templates/js/translated/order.js:222
+#: templates/js/translated/order.js:295
msgid "No purchase orders found"
msgstr "Keine Bestellungen gefunden"
-#: templates/js/translated/order.js:246 templates/js/translated/order.js:341
+#: templates/js/translated/order.js:320 templates/js/translated/order.js:682
msgid "Order is overdue"
msgstr "Bestellung überfällig"
-#: templates/js/translated/order.js:318
+#: templates/js/translated/order.js:452
+msgid "No line items found"
+msgstr "Keine Positionen gefunden"
+
+#: templates/js/translated/order.js:617
+msgid "Delete line item"
+msgstr "Position löschen"
+
+#: templates/js/translated/order.js:621
+msgid "Receive line item"
+msgstr "Position empfangen"
+
+#: templates/js/translated/order.js:658
msgid "No sales orders found"
msgstr "Keine Aufträge gefunden"
-#: templates/js/translated/order.js:355
+#: templates/js/translated/order.js:696
msgid "Invalid Customer"
msgstr "Ungültiger Kunde"
-#: templates/js/translated/order.js:432
+#: templates/js/translated/order.js:774
msgid "No sales order allocations found"
msgstr ""
-#: templates/js/translated/part.js:10
-msgid "YES"
-msgstr "JA"
-
-#: templates/js/translated/part.js:12
-msgid "NO"
-msgstr "NEIN"
-
-#: templates/js/translated/part.js:22
-msgid "Add Part Category"
-msgstr ""
+#: templates/js/translated/part.js:49
+msgid "Part Attributes"
+msgstr "Teileigenschaften"
#: templates/js/translated/part.js:53
-msgid "Part Attributes"
-msgstr ""
-
-#: templates/js/translated/part.js:96
msgid "Part Creation Options"
-msgstr ""
+msgstr "Erstellungsoptionen für Teile"
-#: templates/js/translated/part.js:102
+#: templates/js/translated/part.js:57
+msgid "Part Duplication Options"
+msgstr "Einstellungen für Teilkopien"
+
+#: templates/js/translated/part.js:61
+msgid "Supplier Options"
+msgstr "Zuliefereroptionen"
+
+#: templates/js/translated/part.js:75
+msgid "Add Part Category"
+msgstr "Teil-Kategorie hinzufügen"
+
+#: templates/js/translated/part.js:159
+msgid "Create Initial Stock"
+msgstr "Anfänglichen Bestand erstellen"
+
+#: templates/js/translated/part.js:160
+msgid "Create an initial stock item for this part"
+msgstr "Anfänglichen Bestand für dieses Teil erstellen"
+
+#: templates/js/translated/part.js:167
msgid "Initial Stock Quantity"
-msgstr ""
+msgstr "Start-Bestandsmenge"
-#: templates/js/translated/part.js:103
-msgid "Initialize part stock with specified quantity"
-msgstr ""
+#: templates/js/translated/part.js:168
+msgid "Specify initial stock quantity for this part"
+msgstr "Menge des anfänglichen Bestands für dieses Teil angeben"
-#: templates/js/translated/part.js:109
+#: templates/js/translated/part.js:175 templates/js/translated/stock.js:330
+msgid "Select destination stock location"
+msgstr "Zielstandort auswählen"
+
+#: templates/js/translated/part.js:186
msgid "Copy Category Parameters"
-msgstr ""
+msgstr "Kategorieparameter kopieren"
-#: templates/js/translated/part.js:110
+#: templates/js/translated/part.js:187
msgid "Copy parameter templates from selected part category"
msgstr ""
-#: templates/js/translated/part.js:120
-msgid "Part Duplication Options"
+#: templates/js/translated/part.js:195
+msgid "Add Supplier Data"
+msgstr "Zuliefererdaten hinzufügen"
+
+#: templates/js/translated/part.js:196
+msgid "Create initial supplier data for this part"
msgstr ""
-#: templates/js/translated/part.js:131
+#: templates/js/translated/part.js:252
msgid "Copy Image"
-msgstr ""
+msgstr "Bild kopieren"
-#: templates/js/translated/part.js:132
+#: templates/js/translated/part.js:253
msgid "Copy image from original part"
-msgstr ""
+msgstr "Bild vom Originalteil kopieren"
-#: templates/js/translated/part.js:138
+#: templates/js/translated/part.js:260
msgid "Copy BOM"
msgstr "Stückliste kopieren"
-#: templates/js/translated/part.js:139
+#: templates/js/translated/part.js:261
msgid "Copy bill of materials from original part"
-msgstr ""
+msgstr "Stückliste vom Originalteil kopieren"
-#: templates/js/translated/part.js:145
+#: templates/js/translated/part.js:268
msgid "Copy Parameters"
msgstr "Parameter kopieren"
-#: templates/js/translated/part.js:146
+#: templates/js/translated/part.js:269
msgid "Copy parameter data from original part"
-msgstr ""
+msgstr "Parameterdaten vom Originalteil kopieren"
-#: templates/js/translated/part.js:158
+#: templates/js/translated/part.js:282
msgid "Parent part category"
-msgstr ""
+msgstr "Übergeordnete Teilkategorie"
-#: templates/js/translated/part.js:196
+#: templates/js/translated/part.js:323
msgid "Edit Part"
msgstr "Teil bearbeiten"
-#: templates/js/translated/part.js:280 templates/js/translated/part.js:365
+#: templates/js/translated/part.js:408 templates/js/translated/part.js:493
msgid "Trackable part"
msgstr "Nachverfolgbares Teil"
-#: templates/js/translated/part.js:284 templates/js/translated/part.js:369
+#: templates/js/translated/part.js:412 templates/js/translated/part.js:497
msgid "Virtual part"
msgstr "virtuelles Teil"
-#: templates/js/translated/part.js:296
+#: templates/js/translated/part.js:424
msgid "Starred part"
msgstr "Favoritenteil"
-#: templates/js/translated/part.js:300
+#: templates/js/translated/part.js:428
msgid "Salable part"
msgstr "Verkäufliches Teil"
-#: templates/js/translated/part.js:414
+#: templates/js/translated/part.js:543
msgid "No variants found"
msgstr "Keine Varianten gefunden"
-#: templates/js/translated/part.js:601 templates/js/translated/part.js:840
+#: templates/js/translated/part.js:732 templates/js/translated/part.js:994
msgid "No parts found"
msgstr "Keine Teile gefunden"
-#: templates/js/translated/part.js:779
+#: templates/js/translated/part.js:921
msgid "No category"
msgstr "Keine Kategorie"
-#: templates/js/translated/part.js:797
-#: templates/js/translated/table_filters.js:337
+#: templates/js/translated/part.js:944
+#: templates/js/translated/table_filters.js:350
msgid "Low stock"
msgstr "Bestand niedrig"
-#: templates/js/translated/part.js:981 templates/js/translated/stock.js:1360
+#: templates/js/translated/part.js:1148 templates/js/translated/stock.js:1501
msgid "Path"
msgstr "Pfad"
-#: templates/js/translated/part.js:1024
+#: templates/js/translated/part.js:1191
msgid "No test templates matching query"
msgstr "Keine zur Anfrage passenden Testvorlagen"
-#: templates/js/translated/part.js:1075 templates/js/translated/stock.js:443
+#: templates/js/translated/part.js:1242 templates/js/translated/stock.js:514
msgid "Edit test result"
msgstr "Testergebnis bearbeiten"
-#: templates/js/translated/part.js:1076 templates/js/translated/stock.js:444
+#: templates/js/translated/part.js:1243 templates/js/translated/stock.js:515
msgid "Delete test result"
msgstr "Testergebnis löschen"
-#: templates/js/translated/part.js:1082
+#: templates/js/translated/part.js:1249
msgid "This test is defined for a parent part"
msgstr "Dieses Testergebnis ist für ein Hauptteil"
-#: templates/js/translated/part.js:1107
+#: templates/js/translated/part.js:1274
#, python-brace-format
msgid "No ${human_name} information found"
msgstr "Keine ${human_name} Informationen gefunden"
-#: templates/js/translated/part.js:1160
+#: templates/js/translated/part.js:1329
#, python-brace-format
msgid "Edit ${human_name}"
msgstr "${human_name} bearbeiten"
-#: templates/js/translated/part.js:1161
+#: templates/js/translated/part.js:1330
#, python-brace-format
msgid "Delete ${human_name}"
msgstr "${human_name} löschen"
-#: templates/js/translated/part.js:1261
+#: templates/js/translated/part.js:1431
msgid "Single Price"
msgstr "Einzelpreis"
-#: templates/js/translated/part.js:1280
+#: templates/js/translated/part.js:1450
msgid "Single Price Difference"
msgstr "Einzelpreisdifferenz"
-#: templates/js/translated/stock.js:9
+#: templates/js/translated/stock.js:66
msgid "Parent stock location"
-msgstr ""
+msgstr "Übergeordneter Lagerort"
-#: templates/js/translated/stock.js:39
+#: templates/js/translated/stock.js:96
msgid "Export Stock"
msgstr "Bestand exportieren"
-#: templates/js/translated/stock.js:42
+#: templates/js/translated/stock.js:99
msgid "Format"
msgstr "Format"
-#: templates/js/translated/stock.js:43
+#: templates/js/translated/stock.js:100
msgid "Select file format"
msgstr "Dateiformat auswählen"
-#: templates/js/translated/stock.js:55
+#: templates/js/translated/stock.js:124
msgid "Include Sublocations"
-msgstr ""
+msgstr "Einschließlich Unterstandorte"
-#: templates/js/translated/stock.js:56
+#: templates/js/translated/stock.js:125
msgid "Include stock items in sublocations"
msgstr ""
-#: templates/js/translated/stock.js:98
+#: templates/js/translated/stock.js:167
msgid "Transfer Stock"
msgstr "Bestand verschieben"
-#: templates/js/translated/stock.js:99
+#: templates/js/translated/stock.js:168
msgid "Move"
msgstr "Verschieben"
-#: templates/js/translated/stock.js:105
+#: templates/js/translated/stock.js:174
msgid "Count Stock"
msgstr "Bestand zählen"
-#: templates/js/translated/stock.js:106
+#: templates/js/translated/stock.js:175
msgid "Count"
msgstr "Anzahl"
-#: templates/js/translated/stock.js:110
+#: templates/js/translated/stock.js:179
msgid "Remove Stock"
msgstr "Bestand entfernen"
-#: templates/js/translated/stock.js:111
+#: templates/js/translated/stock.js:180
msgid "Take"
msgstr "Entfernen"
-#: templates/js/translated/stock.js:115
+#: templates/js/translated/stock.js:184
msgid "Add Stock"
msgstr "Bestand hinzufügen"
-#: templates/js/translated/stock.js:116 users/models.py:190
+#: templates/js/translated/stock.js:185 users/models.py:190
msgid "Add"
msgstr "Hinzufügen"
-#: templates/js/translated/stock.js:120 templates/stock_table.html:63
+#: templates/js/translated/stock.js:189 templates/stock_table.html:63
msgid "Delete Stock"
msgstr "Bestand löschen"
-#: templates/js/translated/stock.js:209
+#: templates/js/translated/stock.js:278
msgid "Quantity cannot be adjusted for serialized stock"
msgstr "Menge von serialisiertem Bestand kann nicht bearbeitet werden"
-#: templates/js/translated/stock.js:209
+#: templates/js/translated/stock.js:278
msgid "Specify stock quantity"
msgstr "Bestandsanzahl angeben"
-#: templates/js/translated/stock.js:245
+#: templates/js/translated/stock.js:314
msgid "You must select at least one available stock item"
msgstr "Sie müssen mindestens einen Lagerbestand auswählen"
-#: templates/js/translated/stock.js:261
-msgid "Select destination stock location"
-msgstr "Zielstandort auswählen"
-
-#: templates/js/translated/stock.js:269
+#: templates/js/translated/stock.js:339
msgid "Stock transaction notes"
-msgstr ""
+msgstr "Bestandsbewegungsnotizen"
-#: templates/js/translated/stock.js:406
+#: templates/js/translated/stock.js:477
msgid "PASS"
msgstr "ERFOLGREICH"
-#: templates/js/translated/stock.js:408
+#: templates/js/translated/stock.js:479
msgid "FAIL"
msgstr "FEHLGESCHLAGEN"
-#: templates/js/translated/stock.js:413
+#: templates/js/translated/stock.js:484
msgid "NO RESULT"
msgstr "KEIN ERGEBNIS"
-#: templates/js/translated/stock.js:439
+#: templates/js/translated/stock.js:510
msgid "Add test result"
msgstr "Testergebnis hinzufügen"
-#: templates/js/translated/stock.js:465
+#: templates/js/translated/stock.js:536
msgid "No test results found"
msgstr "Keine Testergebnisse gefunden"
-#: templates/js/translated/stock.js:513
+#: templates/js/translated/stock.js:584
msgid "Test Date"
msgstr "Testdatum"
-#: templates/js/translated/stock.js:621
+#: templates/js/translated/stock.js:691
msgid "In production"
msgstr "In Arbeit"
-#: templates/js/translated/stock.js:625
+#: templates/js/translated/stock.js:695
msgid "Installed in Stock Item"
msgstr "In BestandsObjekt installiert"
-#: templates/js/translated/stock.js:633
+#: templates/js/translated/stock.js:703
msgid "Assigned to Sales Order"
msgstr "Auftrag zugewiesen"
-#: templates/js/translated/stock.js:709
-msgid "No stock items matching query"
-msgstr "Keine zur Anfrage passenden BestandsObjekte"
-
-#: templates/js/translated/stock.js:729
-msgid "items"
-msgstr "Teile"
-
-#: templates/js/translated/stock.js:821
-msgid "batches"
-msgstr "lose"
-
-#: templates/js/translated/stock.js:848
-msgid "locations"
-msgstr "Lagerorte"
-
-#: templates/js/translated/stock.js:850
-msgid "Undefined location"
-msgstr "unbekannter Lagerort"
-
-#: templates/js/translated/stock.js:951
+#: templates/js/translated/stock.js:865
msgid "Stock item is in production"
msgstr "BestandsObjekt wird produziert"
-#: templates/js/translated/stock.js:956
+#: templates/js/translated/stock.js:870
msgid "Stock item assigned to sales order"
msgstr "BestandsObjekt wurde Auftrag zugewiesen"
-#: templates/js/translated/stock.js:959
+#: templates/js/translated/stock.js:873
msgid "Stock item assigned to customer"
msgstr "BestandsObjekt wurde Kunden zugewiesen"
-#: templates/js/translated/stock.js:963
+#: templates/js/translated/stock.js:877
msgid "Stock item has expired"
msgstr "BestandsObjekt ist abgelaufen"
-#: templates/js/translated/stock.js:965
+#: templates/js/translated/stock.js:879
msgid "Stock item will expire soon"
msgstr "BestandsObjekt läuft demnächst ab"
-#: templates/js/translated/stock.js:969
+#: templates/js/translated/stock.js:883
msgid "Stock item has been allocated"
msgstr "BestandsObjekt zugewiesen"
-#: templates/js/translated/stock.js:973
+#: templates/js/translated/stock.js:887
msgid "Stock item has been installed in another item"
msgstr "BestandsObjekt in anderem Element verbaut"
-#: templates/js/translated/stock.js:980
+#: templates/js/translated/stock.js:894
msgid "Stock item has been rejected"
msgstr "BestandsObjekt abgewiesen"
-#: templates/js/translated/stock.js:984
+#: templates/js/translated/stock.js:896
msgid "Stock item is lost"
msgstr "BestandsObjekt verloren"
-#: templates/js/translated/stock.js:987
+#: templates/js/translated/stock.js:898
msgid "Stock item is destroyed"
msgstr "BestandsObjekt zerstört"
-#: templates/js/translated/stock.js:991
-#: templates/js/translated/table_filters.js:148
+#: templates/js/translated/stock.js:902
+#: templates/js/translated/table_filters.js:161
msgid "Depleted"
msgstr "gelöscht"
-#: templates/js/translated/stock.js:1020
+#: templates/js/translated/stock.js:956
msgid "Stocktake"
msgstr "Inventur"
-#: templates/js/translated/stock.js:1073
+#: templates/js/translated/stock.js:1029
msgid "Supplier part not specified"
msgstr ""
-#: templates/js/translated/stock.js:1223
+#: templates/js/translated/stock.js:1067
+msgid "No stock items matching query"
+msgstr "Keine zur Anfrage passenden BestandsObjekte"
+
+#: templates/js/translated/stock.js:1088 templates/js/translated/stock.js:1136
+msgid "items"
+msgstr "Teile"
+
+#: templates/js/translated/stock.js:1176
+msgid "batches"
+msgstr "lose"
+
+#: templates/js/translated/stock.js:1203
+msgid "locations"
+msgstr "Lagerorte"
+
+#: templates/js/translated/stock.js:1205
+msgid "Undefined location"
+msgstr "unbekannter Lagerort"
+
+#: templates/js/translated/stock.js:1364
msgid "Stock Status"
msgstr "Status"
-#: templates/js/translated/stock.js:1238
+#: templates/js/translated/stock.js:1379
msgid "Set Stock Status"
msgstr "Status setzen"
-#: templates/js/translated/stock.js:1252
+#: templates/js/translated/stock.js:1393
msgid "Select Status Code"
msgstr "Status Code setzen"
-#: templates/js/translated/stock.js:1253
+#: templates/js/translated/stock.js:1394
msgid "Status code must be selected"
msgstr "Status Code muss ausgewählt werden"
-#: templates/js/translated/stock.js:1392
+#: templates/js/translated/stock.js:1533
msgid "Invalid date"
msgstr "Ungültiges Datum"
-#: templates/js/translated/stock.js:1439
+#: templates/js/translated/stock.js:1580
msgid "Location no longer exists"
msgstr "Standort nicht mehr vorhanden"
-#: templates/js/translated/stock.js:1458
+#: templates/js/translated/stock.js:1599
msgid "Purchase order no longer exists"
msgstr "Bestellung existiert nicht mehr"
-#: templates/js/translated/stock.js:1477
+#: templates/js/translated/stock.js:1618
msgid "Customer no longer exists"
msgstr "Kunde existiert nicht mehr"
-#: templates/js/translated/stock.js:1495
+#: templates/js/translated/stock.js:1636
msgid "Stock item no longer exists"
msgstr "Lagerbestand existiert nicht mehr"
-#: templates/js/translated/stock.js:1518
+#: templates/js/translated/stock.js:1659
msgid "Added"
msgstr "Hinzugefügt"
-#: templates/js/translated/stock.js:1526
+#: templates/js/translated/stock.js:1667
msgid "Removed"
msgstr "Entfernt"
-#: templates/js/translated/stock.js:1570
+#: templates/js/translated/stock.js:1708
msgid "Edit tracking entry"
msgstr "Tracking-Eintrag bearbeiten"
-#: templates/js/translated/stock.js:1571
+#: templates/js/translated/stock.js:1709
msgid "Delete tracking entry"
msgstr "Tracking-Eintrag löschen"
-#: templates/js/translated/stock.js:1715
+#: templates/js/translated/stock.js:1833
msgid "No installed items"
msgstr "Keine installierten Elemente"
-#: templates/js/translated/stock.js:1738
+#: templates/js/translated/stock.js:1856
msgid "Serial"
msgstr "Seriennummer"
-#: templates/js/translated/stock.js:1766
+#: templates/js/translated/stock.js:1884
msgid "Uninstall Stock Item"
msgstr "Lagerbestand entfernen"
-#: templates/js/translated/table_filters.js:43
+#: templates/js/translated/table_filters.js:56
msgid "Trackable Part"
msgstr "Nachverfolgbares Teil"
-#: templates/js/translated/table_filters.js:47
+#: templates/js/translated/table_filters.js:60
msgid "Assembled Part"
-msgstr ""
+msgstr "Baugruppe"
-#: templates/js/translated/table_filters.js:51
+#: templates/js/translated/table_filters.js:64
msgid "Validated"
msgstr "überprüft"
-#: templates/js/translated/table_filters.js:59
+#: templates/js/translated/table_filters.js:72
msgid "Allow Variant Stock"
msgstr "Bestand an Varianten zulassen"
-#: templates/js/translated/table_filters.js:79
-#: templates/js/translated/table_filters.js:143
+#: templates/js/translated/table_filters.js:92
+#: templates/js/translated/table_filters.js:156
msgid "Include sublocations"
msgstr "Unter-Lagerorte einschließen"
-#: templates/js/translated/table_filters.js:80
+#: templates/js/translated/table_filters.js:93
msgid "Include locations"
msgstr "Lagerorte einschließen"
-#: templates/js/translated/table_filters.js:90
-#: templates/js/translated/table_filters.js:91
-#: templates/js/translated/table_filters.js:314
+#: templates/js/translated/table_filters.js:103
+#: templates/js/translated/table_filters.js:104
+#: templates/js/translated/table_filters.js:327
msgid "Include subcategories"
msgstr "Unterkategorien einschließen"
-#: templates/js/translated/table_filters.js:101
-#: templates/js/translated/table_filters.js:178
+#: templates/js/translated/table_filters.js:114
+#: templates/js/translated/table_filters.js:191
msgid "Is Serialized"
msgstr "Hat Seriennummer"
-#: templates/js/translated/table_filters.js:104
-#: templates/js/translated/table_filters.js:185
+#: templates/js/translated/table_filters.js:117
+#: templates/js/translated/table_filters.js:198
msgid "Serial number GTE"
msgstr "Seriennummer >="
-#: templates/js/translated/table_filters.js:105
-#: templates/js/translated/table_filters.js:186
+#: templates/js/translated/table_filters.js:118
+#: templates/js/translated/table_filters.js:199
msgid "Serial number greater than or equal to"
msgstr "Seriennummer größer oder gleich"
-#: templates/js/translated/table_filters.js:108
-#: templates/js/translated/table_filters.js:189
+#: templates/js/translated/table_filters.js:121
+#: templates/js/translated/table_filters.js:202
msgid "Serial number LTE"
msgstr "Seriennummer <="
-#: templates/js/translated/table_filters.js:109
-#: templates/js/translated/table_filters.js:190
+#: templates/js/translated/table_filters.js:122
+#: templates/js/translated/table_filters.js:203
msgid "Serial number less than or equal to"
msgstr "Seriennummern kleiner oder gleich"
-#: templates/js/translated/table_filters.js:112
-#: templates/js/translated/table_filters.js:113
-#: templates/js/translated/table_filters.js:181
-#: templates/js/translated/table_filters.js:182
+#: templates/js/translated/table_filters.js:125
+#: templates/js/translated/table_filters.js:126
+#: templates/js/translated/table_filters.js:194
+#: templates/js/translated/table_filters.js:195
msgid "Serial number"
msgstr "Seriennummer"
-#: templates/js/translated/table_filters.js:117
-#: templates/js/translated/table_filters.js:199
+#: templates/js/translated/table_filters.js:130
+#: templates/js/translated/table_filters.js:212
msgid "Batch code"
msgstr "Losnummer"
-#: templates/js/translated/table_filters.js:128
-#: templates/js/translated/table_filters.js:304
+#: templates/js/translated/table_filters.js:141
+#: templates/js/translated/table_filters.js:317
msgid "Active parts"
msgstr "Aktive Teile"
-#: templates/js/translated/table_filters.js:129
+#: templates/js/translated/table_filters.js:142
msgid "Show stock for active parts"
msgstr "Bestand aktiver Teile anzeigen"
-#: templates/js/translated/table_filters.js:134
+#: templates/js/translated/table_filters.js:147
msgid "Part is an assembly"
msgstr "Teil ist eine Baugruppe"
-#: templates/js/translated/table_filters.js:138
+#: templates/js/translated/table_filters.js:151
msgid "Is allocated"
msgstr "Ist zugeordnet"
-#: templates/js/translated/table_filters.js:139
+#: templates/js/translated/table_filters.js:152
msgid "Item has been allocated"
msgstr "Teil wurde zugeordnet"
-#: templates/js/translated/table_filters.js:144
+#: templates/js/translated/table_filters.js:157
msgid "Include stock in sublocations"
msgstr "Bestand in Unter-Lagerorten einschließen"
-#: templates/js/translated/table_filters.js:149
+#: templates/js/translated/table_filters.js:162
msgid "Show stock items which are depleted"
msgstr "Zeige aufgebrauchte BestandsObjekte"
-#: templates/js/translated/table_filters.js:154
+#: templates/js/translated/table_filters.js:167
msgid "Show items which are in stock"
msgstr "Zeige Objekte welche im Lager sind"
-#: templates/js/translated/table_filters.js:158
+#: templates/js/translated/table_filters.js:171
msgid "In Production"
msgstr "In Arbeit"
-#: templates/js/translated/table_filters.js:159
+#: templates/js/translated/table_filters.js:172
msgid "Show items which are in production"
msgstr "Elemente, die in Produktion sind, anzeigen"
-#: templates/js/translated/table_filters.js:163
+#: templates/js/translated/table_filters.js:176
msgid "Include Variants"
msgstr "Varianten einschließen"
-#: templates/js/translated/table_filters.js:164
+#: templates/js/translated/table_filters.js:177
msgid "Include stock items for variant parts"
msgstr "BestandsObjekte für Teil-Varianten einschließen"
-#: templates/js/translated/table_filters.js:168
+#: templates/js/translated/table_filters.js:181
msgid "Installed"
msgstr "Installiert"
-#: templates/js/translated/table_filters.js:169
+#: templates/js/translated/table_filters.js:182
msgid "Show stock items which are installed in another item"
msgstr "BestandsObjekte, die in anderen Elementen verbaut sind, anzeigen"
-#: templates/js/translated/table_filters.js:174
+#: templates/js/translated/table_filters.js:187
msgid "Show items which have been assigned to a customer"
msgstr "zeige zu Kunden zugeordnete Einträge"
-#: templates/js/translated/table_filters.js:194
-#: templates/js/translated/table_filters.js:195
+#: templates/js/translated/table_filters.js:207
+#: templates/js/translated/table_filters.js:208
msgid "Stock status"
msgstr "Status"
-#: templates/js/translated/table_filters.js:203
+#: templates/js/translated/table_filters.js:216
msgid "Has purchase price"
msgstr "Hat Einkaufspreis"
-#: templates/js/translated/table_filters.js:204
+#: templates/js/translated/table_filters.js:217
msgid "Show stock items which have a purchase price set"
-msgstr ""
+msgstr "Bestand mit Einkaufspreis anzeigen"
-#: templates/js/translated/table_filters.js:213
+#: templates/js/translated/table_filters.js:226
msgid "Show stock items which have expired"
msgstr "Zeige abgelaufene BestandsObjekte"
-#: templates/js/translated/table_filters.js:219
+#: templates/js/translated/table_filters.js:232
msgid "Show stock which is close to expiring"
msgstr "Bestand, der bald ablaufen, anzeigen"
-#: templates/js/translated/table_filters.js:250
+#: templates/js/translated/table_filters.js:263
msgid "Build status"
msgstr "Bauauftrags-Status"
-#: templates/js/translated/table_filters.js:269
-#: templates/js/translated/table_filters.js:286
+#: templates/js/translated/table_filters.js:282
+#: templates/js/translated/table_filters.js:299
msgid "Order status"
msgstr "Bestellstatus"
-#: templates/js/translated/table_filters.js:274
-#: templates/js/translated/table_filters.js:291
+#: templates/js/translated/table_filters.js:287
+#: templates/js/translated/table_filters.js:304
msgid "Outstanding"
msgstr "ausstehend"
-#: templates/js/translated/table_filters.js:315
+#: templates/js/translated/table_filters.js:328
msgid "Include parts in subcategories"
msgstr "Teile in Unterkategorien einschließen"
-#: templates/js/translated/table_filters.js:319
+#: templates/js/translated/table_filters.js:332
msgid "Has IPN"
msgstr "Hat IPN"
-#: templates/js/translated/table_filters.js:320
+#: templates/js/translated/table_filters.js:333
msgid "Part has internal part number"
msgstr "Teil hat Interne Teilenummer"
-#: templates/js/translated/table_filters.js:325
+#: templates/js/translated/table_filters.js:338
msgid "Show active parts"
msgstr "Aktive Teile anzeigen"
-#: templates/js/translated/table_filters.js:333
+#: templates/js/translated/table_filters.js:346
msgid "Stock available"
msgstr "verfügbarer Lagerbestand"
-#: templates/js/translated/table_filters.js:349
+#: templates/js/translated/table_filters.js:362
msgid "Starred"
msgstr "Favorit"
-#: templates/js/translated/table_filters.js:361
+#: templates/js/translated/table_filters.js:374
msgid "Purchasable"
msgstr "Käuflich"
-#: templates/js/translated/tables.js:342
+#: templates/js/translated/tables.js:357
msgid "Loading data"
msgstr "Lade Daten"
-#: templates/js/translated/tables.js:345
+#: templates/js/translated/tables.js:360
msgid "rows per page"
msgstr "Zeilen pro Seite"
-#: templates/js/translated/tables.js:348
+#: templates/js/translated/tables.js:363
msgid "Showing"
msgstr "zeige"
-#: templates/js/translated/tables.js:348
+#: templates/js/translated/tables.js:363
msgid "to"
msgstr "bis"
-#: templates/js/translated/tables.js:348
+#: templates/js/translated/tables.js:363
msgid "of"
msgstr "von"
-#: templates/js/translated/tables.js:348
+#: templates/js/translated/tables.js:363
msgid "rows"
msgstr "Zeilen"
-#: templates/js/translated/tables.js:354
+#: templates/js/translated/tables.js:369
msgid "No matching results"
msgstr "Keine passenden Ergebnisse gefunden"
-#: templates/js/translated/tables.js:357
+#: templates/js/translated/tables.js:372
msgid "Hide/Show pagination"
msgstr "Zeige/Verstecke Pagination"
-#: templates/js/translated/tables.js:360
+#: templates/js/translated/tables.js:375
msgid "Refresh"
msgstr "Neu laden"
-#: templates/js/translated/tables.js:363
+#: templates/js/translated/tables.js:378
msgid "Toggle"
msgstr "umschalten"
-#: templates/js/translated/tables.js:366
+#: templates/js/translated/tables.js:381
msgid "Columns"
msgstr "Spalten"
-#: templates/js/translated/tables.js:369
+#: templates/js/translated/tables.js:384
msgid "All"
msgstr "Alle"
-#: templates/navbar.html:13
+#: templates/navbar.html:19
msgid "Toggle navigation"
msgstr "Navigation ein-/ausklappen"
-#: templates/navbar.html:33
+#: templates/navbar.html:39
msgid "Buy"
msgstr "Kaufen"
-#: templates/navbar.html:43
+#: templates/navbar.html:51
msgid "Sell"
msgstr "Verkaufen"
-#: templates/navbar.html:55
-msgid "Scan Barcode"
-msgstr "Barcode scannen"
-
-#: templates/navbar.html:77 users/models.py:39
+#: templates/navbar.html:87 users/models.py:39
msgid "Admin"
msgstr "Admin"
-#: templates/navbar.html:79
+#: templates/navbar.html:89
msgid "Logout"
msgstr "Ausloggen"
-#: templates/navbar.html:81 templates/registration/login.html:89
+#: templates/navbar.html:91 templates/registration/login.html:89
msgid "Login"
msgstr "Einloggen"
-#: templates/navbar.html:104
+#: templates/navbar.html:114
msgid "About InvenTree"
msgstr "Über InvenTree"
diff --git a/InvenTree/locale/el/LC_MESSAGES/django.po b/InvenTree/locale/el/LC_MESSAGES/django.po
index fb7695ddea..b9d642169d 100644
--- a/InvenTree/locale/el/LC_MESSAGES/django.po
+++ b/InvenTree/locale/el/LC_MESSAGES/django.po
@@ -2,8 +2,8 @@ msgid ""
msgstr ""
"Project-Id-Version: inventree\n"
"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2021-08-07 15:14+0000\n"
-"PO-Revision-Date: 2021-08-07 15:30\n"
+"POT-Creation-Date: 2021-09-12 13:15+0000\n"
+"PO-Revision-Date: 2021-09-12 13:44\n"
"Last-Translator: \n"
"Language-Team: Greek\n"
"Language: el_GR\n"
@@ -36,7 +36,7 @@ msgstr ""
#: InvenTree/forms.py:111 build/forms.py:102 build/forms.py:123
#: build/forms.py:145 build/forms.py:169 build/forms.py:185 build/forms.py:227
#: order/forms.py:30 order/forms.py:41 order/forms.py:52 order/forms.py:63
-#: order/forms.py:74 part/forms.py:108 templates/js/translated/forms.js:545
+#: order/forms.py:74 part/forms.py:108 templates/js/translated/forms.js:564
msgid "Confirm"
msgstr ""
@@ -73,7 +73,7 @@ msgstr ""
msgid "Duplicate serial: {n}"
msgstr ""
-#: InvenTree/helpers.py:408 order/models.py:315 order/models.py:425
+#: InvenTree/helpers.py:408 order/models.py:315 order/models.py:430
#: stock/views.py:1363
msgid "Invalid quantity provided"
msgstr ""
@@ -102,152 +102,181 @@ msgstr ""
msgid "Number of unique serial number ({s}) must match quantity ({q})"
msgstr ""
-#: InvenTree/models.py:61 stock/models.py:1815
+#: InvenTree/models.py:66 stock/models.py:1826
msgid "Attachment"
msgstr ""
-#: InvenTree/models.py:62
+#: InvenTree/models.py:67
msgid "Select file to attach"
msgstr ""
-#: InvenTree/models.py:64 templates/js/translated/attachment.js:52
+#: InvenTree/models.py:69 templates/js/translated/attachment.js:87
msgid "Comment"
msgstr ""
-#: InvenTree/models.py:64
+#: InvenTree/models.py:69
msgid "File comment"
msgstr ""
-#: InvenTree/models.py:70 InvenTree/models.py:71 common/models.py:969
-#: common/models.py:970 part/models.py:2035
+#: InvenTree/models.py:75 InvenTree/models.py:76 common/models.py:993
+#: common/models.py:994 part/models.py:2051
#: report/templates/report/inventree_test_report_base.html:91
-#: templates/js/translated/stock.js:1549
+#: templates/js/translated/stock.js:1690
msgid "User"
msgstr ""
-#: InvenTree/models.py:74
+#: InvenTree/models.py:79
msgid "upload date"
msgstr ""
-#: InvenTree/models.py:113
+#: InvenTree/models.py:99
+msgid "Filename must not be empty"
+msgstr ""
+
+#: InvenTree/models.py:122
+msgid "Invalid attachment directory"
+msgstr ""
+
+#: InvenTree/models.py:132
+#, python-brace-format
+msgid "Filename contains illegal character '{c}'"
+msgstr ""
+
+#: InvenTree/models.py:135
+msgid "Filename missing extension"
+msgstr ""
+
+#: InvenTree/models.py:142
+msgid "Attachment with this filename already exists"
+msgstr ""
+
+#: InvenTree/models.py:149
+msgid "Error renaming file"
+msgstr ""
+
+#: InvenTree/models.py:184
msgid "Invalid choice"
msgstr ""
-#: InvenTree/models.py:129 InvenTree/models.py:130 company/models.py:412
-#: label/models.py:112 part/models.py:656 part/models.py:2196
-#: part/templates/part/part_base.html:233 report/models.py:181
+#: InvenTree/models.py:200 InvenTree/models.py:201 company/models.py:414
+#: label/models.py:112 part/models.py:658 part/models.py:2212
+#: part/templates/part/part_base.html:241 report/models.py:181
#: templates/InvenTree/search.html:137 templates/InvenTree/search.html:289
-#: templates/js/translated/company.js:583 templates/js/translated/part.js:338
-#: templates/js/translated/part.js:471 templates/js/translated/part.js:963
-#: templates/js/translated/stock.js:1342
+#: templates/js/translated/company.js:636 templates/js/translated/part.js:466
+#: templates/js/translated/part.js:603 templates/js/translated/part.js:1130
+#: templates/js/translated/stock.js:1483
msgid "Name"
msgstr ""
-#: InvenTree/models.py:136 build/models.py:187
-#: build/templates/build/detail.html:24 company/models.py:351
-#: company/models.py:519 company/templates/company/manufacturer_part.html:76
+#: InvenTree/models.py:207 build/models.py:187
+#: build/templates/build/detail.html:24 company/models.py:353
+#: company/models.py:569 company/templates/company/manufacturer_part.html:76
#: company/templates/company/supplier_part.html:75 label/models.py:119
-#: order/models.py:158 order/templates/order/purchase_order_detail.html:312
-#: part/models.py:679 part/templates/part/part_base.html:238
+#: order/models.py:158 part/models.py:681
+#: part/templates/part/part_base.html:246
#: part/templates/part/set_category.html:14 report/models.py:194
#: report/models.py:551 report/models.py:590
#: report/templates/report/inventree_build_order_base.html:118
#: templates/InvenTree/search.html:144 templates/InvenTree/search.html:224
#: templates/InvenTree/search.html:296
#: templates/InvenTree/settings/header.html:9
-#: templates/js/translated/bom.js:210 templates/js/translated/build.js:868
-#: templates/js/translated/build.js:1162 templates/js/translated/company.js:299
-#: templates/js/translated/company.js:497
-#: templates/js/translated/company.js:779 templates/js/translated/order.js:267
-#: templates/js/translated/order.js:369 templates/js/translated/part.js:397
-#: templates/js/translated/part.js:581 templates/js/translated/part.js:758
-#: templates/js/translated/part.js:975 templates/js/translated/part.js:1043
-#: templates/js/translated/stock.js:926 templates/js/translated/stock.js:1354
-#: templates/js/translated/stock.js:1399
+#: templates/js/translated/bom.js:230 templates/js/translated/build.js:891
+#: templates/js/translated/build.js:1179 templates/js/translated/company.js:344
+#: templates/js/translated/company.js:546
+#: templates/js/translated/company.js:834 templates/js/translated/order.js:341
+#: templates/js/translated/order.js:486 templates/js/translated/order.js:710
+#: templates/js/translated/part.js:525 templates/js/translated/part.js:713
+#: templates/js/translated/part.js:902 templates/js/translated/part.js:1142
+#: templates/js/translated/part.js:1210 templates/js/translated/stock.js:840
+#: templates/js/translated/stock.js:1495 templates/js/translated/stock.js:1540
msgid "Description"
msgstr ""
-#: InvenTree/models.py:137
+#: InvenTree/models.py:208
msgid "Description (optional)"
msgstr ""
-#: InvenTree/models.py:145
+#: InvenTree/models.py:216
msgid "parent"
msgstr ""
-#: InvenTree/serializers.py:52 part/models.py:2438
+#: InvenTree/serializers.py:55 part/models.py:2454
msgid "Must be a valid number"
msgstr ""
-#: InvenTree/settings.py:518
-msgid "German"
-msgstr ""
-
-#: InvenTree/settings.py:519
-msgid "Greek"
-msgstr ""
-
-#: InvenTree/settings.py:520
-msgid "English"
-msgstr ""
-
-#: InvenTree/settings.py:521
-msgid "Spanish"
-msgstr ""
-
-#: InvenTree/settings.py:522
-msgid "French"
+#: InvenTree/serializers.py:244
+msgid "Filename"
msgstr ""
#: InvenTree/settings.py:523
-msgid "Hebrew"
+msgid "German"
msgstr ""
#: InvenTree/settings.py:524
-msgid "Italian"
+msgid "Greek"
msgstr ""
#: InvenTree/settings.py:525
-msgid "Japanese"
+msgid "English"
msgstr ""
#: InvenTree/settings.py:526
-msgid "Korean"
+msgid "Spanish"
msgstr ""
#: InvenTree/settings.py:527
-msgid "Dutch"
+msgid "French"
msgstr ""
#: InvenTree/settings.py:528
-msgid "Norwegian"
+msgid "Hebrew"
msgstr ""
#: InvenTree/settings.py:529
-msgid "Polish"
+msgid "Italian"
msgstr ""
#: InvenTree/settings.py:530
-msgid "Russian"
+msgid "Japanese"
msgstr ""
#: InvenTree/settings.py:531
-msgid "Swedish"
+msgid "Korean"
msgstr ""
#: InvenTree/settings.py:532
-msgid "Thai"
+msgid "Dutch"
msgstr ""
#: InvenTree/settings.py:533
-msgid "Turkish"
+msgid "Norwegian"
msgstr ""
#: InvenTree/settings.py:534
-msgid "Vietnamese"
+msgid "Polish"
msgstr ""
#: InvenTree/settings.py:535
+msgid "Russian"
+msgstr ""
+
+#: InvenTree/settings.py:536
+msgid "Swedish"
+msgstr ""
+
+#: InvenTree/settings.py:537
+msgid "Thai"
+msgstr ""
+
+#: InvenTree/settings.py:538
+msgid "Turkish"
+msgstr ""
+
+#: InvenTree/settings.py:539
+msgid "Vietnamese"
+msgstr ""
+
+#: InvenTree/settings.py:540
msgid "Chinese"
msgstr ""
@@ -372,7 +401,7 @@ msgstr ""
msgid "Split child item"
msgstr ""
-#: InvenTree/status_codes.py:294 templates/js/translated/table_filters.js:173
+#: InvenTree/status_codes.py:294 templates/js/translated/table_filters.js:186
msgid "Sent to customer"
msgstr ""
@@ -432,27 +461,27 @@ msgstr ""
msgid "Overage must be an integer value or a percentage"
msgstr ""
-#: InvenTree/views.py:612
+#: InvenTree/views.py:610
msgid "Delete Item"
msgstr ""
-#: InvenTree/views.py:661
+#: InvenTree/views.py:659
msgid "Check box to confirm item deletion"
msgstr ""
-#: InvenTree/views.py:676 templates/InvenTree/settings/user.html:14
+#: InvenTree/views.py:674 templates/InvenTree/settings/user.html:14
msgid "Edit User Information"
msgstr ""
-#: InvenTree/views.py:687 templates/InvenTree/settings/user.html:18
+#: InvenTree/views.py:685 templates/InvenTree/settings/user.html:18
msgid "Set Password"
msgstr ""
-#: InvenTree/views.py:706
+#: InvenTree/views.py:704
msgid "Password fields must match"
msgstr ""
-#: InvenTree/views.py:907 templates/navbar.html:95
+#: InvenTree/views.py:910 templates/navbar.html:105
msgid "System Information"
msgstr ""
@@ -509,8 +538,8 @@ msgstr ""
#: order/templates/order/order_base.html:124
#: order/templates/order/sales_order_base.html:119
#: report/templates/report/inventree_build_order_base.html:126
-#: templates/js/translated/build.js:945 templates/js/translated/order.js:284
-#: templates/js/translated/order.js:387
+#: templates/js/translated/build.js:962 templates/js/translated/order.js:358
+#: templates/js/translated/order.js:728
msgid "Target Date"
msgstr ""
@@ -522,19 +551,18 @@ msgstr ""
#: build/templates/build/allocation_card.html:23
#: build/templates/build/auto_allocate.html:17
#: build/templates/build/build_base.html:133
-#: build/templates/build/detail.html:34 common/models.py:1001
+#: build/templates/build/detail.html:34 common/models.py:1025
#: company/forms.py:42 company/templates/company/supplier_part.html:226
-#: order/forms.py:120 order/forms.py:142 order/forms.py:159 order/models.py:706
-#: order/models.py:952 order/templates/order/order_wizard/match_parts.html:30
+#: order/forms.py:120 order/forms.py:142 order/forms.py:159 order/models.py:712
+#: order/models.py:964 order/templates/order/order_wizard/match_parts.html:30
#: order/templates/order/order_wizard/select_parts.html:34
-#: order/templates/order/purchase_order_detail.html:348
-#: order/templates/order/sales_order_detail.html:200
-#: order/templates/order/sales_order_detail.html:207
-#: order/templates/order/sales_order_detail.html:292
-#: order/templates/order/sales_order_detail.html:364 part/forms.py:249
-#: part/forms.py:265 part/forms.py:281 part/models.py:2340
+#: order/templates/order/sales_order_detail.html:201
+#: order/templates/order/sales_order_detail.html:208
+#: order/templates/order/sales_order_detail.html:293
+#: order/templates/order/sales_order_detail.html:365 part/forms.py:249
+#: part/forms.py:265 part/forms.py:281 part/models.py:2356
#: part/templates/part/bom_upload/match_parts.html:31
-#: part/templates/part/detail.html:940 part/templates/part/detail.html:1026
+#: part/templates/part/detail.html:973 part/templates/part/detail.html:1059
#: part/templates/part/part_pricing.html:16
#: report/templates/report/inventree_build_order_base.html:114
#: report/templates/report/inventree_po_report.html:91
@@ -542,13 +570,14 @@ msgstr ""
#: report/templates/report/inventree_test_report_base.html:77
#: stock/forms.py:140 stock/templates/stock/item_base.html:269
#: stock/templates/stock/stock_adjust.html:18
-#: templates/js/translated/barcode.js:364 templates/js/translated/bom.js:225
-#: templates/js/translated/build.js:271 templates/js/translated/build.js:606
-#: templates/js/translated/build.js:1172
-#: templates/js/translated/model_renderers.js:56
-#: templates/js/translated/order.js:482 templates/js/translated/part.js:1148
-#: templates/js/translated/part.js:1270 templates/js/translated/part.js:1326
-#: templates/js/translated/stock.js:1534 templates/js/translated/stock.js:1732
+#: templates/js/translated/barcode.js:386 templates/js/translated/bom.js:245
+#: templates/js/translated/build.js:298 templates/js/translated/build.js:629
+#: templates/js/translated/build.js:1189
+#: templates/js/translated/model_renderers.js:59
+#: templates/js/translated/order.js:522 templates/js/translated/order.js:824
+#: templates/js/translated/part.js:1317 templates/js/translated/part.js:1440
+#: templates/js/translated/part.js:1518 templates/js/translated/stock.js:1675
+#: templates/js/translated/stock.js:1850
msgid "Quantity"
msgstr ""
@@ -589,13 +618,15 @@ msgid "Mark build as complete"
msgstr ""
#: build/forms.py:210 build/templates/build/auto_allocate.html:18
-#: stock/forms.py:280 stock/templates/stock/item_base.html:299
+#: order/serializers.py:216 order/serializers.py:275 stock/forms.py:280
+#: stock/templates/stock/item_base.html:299
#: stock/templates/stock/stock_adjust.html:17
-#: templates/InvenTree/search.html:260 templates/js/translated/barcode.js:363
-#: templates/js/translated/barcode.js:531 templates/js/translated/build.js:256
-#: templates/js/translated/build.js:620 templates/js/translated/order.js:467
-#: templates/js/translated/stock.js:134 templates/js/translated/stock.js:260
-#: templates/js/translated/stock.js:1012 templates/js/translated/stock.js:1426
+#: templates/InvenTree/search.html:260 templates/js/translated/barcode.js:385
+#: templates/js/translated/barcode.js:555 templates/js/translated/build.js:283
+#: templates/js/translated/build.js:643 templates/js/translated/order.js:809
+#: templates/js/translated/part.js:174 templates/js/translated/stock.js:203
+#: templates/js/translated/stock.js:329 templates/js/translated/stock.js:942
+#: templates/js/translated/stock.js:1567
msgid "Location"
msgstr ""
@@ -604,13 +635,13 @@ msgid "Location of completed parts"
msgstr ""
#: build/forms.py:215 build/templates/build/build_base.html:138
-#: build/templates/build/detail.html:62 order/models.py:549
-#: order/templates/order/receive_parts.html:24
+#: build/templates/build/detail.html:62 order/models.py:555
+#: order/serializers.py:230 order/templates/order/receive_parts.html:24
#: stock/templates/stock/item_base.html:422 templates/InvenTree/search.html:252
-#: templates/js/translated/barcode.js:119 templates/js/translated/build.js:902
-#: templates/js/translated/order.js:271 templates/js/translated/order.js:374
-#: templates/js/translated/stock.js:999 templates/js/translated/stock.js:1503
-#: templates/js/translated/stock.js:1748
+#: templates/js/translated/barcode.js:141 templates/js/translated/build.js:925
+#: templates/js/translated/order.js:345 templates/js/translated/order.js:715
+#: templates/js/translated/stock.js:917 templates/js/translated/stock.js:1644
+#: templates/js/translated/stock.js:1866
msgid "Status"
msgstr ""
@@ -649,7 +680,7 @@ msgstr ""
#: build/models.py:117 build/templates/build/build_base.html:9
#: build/templates/build/build_base.html:73
#: report/templates/report/inventree_build_order_base.html:106
-#: templates/js/translated/build.js:233
+#: templates/js/translated/build.js:260
msgid "Build Order"
msgstr ""
@@ -657,8 +688,8 @@ msgstr ""
#: build/templates/build/index.html:15
#: order/templates/order/sales_order_detail.html:34
#: order/templates/order/so_navbar.html:19
-#: order/templates/order/so_navbar.html:22 part/templates/part/navbar.html:42
-#: part/templates/part/navbar.html:45 templates/InvenTree/index.html:229
+#: order/templates/order/so_navbar.html:22 part/templates/part/navbar.html:50
+#: part/templates/part/navbar.html:53 templates/InvenTree/index.html:229
#: templates/InvenTree/search.html:185
#: templates/InvenTree/settings/navbar.html:101
#: templates/InvenTree/settings/navbar.html:103 users/models.py:44
@@ -669,14 +700,13 @@ msgstr ""
msgid "Build Order Reference"
msgstr ""
-#: build/models.py:179 order/models.py:246 order/models.py:533
-#: order/models.py:713 order/templates/order/purchase_order_detail.html:343
-#: order/templates/order/sales_order_detail.html:359 part/models.py:2349
-#: part/templates/part/bom_upload/match_parts.html:30
+#: build/models.py:179 order/models.py:246 order/models.py:539
+#: order/models.py:719 order/templates/order/sales_order_detail.html:360
+#: part/models.py:2365 part/templates/part/bom_upload/match_parts.html:30
#: report/templates/report/inventree_po_report.html:92
#: report/templates/report/inventree_so_report.html:92
-#: templates/js/translated/bom.js:217 templates/js/translated/build.js:695
-#: templates/js/translated/build.js:1166
+#: templates/js/translated/bom.js:237 templates/js/translated/build.js:718
+#: templates/js/translated/build.js:1183 templates/js/translated/order.js:517
msgid "Reference"
msgstr ""
@@ -695,15 +725,14 @@ msgstr ""
#: build/models.py:205 build/templates/build/auto_allocate.html:16
#: build/templates/build/build_base.html:128
-#: build/templates/build/detail.html:29 company/models.py:654
-#: order/models.py:766 order/models.py:825
+#: build/templates/build/detail.html:29 company/models.py:704
+#: order/models.py:772 order/models.py:837
#: order/templates/order/order_wizard/select_parts.html:32
-#: order/templates/order/purchase_order_detail.html:297
#: order/templates/order/receive_parts.html:19
-#: order/templates/order/sales_order_detail.html:344 part/models.py:295
-#: part/models.py:1980 part/models.py:1996 part/models.py:2015
-#: part/models.py:2033 part/models.py:2112 part/models.py:2234
-#: part/models.py:2324 part/templates/part/detail.html:199
+#: order/templates/order/sales_order_detail.html:345 part/models.py:297
+#: part/models.py:1996 part/models.py:2012 part/models.py:2031
+#: part/models.py:2049 part/models.py:2128 part/models.py:2250
+#: part/models.py:2340 part/templates/part/detail.html:199
#: part/templates/part/part_app_base.html:8
#: part/templates/part/part_pricing.html:12
#: part/templates/part/set_category.html:13
@@ -711,12 +740,13 @@ msgstr ""
#: report/templates/report/inventree_po_report.html:90
#: report/templates/report/inventree_so_report.html:90
#: templates/InvenTree/search.html:112 templates/InvenTree/search.html:210
-#: templates/js/translated/barcode.js:362 templates/js/translated/bom.js:183
-#: templates/js/translated/build.js:586 templates/js/translated/build.js:873
-#: templates/js/translated/build.js:1139 templates/js/translated/company.js:438
-#: templates/js/translated/company.js:688 templates/js/translated/part.js:562
-#: templates/js/translated/part.js:725 templates/js/translated/stock.js:132
-#: templates/js/translated/stock.js:895 templates/js/translated/stock.js:1720
+#: templates/js/translated/barcode.js:384 templates/js/translated/bom.js:203
+#: templates/js/translated/build.js:609 templates/js/translated/build.js:896
+#: templates/js/translated/build.js:1156 templates/js/translated/company.js:487
+#: templates/js/translated/company.js:743 templates/js/translated/order.js:471
+#: templates/js/translated/part.js:694 templates/js/translated/part.js:864
+#: templates/js/translated/stock.js:201 templates/js/translated/stock.js:797
+#: templates/js/translated/stock.js:1838
msgid "Part"
msgstr ""
@@ -764,7 +794,7 @@ msgstr ""
msgid "Number of stock items which have been completed"
msgstr ""
-#: build/models.py:257 part/templates/part/part_base.html:191
+#: build/models.py:257 part/templates/part/part_base.html:198
msgid "Build Status"
msgstr ""
@@ -772,7 +802,7 @@ msgstr ""
msgid "Build status code"
msgstr ""
-#: build/models.py:265 stock/models.py:507
+#: build/models.py:265 stock/models.py:513
msgid "Batch Code"
msgstr ""
@@ -780,16 +810,16 @@ msgstr ""
msgid "Batch code for this build output"
msgstr ""
-#: build/models.py:272 order/models.py:162 part/models.py:851
-#: part/templates/part/part_base.html:264 templates/js/translated/order.js:382
+#: build/models.py:272 order/models.py:162 part/models.py:853
+#: part/templates/part/part_base.html:272 templates/js/translated/order.js:723
msgid "Creation Date"
msgstr ""
-#: build/models.py:276 order/models.py:555
+#: build/models.py:276 order/models.py:561
msgid "Target completion date"
msgstr ""
-#: build/models.py:280 order/models.py:288 templates/js/translated/build.js:950
+#: build/models.py:280 order/models.py:288 templates/js/translated/build.js:967
msgid "Completion Date"
msgstr ""
@@ -797,7 +827,7 @@ msgstr ""
msgid "completed by"
msgstr ""
-#: build/models.py:294 templates/js/translated/build.js:915
+#: build/models.py:294 templates/js/translated/build.js:938
msgid "Issued by"
msgstr ""
@@ -808,9 +838,9 @@ msgstr ""
#: build/models.py:303 build/templates/build/build_base.html:184
#: build/templates/build/detail.html:108 order/models.py:176
#: order/templates/order/order_base.html:138
-#: order/templates/order/sales_order_base.html:140 part/models.py:855
+#: order/templates/order/sales_order_base.html:140 part/models.py:857
#: report/templates/report/inventree_build_order_base.html:159
-#: templates/js/translated/build.js:930
+#: templates/js/translated/build.js:950
msgid "Responsible"
msgstr ""
@@ -821,34 +851,33 @@ msgstr ""
#: build/models.py:309 build/templates/build/detail.html:94
#: company/templates/company/manufacturer_part.html:83
#: company/templates/company/supplier_part.html:82
-#: part/templates/part/part_base.html:258 stock/models.py:501
+#: part/templates/part/part_base.html:266 stock/models.py:507
#: stock/templates/stock/item_base.html:359
msgid "External Link"
msgstr ""
-#: build/models.py:310 part/models.py:713 stock/models.py:503
+#: build/models.py:310 part/models.py:715 stock/models.py:509
msgid "Link to external URL"
msgstr ""
#: build/models.py:314 build/templates/build/navbar.html:52
-#: company/models.py:139 company/models.py:526
-#: company/templates/company/navbar.html:63
-#: company/templates/company/navbar.html:66 order/models.py:180
-#: order/models.py:715 order/templates/order/po_navbar.html:38
+#: company/models.py:141 company/models.py:576
+#: company/templates/company/navbar.html:69
+#: company/templates/company/navbar.html:72 order/models.py:180
+#: order/models.py:721 order/templates/order/po_navbar.html:38
#: order/templates/order/po_navbar.html:41
-#: order/templates/order/purchase_order_detail.html:419
-#: order/templates/order/sales_order_detail.html:439
+#: order/templates/order/sales_order_detail.html:440
#: order/templates/order/so_navbar.html:33
-#: order/templates/order/so_navbar.html:36 part/models.py:840
-#: part/templates/part/detail.html:105 part/templates/part/navbar.html:108
-#: part/templates/part/navbar.html:111
+#: order/templates/order/so_navbar.html:36 part/models.py:842
+#: part/templates/part/detail.html:105 part/templates/part/navbar.html:120
+#: part/templates/part/navbar.html:123
#: report/templates/report/inventree_build_order_base.html:173
-#: stock/forms.py:138 stock/forms.py:250 stock/forms.py:282 stock/models.py:573
-#: stock/models.py:1715 stock/models.py:1821
-#: stock/templates/stock/navbar.html:57 templates/js/translated/barcode.js:37
-#: templates/js/translated/bom.js:369 templates/js/translated/company.js:784
-#: templates/js/translated/stock.js:268 templates/js/translated/stock.js:509
-#: templates/js/translated/stock.js:1090
+#: stock/forms.py:138 stock/forms.py:250 stock/forms.py:282 stock/models.py:579
+#: stock/models.py:1726 stock/models.py:1832
+#: stock/templates/stock/navbar.html:57 templates/js/translated/barcode.js:59
+#: templates/js/translated/bom.js:385 templates/js/translated/company.js:839
+#: templates/js/translated/order.js:604 templates/js/translated/stock.js:338
+#: templates/js/translated/stock.js:580 templates/js/translated/stock.js:1061
msgid "Notes"
msgstr ""
@@ -881,11 +910,11 @@ msgstr ""
msgid "Allocated quantity ({n}) must not exceed available quantity ({q})"
msgstr ""
-#: build/models.py:1244 order/models.py:926
+#: build/models.py:1244 order/models.py:938
msgid "StockItem is over-allocated"
msgstr ""
-#: build/models.py:1248 order/models.py:929
+#: build/models.py:1248 order/models.py:941
msgid "Allocation quantity must be greater than zero"
msgstr ""
@@ -899,8 +928,8 @@ msgid "Selected stock item not found in BOM for part '{p}'"
msgstr ""
#: build/models.py:1372 stock/templates/stock/item_base.html:331
-#: templates/InvenTree/search.html:183 templates/js/translated/build.js:846
-#: templates/navbar.html:29
+#: templates/InvenTree/search.html:183 templates/js/translated/build.js:869
+#: templates/navbar.html:35
msgid "Build"
msgstr ""
@@ -912,9 +941,9 @@ msgstr ""
#: stock/templates/stock/item_base.html:31
#: stock/templates/stock/item_base.html:353
#: stock/templates/stock/stock_adjust.html:16
-#: templates/js/translated/build.js:244 templates/js/translated/build.js:249
-#: templates/js/translated/build.js:993 templates/js/translated/order.js:455
-#: templates/js/translated/order.js:460 templates/js/translated/stock.js:1485
+#: templates/js/translated/build.js:271 templates/js/translated/build.js:276
+#: templates/js/translated/build.js:1012 templates/js/translated/order.js:797
+#: templates/js/translated/order.js:802 templates/js/translated/stock.js:1626
msgid "Stock Item"
msgstr ""
@@ -936,12 +965,12 @@ msgstr ""
#: build/templates/build/allocation_card.html:21
#: build/templates/build/complete_output.html:46
-#: order/templates/order/sales_order_detail.html:205
-#: order/templates/order/sales_order_detail.html:290
+#: order/templates/order/sales_order_detail.html:206
+#: order/templates/order/sales_order_detail.html:291
#: report/templates/report/inventree_test_report_base.html:75
-#: stock/models.py:495 stock/templates/stock/item_base.html:251
-#: templates/js/translated/build.js:604
-#: templates/js/translated/model_renderers.js:54
+#: stock/models.py:501 stock/templates/stock/item_base.html:251
+#: templates/js/translated/build.js:627
+#: templates/js/translated/model_renderers.js:57
msgid "Serial Number"
msgstr ""
@@ -993,7 +1022,7 @@ msgstr ""
#: company/templates/company/supplier_part.html:30
#: order/templates/order/order_base.html:26
#: order/templates/order/sales_order_base.html:37
-#: part/templates/part/category.html:27 part/templates/part/part_base.html:25
+#: part/templates/part/category.html:27 part/templates/part/part_base.html:30
#: stock/templates/stock/item_base.html:62
#: stock/templates/stock/location.html:31
msgid "Admin view"
@@ -1005,9 +1034,9 @@ msgstr ""
#: order/templates/order/order_base.html:86
#: order/templates/order/sales_order_base.html:43
#: order/templates/order/sales_order_base.html:88
-#: templates/js/translated/table_filters.js:259
-#: templates/js/translated/table_filters.js:278
-#: templates/js/translated/table_filters.js:295
+#: templates/js/translated/table_filters.js:272
+#: templates/js/translated/table_filters.js:291
+#: templates/js/translated/table_filters.js:308
msgid "Overdue"
msgstr ""
@@ -1057,14 +1086,14 @@ msgid "Progress"
msgstr ""
#: build/templates/build/build_base.html:170
-#: build/templates/build/detail.html:87 order/models.py:823
+#: build/templates/build/detail.html:87 order/models.py:835
#: order/templates/order/sales_order_base.html:9
#: order/templates/order/sales_order_base.html:35
#: order/templates/order/sales_order_ship.html:25
#: report/templates/report/inventree_build_order_base.html:136
#: report/templates/report/inventree_so_report.html:77
#: stock/templates/stock/item_base.html:293
-#: templates/js/translated/order.js:329
+#: templates/js/translated/order.js:670
msgid "Sales Order"
msgstr ""
@@ -1148,7 +1177,7 @@ msgstr ""
#: build/templates/build/create_build_item.html:11
#, python-format
-msgid "The allocated stock will be installed into the following build output:
%(output)s"
+msgid "The allocated stock will be installed into the following build output:
%(output)s"
msgstr ""
#: build/templates/build/create_build_item.html:17
@@ -1172,9 +1201,9 @@ msgstr ""
msgid "Stock can be taken from any available location."
msgstr ""
-#: build/templates/build/detail.html:49 order/forms.py:88 order/models.py:782
-#: order/templates/order/purchase_order_detail.html:408
+#: build/templates/build/detail.html:49 order/forms.py:88 order/models.py:794
#: order/templates/order/receive_parts.html:25 stock/forms.py:134
+#: templates/js/translated/order.js:593
msgid "Destination"
msgstr ""
@@ -1184,16 +1213,16 @@ msgstr ""
#: build/templates/build/detail.html:73
#: stock/templates/stock/item_base.html:317
-#: templates/js/translated/stock.js:1007 templates/js/translated/stock.js:1755
-#: templates/js/translated/table_filters.js:116
-#: templates/js/translated/table_filters.js:198
+#: templates/js/translated/stock.js:931 templates/js/translated/stock.js:1873
+#: templates/js/translated/table_filters.js:129
+#: templates/js/translated/table_filters.js:211
msgid "Batch"
msgstr ""
#: build/templates/build/detail.html:119
#: order/templates/order/order_base.html:111
#: order/templates/order/sales_order_base.html:113
-#: templates/js/translated/build.js:910
+#: templates/js/translated/build.js:933
msgid "Created"
msgstr ""
@@ -1201,7 +1230,7 @@ msgstr ""
msgid "No target date set"
msgstr ""
-#: build/templates/build/detail.html:135 templates/js/translated/build.js:888
+#: build/templates/build/detail.html:135 templates/js/translated/build.js:911
msgid "Completed"
msgstr ""
@@ -1225,7 +1254,7 @@ msgstr ""
msgid "Auto Allocate"
msgstr ""
-#: build/templates/build/detail.html:175 templates/js/translated/build.js:778
+#: build/templates/build/detail.html:175 templates/js/translated/build.js:801
msgid "Unallocate stock"
msgstr ""
@@ -1238,8 +1267,8 @@ msgid "Order required parts"
msgstr ""
#: build/templates/build/detail.html:180
-#: company/templates/company/detail.html:33
-#: company/templates/company/detail.html:75 order/views.py:679
+#: company/templates/company/detail.html:32
+#: company/templates/company/detail.html:72 order/views.py:679
#: part/templates/part/category.html:140
msgid "Order Parts"
msgstr ""
@@ -1288,8 +1317,8 @@ msgstr ""
#: build/templates/build/navbar.html:45 order/templates/order/po_navbar.html:35
#: order/templates/order/sales_order_detail.html:43
#: order/templates/order/so_navbar.html:29 part/templates/part/detail.html:173
-#: part/templates/part/navbar.html:102 part/templates/part/navbar.html:105
-#: stock/templates/stock/item.html:87 stock/templates/stock/navbar.html:47
+#: part/templates/part/navbar.html:114 part/templates/part/navbar.html:117
+#: stock/templates/stock/item.html:88 stock/templates/stock/navbar.html:47
#: stock/templates/stock/navbar.html:50
msgid "Attachments"
msgstr ""
@@ -1298,48 +1327,48 @@ msgstr ""
msgid "Build Notes"
msgstr ""
-#: build/templates/build/detail.html:261 build/templates/build/detail.html:397
-#: company/templates/company/detail.html:173
-#: company/templates/company/detail.html:200
+#: build/templates/build/detail.html:261 build/templates/build/detail.html:398
+#: company/templates/company/detail.html:169
+#: company/templates/company/detail.html:196
#: order/templates/order/purchase_order_detail.html:62
#: order/templates/order/purchase_order_detail.html:95
#: order/templates/order/sales_order_detail.html:58
#: order/templates/order/sales_order_detail.html:85
-#: part/templates/part/detail.html:109 stock/templates/stock/item.html:102
-#: stock/templates/stock/item.html:187
+#: part/templates/part/detail.html:109 stock/templates/stock/item.html:103
+#: stock/templates/stock/item.html:188
msgid "Edit Notes"
msgstr ""
#: build/templates/build/detail.html:357
#: order/templates/order/po_attachments.html:79
-#: order/templates/order/purchase_order_detail.html:156
-#: order/templates/order/sales_order_detail.html:145
-#: part/templates/part/detail.html:802 stock/templates/stock/item.html:251
+#: order/templates/order/purchase_order_detail.html:157
+#: order/templates/order/sales_order_detail.html:146
+#: part/templates/part/detail.html:920 stock/templates/stock/item.html:253
#: templates/attachment_table.html:6
msgid "Add Attachment"
msgstr ""
-#: build/templates/build/detail.html:375
+#: build/templates/build/detail.html:376
#: order/templates/order/po_attachments.html:51
-#: order/templates/order/purchase_order_detail.html:128
-#: order/templates/order/sales_order_detail.html:118
-#: part/templates/part/detail.html:756 stock/templates/stock/item.html:219
+#: order/templates/order/purchase_order_detail.html:129
+#: order/templates/order/sales_order_detail.html:119
+#: part/templates/part/detail.html:874 stock/templates/stock/item.html:221
msgid "Edit Attachment"
msgstr ""
-#: build/templates/build/detail.html:382
+#: build/templates/build/detail.html:383
#: order/templates/order/po_attachments.html:58
-#: order/templates/order/purchase_order_detail.html:135
-#: order/templates/order/sales_order_detail.html:124
-#: part/templates/part/detail.html:765 stock/templates/stock/item.html:228
+#: order/templates/order/purchase_order_detail.html:136
+#: order/templates/order/sales_order_detail.html:125
+#: part/templates/part/detail.html:883 stock/templates/stock/item.html:230
msgid "Confirm Delete Operation"
msgstr ""
-#: build/templates/build/detail.html:383
+#: build/templates/build/detail.html:384
#: order/templates/order/po_attachments.html:59
-#: order/templates/order/purchase_order_detail.html:136
-#: order/templates/order/sales_order_detail.html:125
-#: part/templates/part/detail.html:766 stock/templates/stock/item.html:229
+#: order/templates/order/purchase_order_detail.html:137
+#: order/templates/order/sales_order_detail.html:126
+#: part/templates/part/detail.html:884 stock/templates/stock/item.html:231
msgid "Delete Attachment"
msgstr ""
@@ -1372,7 +1401,7 @@ msgid "Build Order Details"
msgstr ""
#: build/templates/build/navbar.html:15 order/templates/order/po_navbar.html:15
-#: templates/js/translated/stock.js:1414
+#: templates/js/translated/stock.js:1555
msgid "Details"
msgstr ""
@@ -1501,9 +1530,9 @@ msgstr ""
msgid "Stock item is over-allocated"
msgstr ""
-#: build/views.py:705 templates/js/translated/bom.js:250
-#: templates/js/translated/build.js:705 templates/js/translated/build.js:1000
-#: templates/js/translated/build.js:1179
+#: build/views.py:705 templates/js/translated/bom.js:269
+#: templates/js/translated/build.js:728 templates/js/translated/build.js:1019
+#: templates/js/translated/build.js:1196
msgid "Available"
msgstr ""
@@ -1539,7 +1568,7 @@ msgstr ""
msgid "Error reading file (data could be corrupted)"
msgstr ""
-#: common/forms.py:34 templates/js/translated/attachment.js:42
+#: common/forms.py:34 templates/js/translated/attachment.js:54
msgid "File"
msgstr ""
@@ -1556,546 +1585,594 @@ msgstr ""
msgid "Select {name} file to upload"
msgstr ""
-#: common/models.py:322 common/models.py:815 common/models.py:962
+#: common/models.py:308 common/models.py:839 common/models.py:986
msgid "Settings key (must be unique - case insensitive"
msgstr ""
-#: common/models.py:324
+#: common/models.py:310
msgid "Settings value"
msgstr ""
-#: common/models.py:359
+#: common/models.py:345
msgid "Must be an integer value"
msgstr ""
-#: common/models.py:382
+#: common/models.py:368
msgid "Value must be a boolean value"
msgstr ""
-#: common/models.py:393
+#: common/models.py:379
msgid "Value must be an integer value"
msgstr ""
-#: common/models.py:416
+#: common/models.py:402
msgid "Key string must be unique"
msgstr ""
-#: common/models.py:523
+#: common/models.py:509
msgid "InvenTree Instance Name"
msgstr ""
-#: common/models.py:525
+#: common/models.py:511
msgid "String descriptor for the server instance"
msgstr ""
-#: common/models.py:529
+#: common/models.py:515
msgid "Use instance name"
msgstr ""
-#: common/models.py:530
+#: common/models.py:516
msgid "Use the instance name in the title-bar"
msgstr ""
-#: common/models.py:536 company/models.py:97 company/models.py:98
+#: common/models.py:522 company/models.py:99 company/models.py:100
msgid "Company name"
msgstr ""
-#: common/models.py:537
+#: common/models.py:523
msgid "Internal company name"
msgstr ""
-#: common/models.py:542
+#: common/models.py:528
msgid "Base URL"
msgstr ""
-#: common/models.py:543
+#: common/models.py:529
msgid "Base URL for server instance"
msgstr ""
-#: common/models.py:549
+#: common/models.py:535
msgid "Default Currency"
msgstr ""
-#: common/models.py:550
+#: common/models.py:536
msgid "Default currency"
msgstr ""
-#: common/models.py:556
+#: common/models.py:542
msgid "Download from URL"
msgstr ""
-#: common/models.py:557
+#: common/models.py:543
msgid "Allow download of remote images and files from external URL"
msgstr ""
-#: common/models.py:563
+#: common/models.py:549
msgid "Barcode Support"
msgstr ""
-#: common/models.py:564
+#: common/models.py:550
msgid "Enable barcode scanner support"
msgstr ""
-#: common/models.py:570
+#: common/models.py:556
msgid "IPN Regex"
msgstr ""
-#: common/models.py:571
+#: common/models.py:557
msgid "Regular expression pattern for matching Part IPN"
msgstr ""
-#: common/models.py:575
+#: common/models.py:561
msgid "Allow Duplicate IPN"
msgstr ""
-#: common/models.py:576
+#: common/models.py:562
msgid "Allow multiple parts to share the same IPN"
msgstr ""
-#: common/models.py:582
+#: common/models.py:568
msgid "Allow Editing IPN"
msgstr ""
-#: common/models.py:583
+#: common/models.py:569
msgid "Allow changing the IPN value while editing a part"
msgstr ""
-#: common/models.py:589
+#: common/models.py:575
msgid "Copy Part BOM Data"
msgstr ""
-#: common/models.py:590
+#: common/models.py:576
msgid "Copy BOM data by default when duplicating a part"
msgstr ""
-#: common/models.py:596
+#: common/models.py:582
msgid "Copy Part Parameter Data"
msgstr ""
-#: common/models.py:597
+#: common/models.py:583
msgid "Copy parameter data by default when duplicating a part"
msgstr ""
-#: common/models.py:603
+#: common/models.py:589
msgid "Copy Part Test Data"
msgstr ""
-#: common/models.py:604
+#: common/models.py:590
msgid "Copy test data by default when duplicating a part"
msgstr ""
-#: common/models.py:610
+#: common/models.py:596
msgid "Copy Category Parameter Templates"
msgstr ""
-#: common/models.py:611
+#: common/models.py:597
msgid "Copy category parameter templates when creating a part"
msgstr ""
-#: common/models.py:617 part/models.py:2236 report/models.py:187
-#: stock/forms.py:224 templates/js/translated/table_filters.js:25
-#: templates/js/translated/table_filters.js:329
+#: common/models.py:603 part/models.py:2252 report/models.py:187
+#: stock/forms.py:224 templates/js/translated/table_filters.js:38
+#: templates/js/translated/table_filters.js:342
msgid "Template"
msgstr ""
-#: common/models.py:618
+#: common/models.py:604
msgid "Parts are templates by default"
msgstr ""
-#: common/models.py:624 part/models.py:803
-#: templates/js/translated/table_filters.js:133
-#: templates/js/translated/table_filters.js:341
+#: common/models.py:610 part/models.py:805
+#: templates/js/translated/table_filters.js:146
+#: templates/js/translated/table_filters.js:354
msgid "Assembly"
msgstr ""
-#: common/models.py:625
+#: common/models.py:611
msgid "Parts can be assembled from other components by default"
msgstr ""
-#: common/models.py:631 part/models.py:809
-#: templates/js/translated/table_filters.js:345
+#: common/models.py:617 part/models.py:811
+#: templates/js/translated/table_filters.js:358
msgid "Component"
msgstr ""
-#: common/models.py:632
+#: common/models.py:618
msgid "Parts can be used as sub-components by default"
msgstr ""
-#: common/models.py:638 part/models.py:820
+#: common/models.py:624 part/models.py:822
msgid "Purchaseable"
msgstr ""
-#: common/models.py:639
+#: common/models.py:625
msgid "Parts are purchaseable by default"
msgstr ""
-#: common/models.py:645 part/models.py:825
-#: templates/js/translated/table_filters.js:353
+#: common/models.py:631 part/models.py:827
+#: templates/js/translated/table_filters.js:366
msgid "Salable"
msgstr ""
-#: common/models.py:646
+#: common/models.py:632
msgid "Parts are salable by default"
msgstr ""
-#: common/models.py:652 part/models.py:815
-#: templates/js/translated/table_filters.js:33
-#: templates/js/translated/table_filters.js:357
+#: common/models.py:638 part/models.py:817
+#: templates/js/translated/table_filters.js:46
+#: templates/js/translated/table_filters.js:370
msgid "Trackable"
msgstr ""
-#: common/models.py:653
+#: common/models.py:639
msgid "Parts are trackable by default"
msgstr ""
-#: common/models.py:659 part/models.py:835
-#: part/templates/part/part_base.html:61
-#: templates/js/translated/table_filters.js:29
+#: common/models.py:645 part/models.py:837
+#: part/templates/part/part_base.html:66
+#: templates/js/translated/table_filters.js:42
msgid "Virtual"
msgstr ""
-#: common/models.py:660
+#: common/models.py:646
msgid "Parts are virtual by default"
msgstr ""
-#: common/models.py:667
+#: common/models.py:653
msgid "Show Quantity in Forms"
msgstr ""
-#: common/models.py:668
+#: common/models.py:654
msgid "Display available part quantity in some forms"
msgstr ""
-#: common/models.py:674
+#: common/models.py:660
msgid "Show Import in Views"
msgstr ""
-#: common/models.py:675
+#: common/models.py:661
msgid "Display the import wizard in some part views"
msgstr ""
-#: common/models.py:681
+#: common/models.py:667
msgid "Show Price in Forms"
msgstr ""
-#: common/models.py:682
+#: common/models.py:668
msgid "Display part price in some forms"
msgstr ""
-#: common/models.py:688
+#: common/models.py:674
msgid "Show related parts"
msgstr ""
-#: common/models.py:689
+#: common/models.py:675
msgid "Display related parts for a part"
msgstr ""
-#: common/models.py:695
+#: common/models.py:681
msgid "Create initial stock"
msgstr ""
-#: common/models.py:696
+#: common/models.py:682
msgid "Create initial stock on part creation"
msgstr ""
-#: common/models.py:702
+#: common/models.py:688
msgid "Internal Prices"
msgstr ""
-#: common/models.py:703
+#: common/models.py:689
msgid "Enable internal prices for parts"
msgstr ""
-#: common/models.py:709
+#: common/models.py:695
msgid "Internal Price as BOM-Price"
msgstr ""
-#: common/models.py:710
+#: common/models.py:696
msgid "Use the internal price (if set) in BOM-price calculations"
msgstr ""
-#: common/models.py:716 templates/stats.html:25
+#: common/models.py:702 templates/stats.html:25
msgid "Debug Mode"
msgstr ""
-#: common/models.py:717
+#: common/models.py:703
msgid "Generate reports in debug mode (HTML output)"
msgstr ""
-#: common/models.py:723
+#: common/models.py:709
msgid "Page Size"
msgstr ""
-#: common/models.py:724
+#: common/models.py:710
msgid "Default page size for PDF reports"
msgstr ""
-#: common/models.py:734
+#: common/models.py:720
msgid "Test Reports"
msgstr ""
-#: common/models.py:735
+#: common/models.py:721
msgid "Enable generation of test reports"
msgstr ""
-#: common/models.py:741
+#: common/models.py:727
msgid "Stock Expiry"
msgstr ""
-#: common/models.py:742
+#: common/models.py:728
msgid "Enable stock expiry functionality"
msgstr ""
-#: common/models.py:748
+#: common/models.py:734
msgid "Sell Expired Stock"
msgstr ""
-#: common/models.py:749
+#: common/models.py:735
msgid "Allow sale of expired stock"
msgstr ""
-#: common/models.py:755
+#: common/models.py:741
msgid "Stock Stale Time"
msgstr ""
-#: common/models.py:756
+#: common/models.py:742
msgid "Number of days stock items are considered stale before expiring"
msgstr ""
-#: common/models.py:758
+#: common/models.py:744
msgid "days"
msgstr ""
-#: common/models.py:763
+#: common/models.py:749
msgid "Build Expired Stock"
msgstr ""
-#: common/models.py:764
+#: common/models.py:750
msgid "Allow building with expired stock"
msgstr ""
-#: common/models.py:770
+#: common/models.py:756
msgid "Stock Ownership Control"
msgstr ""
-#: common/models.py:771
+#: common/models.py:757
msgid "Enable ownership control over stock locations and items"
msgstr ""
-#: common/models.py:777
+#: common/models.py:763
msgid "Group by Part"
msgstr ""
-#: common/models.py:778
+#: common/models.py:764
msgid "Group stock items by part reference in table views"
msgstr ""
-#: common/models.py:784
+#: common/models.py:770
msgid "Build Order Reference Prefix"
msgstr ""
-#: common/models.py:785
+#: common/models.py:771
msgid "Prefix value for build order reference"
msgstr ""
-#: common/models.py:790
+#: common/models.py:776
msgid "Build Order Reference Regex"
msgstr ""
-#: common/models.py:791
+#: common/models.py:777
msgid "Regular expression pattern for matching build order reference"
msgstr ""
-#: common/models.py:795
+#: common/models.py:781
msgid "Sales Order Reference Prefix"
msgstr ""
-#: common/models.py:796
+#: common/models.py:782
msgid "Prefix value for sales order reference"
msgstr ""
-#: common/models.py:801
+#: common/models.py:787
msgid "Purchase Order Reference Prefix"
msgstr ""
-#: common/models.py:802
+#: common/models.py:788
msgid "Prefix value for purchase order reference"
msgstr ""
-#: common/models.py:826
+#: common/models.py:794
+msgid "Enable build"
+msgstr ""
+
+#: common/models.py:795
+msgid "Enable build functionality in InvenTree interface"
+msgstr ""
+
+#: common/models.py:800
+msgid "Enable buy"
+msgstr ""
+
+#: common/models.py:801
+msgid "Enable buy functionality in InvenTree interface"
+msgstr ""
+
+#: common/models.py:806
+msgid "Enable sell"
+msgstr ""
+
+#: common/models.py:807
+msgid "Enable sell functionality in InvenTree interface"
+msgstr ""
+
+#: common/models.py:812
+msgid "Enable stock"
+msgstr ""
+
+#: common/models.py:813
+msgid "Enable stock functionality in InvenTree interface"
+msgstr ""
+
+#: common/models.py:818
+msgid "Enable SO"
+msgstr ""
+
+#: common/models.py:819
+msgid "Enable SO functionality in InvenTree interface"
+msgstr ""
+
+#: common/models.py:824
+msgid "Enable PO"
+msgstr ""
+
+#: common/models.py:825
+msgid "Enable PO functionality in InvenTree interface"
+msgstr ""
+
+#: common/models.py:850
msgid "Show starred parts"
msgstr ""
-#: common/models.py:827
+#: common/models.py:851
msgid "Show starred parts on the homepage"
msgstr ""
-#: common/models.py:832
+#: common/models.py:856
msgid "Show latest parts"
msgstr ""
-#: common/models.py:833
+#: common/models.py:857
msgid "Show latest parts on the homepage"
msgstr ""
-#: common/models.py:838
+#: common/models.py:862
msgid "Recent Part Count"
msgstr ""
-#: common/models.py:839
+#: common/models.py:863
msgid "Number of recent parts to display on index page"
msgstr ""
-#: common/models.py:845
+#: common/models.py:869
msgid "Show unvalidated BOMs"
msgstr ""
-#: common/models.py:846
+#: common/models.py:870
msgid "Show BOMs that await validation on the homepage"
msgstr ""
-#: common/models.py:851
+#: common/models.py:875
msgid "Show recent stock changes"
msgstr ""
-#: common/models.py:852
+#: common/models.py:876
msgid "Show recently changed stock items on the homepage"
msgstr ""
-#: common/models.py:857
+#: common/models.py:881
msgid "Recent Stock Count"
msgstr ""
-#: common/models.py:858
+#: common/models.py:882
msgid "Number of recent stock items to display on index page"
msgstr ""
-#: common/models.py:863
+#: common/models.py:887
msgid "Show low stock"
msgstr ""
-#: common/models.py:864
+#: common/models.py:888
msgid "Show low stock items on the homepage"
msgstr ""
-#: common/models.py:869
+#: common/models.py:893
msgid "Show depleted stock"
msgstr ""
-#: common/models.py:870
+#: common/models.py:894
msgid "Show depleted stock items on the homepage"
msgstr ""
-#: common/models.py:875
+#: common/models.py:899
msgid "Show needed stock"
msgstr ""
-#: common/models.py:876
+#: common/models.py:900
msgid "Show stock items needed for builds on the homepage"
msgstr ""
-#: common/models.py:881
+#: common/models.py:905
msgid "Show expired stock"
msgstr ""
-#: common/models.py:882
+#: common/models.py:906
msgid "Show expired stock items on the homepage"
msgstr ""
-#: common/models.py:887
+#: common/models.py:911
msgid "Show stale stock"
msgstr ""
-#: common/models.py:888
+#: common/models.py:912
msgid "Show stale stock items on the homepage"
msgstr ""
-#: common/models.py:893
+#: common/models.py:917
msgid "Show pending builds"
msgstr ""
-#: common/models.py:894
+#: common/models.py:918
msgid "Show pending builds on the homepage"
msgstr ""
-#: common/models.py:899
+#: common/models.py:923
msgid "Show overdue builds"
msgstr ""
-#: common/models.py:900
+#: common/models.py:924
msgid "Show overdue builds on the homepage"
msgstr ""
-#: common/models.py:905
+#: common/models.py:929
msgid "Show outstanding POs"
msgstr ""
-#: common/models.py:906
+#: common/models.py:930
msgid "Show outstanding POs on the homepage"
msgstr ""
-#: common/models.py:911
+#: common/models.py:935
msgid "Show overdue POs"
msgstr ""
-#: common/models.py:912
+#: common/models.py:936
msgid "Show overdue POs on the homepage"
msgstr ""
-#: common/models.py:917
+#: common/models.py:941
msgid "Show outstanding SOs"
msgstr ""
-#: common/models.py:918
+#: common/models.py:942
msgid "Show outstanding SOs on the homepage"
msgstr ""
-#: common/models.py:923
+#: common/models.py:947
msgid "Show overdue SOs"
msgstr ""
-#: common/models.py:924
+#: common/models.py:948
msgid "Show overdue SOs on the homepage"
msgstr ""
-#: common/models.py:930
+#: common/models.py:954
msgid "Inline label display"
msgstr ""
-#: common/models.py:931
+#: common/models.py:955
msgid "Display PDF labels in the browser, instead of downloading as a file"
msgstr ""
-#: common/models.py:937
+#: common/models.py:961
msgid "Inline report display"
msgstr ""
-#: common/models.py:938
+#: common/models.py:962
msgid "Display PDF reports in the browser, instead of downloading as a file"
msgstr ""
-#: common/models.py:944
+#: common/models.py:968
msgid "Search Preview Results"
msgstr ""
-#: common/models.py:945
+#: common/models.py:969
msgid "Number of results to show in search preview window"
msgstr ""
-#: common/models.py:1002 company/forms.py:43
+#: common/models.py:1026 company/forms.py:43
msgid "Price break quantity"
msgstr ""
-#: common/models.py:1009 company/templates/company/supplier_part.html:231
-#: templates/js/translated/part.js:1153
+#: common/models.py:1033 company/templates/company/supplier_part.html:231
+#: templates/js/translated/part.js:1322
msgid "Price"
msgstr ""
-#: common/models.py:1010
+#: common/models.py:1034
msgid "Unit price at specified quantity"
msgstr ""
-#: common/models.py:1103
+#: common/models.py:1127
msgid "Default"
msgstr ""
@@ -2123,7 +2200,7 @@ msgstr ""
#: order/templates/order/po_navbar.html:19
#: order/templates/order/po_navbar.html:22
#: order/templates/order/purchase_order_detail.html:26 order/views.py:290
-#: part/templates/part/bom_upload/upload_file.html:45
+#: part/templates/part/bom_upload/upload_file.html:65
#: part/templates/part/import_wizard/part_upload.html:45 part/views.py:268
#: part/views.py:882
msgid "Upload File"
@@ -2154,7 +2231,7 @@ msgstr ""
#: order/templates/order/order_wizard/po_upload.html:40
#: 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:43
+#: part/templates/part/bom_upload/upload_file.html:63
#: 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:43
@@ -2169,244 +2246,249 @@ msgstr ""
msgid "Image URL"
msgstr ""
-#: company/models.py:102
+#: company/models.py:104
msgid "Company description"
msgstr ""
-#: company/models.py:103
+#: company/models.py:105
msgid "Description of the company"
msgstr ""
-#: company/models.py:109 company/templates/company/company_base.html:70
-#: templates/js/translated/company.js:303
+#: company/models.py:111 company/templates/company/company_base.html:70
+#: templates/js/translated/company.js:348
msgid "Website"
msgstr ""
-#: company/models.py:110
+#: company/models.py:112
msgid "Company website URL"
msgstr ""
-#: company/models.py:114 company/templates/company/company_base.html:88
+#: company/models.py:116 company/templates/company/company_base.html:88
msgid "Address"
msgstr ""
-#: company/models.py:115
+#: company/models.py:117
msgid "Company address"
msgstr ""
-#: company/models.py:118
+#: company/models.py:120
msgid "Phone number"
msgstr ""
-#: company/models.py:119
+#: company/models.py:121
msgid "Contact phone number"
msgstr ""
-#: company/models.py:122 company/templates/company/company_base.html:102
+#: company/models.py:124 company/templates/company/company_base.html:102
msgid "Email"
msgstr ""
-#: company/models.py:122
+#: company/models.py:124
msgid "Contact email address"
msgstr ""
-#: company/models.py:125 company/templates/company/company_base.html:109
+#: company/models.py:127 company/templates/company/company_base.html:109
msgid "Contact"
msgstr ""
-#: company/models.py:126
+#: company/models.py:128
msgid "Point of contact"
msgstr ""
-#: company/models.py:128 company/models.py:345 company/models.py:513
-#: order/models.py:160 part/models.py:712
+#: company/models.py:130 company/models.py:347 company/models.py:563
+#: order/models.py:160 part/models.py:714
#: report/templates/report/inventree_build_order_base.html:165
-#: templates/js/translated/company.js:486
-#: templates/js/translated/company.js:768 templates/js/translated/part.js:819
+#: templates/js/translated/company.js:535
+#: templates/js/translated/company.js:823 templates/js/translated/part.js:972
msgid "Link"
msgstr ""
-#: company/models.py:128
+#: company/models.py:130
msgid "Link to external company information"
msgstr ""
-#: company/models.py:136 part/models.py:722
+#: company/models.py:138 part/models.py:724
msgid "Image"
msgstr ""
-#: company/models.py:141
+#: company/models.py:143
msgid "is customer"
msgstr ""
-#: company/models.py:141
+#: company/models.py:143
msgid "Do you sell items to this company?"
msgstr ""
-#: company/models.py:143
+#: company/models.py:145
msgid "is supplier"
msgstr ""
-#: company/models.py:143
+#: company/models.py:145
msgid "Do you purchase items from this company?"
msgstr ""
-#: company/models.py:145
+#: company/models.py:147
msgid "is manufacturer"
msgstr ""
-#: company/models.py:145
+#: company/models.py:147
msgid "Does this company manufacture parts?"
msgstr ""
-#: company/models.py:149 company/serializers.py:245
-#: company/templates/company/company_base.html:76
+#: company/models.py:151 company/serializers.py:264
+#: company/templates/company/company_base.html:76 stock/serializers.py:155
msgid "Currency"
msgstr ""
-#: company/models.py:152
+#: company/models.py:154
msgid "Default currency used for this company"
msgstr ""
-#: company/models.py:317 company/models.py:484 stock/models.py:448
+#: company/models.py:319 company/models.py:534 stock/models.py:454
#: stock/templates/stock/item_base.html:237
msgid "Base Part"
msgstr ""
-#: company/models.py:321 company/models.py:488 order/views.py:1082
+#: company/models.py:323 company/models.py:538 order/views.py:1082
msgid "Select part"
msgstr ""
-#: company/models.py:332 company/templates/company/company_base.html:116
+#: company/models.py:334 company/templates/company/company_base.html:116
#: company/templates/company/manufacturer_part.html:89
#: company/templates/company/supplier_part.html:98 part/bom.py:170
#: part/bom.py:241 stock/templates/stock/item_base.html:366
-#: templates/js/translated/company.js:287
-#: templates/js/translated/company.js:463
-#: templates/js/translated/company.js:739
+#: templates/js/translated/company.js:332
+#: templates/js/translated/company.js:512
+#: templates/js/translated/company.js:794 templates/js/translated/part.js:222
msgid "Manufacturer"
msgstr ""
-#: company/models.py:333
+#: company/models.py:335 templates/js/translated/part.js:223
msgid "Select manufacturer"
msgstr ""
-#: company/models.py:339 company/templates/company/manufacturer_part.html:93
-#: company/templates/company/supplier_part.html:106
-#: order/templates/order/purchase_order_detail.html:331 part/bom.py:171
-#: part/bom.py:242 templates/js/translated/company.js:479
-#: templates/js/translated/company.js:757
+#: company/models.py:341 company/templates/company/manufacturer_part.html:93
+#: company/templates/company/supplier_part.html:106 part/bom.py:171
+#: part/bom.py:242 templates/js/translated/company.js:528
+#: templates/js/translated/company.js:812 templates/js/translated/order.js:505
+#: templates/js/translated/part.js:233
msgid "MPN"
msgstr ""
-#: company/models.py:340
+#: company/models.py:342 templates/js/translated/part.js:234
msgid "Manufacturer Part Number"
msgstr ""
-#: company/models.py:346
+#: company/models.py:348
msgid "URL for external manufacturer part link"
msgstr ""
-#: company/models.py:352
+#: company/models.py:354
msgid "Manufacturer part description"
msgstr ""
-#: company/models.py:406 company/models.py:507
+#: company/models.py:408 company/models.py:557
#: company/templates/company/manufacturer_part.html:6
#: company/templates/company/manufacturer_part.html:23
#: stock/templates/stock/item_base.html:376
msgid "Manufacturer Part"
msgstr ""
-#: company/models.py:413
+#: company/models.py:415
msgid "Parameter name"
msgstr ""
-#: company/models.py:419
+#: company/models.py:421
#: report/templates/report/inventree_test_report_base.html:90
-#: stock/models.py:1808 templates/InvenTree/settings/header.html:8
-#: templates/js/translated/company.js:589 templates/js/translated/part.js:480
-#: templates/js/translated/stock.js:505
+#: stock/models.py:1819 templates/InvenTree/settings/header.html:8
+#: templates/js/translated/company.js:642 templates/js/translated/part.js:612
+#: templates/js/translated/stock.js:576
msgid "Value"
msgstr ""
-#: company/models.py:420
+#: company/models.py:422
msgid "Parameter value"
msgstr ""
-#: company/models.py:426 part/models.py:797 part/models.py:2204
-#: templates/js/translated/company.js:595 templates/js/translated/part.js:486
+#: company/models.py:428 part/models.py:799 part/models.py:2220
+#: templates/js/translated/company.js:648 templates/js/translated/part.js:618
msgid "Units"
msgstr ""
-#: company/models.py:427
+#: company/models.py:429
msgid "Parameter units"
msgstr ""
-#: company/models.py:494 company/templates/company/company_base.html:121
+#: company/models.py:501
+msgid "Linked manufacturer part must reference the same base part"
+msgstr ""
+
+#: company/models.py:544 company/templates/company/company_base.html:121
#: company/templates/company/supplier_part.html:88 order/models.py:260
#: order/templates/order/order_base.html:92
#: order/templates/order/order_wizard/select_pos.html:30 part/bom.py:175
#: part/bom.py:286 stock/templates/stock/item_base.html:383
-#: templates/js/translated/company.js:291
-#: templates/js/translated/company.js:713 templates/js/translated/order.js:254
+#: templates/js/translated/company.js:336
+#: templates/js/translated/company.js:768 templates/js/translated/order.js:328
+#: templates/js/translated/part.js:203
msgid "Supplier"
msgstr ""
-#: company/models.py:495
+#: company/models.py:545 templates/js/translated/part.js:204
msgid "Select supplier"
msgstr ""
-#: company/models.py:500 company/templates/company/supplier_part.html:92
-#: order/templates/order/purchase_order_detail.html:318 part/bom.py:176
-#: part/bom.py:287
+#: company/models.py:550 company/templates/company/supplier_part.html:92
+#: part/bom.py:176 part/bom.py:287 templates/js/translated/order.js:492
+#: templates/js/translated/part.js:214
msgid "SKU"
msgstr ""
-#: company/models.py:501
+#: company/models.py:551 templates/js/translated/part.js:215
msgid "Supplier stock keeping unit"
msgstr ""
-#: company/models.py:508
+#: company/models.py:558
msgid "Select manufacturer part"
msgstr ""
-#: company/models.py:514
+#: company/models.py:564
msgid "URL for external supplier part link"
msgstr ""
-#: company/models.py:520
+#: company/models.py:570
msgid "Supplier part description"
msgstr ""
-#: company/models.py:525 company/templates/company/supplier_part.html:120
-#: part/models.py:2352 report/templates/report/inventree_po_report.html:93
+#: company/models.py:575 company/templates/company/supplier_part.html:120
+#: part/models.py:2368 report/templates/report/inventree_po_report.html:93
#: report/templates/report/inventree_so_report.html:93
msgid "Note"
msgstr ""
-#: company/models.py:529 part/models.py:1590
+#: company/models.py:579 part/models.py:1599
msgid "base cost"
msgstr ""
-#: company/models.py:529 part/models.py:1590
+#: company/models.py:579 part/models.py:1599
msgid "Minimum charge (e.g. stocking fee)"
msgstr ""
-#: company/models.py:531 company/templates/company/supplier_part.html:113
-#: stock/models.py:472 stock/templates/stock/item_base.html:324
-#: templates/js/translated/company.js:789 templates/js/translated/stock.js:1086
+#: company/models.py:581 company/templates/company/supplier_part.html:113
+#: stock/models.py:478 stock/templates/stock/item_base.html:324
+#: templates/js/translated/company.js:844 templates/js/translated/stock.js:1057
msgid "Packaging"
msgstr ""
-#: company/models.py:531
+#: company/models.py:581
msgid "Part packaging"
msgstr ""
-#: company/models.py:533 part/models.py:1592
+#: company/models.py:583 part/models.py:1601
msgid "multiple"
msgstr ""
-#: company/models.py:533
+#: company/models.py:583
msgid "Order multiple"
msgstr ""
@@ -2420,7 +2502,7 @@ msgstr ""
#: company/templates/company/company_base.html:9
#: company/templates/company/company_base.html:35
-#: templates/InvenTree/search.html:304 templates/js/translated/company.js:276
+#: templates/InvenTree/search.html:304 templates/js/translated/company.js:321
msgid "Company"
msgstr ""
@@ -2435,7 +2517,7 @@ msgid "Download image from URL"
msgstr ""
#: company/templates/company/company_base.html:46
-#: templates/js/translated/order.js:83
+#: templates/js/translated/order.js:117
msgid "Create Purchase Order"
msgstr ""
@@ -2460,16 +2542,16 @@ msgstr ""
msgid "Phone"
msgstr ""
-#: company/templates/company/company_base.html:126 order/models.py:544
-#: order/templates/order/sales_order_base.html:94 stock/models.py:490
-#: stock/models.py:491 stock/templates/stock/item_base.html:276
-#: templates/js/translated/company.js:283 templates/js/translated/order.js:351
-#: templates/js/translated/stock.js:1467
+#: company/templates/company/company_base.html:126 order/models.py:550
+#: order/templates/order/sales_order_base.html:94 stock/models.py:496
+#: stock/models.py:497 stock/templates/stock/item_base.html:276
+#: templates/js/translated/company.js:328 templates/js/translated/order.js:692
+#: templates/js/translated/stock.js:1608
msgid "Customer"
msgstr ""
#: company/templates/company/company_base.html:193
-#: part/templates/part/part_base.html:405
+#: part/templates/part/part_base.html:418
msgid "Upload Image"
msgstr ""
@@ -2490,8 +2572,8 @@ msgstr ""
msgid "New Supplier Part"
msgstr ""
-#: company/templates/company/detail.html:28
-#: company/templates/company/detail.html:70
+#: company/templates/company/detail.html:27
+#: company/templates/company/detail.html:67
#: company/templates/company/manufacturer_part.html:112
#: company/templates/company/manufacturer_part.html:136
#: part/templates/part/category.html:135 part/templates/part/detail.html:292
@@ -2499,106 +2581,106 @@ msgstr ""
msgid "Options"
msgstr ""
-#: company/templates/company/detail.html:33
-#: company/templates/company/detail.html:75
+#: company/templates/company/detail.html:32
+#: company/templates/company/detail.html:72
#: part/templates/part/category.html:140
msgid "Order parts"
msgstr ""
-#: company/templates/company/detail.html:36
-#: company/templates/company/detail.html:78
+#: company/templates/company/detail.html:35
+#: company/templates/company/detail.html:75
msgid "Delete parts"
msgstr ""
-#: company/templates/company/detail.html:36
-#: company/templates/company/detail.html:78
+#: company/templates/company/detail.html:35
+#: company/templates/company/detail.html:75
msgid "Delete Parts"
msgstr ""
-#: company/templates/company/detail.html:56 templates/InvenTree/search.html:149
+#: company/templates/company/detail.html:54 templates/InvenTree/search.html:149
msgid "Manufacturer Parts"
msgstr ""
-#: company/templates/company/detail.html:64
+#: company/templates/company/detail.html:62
msgid "Create new manufacturer part"
msgstr ""
-#: company/templates/company/detail.html:65 part/templates/part/detail.html:312
+#: company/templates/company/detail.html:63 part/templates/part/detail.html:312
msgid "New Manufacturer Part"
msgstr ""
-#: company/templates/company/detail.html:97
+#: company/templates/company/detail.html:93
msgid "Supplier Stock"
msgstr ""
-#: company/templates/company/detail.html:106
-#: company/templates/company/navbar.html:40
-#: company/templates/company/navbar.html:43
+#: company/templates/company/detail.html:102
+#: company/templates/company/navbar.html:46
+#: company/templates/company/navbar.html:49
#: order/templates/order/purchase_orders.html:8
#: order/templates/order/purchase_orders.html:13
-#: part/templates/part/detail.html:50 part/templates/part/navbar.html:71
-#: part/templates/part/navbar.html:74 templates/InvenTree/index.html:260
+#: part/templates/part/detail.html:50 part/templates/part/navbar.html:82
+#: part/templates/part/navbar.html:85 templates/InvenTree/index.html:260
#: templates/InvenTree/search.html:325
#: templates/InvenTree/settings/navbar.html:107
-#: templates/InvenTree/settings/navbar.html:109 templates/navbar.html:37
+#: templates/InvenTree/settings/navbar.html:109 templates/navbar.html:44
#: users/models.py:45
msgid "Purchase Orders"
msgstr ""
-#: company/templates/company/detail.html:112
+#: company/templates/company/detail.html:108
#: order/templates/order/purchase_orders.html:20
msgid "Create new purchase order"
msgstr ""
-#: company/templates/company/detail.html:113
+#: company/templates/company/detail.html:109
#: order/templates/order/purchase_orders.html:21
msgid "New Purchase Order"
msgstr ""
-#: company/templates/company/detail.html:128
-#: company/templates/company/navbar.html:49
-#: company/templates/company/navbar.html:52
+#: company/templates/company/detail.html:124
+#: company/templates/company/navbar.html:55
+#: company/templates/company/navbar.html:58
#: order/templates/order/sales_orders.html:8
#: order/templates/order/sales_orders.html:13
-#: part/templates/part/detail.html:71 part/templates/part/navbar.html:79
-#: part/templates/part/navbar.html:82 templates/InvenTree/index.html:291
+#: part/templates/part/detail.html:71 part/templates/part/navbar.html:91
+#: part/templates/part/navbar.html:94 templates/InvenTree/index.html:291
#: templates/InvenTree/search.html:345
#: templates/InvenTree/settings/navbar.html:113
-#: templates/InvenTree/settings/navbar.html:115 templates/navbar.html:46
+#: templates/InvenTree/settings/navbar.html:115 templates/navbar.html:55
#: users/models.py:46
msgid "Sales Orders"
msgstr ""
-#: company/templates/company/detail.html:134
+#: company/templates/company/detail.html:130
#: order/templates/order/sales_orders.html:20
msgid "Create new sales order"
msgstr ""
-#: company/templates/company/detail.html:135
+#: company/templates/company/detail.html:131
#: order/templates/order/sales_orders.html:21
msgid "New Sales Order"
msgstr ""
-#: company/templates/company/detail.html:151
-#: company/templates/company/navbar.html:55
-#: company/templates/company/navbar.html:58
-#: templates/js/translated/build.js:597
+#: company/templates/company/detail.html:147
+#: company/templates/company/navbar.html:61
+#: company/templates/company/navbar.html:64
+#: templates/js/translated/build.js:620
msgid "Assigned Stock"
msgstr ""
-#: company/templates/company/detail.html:169
+#: company/templates/company/detail.html:165
msgid "Company Notes"
msgstr ""
#: company/templates/company/detail.html:364
#: company/templates/company/manufacturer_part.html:200
-#: part/templates/part/detail.html:826
+#: part/templates/part/detail.html:357
msgid "Delete Supplier Parts?"
msgstr ""
#: company/templates/company/detail.html:365
#: company/templates/company/manufacturer_part.html:201
-#: part/templates/part/detail.html:827
+#: part/templates/part/detail.html:358
msgid "All selected supplier parts will be deleted"
msgstr ""
@@ -2609,17 +2691,17 @@ msgstr ""
#: company/templates/company/manufacturer_part.html:40
#: company/templates/company/supplier_part.html:40
#: company/templates/company/supplier_part.html:146
-#: part/templates/part/detail.html:55 part/templates/part/part_base.html:109
+#: part/templates/part/detail.html:55 part/templates/part/part_base.html:116
msgid "Order part"
msgstr ""
#: company/templates/company/manufacturer_part.html:45
-#: templates/js/translated/company.js:511
+#: templates/js/translated/company.js:560
msgid "Edit manufacturer part"
msgstr ""
#: company/templates/company/manufacturer_part.html:49
-#: templates/js/translated/company.js:512
+#: templates/js/translated/company.js:561
msgid "Delete manufacturer part"
msgstr ""
@@ -2634,9 +2716,9 @@ msgstr ""
#: company/templates/company/manufacturer_part.html:103
#: company/templates/company/manufacturer_part_navbar.html:21
-#: company/views.py:49 part/templates/part/navbar.html:65
-#: part/templates/part/navbar.html:68 part/templates/part/prices.html:144
-#: templates/InvenTree/search.html:316 templates/navbar.html:35
+#: company/views.py:49 part/templates/part/navbar.html:75
+#: part/templates/part/navbar.html:78 part/templates/part/prices.html:163
+#: templates/InvenTree/search.html:316 templates/navbar.html:41
msgid "Suppliers"
msgstr ""
@@ -2649,8 +2731,8 @@ msgstr ""
#: company/templates/company/manufacturer_part.html:138
#: company/templates/company/manufacturer_part.html:239
#: part/templates/part/detail.html:214 part/templates/part/detail.html:294
-#: part/templates/part/detail.html:317 templates/js/translated/company.js:377
-#: users/models.py:194
+#: part/templates/part/detail.html:317 templates/js/translated/company.js:424
+#: templates/js/translated/helpers.js:31 users/models.py:194
msgid "Delete"
msgstr ""
@@ -2659,8 +2741,8 @@ msgstr ""
#: company/templates/company/manufacturer_part_navbar.html:14
#: part/templates/part/category_navbar.html:38
#: part/templates/part/category_navbar.html:41
-#: part/templates/part/detail.html:155 part/templates/part/navbar.html:14
-#: part/templates/part/navbar.html:17
+#: part/templates/part/detail.html:155 part/templates/part/navbar.html:20
+#: part/templates/part/navbar.html:23
msgid "Parameters"
msgstr ""
@@ -2676,7 +2758,7 @@ msgid "Delete parameters"
msgstr ""
#: company/templates/company/manufacturer_part.html:176
-#: part/templates/part/detail.html:719
+#: part/templates/part/detail.html:834
msgid "Add Parameter"
msgstr ""
@@ -2693,18 +2775,18 @@ msgid "Manufacturer Part Stock"
msgstr ""
#: company/templates/company/manufacturer_part_navbar.html:29
-#: company/templates/company/navbar.html:34
+#: company/templates/company/navbar.html:39
#: company/templates/company/supplier_part_navbar.html:15
-#: part/templates/part/navbar.html:31 stock/api.py:53
+#: part/templates/part/navbar.html:38 stock/api.py:54
#: stock/templates/stock/loc_link.html:7 stock/templates/stock/location.html:36
#: stock/templates/stock/stock_app_base.html:10
#: templates/InvenTree/index.html:150 templates/InvenTree/search.html:196
#: templates/InvenTree/search.html:232
#: templates/InvenTree/settings/navbar.html:95
#: templates/InvenTree/settings/navbar.html:97
-#: templates/js/translated/part.js:401 templates/js/translated/part.js:626
-#: templates/js/translated/part.js:786 templates/js/translated/stock.js:133
-#: templates/js/translated/stock.js:935 templates/navbar.html:26
+#: templates/js/translated/part.js:529 templates/js/translated/part.js:758
+#: templates/js/translated/part.js:934 templates/js/translated/stock.js:202
+#: templates/js/translated/stock.js:850 templates/navbar.html:32
msgid "Stock"
msgstr ""
@@ -2717,41 +2799,41 @@ msgstr ""
msgid "Orders"
msgstr ""
-#: company/templates/company/navbar.html:13
-#: company/templates/company/navbar.html:16
+#: company/templates/company/navbar.html:17
+#: company/templates/company/navbar.html:20
msgid "Manufactured Parts"
msgstr ""
-#: company/templates/company/navbar.html:22
-#: company/templates/company/navbar.html:25
+#: company/templates/company/navbar.html:26
+#: company/templates/company/navbar.html:29
msgid "Supplied Parts"
msgstr ""
-#: company/templates/company/navbar.html:31 part/templates/part/navbar.html:28
+#: company/templates/company/navbar.html:36 part/templates/part/navbar.html:35
#: stock/templates/stock/location.html:119
#: stock/templates/stock/location.html:134
#: stock/templates/stock/location.html:148
#: stock/templates/stock/location_navbar.html:18
#: stock/templates/stock/location_navbar.html:21
-#: templates/InvenTree/search.html:198 templates/js/translated/stock.js:1366
+#: templates/InvenTree/search.html:198 templates/js/translated/stock.js:1507
#: templates/stats.html:93 templates/stats.html:102 users/models.py:43
msgid "Stock Items"
msgstr ""
#: company/templates/company/supplier_part.html:7
-#: company/templates/company/supplier_part.html:24 stock/models.py:457
+#: company/templates/company/supplier_part.html:24 stock/models.py:463
#: stock/templates/stock/item_base.html:388
-#: templates/js/translated/company.js:729 templates/js/translated/stock.js:1058
+#: templates/js/translated/company.js:784 templates/js/translated/stock.js:1014
msgid "Supplier Part"
msgstr ""
#: company/templates/company/supplier_part.html:44
-#: templates/js/translated/company.js:802
+#: templates/js/translated/company.js:857
msgid "Edit supplier part"
msgstr ""
#: company/templates/company/supplier_part.html:48
-#: templates/js/translated/company.js:803
+#: templates/js/translated/company.js:858
msgid "Delete supplier part"
msgstr ""
@@ -2775,13 +2857,13 @@ msgid "Order Part"
msgstr ""
#: company/templates/company/supplier_part.html:158
-#: part/templates/part/navbar.html:58 part/templates/part/prices.html:7
+#: part/templates/part/navbar.html:67 part/templates/part/prices.html:7
msgid "Pricing Information"
msgstr ""
#: company/templates/company/supplier_part.html:164
#: company/templates/company/supplier_part.html:265
-#: part/templates/part/prices.html:253 part/views.py:1722
+#: part/templates/part/prices.html:271 part/views.py:1730
msgid "Add Price Break"
msgstr ""
@@ -2789,11 +2871,11 @@ msgstr ""
msgid "No price break information found"
msgstr ""
-#: company/templates/company/supplier_part.html:199 part/views.py:1784
+#: company/templates/company/supplier_part.html:199 part/views.py:1792
msgid "Delete Price Break"
msgstr ""
-#: company/templates/company/supplier_part.html:213 part/views.py:1770
+#: company/templates/company/supplier_part.html:213 part/views.py:1778
msgid "Edit Price Break"
msgstr ""
@@ -2817,8 +2899,8 @@ msgstr ""
msgid "New Supplier"
msgstr ""
-#: company/views.py:55 part/templates/part/prices.html:148
-#: templates/InvenTree/search.html:306 templates/navbar.html:36
+#: company/views.py:55 part/templates/part/prices.html:167
+#: templates/InvenTree/search.html:306 templates/navbar.html:42
msgid "Manufacturers"
msgstr ""
@@ -2827,7 +2909,7 @@ msgid "New Manufacturer"
msgstr ""
#: company/views.py:61 templates/InvenTree/search.html:336
-#: templates/navbar.html:45
+#: templates/navbar.html:53
msgid "Customers"
msgstr ""
@@ -2929,6 +3011,10 @@ msgstr ""
msgid "Part query filters (comma-separated value of key=value pairs)"
msgstr ""
+#: order/api.py:302
+msgid "Destination location must be specified"
+msgstr ""
+
#: order/forms.py:30 order/templates/order/order_base.html:47
msgid "Place order"
msgstr ""
@@ -2978,11 +3064,11 @@ msgstr ""
msgid "Order notes"
msgstr ""
-#: order/models.py:247 order/models.py:534
+#: order/models.py:247 order/models.py:540
msgid "Order reference"
msgstr ""
-#: order/models.py:252 order/models.py:549
+#: order/models.py:252 order/models.py:555
msgid "Purchase order status"
msgstr ""
@@ -2991,7 +3077,7 @@ msgid "Company from which the items are being ordered"
msgstr ""
#: order/models.py:264 order/templates/order/order_base.html:98
-#: templates/js/translated/order.js:263
+#: templates/js/translated/order.js:337
msgid "Supplier Reference"
msgstr ""
@@ -3023,7 +3109,7 @@ msgstr ""
msgid "Date order was completed"
msgstr ""
-#: order/models.py:313 stock/models.py:345 stock/models.py:1060
+#: order/models.py:313 stock/models.py:351 stock/models.py:1072
msgid "Quantity must be greater than zero"
msgstr ""
@@ -3031,150 +3117,182 @@ msgstr ""
msgid "Part supplier must match PO supplier"
msgstr ""
-#: order/models.py:416
+#: order/models.py:421
msgid "Lines can only be received against an order marked as 'Placed'"
msgstr ""
-#: order/models.py:420
+#: order/models.py:425
msgid "Quantity must be an integer"
msgstr ""
-#: order/models.py:422
+#: order/models.py:427
msgid "Quantity must be a positive number"
msgstr ""
-#: order/models.py:545
+#: order/models.py:551
msgid "Company to which the items are being sold"
msgstr ""
-#: order/models.py:551
+#: order/models.py:557
msgid "Customer Reference "
msgstr ""
-#: order/models.py:551
+#: order/models.py:557
msgid "Customer order reference code"
msgstr ""
-#: order/models.py:556
+#: order/models.py:562
msgid "Target date for order completion. Order will be overdue after this date."
msgstr ""
-#: order/models.py:559 templates/js/translated/order.js:392
+#: order/models.py:565 templates/js/translated/order.js:733
msgid "Shipment Date"
msgstr ""
-#: order/models.py:566
+#: order/models.py:572
msgid "shipped by"
msgstr ""
-#: order/models.py:610
+#: order/models.py:616
msgid "SalesOrder cannot be shipped as it is not currently pending"
msgstr ""
-#: order/models.py:707
+#: order/models.py:713
msgid "Item quantity"
msgstr ""
-#: order/models.py:713
+#: order/models.py:719
msgid "Line item reference"
msgstr ""
-#: order/models.py:715
+#: order/models.py:721
msgid "Line item notes"
msgstr ""
-#: order/models.py:745 order/models.py:823 templates/js/translated/order.js:442
+#: order/models.py:751 order/models.py:835 templates/js/translated/order.js:785
msgid "Order"
msgstr ""
-#: order/models.py:746 order/templates/order/order_base.html:9
+#: order/models.py:752 order/templates/order/order_base.html:9
#: order/templates/order/order_base.html:24
#: report/templates/report/inventree_po_report.html:77
#: stock/templates/stock/item_base.html:338
-#: templates/js/translated/order.js:232 templates/js/translated/stock.js:1037
-#: templates/js/translated/stock.js:1448
+#: templates/js/translated/order.js:306 templates/js/translated/stock.js:991
+#: templates/js/translated/stock.js:1589
msgid "Purchase Order"
msgstr ""
-#: order/models.py:767
+#: order/models.py:773
msgid "Supplier part"
msgstr ""
-#: order/models.py:770 order/templates/order/order_base.html:131
-#: order/templates/order/purchase_order_detail.html:388
+#: order/models.py:780 order/templates/order/order_base.html:131
#: order/templates/order/receive_parts.html:22
#: order/templates/order/sales_order_base.html:133
+#: templates/js/translated/order.js:573
msgid "Received"
msgstr ""
-#: order/models.py:770
+#: order/models.py:781
msgid "Number of items received"
msgstr ""
-#: order/models.py:776 part/templates/part/prices.html:157 stock/models.py:582
-#: stock/templates/stock/item_base.html:345
-#: templates/js/translated/stock.js:1081
+#: order/models.py:788 part/templates/part/prices.html:176 stock/models.py:588
+#: stock/serializers.py:147 stock/templates/stock/item_base.html:345
+#: templates/js/translated/stock.js:1045
msgid "Purchase Price"
msgstr ""
-#: order/models.py:777
+#: order/models.py:789
msgid "Unit purchase price"
msgstr ""
-#: order/models.py:785
+#: order/models.py:797
msgid "Where does the Purchaser want this item to be stored?"
msgstr ""
-#: order/models.py:831 part/templates/part/part_pricing.html:97
-#: part/templates/part/prices.html:97 part/templates/part/prices.html:266
+#: order/models.py:843 part/templates/part/part_pricing.html:112
+#: part/templates/part/prices.html:116 part/templates/part/prices.html:284
msgid "Sale Price"
msgstr ""
-#: order/models.py:832
+#: order/models.py:844
msgid "Unit sale price"
msgstr ""
-#: order/models.py:911 order/models.py:913
+#: order/models.py:923 order/models.py:925
msgid "Stock item has not been assigned"
msgstr ""
-#: order/models.py:917
+#: order/models.py:929
msgid "Cannot allocate stock item to a line with a different part"
msgstr ""
-#: order/models.py:919
+#: order/models.py:931
msgid "Cannot allocate stock to a line without a part"
msgstr ""
-#: order/models.py:922
+#: order/models.py:934
msgid "Allocation quantity cannot exceed stock quantity"
msgstr ""
-#: order/models.py:932
+#: order/models.py:944
msgid "Quantity must be 1 for serialized stock item"
msgstr ""
-#: order/models.py:937
+#: order/models.py:949
msgid "Line"
msgstr ""
-#: order/models.py:948
+#: order/models.py:960
msgid "Item"
msgstr ""
-#: order/models.py:949
+#: order/models.py:961
msgid "Select stock item to allocate"
msgstr ""
-#: order/models.py:952
+#: order/models.py:964
msgid "Enter stock allocation quantity"
msgstr ""
-#: order/serializers.py:139
+#: order/serializers.py:166
msgid "Purchase price currency"
msgstr ""
-#: order/serializers.py:360
+#: order/serializers.py:201
+msgid "Line Item"
+msgstr ""
+
+#: order/serializers.py:207
+msgid "Line item does not match purchase order"
+msgstr ""
+
+#: order/serializers.py:217 order/serializers.py:276
+msgid "Select destination location for received items"
+msgstr ""
+
+#: order/serializers.py:234
+msgid "Barcode Hash"
+msgstr ""
+
+#: order/serializers.py:235
+msgid "Unique identifier field"
+msgstr ""
+
+#: order/serializers.py:250
+msgid "Barcode is already in use"
+msgstr ""
+
+#: order/serializers.py:289
+msgid "Line items must be provided"
+msgstr ""
+
+#: order/serializers.py:299
+msgid "Supplied barcode values must be unique"
+msgstr ""
+
+#: order/serializers.py:514
msgid "Sale price currency"
msgstr ""
@@ -3227,14 +3345,12 @@ msgid "Edit Purchase Order"
msgstr ""
#: order/templates/order/order_base.html:196
-#: order/templates/order/purchase_order_detail.html:265
-#: stock/templates/stock/location.html:250
+#: stock/templates/stock/location.html:250 templates/js/translated/order.js:437
msgid "New Location"
msgstr ""
#: order/templates/order/order_base.html:197
-#: order/templates/order/purchase_order_detail.html:266
-#: stock/templates/stock/location.html:42
+#: stock/templates/stock/location.html:42 templates/js/translated/order.js:438
msgid "Create new stock location"
msgstr ""
@@ -3336,7 +3452,7 @@ msgid "Upload File for Purchase Order"
msgstr ""
#: order/templates/order/order_wizard/po_upload.html:18
-#: part/templates/part/bom_upload/upload_file.html:24
+#: part/templates/part/bom_upload/upload_file.html:34
#: part/templates/part/import_wizard/ajax_part_upload.html:10
#: part/templates/part/import_wizard/part_upload.html:21
#, python-format
@@ -3369,7 +3485,7 @@ msgstr ""
#: order/templates/order/order_wizard/select_parts.html:65
#, python-format
-msgid "Select a supplier for %(name)s"
+msgid "Select a supplier for %(name)s"
msgstr ""
#: order/templates/order/order_wizard/select_parts.html:77
@@ -3386,7 +3502,7 @@ msgid "Select existing purchase orders, or create new orders."
msgstr ""
#: order/templates/order/order_wizard/select_pos.html:31
-#: templates/js/translated/order.js:289 templates/js/translated/order.js:397
+#: templates/js/translated/order.js:363 templates/js/translated/order.js:738
msgid "Items"
msgstr ""
@@ -3425,9 +3541,9 @@ msgid "Purchase Order Items"
msgstr ""
#: order/templates/order/purchase_order_detail.html:23
-#: order/templates/order/purchase_order_detail.html:202
+#: order/templates/order/purchase_order_detail.html:203
#: order/templates/order/sales_order_detail.html:23
-#: order/templates/order/sales_order_detail.html:176
+#: order/templates/order/sales_order_detail.html:177
msgid "Add Line Item"
msgstr ""
@@ -3436,49 +3552,6 @@ msgstr ""
msgid "Order Notes"
msgstr ""
-#: order/templates/order/purchase_order_detail.html:238
-#: order/templates/order/sales_order_detail.html:518
-msgid "Edit Line Item"
-msgstr ""
-
-#: order/templates/order/purchase_order_detail.html:248
-#: order/templates/order/sales_order_detail.html:528
-msgid "Delete Line Item"
-msgstr ""
-
-#: order/templates/order/purchase_order_detail.html:279
-msgid "No line items found"
-msgstr ""
-
-#: order/templates/order/purchase_order_detail.html:307
-#: order/templates/order/sales_order_detail.html:353
-msgid "Total"
-msgstr ""
-
-#: order/templates/order/purchase_order_detail.html:360
-#: order/templates/order/sales_order_detail.html:376
-#: templates/js/translated/part.js:1128 templates/js/translated/part.js:1317
-msgid "Unit Price"
-msgstr ""
-
-#: order/templates/order/purchase_order_detail.html:367
-#: order/templates/order/sales_order_detail.html:383
-msgid "Total price"
-msgstr ""
-
-#: order/templates/order/purchase_order_detail.html:431
-#: order/templates/order/sales_order_detail.html:489
-msgid "Edit line item"
-msgstr ""
-
-#: order/templates/order/purchase_order_detail.html:432
-msgid "Delete line item"
-msgstr ""
-
-#: order/templates/order/purchase_order_detail.html:437
-msgid "Receive line item"
-msgstr ""
-
#: order/templates/order/purchase_orders.html:24
#: order/templates/order/sales_orders.html:24
msgid "Print Order Reports"
@@ -3486,18 +3559,18 @@ msgstr ""
#: order/templates/order/receive_parts.html:8
#, python-format
-msgid "Receive outstanding parts for %(order)s - %(desc)s"
+msgid "Receive outstanding parts for %(order)s - %(desc)s"
msgstr ""
-#: order/templates/order/receive_parts.html:14 part/api.py:49
-#: part/models.py:296 part/templates/part/cat_link.html:7
+#: order/templates/order/receive_parts.html:14 part/api.py:54
+#: part/models.py:298 part/templates/part/cat_link.html:7
#: part/templates/part/category.html:108 part/templates/part/category.html:122
#: part/templates/part/category_navbar.html:21
#: part/templates/part/category_navbar.html:24
#: templates/InvenTree/index.html:102 templates/InvenTree/search.html:114
#: templates/InvenTree/settings/navbar.html:83
#: templates/InvenTree/settings/navbar.html:85
-#: templates/js/translated/part.js:987 templates/navbar.html:23
+#: templates/js/translated/part.js:1154 templates/navbar.html:29
#: templates/stats.html:80 templates/stats.html:89 users/models.py:41
msgid "Parts"
msgstr ""
@@ -3511,7 +3584,7 @@ msgid "Order Code"
msgstr ""
#: order/templates/order/receive_parts.html:21
-#: part/templates/part/part_base.html:160 templates/js/translated/part.js:802
+#: part/templates/part/part_base.html:167 templates/js/translated/part.js:949
msgid "On Order"
msgstr ""
@@ -3540,7 +3613,7 @@ msgid "Sales Order Details"
msgstr ""
#: order/templates/order/sales_order_base.html:100
-#: templates/js/translated/order.js:364
+#: templates/js/translated/order.js:705
msgid "Customer Reference"
msgstr ""
@@ -3563,71 +3636,102 @@ msgstr ""
msgid "Sales Order Items"
msgstr ""
-#: order/templates/order/sales_order_detail.html:225
-#: templates/js/translated/bom.js:378 templates/js/translated/build.js:759
-#: templates/js/translated/build.js:1202
+#: order/templates/order/sales_order_detail.html:226
+#: templates/js/translated/bom.js:394 templates/js/translated/build.js:782
+#: templates/js/translated/build.js:1219
msgid "Actions"
msgstr ""
-#: order/templates/order/sales_order_detail.html:232
-#: templates/js/translated/build.js:645 templates/js/translated/build.js:1011
+#: order/templates/order/sales_order_detail.html:233
+#: templates/js/translated/build.js:668 templates/js/translated/build.js:1030
msgid "Edit stock allocation"
msgstr ""
-#: order/templates/order/sales_order_detail.html:233
-#: templates/js/translated/build.js:647 templates/js/translated/build.js:1012
+#: order/templates/order/sales_order_detail.html:234
+#: templates/js/translated/build.js:670 templates/js/translated/build.js:1031
msgid "Delete stock allocation"
msgstr ""
-#: order/templates/order/sales_order_detail.html:306
+#: order/templates/order/sales_order_detail.html:307
msgid "No matching line items"
msgstr ""
-#: order/templates/order/sales_order_detail.html:336
+#: order/templates/order/sales_order_detail.html:337
msgid "ID"
msgstr ""
-#: order/templates/order/sales_order_detail.html:404
-#: templates/js/translated/build.js:710 templates/js/translated/build.js:1007
+#: order/templates/order/sales_order_detail.html:354
+#: templates/js/translated/order.js:481
+msgid "Total"
+msgstr ""
+
+#: order/templates/order/sales_order_detail.html:377
+#: templates/js/translated/order.js:534 templates/js/translated/part.js:1296
+#: templates/js/translated/part.js:1507
+msgid "Unit Price"
+msgstr ""
+
+#: order/templates/order/sales_order_detail.html:384
+#: templates/js/translated/order.js:543
+msgid "Total price"
+msgstr ""
+
+#: order/templates/order/sales_order_detail.html:405
+#: templates/js/translated/build.js:733 templates/js/translated/build.js:1026
msgid "Allocated"
msgstr ""
-#: order/templates/order/sales_order_detail.html:406
+#: order/templates/order/sales_order_detail.html:407
msgid "Fulfilled"
msgstr ""
-#: order/templates/order/sales_order_detail.html:443
+#: order/templates/order/sales_order_detail.html:444
msgid "PO"
msgstr ""
-#: order/templates/order/sales_order_detail.html:473
+#: order/templates/order/sales_order_detail.html:474
msgid "Allocate serial numbers"
msgstr ""
-#: order/templates/order/sales_order_detail.html:476
-#: templates/js/translated/build.js:773
+#: order/templates/order/sales_order_detail.html:477
+#: templates/js/translated/build.js:796
msgid "Allocate stock"
msgstr ""
-#: order/templates/order/sales_order_detail.html:479
+#: order/templates/order/sales_order_detail.html:480
msgid "Purchase stock"
msgstr ""
-#: order/templates/order/sales_order_detail.html:483
-#: templates/js/translated/build.js:766 templates/js/translated/build.js:1210
+#: order/templates/order/sales_order_detail.html:484
+#: templates/js/translated/build.js:789 templates/js/translated/build.js:1227
msgid "Build stock"
msgstr ""
-#: order/templates/order/sales_order_detail.html:486
-#: order/templates/order/sales_order_detail.html:605
+#: order/templates/order/sales_order_detail.html:487
+#: order/templates/order/sales_order_detail.html:606
msgid "Calculate price"
msgstr ""
#: order/templates/order/sales_order_detail.html:490
+#: templates/js/translated/order.js:616
+msgid "Edit line item"
+msgstr ""
+
+#: order/templates/order/sales_order_detail.html:491
msgid "Delete line item "
msgstr ""
-#: order/templates/order/sales_order_detail.html:611
+#: order/templates/order/sales_order_detail.html:519
+#: templates/js/translated/order.js:403
+msgid "Edit Line Item"
+msgstr ""
+
+#: order/templates/order/sales_order_detail.html:529
+#: templates/js/translated/order.js:415
+msgid "Delete Line Item"
+msgstr ""
+
+#: order/templates/order/sales_order_detail.html:612
msgid "Update Unit Price"
msgstr ""
@@ -3814,12 +3918,28 @@ msgstr ""
msgid "Updated {part} unit-price to {price} and quantity to {qty}"
msgstr ""
-#: part/bom.py:133 part/models.py:73 part/models.py:731
-#: part/templates/part/category.html:75 part/templates/part/part_base.html:282
+#: part/api.py:700
+msgid "Must be greater than zero"
+msgstr ""
+
+#: part/api.py:704
+msgid "Must be a valid quantity"
+msgstr ""
+
+#: part/api.py:719
+msgid "Specify location for initial part stock"
+msgstr ""
+
+#: part/api.py:750 part/api.py:754 part/api.py:769 part/api.py:773
+msgid "This field is required"
+msgstr ""
+
+#: part/bom.py:133 part/models.py:75 part/models.py:733
+#: part/templates/part/category.html:75 part/templates/part/part_base.html:290
msgid "Default Location"
msgstr ""
-#: part/bom.py:134 part/templates/part/part_base.html:149
+#: part/bom.py:134 part/templates/part/part_base.html:156
msgid "Available Stock"
msgstr ""
@@ -3879,7 +3999,7 @@ msgstr ""
msgid "Include part supplier data in exported BOM"
msgstr ""
-#: part/forms.py:96 part/models.py:2234
+#: part/forms.py:96 part/models.py:2250
msgid "Parent Part"
msgstr ""
@@ -3923,391 +4043,391 @@ msgstr ""
msgid "Input quantity for price calculation"
msgstr ""
-#: part/models.py:74
+#: part/models.py:76
msgid "Default location for parts in this category"
msgstr ""
-#: part/models.py:77
+#: part/models.py:79
msgid "Default keywords"
msgstr ""
-#: part/models.py:77
+#: part/models.py:79
msgid "Default keywords for parts in this category"
msgstr ""
-#: part/models.py:87 part/models.py:2280
+#: part/models.py:89 part/models.py:2296
#: part/templates/part/part_app_base.html:10
msgid "Part Category"
msgstr ""
-#: part/models.py:88 part/templates/part/category.html:32
+#: part/models.py:90 part/templates/part/category.html:32
#: part/templates/part/category.html:103 templates/InvenTree/search.html:127
#: templates/stats.html:84 users/models.py:40
msgid "Part Categories"
msgstr ""
-#: part/models.py:381
+#: part/models.py:383
msgid "Invalid choice for parent part"
msgstr ""
-#: part/models.py:433 part/models.py:445
+#: part/models.py:435 part/models.py:447
#, python-brace-format
msgid "Part '{p1}' is used in BOM for '{p2}' (recursive)"
msgstr ""
-#: part/models.py:542
+#: part/models.py:544
msgid "Next available serial numbers are"
msgstr ""
-#: part/models.py:546
+#: part/models.py:548
msgid "Next available serial number is"
msgstr ""
-#: part/models.py:551
+#: part/models.py:553
msgid "Most recent serial number is"
msgstr ""
-#: part/models.py:630
+#: part/models.py:632
msgid "Duplicate IPN not allowed in part settings"
msgstr ""
-#: part/models.py:655
+#: part/models.py:657
msgid "Part name"
msgstr ""
-#: part/models.py:662
+#: part/models.py:664
msgid "Is Template"
msgstr ""
-#: part/models.py:663
+#: part/models.py:665
msgid "Is this part a template part?"
msgstr ""
-#: part/models.py:673
+#: part/models.py:675
msgid "Is this part a variant of another part?"
msgstr ""
-#: part/models.py:674
+#: part/models.py:676
msgid "Variant Of"
msgstr ""
-#: part/models.py:680
+#: part/models.py:682
msgid "Part description"
msgstr ""
-#: part/models.py:685 part/templates/part/category.html:82
-#: part/templates/part/part_base.html:251
+#: part/models.py:687 part/templates/part/category.html:82
+#: part/templates/part/part_base.html:259
msgid "Keywords"
msgstr ""
-#: part/models.py:686
+#: part/models.py:688
msgid "Part keywords to improve visibility in search results"
msgstr ""
-#: part/models.py:693 part/models.py:2279
+#: part/models.py:695 part/models.py:2295
#: part/templates/part/set_category.html:15
#: templates/InvenTree/settings/settings.html:167
-#: templates/js/translated/part.js:773
+#: templates/js/translated/part.js:916
msgid "Category"
msgstr ""
-#: part/models.py:694
+#: part/models.py:696
msgid "Part category"
msgstr ""
-#: part/models.py:699 part/templates/part/part_base.html:227
-#: templates/js/translated/part.js:389 templates/js/translated/part.js:617
+#: part/models.py:701 part/templates/part/part_base.html:235
+#: templates/js/translated/part.js:517 templates/js/translated/part.js:749
msgid "IPN"
msgstr ""
-#: part/models.py:700
+#: part/models.py:702
msgid "Internal Part Number"
msgstr ""
-#: part/models.py:706
+#: part/models.py:708
msgid "Part revision or version number"
msgstr ""
-#: part/models.py:707 part/templates/part/part_base.html:244
-#: report/models.py:200 templates/js/translated/part.js:393
+#: part/models.py:709 part/templates/part/part_base.html:252
+#: report/models.py:200 templates/js/translated/part.js:521
msgid "Revision"
msgstr ""
-#: part/models.py:729
+#: part/models.py:731
msgid "Where is this item normally stored?"
msgstr ""
-#: part/models.py:776 part/templates/part/part_base.html:289
+#: part/models.py:778 part/templates/part/part_base.html:297
msgid "Default Supplier"
msgstr ""
-#: part/models.py:777
+#: part/models.py:779
msgid "Default supplier part"
msgstr ""
-#: part/models.py:784
+#: part/models.py:786
msgid "Default Expiry"
msgstr ""
-#: part/models.py:785
+#: part/models.py:787
msgid "Expiry time (in days) for stock items of this part"
msgstr ""
-#: part/models.py:790
+#: part/models.py:792
msgid "Minimum Stock"
msgstr ""
-#: part/models.py:791
+#: part/models.py:793
msgid "Minimum allowed stock level"
msgstr ""
-#: part/models.py:798
+#: part/models.py:800
msgid "Stock keeping units for this part"
msgstr ""
-#: part/models.py:804
+#: part/models.py:806
msgid "Can this part be built from other parts?"
msgstr ""
-#: part/models.py:810
+#: part/models.py:812
msgid "Can this part be used to build other parts?"
msgstr ""
-#: part/models.py:816
+#: part/models.py:818
msgid "Does this part have tracking for unique items?"
msgstr ""
-#: part/models.py:821
+#: part/models.py:823
msgid "Can this part be purchased from external suppliers?"
msgstr ""
-#: part/models.py:826
+#: part/models.py:828
msgid "Can this part be sold to customers?"
msgstr ""
-#: part/models.py:830 templates/js/translated/table_filters.js:21
-#: templates/js/translated/table_filters.js:69
-#: templates/js/translated/table_filters.js:255
-#: templates/js/translated/table_filters.js:324
+#: part/models.py:832 templates/js/translated/table_filters.js:34
+#: templates/js/translated/table_filters.js:82
+#: templates/js/translated/table_filters.js:268
+#: templates/js/translated/table_filters.js:337
msgid "Active"
msgstr ""
-#: part/models.py:831
+#: part/models.py:833
msgid "Is this part active?"
msgstr ""
-#: part/models.py:836
+#: part/models.py:838
msgid "Is this a virtual part, such as a software product or license?"
msgstr ""
-#: part/models.py:841
+#: part/models.py:843
msgid "Part notes - supports Markdown formatting"
msgstr ""
-#: part/models.py:844
+#: part/models.py:846
msgid "BOM checksum"
msgstr ""
-#: part/models.py:844
+#: part/models.py:846
msgid "Stored BOM checksum"
msgstr ""
-#: part/models.py:847
+#: part/models.py:849
msgid "BOM checked by"
msgstr ""
-#: part/models.py:849
+#: part/models.py:851
msgid "BOM checked date"
msgstr ""
-#: part/models.py:853
+#: part/models.py:855
msgid "Creation User"
msgstr ""
-#: part/models.py:1592
+#: part/models.py:1601
msgid "Sell multiple"
msgstr ""
-#: part/models.py:2080
+#: part/models.py:2096
msgid "Test templates can only be created for trackable parts"
msgstr ""
-#: part/models.py:2097
+#: part/models.py:2113
msgid "Test with this name already exists for this part"
msgstr ""
-#: part/models.py:2117 templates/js/translated/part.js:1038
-#: templates/js/translated/stock.js:485
+#: part/models.py:2133 templates/js/translated/part.js:1205
+#: templates/js/translated/stock.js:556
msgid "Test Name"
msgstr ""
-#: part/models.py:2118
+#: part/models.py:2134
msgid "Enter a name for the test"
msgstr ""
-#: part/models.py:2123
+#: part/models.py:2139
msgid "Test Description"
msgstr ""
-#: part/models.py:2124
+#: part/models.py:2140
msgid "Enter description for this test"
msgstr ""
-#: part/models.py:2129 templates/js/translated/part.js:1047
-#: templates/js/translated/table_filters.js:241
+#: part/models.py:2145 templates/js/translated/part.js:1214
+#: templates/js/translated/table_filters.js:254
msgid "Required"
msgstr ""
-#: part/models.py:2130
+#: part/models.py:2146
msgid "Is this test required to pass?"
msgstr ""
-#: part/models.py:2135 templates/js/translated/part.js:1055
+#: part/models.py:2151 templates/js/translated/part.js:1222
msgid "Requires Value"
msgstr ""
-#: part/models.py:2136
+#: part/models.py:2152
msgid "Does this test require a value when adding a test result?"
msgstr ""
-#: part/models.py:2141 templates/js/translated/part.js:1062
+#: part/models.py:2157 templates/js/translated/part.js:1229
msgid "Requires Attachment"
msgstr ""
-#: part/models.py:2142
+#: part/models.py:2158
msgid "Does this test require a file attachment when adding a test result?"
msgstr ""
-#: part/models.py:2153
+#: part/models.py:2169
#, python-brace-format
msgid "Illegal character in template name ({c})"
msgstr ""
-#: part/models.py:2189
+#: part/models.py:2205
msgid "Parameter template name must be unique"
msgstr ""
-#: part/models.py:2197
+#: part/models.py:2213
msgid "Parameter Name"
msgstr ""
-#: part/models.py:2204
+#: part/models.py:2220
msgid "Parameter Units"
msgstr ""
-#: part/models.py:2236 part/models.py:2285 part/models.py:2286
+#: part/models.py:2252 part/models.py:2301 part/models.py:2302
#: templates/InvenTree/settings/settings.html:162
msgid "Parameter Template"
msgstr ""
-#: part/models.py:2238
+#: part/models.py:2254
msgid "Data"
msgstr ""
-#: part/models.py:2238
+#: part/models.py:2254
msgid "Parameter Value"
msgstr ""
-#: part/models.py:2290 templates/InvenTree/settings/settings.html:171
+#: part/models.py:2306 templates/InvenTree/settings/settings.html:171
msgid "Default Value"
msgstr ""
-#: part/models.py:2291
+#: part/models.py:2307
msgid "Default Parameter Value"
msgstr ""
-#: part/models.py:2325
+#: part/models.py:2341
msgid "Select parent part"
msgstr ""
-#: part/models.py:2333
+#: part/models.py:2349
msgid "Sub part"
msgstr ""
-#: part/models.py:2334
+#: part/models.py:2350
msgid "Select part to be used in BOM"
msgstr ""
-#: part/models.py:2340
+#: part/models.py:2356
msgid "BOM quantity for this BOM item"
msgstr ""
-#: part/models.py:2342 templates/js/translated/bom.js:236
-#: templates/js/translated/bom.js:298
+#: part/models.py:2358 templates/js/translated/bom.js:256
+#: templates/js/translated/bom.js:314
msgid "Optional"
msgstr ""
-#: part/models.py:2342
+#: part/models.py:2358
msgid "This BOM item is optional"
msgstr ""
-#: part/models.py:2345
+#: part/models.py:2361
msgid "Overage"
msgstr ""
-#: part/models.py:2346
+#: part/models.py:2362
msgid "Estimated build wastage quantity (absolute or percentage)"
msgstr ""
-#: part/models.py:2349
+#: part/models.py:2365
msgid "BOM item reference"
msgstr ""
-#: part/models.py:2352
+#: part/models.py:2368
msgid "BOM item notes"
msgstr ""
-#: part/models.py:2354
+#: part/models.py:2370
msgid "Checksum"
msgstr ""
-#: part/models.py:2354
+#: part/models.py:2370
msgid "BOM line checksum"
msgstr ""
-#: part/models.py:2358 templates/js/translated/bom.js:315
-#: templates/js/translated/bom.js:322
-#: templates/js/translated/table_filters.js:55
+#: part/models.py:2374 templates/js/translated/bom.js:331
+#: templates/js/translated/bom.js:338
+#: templates/js/translated/table_filters.js:68
msgid "Inherited"
msgstr ""
-#: part/models.py:2359
+#: part/models.py:2375
msgid "This BOM item is inherited by BOMs for variant parts"
msgstr ""
-#: part/models.py:2364 templates/js/translated/bom.js:307
+#: part/models.py:2380 templates/js/translated/bom.js:323
msgid "Allow Variants"
msgstr ""
-#: part/models.py:2365
+#: part/models.py:2381
msgid "Stock items for variant parts can be used for this BOM item"
msgstr ""
-#: part/models.py:2450 stock/models.py:335
+#: part/models.py:2466 stock/models.py:341
msgid "Quantity must be integer value for trackable parts"
msgstr ""
-#: part/models.py:2459 part/models.py:2461
+#: part/models.py:2475 part/models.py:2477
msgid "Sub part must be specified"
msgstr ""
-#: part/models.py:2464
+#: part/models.py:2480
msgid "BOM Item"
msgstr ""
-#: part/models.py:2583
+#: part/models.py:2599
msgid "Part 1"
msgstr ""
-#: part/models.py:2587
+#: part/models.py:2603
msgid "Part 2"
msgstr ""
-#: part/models.py:2587
+#: part/models.py:2603
msgid "Select Related Part"
msgstr ""
-#: part/models.py:2619
+#: part/models.py:2635
msgid "Error creating relationship: check that the part is not related to itself and that the relationship is unique"
msgstr ""
@@ -4317,17 +4437,17 @@ msgstr ""
#: part/templates/part/bom.html:14
#, python-format
-msgid "The BOM for %(part)s has changed, and must be validated.
"
+msgid "The BOM for %(part)s has changed, and must be validated.
"
msgstr ""
#: part/templates/part/bom.html:16
#, python-format
-msgid "The BOM for %(part)s was last checked by %(checker)s on %(check_date)s"
+msgid "The BOM for %(part)s was last checked by %(checker)s on %(check_date)s"
msgstr ""
#: part/templates/part/bom.html:20
#, python-format
-msgid "The BOM for %(part)s has not been validated."
+msgid "The BOM for %(part)s has not been validated."
msgstr ""
#: part/templates/part/bom.html:27
@@ -4374,33 +4494,34 @@ msgstr ""
msgid "Select Part"
msgstr ""
-#: part/templates/part/bom_upload/upload_file.html:7
-msgid "Upload BOM File"
+#: part/templates/part/bom_upload/upload_file.html:13
+#: part/templates/part/bom_upload/upload_file.html:16
+msgid "Return To BOM"
msgstr ""
-#: part/templates/part/bom_upload/upload_file.html:12
+#: part/templates/part/bom_upload/upload_file.html:27
msgid "Upload Bill of Materials"
msgstr ""
-#: part/templates/part/bom_upload/upload_file.html:16
+#: part/templates/part/bom_upload/upload_file.html:46
msgid "Requirements for BOM upload"
msgstr ""
-#: part/templates/part/bom_upload/upload_file.html:18
+#: part/templates/part/bom_upload/upload_file.html:48
msgid "The BOM file must contain the required named columns as provided in the "
msgstr ""
-#: part/templates/part/bom_upload/upload_file.html:18
+#: part/templates/part/bom_upload/upload_file.html:48
msgid "BOM Upload Template"
msgstr ""
-#: part/templates/part/bom_upload/upload_file.html:19
+#: part/templates/part/bom_upload/upload_file.html:49
msgid "Each part must already exist in the database"
msgstr ""
#: part/templates/part/bom_validate.html:6
#, python-format
-msgid "Confirm that the Bill of Materials (BOM) is valid for:
%(part)s"
+msgid "Confirm that the Bill of Materials (BOM) is valid for:
%(part)s"
msgstr ""
#: part/templates/part/bom_validate.html:9
@@ -4435,7 +4556,7 @@ msgstr ""
msgid "Category Description"
msgstr ""
-#: part/templates/part/category.html:88 part/templates/part/category.html:174
+#: part/templates/part/category.html:88 part/templates/part/category.html:175
#: part/templates/part/category_navbar.html:14
#: part/templates/part/category_navbar.html:17
msgid "Subcategories"
@@ -4449,7 +4570,7 @@ msgstr ""
msgid "Export Part Data"
msgstr ""
-#: part/templates/part/category.html:127 part/templates/part/category.html:141
+#: part/templates/part/category.html:127 part/templates/part/category.html:142
msgid "Export"
msgstr ""
@@ -4470,26 +4591,30 @@ msgid "Set Category"
msgstr ""
#: part/templates/part/category.html:141
+msgid "Print Labels"
+msgstr ""
+
+#: part/templates/part/category.html:142
msgid "Export Data"
msgstr ""
-#: part/templates/part/category.html:145
+#: part/templates/part/category.html:146
msgid "View list display"
msgstr ""
-#: part/templates/part/category.html:148
+#: part/templates/part/category.html:149
msgid "View grid display"
msgstr ""
-#: part/templates/part/category.html:164
+#: part/templates/part/category.html:165
msgid "Part Parameters"
msgstr ""
-#: part/templates/part/category.html:253
+#: part/templates/part/category.html:254
msgid "Create Part Category"
msgstr ""
-#: part/templates/part/category.html:279
+#: part/templates/part/category.html:281
msgid "Create Part"
msgstr ""
@@ -4533,7 +4658,7 @@ msgstr ""
msgid "Import Parts"
msgstr ""
-#: part/templates/part/copy_part.html:9 templates/js/translated/part.js:224
+#: part/templates/part/copy_part.html:9 templates/js/translated/part.js:352
msgid "Duplicate Part"
msgstr ""
@@ -4554,7 +4679,7 @@ msgstr ""
#: part/templates/part/create_part.html:17
#, python-format
-msgid "%(full_name)s - %(desc)s (%(match_per)s%% match)"
+msgid "%(full_name)s - %(desc)s (%(match_per)s%% match)"
msgstr ""
#: part/templates/part/detail.html:16
@@ -4563,10 +4688,10 @@ msgstr ""
#: part/templates/part/detail.html:21
#, python-format
-msgid "Showing stock for all variants of %(full_name)s"
+msgid "Showing stock for all variants of %(full_name)s"
msgstr ""
-#: part/templates/part/detail.html:30 part/templates/part/navbar.html:87
+#: part/templates/part/detail.html:30 part/templates/part/navbar.html:99
msgid "Part Test Templates"
msgstr ""
@@ -4586,7 +4711,7 @@ msgstr ""
msgid "Sales Order Allocations"
msgstr ""
-#: part/templates/part/detail.html:130 part/templates/part/navbar.html:21
+#: part/templates/part/detail.html:130 part/templates/part/navbar.html:27
msgid "Part Variants"
msgstr ""
@@ -4602,8 +4727,8 @@ msgstr ""
msgid "Add new parameter"
msgstr ""
-#: part/templates/part/detail.html:182 part/templates/part/navbar.html:95
-#: part/templates/part/navbar.html:98
+#: part/templates/part/detail.html:182 part/templates/part/navbar.html:107
+#: part/templates/part/navbar.html:110
msgid "Related Parts"
msgstr ""
@@ -4611,8 +4736,8 @@ msgstr ""
msgid "Add Related"
msgstr ""
-#: part/templates/part/detail.html:228 part/templates/part/navbar.html:35
-#: part/templates/part/navbar.html:38
+#: part/templates/part/detail.html:228 part/templates/part/navbar.html:43
+#: part/templates/part/navbar.html:46
msgid "Bill of Materials"
msgstr ""
@@ -4644,50 +4769,50 @@ msgstr ""
msgid "Delete manufacturer parts"
msgstr ""
-#: part/templates/part/detail.html:402
+#: part/templates/part/detail.html:502
msgid "Delete selected BOM items?"
msgstr ""
-#: part/templates/part/detail.html:403
+#: part/templates/part/detail.html:503
msgid "All selected BOM items will be deleted"
msgstr ""
-#: part/templates/part/detail.html:454
+#: part/templates/part/detail.html:554
msgid "Create BOM Item"
msgstr ""
-#: part/templates/part/detail.html:589
+#: part/templates/part/detail.html:699
msgid "Add Test Result Template"
msgstr ""
-#: part/templates/part/detail.html:607
+#: part/templates/part/detail.html:716
msgid "Edit Test Result Template"
msgstr ""
-#: part/templates/part/detail.html:619
+#: part/templates/part/detail.html:728
msgid "Delete Test Result Template"
msgstr ""
-#: part/templates/part/detail.html:670
+#: part/templates/part/detail.html:784
msgid "Edit Part Notes"
msgstr ""
-#: part/templates/part/detail.html:903
+#: part/templates/part/detail.html:936
#, python-format
msgid "Purchase Unit Price - %(currency)s"
msgstr ""
-#: part/templates/part/detail.html:915
+#: part/templates/part/detail.html:948
#, python-format
msgid "Unit Price-Cost Difference - %(currency)s"
msgstr ""
-#: part/templates/part/detail.html:927
+#: part/templates/part/detail.html:960
#, python-format
msgid "Supplier Unit Cost - %(currency)s"
msgstr ""
-#: part/templates/part/detail.html:1016
+#: part/templates/part/detail.html:1049
#, python-format
msgid "Unit Price - %(currency)s"
msgstr ""
@@ -4701,19 +4826,19 @@ msgstr ""
msgid "Import Parts from File"
msgstr ""
-#: part/templates/part/navbar.html:24
+#: part/templates/part/navbar.html:30
msgid "Variants"
msgstr ""
-#: part/templates/part/navbar.html:51 part/templates/part/navbar.html:54
+#: part/templates/part/navbar.html:59 part/templates/part/navbar.html:62
msgid "Used In"
msgstr ""
-#: part/templates/part/navbar.html:61
+#: part/templates/part/navbar.html:70
msgid "Prices"
msgstr ""
-#: part/templates/part/navbar.html:90
+#: part/templates/part/navbar.html:102
msgid "Test Templates"
msgstr ""
@@ -4721,195 +4846,204 @@ msgstr ""
msgid "Part List"
msgstr ""
-#: part/templates/part/part_base.html:30
+#: part/templates/part/part_base.html:35
msgid "Part is a template part (variants can be made from this part)"
msgstr ""
-#: part/templates/part/part_base.html:33
+#: part/templates/part/part_base.html:38
msgid "Part can be assembled from other parts"
msgstr ""
-#: part/templates/part/part_base.html:36
+#: part/templates/part/part_base.html:41
msgid "Part can be used in assemblies"
msgstr ""
-#: part/templates/part/part_base.html:39
+#: part/templates/part/part_base.html:44
msgid "Part stock is tracked by serial number"
msgstr ""
-#: part/templates/part/part_base.html:42
+#: part/templates/part/part_base.html:47
msgid "Part can be purchased from external suppliers"
msgstr ""
-#: part/templates/part/part_base.html:45
+#: part/templates/part/part_base.html:50
msgid "Part can be sold to customers"
msgstr ""
-#: part/templates/part/part_base.html:52 part/templates/part/part_base.html:60
+#: part/templates/part/part_base.html:57 part/templates/part/part_base.html:65
msgid "Part is virtual (not a physical part)"
msgstr ""
-#: part/templates/part/part_base.html:53 templates/js/translated/company.js:454
-#: templates/js/translated/company.js:704 templates/js/translated/part.js:304
-#: templates/js/translated/part.js:381
+#: part/templates/part/part_base.html:58 templates/js/translated/company.js:503
+#: templates/js/translated/company.js:759 templates/js/translated/part.js:432
+#: templates/js/translated/part.js:509
msgid "Inactive"
msgstr ""
-#: part/templates/part/part_base.html:68
+#: part/templates/part/part_base.html:73
msgid "Star this part"
msgstr ""
-#: part/templates/part/part_base.html:75
+#: part/templates/part/part_base.html:80
#: stock/templates/stock/item_base.html:75
#: stock/templates/stock/location.html:51
msgid "Barcode actions"
msgstr ""
-#: part/templates/part/part_base.html:77
+#: part/templates/part/part_base.html:82
#: stock/templates/stock/item_base.html:77
#: stock/templates/stock/location.html:53 templates/qr_button.html:1
msgid "Show QR Code"
msgstr ""
-#: part/templates/part/part_base.html:78
+#: part/templates/part/part_base.html:83
#: stock/templates/stock/item_base.html:93
#: stock/templates/stock/location.html:54
msgid "Print Label"
msgstr ""
-#: part/templates/part/part_base.html:83
+#: part/templates/part/part_base.html:89
msgid "Show pricing information"
msgstr ""
-#: part/templates/part/part_base.html:88
+#: part/templates/part/part_base.html:95
#: stock/templates/stock/item_base.html:142
#: stock/templates/stock/location.html:62
msgid "Stock actions"
msgstr ""
-#: part/templates/part/part_base.html:95
+#: part/templates/part/part_base.html:102
msgid "Count part stock"
msgstr ""
-#: part/templates/part/part_base.html:101
+#: part/templates/part/part_base.html:108
msgid "Transfer part stock"
msgstr ""
-#: part/templates/part/part_base.html:118
+#: part/templates/part/part_base.html:125
msgid "Part actions"
msgstr ""
-#: part/templates/part/part_base.html:121
+#: part/templates/part/part_base.html:128
msgid "Duplicate part"
msgstr ""
-#: part/templates/part/part_base.html:124
+#: part/templates/part/part_base.html:131
msgid "Edit part"
msgstr ""
-#: part/templates/part/part_base.html:127
+#: part/templates/part/part_base.html:134
msgid "Delete part"
msgstr ""
-#: part/templates/part/part_base.html:139
+#: part/templates/part/part_base.html:146
#, python-format
msgid "This part is a variant of %(link)s"
msgstr ""
-#: part/templates/part/part_base.html:154
-#: templates/js/translated/table_filters.js:153
+#: part/templates/part/part_base.html:161
+#: templates/js/translated/table_filters.js:166
msgid "In Stock"
msgstr ""
-#: part/templates/part/part_base.html:167 templates/InvenTree/index.html:186
+#: part/templates/part/part_base.html:174 templates/InvenTree/index.html:186
msgid "Required for Build Orders"
msgstr ""
-#: part/templates/part/part_base.html:174
+#: part/templates/part/part_base.html:181
msgid "Required for Sales Orders"
msgstr ""
-#: part/templates/part/part_base.html:181
+#: part/templates/part/part_base.html:188
msgid "Allocated to Orders"
msgstr ""
-#: part/templates/part/part_base.html:196 templates/js/translated/bom.js:336
+#: part/templates/part/part_base.html:203 templates/js/translated/bom.js:352
msgid "Can Build"
msgstr ""
-#: part/templates/part/part_base.html:202 templates/js/translated/part.js:633
-#: templates/js/translated/part.js:806
+#: part/templates/part/part_base.html:209 templates/js/translated/part.js:765
+#: templates/js/translated/part.js:953
msgid "Building"
msgstr ""
-#: part/templates/part/part_base.html:275
+#: part/templates/part/part_base.html:223
+#: part/templates/part/part_base.html:524
+#: part/templates/part/part_base.html:550
+msgid "Show Part Details"
+msgstr ""
+
+#: part/templates/part/part_base.html:283
msgid "Latest Serial Number"
msgstr ""
-#: part/templates/part/part_base.html:383 part/templates/part/prices.html:125
+#: part/templates/part/part_base.html:396 part/templates/part/prices.html:144
msgid "Calculate"
msgstr ""
-#: part/templates/part/part_base.html:426
+#: part/templates/part/part_base.html:439
msgid "No matching images found"
msgstr ""
-#: part/templates/part/part_base.html:506
-#: part/templates/part/part_base.html:531
+#: part/templates/part/part_base.html:519
+#: part/templates/part/part_base.html:544
msgid "Hide Part Details"
msgstr ""
-#: part/templates/part/part_base.html:511
-#: part/templates/part/part_base.html:537
-msgid "Show Part Details"
-msgstr ""
-
#: part/templates/part/part_pricing.html:22 part/templates/part/prices.html:21
msgid "Supplier Pricing"
msgstr ""
#: part/templates/part/part_pricing.html:26
#: part/templates/part/part_pricing.html:52
-#: part/templates/part/part_pricing.html:85
-#: part/templates/part/part_pricing.html:100 part/templates/part/prices.html:25
-#: part/templates/part/prices.html:52 part/templates/part/prices.html:84
-#: part/templates/part/prices.html:101
+#: part/templates/part/part_pricing.html:100
+#: part/templates/part/part_pricing.html:115 part/templates/part/prices.html:25
+#: part/templates/part/prices.html:52 part/templates/part/prices.html:103
+#: part/templates/part/prices.html:120
msgid "Unit Cost"
msgstr ""
#: part/templates/part/part_pricing.html:32
#: part/templates/part/part_pricing.html:58
-#: part/templates/part/part_pricing.html:89
-#: part/templates/part/part_pricing.html:104 part/templates/part/prices.html:32
-#: part/templates/part/prices.html:59 part/templates/part/prices.html:89
-#: part/templates/part/prices.html:106
+#: part/templates/part/part_pricing.html:104
+#: part/templates/part/part_pricing.html:119 part/templates/part/prices.html:32
+#: part/templates/part/prices.html:59 part/templates/part/prices.html:108
+#: part/templates/part/prices.html:125
msgid "Total Cost"
msgstr ""
#: part/templates/part/part_pricing.html:40 part/templates/part/prices.html:40
-#: templates/js/translated/bom.js:291
+#: templates/js/translated/bom.js:307
msgid "No supplier pricing available"
msgstr ""
#: part/templates/part/part_pricing.html:48 part/templates/part/prices.html:49
-#: part/templates/part/prices.html:225
+#: part/templates/part/prices.html:243
msgid "BOM Pricing"
msgstr ""
-#: part/templates/part/part_pricing.html:66 part/templates/part/prices.html:67
+#: part/templates/part/part_pricing.html:65 part/templates/part/prices.html:69
+msgid "Unit Purchase Price"
+msgstr ""
+
+#: part/templates/part/part_pricing.html:71 part/templates/part/prices.html:76
+msgid "Total Purchase Price"
+msgstr ""
+
+#: part/templates/part/part_pricing.html:81 part/templates/part/prices.html:86
msgid "Note: BOM pricing is incomplete for this part"
msgstr ""
-#: part/templates/part/part_pricing.html:73 part/templates/part/prices.html:74
+#: part/templates/part/part_pricing.html:88 part/templates/part/prices.html:93
msgid "No BOM pricing available"
msgstr ""
-#: part/templates/part/part_pricing.html:82 part/templates/part/prices.html:83
+#: part/templates/part/part_pricing.html:97 part/templates/part/prices.html:102
msgid "Internal Price"
msgstr ""
-#: part/templates/part/part_pricing.html:113
-#: part/templates/part/prices.html:115
+#: part/templates/part/part_pricing.html:128
+#: part/templates/part/prices.html:134
msgid "No pricing information is available for this part."
msgstr ""
@@ -4919,7 +5053,7 @@ msgstr ""
#: part/templates/part/partial_delete.html:7
#, python-format
-msgid "Are you sure you want to delete part '%(full_name)s'?"
+msgid "Are you sure you want to delete part '%(full_name)s'?"
msgstr ""
#: part/templates/part/partial_delete.html:12
@@ -4963,53 +5097,53 @@ msgstr ""
msgid "Show BOM cost"
msgstr ""
-#: part/templates/part/prices.html:98
+#: part/templates/part/prices.html:117
msgid "Show sale cost"
msgstr ""
-#: part/templates/part/prices.html:99
+#: part/templates/part/prices.html:118
msgid "Show sale price"
msgstr ""
-#: part/templates/part/prices.html:121
+#: part/templates/part/prices.html:140
msgid "Calculation parameters"
msgstr ""
-#: part/templates/part/prices.html:136 templates/js/translated/bom.js:285
+#: part/templates/part/prices.html:155 templates/js/translated/bom.js:301
msgid "Supplier Cost"
msgstr ""
-#: part/templates/part/prices.html:137 part/templates/part/prices.html:158
-#: part/templates/part/prices.html:183 part/templates/part/prices.html:213
-#: part/templates/part/prices.html:239 part/templates/part/prices.html:267
+#: part/templates/part/prices.html:156 part/templates/part/prices.html:177
+#: part/templates/part/prices.html:201 part/templates/part/prices.html:231
+#: part/templates/part/prices.html:257 part/templates/part/prices.html:285
msgid "Jump to overview"
msgstr ""
-#: part/templates/part/prices.html:162
+#: part/templates/part/prices.html:181
msgid "Stock Pricing"
msgstr ""
-#: part/templates/part/prices.html:172
+#: part/templates/part/prices.html:190
msgid "No stock pricing history is available for this part."
msgstr ""
-#: part/templates/part/prices.html:182
+#: part/templates/part/prices.html:200
msgid "Internal Cost"
msgstr ""
-#: part/templates/part/prices.html:197 part/views.py:1793
+#: part/templates/part/prices.html:215 part/views.py:1801
msgid "Add Internal Price Break"
msgstr ""
-#: part/templates/part/prices.html:212
+#: part/templates/part/prices.html:230
msgid "BOM Cost"
msgstr ""
-#: part/templates/part/prices.html:238
+#: part/templates/part/prices.html:256
msgid "Sale Cost"
msgstr ""
-#: part/templates/part/prices.html:278
+#: part/templates/part/prices.html:296
msgid "No sale pice history available for this part."
msgstr ""
@@ -5017,8 +5151,8 @@ msgstr ""
msgid "Set category for the following parts"
msgstr ""
-#: part/templates/part/stock_count.html:7 templates/js/translated/bom.js:259
-#: templates/js/translated/part.js:623 templates/js/translated/part.js:810
+#: part/templates/part/stock_count.html:7 templates/js/translated/bom.js:278
+#: templates/js/translated/part.js:755 templates/js/translated/part.js:957
msgid "No Stock"
msgstr ""
@@ -5032,10 +5166,10 @@ msgstr ""
#: part/templates/part/variant_part.html:10
#, python-format
-msgid "Create a new variant of template '%(full_name)s'."
+msgid "Create a new variant of template '%(full_name)s'."
msgstr ""
-#: part/templatetags/inventree_extras.py:105
+#: part/templatetags/inventree_extras.py:106
msgid "Unknown database"
msgstr ""
@@ -5116,51 +5250,51 @@ msgstr ""
msgid "Part Pricing"
msgstr ""
-#: part/views.py:1429
+#: part/views.py:1437
msgid "Create Part Parameter Template"
msgstr ""
-#: part/views.py:1439
+#: part/views.py:1447
msgid "Edit Part Parameter Template"
msgstr ""
-#: part/views.py:1446
+#: part/views.py:1454
msgid "Delete Part Parameter Template"
msgstr ""
-#: part/views.py:1494 templates/js/translated/part.js:179
+#: part/views.py:1502 templates/js/translated/part.js:303
msgid "Edit Part Category"
msgstr ""
-#: part/views.py:1532
+#: part/views.py:1540
msgid "Delete Part Category"
msgstr ""
-#: part/views.py:1538
+#: part/views.py:1546
msgid "Part category was deleted"
msgstr ""
-#: part/views.py:1547
+#: part/views.py:1555
msgid "Create Category Parameter Template"
msgstr ""
-#: part/views.py:1648
+#: part/views.py:1656
msgid "Edit Category Parameter Template"
msgstr ""
-#: part/views.py:1704
+#: part/views.py:1712
msgid "Delete Category Parameter Template"
msgstr ""
-#: part/views.py:1726
+#: part/views.py:1734
msgid "Added new price break"
msgstr ""
-#: part/views.py:1802
+#: part/views.py:1810
msgid "Edit Internal Price Break"
msgstr ""
-#: part/views.py:1810
+#: part/views.py:1818
msgid "Delete Internal Price Break"
msgstr ""
@@ -5266,17 +5400,17 @@ msgid "Test Results"
msgstr ""
#: report/templates/report/inventree_test_report_base.html:88
-#: stock/models.py:1796
+#: stock/models.py:1807
msgid "Test"
msgstr ""
#: report/templates/report/inventree_test_report_base.html:89
-#: stock/models.py:1802
+#: stock/models.py:1813
msgid "Result"
msgstr ""
#: report/templates/report/inventree_test_report_base.html:92
-#: templates/js/translated/order.js:279 templates/js/translated/stock.js:1382
+#: templates/js/translated/order.js:353 templates/js/translated/stock.js:1523
msgid "Date"
msgstr ""
@@ -5288,51 +5422,51 @@ msgstr ""
msgid "Fail"
msgstr ""
-#: stock/api.py:145
+#: stock/api.py:146
msgid "Request must contain list of stock items"
msgstr ""
-#: stock/api.py:153
+#: stock/api.py:154
msgid "Improperly formatted data"
msgstr ""
-#: stock/api.py:161
+#: stock/api.py:162
msgid "Each entry must contain a valid integer primary-key"
msgstr ""
-#: stock/api.py:167
+#: stock/api.py:168
msgid "Primary key does not match valid stock item"
msgstr ""
-#: stock/api.py:177
+#: stock/api.py:178
msgid "Invalid quantity value"
msgstr ""
-#: stock/api.py:182
+#: stock/api.py:183
msgid "Quantity must not be less than zero"
msgstr ""
-#: stock/api.py:210
+#: stock/api.py:211
#, python-brace-format
msgid "Updated stock for {n} items"
msgstr ""
-#: stock/api.py:246 stock/api.py:279
+#: stock/api.py:247 stock/api.py:280
msgid "Specified quantity exceeds stock quantity"
msgstr ""
-#: stock/api.py:269
+#: stock/api.py:270
msgid "Valid location must be specified"
msgstr ""
-#: stock/api.py:289
+#: stock/api.py:290
#, python-brace-format
msgid "Moved {n} parts to {loc}"
msgstr ""
-#: stock/forms.py:79 stock/forms.py:307 stock/models.py:550
+#: stock/forms.py:79 stock/forms.py:307 stock/models.py:556
#: stock/templates/stock/item_base.html:395
-#: templates/js/translated/stock.js:1025
+#: templates/js/translated/stock.js:967
msgid "Expiry Date"
msgstr ""
@@ -5384,258 +5518,266 @@ msgstr ""
msgid "Confirm removal of installed stock items"
msgstr ""
-#: stock/models.py:57 stock/models.py:587
+#: stock/models.py:57 stock/models.py:593
msgid "Owner"
msgstr ""
-#: stock/models.py:58 stock/models.py:588
+#: stock/models.py:58 stock/models.py:594
msgid "Select Owner"
msgstr ""
-#: stock/models.py:316
+#: stock/models.py:322
msgid "StockItem with this serial number already exists"
msgstr ""
-#: stock/models.py:352
+#: stock/models.py:358
#, python-brace-format
msgid "Part type ('{pf}') must be {pe}"
msgstr ""
-#: stock/models.py:362 stock/models.py:371
+#: stock/models.py:368 stock/models.py:377
msgid "Quantity must be 1 for item with a serial number"
msgstr ""
-#: stock/models.py:363
+#: stock/models.py:369
msgid "Serial number cannot be set if quantity greater than 1"
msgstr ""
-#: stock/models.py:385
+#: stock/models.py:391
msgid "Item cannot belong to itself"
msgstr ""
-#: stock/models.py:391
+#: stock/models.py:397
msgid "Item must have a build reference if is_building=True"
msgstr ""
-#: stock/models.py:398
+#: stock/models.py:404
msgid "Build reference does not point to the same part object"
msgstr ""
-#: stock/models.py:440
+#: stock/models.py:446
msgid "Parent Stock Item"
msgstr ""
-#: stock/models.py:449
+#: stock/models.py:455
msgid "Base part"
msgstr ""
-#: stock/models.py:458
+#: stock/models.py:464
msgid "Select a matching supplier part for this stock item"
msgstr ""
-#: stock/models.py:463 stock/templates/stock/stock_app_base.html:8
+#: stock/models.py:469 stock/templates/stock/stock_app_base.html:8
msgid "Stock Location"
msgstr ""
-#: stock/models.py:466
+#: stock/models.py:472
msgid "Where is this stock item located?"
msgstr ""
-#: stock/models.py:473
+#: stock/models.py:479
msgid "Packaging this stock item is stored in"
msgstr ""
-#: stock/models.py:478 stock/templates/stock/item_base.html:284
+#: stock/models.py:484 stock/templates/stock/item_base.html:284
msgid "Installed In"
msgstr ""
-#: stock/models.py:481
+#: stock/models.py:487
msgid "Is this item installed in another item?"
msgstr ""
-#: stock/models.py:497
+#: stock/models.py:503
msgid "Serial number for this item"
msgstr ""
-#: stock/models.py:509
+#: stock/models.py:515
msgid "Batch code for this stock item"
msgstr ""
-#: stock/models.py:513
+#: stock/models.py:519
msgid "Stock Quantity"
msgstr ""
-#: stock/models.py:522
+#: stock/models.py:528
msgid "Source Build"
msgstr ""
-#: stock/models.py:524
+#: stock/models.py:530
msgid "Build for this stock item"
msgstr ""
-#: stock/models.py:535
+#: stock/models.py:541
msgid "Source Purchase Order"
msgstr ""
-#: stock/models.py:538
+#: stock/models.py:544
msgid "Purchase order for this stock item"
msgstr ""
-#: stock/models.py:544
+#: stock/models.py:550
msgid "Destination Sales Order"
msgstr ""
-#: stock/models.py:551
+#: stock/models.py:557
msgid "Expiry date for stock item. Stock will be considered expired after this date"
msgstr ""
-#: stock/models.py:564
+#: stock/models.py:570
msgid "Delete on deplete"
msgstr ""
-#: stock/models.py:564
+#: stock/models.py:570
msgid "Delete this Stock Item when stock is depleted"
msgstr ""
-#: stock/models.py:574 stock/templates/stock/item.html:98
+#: stock/models.py:580 stock/templates/stock/item.html:99
#: stock/templates/stock/navbar.html:54
msgid "Stock Item Notes"
msgstr ""
-#: stock/models.py:583
+#: stock/models.py:589
msgid "Single unit purchase price at time of purchase"
msgstr ""
-#: stock/models.py:1051
-msgid "Part is not set as trackable"
+#: stock/models.py:599
+msgid "Scheduled for deletion"
msgstr ""
-#: stock/models.py:1057
-msgid "Quantity must be integer"
+#: stock/models.py:600
+msgid "This StockItem will be deleted by the background worker"
msgstr ""
#: stock/models.py:1063
+msgid "Part is not set as trackable"
+msgstr ""
+
+#: stock/models.py:1069
+msgid "Quantity must be integer"
+msgstr ""
+
+#: stock/models.py:1075
#, python-brace-format
msgid "Quantity must not exceed available stock quantity ({n})"
msgstr ""
-#: stock/models.py:1066
+#: stock/models.py:1078
msgid "Serial numbers must be a list of integers"
msgstr ""
-#: stock/models.py:1069
+#: stock/models.py:1081
msgid "Quantity does not match serial numbers"
msgstr ""
-#: stock/models.py:1076
+#: stock/models.py:1088
#, python-brace-format
msgid "Serial numbers already exist: {exists}"
msgstr ""
-#: stock/models.py:1234
+#: stock/models.py:1246
msgid "StockItem cannot be moved as it is not in stock"
msgstr ""
-#: stock/models.py:1716
+#: stock/models.py:1727
msgid "Entry notes"
msgstr ""
-#: stock/models.py:1773
+#: stock/models.py:1784
msgid "Value must be provided for this test"
msgstr ""
-#: stock/models.py:1779
+#: stock/models.py:1790
msgid "Attachment must be uploaded for this test"
msgstr ""
-#: stock/models.py:1797
+#: stock/models.py:1808
msgid "Test name"
msgstr ""
-#: stock/models.py:1803 templates/js/translated/table_filters.js:231
+#: stock/models.py:1814 templates/js/translated/table_filters.js:244
msgid "Test result"
msgstr ""
-#: stock/models.py:1809
+#: stock/models.py:1820
msgid "Test output value"
msgstr ""
-#: stock/models.py:1816
+#: stock/models.py:1827
msgid "Test result attachment"
msgstr ""
-#: stock/models.py:1822
+#: stock/models.py:1833
msgid "Test notes"
msgstr ""
-#: stock/templates/stock/item.html:16
+#: stock/templates/stock/item.html:17
msgid "Stock Tracking Information"
msgstr ""
-#: stock/templates/stock/item.html:29
+#: stock/templates/stock/item.html:30
msgid "New Entry"
msgstr ""
-#: stock/templates/stock/item.html:42
+#: stock/templates/stock/item.html:43
msgid "Child Stock Items"
msgstr ""
-#: stock/templates/stock/item.html:49
+#: stock/templates/stock/item.html:50
msgid "This stock item does not have any child items"
msgstr ""
-#: stock/templates/stock/item.html:57 stock/templates/stock/navbar.html:19
+#: stock/templates/stock/item.html:58 stock/templates/stock/navbar.html:19
#: stock/templates/stock/navbar.html:22
msgid "Test Data"
msgstr ""
-#: stock/templates/stock/item.html:65
+#: stock/templates/stock/item.html:66
msgid "Delete Test Data"
msgstr ""
-#: stock/templates/stock/item.html:69
+#: stock/templates/stock/item.html:70
msgid "Add Test Data"
msgstr ""
-#: stock/templates/stock/item.html:72 stock/templates/stock/item_base.html:95
+#: stock/templates/stock/item.html:73 stock/templates/stock/item_base.html:95
msgid "Test Report"
msgstr ""
-#: stock/templates/stock/item.html:119 stock/templates/stock/navbar.html:27
+#: stock/templates/stock/item.html:120 stock/templates/stock/navbar.html:27
msgid "Installed Stock Items"
msgstr ""
-#: stock/templates/stock/item.html:124 stock/views.py:534
+#: stock/templates/stock/item.html:125 stock/views.py:534
msgid "Install Stock Item"
msgstr ""
-#: stock/templates/stock/item.html:299 stock/templates/stock/item.html:324
+#: stock/templates/stock/item.html:301 stock/templates/stock/item.html:326
msgid "Add Test Result"
msgstr ""
-#: stock/templates/stock/item.html:344
+#: stock/templates/stock/item.html:346
msgid "Edit Test Result"
msgstr ""
-#: stock/templates/stock/item.html:358
+#: stock/templates/stock/item.html:360
msgid "Delete Test Result"
msgstr ""
#: stock/templates/stock/item_base.html:33
#: stock/templates/stock/item_base.html:399
-#: templates/js/translated/table_filters.js:212
+#: templates/js/translated/table_filters.js:225
msgid "Expired"
msgstr ""
#: stock/templates/stock/item_base.html:43
#: stock/templates/stock/item_base.html:401
-#: templates/js/translated/table_filters.js:218
+#: templates/js/translated/table_filters.js:231
msgid "Stale"
msgstr ""
#: stock/templates/stock/item_base.html:80
-#: templates/js/translated/barcode.js:309
-#: templates/js/translated/barcode.js:314
+#: templates/js/translated/barcode.js:331
+#: templates/js/translated/barcode.js:336
msgid "Unlink Barcode"
msgstr ""
@@ -5768,7 +5910,7 @@ msgid "next page"
msgstr ""
#: stock/templates/stock/item_base.html:303
-#: templates/js/translated/build.js:628
+#: templates/js/translated/build.js:651
msgid "No location set"
msgstr ""
@@ -5795,7 +5937,7 @@ msgid "This StockItem expires on %(item.expiry_date)s"
msgstr ""
#: stock/templates/stock/item_base.html:408
-#: templates/js/translated/stock.js:1032
+#: templates/js/translated/stock.js:980
msgid "Last Updated"
msgstr ""
@@ -5825,7 +5967,7 @@ msgstr ""
#: stock/templates/stock/item_delete.html:12
#, python-format
-msgid "This will remove %(qty)s units of %(full_name)s from stock."
+msgid "This will remove %(qty)s units of %(full_name)s from stock."
msgstr ""
#: stock/templates/stock/item_install.html:8
@@ -5975,7 +6117,7 @@ msgstr ""
#: stock/templates/stock/stockitem_convert.html:8
#, python-format
-msgid "This stock item is current an instance of %(part)s"
+msgid "This stock item is current an instance of %(part)s"
msgstr ""
#: stock/templates/stock/stockitem_convert.html:9
@@ -6039,7 +6181,7 @@ msgstr ""
msgid "Uninstall Stock Items"
msgstr ""
-#: stock/views.py:780 templates/js/translated/stock.js:282
+#: stock/views.py:780 templates/js/translated/stock.js:353
msgid "Confirm stock adjustment"
msgstr ""
@@ -6059,7 +6201,7 @@ msgstr ""
msgid "Serialize Stock"
msgstr ""
-#: stock/views.py:1143 templates/js/translated/build.js:365
+#: stock/views.py:1143 templates/js/translated/build.js:392
msgid "Create new Stock Item"
msgstr ""
@@ -6171,11 +6313,11 @@ msgstr ""
msgid "Enter a search query"
msgstr ""
-#: templates/InvenTree/search.html:268 templates/js/translated/stock.js:629
+#: templates/InvenTree/search.html:268 templates/js/translated/stock.js:699
msgid "Shipped to customer"
msgstr ""
-#: templates/InvenTree/search.html:271 templates/js/translated/stock.js:639
+#: templates/InvenTree/search.html:271 templates/js/translated/stock.js:709
msgid "No stock location set"
msgstr ""
@@ -6240,7 +6382,7 @@ msgstr ""
#: templates/InvenTree/settings/navbar.html:27
#: templates/InvenTree/settings/navbar.html:29
-#: templates/js/translated/tables.js:351 templates/search_form.html:6
+#: templates/js/translated/tables.js:366 templates/search_form.html:6
#: templates/search_form.html:8
msgid "Search"
msgstr ""
@@ -6257,7 +6399,7 @@ msgstr ""
#: templates/InvenTree/settings/navbar.html:46
#: templates/InvenTree/settings/navbar.html:48
-#: templates/InvenTree/settings/settings.html:8 templates/navbar.html:84
+#: templates/InvenTree/settings/settings.html:8 templates/navbar.html:94
msgid "Settings"
msgstr ""
@@ -6332,16 +6474,16 @@ msgid "No category parameter templates found"
msgstr ""
#: templates/InvenTree/settings/settings.html:174
-#: templates/InvenTree/settings/settings.html:271
+#: templates/InvenTree/settings/settings.html:273
msgid "Edit Template"
msgstr ""
#: templates/InvenTree/settings/settings.html:175
-#: templates/InvenTree/settings/settings.html:272
+#: templates/InvenTree/settings/settings.html:274
msgid "Delete Template"
msgstr ""
-#: templates/InvenTree/settings/settings.html:251
+#: templates/InvenTree/settings/settings.html:253
msgid "No part parameter templates found"
msgstr ""
@@ -6358,6 +6500,7 @@ msgid "Account Settings"
msgstr ""
#: templates/InvenTree/settings/user.html:15
+#: templates/js/translated/helpers.js:26
msgid "Edit"
msgstr ""
@@ -6436,65 +6579,69 @@ msgstr ""
msgid "InvenTree Version"
msgstr ""
-#: templates/about.html:26
+#: templates/about.html:27
+msgid "Development Version"
+msgstr ""
+
+#: templates/about.html:30
msgid "Up to Date"
msgstr ""
-#: templates/about.html:28
+#: templates/about.html:32
msgid "Update Available"
msgstr ""
-#: templates/about.html:34
-msgid "API Version"
-msgstr ""
-
-#: templates/about.html:39
-msgid "Python Version"
-msgstr ""
-
-#: templates/about.html:44
-msgid "Django Version"
-msgstr ""
-
-#: templates/about.html:51
+#: templates/about.html:42
msgid "Commit Hash"
msgstr ""
-#: templates/about.html:58
+#: templates/about.html:49
msgid "Commit Date"
msgstr ""
-#: templates/about.html:63
+#: templates/about.html:55
msgid "InvenTree Documentation"
msgstr ""
-#: templates/about.html:68
+#: templates/about.html:60
+msgid "API Version"
+msgstr ""
+
+#: templates/about.html:65
+msgid "Python Version"
+msgstr ""
+
+#: templates/about.html:70
+msgid "Django Version"
+msgstr ""
+
+#: templates/about.html:75
msgid "View Code on GitHub"
msgstr ""
-#: templates/about.html:73
+#: templates/about.html:80
msgid "Credits"
msgstr ""
-#: templates/about.html:78
+#: templates/about.html:85
msgid "Mobile App"
msgstr ""
-#: templates/about.html:83
+#: templates/about.html:90
msgid "Submit Bug Report"
msgstr ""
-#: templates/about.html:90 templates/clip.html:4
+#: templates/about.html:97 templates/clip.html:4
msgid "copy to clipboard"
msgstr ""
-#: templates/about.html:90
+#: templates/about.html:97
msgid "copy version information"
msgstr ""
-#: templates/about.html:100 templates/js/translated/modals.js:33
-#: templates/js/translated/modals.js:567 templates/js/translated/modals.js:661
-#: templates/js/translated/modals.js:957 templates/modals.html:29
+#: templates/about.html:107 templates/js/translated/modals.js:50
+#: templates/js/translated/modals.js:584 templates/js/translated/modals.js:678
+#: templates/js/translated/modals.js:971 templates/modals.html:29
#: templates/modals.html:54
msgid "Close"
msgstr ""
@@ -6515,1358 +6662,1390 @@ msgstr ""
msgid "Remote image must not exceed maximum allowable file size"
msgstr ""
-#: templates/js/report.js:47 templates/js/translated/report.js:47
+#: templates/js/report.js:47 templates/js/translated/report.js:67
msgid "items selected"
msgstr ""
-#: templates/js/report.js:55 templates/js/translated/report.js:55
+#: templates/js/report.js:55 templates/js/translated/report.js:75
msgid "Select Report Template"
msgstr ""
-#: templates/js/report.js:70 templates/js/translated/report.js:70
+#: templates/js/report.js:70 templates/js/translated/report.js:90
msgid "Select Test Report Template"
msgstr ""
-#: templates/js/report.js:98 templates/js/translated/label.js:10
-#: templates/js/translated/report.js:98 templates/js/translated/stock.js:244
+#: templates/js/report.js:98 templates/js/translated/label.js:29
+#: templates/js/translated/report.js:118 templates/js/translated/stock.js:313
msgid "Select Stock Items"
msgstr ""
-#: templates/js/report.js:99 templates/js/translated/report.js:99
+#: templates/js/report.js:99 templates/js/translated/report.js:119
msgid "Stock item(s) must be selected before printing reports"
msgstr ""
#: templates/js/report.js:116 templates/js/report.js:169
#: templates/js/report.js:223 templates/js/report.js:277
-#: templates/js/report.js:331 templates/js/translated/report.js:116
-#: templates/js/translated/report.js:169 templates/js/translated/report.js:223
-#: templates/js/translated/report.js:277 templates/js/translated/report.js:331
+#: templates/js/report.js:331 templates/js/translated/report.js:136
+#: templates/js/translated/report.js:189 templates/js/translated/report.js:243
+#: templates/js/translated/report.js:297 templates/js/translated/report.js:351
msgid "No Reports Found"
msgstr ""
-#: templates/js/report.js:117 templates/js/translated/report.js:117
+#: templates/js/report.js:117 templates/js/translated/report.js:137
msgid "No report templates found which match selected stock item(s)"
msgstr ""
-#: templates/js/report.js:152 templates/js/translated/report.js:152
+#: templates/js/report.js:152 templates/js/translated/report.js:172
msgid "Select Builds"
msgstr ""
-#: templates/js/report.js:153 templates/js/translated/report.js:153
+#: templates/js/report.js:153 templates/js/translated/report.js:173
msgid "Build(s) must be selected before printing reports"
msgstr ""
-#: templates/js/report.js:170 templates/js/translated/report.js:170
+#: templates/js/report.js:170 templates/js/translated/report.js:190
msgid "No report templates found which match selected build(s)"
msgstr ""
-#: templates/js/report.js:205 templates/js/translated/label.js:115
-#: templates/js/translated/report.js:205
+#: templates/js/report.js:205 templates/js/translated/label.js:134
+#: templates/js/translated/report.js:225
msgid "Select Parts"
msgstr ""
-#: templates/js/report.js:206 templates/js/translated/report.js:206
+#: templates/js/report.js:206 templates/js/translated/report.js:226
msgid "Part(s) must be selected before printing reports"
msgstr ""
-#: templates/js/report.js:224 templates/js/translated/report.js:224
+#: templates/js/report.js:224 templates/js/translated/report.js:244
msgid "No report templates found which match selected part(s)"
msgstr ""
-#: templates/js/report.js:259 templates/js/translated/report.js:259
+#: templates/js/report.js:259 templates/js/translated/report.js:279
msgid "Select Purchase Orders"
msgstr ""
-#: templates/js/report.js:260 templates/js/translated/report.js:260
+#: templates/js/report.js:260 templates/js/translated/report.js:280
msgid "Purchase Order(s) must be selected before printing report"
msgstr ""
#: templates/js/report.js:278 templates/js/report.js:332
-#: templates/js/translated/report.js:278 templates/js/translated/report.js:332
+#: templates/js/translated/report.js:298 templates/js/translated/report.js:352
msgid "No report templates found which match selected orders"
msgstr ""
-#: templates/js/report.js:313 templates/js/translated/report.js:313
+#: templates/js/report.js:313 templates/js/translated/report.js:333
msgid "Select Sales Orders"
msgstr ""
-#: templates/js/report.js:314 templates/js/translated/report.js:314
+#: templates/js/report.js:314 templates/js/translated/report.js:334
msgid "Sales Order(s) must be selected before printing report"
msgstr ""
-#: templates/js/translated/api.js:161 templates/js/translated/modals.js:1027
+#: templates/js/translated/api.js:174 templates/js/translated/modals.js:1041
msgid "No Response"
msgstr ""
-#: templates/js/translated/api.js:162 templates/js/translated/modals.js:1028
+#: templates/js/translated/api.js:175 templates/js/translated/modals.js:1042
msgid "No response from the InvenTree server"
msgstr ""
-#: templates/js/translated/api.js:167
+#: templates/js/translated/api.js:181
msgid "Error 400: Bad request"
msgstr ""
-#: templates/js/translated/api.js:168
+#: templates/js/translated/api.js:182
msgid "API request returned error code 400"
msgstr ""
-#: templates/js/translated/api.js:171 templates/js/translated/modals.js:1037
+#: templates/js/translated/api.js:186 templates/js/translated/modals.js:1051
msgid "Error 401: Not Authenticated"
msgstr ""
-#: templates/js/translated/api.js:172 templates/js/translated/modals.js:1038
+#: templates/js/translated/api.js:187 templates/js/translated/modals.js:1052
msgid "Authentication credentials not supplied"
msgstr ""
-#: templates/js/translated/api.js:175 templates/js/translated/modals.js:1042
+#: templates/js/translated/api.js:191 templates/js/translated/modals.js:1056
msgid "Error 403: Permission Denied"
msgstr ""
-#: templates/js/translated/api.js:176 templates/js/translated/modals.js:1043
+#: templates/js/translated/api.js:192 templates/js/translated/modals.js:1057
msgid "You do not have the required permissions to access this function"
msgstr ""
-#: templates/js/translated/api.js:179 templates/js/translated/modals.js:1047
+#: templates/js/translated/api.js:196 templates/js/translated/modals.js:1061
msgid "Error 404: Resource Not Found"
msgstr ""
-#: templates/js/translated/api.js:180 templates/js/translated/modals.js:1048
+#: templates/js/translated/api.js:197 templates/js/translated/modals.js:1062
msgid "The requested resource could not be located on the server"
msgstr ""
-#: templates/js/translated/api.js:183 templates/js/translated/modals.js:1052
+#: templates/js/translated/api.js:201 templates/js/translated/modals.js:1066
msgid "Error 408: Timeout"
msgstr ""
-#: templates/js/translated/api.js:184 templates/js/translated/modals.js:1053
+#: templates/js/translated/api.js:202 templates/js/translated/modals.js:1067
msgid "Connection timeout while requesting data from server"
msgstr ""
-#: templates/js/translated/api.js:187
+#: templates/js/translated/api.js:205
msgid "Unhandled Error Code"
msgstr ""
-#: templates/js/translated/api.js:188
+#: templates/js/translated/api.js:206
msgid "Error code"
msgstr ""
-#: templates/js/translated/attachment.js:16
+#: templates/js/translated/attachment.js:27
msgid "No attachments found"
msgstr ""
-#: templates/js/translated/attachment.js:56
+#: templates/js/translated/attachment.js:91
msgid "Upload Date"
msgstr ""
-#: templates/js/translated/attachment.js:69
+#: templates/js/translated/attachment.js:104
msgid "Edit attachment"
msgstr ""
-#: templates/js/translated/attachment.js:76
+#: templates/js/translated/attachment.js:111
msgid "Delete attachment"
msgstr ""
-#: templates/js/translated/barcode.js:8
+#: templates/js/translated/barcode.js:30
msgid "Scan barcode data here using wedge scanner"
msgstr ""
-#: templates/js/translated/barcode.js:10
+#: templates/js/translated/barcode.js:32
msgid "Enter barcode data"
msgstr ""
-#: templates/js/translated/barcode.js:14
+#: templates/js/translated/barcode.js:36
msgid "Barcode"
msgstr ""
-#: templates/js/translated/barcode.js:32
+#: templates/js/translated/barcode.js:54
msgid "Enter optional notes for stock transfer"
msgstr ""
-#: templates/js/translated/barcode.js:33
+#: templates/js/translated/barcode.js:55
msgid "Enter notes"
msgstr ""
-#: templates/js/translated/barcode.js:71
+#: templates/js/translated/barcode.js:93
msgid "Server error"
msgstr ""
-#: templates/js/translated/barcode.js:92
+#: templates/js/translated/barcode.js:114
msgid "Unknown response from server"
msgstr ""
-#: templates/js/translated/barcode.js:119
-#: templates/js/translated/modals.js:1017
+#: templates/js/translated/barcode.js:141
+#: templates/js/translated/modals.js:1031
msgid "Invalid server response"
msgstr ""
-#: templates/js/translated/barcode.js:212
+#: templates/js/translated/barcode.js:234
msgid "Scan barcode data below"
msgstr ""
-#: templates/js/translated/barcode.js:270
+#: templates/js/translated/barcode.js:281 templates/navbar.html:65
+msgid "Scan Barcode"
+msgstr ""
+
+#: templates/js/translated/barcode.js:292
msgid "No URL in response"
msgstr ""
-#: templates/js/translated/barcode.js:288
+#: templates/js/translated/barcode.js:310
msgid "Link Barcode to Stock Item"
msgstr ""
-#: templates/js/translated/barcode.js:311
+#: templates/js/translated/barcode.js:333
msgid "This will remove the association between this stock item and the barcode"
msgstr ""
-#: templates/js/translated/barcode.js:317
+#: templates/js/translated/barcode.js:339
msgid "Unlink"
msgstr ""
-#: templates/js/translated/barcode.js:376 templates/js/translated/stock.js:220
+#: templates/js/translated/barcode.js:398 templates/js/translated/stock.js:289
msgid "Remove stock item"
msgstr ""
-#: templates/js/translated/barcode.js:418
+#: templates/js/translated/barcode.js:440
msgid "Check Stock Items into Location"
msgstr ""
-#: templates/js/translated/barcode.js:422
-#: templates/js/translated/barcode.js:547
+#: templates/js/translated/barcode.js:444
+#: templates/js/translated/barcode.js:571
msgid "Check In"
msgstr ""
-#: templates/js/translated/barcode.js:462
-#: templates/js/translated/barcode.js:586
+#: templates/js/translated/barcode.js:486
+#: templates/js/translated/barcode.js:610
msgid "Error transferring stock"
msgstr ""
-#: templates/js/translated/barcode.js:481
+#: templates/js/translated/barcode.js:505
msgid "Stock Item already scanned"
msgstr ""
-#: templates/js/translated/barcode.js:485
+#: templates/js/translated/barcode.js:509
msgid "Stock Item already in this location"
msgstr ""
-#: templates/js/translated/barcode.js:492
+#: templates/js/translated/barcode.js:516
msgid "Added stock item"
msgstr ""
-#: templates/js/translated/barcode.js:499
+#: templates/js/translated/barcode.js:523
msgid "Barcode does not match Stock Item"
msgstr ""
-#: templates/js/translated/barcode.js:542
+#: templates/js/translated/barcode.js:566
msgid "Check Into Location"
msgstr ""
-#: templates/js/translated/barcode.js:605
+#: templates/js/translated/barcode.js:629
msgid "Barcode does not match a valid location"
msgstr ""
-#: templates/js/translated/bom.js:195 templates/js/translated/build.js:1152
+#: templates/js/translated/bom.js:215 templates/js/translated/build.js:1169
msgid "Open subassembly"
msgstr ""
-#: templates/js/translated/bom.js:269
+#: templates/js/translated/bom.js:287
msgid "Purchase Price Range"
msgstr ""
-#: templates/js/translated/bom.js:277
+#: templates/js/translated/bom.js:294
msgid "Purchase Price Average"
msgstr ""
-#: templates/js/translated/bom.js:326 templates/js/translated/bom.js:412
+#: templates/js/translated/bom.js:342 templates/js/translated/bom.js:428
msgid "View BOM"
msgstr ""
-#: templates/js/translated/bom.js:386
+#: templates/js/translated/bom.js:402
msgid "Validate BOM Item"
msgstr ""
-#: templates/js/translated/bom.js:388
+#: templates/js/translated/bom.js:404
msgid "This line has been validated"
msgstr ""
-#: templates/js/translated/bom.js:390 templates/js/translated/bom.js:555
+#: templates/js/translated/bom.js:406 templates/js/translated/bom.js:569
msgid "Edit BOM Item"
msgstr ""
-#: templates/js/translated/bom.js:392 templates/js/translated/bom.js:539
+#: templates/js/translated/bom.js:408 templates/js/translated/bom.js:554
msgid "Delete BOM Item"
msgstr ""
-#: templates/js/translated/bom.js:483 templates/js/translated/build.js:458
-#: templates/js/translated/build.js:1250
+#: templates/js/translated/bom.js:499 templates/js/translated/build.js:483
+#: templates/js/translated/build.js:1267
msgid "No BOM items found"
msgstr ""
-#: templates/js/translated/build.js:42
+#: templates/js/translated/build.js:69
msgid "Edit Build Order"
msgstr ""
-#: templates/js/translated/build.js:68
+#: templates/js/translated/build.js:95
msgid "Create Build Order"
msgstr ""
-#: templates/js/translated/build.js:100
+#: templates/js/translated/build.js:127
msgid "Auto-allocate stock items to this output"
msgstr ""
-#: templates/js/translated/build.js:108
+#: templates/js/translated/build.js:135
msgid "Unallocate stock from build output"
msgstr ""
-#: templates/js/translated/build.js:118
+#: templates/js/translated/build.js:145
msgid "Complete build output"
msgstr ""
-#: templates/js/translated/build.js:127
+#: templates/js/translated/build.js:154
msgid "Delete build output"
msgstr ""
-#: templates/js/translated/build.js:222
+#: templates/js/translated/build.js:249
msgid "No build order allocations found"
msgstr ""
-#: templates/js/translated/build.js:260 templates/js/translated/order.js:471
+#: templates/js/translated/build.js:287 templates/js/translated/order.js:813
msgid "Location not specified"
msgstr ""
-#: templates/js/translated/build.js:364 templates/stock_table.html:20
+#: templates/js/translated/build.js:391 templates/stock_table.html:20
msgid "New Stock Item"
msgstr ""
-#: templates/js/translated/build.js:679
+#: templates/js/translated/build.js:702
msgid "Required Part"
msgstr ""
-#: templates/js/translated/build.js:700
+#: templates/js/translated/build.js:723
msgid "Quantity Per"
msgstr ""
-#: templates/js/translated/build.js:770 templates/js/translated/build.js:1214
+#: templates/js/translated/build.js:793 templates/js/translated/build.js:1231
#: templates/stock_table.html:59
msgid "Order stock"
msgstr ""
-#: templates/js/translated/build.js:823
+#: templates/js/translated/build.js:846
msgid "No builds matching query"
msgstr ""
-#: templates/js/translated/build.js:840 templates/js/translated/part.js:711
-#: templates/js/translated/part.js:956 templates/js/translated/stock.js:883
-#: templates/js/translated/stock.js:1336
+#: templates/js/translated/build.js:863 templates/js/translated/part.js:845
+#: templates/js/translated/part.js:1123 templates/js/translated/stock.js:783
+#: templates/js/translated/stock.js:1477
msgid "Select"
msgstr ""
-#: templates/js/translated/build.js:860
+#: templates/js/translated/build.js:883
msgid "Build order is overdue"
msgstr ""
-#: templates/js/translated/build.js:924 templates/js/translated/stock.js:1558
+#: templates/js/translated/build.js:944 templates/js/translated/stock.js:1696
msgid "No user information"
msgstr ""
-#: templates/js/translated/build.js:939
+#: templates/js/translated/build.js:956
msgid "No information"
msgstr ""
-#: templates/js/translated/build.js:989
+#: templates/js/translated/build.js:1007
msgid "No parts allocated for"
msgstr ""
-#: templates/js/translated/company.js:34
+#: templates/js/translated/company.js:65
msgid "Add Manufacturer"
msgstr ""
-#: templates/js/translated/company.js:47 templates/js/translated/company.js:136
+#: templates/js/translated/company.js:78 templates/js/translated/company.js:176
msgid "Add Manufacturer Part"
msgstr ""
-#: templates/js/translated/company.js:59
+#: templates/js/translated/company.js:99
msgid "Edit Manufacturer Part"
msgstr ""
-#: templates/js/translated/company.js:68
+#: templates/js/translated/company.js:108
msgid "Delete Manufacturer Part"
msgstr ""
-#: templates/js/translated/company.js:124 templates/js/translated/order.js:58
+#: templates/js/translated/company.js:164 templates/js/translated/order.js:86
msgid "Add Supplier"
msgstr ""
-#: templates/js/translated/company.js:152
+#: templates/js/translated/company.js:192
msgid "Add Supplier Part"
msgstr ""
-#: templates/js/translated/company.js:162
+#: templates/js/translated/company.js:207
msgid "Edit Supplier Part"
msgstr ""
-#: templates/js/translated/company.js:172
+#: templates/js/translated/company.js:217
msgid "Delete Supplier Part"
msgstr ""
-#: templates/js/translated/company.js:219
+#: templates/js/translated/company.js:264
msgid "Edit Company"
msgstr ""
-#: templates/js/translated/company.js:240
+#: templates/js/translated/company.js:285
msgid "Add new Company"
msgstr ""
-#: templates/js/translated/company.js:317
+#: templates/js/translated/company.js:362
msgid "Parts Supplied"
msgstr ""
-#: templates/js/translated/company.js:326
+#: templates/js/translated/company.js:371
msgid "Parts Manufactured"
msgstr ""
-#: templates/js/translated/company.js:339
+#: templates/js/translated/company.js:385
msgid "No company information found"
msgstr ""
-#: templates/js/translated/company.js:357
+#: templates/js/translated/company.js:404
msgid "The following manufacturer parts will be deleted"
msgstr ""
-#: templates/js/translated/company.js:374
+#: templates/js/translated/company.js:421
msgid "Delete Manufacturer Parts"
msgstr ""
-#: templates/js/translated/company.js:427
+#: templates/js/translated/company.js:475
msgid "No manufacturer parts found"
msgstr ""
-#: templates/js/translated/company.js:446
-#: templates/js/translated/company.js:696 templates/js/translated/part.js:288
-#: templates/js/translated/part.js:373
+#: templates/js/translated/company.js:495
+#: templates/js/translated/company.js:751 templates/js/translated/part.js:416
+#: templates/js/translated/part.js:501
msgid "Template part"
msgstr ""
-#: templates/js/translated/company.js:450
-#: templates/js/translated/company.js:700 templates/js/translated/part.js:292
-#: templates/js/translated/part.js:377
+#: templates/js/translated/company.js:499
+#: templates/js/translated/company.js:755 templates/js/translated/part.js:420
+#: templates/js/translated/part.js:505
msgid "Assembled part"
msgstr ""
-#: templates/js/translated/company.js:574 templates/js/translated/part.js:462
+#: templates/js/translated/company.js:626 templates/js/translated/part.js:593
msgid "No parameters found"
msgstr ""
-#: templates/js/translated/company.js:610 templates/js/translated/part.js:503
+#: templates/js/translated/company.js:663 templates/js/translated/part.js:635
msgid "Edit parameter"
msgstr ""
-#: templates/js/translated/company.js:611 templates/js/translated/part.js:504
+#: templates/js/translated/company.js:664 templates/js/translated/part.js:636
msgid "Delete parameter"
msgstr ""
-#: templates/js/translated/company.js:630 templates/js/translated/part.js:521
+#: templates/js/translated/company.js:683 templates/js/translated/part.js:653
msgid "Edit Parameter"
msgstr ""
-#: templates/js/translated/company.js:641 templates/js/translated/part.js:533
+#: templates/js/translated/company.js:694 templates/js/translated/part.js:665
msgid "Delete Parameter"
msgstr ""
-#: templates/js/translated/company.js:677
+#: templates/js/translated/company.js:731
msgid "No supplier parts found"
msgstr ""
-#: templates/js/translated/filters.js:167
-#: templates/js/translated/filters.js:404
+#: templates/js/translated/filters.js:178
+#: templates/js/translated/filters.js:402
msgid "true"
msgstr ""
-#: templates/js/translated/filters.js:171
-#: templates/js/translated/filters.js:405
+#: templates/js/translated/filters.js:182
+#: templates/js/translated/filters.js:403
msgid "false"
msgstr ""
-#: templates/js/translated/filters.js:193
+#: templates/js/translated/filters.js:204
msgid "Select filter"
msgstr ""
-#: templates/js/translated/filters.js:268
+#: templates/js/translated/filters.js:279
msgid "Reload data"
msgstr ""
-#: templates/js/translated/filters.js:270
+#: templates/js/translated/filters.js:281
msgid "Add new filter"
msgstr ""
-#: templates/js/translated/filters.js:273
+#: templates/js/translated/filters.js:284
msgid "Clear all filters"
msgstr ""
-#: templates/js/translated/filters.js:303
+#: templates/js/translated/filters.js:312
msgid "Create filter"
msgstr ""
-#: templates/js/translated/forms.js:289 templates/js/translated/forms.js:302
-#: templates/js/translated/forms.js:314 templates/js/translated/forms.js:326
+#: templates/js/translated/forms.js:323 templates/js/translated/forms.js:336
+#: templates/js/translated/forms.js:348 templates/js/translated/forms.js:360
msgid "Action Prohibited"
msgstr ""
-#: templates/js/translated/forms.js:290
+#: templates/js/translated/forms.js:324
msgid "Create operation not allowed"
msgstr ""
-#: templates/js/translated/forms.js:303
+#: templates/js/translated/forms.js:337
msgid "Update operation not allowed"
msgstr ""
-#: templates/js/translated/forms.js:315
+#: templates/js/translated/forms.js:349
msgid "Delete operation not allowed"
msgstr ""
-#: templates/js/translated/forms.js:327
+#: templates/js/translated/forms.js:361
msgid "View operation not allowed"
msgstr ""
-#: templates/js/translated/forms.js:865 templates/modals.html:21
+#: templates/js/translated/forms.js:889 templates/modals.html:21
#: templates/modals.html:47
msgid "Form errors exist"
msgstr ""
-#: templates/js/translated/forms.js:1258
+#: templates/js/translated/forms.js:1379
msgid "Searching"
msgstr ""
-#: templates/js/translated/forms.js:1423
+#: templates/js/translated/forms.js:1593
msgid "Clear input"
msgstr ""
-#: templates/js/translated/label.js:11
-msgid "Stock item(s) must be selected before printing labels"
+#: templates/js/translated/helpers.js:19
+msgid "YES"
msgstr ""
-#: templates/js/translated/label.js:29 templates/js/translated/label.js:79
-#: templates/js/translated/label.js:134
-msgid "No Labels Found"
+#: templates/js/translated/helpers.js:21
+msgid "NO"
msgstr ""
#: templates/js/translated/label.js:30
+msgid "Stock item(s) must be selected before printing labels"
+msgstr ""
+
+#: templates/js/translated/label.js:48 templates/js/translated/label.js:98
+#: templates/js/translated/label.js:153
+msgid "No Labels Found"
+msgstr ""
+
+#: templates/js/translated/label.js:49
msgid "No labels found which match selected stock item(s)"
msgstr ""
-#: templates/js/translated/label.js:61
+#: templates/js/translated/label.js:80
msgid "Select Stock Locations"
msgstr ""
-#: templates/js/translated/label.js:62
+#: templates/js/translated/label.js:81
msgid "Stock location(s) must be selected before printing labels"
msgstr ""
-#: templates/js/translated/label.js:80
+#: templates/js/translated/label.js:99
msgid "No labels found which match selected stock location(s)"
msgstr ""
-#: templates/js/translated/label.js:116
+#: templates/js/translated/label.js:135
msgid "Part(s) must be selected before printing labels"
msgstr ""
-#: templates/js/translated/label.js:135
+#: templates/js/translated/label.js:154
msgid "No labels found which match the selected part(s)"
msgstr ""
-#: templates/js/translated/label.js:209
+#: templates/js/translated/label.js:228
msgid "stock items selected"
msgstr ""
-#: templates/js/translated/label.js:217
+#: templates/js/translated/label.js:236
msgid "Select Label"
msgstr ""
-#: templates/js/translated/label.js:232
+#: templates/js/translated/label.js:251
msgid "Select Label Template"
msgstr ""
-#: templates/js/translated/modals.js:59 templates/js/translated/modals.js:103
-#: templates/js/translated/modals.js:593
+#: templates/js/translated/modals.js:76 templates/js/translated/modals.js:120
+#: templates/js/translated/modals.js:610
msgid "Cancel"
msgstr ""
-#: templates/js/translated/modals.js:60 templates/js/translated/modals.js:102
-#: templates/js/translated/modals.js:660 templates/js/translated/modals.js:956
+#: templates/js/translated/modals.js:77 templates/js/translated/modals.js:119
+#: templates/js/translated/modals.js:677 templates/js/translated/modals.js:970
#: templates/modals.html:30 templates/modals.html:55
msgid "Submit"
msgstr ""
-#: templates/js/translated/modals.js:101
+#: templates/js/translated/modals.js:118
msgid "Form Title"
msgstr ""
-#: templates/js/translated/modals.js:380
+#: templates/js/translated/modals.js:397
msgid "Waiting for server..."
msgstr ""
-#: templates/js/translated/modals.js:539
+#: templates/js/translated/modals.js:556
msgid "Show Error Information"
msgstr ""
-#: templates/js/translated/modals.js:592
+#: templates/js/translated/modals.js:609
msgid "Accept"
msgstr ""
-#: templates/js/translated/modals.js:649
+#: templates/js/translated/modals.js:666
msgid "Loading Data"
msgstr ""
-#: templates/js/translated/modals.js:907
+#: templates/js/translated/modals.js:922
msgid "Invalid response from server"
msgstr ""
-#: templates/js/translated/modals.js:907
+#: templates/js/translated/modals.js:922
msgid "Form data missing from server response"
msgstr ""
-#: templates/js/translated/modals.js:920
+#: templates/js/translated/modals.js:934
msgid "Error posting form data"
msgstr ""
-#: templates/js/translated/modals.js:1017
+#: templates/js/translated/modals.js:1031
msgid "JSON response missing form data"
msgstr ""
-#: templates/js/translated/modals.js:1032
+#: templates/js/translated/modals.js:1046
msgid "Error 400: Bad Request"
msgstr ""
-#: templates/js/translated/modals.js:1033
+#: templates/js/translated/modals.js:1047
msgid "Server returned error code 400"
msgstr ""
-#: templates/js/translated/modals.js:1056
+#: templates/js/translated/modals.js:1070
msgid "Error requesting form data"
msgstr ""
-#: templates/js/translated/model_renderers.js:38
+#: templates/js/translated/model_renderers.js:40
msgid "Company ID"
msgstr ""
-#: templates/js/translated/model_renderers.js:78
+#: templates/js/translated/model_renderers.js:82
msgid "Location ID"
msgstr ""
-#: templates/js/translated/model_renderers.js:95
+#: templates/js/translated/model_renderers.js:99
msgid "Build ID"
msgstr ""
-#: templates/js/translated/model_renderers.js:114
+#: templates/js/translated/model_renderers.js:119
msgid "Part ID"
msgstr ""
-#: templates/js/translated/model_renderers.js:163
+#: templates/js/translated/model_renderers.js:171
msgid "Category ID"
msgstr ""
-#: templates/js/translated/model_renderers.js:199
+#: templates/js/translated/model_renderers.js:208
msgid "Manufacturer Part ID"
msgstr ""
-#: templates/js/translated/model_renderers.js:227
+#: templates/js/translated/model_renderers.js:237
msgid "Supplier Part ID"
msgstr ""
-#: templates/js/translated/order.js:17
+#: templates/js/translated/order.js:45
msgid "Add Customer"
msgstr ""
-#: templates/js/translated/order.js:42
+#: templates/js/translated/order.js:70
msgid "Create Sales Order"
msgstr ""
-#: templates/js/translated/order.js:222
+#: templates/js/translated/order.js:295
msgid "No purchase orders found"
msgstr ""
-#: templates/js/translated/order.js:246 templates/js/translated/order.js:341
+#: templates/js/translated/order.js:320 templates/js/translated/order.js:682
msgid "Order is overdue"
msgstr ""
-#: templates/js/translated/order.js:318
+#: templates/js/translated/order.js:452
+msgid "No line items found"
+msgstr ""
+
+#: templates/js/translated/order.js:617
+msgid "Delete line item"
+msgstr ""
+
+#: templates/js/translated/order.js:621
+msgid "Receive line item"
+msgstr ""
+
+#: templates/js/translated/order.js:658
msgid "No sales orders found"
msgstr ""
-#: templates/js/translated/order.js:355
+#: templates/js/translated/order.js:696
msgid "Invalid Customer"
msgstr ""
-#: templates/js/translated/order.js:432
+#: templates/js/translated/order.js:774
msgid "No sales order allocations found"
msgstr ""
-#: templates/js/translated/part.js:10
-msgid "YES"
-msgstr ""
-
-#: templates/js/translated/part.js:12
-msgid "NO"
-msgstr ""
-
-#: templates/js/translated/part.js:22
-msgid "Add Part Category"
-msgstr ""
-
-#: templates/js/translated/part.js:53
+#: templates/js/translated/part.js:49
msgid "Part Attributes"
msgstr ""
-#: templates/js/translated/part.js:96
+#: templates/js/translated/part.js:53
msgid "Part Creation Options"
msgstr ""
-#: templates/js/translated/part.js:102
-msgid "Initial Stock Quantity"
-msgstr ""
-
-#: templates/js/translated/part.js:103
-msgid "Initialize part stock with specified quantity"
-msgstr ""
-
-#: templates/js/translated/part.js:109
-msgid "Copy Category Parameters"
-msgstr ""
-
-#: templates/js/translated/part.js:110
-msgid "Copy parameter templates from selected part category"
-msgstr ""
-
-#: templates/js/translated/part.js:120
+#: templates/js/translated/part.js:57
msgid "Part Duplication Options"
msgstr ""
-#: templates/js/translated/part.js:131
-msgid "Copy Image"
+#: templates/js/translated/part.js:61
+msgid "Supplier Options"
msgstr ""
-#: templates/js/translated/part.js:132
-msgid "Copy image from original part"
+#: templates/js/translated/part.js:75
+msgid "Add Part Category"
msgstr ""
-#: templates/js/translated/part.js:138
-msgid "Copy BOM"
+#: templates/js/translated/part.js:159
+msgid "Create Initial Stock"
msgstr ""
-#: templates/js/translated/part.js:139
-msgid "Copy bill of materials from original part"
+#: templates/js/translated/part.js:160
+msgid "Create an initial stock item for this part"
msgstr ""
-#: templates/js/translated/part.js:145
-msgid "Copy Parameters"
+#: templates/js/translated/part.js:167
+msgid "Initial Stock Quantity"
msgstr ""
-#: templates/js/translated/part.js:146
-msgid "Copy parameter data from original part"
+#: templates/js/translated/part.js:168
+msgid "Specify initial stock quantity for this part"
msgstr ""
-#: templates/js/translated/part.js:158
-msgid "Parent part category"
+#: templates/js/translated/part.js:175 templates/js/translated/stock.js:330
+msgid "Select destination stock location"
+msgstr ""
+
+#: templates/js/translated/part.js:186
+msgid "Copy Category Parameters"
+msgstr ""
+
+#: templates/js/translated/part.js:187
+msgid "Copy parameter templates from selected part category"
+msgstr ""
+
+#: templates/js/translated/part.js:195
+msgid "Add Supplier Data"
msgstr ""
#: templates/js/translated/part.js:196
+msgid "Create initial supplier data for this part"
+msgstr ""
+
+#: templates/js/translated/part.js:252
+msgid "Copy Image"
+msgstr ""
+
+#: templates/js/translated/part.js:253
+msgid "Copy image from original part"
+msgstr ""
+
+#: templates/js/translated/part.js:260
+msgid "Copy BOM"
+msgstr ""
+
+#: templates/js/translated/part.js:261
+msgid "Copy bill of materials from original part"
+msgstr ""
+
+#: templates/js/translated/part.js:268
+msgid "Copy Parameters"
+msgstr ""
+
+#: templates/js/translated/part.js:269
+msgid "Copy parameter data from original part"
+msgstr ""
+
+#: templates/js/translated/part.js:282
+msgid "Parent part category"
+msgstr ""
+
+#: templates/js/translated/part.js:323
msgid "Edit Part"
msgstr ""
-#: templates/js/translated/part.js:280 templates/js/translated/part.js:365
+#: templates/js/translated/part.js:408 templates/js/translated/part.js:493
msgid "Trackable part"
msgstr ""
-#: templates/js/translated/part.js:284 templates/js/translated/part.js:369
+#: templates/js/translated/part.js:412 templates/js/translated/part.js:497
msgid "Virtual part"
msgstr ""
-#: templates/js/translated/part.js:296
+#: templates/js/translated/part.js:424
msgid "Starred part"
msgstr ""
-#: templates/js/translated/part.js:300
+#: templates/js/translated/part.js:428
msgid "Salable part"
msgstr ""
-#: templates/js/translated/part.js:414
+#: templates/js/translated/part.js:543
msgid "No variants found"
msgstr ""
-#: templates/js/translated/part.js:601 templates/js/translated/part.js:840
+#: templates/js/translated/part.js:732 templates/js/translated/part.js:994
msgid "No parts found"
msgstr ""
-#: templates/js/translated/part.js:779
+#: templates/js/translated/part.js:921
msgid "No category"
msgstr ""
-#: templates/js/translated/part.js:797
-#: templates/js/translated/table_filters.js:337
+#: templates/js/translated/part.js:944
+#: templates/js/translated/table_filters.js:350
msgid "Low stock"
msgstr ""
-#: templates/js/translated/part.js:981 templates/js/translated/stock.js:1360
+#: templates/js/translated/part.js:1148 templates/js/translated/stock.js:1501
msgid "Path"
msgstr ""
-#: templates/js/translated/part.js:1024
+#: templates/js/translated/part.js:1191
msgid "No test templates matching query"
msgstr ""
-#: templates/js/translated/part.js:1075 templates/js/translated/stock.js:443
+#: templates/js/translated/part.js:1242 templates/js/translated/stock.js:514
msgid "Edit test result"
msgstr ""
-#: templates/js/translated/part.js:1076 templates/js/translated/stock.js:444
+#: templates/js/translated/part.js:1243 templates/js/translated/stock.js:515
msgid "Delete test result"
msgstr ""
-#: templates/js/translated/part.js:1082
+#: templates/js/translated/part.js:1249
msgid "This test is defined for a parent part"
msgstr ""
-#: templates/js/translated/part.js:1107
+#: templates/js/translated/part.js:1274
#, python-brace-format
msgid "No ${human_name} information found"
msgstr ""
-#: templates/js/translated/part.js:1160
+#: templates/js/translated/part.js:1329
#, python-brace-format
msgid "Edit ${human_name}"
msgstr ""
-#: templates/js/translated/part.js:1161
+#: templates/js/translated/part.js:1330
#, python-brace-format
msgid "Delete ${human_name}"
msgstr ""
-#: templates/js/translated/part.js:1261
+#: templates/js/translated/part.js:1431
msgid "Single Price"
msgstr ""
-#: templates/js/translated/part.js:1280
+#: templates/js/translated/part.js:1450
msgid "Single Price Difference"
msgstr ""
-#: templates/js/translated/stock.js:9
+#: templates/js/translated/stock.js:66
msgid "Parent stock location"
msgstr ""
-#: templates/js/translated/stock.js:39
+#: templates/js/translated/stock.js:96
msgid "Export Stock"
msgstr ""
-#: templates/js/translated/stock.js:42
+#: templates/js/translated/stock.js:99
msgid "Format"
msgstr ""
-#: templates/js/translated/stock.js:43
+#: templates/js/translated/stock.js:100
msgid "Select file format"
msgstr ""
-#: templates/js/translated/stock.js:55
+#: templates/js/translated/stock.js:124
msgid "Include Sublocations"
msgstr ""
-#: templates/js/translated/stock.js:56
+#: templates/js/translated/stock.js:125
msgid "Include stock items in sublocations"
msgstr ""
-#: templates/js/translated/stock.js:98
+#: templates/js/translated/stock.js:167
msgid "Transfer Stock"
msgstr ""
-#: templates/js/translated/stock.js:99
+#: templates/js/translated/stock.js:168
msgid "Move"
msgstr ""
-#: templates/js/translated/stock.js:105
+#: templates/js/translated/stock.js:174
msgid "Count Stock"
msgstr ""
-#: templates/js/translated/stock.js:106
+#: templates/js/translated/stock.js:175
msgid "Count"
msgstr ""
-#: templates/js/translated/stock.js:110
+#: templates/js/translated/stock.js:179
msgid "Remove Stock"
msgstr ""
-#: templates/js/translated/stock.js:111
+#: templates/js/translated/stock.js:180
msgid "Take"
msgstr ""
-#: templates/js/translated/stock.js:115
+#: templates/js/translated/stock.js:184
msgid "Add Stock"
msgstr ""
-#: templates/js/translated/stock.js:116 users/models.py:190
+#: templates/js/translated/stock.js:185 users/models.py:190
msgid "Add"
msgstr ""
-#: templates/js/translated/stock.js:120 templates/stock_table.html:63
+#: templates/js/translated/stock.js:189 templates/stock_table.html:63
msgid "Delete Stock"
msgstr ""
-#: templates/js/translated/stock.js:209
+#: templates/js/translated/stock.js:278
msgid "Quantity cannot be adjusted for serialized stock"
msgstr ""
-#: templates/js/translated/stock.js:209
+#: templates/js/translated/stock.js:278
msgid "Specify stock quantity"
msgstr ""
-#: templates/js/translated/stock.js:245
+#: templates/js/translated/stock.js:314
msgid "You must select at least one available stock item"
msgstr ""
-#: templates/js/translated/stock.js:261
-msgid "Select destination stock location"
-msgstr ""
-
-#: templates/js/translated/stock.js:269
+#: templates/js/translated/stock.js:339
msgid "Stock transaction notes"
msgstr ""
-#: templates/js/translated/stock.js:406
+#: templates/js/translated/stock.js:477
msgid "PASS"
msgstr ""
-#: templates/js/translated/stock.js:408
+#: templates/js/translated/stock.js:479
msgid "FAIL"
msgstr ""
-#: templates/js/translated/stock.js:413
+#: templates/js/translated/stock.js:484
msgid "NO RESULT"
msgstr ""
-#: templates/js/translated/stock.js:439
+#: templates/js/translated/stock.js:510
msgid "Add test result"
msgstr ""
-#: templates/js/translated/stock.js:465
+#: templates/js/translated/stock.js:536
msgid "No test results found"
msgstr ""
-#: templates/js/translated/stock.js:513
+#: templates/js/translated/stock.js:584
msgid "Test Date"
msgstr ""
-#: templates/js/translated/stock.js:621
+#: templates/js/translated/stock.js:691
msgid "In production"
msgstr ""
-#: templates/js/translated/stock.js:625
+#: templates/js/translated/stock.js:695
msgid "Installed in Stock Item"
msgstr ""
-#: templates/js/translated/stock.js:633
+#: templates/js/translated/stock.js:703
msgid "Assigned to Sales Order"
msgstr ""
-#: templates/js/translated/stock.js:709
-msgid "No stock items matching query"
-msgstr ""
-
-#: templates/js/translated/stock.js:729
-msgid "items"
-msgstr ""
-
-#: templates/js/translated/stock.js:821
-msgid "batches"
-msgstr ""
-
-#: templates/js/translated/stock.js:848
-msgid "locations"
-msgstr ""
-
-#: templates/js/translated/stock.js:850
-msgid "Undefined location"
-msgstr ""
-
-#: templates/js/translated/stock.js:951
+#: templates/js/translated/stock.js:865
msgid "Stock item is in production"
msgstr ""
-#: templates/js/translated/stock.js:956
+#: templates/js/translated/stock.js:870
msgid "Stock item assigned to sales order"
msgstr ""
-#: templates/js/translated/stock.js:959
+#: templates/js/translated/stock.js:873
msgid "Stock item assigned to customer"
msgstr ""
-#: templates/js/translated/stock.js:963
+#: templates/js/translated/stock.js:877
msgid "Stock item has expired"
msgstr ""
-#: templates/js/translated/stock.js:965
+#: templates/js/translated/stock.js:879
msgid "Stock item will expire soon"
msgstr ""
-#: templates/js/translated/stock.js:969
+#: templates/js/translated/stock.js:883
msgid "Stock item has been allocated"
msgstr ""
-#: templates/js/translated/stock.js:973
+#: templates/js/translated/stock.js:887
msgid "Stock item has been installed in another item"
msgstr ""
-#: templates/js/translated/stock.js:980
+#: templates/js/translated/stock.js:894
msgid "Stock item has been rejected"
msgstr ""
-#: templates/js/translated/stock.js:984
+#: templates/js/translated/stock.js:896
msgid "Stock item is lost"
msgstr ""
-#: templates/js/translated/stock.js:987
+#: templates/js/translated/stock.js:898
msgid "Stock item is destroyed"
msgstr ""
-#: templates/js/translated/stock.js:991
-#: templates/js/translated/table_filters.js:148
+#: templates/js/translated/stock.js:902
+#: templates/js/translated/table_filters.js:161
msgid "Depleted"
msgstr ""
-#: templates/js/translated/stock.js:1020
+#: templates/js/translated/stock.js:956
msgid "Stocktake"
msgstr ""
-#: templates/js/translated/stock.js:1073
+#: templates/js/translated/stock.js:1029
msgid "Supplier part not specified"
msgstr ""
-#: templates/js/translated/stock.js:1223
+#: templates/js/translated/stock.js:1067
+msgid "No stock items matching query"
+msgstr ""
+
+#: templates/js/translated/stock.js:1088 templates/js/translated/stock.js:1136
+msgid "items"
+msgstr ""
+
+#: templates/js/translated/stock.js:1176
+msgid "batches"
+msgstr ""
+
+#: templates/js/translated/stock.js:1203
+msgid "locations"
+msgstr ""
+
+#: templates/js/translated/stock.js:1205
+msgid "Undefined location"
+msgstr ""
+
+#: templates/js/translated/stock.js:1364
msgid "Stock Status"
msgstr ""
-#: templates/js/translated/stock.js:1238
+#: templates/js/translated/stock.js:1379
msgid "Set Stock Status"
msgstr ""
-#: templates/js/translated/stock.js:1252
+#: templates/js/translated/stock.js:1393
msgid "Select Status Code"
msgstr ""
-#: templates/js/translated/stock.js:1253
+#: templates/js/translated/stock.js:1394
msgid "Status code must be selected"
msgstr ""
-#: templates/js/translated/stock.js:1392
+#: templates/js/translated/stock.js:1533
msgid "Invalid date"
msgstr ""
-#: templates/js/translated/stock.js:1439
+#: templates/js/translated/stock.js:1580
msgid "Location no longer exists"
msgstr ""
-#: templates/js/translated/stock.js:1458
+#: templates/js/translated/stock.js:1599
msgid "Purchase order no longer exists"
msgstr ""
-#: templates/js/translated/stock.js:1477
+#: templates/js/translated/stock.js:1618
msgid "Customer no longer exists"
msgstr ""
-#: templates/js/translated/stock.js:1495
+#: templates/js/translated/stock.js:1636
msgid "Stock item no longer exists"
msgstr ""
-#: templates/js/translated/stock.js:1518
+#: templates/js/translated/stock.js:1659
msgid "Added"
msgstr ""
-#: templates/js/translated/stock.js:1526
+#: templates/js/translated/stock.js:1667
msgid "Removed"
msgstr ""
-#: templates/js/translated/stock.js:1570
+#: templates/js/translated/stock.js:1708
msgid "Edit tracking entry"
msgstr ""
-#: templates/js/translated/stock.js:1571
+#: templates/js/translated/stock.js:1709
msgid "Delete tracking entry"
msgstr ""
-#: templates/js/translated/stock.js:1715
+#: templates/js/translated/stock.js:1833
msgid "No installed items"
msgstr ""
-#: templates/js/translated/stock.js:1738
+#: templates/js/translated/stock.js:1856
msgid "Serial"
msgstr ""
-#: templates/js/translated/stock.js:1766
+#: templates/js/translated/stock.js:1884
msgid "Uninstall Stock Item"
msgstr ""
-#: templates/js/translated/table_filters.js:43
+#: templates/js/translated/table_filters.js:56
msgid "Trackable Part"
msgstr ""
-#: templates/js/translated/table_filters.js:47
+#: templates/js/translated/table_filters.js:60
msgid "Assembled Part"
msgstr ""
-#: templates/js/translated/table_filters.js:51
+#: templates/js/translated/table_filters.js:64
msgid "Validated"
msgstr ""
-#: templates/js/translated/table_filters.js:59
+#: templates/js/translated/table_filters.js:72
msgid "Allow Variant Stock"
msgstr ""
-#: templates/js/translated/table_filters.js:79
-#: templates/js/translated/table_filters.js:143
+#: templates/js/translated/table_filters.js:92
+#: templates/js/translated/table_filters.js:156
msgid "Include sublocations"
msgstr ""
-#: templates/js/translated/table_filters.js:80
+#: templates/js/translated/table_filters.js:93
msgid "Include locations"
msgstr ""
-#: templates/js/translated/table_filters.js:90
-#: templates/js/translated/table_filters.js:91
-#: templates/js/translated/table_filters.js:314
+#: templates/js/translated/table_filters.js:103
+#: templates/js/translated/table_filters.js:104
+#: templates/js/translated/table_filters.js:327
msgid "Include subcategories"
msgstr ""
-#: templates/js/translated/table_filters.js:101
-#: templates/js/translated/table_filters.js:178
+#: templates/js/translated/table_filters.js:114
+#: templates/js/translated/table_filters.js:191
msgid "Is Serialized"
msgstr ""
-#: templates/js/translated/table_filters.js:104
-#: templates/js/translated/table_filters.js:185
+#: templates/js/translated/table_filters.js:117
+#: templates/js/translated/table_filters.js:198
msgid "Serial number GTE"
msgstr ""
-#: templates/js/translated/table_filters.js:105
-#: templates/js/translated/table_filters.js:186
+#: templates/js/translated/table_filters.js:118
+#: templates/js/translated/table_filters.js:199
msgid "Serial number greater than or equal to"
msgstr ""
-#: templates/js/translated/table_filters.js:108
-#: templates/js/translated/table_filters.js:189
+#: templates/js/translated/table_filters.js:121
+#: templates/js/translated/table_filters.js:202
msgid "Serial number LTE"
msgstr ""
-#: templates/js/translated/table_filters.js:109
-#: templates/js/translated/table_filters.js:190
+#: templates/js/translated/table_filters.js:122
+#: templates/js/translated/table_filters.js:203
msgid "Serial number less than or equal to"
msgstr ""
-#: templates/js/translated/table_filters.js:112
-#: templates/js/translated/table_filters.js:113
-#: templates/js/translated/table_filters.js:181
-#: templates/js/translated/table_filters.js:182
+#: templates/js/translated/table_filters.js:125
+#: templates/js/translated/table_filters.js:126
+#: templates/js/translated/table_filters.js:194
+#: templates/js/translated/table_filters.js:195
msgid "Serial number"
msgstr ""
-#: templates/js/translated/table_filters.js:117
-#: templates/js/translated/table_filters.js:199
+#: templates/js/translated/table_filters.js:130
+#: templates/js/translated/table_filters.js:212
msgid "Batch code"
msgstr ""
-#: templates/js/translated/table_filters.js:128
-#: templates/js/translated/table_filters.js:304
+#: templates/js/translated/table_filters.js:141
+#: templates/js/translated/table_filters.js:317
msgid "Active parts"
msgstr ""
-#: templates/js/translated/table_filters.js:129
+#: templates/js/translated/table_filters.js:142
msgid "Show stock for active parts"
msgstr ""
-#: templates/js/translated/table_filters.js:134
+#: templates/js/translated/table_filters.js:147
msgid "Part is an assembly"
msgstr ""
-#: templates/js/translated/table_filters.js:138
+#: templates/js/translated/table_filters.js:151
msgid "Is allocated"
msgstr ""
-#: templates/js/translated/table_filters.js:139
+#: templates/js/translated/table_filters.js:152
msgid "Item has been allocated"
msgstr ""
-#: templates/js/translated/table_filters.js:144
+#: templates/js/translated/table_filters.js:157
msgid "Include stock in sublocations"
msgstr ""
-#: templates/js/translated/table_filters.js:149
+#: templates/js/translated/table_filters.js:162
msgid "Show stock items which are depleted"
msgstr ""
-#: templates/js/translated/table_filters.js:154
+#: templates/js/translated/table_filters.js:167
msgid "Show items which are in stock"
msgstr ""
-#: templates/js/translated/table_filters.js:158
+#: templates/js/translated/table_filters.js:171
msgid "In Production"
msgstr ""
-#: templates/js/translated/table_filters.js:159
+#: templates/js/translated/table_filters.js:172
msgid "Show items which are in production"
msgstr ""
-#: templates/js/translated/table_filters.js:163
+#: templates/js/translated/table_filters.js:176
msgid "Include Variants"
msgstr ""
-#: templates/js/translated/table_filters.js:164
+#: templates/js/translated/table_filters.js:177
msgid "Include stock items for variant parts"
msgstr ""
-#: templates/js/translated/table_filters.js:168
+#: templates/js/translated/table_filters.js:181
msgid "Installed"
msgstr ""
-#: templates/js/translated/table_filters.js:169
+#: templates/js/translated/table_filters.js:182
msgid "Show stock items which are installed in another item"
msgstr ""
-#: templates/js/translated/table_filters.js:174
+#: templates/js/translated/table_filters.js:187
msgid "Show items which have been assigned to a customer"
msgstr ""
-#: templates/js/translated/table_filters.js:194
-#: templates/js/translated/table_filters.js:195
+#: templates/js/translated/table_filters.js:207
+#: templates/js/translated/table_filters.js:208
msgid "Stock status"
msgstr ""
-#: templates/js/translated/table_filters.js:203
+#: templates/js/translated/table_filters.js:216
msgid "Has purchase price"
msgstr ""
-#: templates/js/translated/table_filters.js:204
+#: templates/js/translated/table_filters.js:217
msgid "Show stock items which have a purchase price set"
msgstr ""
-#: templates/js/translated/table_filters.js:213
+#: templates/js/translated/table_filters.js:226
msgid "Show stock items which have expired"
msgstr ""
-#: templates/js/translated/table_filters.js:219
+#: templates/js/translated/table_filters.js:232
msgid "Show stock which is close to expiring"
msgstr ""
-#: templates/js/translated/table_filters.js:250
+#: templates/js/translated/table_filters.js:263
msgid "Build status"
msgstr ""
-#: templates/js/translated/table_filters.js:269
-#: templates/js/translated/table_filters.js:286
+#: templates/js/translated/table_filters.js:282
+#: templates/js/translated/table_filters.js:299
msgid "Order status"
msgstr ""
-#: templates/js/translated/table_filters.js:274
-#: templates/js/translated/table_filters.js:291
+#: templates/js/translated/table_filters.js:287
+#: templates/js/translated/table_filters.js:304
msgid "Outstanding"
msgstr ""
-#: templates/js/translated/table_filters.js:315
+#: templates/js/translated/table_filters.js:328
msgid "Include parts in subcategories"
msgstr ""
-#: templates/js/translated/table_filters.js:319
+#: templates/js/translated/table_filters.js:332
msgid "Has IPN"
msgstr ""
-#: templates/js/translated/table_filters.js:320
+#: templates/js/translated/table_filters.js:333
msgid "Part has internal part number"
msgstr ""
-#: templates/js/translated/table_filters.js:325
+#: templates/js/translated/table_filters.js:338
msgid "Show active parts"
msgstr ""
-#: templates/js/translated/table_filters.js:333
+#: templates/js/translated/table_filters.js:346
msgid "Stock available"
msgstr ""
-#: templates/js/translated/table_filters.js:349
+#: templates/js/translated/table_filters.js:362
msgid "Starred"
msgstr ""
-#: templates/js/translated/table_filters.js:361
+#: templates/js/translated/table_filters.js:374
msgid "Purchasable"
msgstr ""
-#: templates/js/translated/tables.js:342
+#: templates/js/translated/tables.js:357
msgid "Loading data"
msgstr ""
-#: templates/js/translated/tables.js:345
+#: templates/js/translated/tables.js:360
msgid "rows per page"
msgstr ""
-#: templates/js/translated/tables.js:348
+#: templates/js/translated/tables.js:363
msgid "Showing"
msgstr ""
-#: templates/js/translated/tables.js:348
+#: templates/js/translated/tables.js:363
msgid "to"
msgstr ""
-#: templates/js/translated/tables.js:348
+#: templates/js/translated/tables.js:363
msgid "of"
msgstr ""
-#: templates/js/translated/tables.js:348
+#: templates/js/translated/tables.js:363
msgid "rows"
msgstr ""
-#: templates/js/translated/tables.js:354
+#: templates/js/translated/tables.js:369
msgid "No matching results"
msgstr ""
-#: templates/js/translated/tables.js:357
+#: templates/js/translated/tables.js:372
msgid "Hide/Show pagination"
msgstr ""
-#: templates/js/translated/tables.js:360
+#: templates/js/translated/tables.js:375
msgid "Refresh"
msgstr ""
-#: templates/js/translated/tables.js:363
+#: templates/js/translated/tables.js:378
msgid "Toggle"
msgstr ""
-#: templates/js/translated/tables.js:366
+#: templates/js/translated/tables.js:381
msgid "Columns"
msgstr ""
-#: templates/js/translated/tables.js:369
+#: templates/js/translated/tables.js:384
msgid "All"
msgstr ""
-#: templates/navbar.html:13
+#: templates/navbar.html:19
msgid "Toggle navigation"
msgstr ""
-#: templates/navbar.html:33
+#: templates/navbar.html:39
msgid "Buy"
msgstr ""
-#: templates/navbar.html:43
+#: templates/navbar.html:51
msgid "Sell"
msgstr ""
-#: templates/navbar.html:55
-msgid "Scan Barcode"
-msgstr ""
-
-#: templates/navbar.html:77 users/models.py:39
+#: templates/navbar.html:87 users/models.py:39
msgid "Admin"
msgstr ""
-#: templates/navbar.html:79
+#: templates/navbar.html:89
msgid "Logout"
msgstr ""
-#: templates/navbar.html:81 templates/registration/login.html:89
+#: templates/navbar.html:91 templates/registration/login.html:89
msgid "Login"
msgstr ""
-#: templates/navbar.html:104
+#: templates/navbar.html:114
msgid "About InvenTree"
msgstr ""
diff --git a/InvenTree/locale/en/LC_MESSAGES/django.po b/InvenTree/locale/en/LC_MESSAGES/django.po
index 2ca3808dcb..90d2d28be0 100644
--- a/InvenTree/locale/en/LC_MESSAGES/django.po
+++ b/InvenTree/locale/en/LC_MESSAGES/django.po
@@ -8,7 +8,7 @@ msgid ""
msgstr ""
"Project-Id-Version: PACKAGE VERSION\n"
"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2021-08-07 15:14+0000\n"
+"POT-Creation-Date: 2021-09-12 13:15+0000\n"
"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
"Last-Translator: FULL NAME \n"
"Language-Team: LANGUAGE \n"
@@ -37,7 +37,7 @@ msgstr ""
#: InvenTree/forms.py:111 build/forms.py:102 build/forms.py:123
#: build/forms.py:145 build/forms.py:169 build/forms.py:185 build/forms.py:227
#: order/forms.py:30 order/forms.py:41 order/forms.py:52 order/forms.py:63
-#: order/forms.py:74 part/forms.py:108 templates/js/translated/forms.js:545
+#: order/forms.py:74 part/forms.py:108 templates/js/translated/forms.js:564
msgid "Confirm"
msgstr ""
@@ -74,7 +74,7 @@ msgstr ""
msgid "Duplicate serial: {n}"
msgstr ""
-#: InvenTree/helpers.py:408 order/models.py:315 order/models.py:425
+#: InvenTree/helpers.py:408 order/models.py:315 order/models.py:430
#: stock/views.py:1363
msgid "Invalid quantity provided"
msgstr ""
@@ -103,152 +103,181 @@ msgstr ""
msgid "Number of unique serial number ({s}) must match quantity ({q})"
msgstr ""
-#: InvenTree/models.py:61 stock/models.py:1815
+#: InvenTree/models.py:66 stock/models.py:1826
msgid "Attachment"
msgstr ""
-#: InvenTree/models.py:62
+#: InvenTree/models.py:67
msgid "Select file to attach"
msgstr ""
-#: InvenTree/models.py:64 templates/js/translated/attachment.js:52
+#: InvenTree/models.py:69 templates/js/translated/attachment.js:87
msgid "Comment"
msgstr ""
-#: InvenTree/models.py:64
+#: InvenTree/models.py:69
msgid "File comment"
msgstr ""
-#: InvenTree/models.py:70 InvenTree/models.py:71 common/models.py:969
-#: common/models.py:970 part/models.py:2035
+#: InvenTree/models.py:75 InvenTree/models.py:76 common/models.py:993
+#: common/models.py:994 part/models.py:2051
#: report/templates/report/inventree_test_report_base.html:91
-#: templates/js/translated/stock.js:1549
+#: templates/js/translated/stock.js:1690
msgid "User"
msgstr ""
-#: InvenTree/models.py:74
+#: InvenTree/models.py:79
msgid "upload date"
msgstr ""
-#: InvenTree/models.py:113
+#: InvenTree/models.py:99
+msgid "Filename must not be empty"
+msgstr ""
+
+#: InvenTree/models.py:122
+msgid "Invalid attachment directory"
+msgstr ""
+
+#: InvenTree/models.py:132
+#, python-brace-format
+msgid "Filename contains illegal character '{c}'"
+msgstr ""
+
+#: InvenTree/models.py:135
+msgid "Filename missing extension"
+msgstr ""
+
+#: InvenTree/models.py:142
+msgid "Attachment with this filename already exists"
+msgstr ""
+
+#: InvenTree/models.py:149
+msgid "Error renaming file"
+msgstr ""
+
+#: InvenTree/models.py:184
msgid "Invalid choice"
msgstr ""
-#: InvenTree/models.py:129 InvenTree/models.py:130 company/models.py:412
-#: label/models.py:112 part/models.py:656 part/models.py:2196
-#: part/templates/part/part_base.html:233 report/models.py:181
+#: InvenTree/models.py:200 InvenTree/models.py:201 company/models.py:414
+#: label/models.py:112 part/models.py:658 part/models.py:2212
+#: part/templates/part/part_base.html:241 report/models.py:181
#: templates/InvenTree/search.html:137 templates/InvenTree/search.html:289
-#: templates/js/translated/company.js:583 templates/js/translated/part.js:338
-#: templates/js/translated/part.js:471 templates/js/translated/part.js:963
-#: templates/js/translated/stock.js:1342
+#: templates/js/translated/company.js:636 templates/js/translated/part.js:466
+#: templates/js/translated/part.js:603 templates/js/translated/part.js:1130
+#: templates/js/translated/stock.js:1483
msgid "Name"
msgstr ""
-#: InvenTree/models.py:136 build/models.py:187
-#: build/templates/build/detail.html:24 company/models.py:351
-#: company/models.py:519 company/templates/company/manufacturer_part.html:76
+#: InvenTree/models.py:207 build/models.py:187
+#: build/templates/build/detail.html:24 company/models.py:353
+#: company/models.py:569 company/templates/company/manufacturer_part.html:76
#: company/templates/company/supplier_part.html:75 label/models.py:119
-#: order/models.py:158 order/templates/order/purchase_order_detail.html:312
-#: part/models.py:679 part/templates/part/part_base.html:238
+#: order/models.py:158 part/models.py:681
+#: part/templates/part/part_base.html:246
#: part/templates/part/set_category.html:14 report/models.py:194
#: report/models.py:551 report/models.py:590
#: report/templates/report/inventree_build_order_base.html:118
#: templates/InvenTree/search.html:144 templates/InvenTree/search.html:224
#: templates/InvenTree/search.html:296
#: templates/InvenTree/settings/header.html:9
-#: templates/js/translated/bom.js:210 templates/js/translated/build.js:868
-#: templates/js/translated/build.js:1162 templates/js/translated/company.js:299
-#: templates/js/translated/company.js:497
-#: templates/js/translated/company.js:779 templates/js/translated/order.js:267
-#: templates/js/translated/order.js:369 templates/js/translated/part.js:397
-#: templates/js/translated/part.js:581 templates/js/translated/part.js:758
-#: templates/js/translated/part.js:975 templates/js/translated/part.js:1043
-#: templates/js/translated/stock.js:926 templates/js/translated/stock.js:1354
-#: templates/js/translated/stock.js:1399
+#: templates/js/translated/bom.js:230 templates/js/translated/build.js:891
+#: templates/js/translated/build.js:1179 templates/js/translated/company.js:344
+#: templates/js/translated/company.js:546
+#: templates/js/translated/company.js:834 templates/js/translated/order.js:341
+#: templates/js/translated/order.js:486 templates/js/translated/order.js:710
+#: templates/js/translated/part.js:525 templates/js/translated/part.js:713
+#: templates/js/translated/part.js:902 templates/js/translated/part.js:1142
+#: templates/js/translated/part.js:1210 templates/js/translated/stock.js:840
+#: templates/js/translated/stock.js:1495 templates/js/translated/stock.js:1540
msgid "Description"
msgstr ""
-#: InvenTree/models.py:137
+#: InvenTree/models.py:208
msgid "Description (optional)"
msgstr ""
-#: InvenTree/models.py:145
+#: InvenTree/models.py:216
msgid "parent"
msgstr ""
-#: InvenTree/serializers.py:52 part/models.py:2438
+#: InvenTree/serializers.py:55 part/models.py:2454
msgid "Must be a valid number"
msgstr ""
-#: InvenTree/settings.py:518
-msgid "German"
-msgstr ""
-
-#: InvenTree/settings.py:519
-msgid "Greek"
-msgstr ""
-
-#: InvenTree/settings.py:520
-msgid "English"
-msgstr ""
-
-#: InvenTree/settings.py:521
-msgid "Spanish"
-msgstr ""
-
-#: InvenTree/settings.py:522
-msgid "French"
+#: InvenTree/serializers.py:244
+msgid "Filename"
msgstr ""
#: InvenTree/settings.py:523
-msgid "Hebrew"
+msgid "German"
msgstr ""
#: InvenTree/settings.py:524
-msgid "Italian"
+msgid "Greek"
msgstr ""
#: InvenTree/settings.py:525
-msgid "Japanese"
+msgid "English"
msgstr ""
#: InvenTree/settings.py:526
-msgid "Korean"
+msgid "Spanish"
msgstr ""
#: InvenTree/settings.py:527
-msgid "Dutch"
+msgid "French"
msgstr ""
#: InvenTree/settings.py:528
-msgid "Norwegian"
+msgid "Hebrew"
msgstr ""
#: InvenTree/settings.py:529
-msgid "Polish"
+msgid "Italian"
msgstr ""
#: InvenTree/settings.py:530
-msgid "Russian"
+msgid "Japanese"
msgstr ""
#: InvenTree/settings.py:531
-msgid "Swedish"
+msgid "Korean"
msgstr ""
#: InvenTree/settings.py:532
-msgid "Thai"
+msgid "Dutch"
msgstr ""
#: InvenTree/settings.py:533
-msgid "Turkish"
+msgid "Norwegian"
msgstr ""
#: InvenTree/settings.py:534
-msgid "Vietnamese"
+msgid "Polish"
msgstr ""
#: InvenTree/settings.py:535
+msgid "Russian"
+msgstr ""
+
+#: InvenTree/settings.py:536
+msgid "Swedish"
+msgstr ""
+
+#: InvenTree/settings.py:537
+msgid "Thai"
+msgstr ""
+
+#: InvenTree/settings.py:538
+msgid "Turkish"
+msgstr ""
+
+#: InvenTree/settings.py:539
+msgid "Vietnamese"
+msgstr ""
+
+#: InvenTree/settings.py:540
msgid "Chinese"
msgstr ""
@@ -373,7 +402,7 @@ msgstr ""
msgid "Split child item"
msgstr ""
-#: InvenTree/status_codes.py:294 templates/js/translated/table_filters.js:173
+#: InvenTree/status_codes.py:294 templates/js/translated/table_filters.js:186
msgid "Sent to customer"
msgstr ""
@@ -433,27 +462,27 @@ msgstr ""
msgid "Overage must be an integer value or a percentage"
msgstr ""
-#: InvenTree/views.py:612
+#: InvenTree/views.py:610
msgid "Delete Item"
msgstr ""
-#: InvenTree/views.py:661
+#: InvenTree/views.py:659
msgid "Check box to confirm item deletion"
msgstr ""
-#: InvenTree/views.py:676 templates/InvenTree/settings/user.html:14
+#: InvenTree/views.py:674 templates/InvenTree/settings/user.html:14
msgid "Edit User Information"
msgstr ""
-#: InvenTree/views.py:687 templates/InvenTree/settings/user.html:18
+#: InvenTree/views.py:685 templates/InvenTree/settings/user.html:18
msgid "Set Password"
msgstr ""
-#: InvenTree/views.py:706
+#: InvenTree/views.py:704
msgid "Password fields must match"
msgstr ""
-#: InvenTree/views.py:907 templates/navbar.html:95
+#: InvenTree/views.py:910 templates/navbar.html:105
msgid "System Information"
msgstr ""
@@ -510,8 +539,8 @@ msgstr ""
#: order/templates/order/order_base.html:124
#: order/templates/order/sales_order_base.html:119
#: report/templates/report/inventree_build_order_base.html:126
-#: templates/js/translated/build.js:945 templates/js/translated/order.js:284
-#: templates/js/translated/order.js:387
+#: templates/js/translated/build.js:962 templates/js/translated/order.js:358
+#: templates/js/translated/order.js:728
msgid "Target Date"
msgstr ""
@@ -523,19 +552,18 @@ msgstr ""
#: build/templates/build/allocation_card.html:23
#: build/templates/build/auto_allocate.html:17
#: build/templates/build/build_base.html:133
-#: build/templates/build/detail.html:34 common/models.py:1001
+#: build/templates/build/detail.html:34 common/models.py:1025
#: company/forms.py:42 company/templates/company/supplier_part.html:226
-#: order/forms.py:120 order/forms.py:142 order/forms.py:159 order/models.py:706
-#: order/models.py:952 order/templates/order/order_wizard/match_parts.html:30
+#: order/forms.py:120 order/forms.py:142 order/forms.py:159 order/models.py:712
+#: order/models.py:964 order/templates/order/order_wizard/match_parts.html:30
#: order/templates/order/order_wizard/select_parts.html:34
-#: order/templates/order/purchase_order_detail.html:348
-#: order/templates/order/sales_order_detail.html:200
-#: order/templates/order/sales_order_detail.html:207
-#: order/templates/order/sales_order_detail.html:292
-#: order/templates/order/sales_order_detail.html:364 part/forms.py:249
-#: part/forms.py:265 part/forms.py:281 part/models.py:2340
+#: order/templates/order/sales_order_detail.html:201
+#: order/templates/order/sales_order_detail.html:208
+#: order/templates/order/sales_order_detail.html:293
+#: order/templates/order/sales_order_detail.html:365 part/forms.py:249
+#: part/forms.py:265 part/forms.py:281 part/models.py:2356
#: part/templates/part/bom_upload/match_parts.html:31
-#: part/templates/part/detail.html:940 part/templates/part/detail.html:1026
+#: part/templates/part/detail.html:973 part/templates/part/detail.html:1059
#: part/templates/part/part_pricing.html:16
#: report/templates/report/inventree_build_order_base.html:114
#: report/templates/report/inventree_po_report.html:91
@@ -543,13 +571,14 @@ msgstr ""
#: report/templates/report/inventree_test_report_base.html:77
#: stock/forms.py:140 stock/templates/stock/item_base.html:269
#: stock/templates/stock/stock_adjust.html:18
-#: templates/js/translated/barcode.js:364 templates/js/translated/bom.js:225
-#: templates/js/translated/build.js:271 templates/js/translated/build.js:606
-#: templates/js/translated/build.js:1172
-#: templates/js/translated/model_renderers.js:56
-#: templates/js/translated/order.js:482 templates/js/translated/part.js:1148
-#: templates/js/translated/part.js:1270 templates/js/translated/part.js:1326
-#: templates/js/translated/stock.js:1534 templates/js/translated/stock.js:1732
+#: templates/js/translated/barcode.js:386 templates/js/translated/bom.js:245
+#: templates/js/translated/build.js:298 templates/js/translated/build.js:629
+#: templates/js/translated/build.js:1189
+#: templates/js/translated/model_renderers.js:59
+#: templates/js/translated/order.js:522 templates/js/translated/order.js:824
+#: templates/js/translated/part.js:1317 templates/js/translated/part.js:1440
+#: templates/js/translated/part.js:1518 templates/js/translated/stock.js:1675
+#: templates/js/translated/stock.js:1850
msgid "Quantity"
msgstr ""
@@ -590,13 +619,15 @@ msgid "Mark build as complete"
msgstr ""
#: build/forms.py:210 build/templates/build/auto_allocate.html:18
-#: stock/forms.py:280 stock/templates/stock/item_base.html:299
+#: order/serializers.py:216 order/serializers.py:275 stock/forms.py:280
+#: stock/templates/stock/item_base.html:299
#: stock/templates/stock/stock_adjust.html:17
-#: templates/InvenTree/search.html:260 templates/js/translated/barcode.js:363
-#: templates/js/translated/barcode.js:531 templates/js/translated/build.js:256
-#: templates/js/translated/build.js:620 templates/js/translated/order.js:467
-#: templates/js/translated/stock.js:134 templates/js/translated/stock.js:260
-#: templates/js/translated/stock.js:1012 templates/js/translated/stock.js:1426
+#: templates/InvenTree/search.html:260 templates/js/translated/barcode.js:385
+#: templates/js/translated/barcode.js:555 templates/js/translated/build.js:283
+#: templates/js/translated/build.js:643 templates/js/translated/order.js:809
+#: templates/js/translated/part.js:174 templates/js/translated/stock.js:203
+#: templates/js/translated/stock.js:329 templates/js/translated/stock.js:942
+#: templates/js/translated/stock.js:1567
msgid "Location"
msgstr ""
@@ -605,13 +636,13 @@ msgid "Location of completed parts"
msgstr ""
#: build/forms.py:215 build/templates/build/build_base.html:138
-#: build/templates/build/detail.html:62 order/models.py:549
-#: order/templates/order/receive_parts.html:24
+#: build/templates/build/detail.html:62 order/models.py:555
+#: order/serializers.py:230 order/templates/order/receive_parts.html:24
#: stock/templates/stock/item_base.html:422 templates/InvenTree/search.html:252
-#: templates/js/translated/barcode.js:119 templates/js/translated/build.js:902
-#: templates/js/translated/order.js:271 templates/js/translated/order.js:374
-#: templates/js/translated/stock.js:999 templates/js/translated/stock.js:1503
-#: templates/js/translated/stock.js:1748
+#: templates/js/translated/barcode.js:141 templates/js/translated/build.js:925
+#: templates/js/translated/order.js:345 templates/js/translated/order.js:715
+#: templates/js/translated/stock.js:917 templates/js/translated/stock.js:1644
+#: templates/js/translated/stock.js:1866
msgid "Status"
msgstr ""
@@ -650,7 +681,7 @@ msgstr ""
#: build/models.py:117 build/templates/build/build_base.html:9
#: build/templates/build/build_base.html:73
#: report/templates/report/inventree_build_order_base.html:106
-#: templates/js/translated/build.js:233
+#: templates/js/translated/build.js:260
msgid "Build Order"
msgstr ""
@@ -658,8 +689,8 @@ msgstr ""
#: build/templates/build/index.html:15
#: order/templates/order/sales_order_detail.html:34
#: order/templates/order/so_navbar.html:19
-#: order/templates/order/so_navbar.html:22 part/templates/part/navbar.html:42
-#: part/templates/part/navbar.html:45 templates/InvenTree/index.html:229
+#: order/templates/order/so_navbar.html:22 part/templates/part/navbar.html:50
+#: part/templates/part/navbar.html:53 templates/InvenTree/index.html:229
#: templates/InvenTree/search.html:185
#: templates/InvenTree/settings/navbar.html:101
#: templates/InvenTree/settings/navbar.html:103 users/models.py:44
@@ -670,14 +701,13 @@ msgstr ""
msgid "Build Order Reference"
msgstr ""
-#: build/models.py:179 order/models.py:246 order/models.py:533
-#: order/models.py:713 order/templates/order/purchase_order_detail.html:343
-#: order/templates/order/sales_order_detail.html:359 part/models.py:2349
-#: part/templates/part/bom_upload/match_parts.html:30
+#: build/models.py:179 order/models.py:246 order/models.py:539
+#: order/models.py:719 order/templates/order/sales_order_detail.html:360
+#: part/models.py:2365 part/templates/part/bom_upload/match_parts.html:30
#: report/templates/report/inventree_po_report.html:92
#: report/templates/report/inventree_so_report.html:92
-#: templates/js/translated/bom.js:217 templates/js/translated/build.js:695
-#: templates/js/translated/build.js:1166
+#: templates/js/translated/bom.js:237 templates/js/translated/build.js:718
+#: templates/js/translated/build.js:1183 templates/js/translated/order.js:517
msgid "Reference"
msgstr ""
@@ -696,15 +726,14 @@ msgstr ""
#: build/models.py:205 build/templates/build/auto_allocate.html:16
#: build/templates/build/build_base.html:128
-#: build/templates/build/detail.html:29 company/models.py:654
-#: order/models.py:766 order/models.py:825
+#: build/templates/build/detail.html:29 company/models.py:704
+#: order/models.py:772 order/models.py:837
#: order/templates/order/order_wizard/select_parts.html:32
-#: order/templates/order/purchase_order_detail.html:297
#: order/templates/order/receive_parts.html:19
-#: order/templates/order/sales_order_detail.html:344 part/models.py:295
-#: part/models.py:1980 part/models.py:1996 part/models.py:2015
-#: part/models.py:2033 part/models.py:2112 part/models.py:2234
-#: part/models.py:2324 part/templates/part/detail.html:199
+#: order/templates/order/sales_order_detail.html:345 part/models.py:297
+#: part/models.py:1996 part/models.py:2012 part/models.py:2031
+#: part/models.py:2049 part/models.py:2128 part/models.py:2250
+#: part/models.py:2340 part/templates/part/detail.html:199
#: part/templates/part/part_app_base.html:8
#: part/templates/part/part_pricing.html:12
#: part/templates/part/set_category.html:13
@@ -712,12 +741,13 @@ msgstr ""
#: report/templates/report/inventree_po_report.html:90
#: report/templates/report/inventree_so_report.html:90
#: templates/InvenTree/search.html:112 templates/InvenTree/search.html:210
-#: templates/js/translated/barcode.js:362 templates/js/translated/bom.js:183
-#: templates/js/translated/build.js:586 templates/js/translated/build.js:873
-#: templates/js/translated/build.js:1139 templates/js/translated/company.js:438
-#: templates/js/translated/company.js:688 templates/js/translated/part.js:562
-#: templates/js/translated/part.js:725 templates/js/translated/stock.js:132
-#: templates/js/translated/stock.js:895 templates/js/translated/stock.js:1720
+#: templates/js/translated/barcode.js:384 templates/js/translated/bom.js:203
+#: templates/js/translated/build.js:609 templates/js/translated/build.js:896
+#: templates/js/translated/build.js:1156 templates/js/translated/company.js:487
+#: templates/js/translated/company.js:743 templates/js/translated/order.js:471
+#: templates/js/translated/part.js:694 templates/js/translated/part.js:864
+#: templates/js/translated/stock.js:201 templates/js/translated/stock.js:797
+#: templates/js/translated/stock.js:1838
msgid "Part"
msgstr ""
@@ -765,7 +795,7 @@ msgstr ""
msgid "Number of stock items which have been completed"
msgstr ""
-#: build/models.py:257 part/templates/part/part_base.html:191
+#: build/models.py:257 part/templates/part/part_base.html:198
msgid "Build Status"
msgstr ""
@@ -773,7 +803,7 @@ msgstr ""
msgid "Build status code"
msgstr ""
-#: build/models.py:265 stock/models.py:507
+#: build/models.py:265 stock/models.py:513
msgid "Batch Code"
msgstr ""
@@ -781,16 +811,16 @@ msgstr ""
msgid "Batch code for this build output"
msgstr ""
-#: build/models.py:272 order/models.py:162 part/models.py:851
-#: part/templates/part/part_base.html:264 templates/js/translated/order.js:382
+#: build/models.py:272 order/models.py:162 part/models.py:853
+#: part/templates/part/part_base.html:272 templates/js/translated/order.js:723
msgid "Creation Date"
msgstr ""
-#: build/models.py:276 order/models.py:555
+#: build/models.py:276 order/models.py:561
msgid "Target completion date"
msgstr ""
-#: build/models.py:280 order/models.py:288 templates/js/translated/build.js:950
+#: build/models.py:280 order/models.py:288 templates/js/translated/build.js:967
msgid "Completion Date"
msgstr ""
@@ -798,7 +828,7 @@ msgstr ""
msgid "completed by"
msgstr ""
-#: build/models.py:294 templates/js/translated/build.js:915
+#: build/models.py:294 templates/js/translated/build.js:938
msgid "Issued by"
msgstr ""
@@ -809,9 +839,9 @@ msgstr ""
#: build/models.py:303 build/templates/build/build_base.html:184
#: build/templates/build/detail.html:108 order/models.py:176
#: order/templates/order/order_base.html:138
-#: order/templates/order/sales_order_base.html:140 part/models.py:855
+#: order/templates/order/sales_order_base.html:140 part/models.py:857
#: report/templates/report/inventree_build_order_base.html:159
-#: templates/js/translated/build.js:930
+#: templates/js/translated/build.js:950
msgid "Responsible"
msgstr ""
@@ -822,34 +852,33 @@ msgstr ""
#: build/models.py:309 build/templates/build/detail.html:94
#: company/templates/company/manufacturer_part.html:83
#: company/templates/company/supplier_part.html:82
-#: part/templates/part/part_base.html:258 stock/models.py:501
+#: part/templates/part/part_base.html:266 stock/models.py:507
#: stock/templates/stock/item_base.html:359
msgid "External Link"
msgstr ""
-#: build/models.py:310 part/models.py:713 stock/models.py:503
+#: build/models.py:310 part/models.py:715 stock/models.py:509
msgid "Link to external URL"
msgstr ""
#: build/models.py:314 build/templates/build/navbar.html:52
-#: company/models.py:139 company/models.py:526
-#: company/templates/company/navbar.html:63
-#: company/templates/company/navbar.html:66 order/models.py:180
-#: order/models.py:715 order/templates/order/po_navbar.html:38
+#: company/models.py:141 company/models.py:576
+#: company/templates/company/navbar.html:69
+#: company/templates/company/navbar.html:72 order/models.py:180
+#: order/models.py:721 order/templates/order/po_navbar.html:38
#: order/templates/order/po_navbar.html:41
-#: order/templates/order/purchase_order_detail.html:419
-#: order/templates/order/sales_order_detail.html:439
+#: order/templates/order/sales_order_detail.html:440
#: order/templates/order/so_navbar.html:33
-#: order/templates/order/so_navbar.html:36 part/models.py:840
-#: part/templates/part/detail.html:105 part/templates/part/navbar.html:108
-#: part/templates/part/navbar.html:111
+#: order/templates/order/so_navbar.html:36 part/models.py:842
+#: part/templates/part/detail.html:105 part/templates/part/navbar.html:120
+#: part/templates/part/navbar.html:123
#: report/templates/report/inventree_build_order_base.html:173
-#: stock/forms.py:138 stock/forms.py:250 stock/forms.py:282 stock/models.py:573
-#: stock/models.py:1715 stock/models.py:1821
-#: stock/templates/stock/navbar.html:57 templates/js/translated/barcode.js:37
-#: templates/js/translated/bom.js:369 templates/js/translated/company.js:784
-#: templates/js/translated/stock.js:268 templates/js/translated/stock.js:509
-#: templates/js/translated/stock.js:1090
+#: stock/forms.py:138 stock/forms.py:250 stock/forms.py:282 stock/models.py:579
+#: stock/models.py:1726 stock/models.py:1832
+#: stock/templates/stock/navbar.html:57 templates/js/translated/barcode.js:59
+#: templates/js/translated/bom.js:385 templates/js/translated/company.js:839
+#: templates/js/translated/order.js:604 templates/js/translated/stock.js:338
+#: templates/js/translated/stock.js:580 templates/js/translated/stock.js:1061
msgid "Notes"
msgstr ""
@@ -882,11 +911,11 @@ msgstr ""
msgid "Allocated quantity ({n}) must not exceed available quantity ({q})"
msgstr ""
-#: build/models.py:1244 order/models.py:926
+#: build/models.py:1244 order/models.py:938
msgid "StockItem is over-allocated"
msgstr ""
-#: build/models.py:1248 order/models.py:929
+#: build/models.py:1248 order/models.py:941
msgid "Allocation quantity must be greater than zero"
msgstr ""
@@ -900,8 +929,8 @@ msgid "Selected stock item not found in BOM for part '{p}'"
msgstr ""
#: build/models.py:1372 stock/templates/stock/item_base.html:331
-#: templates/InvenTree/search.html:183 templates/js/translated/build.js:846
-#: templates/navbar.html:29
+#: templates/InvenTree/search.html:183 templates/js/translated/build.js:869
+#: templates/navbar.html:35
msgid "Build"
msgstr ""
@@ -913,9 +942,9 @@ msgstr ""
#: stock/templates/stock/item_base.html:31
#: stock/templates/stock/item_base.html:353
#: stock/templates/stock/stock_adjust.html:16
-#: templates/js/translated/build.js:244 templates/js/translated/build.js:249
-#: templates/js/translated/build.js:993 templates/js/translated/order.js:455
-#: templates/js/translated/order.js:460 templates/js/translated/stock.js:1485
+#: templates/js/translated/build.js:271 templates/js/translated/build.js:276
+#: templates/js/translated/build.js:1012 templates/js/translated/order.js:797
+#: templates/js/translated/order.js:802 templates/js/translated/stock.js:1626
msgid "Stock Item"
msgstr ""
@@ -937,12 +966,12 @@ msgstr ""
#: build/templates/build/allocation_card.html:21
#: build/templates/build/complete_output.html:46
-#: order/templates/order/sales_order_detail.html:205
-#: order/templates/order/sales_order_detail.html:290
+#: order/templates/order/sales_order_detail.html:206
+#: order/templates/order/sales_order_detail.html:291
#: report/templates/report/inventree_test_report_base.html:75
-#: stock/models.py:495 stock/templates/stock/item_base.html:251
-#: templates/js/translated/build.js:604
-#: templates/js/translated/model_renderers.js:54
+#: stock/models.py:501 stock/templates/stock/item_base.html:251
+#: templates/js/translated/build.js:627
+#: templates/js/translated/model_renderers.js:57
msgid "Serial Number"
msgstr ""
@@ -994,7 +1023,7 @@ msgstr ""
#: company/templates/company/supplier_part.html:30
#: order/templates/order/order_base.html:26
#: order/templates/order/sales_order_base.html:37
-#: part/templates/part/category.html:27 part/templates/part/part_base.html:25
+#: part/templates/part/category.html:27 part/templates/part/part_base.html:30
#: stock/templates/stock/item_base.html:62
#: stock/templates/stock/location.html:31
msgid "Admin view"
@@ -1006,9 +1035,9 @@ msgstr ""
#: order/templates/order/order_base.html:86
#: order/templates/order/sales_order_base.html:43
#: order/templates/order/sales_order_base.html:88
-#: templates/js/translated/table_filters.js:259
-#: templates/js/translated/table_filters.js:278
-#: templates/js/translated/table_filters.js:295
+#: templates/js/translated/table_filters.js:272
+#: templates/js/translated/table_filters.js:291
+#: templates/js/translated/table_filters.js:308
msgid "Overdue"
msgstr ""
@@ -1058,14 +1087,14 @@ msgid "Progress"
msgstr ""
#: build/templates/build/build_base.html:170
-#: build/templates/build/detail.html:87 order/models.py:823
+#: build/templates/build/detail.html:87 order/models.py:835
#: order/templates/order/sales_order_base.html:9
#: order/templates/order/sales_order_base.html:35
#: order/templates/order/sales_order_ship.html:25
#: report/templates/report/inventree_build_order_base.html:136
#: report/templates/report/inventree_so_report.html:77
#: stock/templates/stock/item_base.html:293
-#: templates/js/translated/order.js:329
+#: templates/js/translated/order.js:670
msgid "Sales Order"
msgstr ""
@@ -1149,7 +1178,7 @@ msgstr ""
#: build/templates/build/create_build_item.html:11
#, python-format
-msgid "The allocated stock will be installed into the following build output:
%(output)s"
+msgid "The allocated stock will be installed into the following build output:
%(output)s"
msgstr ""
#: build/templates/build/create_build_item.html:17
@@ -1173,9 +1202,9 @@ msgstr ""
msgid "Stock can be taken from any available location."
msgstr ""
-#: build/templates/build/detail.html:49 order/forms.py:88 order/models.py:782
-#: order/templates/order/purchase_order_detail.html:408
+#: build/templates/build/detail.html:49 order/forms.py:88 order/models.py:794
#: order/templates/order/receive_parts.html:25 stock/forms.py:134
+#: templates/js/translated/order.js:593
msgid "Destination"
msgstr ""
@@ -1185,16 +1214,16 @@ msgstr ""
#: build/templates/build/detail.html:73
#: stock/templates/stock/item_base.html:317
-#: templates/js/translated/stock.js:1007 templates/js/translated/stock.js:1755
-#: templates/js/translated/table_filters.js:116
-#: templates/js/translated/table_filters.js:198
+#: templates/js/translated/stock.js:931 templates/js/translated/stock.js:1873
+#: templates/js/translated/table_filters.js:129
+#: templates/js/translated/table_filters.js:211
msgid "Batch"
msgstr ""
#: build/templates/build/detail.html:119
#: order/templates/order/order_base.html:111
#: order/templates/order/sales_order_base.html:113
-#: templates/js/translated/build.js:910
+#: templates/js/translated/build.js:933
msgid "Created"
msgstr ""
@@ -1202,7 +1231,7 @@ msgstr ""
msgid "No target date set"
msgstr ""
-#: build/templates/build/detail.html:135 templates/js/translated/build.js:888
+#: build/templates/build/detail.html:135 templates/js/translated/build.js:911
msgid "Completed"
msgstr ""
@@ -1226,7 +1255,7 @@ msgstr ""
msgid "Auto Allocate"
msgstr ""
-#: build/templates/build/detail.html:175 templates/js/translated/build.js:778
+#: build/templates/build/detail.html:175 templates/js/translated/build.js:801
msgid "Unallocate stock"
msgstr ""
@@ -1239,8 +1268,8 @@ msgid "Order required parts"
msgstr ""
#: build/templates/build/detail.html:180
-#: company/templates/company/detail.html:33
-#: company/templates/company/detail.html:75 order/views.py:679
+#: company/templates/company/detail.html:32
+#: company/templates/company/detail.html:72 order/views.py:679
#: part/templates/part/category.html:140
msgid "Order Parts"
msgstr ""
@@ -1289,8 +1318,8 @@ msgstr ""
#: build/templates/build/navbar.html:45 order/templates/order/po_navbar.html:35
#: order/templates/order/sales_order_detail.html:43
#: order/templates/order/so_navbar.html:29 part/templates/part/detail.html:173
-#: part/templates/part/navbar.html:102 part/templates/part/navbar.html:105
-#: stock/templates/stock/item.html:87 stock/templates/stock/navbar.html:47
+#: part/templates/part/navbar.html:114 part/templates/part/navbar.html:117
+#: stock/templates/stock/item.html:88 stock/templates/stock/navbar.html:47
#: stock/templates/stock/navbar.html:50
msgid "Attachments"
msgstr ""
@@ -1299,48 +1328,48 @@ msgstr ""
msgid "Build Notes"
msgstr ""
-#: build/templates/build/detail.html:261 build/templates/build/detail.html:397
-#: company/templates/company/detail.html:173
-#: company/templates/company/detail.html:200
+#: build/templates/build/detail.html:261 build/templates/build/detail.html:398
+#: company/templates/company/detail.html:169
+#: company/templates/company/detail.html:196
#: order/templates/order/purchase_order_detail.html:62
#: order/templates/order/purchase_order_detail.html:95
#: order/templates/order/sales_order_detail.html:58
#: order/templates/order/sales_order_detail.html:85
-#: part/templates/part/detail.html:109 stock/templates/stock/item.html:102
-#: stock/templates/stock/item.html:187
+#: part/templates/part/detail.html:109 stock/templates/stock/item.html:103
+#: stock/templates/stock/item.html:188
msgid "Edit Notes"
msgstr ""
#: build/templates/build/detail.html:357
#: order/templates/order/po_attachments.html:79
-#: order/templates/order/purchase_order_detail.html:156
-#: order/templates/order/sales_order_detail.html:145
-#: part/templates/part/detail.html:802 stock/templates/stock/item.html:251
+#: order/templates/order/purchase_order_detail.html:157
+#: order/templates/order/sales_order_detail.html:146
+#: part/templates/part/detail.html:920 stock/templates/stock/item.html:253
#: templates/attachment_table.html:6
msgid "Add Attachment"
msgstr ""
-#: build/templates/build/detail.html:375
+#: build/templates/build/detail.html:376
#: order/templates/order/po_attachments.html:51
-#: order/templates/order/purchase_order_detail.html:128
-#: order/templates/order/sales_order_detail.html:118
-#: part/templates/part/detail.html:756 stock/templates/stock/item.html:219
+#: order/templates/order/purchase_order_detail.html:129
+#: order/templates/order/sales_order_detail.html:119
+#: part/templates/part/detail.html:874 stock/templates/stock/item.html:221
msgid "Edit Attachment"
msgstr ""
-#: build/templates/build/detail.html:382
+#: build/templates/build/detail.html:383
#: order/templates/order/po_attachments.html:58
-#: order/templates/order/purchase_order_detail.html:135
-#: order/templates/order/sales_order_detail.html:124
-#: part/templates/part/detail.html:765 stock/templates/stock/item.html:228
+#: order/templates/order/purchase_order_detail.html:136
+#: order/templates/order/sales_order_detail.html:125
+#: part/templates/part/detail.html:883 stock/templates/stock/item.html:230
msgid "Confirm Delete Operation"
msgstr ""
-#: build/templates/build/detail.html:383
+#: build/templates/build/detail.html:384
#: order/templates/order/po_attachments.html:59
-#: order/templates/order/purchase_order_detail.html:136
-#: order/templates/order/sales_order_detail.html:125
-#: part/templates/part/detail.html:766 stock/templates/stock/item.html:229
+#: order/templates/order/purchase_order_detail.html:137
+#: order/templates/order/sales_order_detail.html:126
+#: part/templates/part/detail.html:884 stock/templates/stock/item.html:231
msgid "Delete Attachment"
msgstr ""
@@ -1373,7 +1402,7 @@ msgid "Build Order Details"
msgstr ""
#: build/templates/build/navbar.html:15 order/templates/order/po_navbar.html:15
-#: templates/js/translated/stock.js:1414
+#: templates/js/translated/stock.js:1555
msgid "Details"
msgstr ""
@@ -1502,9 +1531,9 @@ msgstr ""
msgid "Stock item is over-allocated"
msgstr ""
-#: build/views.py:705 templates/js/translated/bom.js:250
-#: templates/js/translated/build.js:705 templates/js/translated/build.js:1000
-#: templates/js/translated/build.js:1179
+#: build/views.py:705 templates/js/translated/bom.js:269
+#: templates/js/translated/build.js:728 templates/js/translated/build.js:1019
+#: templates/js/translated/build.js:1196
msgid "Available"
msgstr ""
@@ -1540,7 +1569,7 @@ msgstr ""
msgid "Error reading file (data could be corrupted)"
msgstr ""
-#: common/forms.py:34 templates/js/translated/attachment.js:42
+#: common/forms.py:34 templates/js/translated/attachment.js:54
msgid "File"
msgstr ""
@@ -1557,546 +1586,594 @@ msgstr ""
msgid "Select {name} file to upload"
msgstr ""
-#: common/models.py:322 common/models.py:815 common/models.py:962
+#: common/models.py:308 common/models.py:839 common/models.py:986
msgid "Settings key (must be unique - case insensitive"
msgstr ""
-#: common/models.py:324
+#: common/models.py:310
msgid "Settings value"
msgstr ""
-#: common/models.py:359
+#: common/models.py:345
msgid "Must be an integer value"
msgstr ""
-#: common/models.py:382
+#: common/models.py:368
msgid "Value must be a boolean value"
msgstr ""
-#: common/models.py:393
+#: common/models.py:379
msgid "Value must be an integer value"
msgstr ""
-#: common/models.py:416
+#: common/models.py:402
msgid "Key string must be unique"
msgstr ""
-#: common/models.py:523
+#: common/models.py:509
msgid "InvenTree Instance Name"
msgstr ""
-#: common/models.py:525
+#: common/models.py:511
msgid "String descriptor for the server instance"
msgstr ""
-#: common/models.py:529
+#: common/models.py:515
msgid "Use instance name"
msgstr ""
-#: common/models.py:530
+#: common/models.py:516
msgid "Use the instance name in the title-bar"
msgstr ""
-#: common/models.py:536 company/models.py:97 company/models.py:98
+#: common/models.py:522 company/models.py:99 company/models.py:100
msgid "Company name"
msgstr ""
-#: common/models.py:537
+#: common/models.py:523
msgid "Internal company name"
msgstr ""
-#: common/models.py:542
+#: common/models.py:528
msgid "Base URL"
msgstr ""
-#: common/models.py:543
+#: common/models.py:529
msgid "Base URL for server instance"
msgstr ""
-#: common/models.py:549
+#: common/models.py:535
msgid "Default Currency"
msgstr ""
-#: common/models.py:550
+#: common/models.py:536
msgid "Default currency"
msgstr ""
-#: common/models.py:556
+#: common/models.py:542
msgid "Download from URL"
msgstr ""
-#: common/models.py:557
+#: common/models.py:543
msgid "Allow download of remote images and files from external URL"
msgstr ""
-#: common/models.py:563
+#: common/models.py:549
msgid "Barcode Support"
msgstr ""
-#: common/models.py:564
+#: common/models.py:550
msgid "Enable barcode scanner support"
msgstr ""
-#: common/models.py:570
+#: common/models.py:556
msgid "IPN Regex"
msgstr ""
-#: common/models.py:571
+#: common/models.py:557
msgid "Regular expression pattern for matching Part IPN"
msgstr ""
-#: common/models.py:575
+#: common/models.py:561
msgid "Allow Duplicate IPN"
msgstr ""
-#: common/models.py:576
+#: common/models.py:562
msgid "Allow multiple parts to share the same IPN"
msgstr ""
-#: common/models.py:582
+#: common/models.py:568
msgid "Allow Editing IPN"
msgstr ""
-#: common/models.py:583
+#: common/models.py:569
msgid "Allow changing the IPN value while editing a part"
msgstr ""
-#: common/models.py:589
+#: common/models.py:575
msgid "Copy Part BOM Data"
msgstr ""
-#: common/models.py:590
+#: common/models.py:576
msgid "Copy BOM data by default when duplicating a part"
msgstr ""
-#: common/models.py:596
+#: common/models.py:582
msgid "Copy Part Parameter Data"
msgstr ""
-#: common/models.py:597
+#: common/models.py:583
msgid "Copy parameter data by default when duplicating a part"
msgstr ""
-#: common/models.py:603
+#: common/models.py:589
msgid "Copy Part Test Data"
msgstr ""
-#: common/models.py:604
+#: common/models.py:590
msgid "Copy test data by default when duplicating a part"
msgstr ""
-#: common/models.py:610
+#: common/models.py:596
msgid "Copy Category Parameter Templates"
msgstr ""
-#: common/models.py:611
+#: common/models.py:597
msgid "Copy category parameter templates when creating a part"
msgstr ""
-#: common/models.py:617 part/models.py:2236 report/models.py:187
-#: stock/forms.py:224 templates/js/translated/table_filters.js:25
-#: templates/js/translated/table_filters.js:329
+#: common/models.py:603 part/models.py:2252 report/models.py:187
+#: stock/forms.py:224 templates/js/translated/table_filters.js:38
+#: templates/js/translated/table_filters.js:342
msgid "Template"
msgstr ""
-#: common/models.py:618
+#: common/models.py:604
msgid "Parts are templates by default"
msgstr ""
-#: common/models.py:624 part/models.py:803
-#: templates/js/translated/table_filters.js:133
-#: templates/js/translated/table_filters.js:341
+#: common/models.py:610 part/models.py:805
+#: templates/js/translated/table_filters.js:146
+#: templates/js/translated/table_filters.js:354
msgid "Assembly"
msgstr ""
-#: common/models.py:625
+#: common/models.py:611
msgid "Parts can be assembled from other components by default"
msgstr ""
-#: common/models.py:631 part/models.py:809
-#: templates/js/translated/table_filters.js:345
+#: common/models.py:617 part/models.py:811
+#: templates/js/translated/table_filters.js:358
msgid "Component"
msgstr ""
-#: common/models.py:632
+#: common/models.py:618
msgid "Parts can be used as sub-components by default"
msgstr ""
-#: common/models.py:638 part/models.py:820
+#: common/models.py:624 part/models.py:822
msgid "Purchaseable"
msgstr ""
-#: common/models.py:639
+#: common/models.py:625
msgid "Parts are purchaseable by default"
msgstr ""
-#: common/models.py:645 part/models.py:825
-#: templates/js/translated/table_filters.js:353
+#: common/models.py:631 part/models.py:827
+#: templates/js/translated/table_filters.js:366
msgid "Salable"
msgstr ""
-#: common/models.py:646
+#: common/models.py:632
msgid "Parts are salable by default"
msgstr ""
-#: common/models.py:652 part/models.py:815
-#: templates/js/translated/table_filters.js:33
-#: templates/js/translated/table_filters.js:357
+#: common/models.py:638 part/models.py:817
+#: templates/js/translated/table_filters.js:46
+#: templates/js/translated/table_filters.js:370
msgid "Trackable"
msgstr ""
-#: common/models.py:653
+#: common/models.py:639
msgid "Parts are trackable by default"
msgstr ""
-#: common/models.py:659 part/models.py:835
-#: part/templates/part/part_base.html:61
-#: templates/js/translated/table_filters.js:29
+#: common/models.py:645 part/models.py:837
+#: part/templates/part/part_base.html:66
+#: templates/js/translated/table_filters.js:42
msgid "Virtual"
msgstr ""
-#: common/models.py:660
+#: common/models.py:646
msgid "Parts are virtual by default"
msgstr ""
-#: common/models.py:667
+#: common/models.py:653
msgid "Show Quantity in Forms"
msgstr ""
-#: common/models.py:668
+#: common/models.py:654
msgid "Display available part quantity in some forms"
msgstr ""
-#: common/models.py:674
+#: common/models.py:660
msgid "Show Import in Views"
msgstr ""
-#: common/models.py:675
+#: common/models.py:661
msgid "Display the import wizard in some part views"
msgstr ""
-#: common/models.py:681
+#: common/models.py:667
msgid "Show Price in Forms"
msgstr ""
-#: common/models.py:682
+#: common/models.py:668
msgid "Display part price in some forms"
msgstr ""
-#: common/models.py:688
+#: common/models.py:674
msgid "Show related parts"
msgstr ""
-#: common/models.py:689
+#: common/models.py:675
msgid "Display related parts for a part"
msgstr ""
-#: common/models.py:695
+#: common/models.py:681
msgid "Create initial stock"
msgstr ""
-#: common/models.py:696
+#: common/models.py:682
msgid "Create initial stock on part creation"
msgstr ""
-#: common/models.py:702
+#: common/models.py:688
msgid "Internal Prices"
msgstr ""
-#: common/models.py:703
+#: common/models.py:689
msgid "Enable internal prices for parts"
msgstr ""
-#: common/models.py:709
+#: common/models.py:695
msgid "Internal Price as BOM-Price"
msgstr ""
-#: common/models.py:710
+#: common/models.py:696
msgid "Use the internal price (if set) in BOM-price calculations"
msgstr ""
-#: common/models.py:716 templates/stats.html:25
+#: common/models.py:702 templates/stats.html:25
msgid "Debug Mode"
msgstr ""
-#: common/models.py:717
+#: common/models.py:703
msgid "Generate reports in debug mode (HTML output)"
msgstr ""
-#: common/models.py:723
+#: common/models.py:709
msgid "Page Size"
msgstr ""
-#: common/models.py:724
+#: common/models.py:710
msgid "Default page size for PDF reports"
msgstr ""
-#: common/models.py:734
+#: common/models.py:720
msgid "Test Reports"
msgstr ""
-#: common/models.py:735
+#: common/models.py:721
msgid "Enable generation of test reports"
msgstr ""
-#: common/models.py:741
+#: common/models.py:727
msgid "Stock Expiry"
msgstr ""
-#: common/models.py:742
+#: common/models.py:728
msgid "Enable stock expiry functionality"
msgstr ""
-#: common/models.py:748
+#: common/models.py:734
msgid "Sell Expired Stock"
msgstr ""
-#: common/models.py:749
+#: common/models.py:735
msgid "Allow sale of expired stock"
msgstr ""
-#: common/models.py:755
+#: common/models.py:741
msgid "Stock Stale Time"
msgstr ""
-#: common/models.py:756
+#: common/models.py:742
msgid "Number of days stock items are considered stale before expiring"
msgstr ""
-#: common/models.py:758
+#: common/models.py:744
msgid "days"
msgstr ""
-#: common/models.py:763
+#: common/models.py:749
msgid "Build Expired Stock"
msgstr ""
-#: common/models.py:764
+#: common/models.py:750
msgid "Allow building with expired stock"
msgstr ""
-#: common/models.py:770
+#: common/models.py:756
msgid "Stock Ownership Control"
msgstr ""
-#: common/models.py:771
+#: common/models.py:757
msgid "Enable ownership control over stock locations and items"
msgstr ""
-#: common/models.py:777
+#: common/models.py:763
msgid "Group by Part"
msgstr ""
-#: common/models.py:778
+#: common/models.py:764
msgid "Group stock items by part reference in table views"
msgstr ""
-#: common/models.py:784
+#: common/models.py:770
msgid "Build Order Reference Prefix"
msgstr ""
-#: common/models.py:785
+#: common/models.py:771
msgid "Prefix value for build order reference"
msgstr ""
-#: common/models.py:790
+#: common/models.py:776
msgid "Build Order Reference Regex"
msgstr ""
-#: common/models.py:791
+#: common/models.py:777
msgid "Regular expression pattern for matching build order reference"
msgstr ""
-#: common/models.py:795
+#: common/models.py:781
msgid "Sales Order Reference Prefix"
msgstr ""
-#: common/models.py:796
+#: common/models.py:782
msgid "Prefix value for sales order reference"
msgstr ""
-#: common/models.py:801
+#: common/models.py:787
msgid "Purchase Order Reference Prefix"
msgstr ""
-#: common/models.py:802
+#: common/models.py:788
msgid "Prefix value for purchase order reference"
msgstr ""
-#: common/models.py:826
+#: common/models.py:794
+msgid "Enable build"
+msgstr ""
+
+#: common/models.py:795
+msgid "Enable build functionality in InvenTree interface"
+msgstr ""
+
+#: common/models.py:800
+msgid "Enable buy"
+msgstr ""
+
+#: common/models.py:801
+msgid "Enable buy functionality in InvenTree interface"
+msgstr ""
+
+#: common/models.py:806
+msgid "Enable sell"
+msgstr ""
+
+#: common/models.py:807
+msgid "Enable sell functionality in InvenTree interface"
+msgstr ""
+
+#: common/models.py:812
+msgid "Enable stock"
+msgstr ""
+
+#: common/models.py:813
+msgid "Enable stock functionality in InvenTree interface"
+msgstr ""
+
+#: common/models.py:818
+msgid "Enable SO"
+msgstr ""
+
+#: common/models.py:819
+msgid "Enable SO functionality in InvenTree interface"
+msgstr ""
+
+#: common/models.py:824
+msgid "Enable PO"
+msgstr ""
+
+#: common/models.py:825
+msgid "Enable PO functionality in InvenTree interface"
+msgstr ""
+
+#: common/models.py:850
msgid "Show starred parts"
msgstr ""
-#: common/models.py:827
+#: common/models.py:851
msgid "Show starred parts on the homepage"
msgstr ""
-#: common/models.py:832
+#: common/models.py:856
msgid "Show latest parts"
msgstr ""
-#: common/models.py:833
+#: common/models.py:857
msgid "Show latest parts on the homepage"
msgstr ""
-#: common/models.py:838
+#: common/models.py:862
msgid "Recent Part Count"
msgstr ""
-#: common/models.py:839
+#: common/models.py:863
msgid "Number of recent parts to display on index page"
msgstr ""
-#: common/models.py:845
+#: common/models.py:869
msgid "Show unvalidated BOMs"
msgstr ""
-#: common/models.py:846
+#: common/models.py:870
msgid "Show BOMs that await validation on the homepage"
msgstr ""
-#: common/models.py:851
+#: common/models.py:875
msgid "Show recent stock changes"
msgstr ""
-#: common/models.py:852
+#: common/models.py:876
msgid "Show recently changed stock items on the homepage"
msgstr ""
-#: common/models.py:857
+#: common/models.py:881
msgid "Recent Stock Count"
msgstr ""
-#: common/models.py:858
+#: common/models.py:882
msgid "Number of recent stock items to display on index page"
msgstr ""
-#: common/models.py:863
+#: common/models.py:887
msgid "Show low stock"
msgstr ""
-#: common/models.py:864
+#: common/models.py:888
msgid "Show low stock items on the homepage"
msgstr ""
-#: common/models.py:869
+#: common/models.py:893
msgid "Show depleted stock"
msgstr ""
-#: common/models.py:870
+#: common/models.py:894
msgid "Show depleted stock items on the homepage"
msgstr ""
-#: common/models.py:875
+#: common/models.py:899
msgid "Show needed stock"
msgstr ""
-#: common/models.py:876
+#: common/models.py:900
msgid "Show stock items needed for builds on the homepage"
msgstr ""
-#: common/models.py:881
+#: common/models.py:905
msgid "Show expired stock"
msgstr ""
-#: common/models.py:882
+#: common/models.py:906
msgid "Show expired stock items on the homepage"
msgstr ""
-#: common/models.py:887
+#: common/models.py:911
msgid "Show stale stock"
msgstr ""
-#: common/models.py:888
+#: common/models.py:912
msgid "Show stale stock items on the homepage"
msgstr ""
-#: common/models.py:893
+#: common/models.py:917
msgid "Show pending builds"
msgstr ""
-#: common/models.py:894
+#: common/models.py:918
msgid "Show pending builds on the homepage"
msgstr ""
-#: common/models.py:899
+#: common/models.py:923
msgid "Show overdue builds"
msgstr ""
-#: common/models.py:900
+#: common/models.py:924
msgid "Show overdue builds on the homepage"
msgstr ""
-#: common/models.py:905
+#: common/models.py:929
msgid "Show outstanding POs"
msgstr ""
-#: common/models.py:906
+#: common/models.py:930
msgid "Show outstanding POs on the homepage"
msgstr ""
-#: common/models.py:911
+#: common/models.py:935
msgid "Show overdue POs"
msgstr ""
-#: common/models.py:912
+#: common/models.py:936
msgid "Show overdue POs on the homepage"
msgstr ""
-#: common/models.py:917
+#: common/models.py:941
msgid "Show outstanding SOs"
msgstr ""
-#: common/models.py:918
+#: common/models.py:942
msgid "Show outstanding SOs on the homepage"
msgstr ""
-#: common/models.py:923
+#: common/models.py:947
msgid "Show overdue SOs"
msgstr ""
-#: common/models.py:924
+#: common/models.py:948
msgid "Show overdue SOs on the homepage"
msgstr ""
-#: common/models.py:930
+#: common/models.py:954
msgid "Inline label display"
msgstr ""
-#: common/models.py:931
+#: common/models.py:955
msgid "Display PDF labels in the browser, instead of downloading as a file"
msgstr ""
-#: common/models.py:937
+#: common/models.py:961
msgid "Inline report display"
msgstr ""
-#: common/models.py:938
+#: common/models.py:962
msgid "Display PDF reports in the browser, instead of downloading as a file"
msgstr ""
-#: common/models.py:944
+#: common/models.py:968
msgid "Search Preview Results"
msgstr ""
-#: common/models.py:945
+#: common/models.py:969
msgid "Number of results to show in search preview window"
msgstr ""
-#: common/models.py:1002 company/forms.py:43
+#: common/models.py:1026 company/forms.py:43
msgid "Price break quantity"
msgstr ""
-#: common/models.py:1009 company/templates/company/supplier_part.html:231
-#: templates/js/translated/part.js:1153
+#: common/models.py:1033 company/templates/company/supplier_part.html:231
+#: templates/js/translated/part.js:1322
msgid "Price"
msgstr ""
-#: common/models.py:1010
+#: common/models.py:1034
msgid "Unit price at specified quantity"
msgstr ""
-#: common/models.py:1103
+#: common/models.py:1127
msgid "Default"
msgstr ""
@@ -2124,7 +2201,7 @@ msgstr ""
#: order/templates/order/po_navbar.html:19
#: order/templates/order/po_navbar.html:22
#: order/templates/order/purchase_order_detail.html:26 order/views.py:290
-#: part/templates/part/bom_upload/upload_file.html:45
+#: part/templates/part/bom_upload/upload_file.html:65
#: part/templates/part/import_wizard/part_upload.html:45 part/views.py:268
#: part/views.py:882
msgid "Upload File"
@@ -2155,7 +2232,7 @@ msgstr ""
#: order/templates/order/order_wizard/po_upload.html:40
#: 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:43
+#: part/templates/part/bom_upload/upload_file.html:63
#: 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:43
@@ -2170,244 +2247,249 @@ msgstr ""
msgid "Image URL"
msgstr ""
-#: company/models.py:102
+#: company/models.py:104
msgid "Company description"
msgstr ""
-#: company/models.py:103
+#: company/models.py:105
msgid "Description of the company"
msgstr ""
-#: company/models.py:109 company/templates/company/company_base.html:70
-#: templates/js/translated/company.js:303
+#: company/models.py:111 company/templates/company/company_base.html:70
+#: templates/js/translated/company.js:348
msgid "Website"
msgstr ""
-#: company/models.py:110
+#: company/models.py:112
msgid "Company website URL"
msgstr ""
-#: company/models.py:114 company/templates/company/company_base.html:88
+#: company/models.py:116 company/templates/company/company_base.html:88
msgid "Address"
msgstr ""
-#: company/models.py:115
+#: company/models.py:117
msgid "Company address"
msgstr ""
-#: company/models.py:118
+#: company/models.py:120
msgid "Phone number"
msgstr ""
-#: company/models.py:119
+#: company/models.py:121
msgid "Contact phone number"
msgstr ""
-#: company/models.py:122 company/templates/company/company_base.html:102
+#: company/models.py:124 company/templates/company/company_base.html:102
msgid "Email"
msgstr ""
-#: company/models.py:122
+#: company/models.py:124
msgid "Contact email address"
msgstr ""
-#: company/models.py:125 company/templates/company/company_base.html:109
+#: company/models.py:127 company/templates/company/company_base.html:109
msgid "Contact"
msgstr ""
-#: company/models.py:126
+#: company/models.py:128
msgid "Point of contact"
msgstr ""
-#: company/models.py:128 company/models.py:345 company/models.py:513
-#: order/models.py:160 part/models.py:712
+#: company/models.py:130 company/models.py:347 company/models.py:563
+#: order/models.py:160 part/models.py:714
#: report/templates/report/inventree_build_order_base.html:165
-#: templates/js/translated/company.js:486
-#: templates/js/translated/company.js:768 templates/js/translated/part.js:819
+#: templates/js/translated/company.js:535
+#: templates/js/translated/company.js:823 templates/js/translated/part.js:972
msgid "Link"
msgstr ""
-#: company/models.py:128
+#: company/models.py:130
msgid "Link to external company information"
msgstr ""
-#: company/models.py:136 part/models.py:722
+#: company/models.py:138 part/models.py:724
msgid "Image"
msgstr ""
-#: company/models.py:141
+#: company/models.py:143
msgid "is customer"
msgstr ""
-#: company/models.py:141
+#: company/models.py:143
msgid "Do you sell items to this company?"
msgstr ""
-#: company/models.py:143
+#: company/models.py:145
msgid "is supplier"
msgstr ""
-#: company/models.py:143
+#: company/models.py:145
msgid "Do you purchase items from this company?"
msgstr ""
-#: company/models.py:145
+#: company/models.py:147
msgid "is manufacturer"
msgstr ""
-#: company/models.py:145
+#: company/models.py:147
msgid "Does this company manufacture parts?"
msgstr ""
-#: company/models.py:149 company/serializers.py:245
-#: company/templates/company/company_base.html:76
+#: company/models.py:151 company/serializers.py:264
+#: company/templates/company/company_base.html:76 stock/serializers.py:155
msgid "Currency"
msgstr ""
-#: company/models.py:152
+#: company/models.py:154
msgid "Default currency used for this company"
msgstr ""
-#: company/models.py:317 company/models.py:484 stock/models.py:448
+#: company/models.py:319 company/models.py:534 stock/models.py:454
#: stock/templates/stock/item_base.html:237
msgid "Base Part"
msgstr ""
-#: company/models.py:321 company/models.py:488 order/views.py:1082
+#: company/models.py:323 company/models.py:538 order/views.py:1082
msgid "Select part"
msgstr ""
-#: company/models.py:332 company/templates/company/company_base.html:116
+#: company/models.py:334 company/templates/company/company_base.html:116
#: company/templates/company/manufacturer_part.html:89
#: company/templates/company/supplier_part.html:98 part/bom.py:170
#: part/bom.py:241 stock/templates/stock/item_base.html:366
-#: templates/js/translated/company.js:287
-#: templates/js/translated/company.js:463
-#: templates/js/translated/company.js:739
+#: templates/js/translated/company.js:332
+#: templates/js/translated/company.js:512
+#: templates/js/translated/company.js:794 templates/js/translated/part.js:222
msgid "Manufacturer"
msgstr ""
-#: company/models.py:333
+#: company/models.py:335 templates/js/translated/part.js:223
msgid "Select manufacturer"
msgstr ""
-#: company/models.py:339 company/templates/company/manufacturer_part.html:93
-#: company/templates/company/supplier_part.html:106
-#: order/templates/order/purchase_order_detail.html:331 part/bom.py:171
-#: part/bom.py:242 templates/js/translated/company.js:479
-#: templates/js/translated/company.js:757
+#: company/models.py:341 company/templates/company/manufacturer_part.html:93
+#: company/templates/company/supplier_part.html:106 part/bom.py:171
+#: part/bom.py:242 templates/js/translated/company.js:528
+#: templates/js/translated/company.js:812 templates/js/translated/order.js:505
+#: templates/js/translated/part.js:233
msgid "MPN"
msgstr ""
-#: company/models.py:340
+#: company/models.py:342 templates/js/translated/part.js:234
msgid "Manufacturer Part Number"
msgstr ""
-#: company/models.py:346
+#: company/models.py:348
msgid "URL for external manufacturer part link"
msgstr ""
-#: company/models.py:352
+#: company/models.py:354
msgid "Manufacturer part description"
msgstr ""
-#: company/models.py:406 company/models.py:507
+#: company/models.py:408 company/models.py:557
#: company/templates/company/manufacturer_part.html:6
#: company/templates/company/manufacturer_part.html:23
#: stock/templates/stock/item_base.html:376
msgid "Manufacturer Part"
msgstr ""
-#: company/models.py:413
+#: company/models.py:415
msgid "Parameter name"
msgstr ""
-#: company/models.py:419
+#: company/models.py:421
#: report/templates/report/inventree_test_report_base.html:90
-#: stock/models.py:1808 templates/InvenTree/settings/header.html:8
-#: templates/js/translated/company.js:589 templates/js/translated/part.js:480
-#: templates/js/translated/stock.js:505
+#: stock/models.py:1819 templates/InvenTree/settings/header.html:8
+#: templates/js/translated/company.js:642 templates/js/translated/part.js:612
+#: templates/js/translated/stock.js:576
msgid "Value"
msgstr ""
-#: company/models.py:420
+#: company/models.py:422
msgid "Parameter value"
msgstr ""
-#: company/models.py:426 part/models.py:797 part/models.py:2204
-#: templates/js/translated/company.js:595 templates/js/translated/part.js:486
+#: company/models.py:428 part/models.py:799 part/models.py:2220
+#: templates/js/translated/company.js:648 templates/js/translated/part.js:618
msgid "Units"
msgstr ""
-#: company/models.py:427
+#: company/models.py:429
msgid "Parameter units"
msgstr ""
-#: company/models.py:494 company/templates/company/company_base.html:121
+#: company/models.py:501
+msgid "Linked manufacturer part must reference the same base part"
+msgstr ""
+
+#: company/models.py:544 company/templates/company/company_base.html:121
#: company/templates/company/supplier_part.html:88 order/models.py:260
#: order/templates/order/order_base.html:92
#: order/templates/order/order_wizard/select_pos.html:30 part/bom.py:175
#: part/bom.py:286 stock/templates/stock/item_base.html:383
-#: templates/js/translated/company.js:291
-#: templates/js/translated/company.js:713 templates/js/translated/order.js:254
+#: templates/js/translated/company.js:336
+#: templates/js/translated/company.js:768 templates/js/translated/order.js:328
+#: templates/js/translated/part.js:203
msgid "Supplier"
msgstr ""
-#: company/models.py:495
+#: company/models.py:545 templates/js/translated/part.js:204
msgid "Select supplier"
msgstr ""
-#: company/models.py:500 company/templates/company/supplier_part.html:92
-#: order/templates/order/purchase_order_detail.html:318 part/bom.py:176
-#: part/bom.py:287
+#: company/models.py:550 company/templates/company/supplier_part.html:92
+#: part/bom.py:176 part/bom.py:287 templates/js/translated/order.js:492
+#: templates/js/translated/part.js:214
msgid "SKU"
msgstr ""
-#: company/models.py:501
+#: company/models.py:551 templates/js/translated/part.js:215
msgid "Supplier stock keeping unit"
msgstr ""
-#: company/models.py:508
+#: company/models.py:558
msgid "Select manufacturer part"
msgstr ""
-#: company/models.py:514
+#: company/models.py:564
msgid "URL for external supplier part link"
msgstr ""
-#: company/models.py:520
+#: company/models.py:570
msgid "Supplier part description"
msgstr ""
-#: company/models.py:525 company/templates/company/supplier_part.html:120
-#: part/models.py:2352 report/templates/report/inventree_po_report.html:93
+#: company/models.py:575 company/templates/company/supplier_part.html:120
+#: part/models.py:2368 report/templates/report/inventree_po_report.html:93
#: report/templates/report/inventree_so_report.html:93
msgid "Note"
msgstr ""
-#: company/models.py:529 part/models.py:1590
+#: company/models.py:579 part/models.py:1599
msgid "base cost"
msgstr ""
-#: company/models.py:529 part/models.py:1590
+#: company/models.py:579 part/models.py:1599
msgid "Minimum charge (e.g. stocking fee)"
msgstr ""
-#: company/models.py:531 company/templates/company/supplier_part.html:113
-#: stock/models.py:472 stock/templates/stock/item_base.html:324
-#: templates/js/translated/company.js:789 templates/js/translated/stock.js:1086
+#: company/models.py:581 company/templates/company/supplier_part.html:113
+#: stock/models.py:478 stock/templates/stock/item_base.html:324
+#: templates/js/translated/company.js:844 templates/js/translated/stock.js:1057
msgid "Packaging"
msgstr ""
-#: company/models.py:531
+#: company/models.py:581
msgid "Part packaging"
msgstr ""
-#: company/models.py:533 part/models.py:1592
+#: company/models.py:583 part/models.py:1601
msgid "multiple"
msgstr ""
-#: company/models.py:533
+#: company/models.py:583
msgid "Order multiple"
msgstr ""
@@ -2421,7 +2503,7 @@ msgstr ""
#: company/templates/company/company_base.html:9
#: company/templates/company/company_base.html:35
-#: templates/InvenTree/search.html:304 templates/js/translated/company.js:276
+#: templates/InvenTree/search.html:304 templates/js/translated/company.js:321
msgid "Company"
msgstr ""
@@ -2436,7 +2518,7 @@ msgid "Download image from URL"
msgstr ""
#: company/templates/company/company_base.html:46
-#: templates/js/translated/order.js:83
+#: templates/js/translated/order.js:117
msgid "Create Purchase Order"
msgstr ""
@@ -2461,16 +2543,16 @@ msgstr ""
msgid "Phone"
msgstr ""
-#: company/templates/company/company_base.html:126 order/models.py:544
-#: order/templates/order/sales_order_base.html:94 stock/models.py:490
-#: stock/models.py:491 stock/templates/stock/item_base.html:276
-#: templates/js/translated/company.js:283 templates/js/translated/order.js:351
-#: templates/js/translated/stock.js:1467
+#: company/templates/company/company_base.html:126 order/models.py:550
+#: order/templates/order/sales_order_base.html:94 stock/models.py:496
+#: stock/models.py:497 stock/templates/stock/item_base.html:276
+#: templates/js/translated/company.js:328 templates/js/translated/order.js:692
+#: templates/js/translated/stock.js:1608
msgid "Customer"
msgstr ""
#: company/templates/company/company_base.html:193
-#: part/templates/part/part_base.html:405
+#: part/templates/part/part_base.html:418
msgid "Upload Image"
msgstr ""
@@ -2491,8 +2573,8 @@ msgstr ""
msgid "New Supplier Part"
msgstr ""
-#: company/templates/company/detail.html:28
-#: company/templates/company/detail.html:70
+#: company/templates/company/detail.html:27
+#: company/templates/company/detail.html:67
#: company/templates/company/manufacturer_part.html:112
#: company/templates/company/manufacturer_part.html:136
#: part/templates/part/category.html:135 part/templates/part/detail.html:292
@@ -2500,106 +2582,106 @@ msgstr ""
msgid "Options"
msgstr ""
-#: company/templates/company/detail.html:33
-#: company/templates/company/detail.html:75
+#: company/templates/company/detail.html:32
+#: company/templates/company/detail.html:72
#: part/templates/part/category.html:140
msgid "Order parts"
msgstr ""
-#: company/templates/company/detail.html:36
-#: company/templates/company/detail.html:78
+#: company/templates/company/detail.html:35
+#: company/templates/company/detail.html:75
msgid "Delete parts"
msgstr ""
-#: company/templates/company/detail.html:36
-#: company/templates/company/detail.html:78
+#: company/templates/company/detail.html:35
+#: company/templates/company/detail.html:75
msgid "Delete Parts"
msgstr ""
-#: company/templates/company/detail.html:56 templates/InvenTree/search.html:149
+#: company/templates/company/detail.html:54 templates/InvenTree/search.html:149
msgid "Manufacturer Parts"
msgstr ""
-#: company/templates/company/detail.html:64
+#: company/templates/company/detail.html:62
msgid "Create new manufacturer part"
msgstr ""
-#: company/templates/company/detail.html:65 part/templates/part/detail.html:312
+#: company/templates/company/detail.html:63 part/templates/part/detail.html:312
msgid "New Manufacturer Part"
msgstr ""
-#: company/templates/company/detail.html:97
+#: company/templates/company/detail.html:93
msgid "Supplier Stock"
msgstr ""
-#: company/templates/company/detail.html:106
-#: company/templates/company/navbar.html:40
-#: company/templates/company/navbar.html:43
+#: company/templates/company/detail.html:102
+#: company/templates/company/navbar.html:46
+#: company/templates/company/navbar.html:49
#: order/templates/order/purchase_orders.html:8
#: order/templates/order/purchase_orders.html:13
-#: part/templates/part/detail.html:50 part/templates/part/navbar.html:71
-#: part/templates/part/navbar.html:74 templates/InvenTree/index.html:260
+#: part/templates/part/detail.html:50 part/templates/part/navbar.html:82
+#: part/templates/part/navbar.html:85 templates/InvenTree/index.html:260
#: templates/InvenTree/search.html:325
#: templates/InvenTree/settings/navbar.html:107
-#: templates/InvenTree/settings/navbar.html:109 templates/navbar.html:37
+#: templates/InvenTree/settings/navbar.html:109 templates/navbar.html:44
#: users/models.py:45
msgid "Purchase Orders"
msgstr ""
-#: company/templates/company/detail.html:112
+#: company/templates/company/detail.html:108
#: order/templates/order/purchase_orders.html:20
msgid "Create new purchase order"
msgstr ""
-#: company/templates/company/detail.html:113
+#: company/templates/company/detail.html:109
#: order/templates/order/purchase_orders.html:21
msgid "New Purchase Order"
msgstr ""
-#: company/templates/company/detail.html:128
-#: company/templates/company/navbar.html:49
-#: company/templates/company/navbar.html:52
+#: company/templates/company/detail.html:124
+#: company/templates/company/navbar.html:55
+#: company/templates/company/navbar.html:58
#: order/templates/order/sales_orders.html:8
#: order/templates/order/sales_orders.html:13
-#: part/templates/part/detail.html:71 part/templates/part/navbar.html:79
-#: part/templates/part/navbar.html:82 templates/InvenTree/index.html:291
+#: part/templates/part/detail.html:71 part/templates/part/navbar.html:91
+#: part/templates/part/navbar.html:94 templates/InvenTree/index.html:291
#: templates/InvenTree/search.html:345
#: templates/InvenTree/settings/navbar.html:113
-#: templates/InvenTree/settings/navbar.html:115 templates/navbar.html:46
+#: templates/InvenTree/settings/navbar.html:115 templates/navbar.html:55
#: users/models.py:46
msgid "Sales Orders"
msgstr ""
-#: company/templates/company/detail.html:134
+#: company/templates/company/detail.html:130
#: order/templates/order/sales_orders.html:20
msgid "Create new sales order"
msgstr ""
-#: company/templates/company/detail.html:135
+#: company/templates/company/detail.html:131
#: order/templates/order/sales_orders.html:21
msgid "New Sales Order"
msgstr ""
-#: company/templates/company/detail.html:151
-#: company/templates/company/navbar.html:55
-#: company/templates/company/navbar.html:58
-#: templates/js/translated/build.js:597
+#: company/templates/company/detail.html:147
+#: company/templates/company/navbar.html:61
+#: company/templates/company/navbar.html:64
+#: templates/js/translated/build.js:620
msgid "Assigned Stock"
msgstr ""
-#: company/templates/company/detail.html:169
+#: company/templates/company/detail.html:165
msgid "Company Notes"
msgstr ""
#: company/templates/company/detail.html:364
#: company/templates/company/manufacturer_part.html:200
-#: part/templates/part/detail.html:826
+#: part/templates/part/detail.html:357
msgid "Delete Supplier Parts?"
msgstr ""
#: company/templates/company/detail.html:365
#: company/templates/company/manufacturer_part.html:201
-#: part/templates/part/detail.html:827
+#: part/templates/part/detail.html:358
msgid "All selected supplier parts will be deleted"
msgstr ""
@@ -2610,17 +2692,17 @@ msgstr ""
#: company/templates/company/manufacturer_part.html:40
#: company/templates/company/supplier_part.html:40
#: company/templates/company/supplier_part.html:146
-#: part/templates/part/detail.html:55 part/templates/part/part_base.html:109
+#: part/templates/part/detail.html:55 part/templates/part/part_base.html:116
msgid "Order part"
msgstr ""
#: company/templates/company/manufacturer_part.html:45
-#: templates/js/translated/company.js:511
+#: templates/js/translated/company.js:560
msgid "Edit manufacturer part"
msgstr ""
#: company/templates/company/manufacturer_part.html:49
-#: templates/js/translated/company.js:512
+#: templates/js/translated/company.js:561
msgid "Delete manufacturer part"
msgstr ""
@@ -2635,9 +2717,9 @@ msgstr ""
#: company/templates/company/manufacturer_part.html:103
#: company/templates/company/manufacturer_part_navbar.html:21
-#: company/views.py:49 part/templates/part/navbar.html:65
-#: part/templates/part/navbar.html:68 part/templates/part/prices.html:144
-#: templates/InvenTree/search.html:316 templates/navbar.html:35
+#: company/views.py:49 part/templates/part/navbar.html:75
+#: part/templates/part/navbar.html:78 part/templates/part/prices.html:163
+#: templates/InvenTree/search.html:316 templates/navbar.html:41
msgid "Suppliers"
msgstr ""
@@ -2650,8 +2732,8 @@ msgstr ""
#: company/templates/company/manufacturer_part.html:138
#: company/templates/company/manufacturer_part.html:239
#: part/templates/part/detail.html:214 part/templates/part/detail.html:294
-#: part/templates/part/detail.html:317 templates/js/translated/company.js:377
-#: users/models.py:194
+#: part/templates/part/detail.html:317 templates/js/translated/company.js:424
+#: templates/js/translated/helpers.js:31 users/models.py:194
msgid "Delete"
msgstr ""
@@ -2660,8 +2742,8 @@ msgstr ""
#: company/templates/company/manufacturer_part_navbar.html:14
#: part/templates/part/category_navbar.html:38
#: part/templates/part/category_navbar.html:41
-#: part/templates/part/detail.html:155 part/templates/part/navbar.html:14
-#: part/templates/part/navbar.html:17
+#: part/templates/part/detail.html:155 part/templates/part/navbar.html:20
+#: part/templates/part/navbar.html:23
msgid "Parameters"
msgstr ""
@@ -2677,7 +2759,7 @@ msgid "Delete parameters"
msgstr ""
#: company/templates/company/manufacturer_part.html:176
-#: part/templates/part/detail.html:719
+#: part/templates/part/detail.html:834
msgid "Add Parameter"
msgstr ""
@@ -2694,18 +2776,18 @@ msgid "Manufacturer Part Stock"
msgstr ""
#: company/templates/company/manufacturer_part_navbar.html:29
-#: company/templates/company/navbar.html:34
+#: company/templates/company/navbar.html:39
#: company/templates/company/supplier_part_navbar.html:15
-#: part/templates/part/navbar.html:31 stock/api.py:53
+#: part/templates/part/navbar.html:38 stock/api.py:54
#: stock/templates/stock/loc_link.html:7 stock/templates/stock/location.html:36
#: stock/templates/stock/stock_app_base.html:10
#: templates/InvenTree/index.html:150 templates/InvenTree/search.html:196
#: templates/InvenTree/search.html:232
#: templates/InvenTree/settings/navbar.html:95
#: templates/InvenTree/settings/navbar.html:97
-#: templates/js/translated/part.js:401 templates/js/translated/part.js:626
-#: templates/js/translated/part.js:786 templates/js/translated/stock.js:133
-#: templates/js/translated/stock.js:935 templates/navbar.html:26
+#: templates/js/translated/part.js:529 templates/js/translated/part.js:758
+#: templates/js/translated/part.js:934 templates/js/translated/stock.js:202
+#: templates/js/translated/stock.js:850 templates/navbar.html:32
msgid "Stock"
msgstr ""
@@ -2718,41 +2800,41 @@ msgstr ""
msgid "Orders"
msgstr ""
-#: company/templates/company/navbar.html:13
-#: company/templates/company/navbar.html:16
+#: company/templates/company/navbar.html:17
+#: company/templates/company/navbar.html:20
msgid "Manufactured Parts"
msgstr ""
-#: company/templates/company/navbar.html:22
-#: company/templates/company/navbar.html:25
+#: company/templates/company/navbar.html:26
+#: company/templates/company/navbar.html:29
msgid "Supplied Parts"
msgstr ""
-#: company/templates/company/navbar.html:31 part/templates/part/navbar.html:28
+#: company/templates/company/navbar.html:36 part/templates/part/navbar.html:35
#: stock/templates/stock/location.html:119
#: stock/templates/stock/location.html:134
#: stock/templates/stock/location.html:148
#: stock/templates/stock/location_navbar.html:18
#: stock/templates/stock/location_navbar.html:21
-#: templates/InvenTree/search.html:198 templates/js/translated/stock.js:1366
+#: templates/InvenTree/search.html:198 templates/js/translated/stock.js:1507
#: templates/stats.html:93 templates/stats.html:102 users/models.py:43
msgid "Stock Items"
msgstr ""
#: company/templates/company/supplier_part.html:7
-#: company/templates/company/supplier_part.html:24 stock/models.py:457
+#: company/templates/company/supplier_part.html:24 stock/models.py:463
#: stock/templates/stock/item_base.html:388
-#: templates/js/translated/company.js:729 templates/js/translated/stock.js:1058
+#: templates/js/translated/company.js:784 templates/js/translated/stock.js:1014
msgid "Supplier Part"
msgstr ""
#: company/templates/company/supplier_part.html:44
-#: templates/js/translated/company.js:802
+#: templates/js/translated/company.js:857
msgid "Edit supplier part"
msgstr ""
#: company/templates/company/supplier_part.html:48
-#: templates/js/translated/company.js:803
+#: templates/js/translated/company.js:858
msgid "Delete supplier part"
msgstr ""
@@ -2776,13 +2858,13 @@ msgid "Order Part"
msgstr ""
#: company/templates/company/supplier_part.html:158
-#: part/templates/part/navbar.html:58 part/templates/part/prices.html:7
+#: part/templates/part/navbar.html:67 part/templates/part/prices.html:7
msgid "Pricing Information"
msgstr ""
#: company/templates/company/supplier_part.html:164
#: company/templates/company/supplier_part.html:265
-#: part/templates/part/prices.html:253 part/views.py:1722
+#: part/templates/part/prices.html:271 part/views.py:1730
msgid "Add Price Break"
msgstr ""
@@ -2790,11 +2872,11 @@ msgstr ""
msgid "No price break information found"
msgstr ""
-#: company/templates/company/supplier_part.html:199 part/views.py:1784
+#: company/templates/company/supplier_part.html:199 part/views.py:1792
msgid "Delete Price Break"
msgstr ""
-#: company/templates/company/supplier_part.html:213 part/views.py:1770
+#: company/templates/company/supplier_part.html:213 part/views.py:1778
msgid "Edit Price Break"
msgstr ""
@@ -2818,8 +2900,8 @@ msgstr ""
msgid "New Supplier"
msgstr ""
-#: company/views.py:55 part/templates/part/prices.html:148
-#: templates/InvenTree/search.html:306 templates/navbar.html:36
+#: company/views.py:55 part/templates/part/prices.html:167
+#: templates/InvenTree/search.html:306 templates/navbar.html:42
msgid "Manufacturers"
msgstr ""
@@ -2828,7 +2910,7 @@ msgid "New Manufacturer"
msgstr ""
#: company/views.py:61 templates/InvenTree/search.html:336
-#: templates/navbar.html:45
+#: templates/navbar.html:53
msgid "Customers"
msgstr ""
@@ -2930,6 +3012,10 @@ msgstr ""
msgid "Part query filters (comma-separated value of key=value pairs)"
msgstr ""
+#: order/api.py:302
+msgid "Destination location must be specified"
+msgstr ""
+
#: order/forms.py:30 order/templates/order/order_base.html:47
msgid "Place order"
msgstr ""
@@ -2979,11 +3065,11 @@ msgstr ""
msgid "Order notes"
msgstr ""
-#: order/models.py:247 order/models.py:534
+#: order/models.py:247 order/models.py:540
msgid "Order reference"
msgstr ""
-#: order/models.py:252 order/models.py:549
+#: order/models.py:252 order/models.py:555
msgid "Purchase order status"
msgstr ""
@@ -2992,7 +3078,7 @@ msgid "Company from which the items are being ordered"
msgstr ""
#: order/models.py:264 order/templates/order/order_base.html:98
-#: templates/js/translated/order.js:263
+#: templates/js/translated/order.js:337
msgid "Supplier Reference"
msgstr ""
@@ -3024,7 +3110,7 @@ msgstr ""
msgid "Date order was completed"
msgstr ""
-#: order/models.py:313 stock/models.py:345 stock/models.py:1060
+#: order/models.py:313 stock/models.py:351 stock/models.py:1072
msgid "Quantity must be greater than zero"
msgstr ""
@@ -3032,150 +3118,182 @@ msgstr ""
msgid "Part supplier must match PO supplier"
msgstr ""
-#: order/models.py:416
+#: order/models.py:421
msgid "Lines can only be received against an order marked as 'Placed'"
msgstr ""
-#: order/models.py:420
+#: order/models.py:425
msgid "Quantity must be an integer"
msgstr ""
-#: order/models.py:422
+#: order/models.py:427
msgid "Quantity must be a positive number"
msgstr ""
-#: order/models.py:545
+#: order/models.py:551
msgid "Company to which the items are being sold"
msgstr ""
-#: order/models.py:551
+#: order/models.py:557
msgid "Customer Reference "
msgstr ""
-#: order/models.py:551
+#: order/models.py:557
msgid "Customer order reference code"
msgstr ""
-#: order/models.py:556
+#: order/models.py:562
msgid "Target date for order completion. Order will be overdue after this date."
msgstr ""
-#: order/models.py:559 templates/js/translated/order.js:392
+#: order/models.py:565 templates/js/translated/order.js:733
msgid "Shipment Date"
msgstr ""
-#: order/models.py:566
+#: order/models.py:572
msgid "shipped by"
msgstr ""
-#: order/models.py:610
+#: order/models.py:616
msgid "SalesOrder cannot be shipped as it is not currently pending"
msgstr ""
-#: order/models.py:707
+#: order/models.py:713
msgid "Item quantity"
msgstr ""
-#: order/models.py:713
+#: order/models.py:719
msgid "Line item reference"
msgstr ""
-#: order/models.py:715
+#: order/models.py:721
msgid "Line item notes"
msgstr ""
-#: order/models.py:745 order/models.py:823 templates/js/translated/order.js:442
+#: order/models.py:751 order/models.py:835 templates/js/translated/order.js:785
msgid "Order"
msgstr ""
-#: order/models.py:746 order/templates/order/order_base.html:9
+#: order/models.py:752 order/templates/order/order_base.html:9
#: order/templates/order/order_base.html:24
#: report/templates/report/inventree_po_report.html:77
#: stock/templates/stock/item_base.html:338
-#: templates/js/translated/order.js:232 templates/js/translated/stock.js:1037
-#: templates/js/translated/stock.js:1448
+#: templates/js/translated/order.js:306 templates/js/translated/stock.js:991
+#: templates/js/translated/stock.js:1589
msgid "Purchase Order"
msgstr ""
-#: order/models.py:767
+#: order/models.py:773
msgid "Supplier part"
msgstr ""
-#: order/models.py:770 order/templates/order/order_base.html:131
-#: order/templates/order/purchase_order_detail.html:388
+#: order/models.py:780 order/templates/order/order_base.html:131
#: order/templates/order/receive_parts.html:22
#: order/templates/order/sales_order_base.html:133
+#: templates/js/translated/order.js:573
msgid "Received"
msgstr ""
-#: order/models.py:770
+#: order/models.py:781
msgid "Number of items received"
msgstr ""
-#: order/models.py:776 part/templates/part/prices.html:157 stock/models.py:582
-#: stock/templates/stock/item_base.html:345
-#: templates/js/translated/stock.js:1081
+#: order/models.py:788 part/templates/part/prices.html:176 stock/models.py:588
+#: stock/serializers.py:147 stock/templates/stock/item_base.html:345
+#: templates/js/translated/stock.js:1045
msgid "Purchase Price"
msgstr ""
-#: order/models.py:777
+#: order/models.py:789
msgid "Unit purchase price"
msgstr ""
-#: order/models.py:785
+#: order/models.py:797
msgid "Where does the Purchaser want this item to be stored?"
msgstr ""
-#: order/models.py:831 part/templates/part/part_pricing.html:97
-#: part/templates/part/prices.html:97 part/templates/part/prices.html:266
+#: order/models.py:843 part/templates/part/part_pricing.html:112
+#: part/templates/part/prices.html:116 part/templates/part/prices.html:284
msgid "Sale Price"
msgstr ""
-#: order/models.py:832
+#: order/models.py:844
msgid "Unit sale price"
msgstr ""
-#: order/models.py:911 order/models.py:913
+#: order/models.py:923 order/models.py:925
msgid "Stock item has not been assigned"
msgstr ""
-#: order/models.py:917
+#: order/models.py:929
msgid "Cannot allocate stock item to a line with a different part"
msgstr ""
-#: order/models.py:919
+#: order/models.py:931
msgid "Cannot allocate stock to a line without a part"
msgstr ""
-#: order/models.py:922
+#: order/models.py:934
msgid "Allocation quantity cannot exceed stock quantity"
msgstr ""
-#: order/models.py:932
+#: order/models.py:944
msgid "Quantity must be 1 for serialized stock item"
msgstr ""
-#: order/models.py:937
+#: order/models.py:949
msgid "Line"
msgstr ""
-#: order/models.py:948
+#: order/models.py:960
msgid "Item"
msgstr ""
-#: order/models.py:949
+#: order/models.py:961
msgid "Select stock item to allocate"
msgstr ""
-#: order/models.py:952
+#: order/models.py:964
msgid "Enter stock allocation quantity"
msgstr ""
-#: order/serializers.py:139
+#: order/serializers.py:166
msgid "Purchase price currency"
msgstr ""
-#: order/serializers.py:360
+#: order/serializers.py:201
+msgid "Line Item"
+msgstr ""
+
+#: order/serializers.py:207
+msgid "Line item does not match purchase order"
+msgstr ""
+
+#: order/serializers.py:217 order/serializers.py:276
+msgid "Select destination location for received items"
+msgstr ""
+
+#: order/serializers.py:234
+msgid "Barcode Hash"
+msgstr ""
+
+#: order/serializers.py:235
+msgid "Unique identifier field"
+msgstr ""
+
+#: order/serializers.py:250
+msgid "Barcode is already in use"
+msgstr ""
+
+#: order/serializers.py:289
+msgid "Line items must be provided"
+msgstr ""
+
+#: order/serializers.py:299
+msgid "Supplied barcode values must be unique"
+msgstr ""
+
+#: order/serializers.py:514
msgid "Sale price currency"
msgstr ""
@@ -3228,14 +3346,12 @@ msgid "Edit Purchase Order"
msgstr ""
#: order/templates/order/order_base.html:196
-#: order/templates/order/purchase_order_detail.html:265
-#: stock/templates/stock/location.html:250
+#: stock/templates/stock/location.html:250 templates/js/translated/order.js:437
msgid "New Location"
msgstr ""
#: order/templates/order/order_base.html:197
-#: order/templates/order/purchase_order_detail.html:266
-#: stock/templates/stock/location.html:42
+#: stock/templates/stock/location.html:42 templates/js/translated/order.js:438
msgid "Create new stock location"
msgstr ""
@@ -3337,7 +3453,7 @@ msgid "Upload File for Purchase Order"
msgstr ""
#: order/templates/order/order_wizard/po_upload.html:18
-#: part/templates/part/bom_upload/upload_file.html:24
+#: part/templates/part/bom_upload/upload_file.html:34
#: part/templates/part/import_wizard/ajax_part_upload.html:10
#: part/templates/part/import_wizard/part_upload.html:21
#, python-format
@@ -3370,7 +3486,7 @@ msgstr ""
#: order/templates/order/order_wizard/select_parts.html:65
#, python-format
-msgid "Select a supplier for %(name)s"
+msgid "Select a supplier for %(name)s"
msgstr ""
#: order/templates/order/order_wizard/select_parts.html:77
@@ -3387,7 +3503,7 @@ msgid "Select existing purchase orders, or create new orders."
msgstr ""
#: order/templates/order/order_wizard/select_pos.html:31
-#: templates/js/translated/order.js:289 templates/js/translated/order.js:397
+#: templates/js/translated/order.js:363 templates/js/translated/order.js:738
msgid "Items"
msgstr ""
@@ -3426,9 +3542,9 @@ msgid "Purchase Order Items"
msgstr ""
#: order/templates/order/purchase_order_detail.html:23
-#: order/templates/order/purchase_order_detail.html:202
+#: order/templates/order/purchase_order_detail.html:203
#: order/templates/order/sales_order_detail.html:23
-#: order/templates/order/sales_order_detail.html:176
+#: order/templates/order/sales_order_detail.html:177
msgid "Add Line Item"
msgstr ""
@@ -3437,49 +3553,6 @@ msgstr ""
msgid "Order Notes"
msgstr ""
-#: order/templates/order/purchase_order_detail.html:238
-#: order/templates/order/sales_order_detail.html:518
-msgid "Edit Line Item"
-msgstr ""
-
-#: order/templates/order/purchase_order_detail.html:248
-#: order/templates/order/sales_order_detail.html:528
-msgid "Delete Line Item"
-msgstr ""
-
-#: order/templates/order/purchase_order_detail.html:279
-msgid "No line items found"
-msgstr ""
-
-#: order/templates/order/purchase_order_detail.html:307
-#: order/templates/order/sales_order_detail.html:353
-msgid "Total"
-msgstr ""
-
-#: order/templates/order/purchase_order_detail.html:360
-#: order/templates/order/sales_order_detail.html:376
-#: templates/js/translated/part.js:1128 templates/js/translated/part.js:1317
-msgid "Unit Price"
-msgstr ""
-
-#: order/templates/order/purchase_order_detail.html:367
-#: order/templates/order/sales_order_detail.html:383
-msgid "Total price"
-msgstr ""
-
-#: order/templates/order/purchase_order_detail.html:431
-#: order/templates/order/sales_order_detail.html:489
-msgid "Edit line item"
-msgstr ""
-
-#: order/templates/order/purchase_order_detail.html:432
-msgid "Delete line item"
-msgstr ""
-
-#: order/templates/order/purchase_order_detail.html:437
-msgid "Receive line item"
-msgstr ""
-
#: order/templates/order/purchase_orders.html:24
#: order/templates/order/sales_orders.html:24
msgid "Print Order Reports"
@@ -3487,18 +3560,18 @@ msgstr ""
#: order/templates/order/receive_parts.html:8
#, python-format
-msgid "Receive outstanding parts for %(order)s - %(desc)s"
+msgid "Receive outstanding parts for %(order)s - %(desc)s"
msgstr ""
-#: order/templates/order/receive_parts.html:14 part/api.py:49
-#: part/models.py:296 part/templates/part/cat_link.html:7
+#: order/templates/order/receive_parts.html:14 part/api.py:54
+#: part/models.py:298 part/templates/part/cat_link.html:7
#: part/templates/part/category.html:108 part/templates/part/category.html:122
#: part/templates/part/category_navbar.html:21
#: part/templates/part/category_navbar.html:24
#: templates/InvenTree/index.html:102 templates/InvenTree/search.html:114
#: templates/InvenTree/settings/navbar.html:83
#: templates/InvenTree/settings/navbar.html:85
-#: templates/js/translated/part.js:987 templates/navbar.html:23
+#: templates/js/translated/part.js:1154 templates/navbar.html:29
#: templates/stats.html:80 templates/stats.html:89 users/models.py:41
msgid "Parts"
msgstr ""
@@ -3512,7 +3585,7 @@ msgid "Order Code"
msgstr ""
#: order/templates/order/receive_parts.html:21
-#: part/templates/part/part_base.html:160 templates/js/translated/part.js:802
+#: part/templates/part/part_base.html:167 templates/js/translated/part.js:949
msgid "On Order"
msgstr ""
@@ -3541,7 +3614,7 @@ msgid "Sales Order Details"
msgstr ""
#: order/templates/order/sales_order_base.html:100
-#: templates/js/translated/order.js:364
+#: templates/js/translated/order.js:705
msgid "Customer Reference"
msgstr ""
@@ -3564,71 +3637,102 @@ msgstr ""
msgid "Sales Order Items"
msgstr ""
-#: order/templates/order/sales_order_detail.html:225
-#: templates/js/translated/bom.js:378 templates/js/translated/build.js:759
-#: templates/js/translated/build.js:1202
+#: order/templates/order/sales_order_detail.html:226
+#: templates/js/translated/bom.js:394 templates/js/translated/build.js:782
+#: templates/js/translated/build.js:1219
msgid "Actions"
msgstr ""
-#: order/templates/order/sales_order_detail.html:232
-#: templates/js/translated/build.js:645 templates/js/translated/build.js:1011
+#: order/templates/order/sales_order_detail.html:233
+#: templates/js/translated/build.js:668 templates/js/translated/build.js:1030
msgid "Edit stock allocation"
msgstr ""
-#: order/templates/order/sales_order_detail.html:233
-#: templates/js/translated/build.js:647 templates/js/translated/build.js:1012
+#: order/templates/order/sales_order_detail.html:234
+#: templates/js/translated/build.js:670 templates/js/translated/build.js:1031
msgid "Delete stock allocation"
msgstr ""
-#: order/templates/order/sales_order_detail.html:306
+#: order/templates/order/sales_order_detail.html:307
msgid "No matching line items"
msgstr ""
-#: order/templates/order/sales_order_detail.html:336
+#: order/templates/order/sales_order_detail.html:337
msgid "ID"
msgstr ""
-#: order/templates/order/sales_order_detail.html:404
-#: templates/js/translated/build.js:710 templates/js/translated/build.js:1007
+#: order/templates/order/sales_order_detail.html:354
+#: templates/js/translated/order.js:481
+msgid "Total"
+msgstr ""
+
+#: order/templates/order/sales_order_detail.html:377
+#: templates/js/translated/order.js:534 templates/js/translated/part.js:1296
+#: templates/js/translated/part.js:1507
+msgid "Unit Price"
+msgstr ""
+
+#: order/templates/order/sales_order_detail.html:384
+#: templates/js/translated/order.js:543
+msgid "Total price"
+msgstr ""
+
+#: order/templates/order/sales_order_detail.html:405
+#: templates/js/translated/build.js:733 templates/js/translated/build.js:1026
msgid "Allocated"
msgstr ""
-#: order/templates/order/sales_order_detail.html:406
+#: order/templates/order/sales_order_detail.html:407
msgid "Fulfilled"
msgstr ""
-#: order/templates/order/sales_order_detail.html:443
+#: order/templates/order/sales_order_detail.html:444
msgid "PO"
msgstr ""
-#: order/templates/order/sales_order_detail.html:473
+#: order/templates/order/sales_order_detail.html:474
msgid "Allocate serial numbers"
msgstr ""
-#: order/templates/order/sales_order_detail.html:476
-#: templates/js/translated/build.js:773
+#: order/templates/order/sales_order_detail.html:477
+#: templates/js/translated/build.js:796
msgid "Allocate stock"
msgstr ""
-#: order/templates/order/sales_order_detail.html:479
+#: order/templates/order/sales_order_detail.html:480
msgid "Purchase stock"
msgstr ""
-#: order/templates/order/sales_order_detail.html:483
-#: templates/js/translated/build.js:766 templates/js/translated/build.js:1210
+#: order/templates/order/sales_order_detail.html:484
+#: templates/js/translated/build.js:789 templates/js/translated/build.js:1227
msgid "Build stock"
msgstr ""
-#: order/templates/order/sales_order_detail.html:486
-#: order/templates/order/sales_order_detail.html:605
+#: order/templates/order/sales_order_detail.html:487
+#: order/templates/order/sales_order_detail.html:606
msgid "Calculate price"
msgstr ""
#: order/templates/order/sales_order_detail.html:490
+#: templates/js/translated/order.js:616
+msgid "Edit line item"
+msgstr ""
+
+#: order/templates/order/sales_order_detail.html:491
msgid "Delete line item "
msgstr ""
-#: order/templates/order/sales_order_detail.html:611
+#: order/templates/order/sales_order_detail.html:519
+#: templates/js/translated/order.js:403
+msgid "Edit Line Item"
+msgstr ""
+
+#: order/templates/order/sales_order_detail.html:529
+#: templates/js/translated/order.js:415
+msgid "Delete Line Item"
+msgstr ""
+
+#: order/templates/order/sales_order_detail.html:612
msgid "Update Unit Price"
msgstr ""
@@ -3815,12 +3919,28 @@ msgstr ""
msgid "Updated {part} unit-price to {price} and quantity to {qty}"
msgstr ""
-#: part/bom.py:133 part/models.py:73 part/models.py:731
-#: part/templates/part/category.html:75 part/templates/part/part_base.html:282
+#: part/api.py:700
+msgid "Must be greater than zero"
+msgstr ""
+
+#: part/api.py:704
+msgid "Must be a valid quantity"
+msgstr ""
+
+#: part/api.py:719
+msgid "Specify location for initial part stock"
+msgstr ""
+
+#: part/api.py:750 part/api.py:754 part/api.py:769 part/api.py:773
+msgid "This field is required"
+msgstr ""
+
+#: part/bom.py:133 part/models.py:75 part/models.py:733
+#: part/templates/part/category.html:75 part/templates/part/part_base.html:290
msgid "Default Location"
msgstr ""
-#: part/bom.py:134 part/templates/part/part_base.html:149
+#: part/bom.py:134 part/templates/part/part_base.html:156
msgid "Available Stock"
msgstr ""
@@ -3880,7 +4000,7 @@ msgstr ""
msgid "Include part supplier data in exported BOM"
msgstr ""
-#: part/forms.py:96 part/models.py:2234
+#: part/forms.py:96 part/models.py:2250
msgid "Parent Part"
msgstr ""
@@ -3924,391 +4044,391 @@ msgstr ""
msgid "Input quantity for price calculation"
msgstr ""
-#: part/models.py:74
+#: part/models.py:76
msgid "Default location for parts in this category"
msgstr ""
-#: part/models.py:77
+#: part/models.py:79
msgid "Default keywords"
msgstr ""
-#: part/models.py:77
+#: part/models.py:79
msgid "Default keywords for parts in this category"
msgstr ""
-#: part/models.py:87 part/models.py:2280
+#: part/models.py:89 part/models.py:2296
#: part/templates/part/part_app_base.html:10
msgid "Part Category"
msgstr ""
-#: part/models.py:88 part/templates/part/category.html:32
+#: part/models.py:90 part/templates/part/category.html:32
#: part/templates/part/category.html:103 templates/InvenTree/search.html:127
#: templates/stats.html:84 users/models.py:40
msgid "Part Categories"
msgstr ""
-#: part/models.py:381
+#: part/models.py:383
msgid "Invalid choice for parent part"
msgstr ""
-#: part/models.py:433 part/models.py:445
+#: part/models.py:435 part/models.py:447
#, python-brace-format
msgid "Part '{p1}' is used in BOM for '{p2}' (recursive)"
msgstr ""
-#: part/models.py:542
+#: part/models.py:544
msgid "Next available serial numbers are"
msgstr ""
-#: part/models.py:546
+#: part/models.py:548
msgid "Next available serial number is"
msgstr ""
-#: part/models.py:551
+#: part/models.py:553
msgid "Most recent serial number is"
msgstr ""
-#: part/models.py:630
+#: part/models.py:632
msgid "Duplicate IPN not allowed in part settings"
msgstr ""
-#: part/models.py:655
+#: part/models.py:657
msgid "Part name"
msgstr ""
-#: part/models.py:662
+#: part/models.py:664
msgid "Is Template"
msgstr ""
-#: part/models.py:663
+#: part/models.py:665
msgid "Is this part a template part?"
msgstr ""
-#: part/models.py:673
+#: part/models.py:675
msgid "Is this part a variant of another part?"
msgstr ""
-#: part/models.py:674
+#: part/models.py:676
msgid "Variant Of"
msgstr ""
-#: part/models.py:680
+#: part/models.py:682
msgid "Part description"
msgstr ""
-#: part/models.py:685 part/templates/part/category.html:82
-#: part/templates/part/part_base.html:251
+#: part/models.py:687 part/templates/part/category.html:82
+#: part/templates/part/part_base.html:259
msgid "Keywords"
msgstr ""
-#: part/models.py:686
+#: part/models.py:688
msgid "Part keywords to improve visibility in search results"
msgstr ""
-#: part/models.py:693 part/models.py:2279
+#: part/models.py:695 part/models.py:2295
#: part/templates/part/set_category.html:15
#: templates/InvenTree/settings/settings.html:167
-#: templates/js/translated/part.js:773
+#: templates/js/translated/part.js:916
msgid "Category"
msgstr ""
-#: part/models.py:694
+#: part/models.py:696
msgid "Part category"
msgstr ""
-#: part/models.py:699 part/templates/part/part_base.html:227
-#: templates/js/translated/part.js:389 templates/js/translated/part.js:617
+#: part/models.py:701 part/templates/part/part_base.html:235
+#: templates/js/translated/part.js:517 templates/js/translated/part.js:749
msgid "IPN"
msgstr ""
-#: part/models.py:700
+#: part/models.py:702
msgid "Internal Part Number"
msgstr ""
-#: part/models.py:706
+#: part/models.py:708
msgid "Part revision or version number"
msgstr ""
-#: part/models.py:707 part/templates/part/part_base.html:244
-#: report/models.py:200 templates/js/translated/part.js:393
+#: part/models.py:709 part/templates/part/part_base.html:252
+#: report/models.py:200 templates/js/translated/part.js:521
msgid "Revision"
msgstr ""
-#: part/models.py:729
+#: part/models.py:731
msgid "Where is this item normally stored?"
msgstr ""
-#: part/models.py:776 part/templates/part/part_base.html:289
+#: part/models.py:778 part/templates/part/part_base.html:297
msgid "Default Supplier"
msgstr ""
-#: part/models.py:777
+#: part/models.py:779
msgid "Default supplier part"
msgstr ""
-#: part/models.py:784
+#: part/models.py:786
msgid "Default Expiry"
msgstr ""
-#: part/models.py:785
+#: part/models.py:787
msgid "Expiry time (in days) for stock items of this part"
msgstr ""
-#: part/models.py:790
+#: part/models.py:792
msgid "Minimum Stock"
msgstr ""
-#: part/models.py:791
+#: part/models.py:793
msgid "Minimum allowed stock level"
msgstr ""
-#: part/models.py:798
+#: part/models.py:800
msgid "Stock keeping units for this part"
msgstr ""
-#: part/models.py:804
+#: part/models.py:806
msgid "Can this part be built from other parts?"
msgstr ""
-#: part/models.py:810
+#: part/models.py:812
msgid "Can this part be used to build other parts?"
msgstr ""
-#: part/models.py:816
+#: part/models.py:818
msgid "Does this part have tracking for unique items?"
msgstr ""
-#: part/models.py:821
+#: part/models.py:823
msgid "Can this part be purchased from external suppliers?"
msgstr ""
-#: part/models.py:826
+#: part/models.py:828
msgid "Can this part be sold to customers?"
msgstr ""
-#: part/models.py:830 templates/js/translated/table_filters.js:21
-#: templates/js/translated/table_filters.js:69
-#: templates/js/translated/table_filters.js:255
-#: templates/js/translated/table_filters.js:324
+#: part/models.py:832 templates/js/translated/table_filters.js:34
+#: templates/js/translated/table_filters.js:82
+#: templates/js/translated/table_filters.js:268
+#: templates/js/translated/table_filters.js:337
msgid "Active"
msgstr ""
-#: part/models.py:831
+#: part/models.py:833
msgid "Is this part active?"
msgstr ""
-#: part/models.py:836
+#: part/models.py:838
msgid "Is this a virtual part, such as a software product or license?"
msgstr ""
-#: part/models.py:841
+#: part/models.py:843
msgid "Part notes - supports Markdown formatting"
msgstr ""
-#: part/models.py:844
+#: part/models.py:846
msgid "BOM checksum"
msgstr ""
-#: part/models.py:844
+#: part/models.py:846
msgid "Stored BOM checksum"
msgstr ""
-#: part/models.py:847
+#: part/models.py:849
msgid "BOM checked by"
msgstr ""
-#: part/models.py:849
+#: part/models.py:851
msgid "BOM checked date"
msgstr ""
-#: part/models.py:853
+#: part/models.py:855
msgid "Creation User"
msgstr ""
-#: part/models.py:1592
+#: part/models.py:1601
msgid "Sell multiple"
msgstr ""
-#: part/models.py:2080
+#: part/models.py:2096
msgid "Test templates can only be created for trackable parts"
msgstr ""
-#: part/models.py:2097
+#: part/models.py:2113
msgid "Test with this name already exists for this part"
msgstr ""
-#: part/models.py:2117 templates/js/translated/part.js:1038
-#: templates/js/translated/stock.js:485
+#: part/models.py:2133 templates/js/translated/part.js:1205
+#: templates/js/translated/stock.js:556
msgid "Test Name"
msgstr ""
-#: part/models.py:2118
+#: part/models.py:2134
msgid "Enter a name for the test"
msgstr ""
-#: part/models.py:2123
+#: part/models.py:2139
msgid "Test Description"
msgstr ""
-#: part/models.py:2124
+#: part/models.py:2140
msgid "Enter description for this test"
msgstr ""
-#: part/models.py:2129 templates/js/translated/part.js:1047
-#: templates/js/translated/table_filters.js:241
+#: part/models.py:2145 templates/js/translated/part.js:1214
+#: templates/js/translated/table_filters.js:254
msgid "Required"
msgstr ""
-#: part/models.py:2130
+#: part/models.py:2146
msgid "Is this test required to pass?"
msgstr ""
-#: part/models.py:2135 templates/js/translated/part.js:1055
+#: part/models.py:2151 templates/js/translated/part.js:1222
msgid "Requires Value"
msgstr ""
-#: part/models.py:2136
+#: part/models.py:2152
msgid "Does this test require a value when adding a test result?"
msgstr ""
-#: part/models.py:2141 templates/js/translated/part.js:1062
+#: part/models.py:2157 templates/js/translated/part.js:1229
msgid "Requires Attachment"
msgstr ""
-#: part/models.py:2142
+#: part/models.py:2158
msgid "Does this test require a file attachment when adding a test result?"
msgstr ""
-#: part/models.py:2153
+#: part/models.py:2169
#, python-brace-format
msgid "Illegal character in template name ({c})"
msgstr ""
-#: part/models.py:2189
+#: part/models.py:2205
msgid "Parameter template name must be unique"
msgstr ""
-#: part/models.py:2197
+#: part/models.py:2213
msgid "Parameter Name"
msgstr ""
-#: part/models.py:2204
+#: part/models.py:2220
msgid "Parameter Units"
msgstr ""
-#: part/models.py:2236 part/models.py:2285 part/models.py:2286
+#: part/models.py:2252 part/models.py:2301 part/models.py:2302
#: templates/InvenTree/settings/settings.html:162
msgid "Parameter Template"
msgstr ""
-#: part/models.py:2238
+#: part/models.py:2254
msgid "Data"
msgstr ""
-#: part/models.py:2238
+#: part/models.py:2254
msgid "Parameter Value"
msgstr ""
-#: part/models.py:2290 templates/InvenTree/settings/settings.html:171
+#: part/models.py:2306 templates/InvenTree/settings/settings.html:171
msgid "Default Value"
msgstr ""
-#: part/models.py:2291
+#: part/models.py:2307
msgid "Default Parameter Value"
msgstr ""
-#: part/models.py:2325
+#: part/models.py:2341
msgid "Select parent part"
msgstr ""
-#: part/models.py:2333
+#: part/models.py:2349
msgid "Sub part"
msgstr ""
-#: part/models.py:2334
+#: part/models.py:2350
msgid "Select part to be used in BOM"
msgstr ""
-#: part/models.py:2340
+#: part/models.py:2356
msgid "BOM quantity for this BOM item"
msgstr ""
-#: part/models.py:2342 templates/js/translated/bom.js:236
-#: templates/js/translated/bom.js:298
+#: part/models.py:2358 templates/js/translated/bom.js:256
+#: templates/js/translated/bom.js:314
msgid "Optional"
msgstr ""
-#: part/models.py:2342
+#: part/models.py:2358
msgid "This BOM item is optional"
msgstr ""
-#: part/models.py:2345
+#: part/models.py:2361
msgid "Overage"
msgstr ""
-#: part/models.py:2346
+#: part/models.py:2362
msgid "Estimated build wastage quantity (absolute or percentage)"
msgstr ""
-#: part/models.py:2349
+#: part/models.py:2365
msgid "BOM item reference"
msgstr ""
-#: part/models.py:2352
+#: part/models.py:2368
msgid "BOM item notes"
msgstr ""
-#: part/models.py:2354
+#: part/models.py:2370
msgid "Checksum"
msgstr ""
-#: part/models.py:2354
+#: part/models.py:2370
msgid "BOM line checksum"
msgstr ""
-#: part/models.py:2358 templates/js/translated/bom.js:315
-#: templates/js/translated/bom.js:322
-#: templates/js/translated/table_filters.js:55
+#: part/models.py:2374 templates/js/translated/bom.js:331
+#: templates/js/translated/bom.js:338
+#: templates/js/translated/table_filters.js:68
msgid "Inherited"
msgstr ""
-#: part/models.py:2359
+#: part/models.py:2375
msgid "This BOM item is inherited by BOMs for variant parts"
msgstr ""
-#: part/models.py:2364 templates/js/translated/bom.js:307
+#: part/models.py:2380 templates/js/translated/bom.js:323
msgid "Allow Variants"
msgstr ""
-#: part/models.py:2365
+#: part/models.py:2381
msgid "Stock items for variant parts can be used for this BOM item"
msgstr ""
-#: part/models.py:2450 stock/models.py:335
+#: part/models.py:2466 stock/models.py:341
msgid "Quantity must be integer value for trackable parts"
msgstr ""
-#: part/models.py:2459 part/models.py:2461
+#: part/models.py:2475 part/models.py:2477
msgid "Sub part must be specified"
msgstr ""
-#: part/models.py:2464
+#: part/models.py:2480
msgid "BOM Item"
msgstr ""
-#: part/models.py:2583
+#: part/models.py:2599
msgid "Part 1"
msgstr ""
-#: part/models.py:2587
+#: part/models.py:2603
msgid "Part 2"
msgstr ""
-#: part/models.py:2587
+#: part/models.py:2603
msgid "Select Related Part"
msgstr ""
-#: part/models.py:2619
+#: part/models.py:2635
msgid "Error creating relationship: check that the part is not related to itself and that the relationship is unique"
msgstr ""
@@ -4318,17 +4438,17 @@ msgstr ""
#: part/templates/part/bom.html:14
#, python-format
-msgid "The BOM for %(part)s has changed, and must be validated.
"
+msgid "The BOM for %(part)s has changed, and must be validated.
"
msgstr ""
#: part/templates/part/bom.html:16
#, python-format
-msgid "The BOM for %(part)s was last checked by %(checker)s on %(check_date)s"
+msgid "The BOM for %(part)s was last checked by %(checker)s on %(check_date)s"
msgstr ""
#: part/templates/part/bom.html:20
#, python-format
-msgid "The BOM for %(part)s has not been validated."
+msgid "The BOM for %(part)s has not been validated."
msgstr ""
#: part/templates/part/bom.html:27
@@ -4375,33 +4495,34 @@ msgstr ""
msgid "Select Part"
msgstr ""
-#: part/templates/part/bom_upload/upload_file.html:7
-msgid "Upload BOM File"
+#: part/templates/part/bom_upload/upload_file.html:13
+#: part/templates/part/bom_upload/upload_file.html:16
+msgid "Return To BOM"
msgstr ""
-#: part/templates/part/bom_upload/upload_file.html:12
+#: part/templates/part/bom_upload/upload_file.html:27
msgid "Upload Bill of Materials"
msgstr ""
-#: part/templates/part/bom_upload/upload_file.html:16
+#: part/templates/part/bom_upload/upload_file.html:46
msgid "Requirements for BOM upload"
msgstr ""
-#: part/templates/part/bom_upload/upload_file.html:18
+#: part/templates/part/bom_upload/upload_file.html:48
msgid "The BOM file must contain the required named columns as provided in the "
msgstr ""
-#: part/templates/part/bom_upload/upload_file.html:18
+#: part/templates/part/bom_upload/upload_file.html:48
msgid "BOM Upload Template"
msgstr ""
-#: part/templates/part/bom_upload/upload_file.html:19
+#: part/templates/part/bom_upload/upload_file.html:49
msgid "Each part must already exist in the database"
msgstr ""
#: part/templates/part/bom_validate.html:6
#, python-format
-msgid "Confirm that the Bill of Materials (BOM) is valid for:
%(part)s"
+msgid "Confirm that the Bill of Materials (BOM) is valid for:
%(part)s"
msgstr ""
#: part/templates/part/bom_validate.html:9
@@ -4436,7 +4557,7 @@ msgstr ""
msgid "Category Description"
msgstr ""
-#: part/templates/part/category.html:88 part/templates/part/category.html:174
+#: part/templates/part/category.html:88 part/templates/part/category.html:175
#: part/templates/part/category_navbar.html:14
#: part/templates/part/category_navbar.html:17
msgid "Subcategories"
@@ -4450,7 +4571,7 @@ msgstr ""
msgid "Export Part Data"
msgstr ""
-#: part/templates/part/category.html:127 part/templates/part/category.html:141
+#: part/templates/part/category.html:127 part/templates/part/category.html:142
msgid "Export"
msgstr ""
@@ -4471,26 +4592,30 @@ msgid "Set Category"
msgstr ""
#: part/templates/part/category.html:141
+msgid "Print Labels"
+msgstr ""
+
+#: part/templates/part/category.html:142
msgid "Export Data"
msgstr ""
-#: part/templates/part/category.html:145
+#: part/templates/part/category.html:146
msgid "View list display"
msgstr ""
-#: part/templates/part/category.html:148
+#: part/templates/part/category.html:149
msgid "View grid display"
msgstr ""
-#: part/templates/part/category.html:164
+#: part/templates/part/category.html:165
msgid "Part Parameters"
msgstr ""
-#: part/templates/part/category.html:253
+#: part/templates/part/category.html:254
msgid "Create Part Category"
msgstr ""
-#: part/templates/part/category.html:279
+#: part/templates/part/category.html:281
msgid "Create Part"
msgstr ""
@@ -4534,7 +4659,7 @@ msgstr ""
msgid "Import Parts"
msgstr ""
-#: part/templates/part/copy_part.html:9 templates/js/translated/part.js:224
+#: part/templates/part/copy_part.html:9 templates/js/translated/part.js:352
msgid "Duplicate Part"
msgstr ""
@@ -4555,7 +4680,7 @@ msgstr ""
#: part/templates/part/create_part.html:17
#, python-format
-msgid "%(full_name)s - %(desc)s (%(match_per)s%% match)"
+msgid "%(full_name)s - %(desc)s (%(match_per)s%% match)"
msgstr ""
#: part/templates/part/detail.html:16
@@ -4564,10 +4689,10 @@ msgstr ""
#: part/templates/part/detail.html:21
#, python-format
-msgid "Showing stock for all variants of %(full_name)s"
+msgid "Showing stock for all variants of %(full_name)s"
msgstr ""
-#: part/templates/part/detail.html:30 part/templates/part/navbar.html:87
+#: part/templates/part/detail.html:30 part/templates/part/navbar.html:99
msgid "Part Test Templates"
msgstr ""
@@ -4587,7 +4712,7 @@ msgstr ""
msgid "Sales Order Allocations"
msgstr ""
-#: part/templates/part/detail.html:130 part/templates/part/navbar.html:21
+#: part/templates/part/detail.html:130 part/templates/part/navbar.html:27
msgid "Part Variants"
msgstr ""
@@ -4603,8 +4728,8 @@ msgstr ""
msgid "Add new parameter"
msgstr ""
-#: part/templates/part/detail.html:182 part/templates/part/navbar.html:95
-#: part/templates/part/navbar.html:98
+#: part/templates/part/detail.html:182 part/templates/part/navbar.html:107
+#: part/templates/part/navbar.html:110
msgid "Related Parts"
msgstr ""
@@ -4612,8 +4737,8 @@ msgstr ""
msgid "Add Related"
msgstr ""
-#: part/templates/part/detail.html:228 part/templates/part/navbar.html:35
-#: part/templates/part/navbar.html:38
+#: part/templates/part/detail.html:228 part/templates/part/navbar.html:43
+#: part/templates/part/navbar.html:46
msgid "Bill of Materials"
msgstr ""
@@ -4645,50 +4770,50 @@ msgstr ""
msgid "Delete manufacturer parts"
msgstr ""
-#: part/templates/part/detail.html:402
+#: part/templates/part/detail.html:502
msgid "Delete selected BOM items?"
msgstr ""
-#: part/templates/part/detail.html:403
+#: part/templates/part/detail.html:503
msgid "All selected BOM items will be deleted"
msgstr ""
-#: part/templates/part/detail.html:454
+#: part/templates/part/detail.html:554
msgid "Create BOM Item"
msgstr ""
-#: part/templates/part/detail.html:589
+#: part/templates/part/detail.html:699
msgid "Add Test Result Template"
msgstr ""
-#: part/templates/part/detail.html:607
+#: part/templates/part/detail.html:716
msgid "Edit Test Result Template"
msgstr ""
-#: part/templates/part/detail.html:619
+#: part/templates/part/detail.html:728
msgid "Delete Test Result Template"
msgstr ""
-#: part/templates/part/detail.html:670
+#: part/templates/part/detail.html:784
msgid "Edit Part Notes"
msgstr ""
-#: part/templates/part/detail.html:903
+#: part/templates/part/detail.html:936
#, python-format
msgid "Purchase Unit Price - %(currency)s"
msgstr ""
-#: part/templates/part/detail.html:915
+#: part/templates/part/detail.html:948
#, python-format
msgid "Unit Price-Cost Difference - %(currency)s"
msgstr ""
-#: part/templates/part/detail.html:927
+#: part/templates/part/detail.html:960
#, python-format
msgid "Supplier Unit Cost - %(currency)s"
msgstr ""
-#: part/templates/part/detail.html:1016
+#: part/templates/part/detail.html:1049
#, python-format
msgid "Unit Price - %(currency)s"
msgstr ""
@@ -4702,19 +4827,19 @@ msgstr ""
msgid "Import Parts from File"
msgstr ""
-#: part/templates/part/navbar.html:24
+#: part/templates/part/navbar.html:30
msgid "Variants"
msgstr ""
-#: part/templates/part/navbar.html:51 part/templates/part/navbar.html:54
+#: part/templates/part/navbar.html:59 part/templates/part/navbar.html:62
msgid "Used In"
msgstr ""
-#: part/templates/part/navbar.html:61
+#: part/templates/part/navbar.html:70
msgid "Prices"
msgstr ""
-#: part/templates/part/navbar.html:90
+#: part/templates/part/navbar.html:102
msgid "Test Templates"
msgstr ""
@@ -4722,195 +4847,204 @@ msgstr ""
msgid "Part List"
msgstr ""
-#: part/templates/part/part_base.html:30
+#: part/templates/part/part_base.html:35
msgid "Part is a template part (variants can be made from this part)"
msgstr ""
-#: part/templates/part/part_base.html:33
+#: part/templates/part/part_base.html:38
msgid "Part can be assembled from other parts"
msgstr ""
-#: part/templates/part/part_base.html:36
+#: part/templates/part/part_base.html:41
msgid "Part can be used in assemblies"
msgstr ""
-#: part/templates/part/part_base.html:39
+#: part/templates/part/part_base.html:44
msgid "Part stock is tracked by serial number"
msgstr ""
-#: part/templates/part/part_base.html:42
+#: part/templates/part/part_base.html:47
msgid "Part can be purchased from external suppliers"
msgstr ""
-#: part/templates/part/part_base.html:45
+#: part/templates/part/part_base.html:50
msgid "Part can be sold to customers"
msgstr ""
-#: part/templates/part/part_base.html:52 part/templates/part/part_base.html:60
+#: part/templates/part/part_base.html:57 part/templates/part/part_base.html:65
msgid "Part is virtual (not a physical part)"
msgstr ""
-#: part/templates/part/part_base.html:53 templates/js/translated/company.js:454
-#: templates/js/translated/company.js:704 templates/js/translated/part.js:304
-#: templates/js/translated/part.js:381
+#: part/templates/part/part_base.html:58 templates/js/translated/company.js:503
+#: templates/js/translated/company.js:759 templates/js/translated/part.js:432
+#: templates/js/translated/part.js:509
msgid "Inactive"
msgstr ""
-#: part/templates/part/part_base.html:68
+#: part/templates/part/part_base.html:73
msgid "Star this part"
msgstr ""
-#: part/templates/part/part_base.html:75
+#: part/templates/part/part_base.html:80
#: stock/templates/stock/item_base.html:75
#: stock/templates/stock/location.html:51
msgid "Barcode actions"
msgstr ""
-#: part/templates/part/part_base.html:77
+#: part/templates/part/part_base.html:82
#: stock/templates/stock/item_base.html:77
#: stock/templates/stock/location.html:53 templates/qr_button.html:1
msgid "Show QR Code"
msgstr ""
-#: part/templates/part/part_base.html:78
+#: part/templates/part/part_base.html:83
#: stock/templates/stock/item_base.html:93
#: stock/templates/stock/location.html:54
msgid "Print Label"
msgstr ""
-#: part/templates/part/part_base.html:83
+#: part/templates/part/part_base.html:89
msgid "Show pricing information"
msgstr ""
-#: part/templates/part/part_base.html:88
+#: part/templates/part/part_base.html:95
#: stock/templates/stock/item_base.html:142
#: stock/templates/stock/location.html:62
msgid "Stock actions"
msgstr ""
-#: part/templates/part/part_base.html:95
+#: part/templates/part/part_base.html:102
msgid "Count part stock"
msgstr ""
-#: part/templates/part/part_base.html:101
+#: part/templates/part/part_base.html:108
msgid "Transfer part stock"
msgstr ""
-#: part/templates/part/part_base.html:118
+#: part/templates/part/part_base.html:125
msgid "Part actions"
msgstr ""
-#: part/templates/part/part_base.html:121
+#: part/templates/part/part_base.html:128
msgid "Duplicate part"
msgstr ""
-#: part/templates/part/part_base.html:124
+#: part/templates/part/part_base.html:131
msgid "Edit part"
msgstr ""
-#: part/templates/part/part_base.html:127
+#: part/templates/part/part_base.html:134
msgid "Delete part"
msgstr ""
-#: part/templates/part/part_base.html:139
+#: part/templates/part/part_base.html:146
#, python-format
msgid "This part is a variant of %(link)s"
msgstr ""
-#: part/templates/part/part_base.html:154
-#: templates/js/translated/table_filters.js:153
+#: part/templates/part/part_base.html:161
+#: templates/js/translated/table_filters.js:166
msgid "In Stock"
msgstr ""
-#: part/templates/part/part_base.html:167 templates/InvenTree/index.html:186
+#: part/templates/part/part_base.html:174 templates/InvenTree/index.html:186
msgid "Required for Build Orders"
msgstr ""
-#: part/templates/part/part_base.html:174
+#: part/templates/part/part_base.html:181
msgid "Required for Sales Orders"
msgstr ""
-#: part/templates/part/part_base.html:181
+#: part/templates/part/part_base.html:188
msgid "Allocated to Orders"
msgstr ""
-#: part/templates/part/part_base.html:196 templates/js/translated/bom.js:336
+#: part/templates/part/part_base.html:203 templates/js/translated/bom.js:352
msgid "Can Build"
msgstr ""
-#: part/templates/part/part_base.html:202 templates/js/translated/part.js:633
-#: templates/js/translated/part.js:806
+#: part/templates/part/part_base.html:209 templates/js/translated/part.js:765
+#: templates/js/translated/part.js:953
msgid "Building"
msgstr ""
-#: part/templates/part/part_base.html:275
+#: part/templates/part/part_base.html:223
+#: part/templates/part/part_base.html:524
+#: part/templates/part/part_base.html:550
+msgid "Show Part Details"
+msgstr ""
+
+#: part/templates/part/part_base.html:283
msgid "Latest Serial Number"
msgstr ""
-#: part/templates/part/part_base.html:383 part/templates/part/prices.html:125
+#: part/templates/part/part_base.html:396 part/templates/part/prices.html:144
msgid "Calculate"
msgstr ""
-#: part/templates/part/part_base.html:426
+#: part/templates/part/part_base.html:439
msgid "No matching images found"
msgstr ""
-#: part/templates/part/part_base.html:506
-#: part/templates/part/part_base.html:531
+#: part/templates/part/part_base.html:519
+#: part/templates/part/part_base.html:544
msgid "Hide Part Details"
msgstr ""
-#: part/templates/part/part_base.html:511
-#: part/templates/part/part_base.html:537
-msgid "Show Part Details"
-msgstr ""
-
#: part/templates/part/part_pricing.html:22 part/templates/part/prices.html:21
msgid "Supplier Pricing"
msgstr ""
#: part/templates/part/part_pricing.html:26
#: part/templates/part/part_pricing.html:52
-#: part/templates/part/part_pricing.html:85
-#: part/templates/part/part_pricing.html:100 part/templates/part/prices.html:25
-#: part/templates/part/prices.html:52 part/templates/part/prices.html:84
-#: part/templates/part/prices.html:101
+#: part/templates/part/part_pricing.html:100
+#: part/templates/part/part_pricing.html:115 part/templates/part/prices.html:25
+#: part/templates/part/prices.html:52 part/templates/part/prices.html:103
+#: part/templates/part/prices.html:120
msgid "Unit Cost"
msgstr ""
#: part/templates/part/part_pricing.html:32
#: part/templates/part/part_pricing.html:58
-#: part/templates/part/part_pricing.html:89
-#: part/templates/part/part_pricing.html:104 part/templates/part/prices.html:32
-#: part/templates/part/prices.html:59 part/templates/part/prices.html:89
-#: part/templates/part/prices.html:106
+#: part/templates/part/part_pricing.html:104
+#: part/templates/part/part_pricing.html:119 part/templates/part/prices.html:32
+#: part/templates/part/prices.html:59 part/templates/part/prices.html:108
+#: part/templates/part/prices.html:125
msgid "Total Cost"
msgstr ""
#: part/templates/part/part_pricing.html:40 part/templates/part/prices.html:40
-#: templates/js/translated/bom.js:291
+#: templates/js/translated/bom.js:307
msgid "No supplier pricing available"
msgstr ""
#: part/templates/part/part_pricing.html:48 part/templates/part/prices.html:49
-#: part/templates/part/prices.html:225
+#: part/templates/part/prices.html:243
msgid "BOM Pricing"
msgstr ""
-#: part/templates/part/part_pricing.html:66 part/templates/part/prices.html:67
+#: part/templates/part/part_pricing.html:65 part/templates/part/prices.html:69
+msgid "Unit Purchase Price"
+msgstr ""
+
+#: part/templates/part/part_pricing.html:71 part/templates/part/prices.html:76
+msgid "Total Purchase Price"
+msgstr ""
+
+#: part/templates/part/part_pricing.html:81 part/templates/part/prices.html:86
msgid "Note: BOM pricing is incomplete for this part"
msgstr ""
-#: part/templates/part/part_pricing.html:73 part/templates/part/prices.html:74
+#: part/templates/part/part_pricing.html:88 part/templates/part/prices.html:93
msgid "No BOM pricing available"
msgstr ""
-#: part/templates/part/part_pricing.html:82 part/templates/part/prices.html:83
+#: part/templates/part/part_pricing.html:97 part/templates/part/prices.html:102
msgid "Internal Price"
msgstr ""
-#: part/templates/part/part_pricing.html:113
-#: part/templates/part/prices.html:115
+#: part/templates/part/part_pricing.html:128
+#: part/templates/part/prices.html:134
msgid "No pricing information is available for this part."
msgstr ""
@@ -4920,7 +5054,7 @@ msgstr ""
#: part/templates/part/partial_delete.html:7
#, python-format
-msgid "Are you sure you want to delete part '%(full_name)s'?"
+msgid "Are you sure you want to delete part '%(full_name)s'?"
msgstr ""
#: part/templates/part/partial_delete.html:12
@@ -4964,53 +5098,53 @@ msgstr ""
msgid "Show BOM cost"
msgstr ""
-#: part/templates/part/prices.html:98
+#: part/templates/part/prices.html:117
msgid "Show sale cost"
msgstr ""
-#: part/templates/part/prices.html:99
+#: part/templates/part/prices.html:118
msgid "Show sale price"
msgstr ""
-#: part/templates/part/prices.html:121
+#: part/templates/part/prices.html:140
msgid "Calculation parameters"
msgstr ""
-#: part/templates/part/prices.html:136 templates/js/translated/bom.js:285
+#: part/templates/part/prices.html:155 templates/js/translated/bom.js:301
msgid "Supplier Cost"
msgstr ""
-#: part/templates/part/prices.html:137 part/templates/part/prices.html:158
-#: part/templates/part/prices.html:183 part/templates/part/prices.html:213
-#: part/templates/part/prices.html:239 part/templates/part/prices.html:267
+#: part/templates/part/prices.html:156 part/templates/part/prices.html:177
+#: part/templates/part/prices.html:201 part/templates/part/prices.html:231
+#: part/templates/part/prices.html:257 part/templates/part/prices.html:285
msgid "Jump to overview"
msgstr ""
-#: part/templates/part/prices.html:162
+#: part/templates/part/prices.html:181
msgid "Stock Pricing"
msgstr ""
-#: part/templates/part/prices.html:172
+#: part/templates/part/prices.html:190
msgid "No stock pricing history is available for this part."
msgstr ""
-#: part/templates/part/prices.html:182
+#: part/templates/part/prices.html:200
msgid "Internal Cost"
msgstr ""
-#: part/templates/part/prices.html:197 part/views.py:1793
+#: part/templates/part/prices.html:215 part/views.py:1801
msgid "Add Internal Price Break"
msgstr ""
-#: part/templates/part/prices.html:212
+#: part/templates/part/prices.html:230
msgid "BOM Cost"
msgstr ""
-#: part/templates/part/prices.html:238
+#: part/templates/part/prices.html:256
msgid "Sale Cost"
msgstr ""
-#: part/templates/part/prices.html:278
+#: part/templates/part/prices.html:296
msgid "No sale pice history available for this part."
msgstr ""
@@ -5018,8 +5152,8 @@ msgstr ""
msgid "Set category for the following parts"
msgstr ""
-#: part/templates/part/stock_count.html:7 templates/js/translated/bom.js:259
-#: templates/js/translated/part.js:623 templates/js/translated/part.js:810
+#: part/templates/part/stock_count.html:7 templates/js/translated/bom.js:278
+#: templates/js/translated/part.js:755 templates/js/translated/part.js:957
msgid "No Stock"
msgstr ""
@@ -5033,10 +5167,10 @@ msgstr ""
#: part/templates/part/variant_part.html:10
#, python-format
-msgid "Create a new variant of template '%(full_name)s'."
+msgid "Create a new variant of template '%(full_name)s'."
msgstr ""
-#: part/templatetags/inventree_extras.py:105
+#: part/templatetags/inventree_extras.py:106
msgid "Unknown database"
msgstr ""
@@ -5117,51 +5251,51 @@ msgstr ""
msgid "Part Pricing"
msgstr ""
-#: part/views.py:1429
+#: part/views.py:1437
msgid "Create Part Parameter Template"
msgstr ""
-#: part/views.py:1439
+#: part/views.py:1447
msgid "Edit Part Parameter Template"
msgstr ""
-#: part/views.py:1446
+#: part/views.py:1454
msgid "Delete Part Parameter Template"
msgstr ""
-#: part/views.py:1494 templates/js/translated/part.js:179
+#: part/views.py:1502 templates/js/translated/part.js:303
msgid "Edit Part Category"
msgstr ""
-#: part/views.py:1532
+#: part/views.py:1540
msgid "Delete Part Category"
msgstr ""
-#: part/views.py:1538
+#: part/views.py:1546
msgid "Part category was deleted"
msgstr ""
-#: part/views.py:1547
+#: part/views.py:1555
msgid "Create Category Parameter Template"
msgstr ""
-#: part/views.py:1648
+#: part/views.py:1656
msgid "Edit Category Parameter Template"
msgstr ""
-#: part/views.py:1704
+#: part/views.py:1712
msgid "Delete Category Parameter Template"
msgstr ""
-#: part/views.py:1726
+#: part/views.py:1734
msgid "Added new price break"
msgstr ""
-#: part/views.py:1802
+#: part/views.py:1810
msgid "Edit Internal Price Break"
msgstr ""
-#: part/views.py:1810
+#: part/views.py:1818
msgid "Delete Internal Price Break"
msgstr ""
@@ -5267,17 +5401,17 @@ msgid "Test Results"
msgstr ""
#: report/templates/report/inventree_test_report_base.html:88
-#: stock/models.py:1796
+#: stock/models.py:1807
msgid "Test"
msgstr ""
#: report/templates/report/inventree_test_report_base.html:89
-#: stock/models.py:1802
+#: stock/models.py:1813
msgid "Result"
msgstr ""
#: report/templates/report/inventree_test_report_base.html:92
-#: templates/js/translated/order.js:279 templates/js/translated/stock.js:1382
+#: templates/js/translated/order.js:353 templates/js/translated/stock.js:1523
msgid "Date"
msgstr ""
@@ -5289,51 +5423,51 @@ msgstr ""
msgid "Fail"
msgstr ""
-#: stock/api.py:145
+#: stock/api.py:146
msgid "Request must contain list of stock items"
msgstr ""
-#: stock/api.py:153
+#: stock/api.py:154
msgid "Improperly formatted data"
msgstr ""
-#: stock/api.py:161
+#: stock/api.py:162
msgid "Each entry must contain a valid integer primary-key"
msgstr ""
-#: stock/api.py:167
+#: stock/api.py:168
msgid "Primary key does not match valid stock item"
msgstr ""
-#: stock/api.py:177
+#: stock/api.py:178
msgid "Invalid quantity value"
msgstr ""
-#: stock/api.py:182
+#: stock/api.py:183
msgid "Quantity must not be less than zero"
msgstr ""
-#: stock/api.py:210
+#: stock/api.py:211
#, python-brace-format
msgid "Updated stock for {n} items"
msgstr ""
-#: stock/api.py:246 stock/api.py:279
+#: stock/api.py:247 stock/api.py:280
msgid "Specified quantity exceeds stock quantity"
msgstr ""
-#: stock/api.py:269
+#: stock/api.py:270
msgid "Valid location must be specified"
msgstr ""
-#: stock/api.py:289
+#: stock/api.py:290
#, python-brace-format
msgid "Moved {n} parts to {loc}"
msgstr ""
-#: stock/forms.py:79 stock/forms.py:307 stock/models.py:550
+#: stock/forms.py:79 stock/forms.py:307 stock/models.py:556
#: stock/templates/stock/item_base.html:395
-#: templates/js/translated/stock.js:1025
+#: templates/js/translated/stock.js:967
msgid "Expiry Date"
msgstr ""
@@ -5385,258 +5519,266 @@ msgstr ""
msgid "Confirm removal of installed stock items"
msgstr ""
-#: stock/models.py:57 stock/models.py:587
+#: stock/models.py:57 stock/models.py:593
msgid "Owner"
msgstr ""
-#: stock/models.py:58 stock/models.py:588
+#: stock/models.py:58 stock/models.py:594
msgid "Select Owner"
msgstr ""
-#: stock/models.py:316
+#: stock/models.py:322
msgid "StockItem with this serial number already exists"
msgstr ""
-#: stock/models.py:352
+#: stock/models.py:358
#, python-brace-format
msgid "Part type ('{pf}') must be {pe}"
msgstr ""
-#: stock/models.py:362 stock/models.py:371
+#: stock/models.py:368 stock/models.py:377
msgid "Quantity must be 1 for item with a serial number"
msgstr ""
-#: stock/models.py:363
+#: stock/models.py:369
msgid "Serial number cannot be set if quantity greater than 1"
msgstr ""
-#: stock/models.py:385
+#: stock/models.py:391
msgid "Item cannot belong to itself"
msgstr ""
-#: stock/models.py:391
+#: stock/models.py:397
msgid "Item must have a build reference if is_building=True"
msgstr ""
-#: stock/models.py:398
+#: stock/models.py:404
msgid "Build reference does not point to the same part object"
msgstr ""
-#: stock/models.py:440
+#: stock/models.py:446
msgid "Parent Stock Item"
msgstr ""
-#: stock/models.py:449
+#: stock/models.py:455
msgid "Base part"
msgstr ""
-#: stock/models.py:458
+#: stock/models.py:464
msgid "Select a matching supplier part for this stock item"
msgstr ""
-#: stock/models.py:463 stock/templates/stock/stock_app_base.html:8
+#: stock/models.py:469 stock/templates/stock/stock_app_base.html:8
msgid "Stock Location"
msgstr ""
-#: stock/models.py:466
+#: stock/models.py:472
msgid "Where is this stock item located?"
msgstr ""
-#: stock/models.py:473
+#: stock/models.py:479
msgid "Packaging this stock item is stored in"
msgstr ""
-#: stock/models.py:478 stock/templates/stock/item_base.html:284
+#: stock/models.py:484 stock/templates/stock/item_base.html:284
msgid "Installed In"
msgstr ""
-#: stock/models.py:481
+#: stock/models.py:487
msgid "Is this item installed in another item?"
msgstr ""
-#: stock/models.py:497
+#: stock/models.py:503
msgid "Serial number for this item"
msgstr ""
-#: stock/models.py:509
+#: stock/models.py:515
msgid "Batch code for this stock item"
msgstr ""
-#: stock/models.py:513
+#: stock/models.py:519
msgid "Stock Quantity"
msgstr ""
-#: stock/models.py:522
+#: stock/models.py:528
msgid "Source Build"
msgstr ""
-#: stock/models.py:524
+#: stock/models.py:530
msgid "Build for this stock item"
msgstr ""
-#: stock/models.py:535
+#: stock/models.py:541
msgid "Source Purchase Order"
msgstr ""
-#: stock/models.py:538
+#: stock/models.py:544
msgid "Purchase order for this stock item"
msgstr ""
-#: stock/models.py:544
+#: stock/models.py:550
msgid "Destination Sales Order"
msgstr ""
-#: stock/models.py:551
+#: stock/models.py:557
msgid "Expiry date for stock item. Stock will be considered expired after this date"
msgstr ""
-#: stock/models.py:564
+#: stock/models.py:570
msgid "Delete on deplete"
msgstr ""
-#: stock/models.py:564
+#: stock/models.py:570
msgid "Delete this Stock Item when stock is depleted"
msgstr ""
-#: stock/models.py:574 stock/templates/stock/item.html:98
+#: stock/models.py:580 stock/templates/stock/item.html:99
#: stock/templates/stock/navbar.html:54
msgid "Stock Item Notes"
msgstr ""
-#: stock/models.py:583
+#: stock/models.py:589
msgid "Single unit purchase price at time of purchase"
msgstr ""
-#: stock/models.py:1051
-msgid "Part is not set as trackable"
+#: stock/models.py:599
+msgid "Scheduled for deletion"
msgstr ""
-#: stock/models.py:1057
-msgid "Quantity must be integer"
+#: stock/models.py:600
+msgid "This StockItem will be deleted by the background worker"
msgstr ""
#: stock/models.py:1063
+msgid "Part is not set as trackable"
+msgstr ""
+
+#: stock/models.py:1069
+msgid "Quantity must be integer"
+msgstr ""
+
+#: stock/models.py:1075
#, python-brace-format
msgid "Quantity must not exceed available stock quantity ({n})"
msgstr ""
-#: stock/models.py:1066
+#: stock/models.py:1078
msgid "Serial numbers must be a list of integers"
msgstr ""
-#: stock/models.py:1069
+#: stock/models.py:1081
msgid "Quantity does not match serial numbers"
msgstr ""
-#: stock/models.py:1076
+#: stock/models.py:1088
#, python-brace-format
msgid "Serial numbers already exist: {exists}"
msgstr ""
-#: stock/models.py:1234
+#: stock/models.py:1246
msgid "StockItem cannot be moved as it is not in stock"
msgstr ""
-#: stock/models.py:1716
+#: stock/models.py:1727
msgid "Entry notes"
msgstr ""
-#: stock/models.py:1773
+#: stock/models.py:1784
msgid "Value must be provided for this test"
msgstr ""
-#: stock/models.py:1779
+#: stock/models.py:1790
msgid "Attachment must be uploaded for this test"
msgstr ""
-#: stock/models.py:1797
+#: stock/models.py:1808
msgid "Test name"
msgstr ""
-#: stock/models.py:1803 templates/js/translated/table_filters.js:231
+#: stock/models.py:1814 templates/js/translated/table_filters.js:244
msgid "Test result"
msgstr ""
-#: stock/models.py:1809
+#: stock/models.py:1820
msgid "Test output value"
msgstr ""
-#: stock/models.py:1816
+#: stock/models.py:1827
msgid "Test result attachment"
msgstr ""
-#: stock/models.py:1822
+#: stock/models.py:1833
msgid "Test notes"
msgstr ""
-#: stock/templates/stock/item.html:16
+#: stock/templates/stock/item.html:17
msgid "Stock Tracking Information"
msgstr ""
-#: stock/templates/stock/item.html:29
+#: stock/templates/stock/item.html:30
msgid "New Entry"
msgstr ""
-#: stock/templates/stock/item.html:42
+#: stock/templates/stock/item.html:43
msgid "Child Stock Items"
msgstr ""
-#: stock/templates/stock/item.html:49
+#: stock/templates/stock/item.html:50
msgid "This stock item does not have any child items"
msgstr ""
-#: stock/templates/stock/item.html:57 stock/templates/stock/navbar.html:19
+#: stock/templates/stock/item.html:58 stock/templates/stock/navbar.html:19
#: stock/templates/stock/navbar.html:22
msgid "Test Data"
msgstr ""
-#: stock/templates/stock/item.html:65
+#: stock/templates/stock/item.html:66
msgid "Delete Test Data"
msgstr ""
-#: stock/templates/stock/item.html:69
+#: stock/templates/stock/item.html:70
msgid "Add Test Data"
msgstr ""
-#: stock/templates/stock/item.html:72 stock/templates/stock/item_base.html:95
+#: stock/templates/stock/item.html:73 stock/templates/stock/item_base.html:95
msgid "Test Report"
msgstr ""
-#: stock/templates/stock/item.html:119 stock/templates/stock/navbar.html:27
+#: stock/templates/stock/item.html:120 stock/templates/stock/navbar.html:27
msgid "Installed Stock Items"
msgstr ""
-#: stock/templates/stock/item.html:124 stock/views.py:534
+#: stock/templates/stock/item.html:125 stock/views.py:534
msgid "Install Stock Item"
msgstr ""
-#: stock/templates/stock/item.html:299 stock/templates/stock/item.html:324
+#: stock/templates/stock/item.html:301 stock/templates/stock/item.html:326
msgid "Add Test Result"
msgstr ""
-#: stock/templates/stock/item.html:344
+#: stock/templates/stock/item.html:346
msgid "Edit Test Result"
msgstr ""
-#: stock/templates/stock/item.html:358
+#: stock/templates/stock/item.html:360
msgid "Delete Test Result"
msgstr ""
#: stock/templates/stock/item_base.html:33
#: stock/templates/stock/item_base.html:399
-#: templates/js/translated/table_filters.js:212
+#: templates/js/translated/table_filters.js:225
msgid "Expired"
msgstr ""
#: stock/templates/stock/item_base.html:43
#: stock/templates/stock/item_base.html:401
-#: templates/js/translated/table_filters.js:218
+#: templates/js/translated/table_filters.js:231
msgid "Stale"
msgstr ""
#: stock/templates/stock/item_base.html:80
-#: templates/js/translated/barcode.js:309
-#: templates/js/translated/barcode.js:314
+#: templates/js/translated/barcode.js:331
+#: templates/js/translated/barcode.js:336
msgid "Unlink Barcode"
msgstr ""
@@ -5769,7 +5911,7 @@ msgid "next page"
msgstr ""
#: stock/templates/stock/item_base.html:303
-#: templates/js/translated/build.js:628
+#: templates/js/translated/build.js:651
msgid "No location set"
msgstr ""
@@ -5796,7 +5938,7 @@ msgid "This StockItem expires on %(item.expiry_date)s"
msgstr ""
#: stock/templates/stock/item_base.html:408
-#: templates/js/translated/stock.js:1032
+#: templates/js/translated/stock.js:980
msgid "Last Updated"
msgstr ""
@@ -5826,7 +5968,7 @@ msgstr ""
#: stock/templates/stock/item_delete.html:12
#, python-format
-msgid "This will remove %(qty)s units of %(full_name)s from stock."
+msgid "This will remove %(qty)s units of %(full_name)s from stock."
msgstr ""
#: stock/templates/stock/item_install.html:8
@@ -5976,7 +6118,7 @@ msgstr ""
#: stock/templates/stock/stockitem_convert.html:8
#, python-format
-msgid "This stock item is current an instance of %(part)s"
+msgid "This stock item is current an instance of %(part)s"
msgstr ""
#: stock/templates/stock/stockitem_convert.html:9
@@ -6040,7 +6182,7 @@ msgstr ""
msgid "Uninstall Stock Items"
msgstr ""
-#: stock/views.py:780 templates/js/translated/stock.js:282
+#: stock/views.py:780 templates/js/translated/stock.js:353
msgid "Confirm stock adjustment"
msgstr ""
@@ -6060,7 +6202,7 @@ msgstr ""
msgid "Serialize Stock"
msgstr ""
-#: stock/views.py:1143 templates/js/translated/build.js:365
+#: stock/views.py:1143 templates/js/translated/build.js:392
msgid "Create new Stock Item"
msgstr ""
@@ -6172,11 +6314,11 @@ msgstr ""
msgid "Enter a search query"
msgstr ""
-#: templates/InvenTree/search.html:268 templates/js/translated/stock.js:629
+#: templates/InvenTree/search.html:268 templates/js/translated/stock.js:699
msgid "Shipped to customer"
msgstr ""
-#: templates/InvenTree/search.html:271 templates/js/translated/stock.js:639
+#: templates/InvenTree/search.html:271 templates/js/translated/stock.js:709
msgid "No stock location set"
msgstr ""
@@ -6241,7 +6383,7 @@ msgstr ""
#: templates/InvenTree/settings/navbar.html:27
#: templates/InvenTree/settings/navbar.html:29
-#: templates/js/translated/tables.js:351 templates/search_form.html:6
+#: templates/js/translated/tables.js:366 templates/search_form.html:6
#: templates/search_form.html:8
msgid "Search"
msgstr ""
@@ -6258,7 +6400,7 @@ msgstr ""
#: templates/InvenTree/settings/navbar.html:46
#: templates/InvenTree/settings/navbar.html:48
-#: templates/InvenTree/settings/settings.html:8 templates/navbar.html:84
+#: templates/InvenTree/settings/settings.html:8 templates/navbar.html:94
msgid "Settings"
msgstr ""
@@ -6333,16 +6475,16 @@ msgid "No category parameter templates found"
msgstr ""
#: templates/InvenTree/settings/settings.html:174
-#: templates/InvenTree/settings/settings.html:271
+#: templates/InvenTree/settings/settings.html:273
msgid "Edit Template"
msgstr ""
#: templates/InvenTree/settings/settings.html:175
-#: templates/InvenTree/settings/settings.html:272
+#: templates/InvenTree/settings/settings.html:274
msgid "Delete Template"
msgstr ""
-#: templates/InvenTree/settings/settings.html:251
+#: templates/InvenTree/settings/settings.html:253
msgid "No part parameter templates found"
msgstr ""
@@ -6359,6 +6501,7 @@ msgid "Account Settings"
msgstr ""
#: templates/InvenTree/settings/user.html:15
+#: templates/js/translated/helpers.js:26
msgid "Edit"
msgstr ""
@@ -6437,65 +6580,69 @@ msgstr ""
msgid "InvenTree Version"
msgstr ""
-#: templates/about.html:26
+#: templates/about.html:27
+msgid "Development Version"
+msgstr ""
+
+#: templates/about.html:30
msgid "Up to Date"
msgstr ""
-#: templates/about.html:28
+#: templates/about.html:32
msgid "Update Available"
msgstr ""
-#: templates/about.html:34
-msgid "API Version"
-msgstr ""
-
-#: templates/about.html:39
-msgid "Python Version"
-msgstr ""
-
-#: templates/about.html:44
-msgid "Django Version"
-msgstr ""
-
-#: templates/about.html:51
+#: templates/about.html:42
msgid "Commit Hash"
msgstr ""
-#: templates/about.html:58
+#: templates/about.html:49
msgid "Commit Date"
msgstr ""
-#: templates/about.html:63
+#: templates/about.html:55
msgid "InvenTree Documentation"
msgstr ""
-#: templates/about.html:68
+#: templates/about.html:60
+msgid "API Version"
+msgstr ""
+
+#: templates/about.html:65
+msgid "Python Version"
+msgstr ""
+
+#: templates/about.html:70
+msgid "Django Version"
+msgstr ""
+
+#: templates/about.html:75
msgid "View Code on GitHub"
msgstr ""
-#: templates/about.html:73
+#: templates/about.html:80
msgid "Credits"
msgstr ""
-#: templates/about.html:78
+#: templates/about.html:85
msgid "Mobile App"
msgstr ""
-#: templates/about.html:83
+#: templates/about.html:90
msgid "Submit Bug Report"
msgstr ""
-#: templates/about.html:90 templates/clip.html:4
+#: templates/about.html:97 templates/clip.html:4
msgid "copy to clipboard"
msgstr ""
-#: templates/about.html:90
+#: templates/about.html:97
msgid "copy version information"
msgstr ""
-#: templates/about.html:100 templates/js/translated/modals.js:33
-#: templates/js/translated/modals.js:567 templates/js/translated/modals.js:661
-#: templates/js/translated/modals.js:957 templates/modals.html:29
+#: templates/about.html:107 templates/js/translated/modals.js:50
+#: templates/js/translated/modals.js:584 templates/js/translated/modals.js:678
+#: templates/js/translated/modals.js:971 templates/modals.html:29
#: templates/modals.html:54
msgid "Close"
msgstr ""
@@ -6516,1358 +6663,1390 @@ msgstr ""
msgid "Remote image must not exceed maximum allowable file size"
msgstr ""
-#: templates/js/report.js:47 templates/js/translated/report.js:47
+#: templates/js/report.js:47 templates/js/translated/report.js:67
msgid "items selected"
msgstr ""
-#: templates/js/report.js:55 templates/js/translated/report.js:55
+#: templates/js/report.js:55 templates/js/translated/report.js:75
msgid "Select Report Template"
msgstr ""
-#: templates/js/report.js:70 templates/js/translated/report.js:70
+#: templates/js/report.js:70 templates/js/translated/report.js:90
msgid "Select Test Report Template"
msgstr ""
-#: templates/js/report.js:98 templates/js/translated/label.js:10
-#: templates/js/translated/report.js:98 templates/js/translated/stock.js:244
+#: templates/js/report.js:98 templates/js/translated/label.js:29
+#: templates/js/translated/report.js:118 templates/js/translated/stock.js:313
msgid "Select Stock Items"
msgstr ""
-#: templates/js/report.js:99 templates/js/translated/report.js:99
+#: templates/js/report.js:99 templates/js/translated/report.js:119
msgid "Stock item(s) must be selected before printing reports"
msgstr ""
#: templates/js/report.js:116 templates/js/report.js:169
#: templates/js/report.js:223 templates/js/report.js:277
-#: templates/js/report.js:331 templates/js/translated/report.js:116
-#: templates/js/translated/report.js:169 templates/js/translated/report.js:223
-#: templates/js/translated/report.js:277 templates/js/translated/report.js:331
+#: templates/js/report.js:331 templates/js/translated/report.js:136
+#: templates/js/translated/report.js:189 templates/js/translated/report.js:243
+#: templates/js/translated/report.js:297 templates/js/translated/report.js:351
msgid "No Reports Found"
msgstr ""
-#: templates/js/report.js:117 templates/js/translated/report.js:117
+#: templates/js/report.js:117 templates/js/translated/report.js:137
msgid "No report templates found which match selected stock item(s)"
msgstr ""
-#: templates/js/report.js:152 templates/js/translated/report.js:152
+#: templates/js/report.js:152 templates/js/translated/report.js:172
msgid "Select Builds"
msgstr ""
-#: templates/js/report.js:153 templates/js/translated/report.js:153
+#: templates/js/report.js:153 templates/js/translated/report.js:173
msgid "Build(s) must be selected before printing reports"
msgstr ""
-#: templates/js/report.js:170 templates/js/translated/report.js:170
+#: templates/js/report.js:170 templates/js/translated/report.js:190
msgid "No report templates found which match selected build(s)"
msgstr ""
-#: templates/js/report.js:205 templates/js/translated/label.js:115
-#: templates/js/translated/report.js:205
+#: templates/js/report.js:205 templates/js/translated/label.js:134
+#: templates/js/translated/report.js:225
msgid "Select Parts"
msgstr ""
-#: templates/js/report.js:206 templates/js/translated/report.js:206
+#: templates/js/report.js:206 templates/js/translated/report.js:226
msgid "Part(s) must be selected before printing reports"
msgstr ""
-#: templates/js/report.js:224 templates/js/translated/report.js:224
+#: templates/js/report.js:224 templates/js/translated/report.js:244
msgid "No report templates found which match selected part(s)"
msgstr ""
-#: templates/js/report.js:259 templates/js/translated/report.js:259
+#: templates/js/report.js:259 templates/js/translated/report.js:279
msgid "Select Purchase Orders"
msgstr ""
-#: templates/js/report.js:260 templates/js/translated/report.js:260
+#: templates/js/report.js:260 templates/js/translated/report.js:280
msgid "Purchase Order(s) must be selected before printing report"
msgstr ""
#: templates/js/report.js:278 templates/js/report.js:332
-#: templates/js/translated/report.js:278 templates/js/translated/report.js:332
+#: templates/js/translated/report.js:298 templates/js/translated/report.js:352
msgid "No report templates found which match selected orders"
msgstr ""
-#: templates/js/report.js:313 templates/js/translated/report.js:313
+#: templates/js/report.js:313 templates/js/translated/report.js:333
msgid "Select Sales Orders"
msgstr ""
-#: templates/js/report.js:314 templates/js/translated/report.js:314
+#: templates/js/report.js:314 templates/js/translated/report.js:334
msgid "Sales Order(s) must be selected before printing report"
msgstr ""
-#: templates/js/translated/api.js:161 templates/js/translated/modals.js:1027
+#: templates/js/translated/api.js:174 templates/js/translated/modals.js:1041
msgid "No Response"
msgstr ""
-#: templates/js/translated/api.js:162 templates/js/translated/modals.js:1028
+#: templates/js/translated/api.js:175 templates/js/translated/modals.js:1042
msgid "No response from the InvenTree server"
msgstr ""
-#: templates/js/translated/api.js:167
+#: templates/js/translated/api.js:181
msgid "Error 400: Bad request"
msgstr ""
-#: templates/js/translated/api.js:168
+#: templates/js/translated/api.js:182
msgid "API request returned error code 400"
msgstr ""
-#: templates/js/translated/api.js:171 templates/js/translated/modals.js:1037
+#: templates/js/translated/api.js:186 templates/js/translated/modals.js:1051
msgid "Error 401: Not Authenticated"
msgstr ""
-#: templates/js/translated/api.js:172 templates/js/translated/modals.js:1038
+#: templates/js/translated/api.js:187 templates/js/translated/modals.js:1052
msgid "Authentication credentials not supplied"
msgstr ""
-#: templates/js/translated/api.js:175 templates/js/translated/modals.js:1042
+#: templates/js/translated/api.js:191 templates/js/translated/modals.js:1056
msgid "Error 403: Permission Denied"
msgstr ""
-#: templates/js/translated/api.js:176 templates/js/translated/modals.js:1043
+#: templates/js/translated/api.js:192 templates/js/translated/modals.js:1057
msgid "You do not have the required permissions to access this function"
msgstr ""
-#: templates/js/translated/api.js:179 templates/js/translated/modals.js:1047
+#: templates/js/translated/api.js:196 templates/js/translated/modals.js:1061
msgid "Error 404: Resource Not Found"
msgstr ""
-#: templates/js/translated/api.js:180 templates/js/translated/modals.js:1048
+#: templates/js/translated/api.js:197 templates/js/translated/modals.js:1062
msgid "The requested resource could not be located on the server"
msgstr ""
-#: templates/js/translated/api.js:183 templates/js/translated/modals.js:1052
+#: templates/js/translated/api.js:201 templates/js/translated/modals.js:1066
msgid "Error 408: Timeout"
msgstr ""
-#: templates/js/translated/api.js:184 templates/js/translated/modals.js:1053
+#: templates/js/translated/api.js:202 templates/js/translated/modals.js:1067
msgid "Connection timeout while requesting data from server"
msgstr ""
-#: templates/js/translated/api.js:187
+#: templates/js/translated/api.js:205
msgid "Unhandled Error Code"
msgstr ""
-#: templates/js/translated/api.js:188
+#: templates/js/translated/api.js:206
msgid "Error code"
msgstr ""
-#: templates/js/translated/attachment.js:16
+#: templates/js/translated/attachment.js:27
msgid "No attachments found"
msgstr ""
-#: templates/js/translated/attachment.js:56
+#: templates/js/translated/attachment.js:91
msgid "Upload Date"
msgstr ""
-#: templates/js/translated/attachment.js:69
+#: templates/js/translated/attachment.js:104
msgid "Edit attachment"
msgstr ""
-#: templates/js/translated/attachment.js:76
+#: templates/js/translated/attachment.js:111
msgid "Delete attachment"
msgstr ""
-#: templates/js/translated/barcode.js:8
+#: templates/js/translated/barcode.js:30
msgid "Scan barcode data here using wedge scanner"
msgstr ""
-#: templates/js/translated/barcode.js:10
+#: templates/js/translated/barcode.js:32
msgid "Enter barcode data"
msgstr ""
-#: templates/js/translated/barcode.js:14
+#: templates/js/translated/barcode.js:36
msgid "Barcode"
msgstr ""
-#: templates/js/translated/barcode.js:32
+#: templates/js/translated/barcode.js:54
msgid "Enter optional notes for stock transfer"
msgstr ""
-#: templates/js/translated/barcode.js:33
+#: templates/js/translated/barcode.js:55
msgid "Enter notes"
msgstr ""
-#: templates/js/translated/barcode.js:71
+#: templates/js/translated/barcode.js:93
msgid "Server error"
msgstr ""
-#: templates/js/translated/barcode.js:92
+#: templates/js/translated/barcode.js:114
msgid "Unknown response from server"
msgstr ""
-#: templates/js/translated/barcode.js:119
-#: templates/js/translated/modals.js:1017
+#: templates/js/translated/barcode.js:141
+#: templates/js/translated/modals.js:1031
msgid "Invalid server response"
msgstr ""
-#: templates/js/translated/barcode.js:212
+#: templates/js/translated/barcode.js:234
msgid "Scan barcode data below"
msgstr ""
-#: templates/js/translated/barcode.js:270
+#: templates/js/translated/barcode.js:281 templates/navbar.html:65
+msgid "Scan Barcode"
+msgstr ""
+
+#: templates/js/translated/barcode.js:292
msgid "No URL in response"
msgstr ""
-#: templates/js/translated/barcode.js:288
+#: templates/js/translated/barcode.js:310
msgid "Link Barcode to Stock Item"
msgstr ""
-#: templates/js/translated/barcode.js:311
+#: templates/js/translated/barcode.js:333
msgid "This will remove the association between this stock item and the barcode"
msgstr ""
-#: templates/js/translated/barcode.js:317
+#: templates/js/translated/barcode.js:339
msgid "Unlink"
msgstr ""
-#: templates/js/translated/barcode.js:376 templates/js/translated/stock.js:220
+#: templates/js/translated/barcode.js:398 templates/js/translated/stock.js:289
msgid "Remove stock item"
msgstr ""
-#: templates/js/translated/barcode.js:418
+#: templates/js/translated/barcode.js:440
msgid "Check Stock Items into Location"
msgstr ""
-#: templates/js/translated/barcode.js:422
-#: templates/js/translated/barcode.js:547
+#: templates/js/translated/barcode.js:444
+#: templates/js/translated/barcode.js:571
msgid "Check In"
msgstr ""
-#: templates/js/translated/barcode.js:462
-#: templates/js/translated/barcode.js:586
+#: templates/js/translated/barcode.js:486
+#: templates/js/translated/barcode.js:610
msgid "Error transferring stock"
msgstr ""
-#: templates/js/translated/barcode.js:481
+#: templates/js/translated/barcode.js:505
msgid "Stock Item already scanned"
msgstr ""
-#: templates/js/translated/barcode.js:485
+#: templates/js/translated/barcode.js:509
msgid "Stock Item already in this location"
msgstr ""
-#: templates/js/translated/barcode.js:492
+#: templates/js/translated/barcode.js:516
msgid "Added stock item"
msgstr ""
-#: templates/js/translated/barcode.js:499
+#: templates/js/translated/barcode.js:523
msgid "Barcode does not match Stock Item"
msgstr ""
-#: templates/js/translated/barcode.js:542
+#: templates/js/translated/barcode.js:566
msgid "Check Into Location"
msgstr ""
-#: templates/js/translated/barcode.js:605
+#: templates/js/translated/barcode.js:629
msgid "Barcode does not match a valid location"
msgstr ""
-#: templates/js/translated/bom.js:195 templates/js/translated/build.js:1152
+#: templates/js/translated/bom.js:215 templates/js/translated/build.js:1169
msgid "Open subassembly"
msgstr ""
-#: templates/js/translated/bom.js:269
+#: templates/js/translated/bom.js:287
msgid "Purchase Price Range"
msgstr ""
-#: templates/js/translated/bom.js:277
+#: templates/js/translated/bom.js:294
msgid "Purchase Price Average"
msgstr ""
-#: templates/js/translated/bom.js:326 templates/js/translated/bom.js:412
+#: templates/js/translated/bom.js:342 templates/js/translated/bom.js:428
msgid "View BOM"
msgstr ""
-#: templates/js/translated/bom.js:386
+#: templates/js/translated/bom.js:402
msgid "Validate BOM Item"
msgstr ""
-#: templates/js/translated/bom.js:388
+#: templates/js/translated/bom.js:404
msgid "This line has been validated"
msgstr ""
-#: templates/js/translated/bom.js:390 templates/js/translated/bom.js:555
+#: templates/js/translated/bom.js:406 templates/js/translated/bom.js:569
msgid "Edit BOM Item"
msgstr ""
-#: templates/js/translated/bom.js:392 templates/js/translated/bom.js:539
+#: templates/js/translated/bom.js:408 templates/js/translated/bom.js:554
msgid "Delete BOM Item"
msgstr ""
-#: templates/js/translated/bom.js:483 templates/js/translated/build.js:458
-#: templates/js/translated/build.js:1250
+#: templates/js/translated/bom.js:499 templates/js/translated/build.js:483
+#: templates/js/translated/build.js:1267
msgid "No BOM items found"
msgstr ""
-#: templates/js/translated/build.js:42
+#: templates/js/translated/build.js:69
msgid "Edit Build Order"
msgstr ""
-#: templates/js/translated/build.js:68
+#: templates/js/translated/build.js:95
msgid "Create Build Order"
msgstr ""
-#: templates/js/translated/build.js:100
+#: templates/js/translated/build.js:127
msgid "Auto-allocate stock items to this output"
msgstr ""
-#: templates/js/translated/build.js:108
+#: templates/js/translated/build.js:135
msgid "Unallocate stock from build output"
msgstr ""
-#: templates/js/translated/build.js:118
+#: templates/js/translated/build.js:145
msgid "Complete build output"
msgstr ""
-#: templates/js/translated/build.js:127
+#: templates/js/translated/build.js:154
msgid "Delete build output"
msgstr ""
-#: templates/js/translated/build.js:222
+#: templates/js/translated/build.js:249
msgid "No build order allocations found"
msgstr ""
-#: templates/js/translated/build.js:260 templates/js/translated/order.js:471
+#: templates/js/translated/build.js:287 templates/js/translated/order.js:813
msgid "Location not specified"
msgstr ""
-#: templates/js/translated/build.js:364 templates/stock_table.html:20
+#: templates/js/translated/build.js:391 templates/stock_table.html:20
msgid "New Stock Item"
msgstr ""
-#: templates/js/translated/build.js:679
+#: templates/js/translated/build.js:702
msgid "Required Part"
msgstr ""
-#: templates/js/translated/build.js:700
+#: templates/js/translated/build.js:723
msgid "Quantity Per"
msgstr ""
-#: templates/js/translated/build.js:770 templates/js/translated/build.js:1214
+#: templates/js/translated/build.js:793 templates/js/translated/build.js:1231
#: templates/stock_table.html:59
msgid "Order stock"
msgstr ""
-#: templates/js/translated/build.js:823
+#: templates/js/translated/build.js:846
msgid "No builds matching query"
msgstr ""
-#: templates/js/translated/build.js:840 templates/js/translated/part.js:711
-#: templates/js/translated/part.js:956 templates/js/translated/stock.js:883
-#: templates/js/translated/stock.js:1336
+#: templates/js/translated/build.js:863 templates/js/translated/part.js:845
+#: templates/js/translated/part.js:1123 templates/js/translated/stock.js:783
+#: templates/js/translated/stock.js:1477
msgid "Select"
msgstr ""
-#: templates/js/translated/build.js:860
+#: templates/js/translated/build.js:883
msgid "Build order is overdue"
msgstr ""
-#: templates/js/translated/build.js:924 templates/js/translated/stock.js:1558
+#: templates/js/translated/build.js:944 templates/js/translated/stock.js:1696
msgid "No user information"
msgstr ""
-#: templates/js/translated/build.js:939
+#: templates/js/translated/build.js:956
msgid "No information"
msgstr ""
-#: templates/js/translated/build.js:989
+#: templates/js/translated/build.js:1007
msgid "No parts allocated for"
msgstr ""
-#: templates/js/translated/company.js:34
+#: templates/js/translated/company.js:65
msgid "Add Manufacturer"
msgstr ""
-#: templates/js/translated/company.js:47 templates/js/translated/company.js:136
+#: templates/js/translated/company.js:78 templates/js/translated/company.js:176
msgid "Add Manufacturer Part"
msgstr ""
-#: templates/js/translated/company.js:59
+#: templates/js/translated/company.js:99
msgid "Edit Manufacturer Part"
msgstr ""
-#: templates/js/translated/company.js:68
+#: templates/js/translated/company.js:108
msgid "Delete Manufacturer Part"
msgstr ""
-#: templates/js/translated/company.js:124 templates/js/translated/order.js:58
+#: templates/js/translated/company.js:164 templates/js/translated/order.js:86
msgid "Add Supplier"
msgstr ""
-#: templates/js/translated/company.js:152
+#: templates/js/translated/company.js:192
msgid "Add Supplier Part"
msgstr ""
-#: templates/js/translated/company.js:162
+#: templates/js/translated/company.js:207
msgid "Edit Supplier Part"
msgstr ""
-#: templates/js/translated/company.js:172
+#: templates/js/translated/company.js:217
msgid "Delete Supplier Part"
msgstr ""
-#: templates/js/translated/company.js:219
+#: templates/js/translated/company.js:264
msgid "Edit Company"
msgstr ""
-#: templates/js/translated/company.js:240
+#: templates/js/translated/company.js:285
msgid "Add new Company"
msgstr ""
-#: templates/js/translated/company.js:317
+#: templates/js/translated/company.js:362
msgid "Parts Supplied"
msgstr ""
-#: templates/js/translated/company.js:326
+#: templates/js/translated/company.js:371
msgid "Parts Manufactured"
msgstr ""
-#: templates/js/translated/company.js:339
+#: templates/js/translated/company.js:385
msgid "No company information found"
msgstr ""
-#: templates/js/translated/company.js:357
+#: templates/js/translated/company.js:404
msgid "The following manufacturer parts will be deleted"
msgstr ""
-#: templates/js/translated/company.js:374
+#: templates/js/translated/company.js:421
msgid "Delete Manufacturer Parts"
msgstr ""
-#: templates/js/translated/company.js:427
+#: templates/js/translated/company.js:475
msgid "No manufacturer parts found"
msgstr ""
-#: templates/js/translated/company.js:446
-#: templates/js/translated/company.js:696 templates/js/translated/part.js:288
-#: templates/js/translated/part.js:373
+#: templates/js/translated/company.js:495
+#: templates/js/translated/company.js:751 templates/js/translated/part.js:416
+#: templates/js/translated/part.js:501
msgid "Template part"
msgstr ""
-#: templates/js/translated/company.js:450
-#: templates/js/translated/company.js:700 templates/js/translated/part.js:292
-#: templates/js/translated/part.js:377
+#: templates/js/translated/company.js:499
+#: templates/js/translated/company.js:755 templates/js/translated/part.js:420
+#: templates/js/translated/part.js:505
msgid "Assembled part"
msgstr ""
-#: templates/js/translated/company.js:574 templates/js/translated/part.js:462
+#: templates/js/translated/company.js:626 templates/js/translated/part.js:593
msgid "No parameters found"
msgstr ""
-#: templates/js/translated/company.js:610 templates/js/translated/part.js:503
+#: templates/js/translated/company.js:663 templates/js/translated/part.js:635
msgid "Edit parameter"
msgstr ""
-#: templates/js/translated/company.js:611 templates/js/translated/part.js:504
+#: templates/js/translated/company.js:664 templates/js/translated/part.js:636
msgid "Delete parameter"
msgstr ""
-#: templates/js/translated/company.js:630 templates/js/translated/part.js:521
+#: templates/js/translated/company.js:683 templates/js/translated/part.js:653
msgid "Edit Parameter"
msgstr ""
-#: templates/js/translated/company.js:641 templates/js/translated/part.js:533
+#: templates/js/translated/company.js:694 templates/js/translated/part.js:665
msgid "Delete Parameter"
msgstr ""
-#: templates/js/translated/company.js:677
+#: templates/js/translated/company.js:731
msgid "No supplier parts found"
msgstr ""
-#: templates/js/translated/filters.js:167
-#: templates/js/translated/filters.js:404
+#: templates/js/translated/filters.js:178
+#: templates/js/translated/filters.js:402
msgid "true"
msgstr ""
-#: templates/js/translated/filters.js:171
-#: templates/js/translated/filters.js:405
+#: templates/js/translated/filters.js:182
+#: templates/js/translated/filters.js:403
msgid "false"
msgstr ""
-#: templates/js/translated/filters.js:193
+#: templates/js/translated/filters.js:204
msgid "Select filter"
msgstr ""
-#: templates/js/translated/filters.js:268
+#: templates/js/translated/filters.js:279
msgid "Reload data"
msgstr ""
-#: templates/js/translated/filters.js:270
+#: templates/js/translated/filters.js:281
msgid "Add new filter"
msgstr ""
-#: templates/js/translated/filters.js:273
+#: templates/js/translated/filters.js:284
msgid "Clear all filters"
msgstr ""
-#: templates/js/translated/filters.js:303
+#: templates/js/translated/filters.js:312
msgid "Create filter"
msgstr ""
-#: templates/js/translated/forms.js:289 templates/js/translated/forms.js:302
-#: templates/js/translated/forms.js:314 templates/js/translated/forms.js:326
+#: templates/js/translated/forms.js:323 templates/js/translated/forms.js:336
+#: templates/js/translated/forms.js:348 templates/js/translated/forms.js:360
msgid "Action Prohibited"
msgstr ""
-#: templates/js/translated/forms.js:290
+#: templates/js/translated/forms.js:324
msgid "Create operation not allowed"
msgstr ""
-#: templates/js/translated/forms.js:303
+#: templates/js/translated/forms.js:337
msgid "Update operation not allowed"
msgstr ""
-#: templates/js/translated/forms.js:315
+#: templates/js/translated/forms.js:349
msgid "Delete operation not allowed"
msgstr ""
-#: templates/js/translated/forms.js:327
+#: templates/js/translated/forms.js:361
msgid "View operation not allowed"
msgstr ""
-#: templates/js/translated/forms.js:865 templates/modals.html:21
+#: templates/js/translated/forms.js:889 templates/modals.html:21
#: templates/modals.html:47
msgid "Form errors exist"
msgstr ""
-#: templates/js/translated/forms.js:1258
+#: templates/js/translated/forms.js:1379
msgid "Searching"
msgstr ""
-#: templates/js/translated/forms.js:1423
+#: templates/js/translated/forms.js:1593
msgid "Clear input"
msgstr ""
-#: templates/js/translated/label.js:11
-msgid "Stock item(s) must be selected before printing labels"
+#: templates/js/translated/helpers.js:19
+msgid "YES"
msgstr ""
-#: templates/js/translated/label.js:29 templates/js/translated/label.js:79
-#: templates/js/translated/label.js:134
-msgid "No Labels Found"
+#: templates/js/translated/helpers.js:21
+msgid "NO"
msgstr ""
#: templates/js/translated/label.js:30
+msgid "Stock item(s) must be selected before printing labels"
+msgstr ""
+
+#: templates/js/translated/label.js:48 templates/js/translated/label.js:98
+#: templates/js/translated/label.js:153
+msgid "No Labels Found"
+msgstr ""
+
+#: templates/js/translated/label.js:49
msgid "No labels found which match selected stock item(s)"
msgstr ""
-#: templates/js/translated/label.js:61
+#: templates/js/translated/label.js:80
msgid "Select Stock Locations"
msgstr ""
-#: templates/js/translated/label.js:62
+#: templates/js/translated/label.js:81
msgid "Stock location(s) must be selected before printing labels"
msgstr ""
-#: templates/js/translated/label.js:80
+#: templates/js/translated/label.js:99
msgid "No labels found which match selected stock location(s)"
msgstr ""
-#: templates/js/translated/label.js:116
+#: templates/js/translated/label.js:135
msgid "Part(s) must be selected before printing labels"
msgstr ""
-#: templates/js/translated/label.js:135
+#: templates/js/translated/label.js:154
msgid "No labels found which match the selected part(s)"
msgstr ""
-#: templates/js/translated/label.js:209
+#: templates/js/translated/label.js:228
msgid "stock items selected"
msgstr ""
-#: templates/js/translated/label.js:217
+#: templates/js/translated/label.js:236
msgid "Select Label"
msgstr ""
-#: templates/js/translated/label.js:232
+#: templates/js/translated/label.js:251
msgid "Select Label Template"
msgstr ""
-#: templates/js/translated/modals.js:59 templates/js/translated/modals.js:103
-#: templates/js/translated/modals.js:593
+#: templates/js/translated/modals.js:76 templates/js/translated/modals.js:120
+#: templates/js/translated/modals.js:610
msgid "Cancel"
msgstr ""
-#: templates/js/translated/modals.js:60 templates/js/translated/modals.js:102
-#: templates/js/translated/modals.js:660 templates/js/translated/modals.js:956
+#: templates/js/translated/modals.js:77 templates/js/translated/modals.js:119
+#: templates/js/translated/modals.js:677 templates/js/translated/modals.js:970
#: templates/modals.html:30 templates/modals.html:55
msgid "Submit"
msgstr ""
-#: templates/js/translated/modals.js:101
+#: templates/js/translated/modals.js:118
msgid "Form Title"
msgstr ""
-#: templates/js/translated/modals.js:380
+#: templates/js/translated/modals.js:397
msgid "Waiting for server..."
msgstr ""
-#: templates/js/translated/modals.js:539
+#: templates/js/translated/modals.js:556
msgid "Show Error Information"
msgstr ""
-#: templates/js/translated/modals.js:592
+#: templates/js/translated/modals.js:609
msgid "Accept"
msgstr ""
-#: templates/js/translated/modals.js:649
+#: templates/js/translated/modals.js:666
msgid "Loading Data"
msgstr ""
-#: templates/js/translated/modals.js:907
+#: templates/js/translated/modals.js:922
msgid "Invalid response from server"
msgstr ""
-#: templates/js/translated/modals.js:907
+#: templates/js/translated/modals.js:922
msgid "Form data missing from server response"
msgstr ""
-#: templates/js/translated/modals.js:920
+#: templates/js/translated/modals.js:934
msgid "Error posting form data"
msgstr ""
-#: templates/js/translated/modals.js:1017
+#: templates/js/translated/modals.js:1031
msgid "JSON response missing form data"
msgstr ""
-#: templates/js/translated/modals.js:1032
+#: templates/js/translated/modals.js:1046
msgid "Error 400: Bad Request"
msgstr ""
-#: templates/js/translated/modals.js:1033
+#: templates/js/translated/modals.js:1047
msgid "Server returned error code 400"
msgstr ""
-#: templates/js/translated/modals.js:1056
+#: templates/js/translated/modals.js:1070
msgid "Error requesting form data"
msgstr ""
-#: templates/js/translated/model_renderers.js:38
+#: templates/js/translated/model_renderers.js:40
msgid "Company ID"
msgstr ""
-#: templates/js/translated/model_renderers.js:78
+#: templates/js/translated/model_renderers.js:82
msgid "Location ID"
msgstr ""
-#: templates/js/translated/model_renderers.js:95
+#: templates/js/translated/model_renderers.js:99
msgid "Build ID"
msgstr ""
-#: templates/js/translated/model_renderers.js:114
+#: templates/js/translated/model_renderers.js:119
msgid "Part ID"
msgstr ""
-#: templates/js/translated/model_renderers.js:163
+#: templates/js/translated/model_renderers.js:171
msgid "Category ID"
msgstr ""
-#: templates/js/translated/model_renderers.js:199
+#: templates/js/translated/model_renderers.js:208
msgid "Manufacturer Part ID"
msgstr ""
-#: templates/js/translated/model_renderers.js:227
+#: templates/js/translated/model_renderers.js:237
msgid "Supplier Part ID"
msgstr ""
-#: templates/js/translated/order.js:17
+#: templates/js/translated/order.js:45
msgid "Add Customer"
msgstr ""
-#: templates/js/translated/order.js:42
+#: templates/js/translated/order.js:70
msgid "Create Sales Order"
msgstr ""
-#: templates/js/translated/order.js:222
+#: templates/js/translated/order.js:295
msgid "No purchase orders found"
msgstr ""
-#: templates/js/translated/order.js:246 templates/js/translated/order.js:341
+#: templates/js/translated/order.js:320 templates/js/translated/order.js:682
msgid "Order is overdue"
msgstr ""
-#: templates/js/translated/order.js:318
+#: templates/js/translated/order.js:452
+msgid "No line items found"
+msgstr ""
+
+#: templates/js/translated/order.js:617
+msgid "Delete line item"
+msgstr ""
+
+#: templates/js/translated/order.js:621
+msgid "Receive line item"
+msgstr ""
+
+#: templates/js/translated/order.js:658
msgid "No sales orders found"
msgstr ""
-#: templates/js/translated/order.js:355
+#: templates/js/translated/order.js:696
msgid "Invalid Customer"
msgstr ""
-#: templates/js/translated/order.js:432
+#: templates/js/translated/order.js:774
msgid "No sales order allocations found"
msgstr ""
-#: templates/js/translated/part.js:10
-msgid "YES"
-msgstr ""
-
-#: templates/js/translated/part.js:12
-msgid "NO"
-msgstr ""
-
-#: templates/js/translated/part.js:22
-msgid "Add Part Category"
-msgstr ""
-
-#: templates/js/translated/part.js:53
+#: templates/js/translated/part.js:49
msgid "Part Attributes"
msgstr ""
-#: templates/js/translated/part.js:96
+#: templates/js/translated/part.js:53
msgid "Part Creation Options"
msgstr ""
-#: templates/js/translated/part.js:102
-msgid "Initial Stock Quantity"
-msgstr ""
-
-#: templates/js/translated/part.js:103
-msgid "Initialize part stock with specified quantity"
-msgstr ""
-
-#: templates/js/translated/part.js:109
-msgid "Copy Category Parameters"
-msgstr ""
-
-#: templates/js/translated/part.js:110
-msgid "Copy parameter templates from selected part category"
-msgstr ""
-
-#: templates/js/translated/part.js:120
+#: templates/js/translated/part.js:57
msgid "Part Duplication Options"
msgstr ""
-#: templates/js/translated/part.js:131
-msgid "Copy Image"
+#: templates/js/translated/part.js:61
+msgid "Supplier Options"
msgstr ""
-#: templates/js/translated/part.js:132
-msgid "Copy image from original part"
+#: templates/js/translated/part.js:75
+msgid "Add Part Category"
msgstr ""
-#: templates/js/translated/part.js:138
-msgid "Copy BOM"
+#: templates/js/translated/part.js:159
+msgid "Create Initial Stock"
msgstr ""
-#: templates/js/translated/part.js:139
-msgid "Copy bill of materials from original part"
+#: templates/js/translated/part.js:160
+msgid "Create an initial stock item for this part"
msgstr ""
-#: templates/js/translated/part.js:145
-msgid "Copy Parameters"
+#: templates/js/translated/part.js:167
+msgid "Initial Stock Quantity"
msgstr ""
-#: templates/js/translated/part.js:146
-msgid "Copy parameter data from original part"
+#: templates/js/translated/part.js:168
+msgid "Specify initial stock quantity for this part"
msgstr ""
-#: templates/js/translated/part.js:158
-msgid "Parent part category"
+#: templates/js/translated/part.js:175 templates/js/translated/stock.js:330
+msgid "Select destination stock location"
+msgstr ""
+
+#: templates/js/translated/part.js:186
+msgid "Copy Category Parameters"
+msgstr ""
+
+#: templates/js/translated/part.js:187
+msgid "Copy parameter templates from selected part category"
+msgstr ""
+
+#: templates/js/translated/part.js:195
+msgid "Add Supplier Data"
msgstr ""
#: templates/js/translated/part.js:196
+msgid "Create initial supplier data for this part"
+msgstr ""
+
+#: templates/js/translated/part.js:252
+msgid "Copy Image"
+msgstr ""
+
+#: templates/js/translated/part.js:253
+msgid "Copy image from original part"
+msgstr ""
+
+#: templates/js/translated/part.js:260
+msgid "Copy BOM"
+msgstr ""
+
+#: templates/js/translated/part.js:261
+msgid "Copy bill of materials from original part"
+msgstr ""
+
+#: templates/js/translated/part.js:268
+msgid "Copy Parameters"
+msgstr ""
+
+#: templates/js/translated/part.js:269
+msgid "Copy parameter data from original part"
+msgstr ""
+
+#: templates/js/translated/part.js:282
+msgid "Parent part category"
+msgstr ""
+
+#: templates/js/translated/part.js:323
msgid "Edit Part"
msgstr ""
-#: templates/js/translated/part.js:280 templates/js/translated/part.js:365
+#: templates/js/translated/part.js:408 templates/js/translated/part.js:493
msgid "Trackable part"
msgstr ""
-#: templates/js/translated/part.js:284 templates/js/translated/part.js:369
+#: templates/js/translated/part.js:412 templates/js/translated/part.js:497
msgid "Virtual part"
msgstr ""
-#: templates/js/translated/part.js:296
+#: templates/js/translated/part.js:424
msgid "Starred part"
msgstr ""
-#: templates/js/translated/part.js:300
+#: templates/js/translated/part.js:428
msgid "Salable part"
msgstr ""
-#: templates/js/translated/part.js:414
+#: templates/js/translated/part.js:543
msgid "No variants found"
msgstr ""
-#: templates/js/translated/part.js:601 templates/js/translated/part.js:840
+#: templates/js/translated/part.js:732 templates/js/translated/part.js:994
msgid "No parts found"
msgstr ""
-#: templates/js/translated/part.js:779
+#: templates/js/translated/part.js:921
msgid "No category"
msgstr ""
-#: templates/js/translated/part.js:797
-#: templates/js/translated/table_filters.js:337
+#: templates/js/translated/part.js:944
+#: templates/js/translated/table_filters.js:350
msgid "Low stock"
msgstr ""
-#: templates/js/translated/part.js:981 templates/js/translated/stock.js:1360
+#: templates/js/translated/part.js:1148 templates/js/translated/stock.js:1501
msgid "Path"
msgstr ""
-#: templates/js/translated/part.js:1024
+#: templates/js/translated/part.js:1191
msgid "No test templates matching query"
msgstr ""
-#: templates/js/translated/part.js:1075 templates/js/translated/stock.js:443
+#: templates/js/translated/part.js:1242 templates/js/translated/stock.js:514
msgid "Edit test result"
msgstr ""
-#: templates/js/translated/part.js:1076 templates/js/translated/stock.js:444
+#: templates/js/translated/part.js:1243 templates/js/translated/stock.js:515
msgid "Delete test result"
msgstr ""
-#: templates/js/translated/part.js:1082
+#: templates/js/translated/part.js:1249
msgid "This test is defined for a parent part"
msgstr ""
-#: templates/js/translated/part.js:1107
+#: templates/js/translated/part.js:1274
#, python-brace-format
msgid "No ${human_name} information found"
msgstr ""
-#: templates/js/translated/part.js:1160
+#: templates/js/translated/part.js:1329
#, python-brace-format
msgid "Edit ${human_name}"
msgstr ""
-#: templates/js/translated/part.js:1161
+#: templates/js/translated/part.js:1330
#, python-brace-format
msgid "Delete ${human_name}"
msgstr ""
-#: templates/js/translated/part.js:1261
+#: templates/js/translated/part.js:1431
msgid "Single Price"
msgstr ""
-#: templates/js/translated/part.js:1280
+#: templates/js/translated/part.js:1450
msgid "Single Price Difference"
msgstr ""
-#: templates/js/translated/stock.js:9
+#: templates/js/translated/stock.js:66
msgid "Parent stock location"
msgstr ""
-#: templates/js/translated/stock.js:39
+#: templates/js/translated/stock.js:96
msgid "Export Stock"
msgstr ""
-#: templates/js/translated/stock.js:42
+#: templates/js/translated/stock.js:99
msgid "Format"
msgstr ""
-#: templates/js/translated/stock.js:43
+#: templates/js/translated/stock.js:100
msgid "Select file format"
msgstr ""
-#: templates/js/translated/stock.js:55
+#: templates/js/translated/stock.js:124
msgid "Include Sublocations"
msgstr ""
-#: templates/js/translated/stock.js:56
+#: templates/js/translated/stock.js:125
msgid "Include stock items in sublocations"
msgstr ""
-#: templates/js/translated/stock.js:98
+#: templates/js/translated/stock.js:167
msgid "Transfer Stock"
msgstr ""
-#: templates/js/translated/stock.js:99
+#: templates/js/translated/stock.js:168
msgid "Move"
msgstr ""
-#: templates/js/translated/stock.js:105
+#: templates/js/translated/stock.js:174
msgid "Count Stock"
msgstr ""
-#: templates/js/translated/stock.js:106
+#: templates/js/translated/stock.js:175
msgid "Count"
msgstr ""
-#: templates/js/translated/stock.js:110
+#: templates/js/translated/stock.js:179
msgid "Remove Stock"
msgstr ""
-#: templates/js/translated/stock.js:111
+#: templates/js/translated/stock.js:180
msgid "Take"
msgstr ""
-#: templates/js/translated/stock.js:115
+#: templates/js/translated/stock.js:184
msgid "Add Stock"
msgstr ""
-#: templates/js/translated/stock.js:116 users/models.py:190
+#: templates/js/translated/stock.js:185 users/models.py:190
msgid "Add"
msgstr ""
-#: templates/js/translated/stock.js:120 templates/stock_table.html:63
+#: templates/js/translated/stock.js:189 templates/stock_table.html:63
msgid "Delete Stock"
msgstr ""
-#: templates/js/translated/stock.js:209
+#: templates/js/translated/stock.js:278
msgid "Quantity cannot be adjusted for serialized stock"
msgstr ""
-#: templates/js/translated/stock.js:209
+#: templates/js/translated/stock.js:278
msgid "Specify stock quantity"
msgstr ""
-#: templates/js/translated/stock.js:245
+#: templates/js/translated/stock.js:314
msgid "You must select at least one available stock item"
msgstr ""
-#: templates/js/translated/stock.js:261
-msgid "Select destination stock location"
-msgstr ""
-
-#: templates/js/translated/stock.js:269
+#: templates/js/translated/stock.js:339
msgid "Stock transaction notes"
msgstr ""
-#: templates/js/translated/stock.js:406
+#: templates/js/translated/stock.js:477
msgid "PASS"
msgstr ""
-#: templates/js/translated/stock.js:408
+#: templates/js/translated/stock.js:479
msgid "FAIL"
msgstr ""
-#: templates/js/translated/stock.js:413
+#: templates/js/translated/stock.js:484
msgid "NO RESULT"
msgstr ""
-#: templates/js/translated/stock.js:439
+#: templates/js/translated/stock.js:510
msgid "Add test result"
msgstr ""
-#: templates/js/translated/stock.js:465
+#: templates/js/translated/stock.js:536
msgid "No test results found"
msgstr ""
-#: templates/js/translated/stock.js:513
+#: templates/js/translated/stock.js:584
msgid "Test Date"
msgstr ""
-#: templates/js/translated/stock.js:621
+#: templates/js/translated/stock.js:691
msgid "In production"
msgstr ""
-#: templates/js/translated/stock.js:625
+#: templates/js/translated/stock.js:695
msgid "Installed in Stock Item"
msgstr ""
-#: templates/js/translated/stock.js:633
+#: templates/js/translated/stock.js:703
msgid "Assigned to Sales Order"
msgstr ""
-#: templates/js/translated/stock.js:709
-msgid "No stock items matching query"
-msgstr ""
-
-#: templates/js/translated/stock.js:729
-msgid "items"
-msgstr ""
-
-#: templates/js/translated/stock.js:821
-msgid "batches"
-msgstr ""
-
-#: templates/js/translated/stock.js:848
-msgid "locations"
-msgstr ""
-
-#: templates/js/translated/stock.js:850
-msgid "Undefined location"
-msgstr ""
-
-#: templates/js/translated/stock.js:951
+#: templates/js/translated/stock.js:865
msgid "Stock item is in production"
msgstr ""
-#: templates/js/translated/stock.js:956
+#: templates/js/translated/stock.js:870
msgid "Stock item assigned to sales order"
msgstr ""
-#: templates/js/translated/stock.js:959
+#: templates/js/translated/stock.js:873
msgid "Stock item assigned to customer"
msgstr ""
-#: templates/js/translated/stock.js:963
+#: templates/js/translated/stock.js:877
msgid "Stock item has expired"
msgstr ""
-#: templates/js/translated/stock.js:965
+#: templates/js/translated/stock.js:879
msgid "Stock item will expire soon"
msgstr ""
-#: templates/js/translated/stock.js:969
+#: templates/js/translated/stock.js:883
msgid "Stock item has been allocated"
msgstr ""
-#: templates/js/translated/stock.js:973
+#: templates/js/translated/stock.js:887
msgid "Stock item has been installed in another item"
msgstr ""
-#: templates/js/translated/stock.js:980
+#: templates/js/translated/stock.js:894
msgid "Stock item has been rejected"
msgstr ""
-#: templates/js/translated/stock.js:984
+#: templates/js/translated/stock.js:896
msgid "Stock item is lost"
msgstr ""
-#: templates/js/translated/stock.js:987
+#: templates/js/translated/stock.js:898
msgid "Stock item is destroyed"
msgstr ""
-#: templates/js/translated/stock.js:991
-#: templates/js/translated/table_filters.js:148
+#: templates/js/translated/stock.js:902
+#: templates/js/translated/table_filters.js:161
msgid "Depleted"
msgstr ""
-#: templates/js/translated/stock.js:1020
+#: templates/js/translated/stock.js:956
msgid "Stocktake"
msgstr ""
-#: templates/js/translated/stock.js:1073
+#: templates/js/translated/stock.js:1029
msgid "Supplier part not specified"
msgstr ""
-#: templates/js/translated/stock.js:1223
+#: templates/js/translated/stock.js:1067
+msgid "No stock items matching query"
+msgstr ""
+
+#: templates/js/translated/stock.js:1088 templates/js/translated/stock.js:1136
+msgid "items"
+msgstr ""
+
+#: templates/js/translated/stock.js:1176
+msgid "batches"
+msgstr ""
+
+#: templates/js/translated/stock.js:1203
+msgid "locations"
+msgstr ""
+
+#: templates/js/translated/stock.js:1205
+msgid "Undefined location"
+msgstr ""
+
+#: templates/js/translated/stock.js:1364
msgid "Stock Status"
msgstr ""
-#: templates/js/translated/stock.js:1238
+#: templates/js/translated/stock.js:1379
msgid "Set Stock Status"
msgstr ""
-#: templates/js/translated/stock.js:1252
+#: templates/js/translated/stock.js:1393
msgid "Select Status Code"
msgstr ""
-#: templates/js/translated/stock.js:1253
+#: templates/js/translated/stock.js:1394
msgid "Status code must be selected"
msgstr ""
-#: templates/js/translated/stock.js:1392
+#: templates/js/translated/stock.js:1533
msgid "Invalid date"
msgstr ""
-#: templates/js/translated/stock.js:1439
+#: templates/js/translated/stock.js:1580
msgid "Location no longer exists"
msgstr ""
-#: templates/js/translated/stock.js:1458
+#: templates/js/translated/stock.js:1599
msgid "Purchase order no longer exists"
msgstr ""
-#: templates/js/translated/stock.js:1477
+#: templates/js/translated/stock.js:1618
msgid "Customer no longer exists"
msgstr ""
-#: templates/js/translated/stock.js:1495
+#: templates/js/translated/stock.js:1636
msgid "Stock item no longer exists"
msgstr ""
-#: templates/js/translated/stock.js:1518
+#: templates/js/translated/stock.js:1659
msgid "Added"
msgstr ""
-#: templates/js/translated/stock.js:1526
+#: templates/js/translated/stock.js:1667
msgid "Removed"
msgstr ""
-#: templates/js/translated/stock.js:1570
+#: templates/js/translated/stock.js:1708
msgid "Edit tracking entry"
msgstr ""
-#: templates/js/translated/stock.js:1571
+#: templates/js/translated/stock.js:1709
msgid "Delete tracking entry"
msgstr ""
-#: templates/js/translated/stock.js:1715
+#: templates/js/translated/stock.js:1833
msgid "No installed items"
msgstr ""
-#: templates/js/translated/stock.js:1738
+#: templates/js/translated/stock.js:1856
msgid "Serial"
msgstr ""
-#: templates/js/translated/stock.js:1766
+#: templates/js/translated/stock.js:1884
msgid "Uninstall Stock Item"
msgstr ""
-#: templates/js/translated/table_filters.js:43
+#: templates/js/translated/table_filters.js:56
msgid "Trackable Part"
msgstr ""
-#: templates/js/translated/table_filters.js:47
+#: templates/js/translated/table_filters.js:60
msgid "Assembled Part"
msgstr ""
-#: templates/js/translated/table_filters.js:51
+#: templates/js/translated/table_filters.js:64
msgid "Validated"
msgstr ""
-#: templates/js/translated/table_filters.js:59
+#: templates/js/translated/table_filters.js:72
msgid "Allow Variant Stock"
msgstr ""
-#: templates/js/translated/table_filters.js:79
-#: templates/js/translated/table_filters.js:143
+#: templates/js/translated/table_filters.js:92
+#: templates/js/translated/table_filters.js:156
msgid "Include sublocations"
msgstr ""
-#: templates/js/translated/table_filters.js:80
+#: templates/js/translated/table_filters.js:93
msgid "Include locations"
msgstr ""
-#: templates/js/translated/table_filters.js:90
-#: templates/js/translated/table_filters.js:91
-#: templates/js/translated/table_filters.js:314
+#: templates/js/translated/table_filters.js:103
+#: templates/js/translated/table_filters.js:104
+#: templates/js/translated/table_filters.js:327
msgid "Include subcategories"
msgstr ""
-#: templates/js/translated/table_filters.js:101
-#: templates/js/translated/table_filters.js:178
+#: templates/js/translated/table_filters.js:114
+#: templates/js/translated/table_filters.js:191
msgid "Is Serialized"
msgstr ""
-#: templates/js/translated/table_filters.js:104
-#: templates/js/translated/table_filters.js:185
+#: templates/js/translated/table_filters.js:117
+#: templates/js/translated/table_filters.js:198
msgid "Serial number GTE"
msgstr ""
-#: templates/js/translated/table_filters.js:105
-#: templates/js/translated/table_filters.js:186
+#: templates/js/translated/table_filters.js:118
+#: templates/js/translated/table_filters.js:199
msgid "Serial number greater than or equal to"
msgstr ""
-#: templates/js/translated/table_filters.js:108
-#: templates/js/translated/table_filters.js:189
+#: templates/js/translated/table_filters.js:121
+#: templates/js/translated/table_filters.js:202
msgid "Serial number LTE"
msgstr ""
-#: templates/js/translated/table_filters.js:109
-#: templates/js/translated/table_filters.js:190
+#: templates/js/translated/table_filters.js:122
+#: templates/js/translated/table_filters.js:203
msgid "Serial number less than or equal to"
msgstr ""
-#: templates/js/translated/table_filters.js:112
-#: templates/js/translated/table_filters.js:113
-#: templates/js/translated/table_filters.js:181
-#: templates/js/translated/table_filters.js:182
+#: templates/js/translated/table_filters.js:125
+#: templates/js/translated/table_filters.js:126
+#: templates/js/translated/table_filters.js:194
+#: templates/js/translated/table_filters.js:195
msgid "Serial number"
msgstr ""
-#: templates/js/translated/table_filters.js:117
-#: templates/js/translated/table_filters.js:199
+#: templates/js/translated/table_filters.js:130
+#: templates/js/translated/table_filters.js:212
msgid "Batch code"
msgstr ""
-#: templates/js/translated/table_filters.js:128
-#: templates/js/translated/table_filters.js:304
+#: templates/js/translated/table_filters.js:141
+#: templates/js/translated/table_filters.js:317
msgid "Active parts"
msgstr ""
-#: templates/js/translated/table_filters.js:129
+#: templates/js/translated/table_filters.js:142
msgid "Show stock for active parts"
msgstr ""
-#: templates/js/translated/table_filters.js:134
+#: templates/js/translated/table_filters.js:147
msgid "Part is an assembly"
msgstr ""
-#: templates/js/translated/table_filters.js:138
+#: templates/js/translated/table_filters.js:151
msgid "Is allocated"
msgstr ""
-#: templates/js/translated/table_filters.js:139
+#: templates/js/translated/table_filters.js:152
msgid "Item has been allocated"
msgstr ""
-#: templates/js/translated/table_filters.js:144
+#: templates/js/translated/table_filters.js:157
msgid "Include stock in sublocations"
msgstr ""
-#: templates/js/translated/table_filters.js:149
+#: templates/js/translated/table_filters.js:162
msgid "Show stock items which are depleted"
msgstr ""
-#: templates/js/translated/table_filters.js:154
+#: templates/js/translated/table_filters.js:167
msgid "Show items which are in stock"
msgstr ""
-#: templates/js/translated/table_filters.js:158
+#: templates/js/translated/table_filters.js:171
msgid "In Production"
msgstr ""
-#: templates/js/translated/table_filters.js:159
+#: templates/js/translated/table_filters.js:172
msgid "Show items which are in production"
msgstr ""
-#: templates/js/translated/table_filters.js:163
+#: templates/js/translated/table_filters.js:176
msgid "Include Variants"
msgstr ""
-#: templates/js/translated/table_filters.js:164
+#: templates/js/translated/table_filters.js:177
msgid "Include stock items for variant parts"
msgstr ""
-#: templates/js/translated/table_filters.js:168
+#: templates/js/translated/table_filters.js:181
msgid "Installed"
msgstr ""
-#: templates/js/translated/table_filters.js:169
+#: templates/js/translated/table_filters.js:182
msgid "Show stock items which are installed in another item"
msgstr ""
-#: templates/js/translated/table_filters.js:174
+#: templates/js/translated/table_filters.js:187
msgid "Show items which have been assigned to a customer"
msgstr ""
-#: templates/js/translated/table_filters.js:194
-#: templates/js/translated/table_filters.js:195
+#: templates/js/translated/table_filters.js:207
+#: templates/js/translated/table_filters.js:208
msgid "Stock status"
msgstr ""
-#: templates/js/translated/table_filters.js:203
+#: templates/js/translated/table_filters.js:216
msgid "Has purchase price"
msgstr ""
-#: templates/js/translated/table_filters.js:204
+#: templates/js/translated/table_filters.js:217
msgid "Show stock items which have a purchase price set"
msgstr ""
-#: templates/js/translated/table_filters.js:213
+#: templates/js/translated/table_filters.js:226
msgid "Show stock items which have expired"
msgstr ""
-#: templates/js/translated/table_filters.js:219
+#: templates/js/translated/table_filters.js:232
msgid "Show stock which is close to expiring"
msgstr ""
-#: templates/js/translated/table_filters.js:250
+#: templates/js/translated/table_filters.js:263
msgid "Build status"
msgstr ""
-#: templates/js/translated/table_filters.js:269
-#: templates/js/translated/table_filters.js:286
+#: templates/js/translated/table_filters.js:282
+#: templates/js/translated/table_filters.js:299
msgid "Order status"
msgstr ""
-#: templates/js/translated/table_filters.js:274
-#: templates/js/translated/table_filters.js:291
+#: templates/js/translated/table_filters.js:287
+#: templates/js/translated/table_filters.js:304
msgid "Outstanding"
msgstr ""
-#: templates/js/translated/table_filters.js:315
+#: templates/js/translated/table_filters.js:328
msgid "Include parts in subcategories"
msgstr ""
-#: templates/js/translated/table_filters.js:319
+#: templates/js/translated/table_filters.js:332
msgid "Has IPN"
msgstr ""
-#: templates/js/translated/table_filters.js:320
+#: templates/js/translated/table_filters.js:333
msgid "Part has internal part number"
msgstr ""
-#: templates/js/translated/table_filters.js:325
+#: templates/js/translated/table_filters.js:338
msgid "Show active parts"
msgstr ""
-#: templates/js/translated/table_filters.js:333
+#: templates/js/translated/table_filters.js:346
msgid "Stock available"
msgstr ""
-#: templates/js/translated/table_filters.js:349
+#: templates/js/translated/table_filters.js:362
msgid "Starred"
msgstr ""
-#: templates/js/translated/table_filters.js:361
+#: templates/js/translated/table_filters.js:374
msgid "Purchasable"
msgstr ""
-#: templates/js/translated/tables.js:342
+#: templates/js/translated/tables.js:357
msgid "Loading data"
msgstr ""
-#: templates/js/translated/tables.js:345
+#: templates/js/translated/tables.js:360
msgid "rows per page"
msgstr ""
-#: templates/js/translated/tables.js:348
+#: templates/js/translated/tables.js:363
msgid "Showing"
msgstr ""
-#: templates/js/translated/tables.js:348
+#: templates/js/translated/tables.js:363
msgid "to"
msgstr ""
-#: templates/js/translated/tables.js:348
+#: templates/js/translated/tables.js:363
msgid "of"
msgstr ""
-#: templates/js/translated/tables.js:348
+#: templates/js/translated/tables.js:363
msgid "rows"
msgstr ""
-#: templates/js/translated/tables.js:354
+#: templates/js/translated/tables.js:369
msgid "No matching results"
msgstr ""
-#: templates/js/translated/tables.js:357
+#: templates/js/translated/tables.js:372
msgid "Hide/Show pagination"
msgstr ""
-#: templates/js/translated/tables.js:360
+#: templates/js/translated/tables.js:375
msgid "Refresh"
msgstr ""
-#: templates/js/translated/tables.js:363
+#: templates/js/translated/tables.js:378
msgid "Toggle"
msgstr ""
-#: templates/js/translated/tables.js:366
+#: templates/js/translated/tables.js:381
msgid "Columns"
msgstr ""
-#: templates/js/translated/tables.js:369
+#: templates/js/translated/tables.js:384
msgid "All"
msgstr ""
-#: templates/navbar.html:13
+#: templates/navbar.html:19
msgid "Toggle navigation"
msgstr ""
-#: templates/navbar.html:33
+#: templates/navbar.html:39
msgid "Buy"
msgstr ""
-#: templates/navbar.html:43
+#: templates/navbar.html:51
msgid "Sell"
msgstr ""
-#: templates/navbar.html:55
-msgid "Scan Barcode"
-msgstr ""
-
-#: templates/navbar.html:77 users/models.py:39
+#: templates/navbar.html:87 users/models.py:39
msgid "Admin"
msgstr ""
-#: templates/navbar.html:79
+#: templates/navbar.html:89
msgid "Logout"
msgstr ""
-#: templates/navbar.html:81 templates/registration/login.html:89
+#: templates/navbar.html:91 templates/registration/login.html:89
msgid "Login"
msgstr ""
-#: templates/navbar.html:104
+#: templates/navbar.html:114
msgid "About InvenTree"
msgstr ""
diff --git a/InvenTree/locale/es/LC_MESSAGES/django.po b/InvenTree/locale/es/LC_MESSAGES/django.po
index bfad560e33..b66b45bb37 100644
--- a/InvenTree/locale/es/LC_MESSAGES/django.po
+++ b/InvenTree/locale/es/LC_MESSAGES/django.po
@@ -2,8 +2,8 @@ msgid ""
msgstr ""
"Project-Id-Version: inventree\n"
"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2021-08-07 15:14+0000\n"
-"PO-Revision-Date: 2021-08-07 15:30\n"
+"POT-Creation-Date: 2021-09-12 13:15+0000\n"
+"PO-Revision-Date: 2021-09-12 13:44\n"
"Last-Translator: \n"
"Language-Team: Spanish\n"
"Language: es_ES\n"
@@ -36,7 +36,7 @@ msgstr "Ingrese la fecha"
#: InvenTree/forms.py:111 build/forms.py:102 build/forms.py:123
#: build/forms.py:145 build/forms.py:169 build/forms.py:185 build/forms.py:227
#: order/forms.py:30 order/forms.py:41 order/forms.py:52 order/forms.py:63
-#: order/forms.py:74 part/forms.py:108 templates/js/translated/forms.js:545
+#: order/forms.py:74 part/forms.py:108 templates/js/translated/forms.js:564
msgid "Confirm"
msgstr "Confirmar"
@@ -71,16 +71,16 @@ msgstr "Seleccionar Categoría"
#: InvenTree/helpers.py:401
#, python-brace-format
msgid "Duplicate serial: {n}"
-msgstr ""
+msgstr "Número de serie duplicado: {n}"
-#: InvenTree/helpers.py:408 order/models.py:315 order/models.py:425
+#: InvenTree/helpers.py:408 order/models.py:315 order/models.py:430
#: stock/views.py:1363
msgid "Invalid quantity provided"
msgstr "Cantidad proporcionada no válida"
#: InvenTree/helpers.py:411
msgid "Empty serial number string"
-msgstr ""
+msgstr "No se ha proporcionado un número de serie"
#: InvenTree/helpers.py:433 InvenTree/helpers.py:436 InvenTree/helpers.py:439
#: InvenTree/helpers.py:464
@@ -91,7 +91,7 @@ msgstr "Grupo no válido: un {g}"
#: InvenTree/helpers.py:469
#, python-brace-format
msgid "Duplicate serial: {g}"
-msgstr ""
+msgstr "Número de serie duplicado: {g}"
#: InvenTree/helpers.py:477
msgid "No serial numbers found"
@@ -100,168 +100,197 @@ msgstr "Numeros de serie no encontrados"
#: InvenTree/helpers.py:481
#, python-brace-format
msgid "Number of unique serial number ({s}) must match quantity ({q})"
-msgstr ""
+msgstr "El número de números de serie únicos ({s}) debe coincidir con la cantidad ({q})"
-#: InvenTree/models.py:61 stock/models.py:1815
+#: InvenTree/models.py:66 stock/models.py:1826
msgid "Attachment"
-msgstr ""
+msgstr "Archivo adjunto"
-#: InvenTree/models.py:62
+#: InvenTree/models.py:67
msgid "Select file to attach"
-msgstr ""
+msgstr "Seleccionar archivo para adjuntar"
-#: InvenTree/models.py:64 templates/js/translated/attachment.js:52
+#: InvenTree/models.py:69 templates/js/translated/attachment.js:87
msgid "Comment"
msgstr "Comentario"
-#: InvenTree/models.py:64
+#: InvenTree/models.py:69
msgid "File comment"
-msgstr ""
+msgstr "Comentario del archivo"
-#: InvenTree/models.py:70 InvenTree/models.py:71 common/models.py:969
-#: common/models.py:970 part/models.py:2035
+#: InvenTree/models.py:75 InvenTree/models.py:76 common/models.py:993
+#: common/models.py:994 part/models.py:2051
#: report/templates/report/inventree_test_report_base.html:91
-#: templates/js/translated/stock.js:1549
+#: templates/js/translated/stock.js:1690
msgid "User"
msgstr "Usuario"
-#: InvenTree/models.py:74
+#: InvenTree/models.py:79
msgid "upload date"
-msgstr ""
+msgstr "fecha de subida"
-#: InvenTree/models.py:113
+#: InvenTree/models.py:99
+msgid "Filename must not be empty"
+msgstr "El nombre del archivo no debe estar vacío"
+
+#: InvenTree/models.py:122
+msgid "Invalid attachment directory"
+msgstr "Directorio de archivos adjuntos no válido"
+
+#: InvenTree/models.py:132
+#, python-brace-format
+msgid "Filename contains illegal character '{c}'"
+msgstr "El nombre del archivo contiene el carácter ilegal '{c}'"
+
+#: InvenTree/models.py:135
+msgid "Filename missing extension"
+msgstr "Falta el nombre de extensión del archivo"
+
+#: InvenTree/models.py:142
+msgid "Attachment with this filename already exists"
+msgstr "Ya existe un archivo adjunto con este nombre"
+
+#: InvenTree/models.py:149
+msgid "Error renaming file"
+msgstr "Error al cambiar el nombre del archivo"
+
+#: InvenTree/models.py:184
msgid "Invalid choice"
-msgstr ""
+msgstr "Selección no válida"
-#: InvenTree/models.py:129 InvenTree/models.py:130 company/models.py:412
-#: label/models.py:112 part/models.py:656 part/models.py:2196
-#: part/templates/part/part_base.html:233 report/models.py:181
+#: InvenTree/models.py:200 InvenTree/models.py:201 company/models.py:414
+#: label/models.py:112 part/models.py:658 part/models.py:2212
+#: part/templates/part/part_base.html:241 report/models.py:181
#: templates/InvenTree/search.html:137 templates/InvenTree/search.html:289
-#: templates/js/translated/company.js:583 templates/js/translated/part.js:338
-#: templates/js/translated/part.js:471 templates/js/translated/part.js:963
-#: templates/js/translated/stock.js:1342
+#: templates/js/translated/company.js:636 templates/js/translated/part.js:466
+#: templates/js/translated/part.js:603 templates/js/translated/part.js:1130
+#: templates/js/translated/stock.js:1483
msgid "Name"
msgstr "Nombre"
-#: InvenTree/models.py:136 build/models.py:187
-#: build/templates/build/detail.html:24 company/models.py:351
-#: company/models.py:519 company/templates/company/manufacturer_part.html:76
+#: InvenTree/models.py:207 build/models.py:187
+#: build/templates/build/detail.html:24 company/models.py:353
+#: company/models.py:569 company/templates/company/manufacturer_part.html:76
#: company/templates/company/supplier_part.html:75 label/models.py:119
-#: order/models.py:158 order/templates/order/purchase_order_detail.html:312
-#: part/models.py:679 part/templates/part/part_base.html:238
+#: order/models.py:158 part/models.py:681
+#: part/templates/part/part_base.html:246
#: part/templates/part/set_category.html:14 report/models.py:194
#: report/models.py:551 report/models.py:590
#: report/templates/report/inventree_build_order_base.html:118
#: templates/InvenTree/search.html:144 templates/InvenTree/search.html:224
#: templates/InvenTree/search.html:296
#: templates/InvenTree/settings/header.html:9
-#: templates/js/translated/bom.js:210 templates/js/translated/build.js:868
-#: templates/js/translated/build.js:1162 templates/js/translated/company.js:299
-#: templates/js/translated/company.js:497
-#: templates/js/translated/company.js:779 templates/js/translated/order.js:267
-#: templates/js/translated/order.js:369 templates/js/translated/part.js:397
-#: templates/js/translated/part.js:581 templates/js/translated/part.js:758
-#: templates/js/translated/part.js:975 templates/js/translated/part.js:1043
-#: templates/js/translated/stock.js:926 templates/js/translated/stock.js:1354
-#: templates/js/translated/stock.js:1399
+#: templates/js/translated/bom.js:230 templates/js/translated/build.js:891
+#: templates/js/translated/build.js:1179 templates/js/translated/company.js:344
+#: templates/js/translated/company.js:546
+#: templates/js/translated/company.js:834 templates/js/translated/order.js:341
+#: templates/js/translated/order.js:486 templates/js/translated/order.js:710
+#: templates/js/translated/part.js:525 templates/js/translated/part.js:713
+#: templates/js/translated/part.js:902 templates/js/translated/part.js:1142
+#: templates/js/translated/part.js:1210 templates/js/translated/stock.js:840
+#: templates/js/translated/stock.js:1495 templates/js/translated/stock.js:1540
msgid "Description"
msgstr "Descripción"
-#: InvenTree/models.py:137
+#: InvenTree/models.py:208
msgid "Description (optional)"
-msgstr ""
+msgstr "Descripción (opcional)"
-#: InvenTree/models.py:145
+#: InvenTree/models.py:216
msgid "parent"
-msgstr ""
+msgstr "padre"
-#: InvenTree/serializers.py:52 part/models.py:2438
+#: InvenTree/serializers.py:55 part/models.py:2454
msgid "Must be a valid number"
-msgstr ""
+msgstr "Debe ser un numero valido"
-#: InvenTree/settings.py:518
+#: InvenTree/serializers.py:244
+msgid "Filename"
+msgstr "Nombre de Archivo"
+
+#: InvenTree/settings.py:523
msgid "German"
msgstr "Alemán"
-#: InvenTree/settings.py:519
+#: InvenTree/settings.py:524
msgid "Greek"
-msgstr ""
+msgstr "Griego"
-#: InvenTree/settings.py:520
+#: InvenTree/settings.py:525
msgid "English"
msgstr "Inglés"
-#: InvenTree/settings.py:521
+#: InvenTree/settings.py:526
msgid "Spanish"
-msgstr ""
+msgstr "Español"
-#: InvenTree/settings.py:522
+#: InvenTree/settings.py:527
msgid "French"
msgstr "Francés"
-#: InvenTree/settings.py:523
-msgid "Hebrew"
-msgstr ""
-
-#: InvenTree/settings.py:524
-msgid "Italian"
-msgstr ""
-
-#: InvenTree/settings.py:525
-msgid "Japanese"
-msgstr ""
-
-#: InvenTree/settings.py:526
-msgid "Korean"
-msgstr ""
-
-#: InvenTree/settings.py:527
-msgid "Dutch"
-msgstr ""
-
#: InvenTree/settings.py:528
-msgid "Norwegian"
-msgstr ""
+msgid "Hebrew"
+msgstr "Hebreo"
#: InvenTree/settings.py:529
+msgid "Italian"
+msgstr "Italiano"
+
+#: InvenTree/settings.py:530
+msgid "Japanese"
+msgstr "Japonés"
+
+#: InvenTree/settings.py:531
+msgid "Korean"
+msgstr "Coreano"
+
+#: InvenTree/settings.py:532
+msgid "Dutch"
+msgstr "Holandés"
+
+#: InvenTree/settings.py:533
+msgid "Norwegian"
+msgstr "Noruego"
+
+#: InvenTree/settings.py:534
msgid "Polish"
msgstr "Polaco"
-#: InvenTree/settings.py:530
+#: InvenTree/settings.py:535
msgid "Russian"
-msgstr ""
+msgstr "Ruso"
-#: InvenTree/settings.py:531
+#: InvenTree/settings.py:536
msgid "Swedish"
-msgstr ""
+msgstr "Sueco"
-#: InvenTree/settings.py:532
+#: InvenTree/settings.py:537
msgid "Thai"
-msgstr ""
+msgstr "Tailandés"
-#: InvenTree/settings.py:533
+#: InvenTree/settings.py:538
msgid "Turkish"
msgstr "Turco"
-#: InvenTree/settings.py:534
+#: InvenTree/settings.py:539
msgid "Vietnamese"
-msgstr ""
+msgstr "Vietnamita"
-#: InvenTree/settings.py:535
+#: InvenTree/settings.py:540
msgid "Chinese"
-msgstr ""
+msgstr "Chino"
#: InvenTree/status.py:94
msgid "Background worker check failed"
-msgstr ""
+msgstr "Falló la comprobación en segundo plano del worker"
#: InvenTree/status.py:98
msgid "Email backend not configured"
-msgstr ""
+msgstr "No se ha configurado el backend de correo"
#: InvenTree/status.py:101
msgid "InvenTree system health checks failed"
-msgstr ""
+msgstr "Las comprobaciones de estado del sistema InvenTree fallaron"
#: InvenTree/status_codes.py:104 InvenTree/status_codes.py:145
#: InvenTree/status_codes.py:314
@@ -289,7 +318,7 @@ msgstr "Perdida"
#: InvenTree/status_codes.py:109 InvenTree/status_codes.py:149
#: InvenTree/status_codes.py:192
msgid "Returned"
-msgstr ""
+msgstr "Devuelto"
#: InvenTree/status_codes.py:146
#: order/templates/order/sales_order_base.html:126
@@ -318,7 +347,7 @@ msgstr "Rechazado"
#: InvenTree/status_codes.py:272
msgid "Legacy stock tracking entry"
-msgstr ""
+msgstr "Entrada antigua de rastreo de stock"
#: InvenTree/status_codes.py:274
msgid "Stock item created"
@@ -350,39 +379,39 @@ msgstr "Ubicación cambiada"
#: InvenTree/status_codes.py:285
msgid "Installed into assembly"
-msgstr ""
+msgstr "Instalado en el ensamblaje"
#: InvenTree/status_codes.py:286
msgid "Removed from assembly"
-msgstr ""
+msgstr "Retirado del ensamblaje"
#: InvenTree/status_codes.py:288
msgid "Installed component item"
-msgstr ""
+msgstr "Artículo del componente instalado"
#: InvenTree/status_codes.py:289
msgid "Removed component item"
-msgstr ""
+msgstr "Elemento de componente eliminado"
#: InvenTree/status_codes.py:291
msgid "Split from parent item"
-msgstr ""
+msgstr "Separar del elemento principal"
#: InvenTree/status_codes.py:292
msgid "Split child item"
-msgstr ""
+msgstr "Dividir elemento secundario"
-#: InvenTree/status_codes.py:294 templates/js/translated/table_filters.js:173
+#: InvenTree/status_codes.py:294 templates/js/translated/table_filters.js:186
msgid "Sent to customer"
-msgstr ""
+msgstr "Enviar al cliente"
#: InvenTree/status_codes.py:295
msgid "Returned from customer"
-msgstr ""
+msgstr "Devolución del cliente"
#: InvenTree/status_codes.py:297
msgid "Build order output created"
-msgstr ""
+msgstr "Trabajo de ensamblaje creado"
#: InvenTree/status_codes.py:298
msgid "Build order output completed"
@@ -398,143 +427,142 @@ msgstr "Producción"
#: InvenTree/validators.py:22
msgid "Not a valid currency code"
-msgstr ""
+msgstr "No es un código de moneda válido"
#: InvenTree/validators.py:50
msgid "Invalid character in part name"
-msgstr ""
+msgstr "Carácter no válido en el nombre del artículo"
#: InvenTree/validators.py:63
#, python-brace-format
msgid "IPN must match regex pattern {pat}"
-msgstr ""
+msgstr "El IPN debe coincidir con la expresión regular {pat}"
#: InvenTree/validators.py:77 InvenTree/validators.py:91
#: InvenTree/validators.py:105
#, python-brace-format
msgid "Reference must match pattern {pattern}"
-msgstr ""
+msgstr "La referencia debe coincidir con la expresión regular {pattern}"
#: InvenTree/validators.py:113
#, python-brace-format
msgid "Illegal character in name ({x})"
-msgstr ""
+msgstr "Carácter ilegal en el nombre ({x})"
#: InvenTree/validators.py:132 InvenTree/validators.py:148
msgid "Overage value must not be negative"
-msgstr ""
+msgstr "El valor excedente no debe ser negativo"
#: InvenTree/validators.py:150
msgid "Overage must not exceed 100%"
-msgstr ""
+msgstr "El excedente no debe superar el 100%"
#: InvenTree/validators.py:157
msgid "Overage must be an integer value or a percentage"
-msgstr ""
+msgstr "El excedente debe ser un valor entero o un porcentaje"
-#: InvenTree/views.py:612
+#: InvenTree/views.py:610
msgid "Delete Item"
msgstr "Eliminar elemento"
-#: InvenTree/views.py:661
+#: InvenTree/views.py:659
msgid "Check box to confirm item deletion"
-msgstr ""
+msgstr "Marque la casilla para confirmar la eliminación del artículo"
-#: InvenTree/views.py:676 templates/InvenTree/settings/user.html:14
+#: InvenTree/views.py:674 templates/InvenTree/settings/user.html:14
msgid "Edit User Information"
-msgstr ""
+msgstr "Editar datos del usuario"
-#: InvenTree/views.py:687 templates/InvenTree/settings/user.html:18
+#: InvenTree/views.py:685 templates/InvenTree/settings/user.html:18
msgid "Set Password"
msgstr "Configurar Contraseña"
-#: InvenTree/views.py:706
+#: InvenTree/views.py:704
msgid "Password fields must match"
-msgstr ""
+msgstr "Los campos de contraseña deben coincidir"
-#: InvenTree/views.py:907 templates/navbar.html:95
+#: InvenTree/views.py:910 templates/navbar.html:105
msgid "System Information"
msgstr "Información del sistema"
#: barcodes/api.py:53 barcodes/api.py:150
msgid "Must provide barcode_data parameter"
-msgstr ""
+msgstr "Debe proporcionar el parámetro barcode_data"
#: barcodes/api.py:126
msgid "No match found for barcode data"
-msgstr ""
+msgstr "No se encontró ninguna coincidencia para los datos del código de barras"
#: barcodes/api.py:128
msgid "Match found for barcode data"
-msgstr ""
+msgstr "Coincidencia encontrada para datos de códigos de barras"
#: barcodes/api.py:153
msgid "Must provide stockitem parameter"
-msgstr ""
+msgstr "Debe proporcionar el parámetro stockitem"
#: barcodes/api.py:160
msgid "No matching stock item found"
-msgstr ""
+msgstr "No se ha encontrado ningún artículo de stock que coincida"
#: barcodes/api.py:190
msgid "Barcode already matches StockItem object"
-msgstr ""
+msgstr "El código de barras ya corresponde al objeto de inventario"
#: barcodes/api.py:194
msgid "Barcode already matches StockLocation object"
-msgstr ""
+msgstr "El código de barras ya corresponde a la ubicación de almacenamiento de existencias"
#: barcodes/api.py:198
msgid "Barcode already matches Part object"
-msgstr ""
+msgstr "El código de barras ya corresponde a la parte"
#: barcodes/api.py:204 barcodes/api.py:216
msgid "Barcode hash already matches StockItem object"
-msgstr ""
+msgstr "El código de barras ya está asignado a un objeto de inventario"
#: barcodes/api.py:222
msgid "Barcode associated with StockItem"
-msgstr ""
+msgstr "Código de barras asignado al objeto de inventario"
#: build/forms.py:37
msgid "Build Order reference"
-msgstr ""
+msgstr "Número de orden de construcción"
#: build/forms.py:38
msgid "Order target date"
-msgstr ""
+msgstr "Fecha objetivo de pedido"
#: build/forms.py:42 build/templates/build/build_base.html:146
#: build/templates/build/detail.html:124
#: order/templates/order/order_base.html:124
#: order/templates/order/sales_order_base.html:119
#: report/templates/report/inventree_build_order_base.html:126
-#: templates/js/translated/build.js:945 templates/js/translated/order.js:284
-#: templates/js/translated/order.js:387
+#: templates/js/translated/build.js:962 templates/js/translated/order.js:358
+#: templates/js/translated/order.js:728
msgid "Target Date"
-msgstr ""
+msgstr "Fecha objetivo"
#: build/forms.py:43 build/models.py:277
msgid "Target date for build completion. Build will be overdue after this date."
-msgstr ""
+msgstr "Fecha límite para la finalización de la construcción. La construcción estará vencida después de esta fecha."
#: build/forms.py:48 build/forms.py:90 build/forms.py:266 build/models.py:1402
#: build/templates/build/allocation_card.html:23
#: build/templates/build/auto_allocate.html:17
#: build/templates/build/build_base.html:133
-#: build/templates/build/detail.html:34 common/models.py:1001
+#: build/templates/build/detail.html:34 common/models.py:1025
#: company/forms.py:42 company/templates/company/supplier_part.html:226
-#: order/forms.py:120 order/forms.py:142 order/forms.py:159 order/models.py:706
-#: order/models.py:952 order/templates/order/order_wizard/match_parts.html:30
+#: order/forms.py:120 order/forms.py:142 order/forms.py:159 order/models.py:712
+#: order/models.py:964 order/templates/order/order_wizard/match_parts.html:30
#: order/templates/order/order_wizard/select_parts.html:34
-#: order/templates/order/purchase_order_detail.html:348
-#: order/templates/order/sales_order_detail.html:200
-#: order/templates/order/sales_order_detail.html:207
-#: order/templates/order/sales_order_detail.html:292
-#: order/templates/order/sales_order_detail.html:364 part/forms.py:249
-#: part/forms.py:265 part/forms.py:281 part/models.py:2340
+#: order/templates/order/sales_order_detail.html:201
+#: order/templates/order/sales_order_detail.html:208
+#: order/templates/order/sales_order_detail.html:293
+#: order/templates/order/sales_order_detail.html:365 part/forms.py:249
+#: part/forms.py:265 part/forms.py:281 part/models.py:2356
#: part/templates/part/bom_upload/match_parts.html:31
-#: part/templates/part/detail.html:940 part/templates/part/detail.html:1026
+#: part/templates/part/detail.html:973 part/templates/part/detail.html:1059
#: part/templates/part/part_pricing.html:16
#: report/templates/report/inventree_build_order_base.html:114
#: report/templates/report/inventree_po_report.html:91
@@ -542,23 +570,24 @@ msgstr ""
#: report/templates/report/inventree_test_report_base.html:77
#: stock/forms.py:140 stock/templates/stock/item_base.html:269
#: stock/templates/stock/stock_adjust.html:18
-#: templates/js/translated/barcode.js:364 templates/js/translated/bom.js:225
-#: templates/js/translated/build.js:271 templates/js/translated/build.js:606
-#: templates/js/translated/build.js:1172
-#: templates/js/translated/model_renderers.js:56
-#: templates/js/translated/order.js:482 templates/js/translated/part.js:1148
-#: templates/js/translated/part.js:1270 templates/js/translated/part.js:1326
-#: templates/js/translated/stock.js:1534 templates/js/translated/stock.js:1732
+#: templates/js/translated/barcode.js:386 templates/js/translated/bom.js:245
+#: templates/js/translated/build.js:298 templates/js/translated/build.js:629
+#: templates/js/translated/build.js:1189
+#: templates/js/translated/model_renderers.js:59
+#: templates/js/translated/order.js:522 templates/js/translated/order.js:824
+#: templates/js/translated/part.js:1317 templates/js/translated/part.js:1440
+#: templates/js/translated/part.js:1518 templates/js/translated/stock.js:1675
+#: templates/js/translated/stock.js:1850
msgid "Quantity"
msgstr "Cantidad"
#: build/forms.py:49
msgid "Number of items to build"
-msgstr ""
+msgstr "Número de elementos para construir"
#: build/forms.py:91
msgid "Enter quantity for build output"
-msgstr ""
+msgstr "Ingrese la cantidad para la producción de la construcción"
#: build/forms.py:95 order/forms.py:114 stock/forms.py:83
msgid "Serial Numbers"
@@ -566,69 +595,71 @@ msgstr "Números de serie"
#: build/forms.py:97
msgid "Enter serial numbers for build outputs"
-msgstr ""
+msgstr "Introduzca los números de serie de salidas de construcción"
#: build/forms.py:103
msgid "Confirm creation of build output"
-msgstr ""
+msgstr "Confirmar la creación de salida de construcción"
#: build/forms.py:124
msgid "Confirm deletion of build output"
-msgstr ""
+msgstr "Confirmar eliminación de salida de construcción"
#: build/forms.py:145
msgid "Confirm unallocation of stock"
-msgstr ""
+msgstr "Confirmar la desasignación de stock"
#: build/forms.py:169
msgid "Confirm stock allocation"
-msgstr ""
+msgstr "Confirmar asignación de stock"
#: build/forms.py:186
msgid "Mark build as complete"
-msgstr ""
+msgstr "Marcar como construcción completa"
#: build/forms.py:210 build/templates/build/auto_allocate.html:18
-#: stock/forms.py:280 stock/templates/stock/item_base.html:299
+#: order/serializers.py:216 order/serializers.py:275 stock/forms.py:280
+#: stock/templates/stock/item_base.html:299
#: stock/templates/stock/stock_adjust.html:17
-#: templates/InvenTree/search.html:260 templates/js/translated/barcode.js:363
-#: templates/js/translated/barcode.js:531 templates/js/translated/build.js:256
-#: templates/js/translated/build.js:620 templates/js/translated/order.js:467
-#: templates/js/translated/stock.js:134 templates/js/translated/stock.js:260
-#: templates/js/translated/stock.js:1012 templates/js/translated/stock.js:1426
+#: templates/InvenTree/search.html:260 templates/js/translated/barcode.js:385
+#: templates/js/translated/barcode.js:555 templates/js/translated/build.js:283
+#: templates/js/translated/build.js:643 templates/js/translated/order.js:809
+#: templates/js/translated/part.js:174 templates/js/translated/stock.js:203
+#: templates/js/translated/stock.js:329 templates/js/translated/stock.js:942
+#: templates/js/translated/stock.js:1567
msgid "Location"
msgstr "Unicación"
#: build/forms.py:211
msgid "Location of completed parts"
-msgstr ""
+msgstr "Ubicación de las partes completadas"
#: build/forms.py:215 build/templates/build/build_base.html:138
-#: build/templates/build/detail.html:62 order/models.py:549
-#: order/templates/order/receive_parts.html:24
+#: build/templates/build/detail.html:62 order/models.py:555
+#: order/serializers.py:230 order/templates/order/receive_parts.html:24
#: stock/templates/stock/item_base.html:422 templates/InvenTree/search.html:252
-#: templates/js/translated/barcode.js:119 templates/js/translated/build.js:902
-#: templates/js/translated/order.js:271 templates/js/translated/order.js:374
-#: templates/js/translated/stock.js:999 templates/js/translated/stock.js:1503
-#: templates/js/translated/stock.js:1748
+#: templates/js/translated/barcode.js:141 templates/js/translated/build.js:925
+#: templates/js/translated/order.js:345 templates/js/translated/order.js:715
+#: templates/js/translated/stock.js:917 templates/js/translated/stock.js:1644
+#: templates/js/translated/stock.js:1866
msgid "Status"
msgstr "Estado"
#: build/forms.py:216
msgid "Build output stock status"
-msgstr ""
+msgstr "Generar estado de stock de salida"
#: build/forms.py:223
msgid "Confirm incomplete"
-msgstr ""
+msgstr "Confirmar incompleta"
#: build/forms.py:224
msgid "Confirm completion with incomplete stock allocation"
-msgstr ""
+msgstr "Confirmar la finalización con una asignación de stock incompleta"
#: build/forms.py:227
msgid "Confirm build completion"
-msgstr ""
+msgstr "Confirmar la terminación de construcción"
#: build/forms.py:252
msgid "Confirm cancel"
@@ -636,47 +667,46 @@ msgstr "Confirmar cancelación"
#: build/forms.py:252 build/views.py:65
msgid "Confirm build cancellation"
-msgstr ""
+msgstr "Confirmar la cancelación de construcción"
#: build/forms.py:266
msgid "Select quantity of stock to allocate"
-msgstr ""
+msgstr "Seleccione la cantidad de stock para asignar"
#: build/models.py:113
msgid "Invalid choice for parent build"
-msgstr ""
+msgstr "Opción no válida para la construcción padre"
#: build/models.py:117 build/templates/build/build_base.html:9
#: build/templates/build/build_base.html:73
#: report/templates/report/inventree_build_order_base.html:106
-#: templates/js/translated/build.js:233
+#: templates/js/translated/build.js:260
msgid "Build Order"
-msgstr ""
+msgstr "Construir órden"
#: build/models.py:118 build/templates/build/index.html:8
#: build/templates/build/index.html:15
#: order/templates/order/sales_order_detail.html:34
#: order/templates/order/so_navbar.html:19
-#: order/templates/order/so_navbar.html:22 part/templates/part/navbar.html:42
-#: part/templates/part/navbar.html:45 templates/InvenTree/index.html:229
+#: order/templates/order/so_navbar.html:22 part/templates/part/navbar.html:50
+#: part/templates/part/navbar.html:53 templates/InvenTree/index.html:229
#: templates/InvenTree/search.html:185
#: templates/InvenTree/settings/navbar.html:101
#: templates/InvenTree/settings/navbar.html:103 users/models.py:44
msgid "Build Orders"
-msgstr ""
+msgstr "Construir órdenes"
#: build/models.py:178
msgid "Build Order Reference"
msgstr ""
-#: build/models.py:179 order/models.py:246 order/models.py:533
-#: order/models.py:713 order/templates/order/purchase_order_detail.html:343
-#: order/templates/order/sales_order_detail.html:359 part/models.py:2349
-#: part/templates/part/bom_upload/match_parts.html:30
+#: build/models.py:179 order/models.py:246 order/models.py:539
+#: order/models.py:719 order/templates/order/sales_order_detail.html:360
+#: part/models.py:2365 part/templates/part/bom_upload/match_parts.html:30
#: report/templates/report/inventree_po_report.html:92
#: report/templates/report/inventree_so_report.html:92
-#: templates/js/translated/bom.js:217 templates/js/translated/build.js:695
-#: templates/js/translated/build.js:1166
+#: templates/js/translated/bom.js:237 templates/js/translated/build.js:718
+#: templates/js/translated/build.js:1183 templates/js/translated/order.js:517
msgid "Reference"
msgstr "Referencia"
@@ -695,15 +725,14 @@ msgstr ""
#: build/models.py:205 build/templates/build/auto_allocate.html:16
#: build/templates/build/build_base.html:128
-#: build/templates/build/detail.html:29 company/models.py:654
-#: order/models.py:766 order/models.py:825
+#: build/templates/build/detail.html:29 company/models.py:704
+#: order/models.py:772 order/models.py:837
#: order/templates/order/order_wizard/select_parts.html:32
-#: order/templates/order/purchase_order_detail.html:297
#: order/templates/order/receive_parts.html:19
-#: order/templates/order/sales_order_detail.html:344 part/models.py:295
-#: part/models.py:1980 part/models.py:1996 part/models.py:2015
-#: part/models.py:2033 part/models.py:2112 part/models.py:2234
-#: part/models.py:2324 part/templates/part/detail.html:199
+#: order/templates/order/sales_order_detail.html:345 part/models.py:297
+#: part/models.py:1996 part/models.py:2012 part/models.py:2031
+#: part/models.py:2049 part/models.py:2128 part/models.py:2250
+#: part/models.py:2340 part/templates/part/detail.html:199
#: part/templates/part/part_app_base.html:8
#: part/templates/part/part_pricing.html:12
#: part/templates/part/set_category.html:13
@@ -711,12 +740,13 @@ msgstr ""
#: report/templates/report/inventree_po_report.html:90
#: report/templates/report/inventree_so_report.html:90
#: templates/InvenTree/search.html:112 templates/InvenTree/search.html:210
-#: templates/js/translated/barcode.js:362 templates/js/translated/bom.js:183
-#: templates/js/translated/build.js:586 templates/js/translated/build.js:873
-#: templates/js/translated/build.js:1139 templates/js/translated/company.js:438
-#: templates/js/translated/company.js:688 templates/js/translated/part.js:562
-#: templates/js/translated/part.js:725 templates/js/translated/stock.js:132
-#: templates/js/translated/stock.js:895 templates/js/translated/stock.js:1720
+#: templates/js/translated/barcode.js:384 templates/js/translated/bom.js:203
+#: templates/js/translated/build.js:609 templates/js/translated/build.js:896
+#: templates/js/translated/build.js:1156 templates/js/translated/company.js:487
+#: templates/js/translated/company.js:743 templates/js/translated/order.js:471
+#: templates/js/translated/part.js:694 templates/js/translated/part.js:864
+#: templates/js/translated/stock.js:201 templates/js/translated/stock.js:797
+#: templates/js/translated/stock.js:1838
msgid "Part"
msgstr "Parte"
@@ -750,11 +780,11 @@ msgstr ""
#: build/models.py:244
msgid "Build Quantity"
-msgstr ""
+msgstr "Cantidad a crear"
#: build/models.py:247
msgid "Number of stock items to build"
-msgstr ""
+msgstr "Número de objetos existentes a construir"
#: build/models.py:251
msgid "Completed items"
@@ -762,111 +792,110 @@ msgstr "Elementos completados"
#: build/models.py:253
msgid "Number of stock items which have been completed"
-msgstr ""
+msgstr "Número de productos en stock que se han completado"
-#: build/models.py:257 part/templates/part/part_base.html:191
+#: build/models.py:257 part/templates/part/part_base.html:198
msgid "Build Status"
-msgstr ""
+msgstr "Estado de la construcción"
#: build/models.py:261
msgid "Build status code"
-msgstr ""
+msgstr "Código de estado de construcción"
-#: build/models.py:265 stock/models.py:507
+#: build/models.py:265 stock/models.py:513
msgid "Batch Code"
-msgstr ""
+msgstr "Numero de lote"
#: build/models.py:269
msgid "Batch code for this build output"
-msgstr ""
+msgstr "Número de lote de este producto final"
-#: build/models.py:272 order/models.py:162 part/models.py:851
-#: part/templates/part/part_base.html:264 templates/js/translated/order.js:382
+#: build/models.py:272 order/models.py:162 part/models.py:853
+#: part/templates/part/part_base.html:272 templates/js/translated/order.js:723
msgid "Creation Date"
-msgstr ""
+msgstr "Fecha de Creación"
-#: build/models.py:276 order/models.py:555
+#: build/models.py:276 order/models.py:561
msgid "Target completion date"
-msgstr ""
+msgstr "Fecha límite de finalización"
-#: build/models.py:280 order/models.py:288 templates/js/translated/build.js:950
+#: build/models.py:280 order/models.py:288 templates/js/translated/build.js:967
msgid "Completion Date"
-msgstr ""
+msgstr "Fecha de finalización"
#: build/models.py:286
msgid "completed by"
-msgstr ""
+msgstr "terminado por"
-#: build/models.py:294 templates/js/translated/build.js:915
+#: build/models.py:294 templates/js/translated/build.js:938
msgid "Issued by"
-msgstr ""
+msgstr "Emitido por"
#: build/models.py:295
msgid "User who issued this build order"
-msgstr ""
+msgstr "El usuario que emitió esta orden"
#: build/models.py:303 build/templates/build/build_base.html:184
#: build/templates/build/detail.html:108 order/models.py:176
#: order/templates/order/order_base.html:138
-#: order/templates/order/sales_order_base.html:140 part/models.py:855
+#: order/templates/order/sales_order_base.html:140 part/models.py:857
#: report/templates/report/inventree_build_order_base.html:159
-#: templates/js/translated/build.js:930
+#: templates/js/translated/build.js:950
msgid "Responsible"
msgstr "Responsable"
#: build/models.py:304
msgid "User responsible for this build order"
-msgstr ""
+msgstr "Usuario responsable de esta orden"
#: build/models.py:309 build/templates/build/detail.html:94
#: company/templates/company/manufacturer_part.html:83
#: company/templates/company/supplier_part.html:82
-#: part/templates/part/part_base.html:258 stock/models.py:501
+#: part/templates/part/part_base.html:266 stock/models.py:507
#: stock/templates/stock/item_base.html:359
msgid "External Link"
-msgstr ""
+msgstr "Link externo"
-#: build/models.py:310 part/models.py:713 stock/models.py:503
+#: build/models.py:310 part/models.py:715 stock/models.py:509
msgid "Link to external URL"
-msgstr ""
+msgstr "Enlace a URL externa"
#: build/models.py:314 build/templates/build/navbar.html:52
-#: company/models.py:139 company/models.py:526
-#: company/templates/company/navbar.html:63
-#: company/templates/company/navbar.html:66 order/models.py:180
-#: order/models.py:715 order/templates/order/po_navbar.html:38
+#: company/models.py:141 company/models.py:576
+#: company/templates/company/navbar.html:69
+#: company/templates/company/navbar.html:72 order/models.py:180
+#: order/models.py:721 order/templates/order/po_navbar.html:38
#: order/templates/order/po_navbar.html:41
-#: order/templates/order/purchase_order_detail.html:419
-#: order/templates/order/sales_order_detail.html:439
+#: order/templates/order/sales_order_detail.html:440
#: order/templates/order/so_navbar.html:33
-#: order/templates/order/so_navbar.html:36 part/models.py:840
-#: part/templates/part/detail.html:105 part/templates/part/navbar.html:108
-#: part/templates/part/navbar.html:111
+#: order/templates/order/so_navbar.html:36 part/models.py:842
+#: part/templates/part/detail.html:105 part/templates/part/navbar.html:120
+#: part/templates/part/navbar.html:123
#: report/templates/report/inventree_build_order_base.html:173
-#: stock/forms.py:138 stock/forms.py:250 stock/forms.py:282 stock/models.py:573
-#: stock/models.py:1715 stock/models.py:1821
-#: stock/templates/stock/navbar.html:57 templates/js/translated/barcode.js:37
-#: templates/js/translated/bom.js:369 templates/js/translated/company.js:784
-#: templates/js/translated/stock.js:268 templates/js/translated/stock.js:509
-#: templates/js/translated/stock.js:1090
+#: stock/forms.py:138 stock/forms.py:250 stock/forms.py:282 stock/models.py:579
+#: stock/models.py:1726 stock/models.py:1832
+#: stock/templates/stock/navbar.html:57 templates/js/translated/barcode.js:59
+#: templates/js/translated/bom.js:385 templates/js/translated/company.js:839
+#: templates/js/translated/order.js:604 templates/js/translated/stock.js:338
+#: templates/js/translated/stock.js:580 templates/js/translated/stock.js:1061
msgid "Notes"
msgstr "Notas"
#: build/models.py:315
msgid "Extra build notes"
-msgstr ""
+msgstr "Notas adicionales de construcción"
#: build/models.py:792
msgid "No build output specified"
-msgstr ""
+msgstr "No se ha especificado salida de construcción"
#: build/models.py:795
msgid "Build output is already completed"
-msgstr ""
+msgstr "La construcción de la salida ya está completa"
#: build/models.py:798
msgid "Build output does not match Build Order"
-msgstr ""
+msgstr "La salida de la construcción no coincide con el orden de construcción"
#: build/models.py:1208
msgid "BuildItem must be unique for build, stock_item and install_into"
@@ -881,11 +910,11 @@ msgstr ""
msgid "Allocated quantity ({n}) must not exceed available quantity ({q})"
msgstr ""
-#: build/models.py:1244 order/models.py:926
+#: build/models.py:1244 order/models.py:938
msgid "StockItem is over-allocated"
msgstr ""
-#: build/models.py:1248 order/models.py:929
+#: build/models.py:1248 order/models.py:941
msgid "Allocation quantity must be greater than zero"
msgstr ""
@@ -899,8 +928,8 @@ msgid "Selected stock item not found in BOM for part '{p}'"
msgstr ""
#: build/models.py:1372 stock/templates/stock/item_base.html:331
-#: templates/InvenTree/search.html:183 templates/js/translated/build.js:846
-#: templates/navbar.html:29
+#: templates/InvenTree/search.html:183 templates/js/translated/build.js:869
+#: templates/navbar.html:35
msgid "Build"
msgstr ""
@@ -912,9 +941,9 @@ msgstr ""
#: stock/templates/stock/item_base.html:31
#: stock/templates/stock/item_base.html:353
#: stock/templates/stock/stock_adjust.html:16
-#: templates/js/translated/build.js:244 templates/js/translated/build.js:249
-#: templates/js/translated/build.js:993 templates/js/translated/order.js:455
-#: templates/js/translated/order.js:460 templates/js/translated/stock.js:1485
+#: templates/js/translated/build.js:271 templates/js/translated/build.js:276
+#: templates/js/translated/build.js:1012 templates/js/translated/order.js:797
+#: templates/js/translated/order.js:802 templates/js/translated/stock.js:1626
msgid "Stock Item"
msgstr ""
@@ -936,12 +965,12 @@ msgstr ""
#: build/templates/build/allocation_card.html:21
#: build/templates/build/complete_output.html:46
-#: order/templates/order/sales_order_detail.html:205
-#: order/templates/order/sales_order_detail.html:290
+#: order/templates/order/sales_order_detail.html:206
+#: order/templates/order/sales_order_detail.html:291
#: report/templates/report/inventree_test_report_base.html:75
-#: stock/models.py:495 stock/templates/stock/item_base.html:251
-#: templates/js/translated/build.js:604
-#: templates/js/translated/model_renderers.js:54
+#: stock/models.py:501 stock/templates/stock/item_base.html:251
+#: templates/js/translated/build.js:627
+#: templates/js/translated/model_renderers.js:57
msgid "Serial Number"
msgstr "Número de serie"
@@ -993,7 +1022,7 @@ msgstr ""
#: company/templates/company/supplier_part.html:30
#: order/templates/order/order_base.html:26
#: order/templates/order/sales_order_base.html:37
-#: part/templates/part/category.html:27 part/templates/part/part_base.html:25
+#: part/templates/part/category.html:27 part/templates/part/part_base.html:30
#: stock/templates/stock/item_base.html:62
#: stock/templates/stock/location.html:31
msgid "Admin view"
@@ -1005,9 +1034,9 @@ msgstr ""
#: order/templates/order/order_base.html:86
#: order/templates/order/sales_order_base.html:43
#: order/templates/order/sales_order_base.html:88
-#: templates/js/translated/table_filters.js:259
-#: templates/js/translated/table_filters.js:278
-#: templates/js/translated/table_filters.js:295
+#: templates/js/translated/table_filters.js:272
+#: templates/js/translated/table_filters.js:291
+#: templates/js/translated/table_filters.js:308
msgid "Overdue"
msgstr ""
@@ -1057,14 +1086,14 @@ msgid "Progress"
msgstr "Progreso"
#: build/templates/build/build_base.html:170
-#: build/templates/build/detail.html:87 order/models.py:823
+#: build/templates/build/detail.html:87 order/models.py:835
#: order/templates/order/sales_order_base.html:9
#: order/templates/order/sales_order_base.html:35
#: order/templates/order/sales_order_ship.html:25
#: report/templates/report/inventree_build_order_base.html:136
#: report/templates/report/inventree_so_report.html:77
#: stock/templates/stock/item_base.html:293
-#: templates/js/translated/order.js:329
+#: templates/js/translated/order.js:670
msgid "Sales Order"
msgstr ""
@@ -1072,7 +1101,7 @@ msgstr ""
#: build/templates/build/detail.html:101
#: report/templates/report/inventree_build_order_base.html:153
msgid "Issued By"
-msgstr ""
+msgstr "Emitido por"
#: build/templates/build/build_base.html:214
msgid "Incomplete Outputs"
@@ -1148,7 +1177,7 @@ msgstr ""
#: build/templates/build/create_build_item.html:11
#, python-format
-msgid "The allocated stock will be installed into the following build output:
%(output)s"
+msgid "The allocated stock will be installed into the following build output:
%(output)s"
msgstr ""
#: build/templates/build/create_build_item.html:17
@@ -1172,9 +1201,9 @@ msgstr ""
msgid "Stock can be taken from any available location."
msgstr ""
-#: build/templates/build/detail.html:49 order/forms.py:88 order/models.py:782
-#: order/templates/order/purchase_order_detail.html:408
+#: build/templates/build/detail.html:49 order/forms.py:88 order/models.py:794
#: order/templates/order/receive_parts.html:25 stock/forms.py:134
+#: templates/js/translated/order.js:593
msgid "Destination"
msgstr "Destinación"
@@ -1184,16 +1213,16 @@ msgstr ""
#: build/templates/build/detail.html:73
#: stock/templates/stock/item_base.html:317
-#: templates/js/translated/stock.js:1007 templates/js/translated/stock.js:1755
-#: templates/js/translated/table_filters.js:116
-#: templates/js/translated/table_filters.js:198
+#: templates/js/translated/stock.js:931 templates/js/translated/stock.js:1873
+#: templates/js/translated/table_filters.js:129
+#: templates/js/translated/table_filters.js:211
msgid "Batch"
msgstr "Lote"
#: build/templates/build/detail.html:119
#: order/templates/order/order_base.html:111
#: order/templates/order/sales_order_base.html:113
-#: templates/js/translated/build.js:910
+#: templates/js/translated/build.js:933
msgid "Created"
msgstr ""
@@ -1201,7 +1230,7 @@ msgstr ""
msgid "No target date set"
msgstr ""
-#: build/templates/build/detail.html:135 templates/js/translated/build.js:888
+#: build/templates/build/detail.html:135 templates/js/translated/build.js:911
msgid "Completed"
msgstr "Completados"
@@ -1225,7 +1254,7 @@ msgstr ""
msgid "Auto Allocate"
msgstr ""
-#: build/templates/build/detail.html:175 templates/js/translated/build.js:778
+#: build/templates/build/detail.html:175 templates/js/translated/build.js:801
msgid "Unallocate stock"
msgstr ""
@@ -1238,8 +1267,8 @@ msgid "Order required parts"
msgstr ""
#: build/templates/build/detail.html:180
-#: company/templates/company/detail.html:33
-#: company/templates/company/detail.html:75 order/views.py:679
+#: company/templates/company/detail.html:32
+#: company/templates/company/detail.html:72 order/views.py:679
#: part/templates/part/category.html:140
msgid "Order Parts"
msgstr ""
@@ -1288,8 +1317,8 @@ msgstr ""
#: build/templates/build/navbar.html:45 order/templates/order/po_navbar.html:35
#: order/templates/order/sales_order_detail.html:43
#: order/templates/order/so_navbar.html:29 part/templates/part/detail.html:173
-#: part/templates/part/navbar.html:102 part/templates/part/navbar.html:105
-#: stock/templates/stock/item.html:87 stock/templates/stock/navbar.html:47
+#: part/templates/part/navbar.html:114 part/templates/part/navbar.html:117
+#: stock/templates/stock/item.html:88 stock/templates/stock/navbar.html:47
#: stock/templates/stock/navbar.html:50
msgid "Attachments"
msgstr ""
@@ -1298,48 +1327,48 @@ msgstr ""
msgid "Build Notes"
msgstr ""
-#: build/templates/build/detail.html:261 build/templates/build/detail.html:397
-#: company/templates/company/detail.html:173
-#: company/templates/company/detail.html:200
+#: build/templates/build/detail.html:261 build/templates/build/detail.html:398
+#: company/templates/company/detail.html:169
+#: company/templates/company/detail.html:196
#: order/templates/order/purchase_order_detail.html:62
#: order/templates/order/purchase_order_detail.html:95
#: order/templates/order/sales_order_detail.html:58
#: order/templates/order/sales_order_detail.html:85
-#: part/templates/part/detail.html:109 stock/templates/stock/item.html:102
-#: stock/templates/stock/item.html:187
+#: part/templates/part/detail.html:109 stock/templates/stock/item.html:103
+#: stock/templates/stock/item.html:188
msgid "Edit Notes"
msgstr ""
#: build/templates/build/detail.html:357
#: order/templates/order/po_attachments.html:79
-#: order/templates/order/purchase_order_detail.html:156
-#: order/templates/order/sales_order_detail.html:145
-#: part/templates/part/detail.html:802 stock/templates/stock/item.html:251
+#: order/templates/order/purchase_order_detail.html:157
+#: order/templates/order/sales_order_detail.html:146
+#: part/templates/part/detail.html:920 stock/templates/stock/item.html:253
#: templates/attachment_table.html:6
msgid "Add Attachment"
msgstr ""
-#: build/templates/build/detail.html:375
+#: build/templates/build/detail.html:376
#: order/templates/order/po_attachments.html:51
-#: order/templates/order/purchase_order_detail.html:128
-#: order/templates/order/sales_order_detail.html:118
-#: part/templates/part/detail.html:756 stock/templates/stock/item.html:219
+#: order/templates/order/purchase_order_detail.html:129
+#: order/templates/order/sales_order_detail.html:119
+#: part/templates/part/detail.html:874 stock/templates/stock/item.html:221
msgid "Edit Attachment"
msgstr ""
-#: build/templates/build/detail.html:382
+#: build/templates/build/detail.html:383
#: order/templates/order/po_attachments.html:58
-#: order/templates/order/purchase_order_detail.html:135
-#: order/templates/order/sales_order_detail.html:124
-#: part/templates/part/detail.html:765 stock/templates/stock/item.html:228
+#: order/templates/order/purchase_order_detail.html:136
+#: order/templates/order/sales_order_detail.html:125
+#: part/templates/part/detail.html:883 stock/templates/stock/item.html:230
msgid "Confirm Delete Operation"
msgstr ""
-#: build/templates/build/detail.html:383
+#: build/templates/build/detail.html:384
#: order/templates/order/po_attachments.html:59
-#: order/templates/order/purchase_order_detail.html:136
-#: order/templates/order/sales_order_detail.html:125
-#: part/templates/part/detail.html:766 stock/templates/stock/item.html:229
+#: order/templates/order/purchase_order_detail.html:137
+#: order/templates/order/sales_order_detail.html:126
+#: part/templates/part/detail.html:884 stock/templates/stock/item.html:231
msgid "Delete Attachment"
msgstr ""
@@ -1372,7 +1401,7 @@ msgid "Build Order Details"
msgstr ""
#: build/templates/build/navbar.html:15 order/templates/order/po_navbar.html:15
-#: templates/js/translated/stock.js:1414
+#: templates/js/translated/stock.js:1555
msgid "Details"
msgstr "Detalles"
@@ -1501,9 +1530,9 @@ msgstr ""
msgid "Stock item is over-allocated"
msgstr ""
-#: build/views.py:705 templates/js/translated/bom.js:250
-#: templates/js/translated/build.js:705 templates/js/translated/build.js:1000
-#: templates/js/translated/build.js:1179
+#: build/views.py:705 templates/js/translated/bom.js:269
+#: templates/js/translated/build.js:728 templates/js/translated/build.js:1019
+#: templates/js/translated/build.js:1196
msgid "Available"
msgstr ""
@@ -1539,7 +1568,7 @@ msgstr ""
msgid "Error reading file (data could be corrupted)"
msgstr ""
-#: common/forms.py:34 templates/js/translated/attachment.js:42
+#: common/forms.py:34 templates/js/translated/attachment.js:54
msgid "File"
msgstr ""
@@ -1556,546 +1585,594 @@ msgstr ""
msgid "Select {name} file to upload"
msgstr ""
-#: common/models.py:322 common/models.py:815 common/models.py:962
+#: common/models.py:308 common/models.py:839 common/models.py:986
msgid "Settings key (must be unique - case insensitive"
msgstr ""
-#: common/models.py:324
+#: common/models.py:310
msgid "Settings value"
msgstr ""
-#: common/models.py:359
+#: common/models.py:345
msgid "Must be an integer value"
msgstr ""
-#: common/models.py:382
+#: common/models.py:368
msgid "Value must be a boolean value"
msgstr ""
-#: common/models.py:393
+#: common/models.py:379
msgid "Value must be an integer value"
msgstr ""
-#: common/models.py:416
+#: common/models.py:402
msgid "Key string must be unique"
msgstr ""
-#: common/models.py:523
+#: common/models.py:509
msgid "InvenTree Instance Name"
msgstr ""
-#: common/models.py:525
+#: common/models.py:511
msgid "String descriptor for the server instance"
msgstr ""
-#: common/models.py:529
+#: common/models.py:515
msgid "Use instance name"
msgstr ""
-#: common/models.py:530
+#: common/models.py:516
msgid "Use the instance name in the title-bar"
msgstr ""
-#: common/models.py:536 company/models.py:97 company/models.py:98
+#: common/models.py:522 company/models.py:99 company/models.py:100
msgid "Company name"
msgstr ""
-#: common/models.py:537
+#: common/models.py:523
msgid "Internal company name"
msgstr ""
-#: common/models.py:542
+#: common/models.py:528
msgid "Base URL"
msgstr ""
-#: common/models.py:543
+#: common/models.py:529
msgid "Base URL for server instance"
msgstr ""
-#: common/models.py:549
+#: common/models.py:535
msgid "Default Currency"
msgstr ""
-#: common/models.py:550
+#: common/models.py:536
msgid "Default currency"
msgstr ""
-#: common/models.py:556
+#: common/models.py:542
msgid "Download from URL"
msgstr ""
-#: common/models.py:557
+#: common/models.py:543
msgid "Allow download of remote images and files from external URL"
msgstr ""
-#: common/models.py:563
+#: common/models.py:549
msgid "Barcode Support"
msgstr ""
-#: common/models.py:564
+#: common/models.py:550
msgid "Enable barcode scanner support"
msgstr ""
-#: common/models.py:570
+#: common/models.py:556
msgid "IPN Regex"
msgstr ""
-#: common/models.py:571
+#: common/models.py:557
msgid "Regular expression pattern for matching Part IPN"
msgstr ""
-#: common/models.py:575
+#: common/models.py:561
msgid "Allow Duplicate IPN"
msgstr ""
-#: common/models.py:576
+#: common/models.py:562
msgid "Allow multiple parts to share the same IPN"
msgstr ""
-#: common/models.py:582
+#: common/models.py:568
msgid "Allow Editing IPN"
msgstr ""
-#: common/models.py:583
+#: common/models.py:569
msgid "Allow changing the IPN value while editing a part"
msgstr ""
-#: common/models.py:589
+#: common/models.py:575
msgid "Copy Part BOM Data"
msgstr ""
-#: common/models.py:590
+#: common/models.py:576
msgid "Copy BOM data by default when duplicating a part"
msgstr ""
-#: common/models.py:596
+#: common/models.py:582
msgid "Copy Part Parameter Data"
msgstr ""
-#: common/models.py:597
+#: common/models.py:583
msgid "Copy parameter data by default when duplicating a part"
msgstr ""
-#: common/models.py:603
+#: common/models.py:589
msgid "Copy Part Test Data"
msgstr ""
-#: common/models.py:604
+#: common/models.py:590
msgid "Copy test data by default when duplicating a part"
msgstr ""
-#: common/models.py:610
+#: common/models.py:596
msgid "Copy Category Parameter Templates"
msgstr ""
-#: common/models.py:611
+#: common/models.py:597
msgid "Copy category parameter templates when creating a part"
msgstr ""
-#: common/models.py:617 part/models.py:2236 report/models.py:187
-#: stock/forms.py:224 templates/js/translated/table_filters.js:25
-#: templates/js/translated/table_filters.js:329
+#: common/models.py:603 part/models.py:2252 report/models.py:187
+#: stock/forms.py:224 templates/js/translated/table_filters.js:38
+#: templates/js/translated/table_filters.js:342
msgid "Template"
msgstr ""
-#: common/models.py:618
+#: common/models.py:604
msgid "Parts are templates by default"
msgstr ""
-#: common/models.py:624 part/models.py:803
-#: templates/js/translated/table_filters.js:133
-#: templates/js/translated/table_filters.js:341
+#: common/models.py:610 part/models.py:805
+#: templates/js/translated/table_filters.js:146
+#: templates/js/translated/table_filters.js:354
msgid "Assembly"
msgstr ""
-#: common/models.py:625
+#: common/models.py:611
msgid "Parts can be assembled from other components by default"
msgstr ""
-#: common/models.py:631 part/models.py:809
-#: templates/js/translated/table_filters.js:345
+#: common/models.py:617 part/models.py:811
+#: templates/js/translated/table_filters.js:358
msgid "Component"
msgstr ""
-#: common/models.py:632
+#: common/models.py:618
msgid "Parts can be used as sub-components by default"
msgstr ""
-#: common/models.py:638 part/models.py:820
+#: common/models.py:624 part/models.py:822
msgid "Purchaseable"
msgstr ""
-#: common/models.py:639
+#: common/models.py:625
msgid "Parts are purchaseable by default"
msgstr ""
-#: common/models.py:645 part/models.py:825
-#: templates/js/translated/table_filters.js:353
+#: common/models.py:631 part/models.py:827
+#: templates/js/translated/table_filters.js:366
msgid "Salable"
msgstr ""
-#: common/models.py:646
+#: common/models.py:632
msgid "Parts are salable by default"
msgstr ""
-#: common/models.py:652 part/models.py:815
-#: templates/js/translated/table_filters.js:33
-#: templates/js/translated/table_filters.js:357
+#: common/models.py:638 part/models.py:817
+#: templates/js/translated/table_filters.js:46
+#: templates/js/translated/table_filters.js:370
msgid "Trackable"
msgstr ""
-#: common/models.py:653
+#: common/models.py:639
msgid "Parts are trackable by default"
msgstr ""
-#: common/models.py:659 part/models.py:835
-#: part/templates/part/part_base.html:61
-#: templates/js/translated/table_filters.js:29
+#: common/models.py:645 part/models.py:837
+#: part/templates/part/part_base.html:66
+#: templates/js/translated/table_filters.js:42
msgid "Virtual"
msgstr ""
-#: common/models.py:660
+#: common/models.py:646
msgid "Parts are virtual by default"
msgstr ""
-#: common/models.py:667
+#: common/models.py:653
msgid "Show Quantity in Forms"
msgstr ""
-#: common/models.py:668
+#: common/models.py:654
msgid "Display available part quantity in some forms"
msgstr ""
-#: common/models.py:674
+#: common/models.py:660
msgid "Show Import in Views"
msgstr ""
-#: common/models.py:675
+#: common/models.py:661
msgid "Display the import wizard in some part views"
msgstr ""
-#: common/models.py:681
+#: common/models.py:667
msgid "Show Price in Forms"
msgstr ""
-#: common/models.py:682
+#: common/models.py:668
msgid "Display part price in some forms"
msgstr ""
-#: common/models.py:688
+#: common/models.py:674
msgid "Show related parts"
msgstr ""
-#: common/models.py:689
+#: common/models.py:675
msgid "Display related parts for a part"
msgstr ""
-#: common/models.py:695
+#: common/models.py:681
msgid "Create initial stock"
msgstr ""
-#: common/models.py:696
+#: common/models.py:682
msgid "Create initial stock on part creation"
msgstr ""
-#: common/models.py:702
+#: common/models.py:688
msgid "Internal Prices"
msgstr ""
-#: common/models.py:703
+#: common/models.py:689
msgid "Enable internal prices for parts"
msgstr ""
-#: common/models.py:709
+#: common/models.py:695
msgid "Internal Price as BOM-Price"
msgstr ""
-#: common/models.py:710
+#: common/models.py:696
msgid "Use the internal price (if set) in BOM-price calculations"
msgstr ""
-#: common/models.py:716 templates/stats.html:25
+#: common/models.py:702 templates/stats.html:25
msgid "Debug Mode"
msgstr ""
-#: common/models.py:717
+#: common/models.py:703
msgid "Generate reports in debug mode (HTML output)"
msgstr ""
-#: common/models.py:723
+#: common/models.py:709
msgid "Page Size"
msgstr ""
-#: common/models.py:724
+#: common/models.py:710
msgid "Default page size for PDF reports"
msgstr ""
-#: common/models.py:734
+#: common/models.py:720
msgid "Test Reports"
msgstr ""
-#: common/models.py:735
+#: common/models.py:721
msgid "Enable generation of test reports"
msgstr ""
-#: common/models.py:741
+#: common/models.py:727
msgid "Stock Expiry"
msgstr ""
-#: common/models.py:742
+#: common/models.py:728
msgid "Enable stock expiry functionality"
msgstr ""
-#: common/models.py:748
+#: common/models.py:734
msgid "Sell Expired Stock"
msgstr ""
-#: common/models.py:749
+#: common/models.py:735
msgid "Allow sale of expired stock"
msgstr ""
-#: common/models.py:755
+#: common/models.py:741
msgid "Stock Stale Time"
msgstr ""
-#: common/models.py:756
+#: common/models.py:742
msgid "Number of days stock items are considered stale before expiring"
msgstr ""
-#: common/models.py:758
+#: common/models.py:744
msgid "days"
msgstr "días"
-#: common/models.py:763
+#: common/models.py:749
msgid "Build Expired Stock"
msgstr ""
-#: common/models.py:764
+#: common/models.py:750
msgid "Allow building with expired stock"
msgstr ""
-#: common/models.py:770
+#: common/models.py:756
msgid "Stock Ownership Control"
msgstr ""
-#: common/models.py:771
+#: common/models.py:757
msgid "Enable ownership control over stock locations and items"
msgstr ""
-#: common/models.py:777
+#: common/models.py:763
msgid "Group by Part"
msgstr ""
-#: common/models.py:778
+#: common/models.py:764
msgid "Group stock items by part reference in table views"
msgstr ""
-#: common/models.py:784
+#: common/models.py:770
msgid "Build Order Reference Prefix"
msgstr ""
-#: common/models.py:785
+#: common/models.py:771
msgid "Prefix value for build order reference"
msgstr ""
-#: common/models.py:790
+#: common/models.py:776
msgid "Build Order Reference Regex"
msgstr ""
-#: common/models.py:791
+#: common/models.py:777
msgid "Regular expression pattern for matching build order reference"
msgstr ""
-#: common/models.py:795
+#: common/models.py:781
msgid "Sales Order Reference Prefix"
msgstr ""
-#: common/models.py:796
+#: common/models.py:782
msgid "Prefix value for sales order reference"
msgstr ""
-#: common/models.py:801
+#: common/models.py:787
msgid "Purchase Order Reference Prefix"
msgstr ""
-#: common/models.py:802
+#: common/models.py:788
msgid "Prefix value for purchase order reference"
msgstr ""
-#: common/models.py:826
+#: common/models.py:794
+msgid "Enable build"
+msgstr ""
+
+#: common/models.py:795
+msgid "Enable build functionality in InvenTree interface"
+msgstr ""
+
+#: common/models.py:800
+msgid "Enable buy"
+msgstr ""
+
+#: common/models.py:801
+msgid "Enable buy functionality in InvenTree interface"
+msgstr ""
+
+#: common/models.py:806
+msgid "Enable sell"
+msgstr ""
+
+#: common/models.py:807
+msgid "Enable sell functionality in InvenTree interface"
+msgstr ""
+
+#: common/models.py:812
+msgid "Enable stock"
+msgstr ""
+
+#: common/models.py:813
+msgid "Enable stock functionality in InvenTree interface"
+msgstr ""
+
+#: common/models.py:818
+msgid "Enable SO"
+msgstr ""
+
+#: common/models.py:819
+msgid "Enable SO functionality in InvenTree interface"
+msgstr ""
+
+#: common/models.py:824
+msgid "Enable PO"
+msgstr ""
+
+#: common/models.py:825
+msgid "Enable PO functionality in InvenTree interface"
+msgstr ""
+
+#: common/models.py:850
msgid "Show starred parts"
msgstr ""
-#: common/models.py:827
+#: common/models.py:851
msgid "Show starred parts on the homepage"
msgstr ""
-#: common/models.py:832
+#: common/models.py:856
msgid "Show latest parts"
msgstr ""
-#: common/models.py:833
+#: common/models.py:857
msgid "Show latest parts on the homepage"
msgstr ""
-#: common/models.py:838
+#: common/models.py:862
msgid "Recent Part Count"
msgstr ""
-#: common/models.py:839
+#: common/models.py:863
msgid "Number of recent parts to display on index page"
msgstr ""
-#: common/models.py:845
+#: common/models.py:869
msgid "Show unvalidated BOMs"
msgstr ""
-#: common/models.py:846
+#: common/models.py:870
msgid "Show BOMs that await validation on the homepage"
msgstr ""
-#: common/models.py:851
+#: common/models.py:875
msgid "Show recent stock changes"
msgstr ""
-#: common/models.py:852
+#: common/models.py:876
msgid "Show recently changed stock items on the homepage"
msgstr ""
-#: common/models.py:857
+#: common/models.py:881
msgid "Recent Stock Count"
msgstr ""
-#: common/models.py:858
+#: common/models.py:882
msgid "Number of recent stock items to display on index page"
msgstr ""
-#: common/models.py:863
+#: common/models.py:887
msgid "Show low stock"
msgstr ""
-#: common/models.py:864
+#: common/models.py:888
msgid "Show low stock items on the homepage"
msgstr ""
-#: common/models.py:869
+#: common/models.py:893
msgid "Show depleted stock"
msgstr ""
-#: common/models.py:870
+#: common/models.py:894
msgid "Show depleted stock items on the homepage"
msgstr ""
-#: common/models.py:875
+#: common/models.py:899
msgid "Show needed stock"
msgstr ""
-#: common/models.py:876
+#: common/models.py:900
msgid "Show stock items needed for builds on the homepage"
msgstr ""
-#: common/models.py:881
+#: common/models.py:905
msgid "Show expired stock"
msgstr ""
-#: common/models.py:882
+#: common/models.py:906
msgid "Show expired stock items on the homepage"
msgstr ""
-#: common/models.py:887
+#: common/models.py:911
msgid "Show stale stock"
msgstr ""
-#: common/models.py:888
+#: common/models.py:912
msgid "Show stale stock items on the homepage"
msgstr ""
-#: common/models.py:893
+#: common/models.py:917
msgid "Show pending builds"
msgstr ""
-#: common/models.py:894
+#: common/models.py:918
msgid "Show pending builds on the homepage"
msgstr ""
-#: common/models.py:899
+#: common/models.py:923
msgid "Show overdue builds"
msgstr ""
-#: common/models.py:900
+#: common/models.py:924
msgid "Show overdue builds on the homepage"
msgstr ""
-#: common/models.py:905
+#: common/models.py:929
msgid "Show outstanding POs"
msgstr ""
-#: common/models.py:906
+#: common/models.py:930
msgid "Show outstanding POs on the homepage"
msgstr ""
-#: common/models.py:911
+#: common/models.py:935
msgid "Show overdue POs"
msgstr ""
-#: common/models.py:912
+#: common/models.py:936
msgid "Show overdue POs on the homepage"
msgstr ""
-#: common/models.py:917
+#: common/models.py:941
msgid "Show outstanding SOs"
msgstr ""
-#: common/models.py:918
+#: common/models.py:942
msgid "Show outstanding SOs on the homepage"
msgstr ""
-#: common/models.py:923
+#: common/models.py:947
msgid "Show overdue SOs"
msgstr ""
-#: common/models.py:924
+#: common/models.py:948
msgid "Show overdue SOs on the homepage"
msgstr ""
-#: common/models.py:930
+#: common/models.py:954
msgid "Inline label display"
msgstr ""
-#: common/models.py:931
+#: common/models.py:955
msgid "Display PDF labels in the browser, instead of downloading as a file"
msgstr ""
-#: common/models.py:937
+#: common/models.py:961
msgid "Inline report display"
msgstr ""
-#: common/models.py:938
+#: common/models.py:962
msgid "Display PDF reports in the browser, instead of downloading as a file"
msgstr ""
-#: common/models.py:944
+#: common/models.py:968
msgid "Search Preview Results"
msgstr ""
-#: common/models.py:945
+#: common/models.py:969
msgid "Number of results to show in search preview window"
msgstr ""
-#: common/models.py:1002 company/forms.py:43
+#: common/models.py:1026 company/forms.py:43
msgid "Price break quantity"
msgstr ""
-#: common/models.py:1009 company/templates/company/supplier_part.html:231
-#: templates/js/translated/part.js:1153
+#: common/models.py:1033 company/templates/company/supplier_part.html:231
+#: templates/js/translated/part.js:1322
msgid "Price"
msgstr ""
-#: common/models.py:1010
+#: common/models.py:1034
msgid "Unit price at specified quantity"
msgstr ""
-#: common/models.py:1103
+#: common/models.py:1127
msgid "Default"
msgstr ""
@@ -2123,7 +2200,7 @@ msgstr ""
#: order/templates/order/po_navbar.html:19
#: order/templates/order/po_navbar.html:22
#: order/templates/order/purchase_order_detail.html:26 order/views.py:290
-#: part/templates/part/bom_upload/upload_file.html:45
+#: part/templates/part/bom_upload/upload_file.html:65
#: part/templates/part/import_wizard/part_upload.html:45 part/views.py:268
#: part/views.py:882
msgid "Upload File"
@@ -2154,7 +2231,7 @@ msgstr ""
#: order/templates/order/order_wizard/po_upload.html:40
#: 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:43
+#: part/templates/part/bom_upload/upload_file.html:63
#: 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:43
@@ -2169,244 +2246,249 @@ msgstr ""
msgid "Image URL"
msgstr ""
-#: company/models.py:102
+#: company/models.py:104
msgid "Company description"
msgstr ""
-#: company/models.py:103
+#: company/models.py:105
msgid "Description of the company"
msgstr ""
-#: company/models.py:109 company/templates/company/company_base.html:70
-#: templates/js/translated/company.js:303
+#: company/models.py:111 company/templates/company/company_base.html:70
+#: templates/js/translated/company.js:348
msgid "Website"
msgstr "Página web"
-#: company/models.py:110
+#: company/models.py:112
msgid "Company website URL"
msgstr ""
-#: company/models.py:114 company/templates/company/company_base.html:88
+#: company/models.py:116 company/templates/company/company_base.html:88
msgid "Address"
msgstr ""
-#: company/models.py:115
+#: company/models.py:117
msgid "Company address"
msgstr ""
-#: company/models.py:118
+#: company/models.py:120
msgid "Phone number"
msgstr "Teléfono"
-#: company/models.py:119
+#: company/models.py:121
msgid "Contact phone number"
msgstr "Teléfono de contacto"
-#: company/models.py:122 company/templates/company/company_base.html:102
+#: company/models.py:124 company/templates/company/company_base.html:102
msgid "Email"
msgstr "Email"
-#: company/models.py:122
+#: company/models.py:124
msgid "Contact email address"
msgstr ""
-#: company/models.py:125 company/templates/company/company_base.html:109
+#: company/models.py:127 company/templates/company/company_base.html:109
msgid "Contact"
msgstr "Contacto"
-#: company/models.py:126
+#: company/models.py:128
msgid "Point of contact"
msgstr ""
-#: company/models.py:128 company/models.py:345 company/models.py:513
-#: order/models.py:160 part/models.py:712
+#: company/models.py:130 company/models.py:347 company/models.py:563
+#: order/models.py:160 part/models.py:714
#: report/templates/report/inventree_build_order_base.html:165
-#: templates/js/translated/company.js:486
-#: templates/js/translated/company.js:768 templates/js/translated/part.js:819
+#: templates/js/translated/company.js:535
+#: templates/js/translated/company.js:823 templates/js/translated/part.js:972
msgid "Link"
msgstr ""
-#: company/models.py:128
+#: company/models.py:130
msgid "Link to external company information"
msgstr ""
-#: company/models.py:136 part/models.py:722
+#: company/models.py:138 part/models.py:724
msgid "Image"
msgstr ""
-#: company/models.py:141
+#: company/models.py:143
msgid "is customer"
msgstr ""
-#: company/models.py:141
+#: company/models.py:143
msgid "Do you sell items to this company?"
msgstr ""
-#: company/models.py:143
+#: company/models.py:145
msgid "is supplier"
msgstr ""
-#: company/models.py:143
+#: company/models.py:145
msgid "Do you purchase items from this company?"
msgstr ""
-#: company/models.py:145
+#: company/models.py:147
msgid "is manufacturer"
msgstr ""
-#: company/models.py:145
+#: company/models.py:147
msgid "Does this company manufacture parts?"
msgstr ""
-#: company/models.py:149 company/serializers.py:245
-#: company/templates/company/company_base.html:76
+#: company/models.py:151 company/serializers.py:264
+#: company/templates/company/company_base.html:76 stock/serializers.py:155
msgid "Currency"
msgstr ""
-#: company/models.py:152
+#: company/models.py:154
msgid "Default currency used for this company"
msgstr ""
-#: company/models.py:317 company/models.py:484 stock/models.py:448
+#: company/models.py:319 company/models.py:534 stock/models.py:454
#: stock/templates/stock/item_base.html:237
msgid "Base Part"
msgstr ""
-#: company/models.py:321 company/models.py:488 order/views.py:1082
+#: company/models.py:323 company/models.py:538 order/views.py:1082
msgid "Select part"
msgstr ""
-#: company/models.py:332 company/templates/company/company_base.html:116
+#: company/models.py:334 company/templates/company/company_base.html:116
#: company/templates/company/manufacturer_part.html:89
#: company/templates/company/supplier_part.html:98 part/bom.py:170
#: part/bom.py:241 stock/templates/stock/item_base.html:366
-#: templates/js/translated/company.js:287
-#: templates/js/translated/company.js:463
-#: templates/js/translated/company.js:739
+#: templates/js/translated/company.js:332
+#: templates/js/translated/company.js:512
+#: templates/js/translated/company.js:794 templates/js/translated/part.js:222
msgid "Manufacturer"
msgstr "Fabricante"
-#: company/models.py:333
+#: company/models.py:335 templates/js/translated/part.js:223
msgid "Select manufacturer"
msgstr ""
-#: company/models.py:339 company/templates/company/manufacturer_part.html:93
-#: company/templates/company/supplier_part.html:106
-#: order/templates/order/purchase_order_detail.html:331 part/bom.py:171
-#: part/bom.py:242 templates/js/translated/company.js:479
-#: templates/js/translated/company.js:757
+#: company/models.py:341 company/templates/company/manufacturer_part.html:93
+#: company/templates/company/supplier_part.html:106 part/bom.py:171
+#: part/bom.py:242 templates/js/translated/company.js:528
+#: templates/js/translated/company.js:812 templates/js/translated/order.js:505
+#: templates/js/translated/part.js:233
msgid "MPN"
msgstr ""
-#: company/models.py:340
+#: company/models.py:342 templates/js/translated/part.js:234
msgid "Manufacturer Part Number"
msgstr ""
-#: company/models.py:346
+#: company/models.py:348
msgid "URL for external manufacturer part link"
msgstr ""
-#: company/models.py:352
+#: company/models.py:354
msgid "Manufacturer part description"
msgstr ""
-#: company/models.py:406 company/models.py:507
+#: company/models.py:408 company/models.py:557
#: company/templates/company/manufacturer_part.html:6
#: company/templates/company/manufacturer_part.html:23
#: stock/templates/stock/item_base.html:376
msgid "Manufacturer Part"
msgstr ""
-#: company/models.py:413
+#: company/models.py:415
msgid "Parameter name"
msgstr ""
-#: company/models.py:419
+#: company/models.py:421
#: report/templates/report/inventree_test_report_base.html:90
-#: stock/models.py:1808 templates/InvenTree/settings/header.html:8
-#: templates/js/translated/company.js:589 templates/js/translated/part.js:480
-#: templates/js/translated/stock.js:505
+#: stock/models.py:1819 templates/InvenTree/settings/header.html:8
+#: templates/js/translated/company.js:642 templates/js/translated/part.js:612
+#: templates/js/translated/stock.js:576
msgid "Value"
msgstr ""
-#: company/models.py:420
+#: company/models.py:422
msgid "Parameter value"
msgstr ""
-#: company/models.py:426 part/models.py:797 part/models.py:2204
-#: templates/js/translated/company.js:595 templates/js/translated/part.js:486
+#: company/models.py:428 part/models.py:799 part/models.py:2220
+#: templates/js/translated/company.js:648 templates/js/translated/part.js:618
msgid "Units"
msgstr ""
-#: company/models.py:427
+#: company/models.py:429
msgid "Parameter units"
msgstr ""
-#: company/models.py:494 company/templates/company/company_base.html:121
+#: company/models.py:501
+msgid "Linked manufacturer part must reference the same base part"
+msgstr ""
+
+#: company/models.py:544 company/templates/company/company_base.html:121
#: company/templates/company/supplier_part.html:88 order/models.py:260
#: order/templates/order/order_base.html:92
#: order/templates/order/order_wizard/select_pos.html:30 part/bom.py:175
#: part/bom.py:286 stock/templates/stock/item_base.html:383
-#: templates/js/translated/company.js:291
-#: templates/js/translated/company.js:713 templates/js/translated/order.js:254
+#: templates/js/translated/company.js:336
+#: templates/js/translated/company.js:768 templates/js/translated/order.js:328
+#: templates/js/translated/part.js:203
msgid "Supplier"
msgstr "Proveedor"
-#: company/models.py:495
+#: company/models.py:545 templates/js/translated/part.js:204
msgid "Select supplier"
msgstr ""
-#: company/models.py:500 company/templates/company/supplier_part.html:92
-#: order/templates/order/purchase_order_detail.html:318 part/bom.py:176
-#: part/bom.py:287
+#: company/models.py:550 company/templates/company/supplier_part.html:92
+#: part/bom.py:176 part/bom.py:287 templates/js/translated/order.js:492
+#: templates/js/translated/part.js:214
msgid "SKU"
msgstr ""
-#: company/models.py:501
+#: company/models.py:551 templates/js/translated/part.js:215
msgid "Supplier stock keeping unit"
msgstr ""
-#: company/models.py:508
+#: company/models.py:558
msgid "Select manufacturer part"
msgstr ""
-#: company/models.py:514
+#: company/models.py:564
msgid "URL for external supplier part link"
msgstr ""
-#: company/models.py:520
+#: company/models.py:570
msgid "Supplier part description"
msgstr ""
-#: company/models.py:525 company/templates/company/supplier_part.html:120
-#: part/models.py:2352 report/templates/report/inventree_po_report.html:93
+#: company/models.py:575 company/templates/company/supplier_part.html:120
+#: part/models.py:2368 report/templates/report/inventree_po_report.html:93
#: report/templates/report/inventree_so_report.html:93
msgid "Note"
msgstr "Nota"
-#: company/models.py:529 part/models.py:1590
+#: company/models.py:579 part/models.py:1599
msgid "base cost"
msgstr ""
-#: company/models.py:529 part/models.py:1590
+#: company/models.py:579 part/models.py:1599
msgid "Minimum charge (e.g. stocking fee)"
msgstr ""
-#: company/models.py:531 company/templates/company/supplier_part.html:113
-#: stock/models.py:472 stock/templates/stock/item_base.html:324
-#: templates/js/translated/company.js:789 templates/js/translated/stock.js:1086
+#: company/models.py:581 company/templates/company/supplier_part.html:113
+#: stock/models.py:478 stock/templates/stock/item_base.html:324
+#: templates/js/translated/company.js:844 templates/js/translated/stock.js:1057
msgid "Packaging"
msgstr ""
-#: company/models.py:531
+#: company/models.py:581
msgid "Part packaging"
msgstr ""
-#: company/models.py:533 part/models.py:1592
+#: company/models.py:583 part/models.py:1601
msgid "multiple"
msgstr ""
-#: company/models.py:533
+#: company/models.py:583
msgid "Order multiple"
msgstr ""
@@ -2420,7 +2502,7 @@ msgstr ""
#: company/templates/company/company_base.html:9
#: company/templates/company/company_base.html:35
-#: templates/InvenTree/search.html:304 templates/js/translated/company.js:276
+#: templates/InvenTree/search.html:304 templates/js/translated/company.js:321
msgid "Company"
msgstr ""
@@ -2435,7 +2517,7 @@ msgid "Download image from URL"
msgstr ""
#: company/templates/company/company_base.html:46
-#: templates/js/translated/order.js:83
+#: templates/js/translated/order.js:117
msgid "Create Purchase Order"
msgstr ""
@@ -2460,16 +2542,16 @@ msgstr ""
msgid "Phone"
msgstr "Teléfono"
-#: company/templates/company/company_base.html:126 order/models.py:544
-#: order/templates/order/sales_order_base.html:94 stock/models.py:490
-#: stock/models.py:491 stock/templates/stock/item_base.html:276
-#: templates/js/translated/company.js:283 templates/js/translated/order.js:351
-#: templates/js/translated/stock.js:1467
+#: company/templates/company/company_base.html:126 order/models.py:550
+#: order/templates/order/sales_order_base.html:94 stock/models.py:496
+#: stock/models.py:497 stock/templates/stock/item_base.html:276
+#: templates/js/translated/company.js:328 templates/js/translated/order.js:692
+#: templates/js/translated/stock.js:1608
msgid "Customer"
msgstr "Cliente"
#: company/templates/company/company_base.html:193
-#: part/templates/part/part_base.html:405
+#: part/templates/part/part_base.html:418
msgid "Upload Image"
msgstr ""
@@ -2490,8 +2572,8 @@ msgstr ""
msgid "New Supplier Part"
msgstr ""
-#: company/templates/company/detail.html:28
-#: company/templates/company/detail.html:70
+#: company/templates/company/detail.html:27
+#: company/templates/company/detail.html:67
#: company/templates/company/manufacturer_part.html:112
#: company/templates/company/manufacturer_part.html:136
#: part/templates/part/category.html:135 part/templates/part/detail.html:292
@@ -2499,106 +2581,106 @@ msgstr ""
msgid "Options"
msgstr "Opciones"
-#: company/templates/company/detail.html:33
-#: company/templates/company/detail.html:75
+#: company/templates/company/detail.html:32
+#: company/templates/company/detail.html:72
#: part/templates/part/category.html:140
msgid "Order parts"
msgstr ""
-#: company/templates/company/detail.html:36
-#: company/templates/company/detail.html:78
+#: company/templates/company/detail.html:35
+#: company/templates/company/detail.html:75
msgid "Delete parts"
msgstr ""
-#: company/templates/company/detail.html:36
-#: company/templates/company/detail.html:78
+#: company/templates/company/detail.html:35
+#: company/templates/company/detail.html:75
msgid "Delete Parts"
msgstr ""
-#: company/templates/company/detail.html:56 templates/InvenTree/search.html:149
+#: company/templates/company/detail.html:54 templates/InvenTree/search.html:149
msgid "Manufacturer Parts"
msgstr ""
-#: company/templates/company/detail.html:64
+#: company/templates/company/detail.html:62
msgid "Create new manufacturer part"
msgstr ""
-#: company/templates/company/detail.html:65 part/templates/part/detail.html:312
+#: company/templates/company/detail.html:63 part/templates/part/detail.html:312
msgid "New Manufacturer Part"
msgstr ""
-#: company/templates/company/detail.html:97
+#: company/templates/company/detail.html:93
msgid "Supplier Stock"
msgstr ""
-#: company/templates/company/detail.html:106
-#: company/templates/company/navbar.html:40
-#: company/templates/company/navbar.html:43
+#: company/templates/company/detail.html:102
+#: company/templates/company/navbar.html:46
+#: company/templates/company/navbar.html:49
#: order/templates/order/purchase_orders.html:8
#: order/templates/order/purchase_orders.html:13
-#: part/templates/part/detail.html:50 part/templates/part/navbar.html:71
-#: part/templates/part/navbar.html:74 templates/InvenTree/index.html:260
+#: part/templates/part/detail.html:50 part/templates/part/navbar.html:82
+#: part/templates/part/navbar.html:85 templates/InvenTree/index.html:260
#: templates/InvenTree/search.html:325
#: templates/InvenTree/settings/navbar.html:107
-#: templates/InvenTree/settings/navbar.html:109 templates/navbar.html:37
+#: templates/InvenTree/settings/navbar.html:109 templates/navbar.html:44
#: users/models.py:45
msgid "Purchase Orders"
msgstr ""
-#: company/templates/company/detail.html:112
+#: company/templates/company/detail.html:108
#: order/templates/order/purchase_orders.html:20
msgid "Create new purchase order"
msgstr ""
-#: company/templates/company/detail.html:113
+#: company/templates/company/detail.html:109
#: order/templates/order/purchase_orders.html:21
msgid "New Purchase Order"
msgstr ""
-#: company/templates/company/detail.html:128
-#: company/templates/company/navbar.html:49
-#: company/templates/company/navbar.html:52
+#: company/templates/company/detail.html:124
+#: company/templates/company/navbar.html:55
+#: company/templates/company/navbar.html:58
#: order/templates/order/sales_orders.html:8
#: order/templates/order/sales_orders.html:13
-#: part/templates/part/detail.html:71 part/templates/part/navbar.html:79
-#: part/templates/part/navbar.html:82 templates/InvenTree/index.html:291
+#: part/templates/part/detail.html:71 part/templates/part/navbar.html:91
+#: part/templates/part/navbar.html:94 templates/InvenTree/index.html:291
#: templates/InvenTree/search.html:345
#: templates/InvenTree/settings/navbar.html:113
-#: templates/InvenTree/settings/navbar.html:115 templates/navbar.html:46
+#: templates/InvenTree/settings/navbar.html:115 templates/navbar.html:55
#: users/models.py:46
msgid "Sales Orders"
msgstr ""
-#: company/templates/company/detail.html:134
+#: company/templates/company/detail.html:130
#: order/templates/order/sales_orders.html:20
msgid "Create new sales order"
msgstr ""
-#: company/templates/company/detail.html:135
+#: company/templates/company/detail.html:131
#: order/templates/order/sales_orders.html:21
msgid "New Sales Order"
msgstr ""
-#: company/templates/company/detail.html:151
-#: company/templates/company/navbar.html:55
-#: company/templates/company/navbar.html:58
-#: templates/js/translated/build.js:597
+#: company/templates/company/detail.html:147
+#: company/templates/company/navbar.html:61
+#: company/templates/company/navbar.html:64
+#: templates/js/translated/build.js:620
msgid "Assigned Stock"
msgstr ""
-#: company/templates/company/detail.html:169
+#: company/templates/company/detail.html:165
msgid "Company Notes"
msgstr ""
#: company/templates/company/detail.html:364
#: company/templates/company/manufacturer_part.html:200
-#: part/templates/part/detail.html:826
+#: part/templates/part/detail.html:357
msgid "Delete Supplier Parts?"
msgstr ""
#: company/templates/company/detail.html:365
#: company/templates/company/manufacturer_part.html:201
-#: part/templates/part/detail.html:827
+#: part/templates/part/detail.html:358
msgid "All selected supplier parts will be deleted"
msgstr ""
@@ -2609,17 +2691,17 @@ msgstr ""
#: company/templates/company/manufacturer_part.html:40
#: company/templates/company/supplier_part.html:40
#: company/templates/company/supplier_part.html:146
-#: part/templates/part/detail.html:55 part/templates/part/part_base.html:109
+#: part/templates/part/detail.html:55 part/templates/part/part_base.html:116
msgid "Order part"
msgstr ""
#: company/templates/company/manufacturer_part.html:45
-#: templates/js/translated/company.js:511
+#: templates/js/translated/company.js:560
msgid "Edit manufacturer part"
msgstr ""
#: company/templates/company/manufacturer_part.html:49
-#: templates/js/translated/company.js:512
+#: templates/js/translated/company.js:561
msgid "Delete manufacturer part"
msgstr ""
@@ -2634,9 +2716,9 @@ msgstr ""
#: company/templates/company/manufacturer_part.html:103
#: company/templates/company/manufacturer_part_navbar.html:21
-#: company/views.py:49 part/templates/part/navbar.html:65
-#: part/templates/part/navbar.html:68 part/templates/part/prices.html:144
-#: templates/InvenTree/search.html:316 templates/navbar.html:35
+#: company/views.py:49 part/templates/part/navbar.html:75
+#: part/templates/part/navbar.html:78 part/templates/part/prices.html:163
+#: templates/InvenTree/search.html:316 templates/navbar.html:41
msgid "Suppliers"
msgstr ""
@@ -2649,8 +2731,8 @@ msgstr ""
#: company/templates/company/manufacturer_part.html:138
#: company/templates/company/manufacturer_part.html:239
#: part/templates/part/detail.html:214 part/templates/part/detail.html:294
-#: part/templates/part/detail.html:317 templates/js/translated/company.js:377
-#: users/models.py:194
+#: part/templates/part/detail.html:317 templates/js/translated/company.js:424
+#: templates/js/translated/helpers.js:31 users/models.py:194
msgid "Delete"
msgstr "Eliminar"
@@ -2659,8 +2741,8 @@ msgstr "Eliminar"
#: company/templates/company/manufacturer_part_navbar.html:14
#: part/templates/part/category_navbar.html:38
#: part/templates/part/category_navbar.html:41
-#: part/templates/part/detail.html:155 part/templates/part/navbar.html:14
-#: part/templates/part/navbar.html:17
+#: part/templates/part/detail.html:155 part/templates/part/navbar.html:20
+#: part/templates/part/navbar.html:23
msgid "Parameters"
msgstr ""
@@ -2676,7 +2758,7 @@ msgid "Delete parameters"
msgstr ""
#: company/templates/company/manufacturer_part.html:176
-#: part/templates/part/detail.html:719
+#: part/templates/part/detail.html:834
msgid "Add Parameter"
msgstr ""
@@ -2693,18 +2775,18 @@ msgid "Manufacturer Part Stock"
msgstr ""
#: company/templates/company/manufacturer_part_navbar.html:29
-#: company/templates/company/navbar.html:34
+#: company/templates/company/navbar.html:39
#: company/templates/company/supplier_part_navbar.html:15
-#: part/templates/part/navbar.html:31 stock/api.py:53
+#: part/templates/part/navbar.html:38 stock/api.py:54
#: stock/templates/stock/loc_link.html:7 stock/templates/stock/location.html:36
#: stock/templates/stock/stock_app_base.html:10
#: templates/InvenTree/index.html:150 templates/InvenTree/search.html:196
#: templates/InvenTree/search.html:232
#: templates/InvenTree/settings/navbar.html:95
#: templates/InvenTree/settings/navbar.html:97
-#: templates/js/translated/part.js:401 templates/js/translated/part.js:626
-#: templates/js/translated/part.js:786 templates/js/translated/stock.js:133
-#: templates/js/translated/stock.js:935 templates/navbar.html:26
+#: templates/js/translated/part.js:529 templates/js/translated/part.js:758
+#: templates/js/translated/part.js:934 templates/js/translated/stock.js:202
+#: templates/js/translated/stock.js:850 templates/navbar.html:32
msgid "Stock"
msgstr ""
@@ -2717,41 +2799,41 @@ msgstr ""
msgid "Orders"
msgstr ""
-#: company/templates/company/navbar.html:13
-#: company/templates/company/navbar.html:16
+#: company/templates/company/navbar.html:17
+#: company/templates/company/navbar.html:20
msgid "Manufactured Parts"
msgstr ""
-#: company/templates/company/navbar.html:22
-#: company/templates/company/navbar.html:25
+#: company/templates/company/navbar.html:26
+#: company/templates/company/navbar.html:29
msgid "Supplied Parts"
msgstr ""
-#: company/templates/company/navbar.html:31 part/templates/part/navbar.html:28
+#: company/templates/company/navbar.html:36 part/templates/part/navbar.html:35
#: stock/templates/stock/location.html:119
#: stock/templates/stock/location.html:134
#: stock/templates/stock/location.html:148
#: stock/templates/stock/location_navbar.html:18
#: stock/templates/stock/location_navbar.html:21
-#: templates/InvenTree/search.html:198 templates/js/translated/stock.js:1366
+#: templates/InvenTree/search.html:198 templates/js/translated/stock.js:1507
#: templates/stats.html:93 templates/stats.html:102 users/models.py:43
msgid "Stock Items"
msgstr ""
#: company/templates/company/supplier_part.html:7
-#: company/templates/company/supplier_part.html:24 stock/models.py:457
+#: company/templates/company/supplier_part.html:24 stock/models.py:463
#: stock/templates/stock/item_base.html:388
-#: templates/js/translated/company.js:729 templates/js/translated/stock.js:1058
+#: templates/js/translated/company.js:784 templates/js/translated/stock.js:1014
msgid "Supplier Part"
msgstr ""
#: company/templates/company/supplier_part.html:44
-#: templates/js/translated/company.js:802
+#: templates/js/translated/company.js:857
msgid "Edit supplier part"
msgstr ""
#: company/templates/company/supplier_part.html:48
-#: templates/js/translated/company.js:803
+#: templates/js/translated/company.js:858
msgid "Delete supplier part"
msgstr ""
@@ -2775,13 +2857,13 @@ msgid "Order Part"
msgstr ""
#: company/templates/company/supplier_part.html:158
-#: part/templates/part/navbar.html:58 part/templates/part/prices.html:7
+#: part/templates/part/navbar.html:67 part/templates/part/prices.html:7
msgid "Pricing Information"
msgstr ""
#: company/templates/company/supplier_part.html:164
#: company/templates/company/supplier_part.html:265
-#: part/templates/part/prices.html:253 part/views.py:1722
+#: part/templates/part/prices.html:271 part/views.py:1730
msgid "Add Price Break"
msgstr ""
@@ -2789,11 +2871,11 @@ msgstr ""
msgid "No price break information found"
msgstr ""
-#: company/templates/company/supplier_part.html:199 part/views.py:1784
+#: company/templates/company/supplier_part.html:199 part/views.py:1792
msgid "Delete Price Break"
msgstr ""
-#: company/templates/company/supplier_part.html:213 part/views.py:1770
+#: company/templates/company/supplier_part.html:213 part/views.py:1778
msgid "Edit Price Break"
msgstr ""
@@ -2817,8 +2899,8 @@ msgstr ""
msgid "New Supplier"
msgstr ""
-#: company/views.py:55 part/templates/part/prices.html:148
-#: templates/InvenTree/search.html:306 templates/navbar.html:36
+#: company/views.py:55 part/templates/part/prices.html:167
+#: templates/InvenTree/search.html:306 templates/navbar.html:42
msgid "Manufacturers"
msgstr "Fabricantes"
@@ -2827,7 +2909,7 @@ msgid "New Manufacturer"
msgstr ""
#: company/views.py:61 templates/InvenTree/search.html:336
-#: templates/navbar.html:45
+#: templates/navbar.html:53
msgid "Customers"
msgstr ""
@@ -2929,6 +3011,10 @@ msgstr ""
msgid "Part query filters (comma-separated value of key=value pairs)"
msgstr ""
+#: order/api.py:302
+msgid "Destination location must be specified"
+msgstr ""
+
#: order/forms.py:30 order/templates/order/order_base.html:47
msgid "Place order"
msgstr ""
@@ -2978,11 +3064,11 @@ msgstr ""
msgid "Order notes"
msgstr ""
-#: order/models.py:247 order/models.py:534
+#: order/models.py:247 order/models.py:540
msgid "Order reference"
msgstr ""
-#: order/models.py:252 order/models.py:549
+#: order/models.py:252 order/models.py:555
msgid "Purchase order status"
msgstr ""
@@ -2991,7 +3077,7 @@ msgid "Company from which the items are being ordered"
msgstr ""
#: order/models.py:264 order/templates/order/order_base.html:98
-#: templates/js/translated/order.js:263
+#: templates/js/translated/order.js:337
msgid "Supplier Reference"
msgstr ""
@@ -3023,7 +3109,7 @@ msgstr ""
msgid "Date order was completed"
msgstr ""
-#: order/models.py:313 stock/models.py:345 stock/models.py:1060
+#: order/models.py:313 stock/models.py:351 stock/models.py:1072
msgid "Quantity must be greater than zero"
msgstr ""
@@ -3031,150 +3117,182 @@ msgstr ""
msgid "Part supplier must match PO supplier"
msgstr ""
-#: order/models.py:416
+#: order/models.py:421
msgid "Lines can only be received against an order marked as 'Placed'"
msgstr ""
-#: order/models.py:420
+#: order/models.py:425
msgid "Quantity must be an integer"
msgstr ""
-#: order/models.py:422
+#: order/models.py:427
msgid "Quantity must be a positive number"
msgstr ""
-#: order/models.py:545
+#: order/models.py:551
msgid "Company to which the items are being sold"
msgstr ""
-#: order/models.py:551
+#: order/models.py:557
msgid "Customer Reference "
msgstr ""
-#: order/models.py:551
+#: order/models.py:557
msgid "Customer order reference code"
msgstr ""
-#: order/models.py:556
+#: order/models.py:562
msgid "Target date for order completion. Order will be overdue after this date."
msgstr ""
-#: order/models.py:559 templates/js/translated/order.js:392
+#: order/models.py:565 templates/js/translated/order.js:733
msgid "Shipment Date"
msgstr ""
-#: order/models.py:566
+#: order/models.py:572
msgid "shipped by"
msgstr ""
-#: order/models.py:610
+#: order/models.py:616
msgid "SalesOrder cannot be shipped as it is not currently pending"
msgstr ""
-#: order/models.py:707
+#: order/models.py:713
msgid "Item quantity"
msgstr ""
-#: order/models.py:713
+#: order/models.py:719
msgid "Line item reference"
msgstr ""
-#: order/models.py:715
+#: order/models.py:721
msgid "Line item notes"
msgstr ""
-#: order/models.py:745 order/models.py:823 templates/js/translated/order.js:442
+#: order/models.py:751 order/models.py:835 templates/js/translated/order.js:785
msgid "Order"
msgstr ""
-#: order/models.py:746 order/templates/order/order_base.html:9
+#: order/models.py:752 order/templates/order/order_base.html:9
#: order/templates/order/order_base.html:24
#: report/templates/report/inventree_po_report.html:77
#: stock/templates/stock/item_base.html:338
-#: templates/js/translated/order.js:232 templates/js/translated/stock.js:1037
-#: templates/js/translated/stock.js:1448
+#: templates/js/translated/order.js:306 templates/js/translated/stock.js:991
+#: templates/js/translated/stock.js:1589
msgid "Purchase Order"
msgstr ""
-#: order/models.py:767
+#: order/models.py:773
msgid "Supplier part"
msgstr ""
-#: order/models.py:770 order/templates/order/order_base.html:131
-#: order/templates/order/purchase_order_detail.html:388
+#: order/models.py:780 order/templates/order/order_base.html:131
#: order/templates/order/receive_parts.html:22
#: order/templates/order/sales_order_base.html:133
+#: templates/js/translated/order.js:573
msgid "Received"
msgstr ""
-#: order/models.py:770
+#: order/models.py:781
msgid "Number of items received"
msgstr ""
-#: order/models.py:776 part/templates/part/prices.html:157 stock/models.py:582
-#: stock/templates/stock/item_base.html:345
-#: templates/js/translated/stock.js:1081
+#: order/models.py:788 part/templates/part/prices.html:176 stock/models.py:588
+#: stock/serializers.py:147 stock/templates/stock/item_base.html:345
+#: templates/js/translated/stock.js:1045
msgid "Purchase Price"
msgstr ""
-#: order/models.py:777
+#: order/models.py:789
msgid "Unit purchase price"
msgstr ""
-#: order/models.py:785
+#: order/models.py:797
msgid "Where does the Purchaser want this item to be stored?"
msgstr ""
-#: order/models.py:831 part/templates/part/part_pricing.html:97
-#: part/templates/part/prices.html:97 part/templates/part/prices.html:266
+#: order/models.py:843 part/templates/part/part_pricing.html:112
+#: part/templates/part/prices.html:116 part/templates/part/prices.html:284
msgid "Sale Price"
msgstr ""
-#: order/models.py:832
+#: order/models.py:844
msgid "Unit sale price"
msgstr ""
-#: order/models.py:911 order/models.py:913
+#: order/models.py:923 order/models.py:925
msgid "Stock item has not been assigned"
msgstr ""
-#: order/models.py:917
+#: order/models.py:929
msgid "Cannot allocate stock item to a line with a different part"
msgstr ""
-#: order/models.py:919
+#: order/models.py:931
msgid "Cannot allocate stock to a line without a part"
msgstr ""
-#: order/models.py:922
+#: order/models.py:934
msgid "Allocation quantity cannot exceed stock quantity"
msgstr ""
-#: order/models.py:932
+#: order/models.py:944
msgid "Quantity must be 1 for serialized stock item"
msgstr ""
-#: order/models.py:937
+#: order/models.py:949
msgid "Line"
msgstr ""
-#: order/models.py:948
+#: order/models.py:960
msgid "Item"
msgstr ""
-#: order/models.py:949
+#: order/models.py:961
msgid "Select stock item to allocate"
msgstr ""
-#: order/models.py:952
+#: order/models.py:964
msgid "Enter stock allocation quantity"
msgstr ""
-#: order/serializers.py:139
+#: order/serializers.py:166
msgid "Purchase price currency"
msgstr ""
-#: order/serializers.py:360
+#: order/serializers.py:201
+msgid "Line Item"
+msgstr ""
+
+#: order/serializers.py:207
+msgid "Line item does not match purchase order"
+msgstr ""
+
+#: order/serializers.py:217 order/serializers.py:276
+msgid "Select destination location for received items"
+msgstr ""
+
+#: order/serializers.py:234
+msgid "Barcode Hash"
+msgstr ""
+
+#: order/serializers.py:235
+msgid "Unique identifier field"
+msgstr ""
+
+#: order/serializers.py:250
+msgid "Barcode is already in use"
+msgstr ""
+
+#: order/serializers.py:289
+msgid "Line items must be provided"
+msgstr ""
+
+#: order/serializers.py:299
+msgid "Supplied barcode values must be unique"
+msgstr ""
+
+#: order/serializers.py:514
msgid "Sale price currency"
msgstr ""
@@ -3227,14 +3345,12 @@ msgid "Edit Purchase Order"
msgstr ""
#: order/templates/order/order_base.html:196
-#: order/templates/order/purchase_order_detail.html:265
-#: stock/templates/stock/location.html:250
+#: stock/templates/stock/location.html:250 templates/js/translated/order.js:437
msgid "New Location"
msgstr ""
#: order/templates/order/order_base.html:197
-#: order/templates/order/purchase_order_detail.html:266
-#: stock/templates/stock/location.html:42
+#: stock/templates/stock/location.html:42 templates/js/translated/order.js:438
msgid "Create new stock location"
msgstr ""
@@ -3336,7 +3452,7 @@ msgid "Upload File for Purchase Order"
msgstr ""
#: order/templates/order/order_wizard/po_upload.html:18
-#: part/templates/part/bom_upload/upload_file.html:24
+#: part/templates/part/bom_upload/upload_file.html:34
#: part/templates/part/import_wizard/ajax_part_upload.html:10
#: part/templates/part/import_wizard/part_upload.html:21
#, python-format
@@ -3369,7 +3485,7 @@ msgstr ""
#: order/templates/order/order_wizard/select_parts.html:65
#, python-format
-msgid "Select a supplier for %(name)s"
+msgid "Select a supplier for %(name)s"
msgstr ""
#: order/templates/order/order_wizard/select_parts.html:77
@@ -3386,7 +3502,7 @@ msgid "Select existing purchase orders, or create new orders."
msgstr ""
#: order/templates/order/order_wizard/select_pos.html:31
-#: templates/js/translated/order.js:289 templates/js/translated/order.js:397
+#: templates/js/translated/order.js:363 templates/js/translated/order.js:738
msgid "Items"
msgstr ""
@@ -3425,9 +3541,9 @@ msgid "Purchase Order Items"
msgstr ""
#: order/templates/order/purchase_order_detail.html:23
-#: order/templates/order/purchase_order_detail.html:202
+#: order/templates/order/purchase_order_detail.html:203
#: order/templates/order/sales_order_detail.html:23
-#: order/templates/order/sales_order_detail.html:176
+#: order/templates/order/sales_order_detail.html:177
msgid "Add Line Item"
msgstr ""
@@ -3436,49 +3552,6 @@ msgstr ""
msgid "Order Notes"
msgstr ""
-#: order/templates/order/purchase_order_detail.html:238
-#: order/templates/order/sales_order_detail.html:518
-msgid "Edit Line Item"
-msgstr ""
-
-#: order/templates/order/purchase_order_detail.html:248
-#: order/templates/order/sales_order_detail.html:528
-msgid "Delete Line Item"
-msgstr ""
-
-#: order/templates/order/purchase_order_detail.html:279
-msgid "No line items found"
-msgstr ""
-
-#: order/templates/order/purchase_order_detail.html:307
-#: order/templates/order/sales_order_detail.html:353
-msgid "Total"
-msgstr ""
-
-#: order/templates/order/purchase_order_detail.html:360
-#: order/templates/order/sales_order_detail.html:376
-#: templates/js/translated/part.js:1128 templates/js/translated/part.js:1317
-msgid "Unit Price"
-msgstr ""
-
-#: order/templates/order/purchase_order_detail.html:367
-#: order/templates/order/sales_order_detail.html:383
-msgid "Total price"
-msgstr ""
-
-#: order/templates/order/purchase_order_detail.html:431
-#: order/templates/order/sales_order_detail.html:489
-msgid "Edit line item"
-msgstr ""
-
-#: order/templates/order/purchase_order_detail.html:432
-msgid "Delete line item"
-msgstr ""
-
-#: order/templates/order/purchase_order_detail.html:437
-msgid "Receive line item"
-msgstr ""
-
#: order/templates/order/purchase_orders.html:24
#: order/templates/order/sales_orders.html:24
msgid "Print Order Reports"
@@ -3486,18 +3559,18 @@ msgstr ""
#: order/templates/order/receive_parts.html:8
#, python-format
-msgid "Receive outstanding parts for %(order)s - %(desc)s"
+msgid "Receive outstanding parts for %(order)s - %(desc)s"
msgstr ""
-#: order/templates/order/receive_parts.html:14 part/api.py:49
-#: part/models.py:296 part/templates/part/cat_link.html:7
+#: order/templates/order/receive_parts.html:14 part/api.py:54
+#: part/models.py:298 part/templates/part/cat_link.html:7
#: part/templates/part/category.html:108 part/templates/part/category.html:122
#: part/templates/part/category_navbar.html:21
#: part/templates/part/category_navbar.html:24
#: templates/InvenTree/index.html:102 templates/InvenTree/search.html:114
#: templates/InvenTree/settings/navbar.html:83
#: templates/InvenTree/settings/navbar.html:85
-#: templates/js/translated/part.js:987 templates/navbar.html:23
+#: templates/js/translated/part.js:1154 templates/navbar.html:29
#: templates/stats.html:80 templates/stats.html:89 users/models.py:41
msgid "Parts"
msgstr ""
@@ -3511,7 +3584,7 @@ msgid "Order Code"
msgstr ""
#: order/templates/order/receive_parts.html:21
-#: part/templates/part/part_base.html:160 templates/js/translated/part.js:802
+#: part/templates/part/part_base.html:167 templates/js/translated/part.js:949
msgid "On Order"
msgstr ""
@@ -3540,7 +3613,7 @@ msgid "Sales Order Details"
msgstr ""
#: order/templates/order/sales_order_base.html:100
-#: templates/js/translated/order.js:364
+#: templates/js/translated/order.js:705
msgid "Customer Reference"
msgstr ""
@@ -3563,71 +3636,102 @@ msgstr ""
msgid "Sales Order Items"
msgstr ""
-#: order/templates/order/sales_order_detail.html:225
-#: templates/js/translated/bom.js:378 templates/js/translated/build.js:759
-#: templates/js/translated/build.js:1202
+#: order/templates/order/sales_order_detail.html:226
+#: templates/js/translated/bom.js:394 templates/js/translated/build.js:782
+#: templates/js/translated/build.js:1219
msgid "Actions"
msgstr ""
-#: order/templates/order/sales_order_detail.html:232
-#: templates/js/translated/build.js:645 templates/js/translated/build.js:1011
+#: order/templates/order/sales_order_detail.html:233
+#: templates/js/translated/build.js:668 templates/js/translated/build.js:1030
msgid "Edit stock allocation"
msgstr ""
-#: order/templates/order/sales_order_detail.html:233
-#: templates/js/translated/build.js:647 templates/js/translated/build.js:1012
+#: order/templates/order/sales_order_detail.html:234
+#: templates/js/translated/build.js:670 templates/js/translated/build.js:1031
msgid "Delete stock allocation"
msgstr ""
-#: order/templates/order/sales_order_detail.html:306
+#: order/templates/order/sales_order_detail.html:307
msgid "No matching line items"
msgstr ""
-#: order/templates/order/sales_order_detail.html:336
+#: order/templates/order/sales_order_detail.html:337
msgid "ID"
msgstr ""
-#: order/templates/order/sales_order_detail.html:404
-#: templates/js/translated/build.js:710 templates/js/translated/build.js:1007
+#: order/templates/order/sales_order_detail.html:354
+#: templates/js/translated/order.js:481
+msgid "Total"
+msgstr ""
+
+#: order/templates/order/sales_order_detail.html:377
+#: templates/js/translated/order.js:534 templates/js/translated/part.js:1296
+#: templates/js/translated/part.js:1507
+msgid "Unit Price"
+msgstr ""
+
+#: order/templates/order/sales_order_detail.html:384
+#: templates/js/translated/order.js:543
+msgid "Total price"
+msgstr ""
+
+#: order/templates/order/sales_order_detail.html:405
+#: templates/js/translated/build.js:733 templates/js/translated/build.js:1026
msgid "Allocated"
msgstr ""
-#: order/templates/order/sales_order_detail.html:406
+#: order/templates/order/sales_order_detail.html:407
msgid "Fulfilled"
msgstr ""
-#: order/templates/order/sales_order_detail.html:443
+#: order/templates/order/sales_order_detail.html:444
msgid "PO"
msgstr ""
-#: order/templates/order/sales_order_detail.html:473
+#: order/templates/order/sales_order_detail.html:474
msgid "Allocate serial numbers"
msgstr ""
-#: order/templates/order/sales_order_detail.html:476
-#: templates/js/translated/build.js:773
+#: order/templates/order/sales_order_detail.html:477
+#: templates/js/translated/build.js:796
msgid "Allocate stock"
msgstr ""
-#: order/templates/order/sales_order_detail.html:479
+#: order/templates/order/sales_order_detail.html:480
msgid "Purchase stock"
msgstr ""
-#: order/templates/order/sales_order_detail.html:483
-#: templates/js/translated/build.js:766 templates/js/translated/build.js:1210
+#: order/templates/order/sales_order_detail.html:484
+#: templates/js/translated/build.js:789 templates/js/translated/build.js:1227
msgid "Build stock"
msgstr ""
-#: order/templates/order/sales_order_detail.html:486
-#: order/templates/order/sales_order_detail.html:605
+#: order/templates/order/sales_order_detail.html:487
+#: order/templates/order/sales_order_detail.html:606
msgid "Calculate price"
msgstr ""
#: order/templates/order/sales_order_detail.html:490
+#: templates/js/translated/order.js:616
+msgid "Edit line item"
+msgstr ""
+
+#: order/templates/order/sales_order_detail.html:491
msgid "Delete line item "
msgstr ""
-#: order/templates/order/sales_order_detail.html:611
+#: order/templates/order/sales_order_detail.html:519
+#: templates/js/translated/order.js:403
+msgid "Edit Line Item"
+msgstr ""
+
+#: order/templates/order/sales_order_detail.html:529
+#: templates/js/translated/order.js:415
+msgid "Delete Line Item"
+msgstr ""
+
+#: order/templates/order/sales_order_detail.html:612
msgid "Update Unit Price"
msgstr ""
@@ -3814,12 +3918,28 @@ msgstr ""
msgid "Updated {part} unit-price to {price} and quantity to {qty}"
msgstr ""
-#: part/bom.py:133 part/models.py:73 part/models.py:731
-#: part/templates/part/category.html:75 part/templates/part/part_base.html:282
+#: part/api.py:700
+msgid "Must be greater than zero"
+msgstr ""
+
+#: part/api.py:704
+msgid "Must be a valid quantity"
+msgstr ""
+
+#: part/api.py:719
+msgid "Specify location for initial part stock"
+msgstr ""
+
+#: part/api.py:750 part/api.py:754 part/api.py:769 part/api.py:773
+msgid "This field is required"
+msgstr ""
+
+#: part/bom.py:133 part/models.py:75 part/models.py:733
+#: part/templates/part/category.html:75 part/templates/part/part_base.html:290
msgid "Default Location"
msgstr ""
-#: part/bom.py:134 part/templates/part/part_base.html:149
+#: part/bom.py:134 part/templates/part/part_base.html:156
msgid "Available Stock"
msgstr ""
@@ -3879,7 +3999,7 @@ msgstr ""
msgid "Include part supplier data in exported BOM"
msgstr ""
-#: part/forms.py:96 part/models.py:2234
+#: part/forms.py:96 part/models.py:2250
msgid "Parent Part"
msgstr ""
@@ -3923,391 +4043,391 @@ msgstr ""
msgid "Input quantity for price calculation"
msgstr ""
-#: part/models.py:74
+#: part/models.py:76
msgid "Default location for parts in this category"
msgstr ""
-#: part/models.py:77
+#: part/models.py:79
msgid "Default keywords"
msgstr ""
-#: part/models.py:77
+#: part/models.py:79
msgid "Default keywords for parts in this category"
msgstr ""
-#: part/models.py:87 part/models.py:2280
+#: part/models.py:89 part/models.py:2296
#: part/templates/part/part_app_base.html:10
msgid "Part Category"
msgstr ""
-#: part/models.py:88 part/templates/part/category.html:32
+#: part/models.py:90 part/templates/part/category.html:32
#: part/templates/part/category.html:103 templates/InvenTree/search.html:127
#: templates/stats.html:84 users/models.py:40
msgid "Part Categories"
msgstr ""
-#: part/models.py:381
+#: part/models.py:383
msgid "Invalid choice for parent part"
msgstr ""
-#: part/models.py:433 part/models.py:445
+#: part/models.py:435 part/models.py:447
#, python-brace-format
msgid "Part '{p1}' is used in BOM for '{p2}' (recursive)"
msgstr ""
-#: part/models.py:542
+#: part/models.py:544
msgid "Next available serial numbers are"
msgstr ""
-#: part/models.py:546
+#: part/models.py:548
msgid "Next available serial number is"
msgstr ""
-#: part/models.py:551
+#: part/models.py:553
msgid "Most recent serial number is"
msgstr ""
-#: part/models.py:630
+#: part/models.py:632
msgid "Duplicate IPN not allowed in part settings"
msgstr ""
-#: part/models.py:655
+#: part/models.py:657
msgid "Part name"
msgstr ""
-#: part/models.py:662
+#: part/models.py:664
msgid "Is Template"
msgstr ""
-#: part/models.py:663
+#: part/models.py:665
msgid "Is this part a template part?"
msgstr ""
-#: part/models.py:673
+#: part/models.py:675
msgid "Is this part a variant of another part?"
msgstr ""
-#: part/models.py:674
+#: part/models.py:676
msgid "Variant Of"
msgstr ""
-#: part/models.py:680
+#: part/models.py:682
msgid "Part description"
msgstr ""
-#: part/models.py:685 part/templates/part/category.html:82
-#: part/templates/part/part_base.html:251
+#: part/models.py:687 part/templates/part/category.html:82
+#: part/templates/part/part_base.html:259
msgid "Keywords"
msgstr ""
-#: part/models.py:686
+#: part/models.py:688
msgid "Part keywords to improve visibility in search results"
msgstr ""
-#: part/models.py:693 part/models.py:2279
+#: part/models.py:695 part/models.py:2295
#: part/templates/part/set_category.html:15
#: templates/InvenTree/settings/settings.html:167
-#: templates/js/translated/part.js:773
+#: templates/js/translated/part.js:916
msgid "Category"
msgstr ""
-#: part/models.py:694
+#: part/models.py:696
msgid "Part category"
msgstr ""
-#: part/models.py:699 part/templates/part/part_base.html:227
-#: templates/js/translated/part.js:389 templates/js/translated/part.js:617
+#: part/models.py:701 part/templates/part/part_base.html:235
+#: templates/js/translated/part.js:517 templates/js/translated/part.js:749
msgid "IPN"
msgstr ""
-#: part/models.py:700
+#: part/models.py:702
msgid "Internal Part Number"
msgstr ""
-#: part/models.py:706
+#: part/models.py:708
msgid "Part revision or version number"
msgstr ""
-#: part/models.py:707 part/templates/part/part_base.html:244
-#: report/models.py:200 templates/js/translated/part.js:393
+#: part/models.py:709 part/templates/part/part_base.html:252
+#: report/models.py:200 templates/js/translated/part.js:521
msgid "Revision"
msgstr ""
-#: part/models.py:729
+#: part/models.py:731
msgid "Where is this item normally stored?"
msgstr ""
-#: part/models.py:776 part/templates/part/part_base.html:289
+#: part/models.py:778 part/templates/part/part_base.html:297
msgid "Default Supplier"
msgstr ""
-#: part/models.py:777
+#: part/models.py:779
msgid "Default supplier part"
msgstr ""
-#: part/models.py:784
+#: part/models.py:786
msgid "Default Expiry"
msgstr ""
-#: part/models.py:785
+#: part/models.py:787
msgid "Expiry time (in days) for stock items of this part"
msgstr ""
-#: part/models.py:790
+#: part/models.py:792
msgid "Minimum Stock"
msgstr ""
-#: part/models.py:791
+#: part/models.py:793
msgid "Minimum allowed stock level"
msgstr ""
-#: part/models.py:798
+#: part/models.py:800
msgid "Stock keeping units for this part"
msgstr ""
-#: part/models.py:804
+#: part/models.py:806
msgid "Can this part be built from other parts?"
msgstr ""
-#: part/models.py:810
+#: part/models.py:812
msgid "Can this part be used to build other parts?"
msgstr ""
-#: part/models.py:816
+#: part/models.py:818
msgid "Does this part have tracking for unique items?"
msgstr ""
-#: part/models.py:821
+#: part/models.py:823
msgid "Can this part be purchased from external suppliers?"
msgstr ""
-#: part/models.py:826
+#: part/models.py:828
msgid "Can this part be sold to customers?"
msgstr ""
-#: part/models.py:830 templates/js/translated/table_filters.js:21
-#: templates/js/translated/table_filters.js:69
-#: templates/js/translated/table_filters.js:255
-#: templates/js/translated/table_filters.js:324
+#: part/models.py:832 templates/js/translated/table_filters.js:34
+#: templates/js/translated/table_filters.js:82
+#: templates/js/translated/table_filters.js:268
+#: templates/js/translated/table_filters.js:337
msgid "Active"
msgstr ""
-#: part/models.py:831
+#: part/models.py:833
msgid "Is this part active?"
msgstr ""
-#: part/models.py:836
+#: part/models.py:838
msgid "Is this a virtual part, such as a software product or license?"
msgstr ""
-#: part/models.py:841
+#: part/models.py:843
msgid "Part notes - supports Markdown formatting"
msgstr ""
-#: part/models.py:844
+#: part/models.py:846
msgid "BOM checksum"
msgstr ""
-#: part/models.py:844
+#: part/models.py:846
msgid "Stored BOM checksum"
msgstr ""
-#: part/models.py:847
+#: part/models.py:849
msgid "BOM checked by"
msgstr ""
-#: part/models.py:849
+#: part/models.py:851
msgid "BOM checked date"
msgstr ""
-#: part/models.py:853
+#: part/models.py:855
msgid "Creation User"
msgstr ""
-#: part/models.py:1592
+#: part/models.py:1601
msgid "Sell multiple"
msgstr ""
-#: part/models.py:2080
+#: part/models.py:2096
msgid "Test templates can only be created for trackable parts"
msgstr ""
-#: part/models.py:2097
+#: part/models.py:2113
msgid "Test with this name already exists for this part"
msgstr ""
-#: part/models.py:2117 templates/js/translated/part.js:1038
-#: templates/js/translated/stock.js:485
+#: part/models.py:2133 templates/js/translated/part.js:1205
+#: templates/js/translated/stock.js:556
msgid "Test Name"
msgstr ""
-#: part/models.py:2118
+#: part/models.py:2134
msgid "Enter a name for the test"
msgstr ""
-#: part/models.py:2123
+#: part/models.py:2139
msgid "Test Description"
msgstr ""
-#: part/models.py:2124
+#: part/models.py:2140
msgid "Enter description for this test"
msgstr ""
-#: part/models.py:2129 templates/js/translated/part.js:1047
-#: templates/js/translated/table_filters.js:241
+#: part/models.py:2145 templates/js/translated/part.js:1214
+#: templates/js/translated/table_filters.js:254
msgid "Required"
msgstr ""
-#: part/models.py:2130
+#: part/models.py:2146
msgid "Is this test required to pass?"
msgstr ""
-#: part/models.py:2135 templates/js/translated/part.js:1055
+#: part/models.py:2151 templates/js/translated/part.js:1222
msgid "Requires Value"
msgstr ""
-#: part/models.py:2136
+#: part/models.py:2152
msgid "Does this test require a value when adding a test result?"
msgstr ""
-#: part/models.py:2141 templates/js/translated/part.js:1062
+#: part/models.py:2157 templates/js/translated/part.js:1229
msgid "Requires Attachment"
msgstr ""
-#: part/models.py:2142
+#: part/models.py:2158
msgid "Does this test require a file attachment when adding a test result?"
msgstr ""
-#: part/models.py:2153
+#: part/models.py:2169
#, python-brace-format
msgid "Illegal character in template name ({c})"
msgstr ""
-#: part/models.py:2189
+#: part/models.py:2205
msgid "Parameter template name must be unique"
msgstr ""
-#: part/models.py:2197
+#: part/models.py:2213
msgid "Parameter Name"
msgstr ""
-#: part/models.py:2204
+#: part/models.py:2220
msgid "Parameter Units"
msgstr ""
-#: part/models.py:2236 part/models.py:2285 part/models.py:2286
+#: part/models.py:2252 part/models.py:2301 part/models.py:2302
#: templates/InvenTree/settings/settings.html:162
msgid "Parameter Template"
msgstr ""
-#: part/models.py:2238
+#: part/models.py:2254
msgid "Data"
msgstr ""
-#: part/models.py:2238
+#: part/models.py:2254
msgid "Parameter Value"
msgstr ""
-#: part/models.py:2290 templates/InvenTree/settings/settings.html:171
+#: part/models.py:2306 templates/InvenTree/settings/settings.html:171
msgid "Default Value"
msgstr ""
-#: part/models.py:2291
+#: part/models.py:2307
msgid "Default Parameter Value"
msgstr ""
-#: part/models.py:2325
+#: part/models.py:2341
msgid "Select parent part"
msgstr ""
-#: part/models.py:2333
+#: part/models.py:2349
msgid "Sub part"
msgstr ""
-#: part/models.py:2334
+#: part/models.py:2350
msgid "Select part to be used in BOM"
msgstr ""
-#: part/models.py:2340
+#: part/models.py:2356
msgid "BOM quantity for this BOM item"
msgstr ""
-#: part/models.py:2342 templates/js/translated/bom.js:236
-#: templates/js/translated/bom.js:298
+#: part/models.py:2358 templates/js/translated/bom.js:256
+#: templates/js/translated/bom.js:314
msgid "Optional"
msgstr ""
-#: part/models.py:2342
+#: part/models.py:2358
msgid "This BOM item is optional"
msgstr ""
-#: part/models.py:2345
+#: part/models.py:2361
msgid "Overage"
msgstr ""
-#: part/models.py:2346
+#: part/models.py:2362
msgid "Estimated build wastage quantity (absolute or percentage)"
msgstr ""
-#: part/models.py:2349
+#: part/models.py:2365
msgid "BOM item reference"
msgstr ""
-#: part/models.py:2352
+#: part/models.py:2368
msgid "BOM item notes"
msgstr ""
-#: part/models.py:2354
+#: part/models.py:2370
msgid "Checksum"
msgstr ""
-#: part/models.py:2354
+#: part/models.py:2370
msgid "BOM line checksum"
msgstr ""
-#: part/models.py:2358 templates/js/translated/bom.js:315
-#: templates/js/translated/bom.js:322
-#: templates/js/translated/table_filters.js:55
+#: part/models.py:2374 templates/js/translated/bom.js:331
+#: templates/js/translated/bom.js:338
+#: templates/js/translated/table_filters.js:68
msgid "Inherited"
msgstr ""
-#: part/models.py:2359
+#: part/models.py:2375
msgid "This BOM item is inherited by BOMs for variant parts"
msgstr ""
-#: part/models.py:2364 templates/js/translated/bom.js:307
+#: part/models.py:2380 templates/js/translated/bom.js:323
msgid "Allow Variants"
msgstr ""
-#: part/models.py:2365
+#: part/models.py:2381
msgid "Stock items for variant parts can be used for this BOM item"
msgstr ""
-#: part/models.py:2450 stock/models.py:335
+#: part/models.py:2466 stock/models.py:341
msgid "Quantity must be integer value for trackable parts"
msgstr ""
-#: part/models.py:2459 part/models.py:2461
+#: part/models.py:2475 part/models.py:2477
msgid "Sub part must be specified"
msgstr ""
-#: part/models.py:2464
+#: part/models.py:2480
msgid "BOM Item"
msgstr ""
-#: part/models.py:2583
+#: part/models.py:2599
msgid "Part 1"
msgstr ""
-#: part/models.py:2587
+#: part/models.py:2603
msgid "Part 2"
msgstr ""
-#: part/models.py:2587
+#: part/models.py:2603
msgid "Select Related Part"
msgstr ""
-#: part/models.py:2619
+#: part/models.py:2635
msgid "Error creating relationship: check that the part is not related to itself and that the relationship is unique"
msgstr ""
@@ -4317,17 +4437,17 @@ msgstr ""
#: part/templates/part/bom.html:14
#, python-format
-msgid "The BOM for %(part)s has changed, and must be validated.
"
+msgid "The BOM for %(part)s has changed, and must be validated.
"
msgstr ""
#: part/templates/part/bom.html:16
#, python-format
-msgid "The BOM for %(part)s was last checked by %(checker)s on %(check_date)s"
+msgid "The BOM for %(part)s was last checked by %(checker)s on %(check_date)s"
msgstr ""
#: part/templates/part/bom.html:20
#, python-format
-msgid "The BOM for %(part)s has not been validated."
+msgid "The BOM for %(part)s has not been validated."
msgstr ""
#: part/templates/part/bom.html:27
@@ -4374,33 +4494,34 @@ msgstr ""
msgid "Select Part"
msgstr ""
-#: part/templates/part/bom_upload/upload_file.html:7
-msgid "Upload BOM File"
+#: part/templates/part/bom_upload/upload_file.html:13
+#: part/templates/part/bom_upload/upload_file.html:16
+msgid "Return To BOM"
msgstr ""
-#: part/templates/part/bom_upload/upload_file.html:12
+#: part/templates/part/bom_upload/upload_file.html:27
msgid "Upload Bill of Materials"
msgstr ""
-#: part/templates/part/bom_upload/upload_file.html:16
+#: part/templates/part/bom_upload/upload_file.html:46
msgid "Requirements for BOM upload"
msgstr ""
-#: part/templates/part/bom_upload/upload_file.html:18
+#: part/templates/part/bom_upload/upload_file.html:48
msgid "The BOM file must contain the required named columns as provided in the "
msgstr ""
-#: part/templates/part/bom_upload/upload_file.html:18
+#: part/templates/part/bom_upload/upload_file.html:48
msgid "BOM Upload Template"
msgstr ""
-#: part/templates/part/bom_upload/upload_file.html:19
+#: part/templates/part/bom_upload/upload_file.html:49
msgid "Each part must already exist in the database"
msgstr ""
#: part/templates/part/bom_validate.html:6
#, python-format
-msgid "Confirm that the Bill of Materials (BOM) is valid for:
%(part)s"
+msgid "Confirm that the Bill of Materials (BOM) is valid for:
%(part)s"
msgstr ""
#: part/templates/part/bom_validate.html:9
@@ -4435,7 +4556,7 @@ msgstr ""
msgid "Category Description"
msgstr ""
-#: part/templates/part/category.html:88 part/templates/part/category.html:174
+#: part/templates/part/category.html:88 part/templates/part/category.html:175
#: part/templates/part/category_navbar.html:14
#: part/templates/part/category_navbar.html:17
msgid "Subcategories"
@@ -4449,7 +4570,7 @@ msgstr ""
msgid "Export Part Data"
msgstr ""
-#: part/templates/part/category.html:127 part/templates/part/category.html:141
+#: part/templates/part/category.html:127 part/templates/part/category.html:142
msgid "Export"
msgstr "Exportar"
@@ -4470,26 +4591,30 @@ msgid "Set Category"
msgstr ""
#: part/templates/part/category.html:141
+msgid "Print Labels"
+msgstr ""
+
+#: part/templates/part/category.html:142
msgid "Export Data"
msgstr ""
-#: part/templates/part/category.html:145
+#: part/templates/part/category.html:146
msgid "View list display"
msgstr ""
-#: part/templates/part/category.html:148
+#: part/templates/part/category.html:149
msgid "View grid display"
msgstr ""
-#: part/templates/part/category.html:164
+#: part/templates/part/category.html:165
msgid "Part Parameters"
msgstr ""
-#: part/templates/part/category.html:253
+#: part/templates/part/category.html:254
msgid "Create Part Category"
msgstr ""
-#: part/templates/part/category.html:279
+#: part/templates/part/category.html:281
msgid "Create Part"
msgstr ""
@@ -4533,7 +4658,7 @@ msgstr ""
msgid "Import Parts"
msgstr ""
-#: part/templates/part/copy_part.html:9 templates/js/translated/part.js:224
+#: part/templates/part/copy_part.html:9 templates/js/translated/part.js:352
msgid "Duplicate Part"
msgstr ""
@@ -4554,7 +4679,7 @@ msgstr ""
#: part/templates/part/create_part.html:17
#, python-format
-msgid "%(full_name)s - %(desc)s (%(match_per)s%% match)"
+msgid "%(full_name)s - %(desc)s (%(match_per)s%% match)"
msgstr ""
#: part/templates/part/detail.html:16
@@ -4563,10 +4688,10 @@ msgstr ""
#: part/templates/part/detail.html:21
#, python-format
-msgid "Showing stock for all variants of %(full_name)s"
+msgid "Showing stock for all variants of %(full_name)s"
msgstr ""
-#: part/templates/part/detail.html:30 part/templates/part/navbar.html:87
+#: part/templates/part/detail.html:30 part/templates/part/navbar.html:99
msgid "Part Test Templates"
msgstr ""
@@ -4586,7 +4711,7 @@ msgstr ""
msgid "Sales Order Allocations"
msgstr ""
-#: part/templates/part/detail.html:130 part/templates/part/navbar.html:21
+#: part/templates/part/detail.html:130 part/templates/part/navbar.html:27
msgid "Part Variants"
msgstr ""
@@ -4602,8 +4727,8 @@ msgstr ""
msgid "Add new parameter"
msgstr ""
-#: part/templates/part/detail.html:182 part/templates/part/navbar.html:95
-#: part/templates/part/navbar.html:98
+#: part/templates/part/detail.html:182 part/templates/part/navbar.html:107
+#: part/templates/part/navbar.html:110
msgid "Related Parts"
msgstr ""
@@ -4611,8 +4736,8 @@ msgstr ""
msgid "Add Related"
msgstr ""
-#: part/templates/part/detail.html:228 part/templates/part/navbar.html:35
-#: part/templates/part/navbar.html:38
+#: part/templates/part/detail.html:228 part/templates/part/navbar.html:43
+#: part/templates/part/navbar.html:46
msgid "Bill of Materials"
msgstr ""
@@ -4644,50 +4769,50 @@ msgstr ""
msgid "Delete manufacturer parts"
msgstr ""
-#: part/templates/part/detail.html:402
+#: part/templates/part/detail.html:502
msgid "Delete selected BOM items?"
msgstr ""
-#: part/templates/part/detail.html:403
+#: part/templates/part/detail.html:503
msgid "All selected BOM items will be deleted"
msgstr ""
-#: part/templates/part/detail.html:454
+#: part/templates/part/detail.html:554
msgid "Create BOM Item"
msgstr ""
-#: part/templates/part/detail.html:589
+#: part/templates/part/detail.html:699
msgid "Add Test Result Template"
msgstr ""
-#: part/templates/part/detail.html:607
+#: part/templates/part/detail.html:716
msgid "Edit Test Result Template"
msgstr ""
-#: part/templates/part/detail.html:619
+#: part/templates/part/detail.html:728
msgid "Delete Test Result Template"
msgstr ""
-#: part/templates/part/detail.html:670
+#: part/templates/part/detail.html:784
msgid "Edit Part Notes"
msgstr ""
-#: part/templates/part/detail.html:903
+#: part/templates/part/detail.html:936
#, python-format
msgid "Purchase Unit Price - %(currency)s"
msgstr ""
-#: part/templates/part/detail.html:915
+#: part/templates/part/detail.html:948
#, python-format
msgid "Unit Price-Cost Difference - %(currency)s"
msgstr ""
-#: part/templates/part/detail.html:927
+#: part/templates/part/detail.html:960
#, python-format
msgid "Supplier Unit Cost - %(currency)s"
msgstr ""
-#: part/templates/part/detail.html:1016
+#: part/templates/part/detail.html:1049
#, python-format
msgid "Unit Price - %(currency)s"
msgstr ""
@@ -4701,19 +4826,19 @@ msgstr ""
msgid "Import Parts from File"
msgstr ""
-#: part/templates/part/navbar.html:24
+#: part/templates/part/navbar.html:30
msgid "Variants"
msgstr ""
-#: part/templates/part/navbar.html:51 part/templates/part/navbar.html:54
+#: part/templates/part/navbar.html:59 part/templates/part/navbar.html:62
msgid "Used In"
msgstr ""
-#: part/templates/part/navbar.html:61
+#: part/templates/part/navbar.html:70
msgid "Prices"
msgstr ""
-#: part/templates/part/navbar.html:90
+#: part/templates/part/navbar.html:102
msgid "Test Templates"
msgstr ""
@@ -4721,195 +4846,204 @@ msgstr ""
msgid "Part List"
msgstr ""
-#: part/templates/part/part_base.html:30
+#: part/templates/part/part_base.html:35
msgid "Part is a template part (variants can be made from this part)"
msgstr ""
-#: part/templates/part/part_base.html:33
+#: part/templates/part/part_base.html:38
msgid "Part can be assembled from other parts"
msgstr ""
-#: part/templates/part/part_base.html:36
+#: part/templates/part/part_base.html:41
msgid "Part can be used in assemblies"
msgstr ""
-#: part/templates/part/part_base.html:39
+#: part/templates/part/part_base.html:44
msgid "Part stock is tracked by serial number"
msgstr ""
-#: part/templates/part/part_base.html:42
+#: part/templates/part/part_base.html:47
msgid "Part can be purchased from external suppliers"
msgstr ""
-#: part/templates/part/part_base.html:45
+#: part/templates/part/part_base.html:50
msgid "Part can be sold to customers"
msgstr ""
-#: part/templates/part/part_base.html:52 part/templates/part/part_base.html:60
+#: part/templates/part/part_base.html:57 part/templates/part/part_base.html:65
msgid "Part is virtual (not a physical part)"
msgstr ""
-#: part/templates/part/part_base.html:53 templates/js/translated/company.js:454
-#: templates/js/translated/company.js:704 templates/js/translated/part.js:304
-#: templates/js/translated/part.js:381
+#: part/templates/part/part_base.html:58 templates/js/translated/company.js:503
+#: templates/js/translated/company.js:759 templates/js/translated/part.js:432
+#: templates/js/translated/part.js:509
msgid "Inactive"
msgstr ""
-#: part/templates/part/part_base.html:68
+#: part/templates/part/part_base.html:73
msgid "Star this part"
msgstr ""
-#: part/templates/part/part_base.html:75
+#: part/templates/part/part_base.html:80
#: stock/templates/stock/item_base.html:75
#: stock/templates/stock/location.html:51
msgid "Barcode actions"
msgstr ""
-#: part/templates/part/part_base.html:77
+#: part/templates/part/part_base.html:82
#: stock/templates/stock/item_base.html:77
#: stock/templates/stock/location.html:53 templates/qr_button.html:1
msgid "Show QR Code"
msgstr ""
-#: part/templates/part/part_base.html:78
+#: part/templates/part/part_base.html:83
#: stock/templates/stock/item_base.html:93
#: stock/templates/stock/location.html:54
msgid "Print Label"
msgstr ""
-#: part/templates/part/part_base.html:83
+#: part/templates/part/part_base.html:89
msgid "Show pricing information"
msgstr ""
-#: part/templates/part/part_base.html:88
+#: part/templates/part/part_base.html:95
#: stock/templates/stock/item_base.html:142
#: stock/templates/stock/location.html:62
msgid "Stock actions"
msgstr ""
-#: part/templates/part/part_base.html:95
+#: part/templates/part/part_base.html:102
msgid "Count part stock"
msgstr ""
-#: part/templates/part/part_base.html:101
+#: part/templates/part/part_base.html:108
msgid "Transfer part stock"
msgstr ""
-#: part/templates/part/part_base.html:118
+#: part/templates/part/part_base.html:125
msgid "Part actions"
msgstr ""
-#: part/templates/part/part_base.html:121
+#: part/templates/part/part_base.html:128
msgid "Duplicate part"
msgstr ""
-#: part/templates/part/part_base.html:124
+#: part/templates/part/part_base.html:131
msgid "Edit part"
msgstr ""
-#: part/templates/part/part_base.html:127
+#: part/templates/part/part_base.html:134
msgid "Delete part"
msgstr ""
-#: part/templates/part/part_base.html:139
+#: part/templates/part/part_base.html:146
#, python-format
msgid "This part is a variant of %(link)s"
msgstr ""
-#: part/templates/part/part_base.html:154
-#: templates/js/translated/table_filters.js:153
+#: part/templates/part/part_base.html:161
+#: templates/js/translated/table_filters.js:166
msgid "In Stock"
msgstr ""
-#: part/templates/part/part_base.html:167 templates/InvenTree/index.html:186
+#: part/templates/part/part_base.html:174 templates/InvenTree/index.html:186
msgid "Required for Build Orders"
msgstr ""
-#: part/templates/part/part_base.html:174
+#: part/templates/part/part_base.html:181
msgid "Required for Sales Orders"
msgstr ""
-#: part/templates/part/part_base.html:181
+#: part/templates/part/part_base.html:188
msgid "Allocated to Orders"
msgstr ""
-#: part/templates/part/part_base.html:196 templates/js/translated/bom.js:336
+#: part/templates/part/part_base.html:203 templates/js/translated/bom.js:352
msgid "Can Build"
msgstr ""
-#: part/templates/part/part_base.html:202 templates/js/translated/part.js:633
-#: templates/js/translated/part.js:806
+#: part/templates/part/part_base.html:209 templates/js/translated/part.js:765
+#: templates/js/translated/part.js:953
msgid "Building"
msgstr ""
-#: part/templates/part/part_base.html:275
+#: part/templates/part/part_base.html:223
+#: part/templates/part/part_base.html:524
+#: part/templates/part/part_base.html:550
+msgid "Show Part Details"
+msgstr ""
+
+#: part/templates/part/part_base.html:283
msgid "Latest Serial Number"
msgstr ""
-#: part/templates/part/part_base.html:383 part/templates/part/prices.html:125
+#: part/templates/part/part_base.html:396 part/templates/part/prices.html:144
msgid "Calculate"
msgstr ""
-#: part/templates/part/part_base.html:426
+#: part/templates/part/part_base.html:439
msgid "No matching images found"
msgstr ""
-#: part/templates/part/part_base.html:506
-#: part/templates/part/part_base.html:531
+#: part/templates/part/part_base.html:519
+#: part/templates/part/part_base.html:544
msgid "Hide Part Details"
msgstr ""
-#: part/templates/part/part_base.html:511
-#: part/templates/part/part_base.html:537
-msgid "Show Part Details"
-msgstr ""
-
#: part/templates/part/part_pricing.html:22 part/templates/part/prices.html:21
msgid "Supplier Pricing"
msgstr ""
#: part/templates/part/part_pricing.html:26
#: part/templates/part/part_pricing.html:52
-#: part/templates/part/part_pricing.html:85
-#: part/templates/part/part_pricing.html:100 part/templates/part/prices.html:25
-#: part/templates/part/prices.html:52 part/templates/part/prices.html:84
-#: part/templates/part/prices.html:101
+#: part/templates/part/part_pricing.html:100
+#: part/templates/part/part_pricing.html:115 part/templates/part/prices.html:25
+#: part/templates/part/prices.html:52 part/templates/part/prices.html:103
+#: part/templates/part/prices.html:120
msgid "Unit Cost"
msgstr ""
#: part/templates/part/part_pricing.html:32
#: part/templates/part/part_pricing.html:58
-#: part/templates/part/part_pricing.html:89
-#: part/templates/part/part_pricing.html:104 part/templates/part/prices.html:32
-#: part/templates/part/prices.html:59 part/templates/part/prices.html:89
-#: part/templates/part/prices.html:106
+#: part/templates/part/part_pricing.html:104
+#: part/templates/part/part_pricing.html:119 part/templates/part/prices.html:32
+#: part/templates/part/prices.html:59 part/templates/part/prices.html:108
+#: part/templates/part/prices.html:125
msgid "Total Cost"
msgstr ""
#: part/templates/part/part_pricing.html:40 part/templates/part/prices.html:40
-#: templates/js/translated/bom.js:291
+#: templates/js/translated/bom.js:307
msgid "No supplier pricing available"
msgstr ""
#: part/templates/part/part_pricing.html:48 part/templates/part/prices.html:49
-#: part/templates/part/prices.html:225
+#: part/templates/part/prices.html:243
msgid "BOM Pricing"
msgstr ""
-#: part/templates/part/part_pricing.html:66 part/templates/part/prices.html:67
+#: part/templates/part/part_pricing.html:65 part/templates/part/prices.html:69
+msgid "Unit Purchase Price"
+msgstr ""
+
+#: part/templates/part/part_pricing.html:71 part/templates/part/prices.html:76
+msgid "Total Purchase Price"
+msgstr ""
+
+#: part/templates/part/part_pricing.html:81 part/templates/part/prices.html:86
msgid "Note: BOM pricing is incomplete for this part"
msgstr ""
-#: part/templates/part/part_pricing.html:73 part/templates/part/prices.html:74
+#: part/templates/part/part_pricing.html:88 part/templates/part/prices.html:93
msgid "No BOM pricing available"
msgstr ""
-#: part/templates/part/part_pricing.html:82 part/templates/part/prices.html:83
+#: part/templates/part/part_pricing.html:97 part/templates/part/prices.html:102
msgid "Internal Price"
msgstr ""
-#: part/templates/part/part_pricing.html:113
-#: part/templates/part/prices.html:115
+#: part/templates/part/part_pricing.html:128
+#: part/templates/part/prices.html:134
msgid "No pricing information is available for this part."
msgstr ""
@@ -4919,7 +5053,7 @@ msgstr ""
#: part/templates/part/partial_delete.html:7
#, python-format
-msgid "Are you sure you want to delete part '%(full_name)s'?"
+msgid "Are you sure you want to delete part '%(full_name)s'?"
msgstr ""
#: part/templates/part/partial_delete.html:12
@@ -4963,53 +5097,53 @@ msgstr ""
msgid "Show BOM cost"
msgstr ""
-#: part/templates/part/prices.html:98
+#: part/templates/part/prices.html:117
msgid "Show sale cost"
msgstr ""
-#: part/templates/part/prices.html:99
+#: part/templates/part/prices.html:118
msgid "Show sale price"
msgstr ""
-#: part/templates/part/prices.html:121
+#: part/templates/part/prices.html:140
msgid "Calculation parameters"
msgstr ""
-#: part/templates/part/prices.html:136 templates/js/translated/bom.js:285
+#: part/templates/part/prices.html:155 templates/js/translated/bom.js:301
msgid "Supplier Cost"
msgstr ""
-#: part/templates/part/prices.html:137 part/templates/part/prices.html:158
-#: part/templates/part/prices.html:183 part/templates/part/prices.html:213
-#: part/templates/part/prices.html:239 part/templates/part/prices.html:267
+#: part/templates/part/prices.html:156 part/templates/part/prices.html:177
+#: part/templates/part/prices.html:201 part/templates/part/prices.html:231
+#: part/templates/part/prices.html:257 part/templates/part/prices.html:285
msgid "Jump to overview"
msgstr ""
-#: part/templates/part/prices.html:162
+#: part/templates/part/prices.html:181
msgid "Stock Pricing"
msgstr ""
-#: part/templates/part/prices.html:172
+#: part/templates/part/prices.html:190
msgid "No stock pricing history is available for this part."
msgstr ""
-#: part/templates/part/prices.html:182
+#: part/templates/part/prices.html:200
msgid "Internal Cost"
msgstr ""
-#: part/templates/part/prices.html:197 part/views.py:1793
+#: part/templates/part/prices.html:215 part/views.py:1801
msgid "Add Internal Price Break"
msgstr ""
-#: part/templates/part/prices.html:212
+#: part/templates/part/prices.html:230
msgid "BOM Cost"
msgstr ""
-#: part/templates/part/prices.html:238
+#: part/templates/part/prices.html:256
msgid "Sale Cost"
msgstr ""
-#: part/templates/part/prices.html:278
+#: part/templates/part/prices.html:296
msgid "No sale pice history available for this part."
msgstr ""
@@ -5017,8 +5151,8 @@ msgstr ""
msgid "Set category for the following parts"
msgstr ""
-#: part/templates/part/stock_count.html:7 templates/js/translated/bom.js:259
-#: templates/js/translated/part.js:623 templates/js/translated/part.js:810
+#: part/templates/part/stock_count.html:7 templates/js/translated/bom.js:278
+#: templates/js/translated/part.js:755 templates/js/translated/part.js:957
msgid "No Stock"
msgstr ""
@@ -5032,10 +5166,10 @@ msgstr ""
#: part/templates/part/variant_part.html:10
#, python-format
-msgid "Create a new variant of template '%(full_name)s'."
+msgid "Create a new variant of template '%(full_name)s'."
msgstr ""
-#: part/templatetags/inventree_extras.py:105
+#: part/templatetags/inventree_extras.py:106
msgid "Unknown database"
msgstr ""
@@ -5116,51 +5250,51 @@ msgstr ""
msgid "Part Pricing"
msgstr ""
-#: part/views.py:1429
+#: part/views.py:1437
msgid "Create Part Parameter Template"
msgstr ""
-#: part/views.py:1439
+#: part/views.py:1447
msgid "Edit Part Parameter Template"
msgstr ""
-#: part/views.py:1446
+#: part/views.py:1454
msgid "Delete Part Parameter Template"
msgstr ""
-#: part/views.py:1494 templates/js/translated/part.js:179
+#: part/views.py:1502 templates/js/translated/part.js:303
msgid "Edit Part Category"
msgstr ""
-#: part/views.py:1532
+#: part/views.py:1540
msgid "Delete Part Category"
msgstr ""
-#: part/views.py:1538
+#: part/views.py:1546
msgid "Part category was deleted"
msgstr ""
-#: part/views.py:1547
+#: part/views.py:1555
msgid "Create Category Parameter Template"
msgstr ""
-#: part/views.py:1648
+#: part/views.py:1656
msgid "Edit Category Parameter Template"
msgstr ""
-#: part/views.py:1704
+#: part/views.py:1712
msgid "Delete Category Parameter Template"
msgstr ""
-#: part/views.py:1726
+#: part/views.py:1734
msgid "Added new price break"
msgstr ""
-#: part/views.py:1802
+#: part/views.py:1810
msgid "Edit Internal Price Break"
msgstr ""
-#: part/views.py:1810
+#: part/views.py:1818
msgid "Delete Internal Price Break"
msgstr ""
@@ -5266,17 +5400,17 @@ msgid "Test Results"
msgstr ""
#: report/templates/report/inventree_test_report_base.html:88
-#: stock/models.py:1796
+#: stock/models.py:1807
msgid "Test"
msgstr ""
#: report/templates/report/inventree_test_report_base.html:89
-#: stock/models.py:1802
+#: stock/models.py:1813
msgid "Result"
msgstr ""
#: report/templates/report/inventree_test_report_base.html:92
-#: templates/js/translated/order.js:279 templates/js/translated/stock.js:1382
+#: templates/js/translated/order.js:353 templates/js/translated/stock.js:1523
msgid "Date"
msgstr ""
@@ -5288,51 +5422,51 @@ msgstr ""
msgid "Fail"
msgstr ""
-#: stock/api.py:145
+#: stock/api.py:146
msgid "Request must contain list of stock items"
msgstr ""
-#: stock/api.py:153
+#: stock/api.py:154
msgid "Improperly formatted data"
msgstr ""
-#: stock/api.py:161
+#: stock/api.py:162
msgid "Each entry must contain a valid integer primary-key"
msgstr ""
-#: stock/api.py:167
+#: stock/api.py:168
msgid "Primary key does not match valid stock item"
msgstr ""
-#: stock/api.py:177
+#: stock/api.py:178
msgid "Invalid quantity value"
msgstr ""
-#: stock/api.py:182
+#: stock/api.py:183
msgid "Quantity must not be less than zero"
msgstr ""
-#: stock/api.py:210
+#: stock/api.py:211
#, python-brace-format
msgid "Updated stock for {n} items"
msgstr ""
-#: stock/api.py:246 stock/api.py:279
+#: stock/api.py:247 stock/api.py:280
msgid "Specified quantity exceeds stock quantity"
msgstr ""
-#: stock/api.py:269
+#: stock/api.py:270
msgid "Valid location must be specified"
msgstr ""
-#: stock/api.py:289
+#: stock/api.py:290
#, python-brace-format
msgid "Moved {n} parts to {loc}"
msgstr ""
-#: stock/forms.py:79 stock/forms.py:307 stock/models.py:550
+#: stock/forms.py:79 stock/forms.py:307 stock/models.py:556
#: stock/templates/stock/item_base.html:395
-#: templates/js/translated/stock.js:1025
+#: templates/js/translated/stock.js:967
msgid "Expiry Date"
msgstr ""
@@ -5384,258 +5518,266 @@ msgstr ""
msgid "Confirm removal of installed stock items"
msgstr ""
-#: stock/models.py:57 stock/models.py:587
+#: stock/models.py:57 stock/models.py:593
msgid "Owner"
msgstr ""
-#: stock/models.py:58 stock/models.py:588
+#: stock/models.py:58 stock/models.py:594
msgid "Select Owner"
msgstr ""
-#: stock/models.py:316
+#: stock/models.py:322
msgid "StockItem with this serial number already exists"
msgstr ""
-#: stock/models.py:352
+#: stock/models.py:358
#, python-brace-format
msgid "Part type ('{pf}') must be {pe}"
msgstr ""
-#: stock/models.py:362 stock/models.py:371
+#: stock/models.py:368 stock/models.py:377
msgid "Quantity must be 1 for item with a serial number"
msgstr ""
-#: stock/models.py:363
+#: stock/models.py:369
msgid "Serial number cannot be set if quantity greater than 1"
msgstr ""
-#: stock/models.py:385
+#: stock/models.py:391
msgid "Item cannot belong to itself"
msgstr ""
-#: stock/models.py:391
+#: stock/models.py:397
msgid "Item must have a build reference if is_building=True"
msgstr ""
-#: stock/models.py:398
+#: stock/models.py:404
msgid "Build reference does not point to the same part object"
msgstr ""
-#: stock/models.py:440
+#: stock/models.py:446
msgid "Parent Stock Item"
msgstr ""
-#: stock/models.py:449
+#: stock/models.py:455
msgid "Base part"
msgstr ""
-#: stock/models.py:458
+#: stock/models.py:464
msgid "Select a matching supplier part for this stock item"
msgstr ""
-#: stock/models.py:463 stock/templates/stock/stock_app_base.html:8
+#: stock/models.py:469 stock/templates/stock/stock_app_base.html:8
msgid "Stock Location"
msgstr ""
-#: stock/models.py:466
+#: stock/models.py:472
msgid "Where is this stock item located?"
msgstr ""
-#: stock/models.py:473
+#: stock/models.py:479
msgid "Packaging this stock item is stored in"
msgstr ""
-#: stock/models.py:478 stock/templates/stock/item_base.html:284
+#: stock/models.py:484 stock/templates/stock/item_base.html:284
msgid "Installed In"
msgstr ""
-#: stock/models.py:481
+#: stock/models.py:487
msgid "Is this item installed in another item?"
msgstr ""
-#: stock/models.py:497
+#: stock/models.py:503
msgid "Serial number for this item"
msgstr ""
-#: stock/models.py:509
+#: stock/models.py:515
msgid "Batch code for this stock item"
msgstr ""
-#: stock/models.py:513
+#: stock/models.py:519
msgid "Stock Quantity"
msgstr ""
-#: stock/models.py:522
+#: stock/models.py:528
msgid "Source Build"
msgstr ""
-#: stock/models.py:524
+#: stock/models.py:530
msgid "Build for this stock item"
msgstr ""
-#: stock/models.py:535
+#: stock/models.py:541
msgid "Source Purchase Order"
msgstr ""
-#: stock/models.py:538
+#: stock/models.py:544
msgid "Purchase order for this stock item"
msgstr ""
-#: stock/models.py:544
+#: stock/models.py:550
msgid "Destination Sales Order"
msgstr ""
-#: stock/models.py:551
+#: stock/models.py:557
msgid "Expiry date for stock item. Stock will be considered expired after this date"
msgstr ""
-#: stock/models.py:564
+#: stock/models.py:570
msgid "Delete on deplete"
msgstr ""
-#: stock/models.py:564
+#: stock/models.py:570
msgid "Delete this Stock Item when stock is depleted"
msgstr ""
-#: stock/models.py:574 stock/templates/stock/item.html:98
+#: stock/models.py:580 stock/templates/stock/item.html:99
#: stock/templates/stock/navbar.html:54
msgid "Stock Item Notes"
msgstr ""
-#: stock/models.py:583
+#: stock/models.py:589
msgid "Single unit purchase price at time of purchase"
msgstr ""
-#: stock/models.py:1051
-msgid "Part is not set as trackable"
+#: stock/models.py:599
+msgid "Scheduled for deletion"
msgstr ""
-#: stock/models.py:1057
-msgid "Quantity must be integer"
+#: stock/models.py:600
+msgid "This StockItem will be deleted by the background worker"
msgstr ""
#: stock/models.py:1063
+msgid "Part is not set as trackable"
+msgstr ""
+
+#: stock/models.py:1069
+msgid "Quantity must be integer"
+msgstr ""
+
+#: stock/models.py:1075
#, python-brace-format
msgid "Quantity must not exceed available stock quantity ({n})"
msgstr ""
-#: stock/models.py:1066
+#: stock/models.py:1078
msgid "Serial numbers must be a list of integers"
msgstr ""
-#: stock/models.py:1069
+#: stock/models.py:1081
msgid "Quantity does not match serial numbers"
msgstr ""
-#: stock/models.py:1076
+#: stock/models.py:1088
#, python-brace-format
msgid "Serial numbers already exist: {exists}"
msgstr ""
-#: stock/models.py:1234
+#: stock/models.py:1246
msgid "StockItem cannot be moved as it is not in stock"
msgstr ""
-#: stock/models.py:1716
+#: stock/models.py:1727
msgid "Entry notes"
msgstr ""
-#: stock/models.py:1773
+#: stock/models.py:1784
msgid "Value must be provided for this test"
msgstr ""
-#: stock/models.py:1779
+#: stock/models.py:1790
msgid "Attachment must be uploaded for this test"
msgstr ""
-#: stock/models.py:1797
+#: stock/models.py:1808
msgid "Test name"
msgstr ""
-#: stock/models.py:1803 templates/js/translated/table_filters.js:231
+#: stock/models.py:1814 templates/js/translated/table_filters.js:244
msgid "Test result"
msgstr ""
-#: stock/models.py:1809
+#: stock/models.py:1820
msgid "Test output value"
msgstr ""
-#: stock/models.py:1816
+#: stock/models.py:1827
msgid "Test result attachment"
msgstr ""
-#: stock/models.py:1822
+#: stock/models.py:1833
msgid "Test notes"
msgstr ""
-#: stock/templates/stock/item.html:16
+#: stock/templates/stock/item.html:17
msgid "Stock Tracking Information"
msgstr ""
-#: stock/templates/stock/item.html:29
+#: stock/templates/stock/item.html:30
msgid "New Entry"
msgstr ""
-#: stock/templates/stock/item.html:42
+#: stock/templates/stock/item.html:43
msgid "Child Stock Items"
msgstr ""
-#: stock/templates/stock/item.html:49
+#: stock/templates/stock/item.html:50
msgid "This stock item does not have any child items"
msgstr ""
-#: stock/templates/stock/item.html:57 stock/templates/stock/navbar.html:19
+#: stock/templates/stock/item.html:58 stock/templates/stock/navbar.html:19
#: stock/templates/stock/navbar.html:22
msgid "Test Data"
msgstr ""
-#: stock/templates/stock/item.html:65
+#: stock/templates/stock/item.html:66
msgid "Delete Test Data"
msgstr ""
-#: stock/templates/stock/item.html:69
+#: stock/templates/stock/item.html:70
msgid "Add Test Data"
msgstr ""
-#: stock/templates/stock/item.html:72 stock/templates/stock/item_base.html:95
+#: stock/templates/stock/item.html:73 stock/templates/stock/item_base.html:95
msgid "Test Report"
msgstr ""
-#: stock/templates/stock/item.html:119 stock/templates/stock/navbar.html:27
+#: stock/templates/stock/item.html:120 stock/templates/stock/navbar.html:27
msgid "Installed Stock Items"
msgstr ""
-#: stock/templates/stock/item.html:124 stock/views.py:534
+#: stock/templates/stock/item.html:125 stock/views.py:534
msgid "Install Stock Item"
msgstr ""
-#: stock/templates/stock/item.html:299 stock/templates/stock/item.html:324
+#: stock/templates/stock/item.html:301 stock/templates/stock/item.html:326
msgid "Add Test Result"
msgstr ""
-#: stock/templates/stock/item.html:344
+#: stock/templates/stock/item.html:346
msgid "Edit Test Result"
msgstr ""
-#: stock/templates/stock/item.html:358
+#: stock/templates/stock/item.html:360
msgid "Delete Test Result"
msgstr ""
#: stock/templates/stock/item_base.html:33
#: stock/templates/stock/item_base.html:399
-#: templates/js/translated/table_filters.js:212
+#: templates/js/translated/table_filters.js:225
msgid "Expired"
msgstr ""
#: stock/templates/stock/item_base.html:43
#: stock/templates/stock/item_base.html:401
-#: templates/js/translated/table_filters.js:218
+#: templates/js/translated/table_filters.js:231
msgid "Stale"
msgstr ""
#: stock/templates/stock/item_base.html:80
-#: templates/js/translated/barcode.js:309
-#: templates/js/translated/barcode.js:314
+#: templates/js/translated/barcode.js:331
+#: templates/js/translated/barcode.js:336
msgid "Unlink Barcode"
msgstr ""
@@ -5768,7 +5910,7 @@ msgid "next page"
msgstr ""
#: stock/templates/stock/item_base.html:303
-#: templates/js/translated/build.js:628
+#: templates/js/translated/build.js:651
msgid "No location set"
msgstr ""
@@ -5795,7 +5937,7 @@ msgid "This StockItem expires on %(item.expiry_date)s"
msgstr ""
#: stock/templates/stock/item_base.html:408
-#: templates/js/translated/stock.js:1032
+#: templates/js/translated/stock.js:980
msgid "Last Updated"
msgstr ""
@@ -5825,7 +5967,7 @@ msgstr ""
#: stock/templates/stock/item_delete.html:12
#, python-format
-msgid "This will remove %(qty)s units of %(full_name)s from stock."
+msgid "This will remove %(qty)s units of %(full_name)s from stock."
msgstr ""
#: stock/templates/stock/item_install.html:8
@@ -5975,7 +6117,7 @@ msgstr ""
#: stock/templates/stock/stockitem_convert.html:8
#, python-format
-msgid "This stock item is current an instance of %(part)s"
+msgid "This stock item is current an instance of %(part)s"
msgstr ""
#: stock/templates/stock/stockitem_convert.html:9
@@ -6039,7 +6181,7 @@ msgstr ""
msgid "Uninstall Stock Items"
msgstr ""
-#: stock/views.py:780 templates/js/translated/stock.js:282
+#: stock/views.py:780 templates/js/translated/stock.js:353
msgid "Confirm stock adjustment"
msgstr ""
@@ -6059,7 +6201,7 @@ msgstr ""
msgid "Serialize Stock"
msgstr ""
-#: stock/views.py:1143 templates/js/translated/build.js:365
+#: stock/views.py:1143 templates/js/translated/build.js:392
msgid "Create new Stock Item"
msgstr ""
@@ -6171,11 +6313,11 @@ msgstr ""
msgid "Enter a search query"
msgstr ""
-#: templates/InvenTree/search.html:268 templates/js/translated/stock.js:629
+#: templates/InvenTree/search.html:268 templates/js/translated/stock.js:699
msgid "Shipped to customer"
msgstr ""
-#: templates/InvenTree/search.html:271 templates/js/translated/stock.js:639
+#: templates/InvenTree/search.html:271 templates/js/translated/stock.js:709
msgid "No stock location set"
msgstr ""
@@ -6240,7 +6382,7 @@ msgstr ""
#: templates/InvenTree/settings/navbar.html:27
#: templates/InvenTree/settings/navbar.html:29
-#: templates/js/translated/tables.js:351 templates/search_form.html:6
+#: templates/js/translated/tables.js:366 templates/search_form.html:6
#: templates/search_form.html:8
msgid "Search"
msgstr ""
@@ -6257,7 +6399,7 @@ msgstr ""
#: templates/InvenTree/settings/navbar.html:46
#: templates/InvenTree/settings/navbar.html:48
-#: templates/InvenTree/settings/settings.html:8 templates/navbar.html:84
+#: templates/InvenTree/settings/settings.html:8 templates/navbar.html:94
msgid "Settings"
msgstr ""
@@ -6332,16 +6474,16 @@ msgid "No category parameter templates found"
msgstr ""
#: templates/InvenTree/settings/settings.html:174
-#: templates/InvenTree/settings/settings.html:271
+#: templates/InvenTree/settings/settings.html:273
msgid "Edit Template"
msgstr ""
#: templates/InvenTree/settings/settings.html:175
-#: templates/InvenTree/settings/settings.html:272
+#: templates/InvenTree/settings/settings.html:274
msgid "Delete Template"
msgstr ""
-#: templates/InvenTree/settings/settings.html:251
+#: templates/InvenTree/settings/settings.html:253
msgid "No part parameter templates found"
msgstr ""
@@ -6358,6 +6500,7 @@ msgid "Account Settings"
msgstr ""
#: templates/InvenTree/settings/user.html:15
+#: templates/js/translated/helpers.js:26
msgid "Edit"
msgstr ""
@@ -6436,65 +6579,69 @@ msgstr ""
msgid "InvenTree Version"
msgstr ""
-#: templates/about.html:26
+#: templates/about.html:27
+msgid "Development Version"
+msgstr ""
+
+#: templates/about.html:30
msgid "Up to Date"
msgstr ""
-#: templates/about.html:28
+#: templates/about.html:32
msgid "Update Available"
msgstr ""
-#: templates/about.html:34
-msgid "API Version"
-msgstr ""
-
-#: templates/about.html:39
-msgid "Python Version"
-msgstr ""
-
-#: templates/about.html:44
-msgid "Django Version"
-msgstr ""
-
-#: templates/about.html:51
+#: templates/about.html:42
msgid "Commit Hash"
msgstr ""
-#: templates/about.html:58
+#: templates/about.html:49
msgid "Commit Date"
msgstr ""
-#: templates/about.html:63
+#: templates/about.html:55
msgid "InvenTree Documentation"
msgstr ""
-#: templates/about.html:68
+#: templates/about.html:60
+msgid "API Version"
+msgstr ""
+
+#: templates/about.html:65
+msgid "Python Version"
+msgstr ""
+
+#: templates/about.html:70
+msgid "Django Version"
+msgstr ""
+
+#: templates/about.html:75
msgid "View Code on GitHub"
msgstr ""
-#: templates/about.html:73
+#: templates/about.html:80
msgid "Credits"
msgstr ""
-#: templates/about.html:78
+#: templates/about.html:85
msgid "Mobile App"
msgstr ""
-#: templates/about.html:83
+#: templates/about.html:90
msgid "Submit Bug Report"
msgstr ""
-#: templates/about.html:90 templates/clip.html:4
+#: templates/about.html:97 templates/clip.html:4
msgid "copy to clipboard"
msgstr ""
-#: templates/about.html:90
+#: templates/about.html:97
msgid "copy version information"
msgstr ""
-#: templates/about.html:100 templates/js/translated/modals.js:33
-#: templates/js/translated/modals.js:567 templates/js/translated/modals.js:661
-#: templates/js/translated/modals.js:957 templates/modals.html:29
+#: templates/about.html:107 templates/js/translated/modals.js:50
+#: templates/js/translated/modals.js:584 templates/js/translated/modals.js:678
+#: templates/js/translated/modals.js:971 templates/modals.html:29
#: templates/modals.html:54
msgid "Close"
msgstr ""
@@ -6515,1358 +6662,1390 @@ msgstr ""
msgid "Remote image must not exceed maximum allowable file size"
msgstr ""
-#: templates/js/report.js:47 templates/js/translated/report.js:47
+#: templates/js/report.js:47 templates/js/translated/report.js:67
msgid "items selected"
msgstr ""
-#: templates/js/report.js:55 templates/js/translated/report.js:55
+#: templates/js/report.js:55 templates/js/translated/report.js:75
msgid "Select Report Template"
msgstr ""
-#: templates/js/report.js:70 templates/js/translated/report.js:70
+#: templates/js/report.js:70 templates/js/translated/report.js:90
msgid "Select Test Report Template"
msgstr ""
-#: templates/js/report.js:98 templates/js/translated/label.js:10
-#: templates/js/translated/report.js:98 templates/js/translated/stock.js:244
+#: templates/js/report.js:98 templates/js/translated/label.js:29
+#: templates/js/translated/report.js:118 templates/js/translated/stock.js:313
msgid "Select Stock Items"
msgstr ""
-#: templates/js/report.js:99 templates/js/translated/report.js:99
+#: templates/js/report.js:99 templates/js/translated/report.js:119
msgid "Stock item(s) must be selected before printing reports"
msgstr ""
#: templates/js/report.js:116 templates/js/report.js:169
#: templates/js/report.js:223 templates/js/report.js:277
-#: templates/js/report.js:331 templates/js/translated/report.js:116
-#: templates/js/translated/report.js:169 templates/js/translated/report.js:223
-#: templates/js/translated/report.js:277 templates/js/translated/report.js:331
+#: templates/js/report.js:331 templates/js/translated/report.js:136
+#: templates/js/translated/report.js:189 templates/js/translated/report.js:243
+#: templates/js/translated/report.js:297 templates/js/translated/report.js:351
msgid "No Reports Found"
msgstr ""
-#: templates/js/report.js:117 templates/js/translated/report.js:117
+#: templates/js/report.js:117 templates/js/translated/report.js:137
msgid "No report templates found which match selected stock item(s)"
msgstr ""
-#: templates/js/report.js:152 templates/js/translated/report.js:152
+#: templates/js/report.js:152 templates/js/translated/report.js:172
msgid "Select Builds"
msgstr ""
-#: templates/js/report.js:153 templates/js/translated/report.js:153
+#: templates/js/report.js:153 templates/js/translated/report.js:173
msgid "Build(s) must be selected before printing reports"
msgstr ""
-#: templates/js/report.js:170 templates/js/translated/report.js:170
+#: templates/js/report.js:170 templates/js/translated/report.js:190
msgid "No report templates found which match selected build(s)"
msgstr ""
-#: templates/js/report.js:205 templates/js/translated/label.js:115
-#: templates/js/translated/report.js:205
+#: templates/js/report.js:205 templates/js/translated/label.js:134
+#: templates/js/translated/report.js:225
msgid "Select Parts"
msgstr ""
-#: templates/js/report.js:206 templates/js/translated/report.js:206
+#: templates/js/report.js:206 templates/js/translated/report.js:226
msgid "Part(s) must be selected before printing reports"
msgstr ""
-#: templates/js/report.js:224 templates/js/translated/report.js:224
+#: templates/js/report.js:224 templates/js/translated/report.js:244
msgid "No report templates found which match selected part(s)"
msgstr ""
-#: templates/js/report.js:259 templates/js/translated/report.js:259
+#: templates/js/report.js:259 templates/js/translated/report.js:279
msgid "Select Purchase Orders"
msgstr ""
-#: templates/js/report.js:260 templates/js/translated/report.js:260
+#: templates/js/report.js:260 templates/js/translated/report.js:280
msgid "Purchase Order(s) must be selected before printing report"
msgstr ""
#: templates/js/report.js:278 templates/js/report.js:332
-#: templates/js/translated/report.js:278 templates/js/translated/report.js:332
+#: templates/js/translated/report.js:298 templates/js/translated/report.js:352
msgid "No report templates found which match selected orders"
msgstr ""
-#: templates/js/report.js:313 templates/js/translated/report.js:313
+#: templates/js/report.js:313 templates/js/translated/report.js:333
msgid "Select Sales Orders"
msgstr ""
-#: templates/js/report.js:314 templates/js/translated/report.js:314
+#: templates/js/report.js:314 templates/js/translated/report.js:334
msgid "Sales Order(s) must be selected before printing report"
msgstr ""
-#: templates/js/translated/api.js:161 templates/js/translated/modals.js:1027
+#: templates/js/translated/api.js:174 templates/js/translated/modals.js:1041
msgid "No Response"
msgstr ""
-#: templates/js/translated/api.js:162 templates/js/translated/modals.js:1028
+#: templates/js/translated/api.js:175 templates/js/translated/modals.js:1042
msgid "No response from the InvenTree server"
msgstr ""
-#: templates/js/translated/api.js:167
+#: templates/js/translated/api.js:181
msgid "Error 400: Bad request"
msgstr ""
-#: templates/js/translated/api.js:168
+#: templates/js/translated/api.js:182
msgid "API request returned error code 400"
msgstr ""
-#: templates/js/translated/api.js:171 templates/js/translated/modals.js:1037
+#: templates/js/translated/api.js:186 templates/js/translated/modals.js:1051
msgid "Error 401: Not Authenticated"
msgstr ""
-#: templates/js/translated/api.js:172 templates/js/translated/modals.js:1038
+#: templates/js/translated/api.js:187 templates/js/translated/modals.js:1052
msgid "Authentication credentials not supplied"
msgstr ""
-#: templates/js/translated/api.js:175 templates/js/translated/modals.js:1042
+#: templates/js/translated/api.js:191 templates/js/translated/modals.js:1056
msgid "Error 403: Permission Denied"
msgstr ""
-#: templates/js/translated/api.js:176 templates/js/translated/modals.js:1043
+#: templates/js/translated/api.js:192 templates/js/translated/modals.js:1057
msgid "You do not have the required permissions to access this function"
msgstr ""
-#: templates/js/translated/api.js:179 templates/js/translated/modals.js:1047
+#: templates/js/translated/api.js:196 templates/js/translated/modals.js:1061
msgid "Error 404: Resource Not Found"
msgstr ""
-#: templates/js/translated/api.js:180 templates/js/translated/modals.js:1048
+#: templates/js/translated/api.js:197 templates/js/translated/modals.js:1062
msgid "The requested resource could not be located on the server"
msgstr ""
-#: templates/js/translated/api.js:183 templates/js/translated/modals.js:1052
+#: templates/js/translated/api.js:201 templates/js/translated/modals.js:1066
msgid "Error 408: Timeout"
msgstr ""
-#: templates/js/translated/api.js:184 templates/js/translated/modals.js:1053
+#: templates/js/translated/api.js:202 templates/js/translated/modals.js:1067
msgid "Connection timeout while requesting data from server"
msgstr ""
-#: templates/js/translated/api.js:187
+#: templates/js/translated/api.js:205
msgid "Unhandled Error Code"
msgstr ""
-#: templates/js/translated/api.js:188
+#: templates/js/translated/api.js:206
msgid "Error code"
msgstr ""
-#: templates/js/translated/attachment.js:16
+#: templates/js/translated/attachment.js:27
msgid "No attachments found"
msgstr ""
-#: templates/js/translated/attachment.js:56
+#: templates/js/translated/attachment.js:91
msgid "Upload Date"
msgstr ""
-#: templates/js/translated/attachment.js:69
+#: templates/js/translated/attachment.js:104
msgid "Edit attachment"
msgstr ""
-#: templates/js/translated/attachment.js:76
+#: templates/js/translated/attachment.js:111
msgid "Delete attachment"
msgstr ""
-#: templates/js/translated/barcode.js:8
+#: templates/js/translated/barcode.js:30
msgid "Scan barcode data here using wedge scanner"
msgstr ""
-#: templates/js/translated/barcode.js:10
+#: templates/js/translated/barcode.js:32
msgid "Enter barcode data"
msgstr ""
-#: templates/js/translated/barcode.js:14
+#: templates/js/translated/barcode.js:36
msgid "Barcode"
msgstr ""
-#: templates/js/translated/barcode.js:32
+#: templates/js/translated/barcode.js:54
msgid "Enter optional notes for stock transfer"
msgstr ""
-#: templates/js/translated/barcode.js:33
+#: templates/js/translated/barcode.js:55
msgid "Enter notes"
msgstr ""
-#: templates/js/translated/barcode.js:71
+#: templates/js/translated/barcode.js:93
msgid "Server error"
msgstr ""
-#: templates/js/translated/barcode.js:92
+#: templates/js/translated/barcode.js:114
msgid "Unknown response from server"
msgstr ""
-#: templates/js/translated/barcode.js:119
-#: templates/js/translated/modals.js:1017
+#: templates/js/translated/barcode.js:141
+#: templates/js/translated/modals.js:1031
msgid "Invalid server response"
msgstr ""
-#: templates/js/translated/barcode.js:212
+#: templates/js/translated/barcode.js:234
msgid "Scan barcode data below"
msgstr ""
-#: templates/js/translated/barcode.js:270
+#: templates/js/translated/barcode.js:281 templates/navbar.html:65
+msgid "Scan Barcode"
+msgstr ""
+
+#: templates/js/translated/barcode.js:292
msgid "No URL in response"
msgstr ""
-#: templates/js/translated/barcode.js:288
+#: templates/js/translated/barcode.js:310
msgid "Link Barcode to Stock Item"
msgstr ""
-#: templates/js/translated/barcode.js:311
+#: templates/js/translated/barcode.js:333
msgid "This will remove the association between this stock item and the barcode"
msgstr ""
-#: templates/js/translated/barcode.js:317
+#: templates/js/translated/barcode.js:339
msgid "Unlink"
msgstr ""
-#: templates/js/translated/barcode.js:376 templates/js/translated/stock.js:220
+#: templates/js/translated/barcode.js:398 templates/js/translated/stock.js:289
msgid "Remove stock item"
msgstr ""
-#: templates/js/translated/barcode.js:418
+#: templates/js/translated/barcode.js:440
msgid "Check Stock Items into Location"
msgstr ""
-#: templates/js/translated/barcode.js:422
-#: templates/js/translated/barcode.js:547
+#: templates/js/translated/barcode.js:444
+#: templates/js/translated/barcode.js:571
msgid "Check In"
msgstr ""
-#: templates/js/translated/barcode.js:462
-#: templates/js/translated/barcode.js:586
+#: templates/js/translated/barcode.js:486
+#: templates/js/translated/barcode.js:610
msgid "Error transferring stock"
msgstr ""
-#: templates/js/translated/barcode.js:481
+#: templates/js/translated/barcode.js:505
msgid "Stock Item already scanned"
msgstr ""
-#: templates/js/translated/barcode.js:485
+#: templates/js/translated/barcode.js:509
msgid "Stock Item already in this location"
msgstr ""
-#: templates/js/translated/barcode.js:492
+#: templates/js/translated/barcode.js:516
msgid "Added stock item"
msgstr ""
-#: templates/js/translated/barcode.js:499
+#: templates/js/translated/barcode.js:523
msgid "Barcode does not match Stock Item"
msgstr ""
-#: templates/js/translated/barcode.js:542
+#: templates/js/translated/barcode.js:566
msgid "Check Into Location"
msgstr ""
-#: templates/js/translated/barcode.js:605
+#: templates/js/translated/barcode.js:629
msgid "Barcode does not match a valid location"
msgstr ""
-#: templates/js/translated/bom.js:195 templates/js/translated/build.js:1152
+#: templates/js/translated/bom.js:215 templates/js/translated/build.js:1169
msgid "Open subassembly"
msgstr ""
-#: templates/js/translated/bom.js:269
+#: templates/js/translated/bom.js:287
msgid "Purchase Price Range"
msgstr ""
-#: templates/js/translated/bom.js:277
+#: templates/js/translated/bom.js:294
msgid "Purchase Price Average"
msgstr ""
-#: templates/js/translated/bom.js:326 templates/js/translated/bom.js:412
+#: templates/js/translated/bom.js:342 templates/js/translated/bom.js:428
msgid "View BOM"
msgstr ""
-#: templates/js/translated/bom.js:386
+#: templates/js/translated/bom.js:402
msgid "Validate BOM Item"
msgstr ""
-#: templates/js/translated/bom.js:388
+#: templates/js/translated/bom.js:404
msgid "This line has been validated"
msgstr ""
-#: templates/js/translated/bom.js:390 templates/js/translated/bom.js:555
+#: templates/js/translated/bom.js:406 templates/js/translated/bom.js:569
msgid "Edit BOM Item"
msgstr ""
-#: templates/js/translated/bom.js:392 templates/js/translated/bom.js:539
+#: templates/js/translated/bom.js:408 templates/js/translated/bom.js:554
msgid "Delete BOM Item"
msgstr ""
-#: templates/js/translated/bom.js:483 templates/js/translated/build.js:458
-#: templates/js/translated/build.js:1250
+#: templates/js/translated/bom.js:499 templates/js/translated/build.js:483
+#: templates/js/translated/build.js:1267
msgid "No BOM items found"
msgstr ""
-#: templates/js/translated/build.js:42
+#: templates/js/translated/build.js:69
msgid "Edit Build Order"
msgstr ""
-#: templates/js/translated/build.js:68
+#: templates/js/translated/build.js:95
msgid "Create Build Order"
msgstr ""
-#: templates/js/translated/build.js:100
+#: templates/js/translated/build.js:127
msgid "Auto-allocate stock items to this output"
msgstr ""
-#: templates/js/translated/build.js:108
+#: templates/js/translated/build.js:135
msgid "Unallocate stock from build output"
msgstr ""
-#: templates/js/translated/build.js:118
+#: templates/js/translated/build.js:145
msgid "Complete build output"
msgstr ""
-#: templates/js/translated/build.js:127
+#: templates/js/translated/build.js:154
msgid "Delete build output"
msgstr ""
-#: templates/js/translated/build.js:222
+#: templates/js/translated/build.js:249
msgid "No build order allocations found"
msgstr ""
-#: templates/js/translated/build.js:260 templates/js/translated/order.js:471
+#: templates/js/translated/build.js:287 templates/js/translated/order.js:813
msgid "Location not specified"
msgstr ""
-#: templates/js/translated/build.js:364 templates/stock_table.html:20
+#: templates/js/translated/build.js:391 templates/stock_table.html:20
msgid "New Stock Item"
msgstr ""
-#: templates/js/translated/build.js:679
+#: templates/js/translated/build.js:702
msgid "Required Part"
msgstr ""
-#: templates/js/translated/build.js:700
+#: templates/js/translated/build.js:723
msgid "Quantity Per"
msgstr ""
-#: templates/js/translated/build.js:770 templates/js/translated/build.js:1214
+#: templates/js/translated/build.js:793 templates/js/translated/build.js:1231
#: templates/stock_table.html:59
msgid "Order stock"
msgstr ""
-#: templates/js/translated/build.js:823
+#: templates/js/translated/build.js:846
msgid "No builds matching query"
msgstr ""
-#: templates/js/translated/build.js:840 templates/js/translated/part.js:711
-#: templates/js/translated/part.js:956 templates/js/translated/stock.js:883
-#: templates/js/translated/stock.js:1336
+#: templates/js/translated/build.js:863 templates/js/translated/part.js:845
+#: templates/js/translated/part.js:1123 templates/js/translated/stock.js:783
+#: templates/js/translated/stock.js:1477
msgid "Select"
msgstr ""
-#: templates/js/translated/build.js:860
+#: templates/js/translated/build.js:883
msgid "Build order is overdue"
msgstr ""
-#: templates/js/translated/build.js:924 templates/js/translated/stock.js:1558
+#: templates/js/translated/build.js:944 templates/js/translated/stock.js:1696
msgid "No user information"
msgstr ""
-#: templates/js/translated/build.js:939
+#: templates/js/translated/build.js:956
msgid "No information"
msgstr ""
-#: templates/js/translated/build.js:989
+#: templates/js/translated/build.js:1007
msgid "No parts allocated for"
msgstr ""
-#: templates/js/translated/company.js:34
+#: templates/js/translated/company.js:65
msgid "Add Manufacturer"
msgstr ""
-#: templates/js/translated/company.js:47 templates/js/translated/company.js:136
+#: templates/js/translated/company.js:78 templates/js/translated/company.js:176
msgid "Add Manufacturer Part"
msgstr ""
-#: templates/js/translated/company.js:59
+#: templates/js/translated/company.js:99
msgid "Edit Manufacturer Part"
msgstr ""
-#: templates/js/translated/company.js:68
+#: templates/js/translated/company.js:108
msgid "Delete Manufacturer Part"
msgstr ""
-#: templates/js/translated/company.js:124 templates/js/translated/order.js:58
+#: templates/js/translated/company.js:164 templates/js/translated/order.js:86
msgid "Add Supplier"
msgstr ""
-#: templates/js/translated/company.js:152
+#: templates/js/translated/company.js:192
msgid "Add Supplier Part"
msgstr ""
-#: templates/js/translated/company.js:162
+#: templates/js/translated/company.js:207
msgid "Edit Supplier Part"
msgstr ""
-#: templates/js/translated/company.js:172
+#: templates/js/translated/company.js:217
msgid "Delete Supplier Part"
msgstr ""
-#: templates/js/translated/company.js:219
+#: templates/js/translated/company.js:264
msgid "Edit Company"
msgstr ""
-#: templates/js/translated/company.js:240
+#: templates/js/translated/company.js:285
msgid "Add new Company"
msgstr ""
-#: templates/js/translated/company.js:317
+#: templates/js/translated/company.js:362
msgid "Parts Supplied"
msgstr ""
-#: templates/js/translated/company.js:326
+#: templates/js/translated/company.js:371
msgid "Parts Manufactured"
msgstr ""
-#: templates/js/translated/company.js:339
+#: templates/js/translated/company.js:385
msgid "No company information found"
msgstr ""
-#: templates/js/translated/company.js:357
+#: templates/js/translated/company.js:404
msgid "The following manufacturer parts will be deleted"
msgstr ""
-#: templates/js/translated/company.js:374
+#: templates/js/translated/company.js:421
msgid "Delete Manufacturer Parts"
msgstr ""
-#: templates/js/translated/company.js:427
+#: templates/js/translated/company.js:475
msgid "No manufacturer parts found"
msgstr ""
-#: templates/js/translated/company.js:446
-#: templates/js/translated/company.js:696 templates/js/translated/part.js:288
-#: templates/js/translated/part.js:373
+#: templates/js/translated/company.js:495
+#: templates/js/translated/company.js:751 templates/js/translated/part.js:416
+#: templates/js/translated/part.js:501
msgid "Template part"
msgstr ""
-#: templates/js/translated/company.js:450
-#: templates/js/translated/company.js:700 templates/js/translated/part.js:292
-#: templates/js/translated/part.js:377
+#: templates/js/translated/company.js:499
+#: templates/js/translated/company.js:755 templates/js/translated/part.js:420
+#: templates/js/translated/part.js:505
msgid "Assembled part"
msgstr ""
-#: templates/js/translated/company.js:574 templates/js/translated/part.js:462
+#: templates/js/translated/company.js:626 templates/js/translated/part.js:593
msgid "No parameters found"
msgstr ""
-#: templates/js/translated/company.js:610 templates/js/translated/part.js:503
+#: templates/js/translated/company.js:663 templates/js/translated/part.js:635
msgid "Edit parameter"
msgstr ""
-#: templates/js/translated/company.js:611 templates/js/translated/part.js:504
+#: templates/js/translated/company.js:664 templates/js/translated/part.js:636
msgid "Delete parameter"
msgstr ""
-#: templates/js/translated/company.js:630 templates/js/translated/part.js:521
+#: templates/js/translated/company.js:683 templates/js/translated/part.js:653
msgid "Edit Parameter"
msgstr ""
-#: templates/js/translated/company.js:641 templates/js/translated/part.js:533
+#: templates/js/translated/company.js:694 templates/js/translated/part.js:665
msgid "Delete Parameter"
msgstr ""
-#: templates/js/translated/company.js:677
+#: templates/js/translated/company.js:731
msgid "No supplier parts found"
msgstr ""
-#: templates/js/translated/filters.js:167
-#: templates/js/translated/filters.js:404
+#: templates/js/translated/filters.js:178
+#: templates/js/translated/filters.js:402
msgid "true"
msgstr ""
-#: templates/js/translated/filters.js:171
-#: templates/js/translated/filters.js:405
+#: templates/js/translated/filters.js:182
+#: templates/js/translated/filters.js:403
msgid "false"
msgstr ""
-#: templates/js/translated/filters.js:193
+#: templates/js/translated/filters.js:204
msgid "Select filter"
msgstr ""
-#: templates/js/translated/filters.js:268
+#: templates/js/translated/filters.js:279
msgid "Reload data"
msgstr ""
-#: templates/js/translated/filters.js:270
+#: templates/js/translated/filters.js:281
msgid "Add new filter"
msgstr ""
-#: templates/js/translated/filters.js:273
+#: templates/js/translated/filters.js:284
msgid "Clear all filters"
msgstr ""
-#: templates/js/translated/filters.js:303
+#: templates/js/translated/filters.js:312
msgid "Create filter"
msgstr ""
-#: templates/js/translated/forms.js:289 templates/js/translated/forms.js:302
-#: templates/js/translated/forms.js:314 templates/js/translated/forms.js:326
+#: templates/js/translated/forms.js:323 templates/js/translated/forms.js:336
+#: templates/js/translated/forms.js:348 templates/js/translated/forms.js:360
msgid "Action Prohibited"
msgstr ""
-#: templates/js/translated/forms.js:290
+#: templates/js/translated/forms.js:324
msgid "Create operation not allowed"
msgstr ""
-#: templates/js/translated/forms.js:303
+#: templates/js/translated/forms.js:337
msgid "Update operation not allowed"
msgstr ""
-#: templates/js/translated/forms.js:315
+#: templates/js/translated/forms.js:349
msgid "Delete operation not allowed"
msgstr ""
-#: templates/js/translated/forms.js:327
+#: templates/js/translated/forms.js:361
msgid "View operation not allowed"
msgstr ""
-#: templates/js/translated/forms.js:865 templates/modals.html:21
+#: templates/js/translated/forms.js:889 templates/modals.html:21
#: templates/modals.html:47
msgid "Form errors exist"
msgstr ""
-#: templates/js/translated/forms.js:1258
+#: templates/js/translated/forms.js:1379
msgid "Searching"
msgstr ""
-#: templates/js/translated/forms.js:1423
+#: templates/js/translated/forms.js:1593
msgid "Clear input"
msgstr ""
-#: templates/js/translated/label.js:11
-msgid "Stock item(s) must be selected before printing labels"
+#: templates/js/translated/helpers.js:19
+msgid "YES"
msgstr ""
-#: templates/js/translated/label.js:29 templates/js/translated/label.js:79
-#: templates/js/translated/label.js:134
-msgid "No Labels Found"
+#: templates/js/translated/helpers.js:21
+msgid "NO"
msgstr ""
#: templates/js/translated/label.js:30
+msgid "Stock item(s) must be selected before printing labels"
+msgstr ""
+
+#: templates/js/translated/label.js:48 templates/js/translated/label.js:98
+#: templates/js/translated/label.js:153
+msgid "No Labels Found"
+msgstr ""
+
+#: templates/js/translated/label.js:49
msgid "No labels found which match selected stock item(s)"
msgstr ""
-#: templates/js/translated/label.js:61
+#: templates/js/translated/label.js:80
msgid "Select Stock Locations"
msgstr ""
-#: templates/js/translated/label.js:62
+#: templates/js/translated/label.js:81
msgid "Stock location(s) must be selected before printing labels"
msgstr ""
-#: templates/js/translated/label.js:80
+#: templates/js/translated/label.js:99
msgid "No labels found which match selected stock location(s)"
msgstr ""
-#: templates/js/translated/label.js:116
+#: templates/js/translated/label.js:135
msgid "Part(s) must be selected before printing labels"
msgstr ""
-#: templates/js/translated/label.js:135
+#: templates/js/translated/label.js:154
msgid "No labels found which match the selected part(s)"
msgstr ""
-#: templates/js/translated/label.js:209
+#: templates/js/translated/label.js:228
msgid "stock items selected"
msgstr ""
-#: templates/js/translated/label.js:217
+#: templates/js/translated/label.js:236
msgid "Select Label"
msgstr ""
-#: templates/js/translated/label.js:232
+#: templates/js/translated/label.js:251
msgid "Select Label Template"
msgstr ""
-#: templates/js/translated/modals.js:59 templates/js/translated/modals.js:103
-#: templates/js/translated/modals.js:593
+#: templates/js/translated/modals.js:76 templates/js/translated/modals.js:120
+#: templates/js/translated/modals.js:610
msgid "Cancel"
msgstr ""
-#: templates/js/translated/modals.js:60 templates/js/translated/modals.js:102
-#: templates/js/translated/modals.js:660 templates/js/translated/modals.js:956
+#: templates/js/translated/modals.js:77 templates/js/translated/modals.js:119
+#: templates/js/translated/modals.js:677 templates/js/translated/modals.js:970
#: templates/modals.html:30 templates/modals.html:55
msgid "Submit"
msgstr ""
-#: templates/js/translated/modals.js:101
+#: templates/js/translated/modals.js:118
msgid "Form Title"
msgstr ""
-#: templates/js/translated/modals.js:380
+#: templates/js/translated/modals.js:397
msgid "Waiting for server..."
msgstr ""
-#: templates/js/translated/modals.js:539
+#: templates/js/translated/modals.js:556
msgid "Show Error Information"
msgstr ""
-#: templates/js/translated/modals.js:592
+#: templates/js/translated/modals.js:609
msgid "Accept"
msgstr ""
-#: templates/js/translated/modals.js:649
+#: templates/js/translated/modals.js:666
msgid "Loading Data"
msgstr ""
-#: templates/js/translated/modals.js:907
+#: templates/js/translated/modals.js:922
msgid "Invalid response from server"
msgstr ""
-#: templates/js/translated/modals.js:907
+#: templates/js/translated/modals.js:922
msgid "Form data missing from server response"
msgstr ""
-#: templates/js/translated/modals.js:920
+#: templates/js/translated/modals.js:934
msgid "Error posting form data"
msgstr ""
-#: templates/js/translated/modals.js:1017
+#: templates/js/translated/modals.js:1031
msgid "JSON response missing form data"
msgstr ""
-#: templates/js/translated/modals.js:1032
+#: templates/js/translated/modals.js:1046
msgid "Error 400: Bad Request"
msgstr ""
-#: templates/js/translated/modals.js:1033
+#: templates/js/translated/modals.js:1047
msgid "Server returned error code 400"
msgstr ""
-#: templates/js/translated/modals.js:1056
+#: templates/js/translated/modals.js:1070
msgid "Error requesting form data"
msgstr ""
-#: templates/js/translated/model_renderers.js:38
+#: templates/js/translated/model_renderers.js:40
msgid "Company ID"
msgstr ""
-#: templates/js/translated/model_renderers.js:78
+#: templates/js/translated/model_renderers.js:82
msgid "Location ID"
msgstr ""
-#: templates/js/translated/model_renderers.js:95
+#: templates/js/translated/model_renderers.js:99
msgid "Build ID"
msgstr ""
-#: templates/js/translated/model_renderers.js:114
+#: templates/js/translated/model_renderers.js:119
msgid "Part ID"
msgstr ""
-#: templates/js/translated/model_renderers.js:163
+#: templates/js/translated/model_renderers.js:171
msgid "Category ID"
msgstr ""
-#: templates/js/translated/model_renderers.js:199
+#: templates/js/translated/model_renderers.js:208
msgid "Manufacturer Part ID"
msgstr ""
-#: templates/js/translated/model_renderers.js:227
+#: templates/js/translated/model_renderers.js:237
msgid "Supplier Part ID"
msgstr ""
-#: templates/js/translated/order.js:17
+#: templates/js/translated/order.js:45
msgid "Add Customer"
msgstr ""
-#: templates/js/translated/order.js:42
+#: templates/js/translated/order.js:70
msgid "Create Sales Order"
msgstr ""
-#: templates/js/translated/order.js:222
+#: templates/js/translated/order.js:295
msgid "No purchase orders found"
msgstr ""
-#: templates/js/translated/order.js:246 templates/js/translated/order.js:341
+#: templates/js/translated/order.js:320 templates/js/translated/order.js:682
msgid "Order is overdue"
msgstr ""
-#: templates/js/translated/order.js:318
+#: templates/js/translated/order.js:452
+msgid "No line items found"
+msgstr ""
+
+#: templates/js/translated/order.js:617
+msgid "Delete line item"
+msgstr ""
+
+#: templates/js/translated/order.js:621
+msgid "Receive line item"
+msgstr ""
+
+#: templates/js/translated/order.js:658
msgid "No sales orders found"
msgstr ""
-#: templates/js/translated/order.js:355
+#: templates/js/translated/order.js:696
msgid "Invalid Customer"
msgstr ""
-#: templates/js/translated/order.js:432
+#: templates/js/translated/order.js:774
msgid "No sales order allocations found"
msgstr ""
-#: templates/js/translated/part.js:10
-msgid "YES"
-msgstr ""
-
-#: templates/js/translated/part.js:12
-msgid "NO"
-msgstr ""
-
-#: templates/js/translated/part.js:22
-msgid "Add Part Category"
-msgstr ""
-
-#: templates/js/translated/part.js:53
+#: templates/js/translated/part.js:49
msgid "Part Attributes"
msgstr ""
-#: templates/js/translated/part.js:96
+#: templates/js/translated/part.js:53
msgid "Part Creation Options"
msgstr ""
-#: templates/js/translated/part.js:102
-msgid "Initial Stock Quantity"
-msgstr ""
-
-#: templates/js/translated/part.js:103
-msgid "Initialize part stock with specified quantity"
-msgstr ""
-
-#: templates/js/translated/part.js:109
-msgid "Copy Category Parameters"
-msgstr ""
-
-#: templates/js/translated/part.js:110
-msgid "Copy parameter templates from selected part category"
-msgstr ""
-
-#: templates/js/translated/part.js:120
+#: templates/js/translated/part.js:57
msgid "Part Duplication Options"
msgstr ""
-#: templates/js/translated/part.js:131
-msgid "Copy Image"
+#: templates/js/translated/part.js:61
+msgid "Supplier Options"
msgstr ""
-#: templates/js/translated/part.js:132
-msgid "Copy image from original part"
+#: templates/js/translated/part.js:75
+msgid "Add Part Category"
msgstr ""
-#: templates/js/translated/part.js:138
-msgid "Copy BOM"
+#: templates/js/translated/part.js:159
+msgid "Create Initial Stock"
msgstr ""
-#: templates/js/translated/part.js:139
-msgid "Copy bill of materials from original part"
+#: templates/js/translated/part.js:160
+msgid "Create an initial stock item for this part"
msgstr ""
-#: templates/js/translated/part.js:145
-msgid "Copy Parameters"
+#: templates/js/translated/part.js:167
+msgid "Initial Stock Quantity"
msgstr ""
-#: templates/js/translated/part.js:146
-msgid "Copy parameter data from original part"
+#: templates/js/translated/part.js:168
+msgid "Specify initial stock quantity for this part"
msgstr ""
-#: templates/js/translated/part.js:158
-msgid "Parent part category"
+#: templates/js/translated/part.js:175 templates/js/translated/stock.js:330
+msgid "Select destination stock location"
+msgstr ""
+
+#: templates/js/translated/part.js:186
+msgid "Copy Category Parameters"
+msgstr ""
+
+#: templates/js/translated/part.js:187
+msgid "Copy parameter templates from selected part category"
+msgstr ""
+
+#: templates/js/translated/part.js:195
+msgid "Add Supplier Data"
msgstr ""
#: templates/js/translated/part.js:196
+msgid "Create initial supplier data for this part"
+msgstr ""
+
+#: templates/js/translated/part.js:252
+msgid "Copy Image"
+msgstr ""
+
+#: templates/js/translated/part.js:253
+msgid "Copy image from original part"
+msgstr ""
+
+#: templates/js/translated/part.js:260
+msgid "Copy BOM"
+msgstr ""
+
+#: templates/js/translated/part.js:261
+msgid "Copy bill of materials from original part"
+msgstr ""
+
+#: templates/js/translated/part.js:268
+msgid "Copy Parameters"
+msgstr ""
+
+#: templates/js/translated/part.js:269
+msgid "Copy parameter data from original part"
+msgstr ""
+
+#: templates/js/translated/part.js:282
+msgid "Parent part category"
+msgstr ""
+
+#: templates/js/translated/part.js:323
msgid "Edit Part"
msgstr ""
-#: templates/js/translated/part.js:280 templates/js/translated/part.js:365
+#: templates/js/translated/part.js:408 templates/js/translated/part.js:493
msgid "Trackable part"
msgstr ""
-#: templates/js/translated/part.js:284 templates/js/translated/part.js:369
+#: templates/js/translated/part.js:412 templates/js/translated/part.js:497
msgid "Virtual part"
msgstr ""
-#: templates/js/translated/part.js:296
+#: templates/js/translated/part.js:424
msgid "Starred part"
msgstr ""
-#: templates/js/translated/part.js:300
+#: templates/js/translated/part.js:428
msgid "Salable part"
msgstr ""
-#: templates/js/translated/part.js:414
+#: templates/js/translated/part.js:543
msgid "No variants found"
msgstr ""
-#: templates/js/translated/part.js:601 templates/js/translated/part.js:840
+#: templates/js/translated/part.js:732 templates/js/translated/part.js:994
msgid "No parts found"
msgstr ""
-#: templates/js/translated/part.js:779
+#: templates/js/translated/part.js:921
msgid "No category"
msgstr ""
-#: templates/js/translated/part.js:797
-#: templates/js/translated/table_filters.js:337
+#: templates/js/translated/part.js:944
+#: templates/js/translated/table_filters.js:350
msgid "Low stock"
msgstr ""
-#: templates/js/translated/part.js:981 templates/js/translated/stock.js:1360
+#: templates/js/translated/part.js:1148 templates/js/translated/stock.js:1501
msgid "Path"
msgstr ""
-#: templates/js/translated/part.js:1024
+#: templates/js/translated/part.js:1191
msgid "No test templates matching query"
msgstr ""
-#: templates/js/translated/part.js:1075 templates/js/translated/stock.js:443
+#: templates/js/translated/part.js:1242 templates/js/translated/stock.js:514
msgid "Edit test result"
msgstr ""
-#: templates/js/translated/part.js:1076 templates/js/translated/stock.js:444
+#: templates/js/translated/part.js:1243 templates/js/translated/stock.js:515
msgid "Delete test result"
msgstr ""
-#: templates/js/translated/part.js:1082
+#: templates/js/translated/part.js:1249
msgid "This test is defined for a parent part"
msgstr ""
-#: templates/js/translated/part.js:1107
+#: templates/js/translated/part.js:1274
#, python-brace-format
msgid "No ${human_name} information found"
msgstr ""
-#: templates/js/translated/part.js:1160
+#: templates/js/translated/part.js:1329
#, python-brace-format
msgid "Edit ${human_name}"
msgstr ""
-#: templates/js/translated/part.js:1161
+#: templates/js/translated/part.js:1330
#, python-brace-format
msgid "Delete ${human_name}"
msgstr ""
-#: templates/js/translated/part.js:1261
+#: templates/js/translated/part.js:1431
msgid "Single Price"
msgstr ""
-#: templates/js/translated/part.js:1280
+#: templates/js/translated/part.js:1450
msgid "Single Price Difference"
msgstr ""
-#: templates/js/translated/stock.js:9
+#: templates/js/translated/stock.js:66
msgid "Parent stock location"
msgstr ""
-#: templates/js/translated/stock.js:39
+#: templates/js/translated/stock.js:96
msgid "Export Stock"
msgstr ""
-#: templates/js/translated/stock.js:42
+#: templates/js/translated/stock.js:99
msgid "Format"
msgstr ""
-#: templates/js/translated/stock.js:43
+#: templates/js/translated/stock.js:100
msgid "Select file format"
msgstr ""
-#: templates/js/translated/stock.js:55
+#: templates/js/translated/stock.js:124
msgid "Include Sublocations"
msgstr ""
-#: templates/js/translated/stock.js:56
+#: templates/js/translated/stock.js:125
msgid "Include stock items in sublocations"
msgstr ""
-#: templates/js/translated/stock.js:98
+#: templates/js/translated/stock.js:167
msgid "Transfer Stock"
msgstr ""
-#: templates/js/translated/stock.js:99
+#: templates/js/translated/stock.js:168
msgid "Move"
msgstr ""
-#: templates/js/translated/stock.js:105
+#: templates/js/translated/stock.js:174
msgid "Count Stock"
msgstr ""
-#: templates/js/translated/stock.js:106
+#: templates/js/translated/stock.js:175
msgid "Count"
msgstr ""
-#: templates/js/translated/stock.js:110
+#: templates/js/translated/stock.js:179
msgid "Remove Stock"
msgstr ""
-#: templates/js/translated/stock.js:111
+#: templates/js/translated/stock.js:180
msgid "Take"
msgstr ""
-#: templates/js/translated/stock.js:115
+#: templates/js/translated/stock.js:184
msgid "Add Stock"
msgstr ""
-#: templates/js/translated/stock.js:116 users/models.py:190
+#: templates/js/translated/stock.js:185 users/models.py:190
msgid "Add"
msgstr ""
-#: templates/js/translated/stock.js:120 templates/stock_table.html:63
+#: templates/js/translated/stock.js:189 templates/stock_table.html:63
msgid "Delete Stock"
msgstr ""
-#: templates/js/translated/stock.js:209
+#: templates/js/translated/stock.js:278
msgid "Quantity cannot be adjusted for serialized stock"
msgstr ""
-#: templates/js/translated/stock.js:209
+#: templates/js/translated/stock.js:278
msgid "Specify stock quantity"
msgstr ""
-#: templates/js/translated/stock.js:245
+#: templates/js/translated/stock.js:314
msgid "You must select at least one available stock item"
msgstr ""
-#: templates/js/translated/stock.js:261
-msgid "Select destination stock location"
-msgstr ""
-
-#: templates/js/translated/stock.js:269
+#: templates/js/translated/stock.js:339
msgid "Stock transaction notes"
msgstr ""
-#: templates/js/translated/stock.js:406
+#: templates/js/translated/stock.js:477
msgid "PASS"
msgstr ""
-#: templates/js/translated/stock.js:408
+#: templates/js/translated/stock.js:479
msgid "FAIL"
msgstr ""
-#: templates/js/translated/stock.js:413
+#: templates/js/translated/stock.js:484
msgid "NO RESULT"
msgstr ""
-#: templates/js/translated/stock.js:439
+#: templates/js/translated/stock.js:510
msgid "Add test result"
msgstr ""
-#: templates/js/translated/stock.js:465
+#: templates/js/translated/stock.js:536
msgid "No test results found"
msgstr ""
-#: templates/js/translated/stock.js:513
+#: templates/js/translated/stock.js:584
msgid "Test Date"
msgstr ""
-#: templates/js/translated/stock.js:621
+#: templates/js/translated/stock.js:691
msgid "In production"
msgstr ""
-#: templates/js/translated/stock.js:625
+#: templates/js/translated/stock.js:695
msgid "Installed in Stock Item"
msgstr ""
-#: templates/js/translated/stock.js:633
+#: templates/js/translated/stock.js:703
msgid "Assigned to Sales Order"
msgstr ""
-#: templates/js/translated/stock.js:709
-msgid "No stock items matching query"
-msgstr ""
-
-#: templates/js/translated/stock.js:729
-msgid "items"
-msgstr ""
-
-#: templates/js/translated/stock.js:821
-msgid "batches"
-msgstr ""
-
-#: templates/js/translated/stock.js:848
-msgid "locations"
-msgstr ""
-
-#: templates/js/translated/stock.js:850
-msgid "Undefined location"
-msgstr ""
-
-#: templates/js/translated/stock.js:951
+#: templates/js/translated/stock.js:865
msgid "Stock item is in production"
msgstr ""
-#: templates/js/translated/stock.js:956
+#: templates/js/translated/stock.js:870
msgid "Stock item assigned to sales order"
msgstr ""
-#: templates/js/translated/stock.js:959
+#: templates/js/translated/stock.js:873
msgid "Stock item assigned to customer"
msgstr ""
-#: templates/js/translated/stock.js:963
+#: templates/js/translated/stock.js:877
msgid "Stock item has expired"
msgstr ""
-#: templates/js/translated/stock.js:965
+#: templates/js/translated/stock.js:879
msgid "Stock item will expire soon"
msgstr ""
-#: templates/js/translated/stock.js:969
+#: templates/js/translated/stock.js:883
msgid "Stock item has been allocated"
msgstr ""
-#: templates/js/translated/stock.js:973
+#: templates/js/translated/stock.js:887
msgid "Stock item has been installed in another item"
msgstr ""
-#: templates/js/translated/stock.js:980
+#: templates/js/translated/stock.js:894
msgid "Stock item has been rejected"
msgstr ""
-#: templates/js/translated/stock.js:984
+#: templates/js/translated/stock.js:896
msgid "Stock item is lost"
msgstr ""
-#: templates/js/translated/stock.js:987
+#: templates/js/translated/stock.js:898
msgid "Stock item is destroyed"
msgstr ""
-#: templates/js/translated/stock.js:991
-#: templates/js/translated/table_filters.js:148
+#: templates/js/translated/stock.js:902
+#: templates/js/translated/table_filters.js:161
msgid "Depleted"
msgstr ""
-#: templates/js/translated/stock.js:1020
+#: templates/js/translated/stock.js:956
msgid "Stocktake"
msgstr ""
-#: templates/js/translated/stock.js:1073
+#: templates/js/translated/stock.js:1029
msgid "Supplier part not specified"
msgstr ""
-#: templates/js/translated/stock.js:1223
+#: templates/js/translated/stock.js:1067
+msgid "No stock items matching query"
+msgstr ""
+
+#: templates/js/translated/stock.js:1088 templates/js/translated/stock.js:1136
+msgid "items"
+msgstr ""
+
+#: templates/js/translated/stock.js:1176
+msgid "batches"
+msgstr ""
+
+#: templates/js/translated/stock.js:1203
+msgid "locations"
+msgstr ""
+
+#: templates/js/translated/stock.js:1205
+msgid "Undefined location"
+msgstr ""
+
+#: templates/js/translated/stock.js:1364
msgid "Stock Status"
msgstr ""
-#: templates/js/translated/stock.js:1238
+#: templates/js/translated/stock.js:1379
msgid "Set Stock Status"
msgstr ""
-#: templates/js/translated/stock.js:1252
+#: templates/js/translated/stock.js:1393
msgid "Select Status Code"
msgstr ""
-#: templates/js/translated/stock.js:1253
+#: templates/js/translated/stock.js:1394
msgid "Status code must be selected"
msgstr ""
-#: templates/js/translated/stock.js:1392
+#: templates/js/translated/stock.js:1533
msgid "Invalid date"
msgstr ""
-#: templates/js/translated/stock.js:1439
+#: templates/js/translated/stock.js:1580
msgid "Location no longer exists"
msgstr ""
-#: templates/js/translated/stock.js:1458
+#: templates/js/translated/stock.js:1599
msgid "Purchase order no longer exists"
msgstr ""
-#: templates/js/translated/stock.js:1477
+#: templates/js/translated/stock.js:1618
msgid "Customer no longer exists"
msgstr ""
-#: templates/js/translated/stock.js:1495
+#: templates/js/translated/stock.js:1636
msgid "Stock item no longer exists"
msgstr ""
-#: templates/js/translated/stock.js:1518
+#: templates/js/translated/stock.js:1659
msgid "Added"
msgstr ""
-#: templates/js/translated/stock.js:1526
+#: templates/js/translated/stock.js:1667
msgid "Removed"
msgstr ""
-#: templates/js/translated/stock.js:1570
+#: templates/js/translated/stock.js:1708
msgid "Edit tracking entry"
msgstr ""
-#: templates/js/translated/stock.js:1571
+#: templates/js/translated/stock.js:1709
msgid "Delete tracking entry"
msgstr ""
-#: templates/js/translated/stock.js:1715
+#: templates/js/translated/stock.js:1833
msgid "No installed items"
msgstr ""
-#: templates/js/translated/stock.js:1738
+#: templates/js/translated/stock.js:1856
msgid "Serial"
msgstr ""
-#: templates/js/translated/stock.js:1766
+#: templates/js/translated/stock.js:1884
msgid "Uninstall Stock Item"
msgstr ""
-#: templates/js/translated/table_filters.js:43
+#: templates/js/translated/table_filters.js:56
msgid "Trackable Part"
msgstr ""
-#: templates/js/translated/table_filters.js:47
+#: templates/js/translated/table_filters.js:60
msgid "Assembled Part"
msgstr ""
-#: templates/js/translated/table_filters.js:51
+#: templates/js/translated/table_filters.js:64
msgid "Validated"
msgstr ""
-#: templates/js/translated/table_filters.js:59
+#: templates/js/translated/table_filters.js:72
msgid "Allow Variant Stock"
msgstr ""
-#: templates/js/translated/table_filters.js:79
-#: templates/js/translated/table_filters.js:143
+#: templates/js/translated/table_filters.js:92
+#: templates/js/translated/table_filters.js:156
msgid "Include sublocations"
msgstr ""
-#: templates/js/translated/table_filters.js:80
+#: templates/js/translated/table_filters.js:93
msgid "Include locations"
msgstr ""
-#: templates/js/translated/table_filters.js:90
-#: templates/js/translated/table_filters.js:91
-#: templates/js/translated/table_filters.js:314
+#: templates/js/translated/table_filters.js:103
+#: templates/js/translated/table_filters.js:104
+#: templates/js/translated/table_filters.js:327
msgid "Include subcategories"
msgstr ""
-#: templates/js/translated/table_filters.js:101
-#: templates/js/translated/table_filters.js:178
+#: templates/js/translated/table_filters.js:114
+#: templates/js/translated/table_filters.js:191
msgid "Is Serialized"
msgstr ""
-#: templates/js/translated/table_filters.js:104
-#: templates/js/translated/table_filters.js:185
+#: templates/js/translated/table_filters.js:117
+#: templates/js/translated/table_filters.js:198
msgid "Serial number GTE"
msgstr ""
-#: templates/js/translated/table_filters.js:105
-#: templates/js/translated/table_filters.js:186
+#: templates/js/translated/table_filters.js:118
+#: templates/js/translated/table_filters.js:199
msgid "Serial number greater than or equal to"
msgstr ""
-#: templates/js/translated/table_filters.js:108
-#: templates/js/translated/table_filters.js:189
+#: templates/js/translated/table_filters.js:121
+#: templates/js/translated/table_filters.js:202
msgid "Serial number LTE"
msgstr ""
-#: templates/js/translated/table_filters.js:109
-#: templates/js/translated/table_filters.js:190
+#: templates/js/translated/table_filters.js:122
+#: templates/js/translated/table_filters.js:203
msgid "Serial number less than or equal to"
msgstr ""
-#: templates/js/translated/table_filters.js:112
-#: templates/js/translated/table_filters.js:113
-#: templates/js/translated/table_filters.js:181
-#: templates/js/translated/table_filters.js:182
+#: templates/js/translated/table_filters.js:125
+#: templates/js/translated/table_filters.js:126
+#: templates/js/translated/table_filters.js:194
+#: templates/js/translated/table_filters.js:195
msgid "Serial number"
msgstr ""
-#: templates/js/translated/table_filters.js:117
-#: templates/js/translated/table_filters.js:199
+#: templates/js/translated/table_filters.js:130
+#: templates/js/translated/table_filters.js:212
msgid "Batch code"
msgstr ""
-#: templates/js/translated/table_filters.js:128
-#: templates/js/translated/table_filters.js:304
+#: templates/js/translated/table_filters.js:141
+#: templates/js/translated/table_filters.js:317
msgid "Active parts"
msgstr ""
-#: templates/js/translated/table_filters.js:129
+#: templates/js/translated/table_filters.js:142
msgid "Show stock for active parts"
msgstr ""
-#: templates/js/translated/table_filters.js:134
+#: templates/js/translated/table_filters.js:147
msgid "Part is an assembly"
msgstr ""
-#: templates/js/translated/table_filters.js:138
+#: templates/js/translated/table_filters.js:151
msgid "Is allocated"
msgstr ""
-#: templates/js/translated/table_filters.js:139
+#: templates/js/translated/table_filters.js:152
msgid "Item has been allocated"
msgstr ""
-#: templates/js/translated/table_filters.js:144
+#: templates/js/translated/table_filters.js:157
msgid "Include stock in sublocations"
msgstr ""
-#: templates/js/translated/table_filters.js:149
+#: templates/js/translated/table_filters.js:162
msgid "Show stock items which are depleted"
msgstr ""
-#: templates/js/translated/table_filters.js:154
+#: templates/js/translated/table_filters.js:167
msgid "Show items which are in stock"
msgstr ""
-#: templates/js/translated/table_filters.js:158
+#: templates/js/translated/table_filters.js:171
msgid "In Production"
msgstr ""
-#: templates/js/translated/table_filters.js:159
+#: templates/js/translated/table_filters.js:172
msgid "Show items which are in production"
msgstr ""
-#: templates/js/translated/table_filters.js:163
+#: templates/js/translated/table_filters.js:176
msgid "Include Variants"
msgstr ""
-#: templates/js/translated/table_filters.js:164
+#: templates/js/translated/table_filters.js:177
msgid "Include stock items for variant parts"
msgstr ""
-#: templates/js/translated/table_filters.js:168
+#: templates/js/translated/table_filters.js:181
msgid "Installed"
msgstr ""
-#: templates/js/translated/table_filters.js:169
+#: templates/js/translated/table_filters.js:182
msgid "Show stock items which are installed in another item"
msgstr ""
-#: templates/js/translated/table_filters.js:174
+#: templates/js/translated/table_filters.js:187
msgid "Show items which have been assigned to a customer"
msgstr ""
-#: templates/js/translated/table_filters.js:194
-#: templates/js/translated/table_filters.js:195
+#: templates/js/translated/table_filters.js:207
+#: templates/js/translated/table_filters.js:208
msgid "Stock status"
msgstr ""
-#: templates/js/translated/table_filters.js:203
+#: templates/js/translated/table_filters.js:216
msgid "Has purchase price"
msgstr ""
-#: templates/js/translated/table_filters.js:204
+#: templates/js/translated/table_filters.js:217
msgid "Show stock items which have a purchase price set"
msgstr ""
-#: templates/js/translated/table_filters.js:213
+#: templates/js/translated/table_filters.js:226
msgid "Show stock items which have expired"
msgstr ""
-#: templates/js/translated/table_filters.js:219
+#: templates/js/translated/table_filters.js:232
msgid "Show stock which is close to expiring"
msgstr ""
-#: templates/js/translated/table_filters.js:250
+#: templates/js/translated/table_filters.js:263
msgid "Build status"
msgstr ""
-#: templates/js/translated/table_filters.js:269
-#: templates/js/translated/table_filters.js:286
+#: templates/js/translated/table_filters.js:282
+#: templates/js/translated/table_filters.js:299
msgid "Order status"
msgstr ""
-#: templates/js/translated/table_filters.js:274
-#: templates/js/translated/table_filters.js:291
+#: templates/js/translated/table_filters.js:287
+#: templates/js/translated/table_filters.js:304
msgid "Outstanding"
msgstr ""
-#: templates/js/translated/table_filters.js:315
+#: templates/js/translated/table_filters.js:328
msgid "Include parts in subcategories"
msgstr ""
-#: templates/js/translated/table_filters.js:319
+#: templates/js/translated/table_filters.js:332
msgid "Has IPN"
msgstr ""
-#: templates/js/translated/table_filters.js:320
+#: templates/js/translated/table_filters.js:333
msgid "Part has internal part number"
msgstr ""
-#: templates/js/translated/table_filters.js:325
+#: templates/js/translated/table_filters.js:338
msgid "Show active parts"
msgstr ""
-#: templates/js/translated/table_filters.js:333
+#: templates/js/translated/table_filters.js:346
msgid "Stock available"
msgstr ""
-#: templates/js/translated/table_filters.js:349
+#: templates/js/translated/table_filters.js:362
msgid "Starred"
msgstr ""
-#: templates/js/translated/table_filters.js:361
+#: templates/js/translated/table_filters.js:374
msgid "Purchasable"
msgstr ""
-#: templates/js/translated/tables.js:342
+#: templates/js/translated/tables.js:357
msgid "Loading data"
msgstr ""
-#: templates/js/translated/tables.js:345
+#: templates/js/translated/tables.js:360
msgid "rows per page"
msgstr ""
-#: templates/js/translated/tables.js:348
+#: templates/js/translated/tables.js:363
msgid "Showing"
msgstr ""
-#: templates/js/translated/tables.js:348
+#: templates/js/translated/tables.js:363
msgid "to"
msgstr ""
-#: templates/js/translated/tables.js:348
+#: templates/js/translated/tables.js:363
msgid "of"
msgstr ""
-#: templates/js/translated/tables.js:348
+#: templates/js/translated/tables.js:363
msgid "rows"
msgstr ""
-#: templates/js/translated/tables.js:354
+#: templates/js/translated/tables.js:369
msgid "No matching results"
msgstr ""
-#: templates/js/translated/tables.js:357
+#: templates/js/translated/tables.js:372
msgid "Hide/Show pagination"
msgstr ""
-#: templates/js/translated/tables.js:360
+#: templates/js/translated/tables.js:375
msgid "Refresh"
msgstr ""
-#: templates/js/translated/tables.js:363
+#: templates/js/translated/tables.js:378
msgid "Toggle"
msgstr ""
-#: templates/js/translated/tables.js:366
+#: templates/js/translated/tables.js:381
msgid "Columns"
msgstr ""
-#: templates/js/translated/tables.js:369
+#: templates/js/translated/tables.js:384
msgid "All"
msgstr ""
-#: templates/navbar.html:13
+#: templates/navbar.html:19
msgid "Toggle navigation"
msgstr ""
-#: templates/navbar.html:33
+#: templates/navbar.html:39
msgid "Buy"
msgstr ""
-#: templates/navbar.html:43
+#: templates/navbar.html:51
msgid "Sell"
msgstr ""
-#: templates/navbar.html:55
-msgid "Scan Barcode"
-msgstr ""
-
-#: templates/navbar.html:77 users/models.py:39
+#: templates/navbar.html:87 users/models.py:39
msgid "Admin"
msgstr ""
-#: templates/navbar.html:79
+#: templates/navbar.html:89
msgid "Logout"
msgstr ""
-#: templates/navbar.html:81 templates/registration/login.html:89
+#: templates/navbar.html:91 templates/registration/login.html:89
msgid "Login"
msgstr ""
-#: templates/navbar.html:104
+#: templates/navbar.html:114
msgid "About InvenTree"
msgstr ""
diff --git a/InvenTree/locale/fr/LC_MESSAGES/django.po b/InvenTree/locale/fr/LC_MESSAGES/django.po
index 253f75aa39..a44d04150e 100644
--- a/InvenTree/locale/fr/LC_MESSAGES/django.po
+++ b/InvenTree/locale/fr/LC_MESSAGES/django.po
@@ -2,8 +2,8 @@ msgid ""
msgstr ""
"Project-Id-Version: inventree\n"
"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2021-08-07 15:14+0000\n"
-"PO-Revision-Date: 2021-08-07 15:30\n"
+"POT-Creation-Date: 2021-09-12 13:15+0000\n"
+"PO-Revision-Date: 2021-09-12 13:44\n"
"Last-Translator: \n"
"Language-Team: French\n"
"Language: fr_FR\n"
@@ -36,7 +36,7 @@ msgstr "Entrer la date"
#: InvenTree/forms.py:111 build/forms.py:102 build/forms.py:123
#: build/forms.py:145 build/forms.py:169 build/forms.py:185 build/forms.py:227
#: order/forms.py:30 order/forms.py:41 order/forms.py:52 order/forms.py:63
-#: order/forms.py:74 part/forms.py:108 templates/js/translated/forms.js:545
+#: order/forms.py:74 part/forms.py:108 templates/js/translated/forms.js:564
msgid "Confirm"
msgstr "Confirmer"
@@ -73,7 +73,7 @@ msgstr "Sélectionnez une catégorie"
msgid "Duplicate serial: {n}"
msgstr "Dupliquer le numéro de série: {n}"
-#: InvenTree/helpers.py:408 order/models.py:315 order/models.py:425
+#: InvenTree/helpers.py:408 order/models.py:315 order/models.py:430
#: stock/views.py:1363
msgid "Invalid quantity provided"
msgstr "Quantité fournie invalide"
@@ -102,152 +102,181 @@ 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:61 stock/models.py:1815
+#: InvenTree/models.py:66 stock/models.py:1826
msgid "Attachment"
msgstr "Pièce jointe"
-#: InvenTree/models.py:62
+#: InvenTree/models.py:67
msgid "Select file to attach"
msgstr "Sélectionnez un fichier à joindre"
-#: InvenTree/models.py:64 templates/js/translated/attachment.js:52
+#: InvenTree/models.py:69 templates/js/translated/attachment.js:87
msgid "Comment"
msgstr "Commentaire"
-#: InvenTree/models.py:64
+#: InvenTree/models.py:69
msgid "File comment"
msgstr "Commentaire du fichier"
-#: InvenTree/models.py:70 InvenTree/models.py:71 common/models.py:969
-#: common/models.py:970 part/models.py:2035
+#: InvenTree/models.py:75 InvenTree/models.py:76 common/models.py:993
+#: common/models.py:994 part/models.py:2051
#: report/templates/report/inventree_test_report_base.html:91
-#: templates/js/translated/stock.js:1549
+#: templates/js/translated/stock.js:1690
msgid "User"
msgstr "Utilisateur"
-#: InvenTree/models.py:74
+#: InvenTree/models.py:79
msgid "upload date"
msgstr "date de chargement"
-#: InvenTree/models.py:113
+#: InvenTree/models.py:99
+msgid "Filename must not be empty"
+msgstr ""
+
+#: InvenTree/models.py:122
+msgid "Invalid attachment directory"
+msgstr ""
+
+#: InvenTree/models.py:132
+#, python-brace-format
+msgid "Filename contains illegal character '{c}'"
+msgstr ""
+
+#: InvenTree/models.py:135
+msgid "Filename missing extension"
+msgstr ""
+
+#: InvenTree/models.py:142
+msgid "Attachment with this filename already exists"
+msgstr ""
+
+#: InvenTree/models.py:149
+msgid "Error renaming file"
+msgstr ""
+
+#: InvenTree/models.py:184
msgid "Invalid choice"
msgstr ""
-#: InvenTree/models.py:129 InvenTree/models.py:130 company/models.py:412
-#: label/models.py:112 part/models.py:656 part/models.py:2196
-#: part/templates/part/part_base.html:233 report/models.py:181
+#: InvenTree/models.py:200 InvenTree/models.py:201 company/models.py:414
+#: label/models.py:112 part/models.py:658 part/models.py:2212
+#: part/templates/part/part_base.html:241 report/models.py:181
#: templates/InvenTree/search.html:137 templates/InvenTree/search.html:289
-#: templates/js/translated/company.js:583 templates/js/translated/part.js:338
-#: templates/js/translated/part.js:471 templates/js/translated/part.js:963
-#: templates/js/translated/stock.js:1342
+#: templates/js/translated/company.js:636 templates/js/translated/part.js:466
+#: templates/js/translated/part.js:603 templates/js/translated/part.js:1130
+#: templates/js/translated/stock.js:1483
msgid "Name"
msgstr "Nom"
-#: InvenTree/models.py:136 build/models.py:187
-#: build/templates/build/detail.html:24 company/models.py:351
-#: company/models.py:519 company/templates/company/manufacturer_part.html:76
+#: InvenTree/models.py:207 build/models.py:187
+#: build/templates/build/detail.html:24 company/models.py:353
+#: company/models.py:569 company/templates/company/manufacturer_part.html:76
#: company/templates/company/supplier_part.html:75 label/models.py:119
-#: order/models.py:158 order/templates/order/purchase_order_detail.html:312
-#: part/models.py:679 part/templates/part/part_base.html:238
+#: order/models.py:158 part/models.py:681
+#: part/templates/part/part_base.html:246
#: part/templates/part/set_category.html:14 report/models.py:194
#: report/models.py:551 report/models.py:590
#: report/templates/report/inventree_build_order_base.html:118
#: templates/InvenTree/search.html:144 templates/InvenTree/search.html:224
#: templates/InvenTree/search.html:296
#: templates/InvenTree/settings/header.html:9
-#: templates/js/translated/bom.js:210 templates/js/translated/build.js:868
-#: templates/js/translated/build.js:1162 templates/js/translated/company.js:299
-#: templates/js/translated/company.js:497
-#: templates/js/translated/company.js:779 templates/js/translated/order.js:267
-#: templates/js/translated/order.js:369 templates/js/translated/part.js:397
-#: templates/js/translated/part.js:581 templates/js/translated/part.js:758
-#: templates/js/translated/part.js:975 templates/js/translated/part.js:1043
-#: templates/js/translated/stock.js:926 templates/js/translated/stock.js:1354
-#: templates/js/translated/stock.js:1399
+#: templates/js/translated/bom.js:230 templates/js/translated/build.js:891
+#: templates/js/translated/build.js:1179 templates/js/translated/company.js:344
+#: templates/js/translated/company.js:546
+#: templates/js/translated/company.js:834 templates/js/translated/order.js:341
+#: templates/js/translated/order.js:486 templates/js/translated/order.js:710
+#: templates/js/translated/part.js:525 templates/js/translated/part.js:713
+#: templates/js/translated/part.js:902 templates/js/translated/part.js:1142
+#: templates/js/translated/part.js:1210 templates/js/translated/stock.js:840
+#: templates/js/translated/stock.js:1495 templates/js/translated/stock.js:1540
msgid "Description"
msgstr "Description"
-#: InvenTree/models.py:137
+#: InvenTree/models.py:208
msgid "Description (optional)"
msgstr "Description (facultative)"
-#: InvenTree/models.py:145
+#: InvenTree/models.py:216
msgid "parent"
msgstr "parent"
-#: InvenTree/serializers.py:52 part/models.py:2438
+#: InvenTree/serializers.py:55 part/models.py:2454
msgid "Must be a valid number"
msgstr ""
-#: InvenTree/settings.py:518
+#: InvenTree/serializers.py:244
+msgid "Filename"
+msgstr ""
+
+#: InvenTree/settings.py:523
msgid "German"
msgstr "Allemand"
-#: InvenTree/settings.py:519
+#: InvenTree/settings.py:524
msgid "Greek"
msgstr ""
-#: InvenTree/settings.py:520
+#: InvenTree/settings.py:525
msgid "English"
msgstr "Anglais"
-#: InvenTree/settings.py:521
+#: InvenTree/settings.py:526
msgid "Spanish"
msgstr ""
-#: InvenTree/settings.py:522
+#: InvenTree/settings.py:527
msgid "French"
msgstr "Français"
-#: InvenTree/settings.py:523
+#: InvenTree/settings.py:528
msgid "Hebrew"
msgstr ""
-#: InvenTree/settings.py:524
+#: InvenTree/settings.py:529
msgid "Italian"
msgstr ""
-#: InvenTree/settings.py:525
+#: InvenTree/settings.py:530
msgid "Japanese"
msgstr ""
-#: InvenTree/settings.py:526
+#: InvenTree/settings.py:531
msgid "Korean"
msgstr ""
-#: InvenTree/settings.py:527
+#: InvenTree/settings.py:532
msgid "Dutch"
msgstr ""
-#: InvenTree/settings.py:528
+#: InvenTree/settings.py:533
msgid "Norwegian"
msgstr ""
-#: InvenTree/settings.py:529
+#: InvenTree/settings.py:534
msgid "Polish"
msgstr "Polonais"
-#: InvenTree/settings.py:530
+#: InvenTree/settings.py:535
msgid "Russian"
msgstr ""
-#: InvenTree/settings.py:531
+#: InvenTree/settings.py:536
msgid "Swedish"
msgstr ""
-#: InvenTree/settings.py:532
+#: InvenTree/settings.py:537
msgid "Thai"
msgstr ""
-#: InvenTree/settings.py:533
+#: InvenTree/settings.py:538
msgid "Turkish"
msgstr "Turc"
-#: InvenTree/settings.py:534
+#: InvenTree/settings.py:539
msgid "Vietnamese"
msgstr ""
-#: InvenTree/settings.py:535
+#: InvenTree/settings.py:540
msgid "Chinese"
msgstr ""
@@ -372,7 +401,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/table_filters.js:173
+#: InvenTree/status_codes.py:294 templates/js/translated/table_filters.js:186
msgid "Sent to customer"
msgstr "Envoyé au client"
@@ -432,27 +461,27 @@ msgstr ""
msgid "Overage must be an integer value or a percentage"
msgstr ""
-#: InvenTree/views.py:612
+#: InvenTree/views.py:610
msgid "Delete Item"
msgstr "Supprimer cet élément"
-#: InvenTree/views.py:661
+#: InvenTree/views.py:659
msgid "Check box to confirm item deletion"
msgstr ""
-#: InvenTree/views.py:676 templates/InvenTree/settings/user.html:14
+#: InvenTree/views.py:674 templates/InvenTree/settings/user.html:14
msgid "Edit User Information"
msgstr "Modifier les informations utilisateur"
-#: InvenTree/views.py:687 templates/InvenTree/settings/user.html:18
+#: InvenTree/views.py:685 templates/InvenTree/settings/user.html:18
msgid "Set Password"
msgstr ""
-#: InvenTree/views.py:706
+#: InvenTree/views.py:704
msgid "Password fields must match"
msgstr ""
-#: InvenTree/views.py:907 templates/navbar.html:95
+#: InvenTree/views.py:910 templates/navbar.html:105
msgid "System Information"
msgstr "Informations système"
@@ -509,8 +538,8 @@ msgstr ""
#: order/templates/order/order_base.html:124
#: order/templates/order/sales_order_base.html:119
#: report/templates/report/inventree_build_order_base.html:126
-#: templates/js/translated/build.js:945 templates/js/translated/order.js:284
-#: templates/js/translated/order.js:387
+#: templates/js/translated/build.js:962 templates/js/translated/order.js:358
+#: templates/js/translated/order.js:728
msgid "Target Date"
msgstr ""
@@ -522,19 +551,18 @@ msgstr ""
#: build/templates/build/allocation_card.html:23
#: build/templates/build/auto_allocate.html:17
#: build/templates/build/build_base.html:133
-#: build/templates/build/detail.html:34 common/models.py:1001
+#: build/templates/build/detail.html:34 common/models.py:1025
#: company/forms.py:42 company/templates/company/supplier_part.html:226
-#: order/forms.py:120 order/forms.py:142 order/forms.py:159 order/models.py:706
-#: order/models.py:952 order/templates/order/order_wizard/match_parts.html:30
+#: order/forms.py:120 order/forms.py:142 order/forms.py:159 order/models.py:712
+#: order/models.py:964 order/templates/order/order_wizard/match_parts.html:30
#: order/templates/order/order_wizard/select_parts.html:34
-#: order/templates/order/purchase_order_detail.html:348
-#: order/templates/order/sales_order_detail.html:200
-#: order/templates/order/sales_order_detail.html:207
-#: order/templates/order/sales_order_detail.html:292
-#: order/templates/order/sales_order_detail.html:364 part/forms.py:249
-#: part/forms.py:265 part/forms.py:281 part/models.py:2340
+#: order/templates/order/sales_order_detail.html:201
+#: order/templates/order/sales_order_detail.html:208
+#: order/templates/order/sales_order_detail.html:293
+#: order/templates/order/sales_order_detail.html:365 part/forms.py:249
+#: part/forms.py:265 part/forms.py:281 part/models.py:2356
#: part/templates/part/bom_upload/match_parts.html:31
-#: part/templates/part/detail.html:940 part/templates/part/detail.html:1026
+#: part/templates/part/detail.html:973 part/templates/part/detail.html:1059
#: part/templates/part/part_pricing.html:16
#: report/templates/report/inventree_build_order_base.html:114
#: report/templates/report/inventree_po_report.html:91
@@ -542,13 +570,14 @@ msgstr ""
#: report/templates/report/inventree_test_report_base.html:77
#: stock/forms.py:140 stock/templates/stock/item_base.html:269
#: stock/templates/stock/stock_adjust.html:18
-#: templates/js/translated/barcode.js:364 templates/js/translated/bom.js:225
-#: templates/js/translated/build.js:271 templates/js/translated/build.js:606
-#: templates/js/translated/build.js:1172
-#: templates/js/translated/model_renderers.js:56
-#: templates/js/translated/order.js:482 templates/js/translated/part.js:1148
-#: templates/js/translated/part.js:1270 templates/js/translated/part.js:1326
-#: templates/js/translated/stock.js:1534 templates/js/translated/stock.js:1732
+#: templates/js/translated/barcode.js:386 templates/js/translated/bom.js:245
+#: templates/js/translated/build.js:298 templates/js/translated/build.js:629
+#: templates/js/translated/build.js:1189
+#: templates/js/translated/model_renderers.js:59
+#: templates/js/translated/order.js:522 templates/js/translated/order.js:824
+#: templates/js/translated/part.js:1317 templates/js/translated/part.js:1440
+#: templates/js/translated/part.js:1518 templates/js/translated/stock.js:1675
+#: templates/js/translated/stock.js:1850
msgid "Quantity"
msgstr "Quantité"
@@ -589,13 +618,15 @@ msgid "Mark build as complete"
msgstr ""
#: build/forms.py:210 build/templates/build/auto_allocate.html:18
-#: stock/forms.py:280 stock/templates/stock/item_base.html:299
+#: order/serializers.py:216 order/serializers.py:275 stock/forms.py:280
+#: stock/templates/stock/item_base.html:299
#: stock/templates/stock/stock_adjust.html:17
-#: templates/InvenTree/search.html:260 templates/js/translated/barcode.js:363
-#: templates/js/translated/barcode.js:531 templates/js/translated/build.js:256
-#: templates/js/translated/build.js:620 templates/js/translated/order.js:467
-#: templates/js/translated/stock.js:134 templates/js/translated/stock.js:260
-#: templates/js/translated/stock.js:1012 templates/js/translated/stock.js:1426
+#: templates/InvenTree/search.html:260 templates/js/translated/barcode.js:385
+#: templates/js/translated/barcode.js:555 templates/js/translated/build.js:283
+#: templates/js/translated/build.js:643 templates/js/translated/order.js:809
+#: templates/js/translated/part.js:174 templates/js/translated/stock.js:203
+#: templates/js/translated/stock.js:329 templates/js/translated/stock.js:942
+#: templates/js/translated/stock.js:1567
msgid "Location"
msgstr ""
@@ -604,13 +635,13 @@ msgid "Location of completed parts"
msgstr "Emplacement des pièces terminées"
#: build/forms.py:215 build/templates/build/build_base.html:138
-#: build/templates/build/detail.html:62 order/models.py:549
-#: order/templates/order/receive_parts.html:24
+#: build/templates/build/detail.html:62 order/models.py:555
+#: order/serializers.py:230 order/templates/order/receive_parts.html:24
#: stock/templates/stock/item_base.html:422 templates/InvenTree/search.html:252
-#: templates/js/translated/barcode.js:119 templates/js/translated/build.js:902
-#: templates/js/translated/order.js:271 templates/js/translated/order.js:374
-#: templates/js/translated/stock.js:999 templates/js/translated/stock.js:1503
-#: templates/js/translated/stock.js:1748
+#: templates/js/translated/barcode.js:141 templates/js/translated/build.js:925
+#: templates/js/translated/order.js:345 templates/js/translated/order.js:715
+#: templates/js/translated/stock.js:917 templates/js/translated/stock.js:1644
+#: templates/js/translated/stock.js:1866
msgid "Status"
msgstr ""
@@ -649,7 +680,7 @@ msgstr ""
#: build/models.py:117 build/templates/build/build_base.html:9
#: build/templates/build/build_base.html:73
#: report/templates/report/inventree_build_order_base.html:106
-#: templates/js/translated/build.js:233
+#: templates/js/translated/build.js:260
msgid "Build Order"
msgstr ""
@@ -657,8 +688,8 @@ msgstr ""
#: build/templates/build/index.html:15
#: order/templates/order/sales_order_detail.html:34
#: order/templates/order/so_navbar.html:19
-#: order/templates/order/so_navbar.html:22 part/templates/part/navbar.html:42
-#: part/templates/part/navbar.html:45 templates/InvenTree/index.html:229
+#: order/templates/order/so_navbar.html:22 part/templates/part/navbar.html:50
+#: part/templates/part/navbar.html:53 templates/InvenTree/index.html:229
#: templates/InvenTree/search.html:185
#: templates/InvenTree/settings/navbar.html:101
#: templates/InvenTree/settings/navbar.html:103 users/models.py:44
@@ -669,14 +700,13 @@ msgstr ""
msgid "Build Order Reference"
msgstr ""
-#: build/models.py:179 order/models.py:246 order/models.py:533
-#: order/models.py:713 order/templates/order/purchase_order_detail.html:343
-#: order/templates/order/sales_order_detail.html:359 part/models.py:2349
-#: part/templates/part/bom_upload/match_parts.html:30
+#: build/models.py:179 order/models.py:246 order/models.py:539
+#: order/models.py:719 order/templates/order/sales_order_detail.html:360
+#: part/models.py:2365 part/templates/part/bom_upload/match_parts.html:30
#: report/templates/report/inventree_po_report.html:92
#: report/templates/report/inventree_so_report.html:92
-#: templates/js/translated/bom.js:217 templates/js/translated/build.js:695
-#: templates/js/translated/build.js:1166
+#: templates/js/translated/bom.js:237 templates/js/translated/build.js:718
+#: templates/js/translated/build.js:1183 templates/js/translated/order.js:517
msgid "Reference"
msgstr "Référence"
@@ -695,15 +725,14 @@ msgstr ""
#: build/models.py:205 build/templates/build/auto_allocate.html:16
#: build/templates/build/build_base.html:128
-#: build/templates/build/detail.html:29 company/models.py:654
-#: order/models.py:766 order/models.py:825
+#: build/templates/build/detail.html:29 company/models.py:704
+#: order/models.py:772 order/models.py:837
#: order/templates/order/order_wizard/select_parts.html:32
-#: order/templates/order/purchase_order_detail.html:297
#: order/templates/order/receive_parts.html:19
-#: order/templates/order/sales_order_detail.html:344 part/models.py:295
-#: part/models.py:1980 part/models.py:1996 part/models.py:2015
-#: part/models.py:2033 part/models.py:2112 part/models.py:2234
-#: part/models.py:2324 part/templates/part/detail.html:199
+#: order/templates/order/sales_order_detail.html:345 part/models.py:297
+#: part/models.py:1996 part/models.py:2012 part/models.py:2031
+#: part/models.py:2049 part/models.py:2128 part/models.py:2250
+#: part/models.py:2340 part/templates/part/detail.html:199
#: part/templates/part/part_app_base.html:8
#: part/templates/part/part_pricing.html:12
#: part/templates/part/set_category.html:13
@@ -711,12 +740,13 @@ msgstr ""
#: report/templates/report/inventree_po_report.html:90
#: report/templates/report/inventree_so_report.html:90
#: templates/InvenTree/search.html:112 templates/InvenTree/search.html:210
-#: templates/js/translated/barcode.js:362 templates/js/translated/bom.js:183
-#: templates/js/translated/build.js:586 templates/js/translated/build.js:873
-#: templates/js/translated/build.js:1139 templates/js/translated/company.js:438
-#: templates/js/translated/company.js:688 templates/js/translated/part.js:562
-#: templates/js/translated/part.js:725 templates/js/translated/stock.js:132
-#: templates/js/translated/stock.js:895 templates/js/translated/stock.js:1720
+#: templates/js/translated/barcode.js:384 templates/js/translated/bom.js:203
+#: templates/js/translated/build.js:609 templates/js/translated/build.js:896
+#: templates/js/translated/build.js:1156 templates/js/translated/company.js:487
+#: templates/js/translated/company.js:743 templates/js/translated/order.js:471
+#: templates/js/translated/part.js:694 templates/js/translated/part.js:864
+#: templates/js/translated/stock.js:201 templates/js/translated/stock.js:797
+#: templates/js/translated/stock.js:1838
msgid "Part"
msgstr "Pièce"
@@ -764,7 +794,7 @@ msgstr ""
msgid "Number of stock items which have been completed"
msgstr ""
-#: build/models.py:257 part/templates/part/part_base.html:191
+#: build/models.py:257 part/templates/part/part_base.html:198
msgid "Build Status"
msgstr ""
@@ -772,7 +802,7 @@ msgstr ""
msgid "Build status code"
msgstr ""
-#: build/models.py:265 stock/models.py:507
+#: build/models.py:265 stock/models.py:513
msgid "Batch Code"
msgstr ""
@@ -780,16 +810,16 @@ msgstr ""
msgid "Batch code for this build output"
msgstr ""
-#: build/models.py:272 order/models.py:162 part/models.py:851
-#: part/templates/part/part_base.html:264 templates/js/translated/order.js:382
+#: build/models.py:272 order/models.py:162 part/models.py:853
+#: part/templates/part/part_base.html:272 templates/js/translated/order.js:723
msgid "Creation Date"
msgstr "Date de création"
-#: build/models.py:276 order/models.py:555
+#: build/models.py:276 order/models.py:561
msgid "Target completion date"
msgstr ""
-#: build/models.py:280 order/models.py:288 templates/js/translated/build.js:950
+#: build/models.py:280 order/models.py:288 templates/js/translated/build.js:967
msgid "Completion Date"
msgstr ""
@@ -797,7 +827,7 @@ msgstr ""
msgid "completed by"
msgstr ""
-#: build/models.py:294 templates/js/translated/build.js:915
+#: build/models.py:294 templates/js/translated/build.js:938
msgid "Issued by"
msgstr ""
@@ -808,9 +838,9 @@ msgstr ""
#: build/models.py:303 build/templates/build/build_base.html:184
#: build/templates/build/detail.html:108 order/models.py:176
#: order/templates/order/order_base.html:138
-#: order/templates/order/sales_order_base.html:140 part/models.py:855
+#: order/templates/order/sales_order_base.html:140 part/models.py:857
#: report/templates/report/inventree_build_order_base.html:159
-#: templates/js/translated/build.js:930
+#: templates/js/translated/build.js:950
msgid "Responsible"
msgstr ""
@@ -821,34 +851,33 @@ msgstr ""
#: build/models.py:309 build/templates/build/detail.html:94
#: company/templates/company/manufacturer_part.html:83
#: company/templates/company/supplier_part.html:82
-#: part/templates/part/part_base.html:258 stock/models.py:501
+#: part/templates/part/part_base.html:266 stock/models.py:507
#: stock/templates/stock/item_base.html:359
msgid "External Link"
msgstr "Lien Externe"
-#: build/models.py:310 part/models.py:713 stock/models.py:503
+#: build/models.py:310 part/models.py:715 stock/models.py:509
msgid "Link to external URL"
msgstr ""
#: build/models.py:314 build/templates/build/navbar.html:52
-#: company/models.py:139 company/models.py:526
-#: company/templates/company/navbar.html:63
-#: company/templates/company/navbar.html:66 order/models.py:180
-#: order/models.py:715 order/templates/order/po_navbar.html:38
+#: company/models.py:141 company/models.py:576
+#: company/templates/company/navbar.html:69
+#: company/templates/company/navbar.html:72 order/models.py:180
+#: order/models.py:721 order/templates/order/po_navbar.html:38
#: order/templates/order/po_navbar.html:41
-#: order/templates/order/purchase_order_detail.html:419
-#: order/templates/order/sales_order_detail.html:439
+#: order/templates/order/sales_order_detail.html:440
#: order/templates/order/so_navbar.html:33
-#: order/templates/order/so_navbar.html:36 part/models.py:840
-#: part/templates/part/detail.html:105 part/templates/part/navbar.html:108
-#: part/templates/part/navbar.html:111
+#: order/templates/order/so_navbar.html:36 part/models.py:842
+#: part/templates/part/detail.html:105 part/templates/part/navbar.html:120
+#: part/templates/part/navbar.html:123
#: report/templates/report/inventree_build_order_base.html:173
-#: stock/forms.py:138 stock/forms.py:250 stock/forms.py:282 stock/models.py:573
-#: stock/models.py:1715 stock/models.py:1821
-#: stock/templates/stock/navbar.html:57 templates/js/translated/barcode.js:37
-#: templates/js/translated/bom.js:369 templates/js/translated/company.js:784
-#: templates/js/translated/stock.js:268 templates/js/translated/stock.js:509
-#: templates/js/translated/stock.js:1090
+#: stock/forms.py:138 stock/forms.py:250 stock/forms.py:282 stock/models.py:579
+#: stock/models.py:1726 stock/models.py:1832
+#: stock/templates/stock/navbar.html:57 templates/js/translated/barcode.js:59
+#: templates/js/translated/bom.js:385 templates/js/translated/company.js:839
+#: templates/js/translated/order.js:604 templates/js/translated/stock.js:338
+#: templates/js/translated/stock.js:580 templates/js/translated/stock.js:1061
msgid "Notes"
msgstr "Notes"
@@ -881,11 +910,11 @@ msgstr "L'élément de construction doit spécifier une sortie de construction,
msgid "Allocated quantity ({n}) must not exceed available quantity ({q})"
msgstr ""
-#: build/models.py:1244 order/models.py:926
+#: build/models.py:1244 order/models.py:938
msgid "StockItem is over-allocated"
msgstr ""
-#: build/models.py:1248 order/models.py:929
+#: build/models.py:1248 order/models.py:941
msgid "Allocation quantity must be greater than zero"
msgstr ""
@@ -899,8 +928,8 @@ msgid "Selected stock item not found in BOM for part '{p}'"
msgstr "L'article en stock sélectionné n'a pas été trouvé dans la BOM pour la pièce '{p}'"
#: build/models.py:1372 stock/templates/stock/item_base.html:331
-#: templates/InvenTree/search.html:183 templates/js/translated/build.js:846
-#: templates/navbar.html:29
+#: templates/InvenTree/search.html:183 templates/js/translated/build.js:869
+#: templates/navbar.html:35
msgid "Build"
msgstr ""
@@ -912,9 +941,9 @@ msgstr ""
#: stock/templates/stock/item_base.html:31
#: stock/templates/stock/item_base.html:353
#: stock/templates/stock/stock_adjust.html:16
-#: templates/js/translated/build.js:244 templates/js/translated/build.js:249
-#: templates/js/translated/build.js:993 templates/js/translated/order.js:455
-#: templates/js/translated/order.js:460 templates/js/translated/stock.js:1485
+#: templates/js/translated/build.js:271 templates/js/translated/build.js:276
+#: templates/js/translated/build.js:1012 templates/js/translated/order.js:797
+#: templates/js/translated/order.js:802 templates/js/translated/stock.js:1626
msgid "Stock Item"
msgstr ""
@@ -936,12 +965,12 @@ msgstr ""
#: build/templates/build/allocation_card.html:21
#: build/templates/build/complete_output.html:46
-#: order/templates/order/sales_order_detail.html:205
-#: order/templates/order/sales_order_detail.html:290
+#: order/templates/order/sales_order_detail.html:206
+#: order/templates/order/sales_order_detail.html:291
#: report/templates/report/inventree_test_report_base.html:75
-#: stock/models.py:495 stock/templates/stock/item_base.html:251
-#: templates/js/translated/build.js:604
-#: templates/js/translated/model_renderers.js:54
+#: stock/models.py:501 stock/templates/stock/item_base.html:251
+#: templates/js/translated/build.js:627
+#: templates/js/translated/model_renderers.js:57
msgid "Serial Number"
msgstr ""
@@ -993,7 +1022,7 @@ msgstr ""
#: company/templates/company/supplier_part.html:30
#: order/templates/order/order_base.html:26
#: order/templates/order/sales_order_base.html:37
-#: part/templates/part/category.html:27 part/templates/part/part_base.html:25
+#: part/templates/part/category.html:27 part/templates/part/part_base.html:30
#: stock/templates/stock/item_base.html:62
#: stock/templates/stock/location.html:31
msgid "Admin view"
@@ -1005,9 +1034,9 @@ msgstr ""
#: order/templates/order/order_base.html:86
#: order/templates/order/sales_order_base.html:43
#: order/templates/order/sales_order_base.html:88
-#: templates/js/translated/table_filters.js:259
-#: templates/js/translated/table_filters.js:278
-#: templates/js/translated/table_filters.js:295
+#: templates/js/translated/table_filters.js:272
+#: templates/js/translated/table_filters.js:291
+#: templates/js/translated/table_filters.js:308
msgid "Overdue"
msgstr ""
@@ -1057,14 +1086,14 @@ msgid "Progress"
msgstr ""
#: build/templates/build/build_base.html:170
-#: build/templates/build/detail.html:87 order/models.py:823
+#: build/templates/build/detail.html:87 order/models.py:835
#: order/templates/order/sales_order_base.html:9
#: order/templates/order/sales_order_base.html:35
#: order/templates/order/sales_order_ship.html:25
#: report/templates/report/inventree_build_order_base.html:136
#: report/templates/report/inventree_so_report.html:77
#: stock/templates/stock/item_base.html:293
-#: templates/js/translated/order.js:329
+#: templates/js/translated/order.js:670
msgid "Sales Order"
msgstr ""
@@ -1148,7 +1177,7 @@ msgstr ""
#: build/templates/build/create_build_item.html:11
#, python-format
-msgid "The allocated stock will be installed into the following build output:
%(output)s"
+msgid "The allocated stock will be installed into the following build output:
%(output)s"
msgstr ""
#: build/templates/build/create_build_item.html:17
@@ -1172,9 +1201,9 @@ msgstr ""
msgid "Stock can be taken from any available location."
msgstr ""
-#: build/templates/build/detail.html:49 order/forms.py:88 order/models.py:782
-#: order/templates/order/purchase_order_detail.html:408
+#: build/templates/build/detail.html:49 order/forms.py:88 order/models.py:794
#: order/templates/order/receive_parts.html:25 stock/forms.py:134
+#: templates/js/translated/order.js:593
msgid "Destination"
msgstr ""
@@ -1184,16 +1213,16 @@ msgstr ""
#: build/templates/build/detail.html:73
#: stock/templates/stock/item_base.html:317
-#: templates/js/translated/stock.js:1007 templates/js/translated/stock.js:1755
-#: templates/js/translated/table_filters.js:116
-#: templates/js/translated/table_filters.js:198
+#: templates/js/translated/stock.js:931 templates/js/translated/stock.js:1873
+#: templates/js/translated/table_filters.js:129
+#: templates/js/translated/table_filters.js:211
msgid "Batch"
msgstr ""
#: build/templates/build/detail.html:119
#: order/templates/order/order_base.html:111
#: order/templates/order/sales_order_base.html:113
-#: templates/js/translated/build.js:910
+#: templates/js/translated/build.js:933
msgid "Created"
msgstr ""
@@ -1201,7 +1230,7 @@ msgstr ""
msgid "No target date set"
msgstr ""
-#: build/templates/build/detail.html:135 templates/js/translated/build.js:888
+#: build/templates/build/detail.html:135 templates/js/translated/build.js:911
msgid "Completed"
msgstr ""
@@ -1225,7 +1254,7 @@ msgstr ""
msgid "Auto Allocate"
msgstr ""
-#: build/templates/build/detail.html:175 templates/js/translated/build.js:778
+#: build/templates/build/detail.html:175 templates/js/translated/build.js:801
msgid "Unallocate stock"
msgstr ""
@@ -1238,8 +1267,8 @@ msgid "Order required parts"
msgstr "Commander les pièces requises"
#: build/templates/build/detail.html:180
-#: company/templates/company/detail.html:33
-#: company/templates/company/detail.html:75 order/views.py:679
+#: company/templates/company/detail.html:32
+#: company/templates/company/detail.html:72 order/views.py:679
#: part/templates/part/category.html:140
msgid "Order Parts"
msgstr "Commander des pièces"
@@ -1288,8 +1317,8 @@ msgstr ""
#: build/templates/build/navbar.html:45 order/templates/order/po_navbar.html:35
#: order/templates/order/sales_order_detail.html:43
#: order/templates/order/so_navbar.html:29 part/templates/part/detail.html:173
-#: part/templates/part/navbar.html:102 part/templates/part/navbar.html:105
-#: stock/templates/stock/item.html:87 stock/templates/stock/navbar.html:47
+#: part/templates/part/navbar.html:114 part/templates/part/navbar.html:117
+#: stock/templates/stock/item.html:88 stock/templates/stock/navbar.html:47
#: stock/templates/stock/navbar.html:50
msgid "Attachments"
msgstr "Pieces jointes"
@@ -1298,48 +1327,48 @@ msgstr "Pieces jointes"
msgid "Build Notes"
msgstr ""
-#: build/templates/build/detail.html:261 build/templates/build/detail.html:397
-#: company/templates/company/detail.html:173
-#: company/templates/company/detail.html:200
+#: build/templates/build/detail.html:261 build/templates/build/detail.html:398
+#: company/templates/company/detail.html:169
+#: company/templates/company/detail.html:196
#: order/templates/order/purchase_order_detail.html:62
#: order/templates/order/purchase_order_detail.html:95
#: order/templates/order/sales_order_detail.html:58
#: order/templates/order/sales_order_detail.html:85
-#: part/templates/part/detail.html:109 stock/templates/stock/item.html:102
-#: stock/templates/stock/item.html:187
+#: part/templates/part/detail.html:109 stock/templates/stock/item.html:103
+#: stock/templates/stock/item.html:188
msgid "Edit Notes"
msgstr ""
#: build/templates/build/detail.html:357
#: order/templates/order/po_attachments.html:79
-#: order/templates/order/purchase_order_detail.html:156
-#: order/templates/order/sales_order_detail.html:145
-#: part/templates/part/detail.html:802 stock/templates/stock/item.html:251
+#: order/templates/order/purchase_order_detail.html:157
+#: order/templates/order/sales_order_detail.html:146
+#: part/templates/part/detail.html:920 stock/templates/stock/item.html:253
#: templates/attachment_table.html:6
msgid "Add Attachment"
msgstr ""
-#: build/templates/build/detail.html:375
+#: build/templates/build/detail.html:376
#: order/templates/order/po_attachments.html:51
-#: order/templates/order/purchase_order_detail.html:128
-#: order/templates/order/sales_order_detail.html:118
-#: part/templates/part/detail.html:756 stock/templates/stock/item.html:219
+#: order/templates/order/purchase_order_detail.html:129
+#: order/templates/order/sales_order_detail.html:119
+#: part/templates/part/detail.html:874 stock/templates/stock/item.html:221
msgid "Edit Attachment"
msgstr ""
-#: build/templates/build/detail.html:382
+#: build/templates/build/detail.html:383
#: order/templates/order/po_attachments.html:58
-#: order/templates/order/purchase_order_detail.html:135
-#: order/templates/order/sales_order_detail.html:124
-#: part/templates/part/detail.html:765 stock/templates/stock/item.html:228
+#: order/templates/order/purchase_order_detail.html:136
+#: order/templates/order/sales_order_detail.html:125
+#: part/templates/part/detail.html:883 stock/templates/stock/item.html:230
msgid "Confirm Delete Operation"
msgstr ""
-#: build/templates/build/detail.html:383
+#: build/templates/build/detail.html:384
#: order/templates/order/po_attachments.html:59
-#: order/templates/order/purchase_order_detail.html:136
-#: order/templates/order/sales_order_detail.html:125
-#: part/templates/part/detail.html:766 stock/templates/stock/item.html:229
+#: order/templates/order/purchase_order_detail.html:137
+#: order/templates/order/sales_order_detail.html:126
+#: part/templates/part/detail.html:884 stock/templates/stock/item.html:231
msgid "Delete Attachment"
msgstr ""
@@ -1372,7 +1401,7 @@ msgid "Build Order Details"
msgstr ""
#: build/templates/build/navbar.html:15 order/templates/order/po_navbar.html:15
-#: templates/js/translated/stock.js:1414
+#: templates/js/translated/stock.js:1555
msgid "Details"
msgstr "Détails"
@@ -1501,9 +1530,9 @@ msgstr ""
msgid "Stock item is over-allocated"
msgstr ""
-#: build/views.py:705 templates/js/translated/bom.js:250
-#: templates/js/translated/build.js:705 templates/js/translated/build.js:1000
-#: templates/js/translated/build.js:1179
+#: build/views.py:705 templates/js/translated/bom.js:269
+#: templates/js/translated/build.js:728 templates/js/translated/build.js:1019
+#: templates/js/translated/build.js:1196
msgid "Available"
msgstr "Disponible"
@@ -1539,7 +1568,7 @@ msgstr ""
msgid "Error reading file (data could be corrupted)"
msgstr ""
-#: common/forms.py:34 templates/js/translated/attachment.js:42
+#: common/forms.py:34 templates/js/translated/attachment.js:54
msgid "File"
msgstr ""
@@ -1556,546 +1585,594 @@ msgstr "{name.title()} Fichier"
msgid "Select {name} file to upload"
msgstr ""
-#: common/models.py:322 common/models.py:815 common/models.py:962
+#: common/models.py:308 common/models.py:839 common/models.py:986
msgid "Settings key (must be unique - case insensitive"
msgstr ""
-#: common/models.py:324
+#: common/models.py:310
msgid "Settings value"
msgstr ""
-#: common/models.py:359
+#: common/models.py:345
msgid "Must be an integer value"
msgstr ""
-#: common/models.py:382
+#: common/models.py:368
msgid "Value must be a boolean value"
msgstr ""
-#: common/models.py:393
+#: common/models.py:379
msgid "Value must be an integer value"
msgstr ""
-#: common/models.py:416
+#: common/models.py:402
msgid "Key string must be unique"
msgstr ""
-#: common/models.py:523
+#: common/models.py:509
msgid "InvenTree Instance Name"
msgstr ""
-#: common/models.py:525
+#: common/models.py:511
msgid "String descriptor for the server instance"
msgstr ""
-#: common/models.py:529
+#: common/models.py:515
msgid "Use instance name"
msgstr ""
-#: common/models.py:530
+#: common/models.py:516
msgid "Use the instance name in the title-bar"
msgstr ""
-#: common/models.py:536 company/models.py:97 company/models.py:98
+#: common/models.py:522 company/models.py:99 company/models.py:100
msgid "Company name"
msgstr ""
-#: common/models.py:537
+#: common/models.py:523
msgid "Internal company name"
msgstr ""
-#: common/models.py:542
+#: common/models.py:528
msgid "Base URL"
msgstr ""
-#: common/models.py:543
+#: common/models.py:529
msgid "Base URL for server instance"
msgstr ""
-#: common/models.py:549
+#: common/models.py:535
msgid "Default Currency"
msgstr ""
-#: common/models.py:550
+#: common/models.py:536
msgid "Default currency"
msgstr ""
-#: common/models.py:556
+#: common/models.py:542
msgid "Download from URL"
msgstr "Télécharger depuis l'URL"
-#: common/models.py:557
+#: common/models.py:543
msgid "Allow download of remote images and files from external URL"
msgstr ""
-#: common/models.py:563
+#: common/models.py:549
msgid "Barcode Support"
msgstr ""
-#: common/models.py:564
+#: common/models.py:550
msgid "Enable barcode scanner support"
msgstr ""
-#: common/models.py:570
+#: common/models.py:556
msgid "IPN Regex"
msgstr "Regex IPN"
-#: common/models.py:571
+#: common/models.py:557
msgid "Regular expression pattern for matching Part IPN"
msgstr "Expression régulière pour la correspondance avec l'IPN de la Pièce"
-#: common/models.py:575
+#: common/models.py:561
msgid "Allow Duplicate IPN"
msgstr "Autoriser les IPN dupliqués"
-#: common/models.py:576
+#: common/models.py:562
msgid "Allow multiple parts to share the same IPN"
msgstr "Permettre à plusieurs pièces de partager le même IPN"
-#: common/models.py:582
+#: common/models.py:568
msgid "Allow Editing IPN"
msgstr "Autoriser l'édition de l'IPN"
-#: common/models.py:583
+#: common/models.py:569
msgid "Allow changing the IPN value while editing a part"
msgstr "Permettre de modifier la valeur de l'IPN lors de l'édition d'une pièce"
-#: common/models.py:589
+#: common/models.py:575
msgid "Copy Part BOM Data"
msgstr ""
-#: common/models.py:590
+#: common/models.py:576
msgid "Copy BOM data by default when duplicating a part"
msgstr ""
-#: common/models.py:596
+#: common/models.py:582
msgid "Copy Part Parameter Data"
msgstr ""
-#: common/models.py:597
+#: common/models.py:583
msgid "Copy parameter data by default when duplicating a part"
msgstr ""
-#: common/models.py:603
+#: common/models.py:589
msgid "Copy Part Test Data"
msgstr ""
-#: common/models.py:604
+#: common/models.py:590
msgid "Copy test data by default when duplicating a part"
msgstr ""
-#: common/models.py:610
+#: common/models.py:596
msgid "Copy Category Parameter Templates"
msgstr ""
-#: common/models.py:611
+#: common/models.py:597
msgid "Copy category parameter templates when creating a part"
msgstr ""
-#: common/models.py:617 part/models.py:2236 report/models.py:187
-#: stock/forms.py:224 templates/js/translated/table_filters.js:25
-#: templates/js/translated/table_filters.js:329
+#: common/models.py:603 part/models.py:2252 report/models.py:187
+#: stock/forms.py:224 templates/js/translated/table_filters.js:38
+#: templates/js/translated/table_filters.js:342
msgid "Template"
msgstr ""
-#: common/models.py:618
+#: common/models.py:604
msgid "Parts are templates by default"
msgstr ""
-#: common/models.py:624 part/models.py:803
-#: templates/js/translated/table_filters.js:133
-#: templates/js/translated/table_filters.js:341
+#: common/models.py:610 part/models.py:805
+#: templates/js/translated/table_filters.js:146
+#: templates/js/translated/table_filters.js:354
msgid "Assembly"
msgstr ""
-#: common/models.py:625
+#: common/models.py:611
msgid "Parts can be assembled from other components by default"
msgstr ""
-#: common/models.py:631 part/models.py:809
-#: templates/js/translated/table_filters.js:345
+#: common/models.py:617 part/models.py:811
+#: templates/js/translated/table_filters.js:358
msgid "Component"
msgstr ""
-#: common/models.py:632
+#: common/models.py:618
msgid "Parts can be used as sub-components by default"
msgstr ""
-#: common/models.py:638 part/models.py:820
+#: common/models.py:624 part/models.py:822
msgid "Purchaseable"
msgstr ""
-#: common/models.py:639
+#: common/models.py:625
msgid "Parts are purchaseable by default"
msgstr ""
-#: common/models.py:645 part/models.py:825
-#: templates/js/translated/table_filters.js:353
+#: common/models.py:631 part/models.py:827
+#: templates/js/translated/table_filters.js:366
msgid "Salable"
msgstr ""
-#: common/models.py:646
+#: common/models.py:632
msgid "Parts are salable by default"
msgstr ""
-#: common/models.py:652 part/models.py:815
-#: templates/js/translated/table_filters.js:33
-#: templates/js/translated/table_filters.js:357
+#: common/models.py:638 part/models.py:817
+#: templates/js/translated/table_filters.js:46
+#: templates/js/translated/table_filters.js:370
msgid "Trackable"
msgstr ""
-#: common/models.py:653
+#: common/models.py:639
msgid "Parts are trackable by default"
msgstr ""
-#: common/models.py:659 part/models.py:835
-#: part/templates/part/part_base.html:61
-#: templates/js/translated/table_filters.js:29
+#: common/models.py:645 part/models.py:837
+#: part/templates/part/part_base.html:66
+#: templates/js/translated/table_filters.js:42
msgid "Virtual"
msgstr ""
-#: common/models.py:660
+#: common/models.py:646
msgid "Parts are virtual by default"
msgstr ""
-#: common/models.py:667
+#: common/models.py:653
msgid "Show Quantity in Forms"
msgstr ""
-#: common/models.py:668
+#: common/models.py:654
msgid "Display available part quantity in some forms"
msgstr ""
-#: common/models.py:674
+#: common/models.py:660
msgid "Show Import in Views"
msgstr ""
-#: common/models.py:675
+#: common/models.py:661
msgid "Display the import wizard in some part views"
msgstr ""
-#: common/models.py:681
+#: common/models.py:667
msgid "Show Price in Forms"
msgstr ""
-#: common/models.py:682
+#: common/models.py:668
msgid "Display part price in some forms"
msgstr ""
-#: common/models.py:688
+#: common/models.py:674
msgid "Show related parts"
msgstr ""
-#: common/models.py:689
+#: common/models.py:675
msgid "Display related parts for a part"
msgstr ""
-#: common/models.py:695
+#: common/models.py:681
msgid "Create initial stock"
msgstr ""
-#: common/models.py:696
+#: common/models.py:682
msgid "Create initial stock on part creation"
msgstr ""
-#: common/models.py:702
+#: common/models.py:688
msgid "Internal Prices"
msgstr ""
-#: common/models.py:703
+#: common/models.py:689
msgid "Enable internal prices for parts"
msgstr ""
-#: common/models.py:709
+#: common/models.py:695
msgid "Internal Price as BOM-Price"
msgstr ""
-#: common/models.py:710
+#: common/models.py:696
msgid "Use the internal price (if set) in BOM-price calculations"
msgstr ""
-#: common/models.py:716 templates/stats.html:25
+#: common/models.py:702 templates/stats.html:25
msgid "Debug Mode"
msgstr ""
-#: common/models.py:717
+#: common/models.py:703
msgid "Generate reports in debug mode (HTML output)"
msgstr ""
-#: common/models.py:723
+#: common/models.py:709
msgid "Page Size"
msgstr ""
-#: common/models.py:724
+#: common/models.py:710
msgid "Default page size for PDF reports"
msgstr ""
-#: common/models.py:734
+#: common/models.py:720
msgid "Test Reports"
msgstr ""
-#: common/models.py:735
+#: common/models.py:721
msgid "Enable generation of test reports"
msgstr ""
-#: common/models.py:741
+#: common/models.py:727
msgid "Stock Expiry"
msgstr ""
-#: common/models.py:742
+#: common/models.py:728
msgid "Enable stock expiry functionality"
msgstr ""
-#: common/models.py:748
+#: common/models.py:734
msgid "Sell Expired Stock"
msgstr ""
-#: common/models.py:749
+#: common/models.py:735
msgid "Allow sale of expired stock"
msgstr ""
-#: common/models.py:755
+#: common/models.py:741
msgid "Stock Stale Time"
msgstr ""
-#: common/models.py:756
+#: common/models.py:742
msgid "Number of days stock items are considered stale before expiring"
msgstr ""
-#: common/models.py:758
+#: common/models.py:744
msgid "days"
msgstr "jours"
-#: common/models.py:763
+#: common/models.py:749
msgid "Build Expired Stock"
msgstr ""
-#: common/models.py:764
+#: common/models.py:750
msgid "Allow building with expired stock"
msgstr ""
-#: common/models.py:770
+#: common/models.py:756
msgid "Stock Ownership Control"
msgstr ""
-#: common/models.py:771
+#: common/models.py:757
msgid "Enable ownership control over stock locations and items"
msgstr ""
-#: common/models.py:777
+#: common/models.py:763
msgid "Group by Part"
msgstr ""
-#: common/models.py:778
+#: common/models.py:764
msgid "Group stock items by part reference in table views"
msgstr ""
-#: common/models.py:784
+#: common/models.py:770
msgid "Build Order Reference Prefix"
msgstr ""
-#: common/models.py:785
+#: common/models.py:771
msgid "Prefix value for build order reference"
msgstr ""
-#: common/models.py:790
+#: common/models.py:776
msgid "Build Order Reference Regex"
msgstr ""
-#: common/models.py:791
+#: common/models.py:777
msgid "Regular expression pattern for matching build order reference"
msgstr ""
-#: common/models.py:795
+#: common/models.py:781
msgid "Sales Order Reference Prefix"
msgstr ""
-#: common/models.py:796
+#: common/models.py:782
msgid "Prefix value for sales order reference"
msgstr ""
-#: common/models.py:801
+#: common/models.py:787
msgid "Purchase Order Reference Prefix"
msgstr ""
-#: common/models.py:802
+#: common/models.py:788
msgid "Prefix value for purchase order reference"
msgstr ""
-#: common/models.py:826
+#: common/models.py:794
+msgid "Enable build"
+msgstr ""
+
+#: common/models.py:795
+msgid "Enable build functionality in InvenTree interface"
+msgstr ""
+
+#: common/models.py:800
+msgid "Enable buy"
+msgstr ""
+
+#: common/models.py:801
+msgid "Enable buy functionality in InvenTree interface"
+msgstr ""
+
+#: common/models.py:806
+msgid "Enable sell"
+msgstr ""
+
+#: common/models.py:807
+msgid "Enable sell functionality in InvenTree interface"
+msgstr ""
+
+#: common/models.py:812
+msgid "Enable stock"
+msgstr ""
+
+#: common/models.py:813
+msgid "Enable stock functionality in InvenTree interface"
+msgstr ""
+
+#: common/models.py:818
+msgid "Enable SO"
+msgstr ""
+
+#: common/models.py:819
+msgid "Enable SO functionality in InvenTree interface"
+msgstr ""
+
+#: common/models.py:824
+msgid "Enable PO"
+msgstr ""
+
+#: common/models.py:825
+msgid "Enable PO functionality in InvenTree interface"
+msgstr ""
+
+#: common/models.py:850
msgid "Show starred parts"
msgstr ""
-#: common/models.py:827
+#: common/models.py:851
msgid "Show starred parts on the homepage"
msgstr ""
-#: common/models.py:832
+#: common/models.py:856
msgid "Show latest parts"
msgstr ""
-#: common/models.py:833
+#: common/models.py:857
msgid "Show latest parts on the homepage"
msgstr ""
-#: common/models.py:838
+#: common/models.py:862
msgid "Recent Part Count"
msgstr ""
-#: common/models.py:839
+#: common/models.py:863
msgid "Number of recent parts to display on index page"
msgstr ""
-#: common/models.py:845
+#: common/models.py:869
msgid "Show unvalidated BOMs"
msgstr ""
-#: common/models.py:846
+#: common/models.py:870
msgid "Show BOMs that await validation on the homepage"
msgstr ""
-#: common/models.py:851
+#: common/models.py:875
msgid "Show recent stock changes"
msgstr ""
-#: common/models.py:852
+#: common/models.py:876
msgid "Show recently changed stock items on the homepage"
msgstr ""
-#: common/models.py:857
+#: common/models.py:881
msgid "Recent Stock Count"
msgstr ""
-#: common/models.py:858
+#: common/models.py:882
msgid "Number of recent stock items to display on index page"
msgstr ""
-#: common/models.py:863
+#: common/models.py:887
msgid "Show low stock"
msgstr ""
-#: common/models.py:864
+#: common/models.py:888
msgid "Show low stock items on the homepage"
msgstr ""
-#: common/models.py:869
+#: common/models.py:893
msgid "Show depleted stock"
msgstr ""
-#: common/models.py:870
+#: common/models.py:894
msgid "Show depleted stock items on the homepage"
msgstr ""
-#: common/models.py:875
+#: common/models.py:899
msgid "Show needed stock"
msgstr ""
-#: common/models.py:876
+#: common/models.py:900
msgid "Show stock items needed for builds on the homepage"
msgstr ""
-#: common/models.py:881
+#: common/models.py:905
msgid "Show expired stock"
msgstr ""
-#: common/models.py:882
+#: common/models.py:906
msgid "Show expired stock items on the homepage"
msgstr ""
-#: common/models.py:887
+#: common/models.py:911
msgid "Show stale stock"
msgstr ""
-#: common/models.py:888
+#: common/models.py:912
msgid "Show stale stock items on the homepage"
msgstr ""
-#: common/models.py:893
+#: common/models.py:917
msgid "Show pending builds"
msgstr ""
-#: common/models.py:894
+#: common/models.py:918
msgid "Show pending builds on the homepage"
msgstr ""
-#: common/models.py:899
+#: common/models.py:923
msgid "Show overdue builds"
msgstr ""
-#: common/models.py:900
+#: common/models.py:924
msgid "Show overdue builds on the homepage"
msgstr ""
-#: common/models.py:905
+#: common/models.py:929
msgid "Show outstanding POs"
msgstr ""
-#: common/models.py:906
+#: common/models.py:930
msgid "Show outstanding POs on the homepage"
msgstr ""
-#: common/models.py:911
+#: common/models.py:935
msgid "Show overdue POs"
msgstr ""
-#: common/models.py:912
+#: common/models.py:936
msgid "Show overdue POs on the homepage"
msgstr ""
-#: common/models.py:917
+#: common/models.py:941
msgid "Show outstanding SOs"
msgstr ""
-#: common/models.py:918
+#: common/models.py:942
msgid "Show outstanding SOs on the homepage"
msgstr ""
-#: common/models.py:923
+#: common/models.py:947
msgid "Show overdue SOs"
msgstr ""
-#: common/models.py:924
+#: common/models.py:948
msgid "Show overdue SOs on the homepage"
msgstr ""
-#: common/models.py:930
+#: common/models.py:954
msgid "Inline label display"
msgstr ""
-#: common/models.py:931
+#: common/models.py:955
msgid "Display PDF labels in the browser, instead of downloading as a file"
msgstr ""
-#: common/models.py:937
+#: common/models.py:961
msgid "Inline report display"
msgstr ""
-#: common/models.py:938
+#: common/models.py:962
msgid "Display PDF reports in the browser, instead of downloading as a file"
msgstr ""
-#: common/models.py:944
+#: common/models.py:968
msgid "Search Preview Results"
msgstr ""
-#: common/models.py:945
+#: common/models.py:969
msgid "Number of results to show in search preview window"
msgstr ""
-#: common/models.py:1002 company/forms.py:43
+#: common/models.py:1026 company/forms.py:43
msgid "Price break quantity"
msgstr ""
-#: common/models.py:1009 company/templates/company/supplier_part.html:231
-#: templates/js/translated/part.js:1153
+#: common/models.py:1033 company/templates/company/supplier_part.html:231
+#: templates/js/translated/part.js:1322
msgid "Price"
msgstr ""
-#: common/models.py:1010
+#: common/models.py:1034
msgid "Unit price at specified quantity"
msgstr ""
-#: common/models.py:1103
+#: common/models.py:1127
msgid "Default"
msgstr ""
@@ -2123,7 +2200,7 @@ msgstr ""
#: order/templates/order/po_navbar.html:19
#: order/templates/order/po_navbar.html:22
#: order/templates/order/purchase_order_detail.html:26 order/views.py:290
-#: part/templates/part/bom_upload/upload_file.html:45
+#: part/templates/part/bom_upload/upload_file.html:65
#: part/templates/part/import_wizard/part_upload.html:45 part/views.py:268
#: part/views.py:882
msgid "Upload File"
@@ -2154,7 +2231,7 @@ msgstr ""
#: order/templates/order/order_wizard/po_upload.html:40
#: 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:43
+#: part/templates/part/bom_upload/upload_file.html:63
#: 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:43
@@ -2169,244 +2246,249 @@ msgstr ""
msgid "Image URL"
msgstr ""
-#: company/models.py:102
+#: company/models.py:104
msgid "Company description"
msgstr ""
-#: company/models.py:103
+#: company/models.py:105
msgid "Description of the company"
msgstr ""
-#: company/models.py:109 company/templates/company/company_base.html:70
-#: templates/js/translated/company.js:303
+#: company/models.py:111 company/templates/company/company_base.html:70
+#: templates/js/translated/company.js:348
msgid "Website"
msgstr ""
-#: company/models.py:110
+#: company/models.py:112
msgid "Company website URL"
msgstr ""
-#: company/models.py:114 company/templates/company/company_base.html:88
+#: company/models.py:116 company/templates/company/company_base.html:88
msgid "Address"
msgstr ""
-#: company/models.py:115
+#: company/models.py:117
msgid "Company address"
msgstr ""
-#: company/models.py:118
+#: company/models.py:120
msgid "Phone number"
msgstr ""
-#: company/models.py:119
+#: company/models.py:121
msgid "Contact phone number"
msgstr ""
-#: company/models.py:122 company/templates/company/company_base.html:102
+#: company/models.py:124 company/templates/company/company_base.html:102
msgid "Email"
msgstr ""
-#: company/models.py:122
+#: company/models.py:124
msgid "Contact email address"
msgstr ""
-#: company/models.py:125 company/templates/company/company_base.html:109
+#: company/models.py:127 company/templates/company/company_base.html:109
msgid "Contact"
msgstr ""
-#: company/models.py:126
+#: company/models.py:128
msgid "Point of contact"
msgstr ""
-#: company/models.py:128 company/models.py:345 company/models.py:513
-#: order/models.py:160 part/models.py:712
+#: company/models.py:130 company/models.py:347 company/models.py:563
+#: order/models.py:160 part/models.py:714
#: report/templates/report/inventree_build_order_base.html:165
-#: templates/js/translated/company.js:486
-#: templates/js/translated/company.js:768 templates/js/translated/part.js:819
+#: templates/js/translated/company.js:535
+#: templates/js/translated/company.js:823 templates/js/translated/part.js:972
msgid "Link"
msgstr ""
-#: company/models.py:128
+#: company/models.py:130
msgid "Link to external company information"
msgstr ""
-#: company/models.py:136 part/models.py:722
+#: company/models.py:138 part/models.py:724
msgid "Image"
msgstr ""
-#: company/models.py:141
+#: company/models.py:143
msgid "is customer"
msgstr ""
-#: company/models.py:141
+#: company/models.py:143
msgid "Do you sell items to this company?"
msgstr ""
-#: company/models.py:143
+#: company/models.py:145
msgid "is supplier"
msgstr ""
-#: company/models.py:143
+#: company/models.py:145
msgid "Do you purchase items from this company?"
msgstr ""
-#: company/models.py:145
+#: company/models.py:147
msgid "is manufacturer"
msgstr ""
-#: company/models.py:145
+#: company/models.py:147
msgid "Does this company manufacture parts?"
msgstr ""
-#: company/models.py:149 company/serializers.py:245
-#: company/templates/company/company_base.html:76
+#: company/models.py:151 company/serializers.py:264
+#: company/templates/company/company_base.html:76 stock/serializers.py:155
msgid "Currency"
msgstr ""
-#: company/models.py:152
+#: company/models.py:154
msgid "Default currency used for this company"
msgstr ""
-#: company/models.py:317 company/models.py:484 stock/models.py:448
+#: company/models.py:319 company/models.py:534 stock/models.py:454
#: stock/templates/stock/item_base.html:237
msgid "Base Part"
msgstr ""
-#: company/models.py:321 company/models.py:488 order/views.py:1082
+#: company/models.py:323 company/models.py:538 order/views.py:1082
msgid "Select part"
msgstr ""
-#: company/models.py:332 company/templates/company/company_base.html:116
+#: company/models.py:334 company/templates/company/company_base.html:116
#: company/templates/company/manufacturer_part.html:89
#: company/templates/company/supplier_part.html:98 part/bom.py:170
#: part/bom.py:241 stock/templates/stock/item_base.html:366
-#: templates/js/translated/company.js:287
-#: templates/js/translated/company.js:463
-#: templates/js/translated/company.js:739
+#: templates/js/translated/company.js:332
+#: templates/js/translated/company.js:512
+#: templates/js/translated/company.js:794 templates/js/translated/part.js:222
msgid "Manufacturer"
msgstr ""
-#: company/models.py:333
+#: company/models.py:335 templates/js/translated/part.js:223
msgid "Select manufacturer"
msgstr ""
-#: company/models.py:339 company/templates/company/manufacturer_part.html:93
-#: company/templates/company/supplier_part.html:106
-#: order/templates/order/purchase_order_detail.html:331 part/bom.py:171
-#: part/bom.py:242 templates/js/translated/company.js:479
-#: templates/js/translated/company.js:757
+#: company/models.py:341 company/templates/company/manufacturer_part.html:93
+#: company/templates/company/supplier_part.html:106 part/bom.py:171
+#: part/bom.py:242 templates/js/translated/company.js:528
+#: templates/js/translated/company.js:812 templates/js/translated/order.js:505
+#: templates/js/translated/part.js:233
msgid "MPN"
msgstr ""
-#: company/models.py:340
+#: company/models.py:342 templates/js/translated/part.js:234
msgid "Manufacturer Part Number"
msgstr ""
-#: company/models.py:346
+#: company/models.py:348
msgid "URL for external manufacturer part link"
msgstr ""
-#: company/models.py:352
+#: company/models.py:354
msgid "Manufacturer part description"
msgstr ""
-#: company/models.py:406 company/models.py:507
+#: company/models.py:408 company/models.py:557
#: company/templates/company/manufacturer_part.html:6
#: company/templates/company/manufacturer_part.html:23
#: stock/templates/stock/item_base.html:376
msgid "Manufacturer Part"
msgstr ""
-#: company/models.py:413
+#: company/models.py:415
msgid "Parameter name"
msgstr ""
-#: company/models.py:419
+#: company/models.py:421
#: report/templates/report/inventree_test_report_base.html:90
-#: stock/models.py:1808 templates/InvenTree/settings/header.html:8
-#: templates/js/translated/company.js:589 templates/js/translated/part.js:480
-#: templates/js/translated/stock.js:505
+#: stock/models.py:1819 templates/InvenTree/settings/header.html:8
+#: templates/js/translated/company.js:642 templates/js/translated/part.js:612
+#: templates/js/translated/stock.js:576
msgid "Value"
msgstr ""
-#: company/models.py:420
+#: company/models.py:422
msgid "Parameter value"
msgstr ""
-#: company/models.py:426 part/models.py:797 part/models.py:2204
-#: templates/js/translated/company.js:595 templates/js/translated/part.js:486
+#: company/models.py:428 part/models.py:799 part/models.py:2220
+#: templates/js/translated/company.js:648 templates/js/translated/part.js:618
msgid "Units"
msgstr ""
-#: company/models.py:427
+#: company/models.py:429
msgid "Parameter units"
msgstr ""
-#: company/models.py:494 company/templates/company/company_base.html:121
+#: company/models.py:501
+msgid "Linked manufacturer part must reference the same base part"
+msgstr ""
+
+#: company/models.py:544 company/templates/company/company_base.html:121
#: company/templates/company/supplier_part.html:88 order/models.py:260
#: order/templates/order/order_base.html:92
#: order/templates/order/order_wizard/select_pos.html:30 part/bom.py:175
#: part/bom.py:286 stock/templates/stock/item_base.html:383
-#: templates/js/translated/company.js:291
-#: templates/js/translated/company.js:713 templates/js/translated/order.js:254
+#: templates/js/translated/company.js:336
+#: templates/js/translated/company.js:768 templates/js/translated/order.js:328
+#: templates/js/translated/part.js:203
msgid "Supplier"
msgstr ""
-#: company/models.py:495
+#: company/models.py:545 templates/js/translated/part.js:204
msgid "Select supplier"
msgstr ""
-#: company/models.py:500 company/templates/company/supplier_part.html:92
-#: order/templates/order/purchase_order_detail.html:318 part/bom.py:176
-#: part/bom.py:287
+#: company/models.py:550 company/templates/company/supplier_part.html:92
+#: part/bom.py:176 part/bom.py:287 templates/js/translated/order.js:492
+#: templates/js/translated/part.js:214
msgid "SKU"
msgstr ""
-#: company/models.py:501
+#: company/models.py:551 templates/js/translated/part.js:215
msgid "Supplier stock keeping unit"
msgstr ""
-#: company/models.py:508
+#: company/models.py:558
msgid "Select manufacturer part"
msgstr ""
-#: company/models.py:514
+#: company/models.py:564
msgid "URL for external supplier part link"
msgstr ""
-#: company/models.py:520
+#: company/models.py:570
msgid "Supplier part description"
msgstr ""
-#: company/models.py:525 company/templates/company/supplier_part.html:120
-#: part/models.py:2352 report/templates/report/inventree_po_report.html:93
+#: company/models.py:575 company/templates/company/supplier_part.html:120
+#: part/models.py:2368 report/templates/report/inventree_po_report.html:93
#: report/templates/report/inventree_so_report.html:93
msgid "Note"
msgstr ""
-#: company/models.py:529 part/models.py:1590
+#: company/models.py:579 part/models.py:1599
msgid "base cost"
msgstr ""
-#: company/models.py:529 part/models.py:1590
+#: company/models.py:579 part/models.py:1599
msgid "Minimum charge (e.g. stocking fee)"
msgstr ""
-#: company/models.py:531 company/templates/company/supplier_part.html:113
-#: stock/models.py:472 stock/templates/stock/item_base.html:324
-#: templates/js/translated/company.js:789 templates/js/translated/stock.js:1086
+#: company/models.py:581 company/templates/company/supplier_part.html:113
+#: stock/models.py:478 stock/templates/stock/item_base.html:324
+#: templates/js/translated/company.js:844 templates/js/translated/stock.js:1057
msgid "Packaging"
msgstr ""
-#: company/models.py:531
+#: company/models.py:581
msgid "Part packaging"
msgstr ""
-#: company/models.py:533 part/models.py:1592
+#: company/models.py:583 part/models.py:1601
msgid "multiple"
msgstr ""
-#: company/models.py:533
+#: company/models.py:583
msgid "Order multiple"
msgstr ""
@@ -2420,7 +2502,7 @@ msgstr ""
#: company/templates/company/company_base.html:9
#: company/templates/company/company_base.html:35
-#: templates/InvenTree/search.html:304 templates/js/translated/company.js:276
+#: templates/InvenTree/search.html:304 templates/js/translated/company.js:321
msgid "Company"
msgstr ""
@@ -2435,7 +2517,7 @@ msgid "Download image from URL"
msgstr ""
#: company/templates/company/company_base.html:46
-#: templates/js/translated/order.js:83
+#: templates/js/translated/order.js:117
msgid "Create Purchase Order"
msgstr ""
@@ -2460,16 +2542,16 @@ msgstr ""
msgid "Phone"
msgstr ""
-#: company/templates/company/company_base.html:126 order/models.py:544
-#: order/templates/order/sales_order_base.html:94 stock/models.py:490
-#: stock/models.py:491 stock/templates/stock/item_base.html:276
-#: templates/js/translated/company.js:283 templates/js/translated/order.js:351
-#: templates/js/translated/stock.js:1467
+#: company/templates/company/company_base.html:126 order/models.py:550
+#: order/templates/order/sales_order_base.html:94 stock/models.py:496
+#: stock/models.py:497 stock/templates/stock/item_base.html:276
+#: templates/js/translated/company.js:328 templates/js/translated/order.js:692
+#: templates/js/translated/stock.js:1608
msgid "Customer"
msgstr ""
#: company/templates/company/company_base.html:193
-#: part/templates/part/part_base.html:405
+#: part/templates/part/part_base.html:418
msgid "Upload Image"
msgstr ""
@@ -2490,8 +2572,8 @@ msgstr ""
msgid "New Supplier Part"
msgstr ""
-#: company/templates/company/detail.html:28
-#: company/templates/company/detail.html:70
+#: company/templates/company/detail.html:27
+#: company/templates/company/detail.html:67
#: company/templates/company/manufacturer_part.html:112
#: company/templates/company/manufacturer_part.html:136
#: part/templates/part/category.html:135 part/templates/part/detail.html:292
@@ -2499,106 +2581,106 @@ msgstr ""
msgid "Options"
msgstr ""
-#: company/templates/company/detail.html:33
-#: company/templates/company/detail.html:75
+#: company/templates/company/detail.html:32
+#: company/templates/company/detail.html:72
#: part/templates/part/category.html:140
msgid "Order parts"
msgstr ""
-#: company/templates/company/detail.html:36
-#: company/templates/company/detail.html:78
+#: company/templates/company/detail.html:35
+#: company/templates/company/detail.html:75
msgid "Delete parts"
msgstr ""
-#: company/templates/company/detail.html:36
-#: company/templates/company/detail.html:78
+#: company/templates/company/detail.html:35
+#: company/templates/company/detail.html:75
msgid "Delete Parts"
msgstr ""
-#: company/templates/company/detail.html:56 templates/InvenTree/search.html:149
+#: company/templates/company/detail.html:54 templates/InvenTree/search.html:149
msgid "Manufacturer Parts"
msgstr ""
-#: company/templates/company/detail.html:64
+#: company/templates/company/detail.html:62
msgid "Create new manufacturer part"
msgstr ""
-#: company/templates/company/detail.html:65 part/templates/part/detail.html:312
+#: company/templates/company/detail.html:63 part/templates/part/detail.html:312
msgid "New Manufacturer Part"
msgstr ""
-#: company/templates/company/detail.html:97
+#: company/templates/company/detail.html:93
msgid "Supplier Stock"
msgstr ""
-#: company/templates/company/detail.html:106
-#: company/templates/company/navbar.html:40
-#: company/templates/company/navbar.html:43
+#: company/templates/company/detail.html:102
+#: company/templates/company/navbar.html:46
+#: company/templates/company/navbar.html:49
#: order/templates/order/purchase_orders.html:8
#: order/templates/order/purchase_orders.html:13
-#: part/templates/part/detail.html:50 part/templates/part/navbar.html:71
-#: part/templates/part/navbar.html:74 templates/InvenTree/index.html:260
+#: part/templates/part/detail.html:50 part/templates/part/navbar.html:82
+#: part/templates/part/navbar.html:85 templates/InvenTree/index.html:260
#: templates/InvenTree/search.html:325
#: templates/InvenTree/settings/navbar.html:107
-#: templates/InvenTree/settings/navbar.html:109 templates/navbar.html:37
+#: templates/InvenTree/settings/navbar.html:109 templates/navbar.html:44
#: users/models.py:45
msgid "Purchase Orders"
msgstr ""
-#: company/templates/company/detail.html:112
+#: company/templates/company/detail.html:108
#: order/templates/order/purchase_orders.html:20
msgid "Create new purchase order"
msgstr ""
-#: company/templates/company/detail.html:113
+#: company/templates/company/detail.html:109
#: order/templates/order/purchase_orders.html:21
msgid "New Purchase Order"
msgstr ""
-#: company/templates/company/detail.html:128
-#: company/templates/company/navbar.html:49
-#: company/templates/company/navbar.html:52
+#: company/templates/company/detail.html:124
+#: company/templates/company/navbar.html:55
+#: company/templates/company/navbar.html:58
#: order/templates/order/sales_orders.html:8
#: order/templates/order/sales_orders.html:13
-#: part/templates/part/detail.html:71 part/templates/part/navbar.html:79
-#: part/templates/part/navbar.html:82 templates/InvenTree/index.html:291
+#: part/templates/part/detail.html:71 part/templates/part/navbar.html:91
+#: part/templates/part/navbar.html:94 templates/InvenTree/index.html:291
#: templates/InvenTree/search.html:345
#: templates/InvenTree/settings/navbar.html:113
-#: templates/InvenTree/settings/navbar.html:115 templates/navbar.html:46
+#: templates/InvenTree/settings/navbar.html:115 templates/navbar.html:55
#: users/models.py:46
msgid "Sales Orders"
msgstr ""
-#: company/templates/company/detail.html:134
+#: company/templates/company/detail.html:130
#: order/templates/order/sales_orders.html:20
msgid "Create new sales order"
msgstr ""
-#: company/templates/company/detail.html:135
+#: company/templates/company/detail.html:131
#: order/templates/order/sales_orders.html:21
msgid "New Sales Order"
msgstr ""
-#: company/templates/company/detail.html:151
-#: company/templates/company/navbar.html:55
-#: company/templates/company/navbar.html:58
-#: templates/js/translated/build.js:597
+#: company/templates/company/detail.html:147
+#: company/templates/company/navbar.html:61
+#: company/templates/company/navbar.html:64
+#: templates/js/translated/build.js:620
msgid "Assigned Stock"
msgstr ""
-#: company/templates/company/detail.html:169
+#: company/templates/company/detail.html:165
msgid "Company Notes"
msgstr ""
#: company/templates/company/detail.html:364
#: company/templates/company/manufacturer_part.html:200
-#: part/templates/part/detail.html:826
+#: part/templates/part/detail.html:357
msgid "Delete Supplier Parts?"
msgstr ""
#: company/templates/company/detail.html:365
#: company/templates/company/manufacturer_part.html:201
-#: part/templates/part/detail.html:827
+#: part/templates/part/detail.html:358
msgid "All selected supplier parts will be deleted"
msgstr ""
@@ -2609,17 +2691,17 @@ msgstr ""
#: company/templates/company/manufacturer_part.html:40
#: company/templates/company/supplier_part.html:40
#: company/templates/company/supplier_part.html:146
-#: part/templates/part/detail.html:55 part/templates/part/part_base.html:109
+#: part/templates/part/detail.html:55 part/templates/part/part_base.html:116
msgid "Order part"
msgstr ""
#: company/templates/company/manufacturer_part.html:45
-#: templates/js/translated/company.js:511
+#: templates/js/translated/company.js:560
msgid "Edit manufacturer part"
msgstr ""
#: company/templates/company/manufacturer_part.html:49
-#: templates/js/translated/company.js:512
+#: templates/js/translated/company.js:561
msgid "Delete manufacturer part"
msgstr ""
@@ -2634,9 +2716,9 @@ msgstr ""
#: company/templates/company/manufacturer_part.html:103
#: company/templates/company/manufacturer_part_navbar.html:21
-#: company/views.py:49 part/templates/part/navbar.html:65
-#: part/templates/part/navbar.html:68 part/templates/part/prices.html:144
-#: templates/InvenTree/search.html:316 templates/navbar.html:35
+#: company/views.py:49 part/templates/part/navbar.html:75
+#: part/templates/part/navbar.html:78 part/templates/part/prices.html:163
+#: templates/InvenTree/search.html:316 templates/navbar.html:41
msgid "Suppliers"
msgstr ""
@@ -2649,8 +2731,8 @@ msgstr ""
#: company/templates/company/manufacturer_part.html:138
#: company/templates/company/manufacturer_part.html:239
#: part/templates/part/detail.html:214 part/templates/part/detail.html:294
-#: part/templates/part/detail.html:317 templates/js/translated/company.js:377
-#: users/models.py:194
+#: part/templates/part/detail.html:317 templates/js/translated/company.js:424
+#: templates/js/translated/helpers.js:31 users/models.py:194
msgid "Delete"
msgstr ""
@@ -2659,8 +2741,8 @@ msgstr ""
#: company/templates/company/manufacturer_part_navbar.html:14
#: part/templates/part/category_navbar.html:38
#: part/templates/part/category_navbar.html:41
-#: part/templates/part/detail.html:155 part/templates/part/navbar.html:14
-#: part/templates/part/navbar.html:17
+#: part/templates/part/detail.html:155 part/templates/part/navbar.html:20
+#: part/templates/part/navbar.html:23
msgid "Parameters"
msgstr ""
@@ -2676,7 +2758,7 @@ msgid "Delete parameters"
msgstr ""
#: company/templates/company/manufacturer_part.html:176
-#: part/templates/part/detail.html:719
+#: part/templates/part/detail.html:834
msgid "Add Parameter"
msgstr ""
@@ -2693,18 +2775,18 @@ msgid "Manufacturer Part Stock"
msgstr ""
#: company/templates/company/manufacturer_part_navbar.html:29
-#: company/templates/company/navbar.html:34
+#: company/templates/company/navbar.html:39
#: company/templates/company/supplier_part_navbar.html:15
-#: part/templates/part/navbar.html:31 stock/api.py:53
+#: part/templates/part/navbar.html:38 stock/api.py:54
#: stock/templates/stock/loc_link.html:7 stock/templates/stock/location.html:36
#: stock/templates/stock/stock_app_base.html:10
#: templates/InvenTree/index.html:150 templates/InvenTree/search.html:196
#: templates/InvenTree/search.html:232
#: templates/InvenTree/settings/navbar.html:95
#: templates/InvenTree/settings/navbar.html:97
-#: templates/js/translated/part.js:401 templates/js/translated/part.js:626
-#: templates/js/translated/part.js:786 templates/js/translated/stock.js:133
-#: templates/js/translated/stock.js:935 templates/navbar.html:26
+#: templates/js/translated/part.js:529 templates/js/translated/part.js:758
+#: templates/js/translated/part.js:934 templates/js/translated/stock.js:202
+#: templates/js/translated/stock.js:850 templates/navbar.html:32
msgid "Stock"
msgstr ""
@@ -2717,41 +2799,41 @@ msgstr ""
msgid "Orders"
msgstr ""
-#: company/templates/company/navbar.html:13
-#: company/templates/company/navbar.html:16
+#: company/templates/company/navbar.html:17
+#: company/templates/company/navbar.html:20
msgid "Manufactured Parts"
msgstr ""
-#: company/templates/company/navbar.html:22
-#: company/templates/company/navbar.html:25
+#: company/templates/company/navbar.html:26
+#: company/templates/company/navbar.html:29
msgid "Supplied Parts"
msgstr ""
-#: company/templates/company/navbar.html:31 part/templates/part/navbar.html:28
+#: company/templates/company/navbar.html:36 part/templates/part/navbar.html:35
#: stock/templates/stock/location.html:119
#: stock/templates/stock/location.html:134
#: stock/templates/stock/location.html:148
#: stock/templates/stock/location_navbar.html:18
#: stock/templates/stock/location_navbar.html:21
-#: templates/InvenTree/search.html:198 templates/js/translated/stock.js:1366
+#: templates/InvenTree/search.html:198 templates/js/translated/stock.js:1507
#: templates/stats.html:93 templates/stats.html:102 users/models.py:43
msgid "Stock Items"
msgstr ""
#: company/templates/company/supplier_part.html:7
-#: company/templates/company/supplier_part.html:24 stock/models.py:457
+#: company/templates/company/supplier_part.html:24 stock/models.py:463
#: stock/templates/stock/item_base.html:388
-#: templates/js/translated/company.js:729 templates/js/translated/stock.js:1058
+#: templates/js/translated/company.js:784 templates/js/translated/stock.js:1014
msgid "Supplier Part"
msgstr ""
#: company/templates/company/supplier_part.html:44
-#: templates/js/translated/company.js:802
+#: templates/js/translated/company.js:857
msgid "Edit supplier part"
msgstr ""
#: company/templates/company/supplier_part.html:48
-#: templates/js/translated/company.js:803
+#: templates/js/translated/company.js:858
msgid "Delete supplier part"
msgstr ""
@@ -2775,13 +2857,13 @@ msgid "Order Part"
msgstr ""
#: company/templates/company/supplier_part.html:158
-#: part/templates/part/navbar.html:58 part/templates/part/prices.html:7
+#: part/templates/part/navbar.html:67 part/templates/part/prices.html:7
msgid "Pricing Information"
msgstr ""
#: company/templates/company/supplier_part.html:164
#: company/templates/company/supplier_part.html:265
-#: part/templates/part/prices.html:253 part/views.py:1722
+#: part/templates/part/prices.html:271 part/views.py:1730
msgid "Add Price Break"
msgstr ""
@@ -2789,11 +2871,11 @@ msgstr ""
msgid "No price break information found"
msgstr ""
-#: company/templates/company/supplier_part.html:199 part/views.py:1784
+#: company/templates/company/supplier_part.html:199 part/views.py:1792
msgid "Delete Price Break"
msgstr ""
-#: company/templates/company/supplier_part.html:213 part/views.py:1770
+#: company/templates/company/supplier_part.html:213 part/views.py:1778
msgid "Edit Price Break"
msgstr ""
@@ -2817,8 +2899,8 @@ msgstr ""
msgid "New Supplier"
msgstr ""
-#: company/views.py:55 part/templates/part/prices.html:148
-#: templates/InvenTree/search.html:306 templates/navbar.html:36
+#: company/views.py:55 part/templates/part/prices.html:167
+#: templates/InvenTree/search.html:306 templates/navbar.html:42
msgid "Manufacturers"
msgstr ""
@@ -2827,7 +2909,7 @@ msgid "New Manufacturer"
msgstr ""
#: company/views.py:61 templates/InvenTree/search.html:336
-#: templates/navbar.html:45
+#: templates/navbar.html:53
msgid "Customers"
msgstr ""
@@ -2929,6 +3011,10 @@ msgstr ""
msgid "Part query filters (comma-separated value of key=value pairs)"
msgstr ""
+#: order/api.py:302
+msgid "Destination location must be specified"
+msgstr ""
+
#: order/forms.py:30 order/templates/order/order_base.html:47
msgid "Place order"
msgstr ""
@@ -2978,11 +3064,11 @@ msgstr ""
msgid "Order notes"
msgstr ""
-#: order/models.py:247 order/models.py:534
+#: order/models.py:247 order/models.py:540
msgid "Order reference"
msgstr ""
-#: order/models.py:252 order/models.py:549
+#: order/models.py:252 order/models.py:555
msgid "Purchase order status"
msgstr ""
@@ -2991,7 +3077,7 @@ msgid "Company from which the items are being ordered"
msgstr ""
#: order/models.py:264 order/templates/order/order_base.html:98
-#: templates/js/translated/order.js:263
+#: templates/js/translated/order.js:337
msgid "Supplier Reference"
msgstr ""
@@ -3023,7 +3109,7 @@ msgstr ""
msgid "Date order was completed"
msgstr ""
-#: order/models.py:313 stock/models.py:345 stock/models.py:1060
+#: order/models.py:313 stock/models.py:351 stock/models.py:1072
msgid "Quantity must be greater than zero"
msgstr ""
@@ -3031,150 +3117,182 @@ msgstr ""
msgid "Part supplier must match PO supplier"
msgstr ""
-#: order/models.py:416
+#: order/models.py:421
msgid "Lines can only be received against an order marked as 'Placed'"
msgstr ""
-#: order/models.py:420
+#: order/models.py:425
msgid "Quantity must be an integer"
msgstr ""
-#: order/models.py:422
+#: order/models.py:427
msgid "Quantity must be a positive number"
msgstr ""
-#: order/models.py:545
+#: order/models.py:551
msgid "Company to which the items are being sold"
msgstr ""
-#: order/models.py:551
+#: order/models.py:557
msgid "Customer Reference "
msgstr ""
-#: order/models.py:551
+#: order/models.py:557
msgid "Customer order reference code"
msgstr ""
-#: order/models.py:556
+#: order/models.py:562
msgid "Target date for order completion. Order will be overdue after this date."
msgstr ""
-#: order/models.py:559 templates/js/translated/order.js:392
+#: order/models.py:565 templates/js/translated/order.js:733
msgid "Shipment Date"
msgstr ""
-#: order/models.py:566
+#: order/models.py:572
msgid "shipped by"
msgstr ""
-#: order/models.py:610
+#: order/models.py:616
msgid "SalesOrder cannot be shipped as it is not currently pending"
msgstr ""
-#: order/models.py:707
+#: order/models.py:713
msgid "Item quantity"
msgstr ""
-#: order/models.py:713
+#: order/models.py:719
msgid "Line item reference"
msgstr ""
-#: order/models.py:715
+#: order/models.py:721
msgid "Line item notes"
msgstr ""
-#: order/models.py:745 order/models.py:823 templates/js/translated/order.js:442
+#: order/models.py:751 order/models.py:835 templates/js/translated/order.js:785
msgid "Order"
msgstr ""
-#: order/models.py:746 order/templates/order/order_base.html:9
+#: order/models.py:752 order/templates/order/order_base.html:9
#: order/templates/order/order_base.html:24
#: report/templates/report/inventree_po_report.html:77
#: stock/templates/stock/item_base.html:338
-#: templates/js/translated/order.js:232 templates/js/translated/stock.js:1037
-#: templates/js/translated/stock.js:1448
+#: templates/js/translated/order.js:306 templates/js/translated/stock.js:991
+#: templates/js/translated/stock.js:1589
msgid "Purchase Order"
msgstr ""
-#: order/models.py:767
+#: order/models.py:773
msgid "Supplier part"
msgstr ""
-#: order/models.py:770 order/templates/order/order_base.html:131
-#: order/templates/order/purchase_order_detail.html:388
+#: order/models.py:780 order/templates/order/order_base.html:131
#: order/templates/order/receive_parts.html:22
#: order/templates/order/sales_order_base.html:133
+#: templates/js/translated/order.js:573
msgid "Received"
msgstr ""
-#: order/models.py:770
+#: order/models.py:781
msgid "Number of items received"
msgstr ""
-#: order/models.py:776 part/templates/part/prices.html:157 stock/models.py:582
-#: stock/templates/stock/item_base.html:345
-#: templates/js/translated/stock.js:1081
+#: order/models.py:788 part/templates/part/prices.html:176 stock/models.py:588
+#: stock/serializers.py:147 stock/templates/stock/item_base.html:345
+#: templates/js/translated/stock.js:1045
msgid "Purchase Price"
msgstr ""
-#: order/models.py:777
+#: order/models.py:789
msgid "Unit purchase price"
msgstr ""
-#: order/models.py:785
+#: order/models.py:797
msgid "Where does the Purchaser want this item to be stored?"
msgstr ""
-#: order/models.py:831 part/templates/part/part_pricing.html:97
-#: part/templates/part/prices.html:97 part/templates/part/prices.html:266
+#: order/models.py:843 part/templates/part/part_pricing.html:112
+#: part/templates/part/prices.html:116 part/templates/part/prices.html:284
msgid "Sale Price"
msgstr ""
-#: order/models.py:832
+#: order/models.py:844
msgid "Unit sale price"
msgstr ""
-#: order/models.py:911 order/models.py:913
+#: order/models.py:923 order/models.py:925
msgid "Stock item has not been assigned"
msgstr ""
-#: order/models.py:917
+#: order/models.py:929
msgid "Cannot allocate stock item to a line with a different part"
msgstr ""
-#: order/models.py:919
+#: order/models.py:931
msgid "Cannot allocate stock to a line without a part"
msgstr ""
-#: order/models.py:922
+#: order/models.py:934
msgid "Allocation quantity cannot exceed stock quantity"
msgstr ""
-#: order/models.py:932
+#: order/models.py:944
msgid "Quantity must be 1 for serialized stock item"
msgstr ""
-#: order/models.py:937
+#: order/models.py:949
msgid "Line"
msgstr ""
-#: order/models.py:948
+#: order/models.py:960
msgid "Item"
msgstr ""
-#: order/models.py:949
+#: order/models.py:961
msgid "Select stock item to allocate"
msgstr ""
-#: order/models.py:952
+#: order/models.py:964
msgid "Enter stock allocation quantity"
msgstr ""
-#: order/serializers.py:139
+#: order/serializers.py:166
msgid "Purchase price currency"
msgstr ""
-#: order/serializers.py:360
+#: order/serializers.py:201
+msgid "Line Item"
+msgstr ""
+
+#: order/serializers.py:207
+msgid "Line item does not match purchase order"
+msgstr ""
+
+#: order/serializers.py:217 order/serializers.py:276
+msgid "Select destination location for received items"
+msgstr ""
+
+#: order/serializers.py:234
+msgid "Barcode Hash"
+msgstr ""
+
+#: order/serializers.py:235
+msgid "Unique identifier field"
+msgstr ""
+
+#: order/serializers.py:250
+msgid "Barcode is already in use"
+msgstr ""
+
+#: order/serializers.py:289
+msgid "Line items must be provided"
+msgstr ""
+
+#: order/serializers.py:299
+msgid "Supplied barcode values must be unique"
+msgstr ""
+
+#: order/serializers.py:514
msgid "Sale price currency"
msgstr ""
@@ -3227,14 +3345,12 @@ msgid "Edit Purchase Order"
msgstr ""
#: order/templates/order/order_base.html:196
-#: order/templates/order/purchase_order_detail.html:265
-#: stock/templates/stock/location.html:250
+#: stock/templates/stock/location.html:250 templates/js/translated/order.js:437
msgid "New Location"
msgstr ""
#: order/templates/order/order_base.html:197
-#: order/templates/order/purchase_order_detail.html:266
-#: stock/templates/stock/location.html:42
+#: stock/templates/stock/location.html:42 templates/js/translated/order.js:438
msgid "Create new stock location"
msgstr ""
@@ -3336,7 +3452,7 @@ msgid "Upload File for Purchase Order"
msgstr ""
#: order/templates/order/order_wizard/po_upload.html:18
-#: part/templates/part/bom_upload/upload_file.html:24
+#: part/templates/part/bom_upload/upload_file.html:34
#: part/templates/part/import_wizard/ajax_part_upload.html:10
#: part/templates/part/import_wizard/part_upload.html:21
#, python-format
@@ -3369,7 +3485,7 @@ msgstr ""
#: order/templates/order/order_wizard/select_parts.html:65
#, python-format
-msgid "Select a supplier for %(name)s"
+msgid "Select a supplier for %(name)s"
msgstr ""
#: order/templates/order/order_wizard/select_parts.html:77
@@ -3386,7 +3502,7 @@ msgid "Select existing purchase orders, or create new orders."
msgstr ""
#: order/templates/order/order_wizard/select_pos.html:31
-#: templates/js/translated/order.js:289 templates/js/translated/order.js:397
+#: templates/js/translated/order.js:363 templates/js/translated/order.js:738
msgid "Items"
msgstr ""
@@ -3425,9 +3541,9 @@ msgid "Purchase Order Items"
msgstr ""
#: order/templates/order/purchase_order_detail.html:23
-#: order/templates/order/purchase_order_detail.html:202
+#: order/templates/order/purchase_order_detail.html:203
#: order/templates/order/sales_order_detail.html:23
-#: order/templates/order/sales_order_detail.html:176
+#: order/templates/order/sales_order_detail.html:177
msgid "Add Line Item"
msgstr ""
@@ -3436,49 +3552,6 @@ msgstr ""
msgid "Order Notes"
msgstr ""
-#: order/templates/order/purchase_order_detail.html:238
-#: order/templates/order/sales_order_detail.html:518
-msgid "Edit Line Item"
-msgstr ""
-
-#: order/templates/order/purchase_order_detail.html:248
-#: order/templates/order/sales_order_detail.html:528
-msgid "Delete Line Item"
-msgstr ""
-
-#: order/templates/order/purchase_order_detail.html:279
-msgid "No line items found"
-msgstr ""
-
-#: order/templates/order/purchase_order_detail.html:307
-#: order/templates/order/sales_order_detail.html:353
-msgid "Total"
-msgstr ""
-
-#: order/templates/order/purchase_order_detail.html:360
-#: order/templates/order/sales_order_detail.html:376
-#: templates/js/translated/part.js:1128 templates/js/translated/part.js:1317
-msgid "Unit Price"
-msgstr ""
-
-#: order/templates/order/purchase_order_detail.html:367
-#: order/templates/order/sales_order_detail.html:383
-msgid "Total price"
-msgstr ""
-
-#: order/templates/order/purchase_order_detail.html:431
-#: order/templates/order/sales_order_detail.html:489
-msgid "Edit line item"
-msgstr ""
-
-#: order/templates/order/purchase_order_detail.html:432
-msgid "Delete line item"
-msgstr ""
-
-#: order/templates/order/purchase_order_detail.html:437
-msgid "Receive line item"
-msgstr ""
-
#: order/templates/order/purchase_orders.html:24
#: order/templates/order/sales_orders.html:24
msgid "Print Order Reports"
@@ -3486,18 +3559,18 @@ msgstr ""
#: order/templates/order/receive_parts.html:8
#, python-format
-msgid "Receive outstanding parts for %(order)s - %(desc)s"
+msgid "Receive outstanding parts for %(order)s - %(desc)s"
msgstr ""
-#: order/templates/order/receive_parts.html:14 part/api.py:49
-#: part/models.py:296 part/templates/part/cat_link.html:7
+#: order/templates/order/receive_parts.html:14 part/api.py:54
+#: part/models.py:298 part/templates/part/cat_link.html:7
#: part/templates/part/category.html:108 part/templates/part/category.html:122
#: part/templates/part/category_navbar.html:21
#: part/templates/part/category_navbar.html:24
#: templates/InvenTree/index.html:102 templates/InvenTree/search.html:114
#: templates/InvenTree/settings/navbar.html:83
#: templates/InvenTree/settings/navbar.html:85
-#: templates/js/translated/part.js:987 templates/navbar.html:23
+#: templates/js/translated/part.js:1154 templates/navbar.html:29
#: templates/stats.html:80 templates/stats.html:89 users/models.py:41
msgid "Parts"
msgstr ""
@@ -3511,7 +3584,7 @@ msgid "Order Code"
msgstr ""
#: order/templates/order/receive_parts.html:21
-#: part/templates/part/part_base.html:160 templates/js/translated/part.js:802
+#: part/templates/part/part_base.html:167 templates/js/translated/part.js:949
msgid "On Order"
msgstr ""
@@ -3540,7 +3613,7 @@ msgid "Sales Order Details"
msgstr ""
#: order/templates/order/sales_order_base.html:100
-#: templates/js/translated/order.js:364
+#: templates/js/translated/order.js:705
msgid "Customer Reference"
msgstr ""
@@ -3563,71 +3636,102 @@ msgstr ""
msgid "Sales Order Items"
msgstr ""
-#: order/templates/order/sales_order_detail.html:225
-#: templates/js/translated/bom.js:378 templates/js/translated/build.js:759
-#: templates/js/translated/build.js:1202
+#: order/templates/order/sales_order_detail.html:226
+#: templates/js/translated/bom.js:394 templates/js/translated/build.js:782
+#: templates/js/translated/build.js:1219
msgid "Actions"
msgstr ""
-#: order/templates/order/sales_order_detail.html:232
-#: templates/js/translated/build.js:645 templates/js/translated/build.js:1011
+#: order/templates/order/sales_order_detail.html:233
+#: templates/js/translated/build.js:668 templates/js/translated/build.js:1030
msgid "Edit stock allocation"
msgstr ""
-#: order/templates/order/sales_order_detail.html:233
-#: templates/js/translated/build.js:647 templates/js/translated/build.js:1012
+#: order/templates/order/sales_order_detail.html:234
+#: templates/js/translated/build.js:670 templates/js/translated/build.js:1031
msgid "Delete stock allocation"
msgstr ""
-#: order/templates/order/sales_order_detail.html:306
+#: order/templates/order/sales_order_detail.html:307
msgid "No matching line items"
msgstr ""
-#: order/templates/order/sales_order_detail.html:336
+#: order/templates/order/sales_order_detail.html:337
msgid "ID"
msgstr ""
-#: order/templates/order/sales_order_detail.html:404
-#: templates/js/translated/build.js:710 templates/js/translated/build.js:1007
+#: order/templates/order/sales_order_detail.html:354
+#: templates/js/translated/order.js:481
+msgid "Total"
+msgstr ""
+
+#: order/templates/order/sales_order_detail.html:377
+#: templates/js/translated/order.js:534 templates/js/translated/part.js:1296
+#: templates/js/translated/part.js:1507
+msgid "Unit Price"
+msgstr ""
+
+#: order/templates/order/sales_order_detail.html:384
+#: templates/js/translated/order.js:543
+msgid "Total price"
+msgstr ""
+
+#: order/templates/order/sales_order_detail.html:405
+#: templates/js/translated/build.js:733 templates/js/translated/build.js:1026
msgid "Allocated"
msgstr ""
-#: order/templates/order/sales_order_detail.html:406
+#: order/templates/order/sales_order_detail.html:407
msgid "Fulfilled"
msgstr ""
-#: order/templates/order/sales_order_detail.html:443
+#: order/templates/order/sales_order_detail.html:444
msgid "PO"
msgstr ""
-#: order/templates/order/sales_order_detail.html:473
+#: order/templates/order/sales_order_detail.html:474
msgid "Allocate serial numbers"
msgstr ""
-#: order/templates/order/sales_order_detail.html:476
-#: templates/js/translated/build.js:773
+#: order/templates/order/sales_order_detail.html:477
+#: templates/js/translated/build.js:796
msgid "Allocate stock"
msgstr ""
-#: order/templates/order/sales_order_detail.html:479
+#: order/templates/order/sales_order_detail.html:480
msgid "Purchase stock"
msgstr ""
-#: order/templates/order/sales_order_detail.html:483
-#: templates/js/translated/build.js:766 templates/js/translated/build.js:1210
+#: order/templates/order/sales_order_detail.html:484
+#: templates/js/translated/build.js:789 templates/js/translated/build.js:1227
msgid "Build stock"
msgstr ""
-#: order/templates/order/sales_order_detail.html:486
-#: order/templates/order/sales_order_detail.html:605
+#: order/templates/order/sales_order_detail.html:487
+#: order/templates/order/sales_order_detail.html:606
msgid "Calculate price"
msgstr ""
#: order/templates/order/sales_order_detail.html:490
+#: templates/js/translated/order.js:616
+msgid "Edit line item"
+msgstr ""
+
+#: order/templates/order/sales_order_detail.html:491
msgid "Delete line item "
msgstr ""
-#: order/templates/order/sales_order_detail.html:611
+#: order/templates/order/sales_order_detail.html:519
+#: templates/js/translated/order.js:403
+msgid "Edit Line Item"
+msgstr ""
+
+#: order/templates/order/sales_order_detail.html:529
+#: templates/js/translated/order.js:415
+msgid "Delete Line Item"
+msgstr ""
+
+#: order/templates/order/sales_order_detail.html:612
msgid "Update Unit Price"
msgstr ""
@@ -3814,12 +3918,28 @@ msgstr ""
msgid "Updated {part} unit-price to {price} and quantity to {qty}"
msgstr ""
-#: part/bom.py:133 part/models.py:73 part/models.py:731
-#: part/templates/part/category.html:75 part/templates/part/part_base.html:282
+#: part/api.py:700
+msgid "Must be greater than zero"
+msgstr ""
+
+#: part/api.py:704
+msgid "Must be a valid quantity"
+msgstr ""
+
+#: part/api.py:719
+msgid "Specify location for initial part stock"
+msgstr ""
+
+#: part/api.py:750 part/api.py:754 part/api.py:769 part/api.py:773
+msgid "This field is required"
+msgstr ""
+
+#: part/bom.py:133 part/models.py:75 part/models.py:733
+#: part/templates/part/category.html:75 part/templates/part/part_base.html:290
msgid "Default Location"
msgstr ""
-#: part/bom.py:134 part/templates/part/part_base.html:149
+#: part/bom.py:134 part/templates/part/part_base.html:156
msgid "Available Stock"
msgstr ""
@@ -3879,7 +3999,7 @@ msgstr ""
msgid "Include part supplier data in exported BOM"
msgstr ""
-#: part/forms.py:96 part/models.py:2234
+#: part/forms.py:96 part/models.py:2250
msgid "Parent Part"
msgstr ""
@@ -3923,391 +4043,391 @@ msgstr ""
msgid "Input quantity for price calculation"
msgstr ""
-#: part/models.py:74
+#: part/models.py:76
msgid "Default location for parts in this category"
msgstr ""
-#: part/models.py:77
+#: part/models.py:79
msgid "Default keywords"
msgstr ""
-#: part/models.py:77
+#: part/models.py:79
msgid "Default keywords for parts in this category"
msgstr ""
-#: part/models.py:87 part/models.py:2280
+#: part/models.py:89 part/models.py:2296
#: part/templates/part/part_app_base.html:10
msgid "Part Category"
msgstr ""
-#: part/models.py:88 part/templates/part/category.html:32
+#: part/models.py:90 part/templates/part/category.html:32
#: part/templates/part/category.html:103 templates/InvenTree/search.html:127
#: templates/stats.html:84 users/models.py:40
msgid "Part Categories"
msgstr ""
-#: part/models.py:381
+#: part/models.py:383
msgid "Invalid choice for parent part"
msgstr ""
-#: part/models.py:433 part/models.py:445
+#: part/models.py:435 part/models.py:447
#, python-brace-format
msgid "Part '{p1}' is used in BOM for '{p2}' (recursive)"
msgstr ""
-#: part/models.py:542
+#: part/models.py:544
msgid "Next available serial numbers are"
msgstr ""
-#: part/models.py:546
+#: part/models.py:548
msgid "Next available serial number is"
msgstr ""
-#: part/models.py:551
+#: part/models.py:553
msgid "Most recent serial number is"
msgstr ""
-#: part/models.py:630
+#: part/models.py:632
msgid "Duplicate IPN not allowed in part settings"
msgstr "IPN dupliqué non autorisé dans les paramètres de la pièce"
-#: part/models.py:655
+#: part/models.py:657
msgid "Part name"
msgstr ""
-#: part/models.py:662
+#: part/models.py:664
msgid "Is Template"
msgstr ""
-#: part/models.py:663
+#: part/models.py:665
msgid "Is this part a template part?"
msgstr ""
-#: part/models.py:673
+#: part/models.py:675
msgid "Is this part a variant of another part?"
msgstr ""
-#: part/models.py:674
+#: part/models.py:676
msgid "Variant Of"
msgstr ""
-#: part/models.py:680
+#: part/models.py:682
msgid "Part description"
msgstr ""
-#: part/models.py:685 part/templates/part/category.html:82
-#: part/templates/part/part_base.html:251
+#: part/models.py:687 part/templates/part/category.html:82
+#: part/templates/part/part_base.html:259
msgid "Keywords"
msgstr ""
-#: part/models.py:686
+#: part/models.py:688
msgid "Part keywords to improve visibility in search results"
msgstr ""
-#: part/models.py:693 part/models.py:2279
+#: part/models.py:695 part/models.py:2295
#: part/templates/part/set_category.html:15
#: templates/InvenTree/settings/settings.html:167
-#: templates/js/translated/part.js:773
+#: templates/js/translated/part.js:916
msgid "Category"
msgstr ""
-#: part/models.py:694
+#: part/models.py:696
msgid "Part category"
msgstr ""
-#: part/models.py:699 part/templates/part/part_base.html:227
-#: templates/js/translated/part.js:389 templates/js/translated/part.js:617
+#: part/models.py:701 part/templates/part/part_base.html:235
+#: templates/js/translated/part.js:517 templates/js/translated/part.js:749
msgid "IPN"
msgstr "IPN"
-#: part/models.py:700
+#: part/models.py:702
msgid "Internal Part Number"
msgstr ""
-#: part/models.py:706
+#: part/models.py:708
msgid "Part revision or version number"
msgstr ""
-#: part/models.py:707 part/templates/part/part_base.html:244
-#: report/models.py:200 templates/js/translated/part.js:393
+#: part/models.py:709 part/templates/part/part_base.html:252
+#: report/models.py:200 templates/js/translated/part.js:521
msgid "Revision"
msgstr ""
-#: part/models.py:729
+#: part/models.py:731
msgid "Where is this item normally stored?"
msgstr ""
-#: part/models.py:776 part/templates/part/part_base.html:289
+#: part/models.py:778 part/templates/part/part_base.html:297
msgid "Default Supplier"
msgstr ""
-#: part/models.py:777
+#: part/models.py:779
msgid "Default supplier part"
msgstr ""
-#: part/models.py:784
+#: part/models.py:786
msgid "Default Expiry"
msgstr ""
-#: part/models.py:785
+#: part/models.py:787
msgid "Expiry time (in days) for stock items of this part"
msgstr ""
-#: part/models.py:790
+#: part/models.py:792
msgid "Minimum Stock"
msgstr ""
-#: part/models.py:791
+#: part/models.py:793
msgid "Minimum allowed stock level"
msgstr ""
-#: part/models.py:798
+#: part/models.py:800
msgid "Stock keeping units for this part"
msgstr ""
-#: part/models.py:804
+#: part/models.py:806
msgid "Can this part be built from other parts?"
msgstr ""
-#: part/models.py:810
+#: part/models.py:812
msgid "Can this part be used to build other parts?"
msgstr ""
-#: part/models.py:816
+#: part/models.py:818
msgid "Does this part have tracking for unique items?"
msgstr ""
-#: part/models.py:821
+#: part/models.py:823
msgid "Can this part be purchased from external suppliers?"
msgstr ""
-#: part/models.py:826
+#: part/models.py:828
msgid "Can this part be sold to customers?"
msgstr ""
-#: part/models.py:830 templates/js/translated/table_filters.js:21
-#: templates/js/translated/table_filters.js:69
-#: templates/js/translated/table_filters.js:255
-#: templates/js/translated/table_filters.js:324
+#: part/models.py:832 templates/js/translated/table_filters.js:34
+#: templates/js/translated/table_filters.js:82
+#: templates/js/translated/table_filters.js:268
+#: templates/js/translated/table_filters.js:337
msgid "Active"
msgstr ""
-#: part/models.py:831
+#: part/models.py:833
msgid "Is this part active?"
msgstr ""
-#: part/models.py:836
+#: part/models.py:838
msgid "Is this a virtual part, such as a software product or license?"
msgstr ""
-#: part/models.py:841
+#: part/models.py:843
msgid "Part notes - supports Markdown formatting"
msgstr ""
-#: part/models.py:844
+#: part/models.py:846
msgid "BOM checksum"
msgstr ""
-#: part/models.py:844
+#: part/models.py:846
msgid "Stored BOM checksum"
msgstr ""
-#: part/models.py:847
+#: part/models.py:849
msgid "BOM checked by"
msgstr ""
-#: part/models.py:849
+#: part/models.py:851
msgid "BOM checked date"
msgstr ""
-#: part/models.py:853
+#: part/models.py:855
msgid "Creation User"
msgstr ""
-#: part/models.py:1592
+#: part/models.py:1601
msgid "Sell multiple"
msgstr ""
-#: part/models.py:2080
+#: part/models.py:2096
msgid "Test templates can only be created for trackable parts"
msgstr ""
-#: part/models.py:2097
+#: part/models.py:2113
msgid "Test with this name already exists for this part"
msgstr ""
-#: part/models.py:2117 templates/js/translated/part.js:1038
-#: templates/js/translated/stock.js:485
+#: part/models.py:2133 templates/js/translated/part.js:1205
+#: templates/js/translated/stock.js:556
msgid "Test Name"
msgstr ""
-#: part/models.py:2118
+#: part/models.py:2134
msgid "Enter a name for the test"
msgstr ""
-#: part/models.py:2123
+#: part/models.py:2139
msgid "Test Description"
msgstr ""
-#: part/models.py:2124
+#: part/models.py:2140
msgid "Enter description for this test"
msgstr ""
-#: part/models.py:2129 templates/js/translated/part.js:1047
-#: templates/js/translated/table_filters.js:241
+#: part/models.py:2145 templates/js/translated/part.js:1214
+#: templates/js/translated/table_filters.js:254
msgid "Required"
msgstr ""
-#: part/models.py:2130
+#: part/models.py:2146
msgid "Is this test required to pass?"
msgstr ""
-#: part/models.py:2135 templates/js/translated/part.js:1055
+#: part/models.py:2151 templates/js/translated/part.js:1222
msgid "Requires Value"
msgstr ""
-#: part/models.py:2136
+#: part/models.py:2152
msgid "Does this test require a value when adding a test result?"
msgstr ""
-#: part/models.py:2141 templates/js/translated/part.js:1062
+#: part/models.py:2157 templates/js/translated/part.js:1229
msgid "Requires Attachment"
msgstr ""
-#: part/models.py:2142
+#: part/models.py:2158
msgid "Does this test require a file attachment when adding a test result?"
msgstr ""
-#: part/models.py:2153
+#: part/models.py:2169
#, python-brace-format
msgid "Illegal character in template name ({c})"
msgstr ""
-#: part/models.py:2189
+#: part/models.py:2205
msgid "Parameter template name must be unique"
msgstr ""
-#: part/models.py:2197
+#: part/models.py:2213
msgid "Parameter Name"
msgstr ""
-#: part/models.py:2204
+#: part/models.py:2220
msgid "Parameter Units"
msgstr ""
-#: part/models.py:2236 part/models.py:2285 part/models.py:2286
+#: part/models.py:2252 part/models.py:2301 part/models.py:2302
#: templates/InvenTree/settings/settings.html:162
msgid "Parameter Template"
msgstr ""
-#: part/models.py:2238
+#: part/models.py:2254
msgid "Data"
msgstr ""
-#: part/models.py:2238
+#: part/models.py:2254
msgid "Parameter Value"
msgstr ""
-#: part/models.py:2290 templates/InvenTree/settings/settings.html:171
+#: part/models.py:2306 templates/InvenTree/settings/settings.html:171
msgid "Default Value"
msgstr ""
-#: part/models.py:2291
+#: part/models.py:2307
msgid "Default Parameter Value"
msgstr ""
-#: part/models.py:2325
+#: part/models.py:2341
msgid "Select parent part"
msgstr ""
-#: part/models.py:2333
+#: part/models.py:2349
msgid "Sub part"
msgstr ""
-#: part/models.py:2334
+#: part/models.py:2350
msgid "Select part to be used in BOM"
msgstr ""
-#: part/models.py:2340
+#: part/models.py:2356
msgid "BOM quantity for this BOM item"
msgstr ""
-#: part/models.py:2342 templates/js/translated/bom.js:236
-#: templates/js/translated/bom.js:298
+#: part/models.py:2358 templates/js/translated/bom.js:256
+#: templates/js/translated/bom.js:314
msgid "Optional"
msgstr ""
-#: part/models.py:2342
+#: part/models.py:2358
msgid "This BOM item is optional"
msgstr ""
-#: part/models.py:2345
+#: part/models.py:2361
msgid "Overage"
msgstr ""
-#: part/models.py:2346
+#: part/models.py:2362
msgid "Estimated build wastage quantity (absolute or percentage)"
msgstr ""
-#: part/models.py:2349
+#: part/models.py:2365
msgid "BOM item reference"
msgstr ""
-#: part/models.py:2352
+#: part/models.py:2368
msgid "BOM item notes"
msgstr ""
-#: part/models.py:2354
+#: part/models.py:2370
msgid "Checksum"
msgstr ""
-#: part/models.py:2354
+#: part/models.py:2370
msgid "BOM line checksum"
msgstr ""
-#: part/models.py:2358 templates/js/translated/bom.js:315
-#: templates/js/translated/bom.js:322
-#: templates/js/translated/table_filters.js:55
+#: part/models.py:2374 templates/js/translated/bom.js:331
+#: templates/js/translated/bom.js:338
+#: templates/js/translated/table_filters.js:68
msgid "Inherited"
msgstr ""
-#: part/models.py:2359
+#: part/models.py:2375
msgid "This BOM item is inherited by BOMs for variant parts"
msgstr ""
-#: part/models.py:2364 templates/js/translated/bom.js:307
+#: part/models.py:2380 templates/js/translated/bom.js:323
msgid "Allow Variants"
msgstr ""
-#: part/models.py:2365
+#: part/models.py:2381
msgid "Stock items for variant parts can be used for this BOM item"
msgstr ""
-#: part/models.py:2450 stock/models.py:335
+#: part/models.py:2466 stock/models.py:341
msgid "Quantity must be integer value for trackable parts"
msgstr ""
-#: part/models.py:2459 part/models.py:2461
+#: part/models.py:2475 part/models.py:2477
msgid "Sub part must be specified"
msgstr ""
-#: part/models.py:2464
+#: part/models.py:2480
msgid "BOM Item"
msgstr ""
-#: part/models.py:2583
+#: part/models.py:2599
msgid "Part 1"
msgstr ""
-#: part/models.py:2587
+#: part/models.py:2603
msgid "Part 2"
msgstr ""
-#: part/models.py:2587
+#: part/models.py:2603
msgid "Select Related Part"
msgstr ""
-#: part/models.py:2619
+#: part/models.py:2635
msgid "Error creating relationship: check that the part is not related to itself and that the relationship is unique"
msgstr ""
@@ -4317,17 +4437,17 @@ msgstr ""
#: part/templates/part/bom.html:14
#, python-format
-msgid "The BOM for %(part)s has changed, and must be validated.
"
+msgid "The BOM for %(part)s has changed, and must be validated.
"
msgstr ""
#: part/templates/part/bom.html:16
#, python-format
-msgid "The BOM for %(part)s was last checked by %(checker)s on %(check_date)s"
+msgid "The BOM for %(part)s was last checked by %(checker)s on %(check_date)s"
msgstr ""
#: part/templates/part/bom.html:20
#, python-format
-msgid "The BOM for %(part)s has not been validated."
+msgid "The BOM for %(part)s has not been validated."
msgstr ""
#: part/templates/part/bom.html:27
@@ -4374,33 +4494,34 @@ msgstr ""
msgid "Select Part"
msgstr ""
-#: part/templates/part/bom_upload/upload_file.html:7
-msgid "Upload BOM File"
+#: part/templates/part/bom_upload/upload_file.html:13
+#: part/templates/part/bom_upload/upload_file.html:16
+msgid "Return To BOM"
msgstr ""
-#: part/templates/part/bom_upload/upload_file.html:12
+#: part/templates/part/bom_upload/upload_file.html:27
msgid "Upload Bill of Materials"
msgstr ""
-#: part/templates/part/bom_upload/upload_file.html:16
+#: part/templates/part/bom_upload/upload_file.html:46
msgid "Requirements for BOM upload"
msgstr ""
-#: part/templates/part/bom_upload/upload_file.html:18
+#: part/templates/part/bom_upload/upload_file.html:48
msgid "The BOM file must contain the required named columns as provided in the "
msgstr ""
-#: part/templates/part/bom_upload/upload_file.html:18
+#: part/templates/part/bom_upload/upload_file.html:48
msgid "BOM Upload Template"
msgstr ""
-#: part/templates/part/bom_upload/upload_file.html:19
+#: part/templates/part/bom_upload/upload_file.html:49
msgid "Each part must already exist in the database"
msgstr ""
#: part/templates/part/bom_validate.html:6
#, python-format
-msgid "Confirm that the Bill of Materials (BOM) is valid for:
%(part)s"
+msgid "Confirm that the Bill of Materials (BOM) is valid for:
%(part)s"
msgstr ""
#: part/templates/part/bom_validate.html:9
@@ -4435,7 +4556,7 @@ msgstr ""
msgid "Category Description"
msgstr ""
-#: part/templates/part/category.html:88 part/templates/part/category.html:174
+#: part/templates/part/category.html:88 part/templates/part/category.html:175
#: part/templates/part/category_navbar.html:14
#: part/templates/part/category_navbar.html:17
msgid "Subcategories"
@@ -4449,7 +4570,7 @@ msgstr ""
msgid "Export Part Data"
msgstr ""
-#: part/templates/part/category.html:127 part/templates/part/category.html:141
+#: part/templates/part/category.html:127 part/templates/part/category.html:142
msgid "Export"
msgstr ""
@@ -4470,26 +4591,30 @@ msgid "Set Category"
msgstr ""
#: part/templates/part/category.html:141
+msgid "Print Labels"
+msgstr ""
+
+#: part/templates/part/category.html:142
msgid "Export Data"
msgstr ""
-#: part/templates/part/category.html:145
+#: part/templates/part/category.html:146
msgid "View list display"
msgstr ""
-#: part/templates/part/category.html:148
+#: part/templates/part/category.html:149
msgid "View grid display"
msgstr ""
-#: part/templates/part/category.html:164
+#: part/templates/part/category.html:165
msgid "Part Parameters"
msgstr ""
-#: part/templates/part/category.html:253
+#: part/templates/part/category.html:254
msgid "Create Part Category"
msgstr ""
-#: part/templates/part/category.html:279
+#: part/templates/part/category.html:281
msgid "Create Part"
msgstr ""
@@ -4533,7 +4658,7 @@ msgstr ""
msgid "Import Parts"
msgstr ""
-#: part/templates/part/copy_part.html:9 templates/js/translated/part.js:224
+#: part/templates/part/copy_part.html:9 templates/js/translated/part.js:352
msgid "Duplicate Part"
msgstr ""
@@ -4554,7 +4679,7 @@ msgstr ""
#: part/templates/part/create_part.html:17
#, python-format
-msgid "%(full_name)s - %(desc)s (%(match_per)s%% match)"
+msgid "%(full_name)s - %(desc)s (%(match_per)s%% match)"
msgstr ""
#: part/templates/part/detail.html:16
@@ -4563,10 +4688,10 @@ msgstr ""
#: part/templates/part/detail.html:21
#, python-format
-msgid "Showing stock for all variants of %(full_name)s"
+msgid "Showing stock for all variants of %(full_name)s"
msgstr ""
-#: part/templates/part/detail.html:30 part/templates/part/navbar.html:87
+#: part/templates/part/detail.html:30 part/templates/part/navbar.html:99
msgid "Part Test Templates"
msgstr ""
@@ -4586,7 +4711,7 @@ msgstr ""
msgid "Sales Order Allocations"
msgstr ""
-#: part/templates/part/detail.html:130 part/templates/part/navbar.html:21
+#: part/templates/part/detail.html:130 part/templates/part/navbar.html:27
msgid "Part Variants"
msgstr ""
@@ -4602,8 +4727,8 @@ msgstr ""
msgid "Add new parameter"
msgstr ""
-#: part/templates/part/detail.html:182 part/templates/part/navbar.html:95
-#: part/templates/part/navbar.html:98
+#: part/templates/part/detail.html:182 part/templates/part/navbar.html:107
+#: part/templates/part/navbar.html:110
msgid "Related Parts"
msgstr ""
@@ -4611,8 +4736,8 @@ msgstr ""
msgid "Add Related"
msgstr ""
-#: part/templates/part/detail.html:228 part/templates/part/navbar.html:35
-#: part/templates/part/navbar.html:38
+#: part/templates/part/detail.html:228 part/templates/part/navbar.html:43
+#: part/templates/part/navbar.html:46
msgid "Bill of Materials"
msgstr ""
@@ -4644,50 +4769,50 @@ msgstr ""
msgid "Delete manufacturer parts"
msgstr ""
-#: part/templates/part/detail.html:402
+#: part/templates/part/detail.html:502
msgid "Delete selected BOM items?"
msgstr ""
-#: part/templates/part/detail.html:403
+#: part/templates/part/detail.html:503
msgid "All selected BOM items will be deleted"
msgstr ""
-#: part/templates/part/detail.html:454
+#: part/templates/part/detail.html:554
msgid "Create BOM Item"
msgstr ""
-#: part/templates/part/detail.html:589
+#: part/templates/part/detail.html:699
msgid "Add Test Result Template"
msgstr ""
-#: part/templates/part/detail.html:607
+#: part/templates/part/detail.html:716
msgid "Edit Test Result Template"
msgstr ""
-#: part/templates/part/detail.html:619
+#: part/templates/part/detail.html:728
msgid "Delete Test Result Template"
msgstr ""
-#: part/templates/part/detail.html:670
+#: part/templates/part/detail.html:784
msgid "Edit Part Notes"
msgstr ""
-#: part/templates/part/detail.html:903
+#: part/templates/part/detail.html:936
#, python-format
msgid "Purchase Unit Price - %(currency)s"
msgstr ""
-#: part/templates/part/detail.html:915
+#: part/templates/part/detail.html:948
#, python-format
msgid "Unit Price-Cost Difference - %(currency)s"
msgstr ""
-#: part/templates/part/detail.html:927
+#: part/templates/part/detail.html:960
#, python-format
msgid "Supplier Unit Cost - %(currency)s"
msgstr ""
-#: part/templates/part/detail.html:1016
+#: part/templates/part/detail.html:1049
#, python-format
msgid "Unit Price - %(currency)s"
msgstr ""
@@ -4701,19 +4826,19 @@ msgstr ""
msgid "Import Parts from File"
msgstr ""
-#: part/templates/part/navbar.html:24
+#: part/templates/part/navbar.html:30
msgid "Variants"
msgstr ""
-#: part/templates/part/navbar.html:51 part/templates/part/navbar.html:54
+#: part/templates/part/navbar.html:59 part/templates/part/navbar.html:62
msgid "Used In"
msgstr ""
-#: part/templates/part/navbar.html:61
+#: part/templates/part/navbar.html:70
msgid "Prices"
msgstr ""
-#: part/templates/part/navbar.html:90
+#: part/templates/part/navbar.html:102
msgid "Test Templates"
msgstr ""
@@ -4721,195 +4846,204 @@ msgstr ""
msgid "Part List"
msgstr ""
-#: part/templates/part/part_base.html:30
+#: part/templates/part/part_base.html:35
msgid "Part is a template part (variants can be made from this part)"
msgstr ""
-#: part/templates/part/part_base.html:33
+#: part/templates/part/part_base.html:38
msgid "Part can be assembled from other parts"
msgstr ""
-#: part/templates/part/part_base.html:36
+#: part/templates/part/part_base.html:41
msgid "Part can be used in assemblies"
msgstr ""
-#: part/templates/part/part_base.html:39
+#: part/templates/part/part_base.html:44
msgid "Part stock is tracked by serial number"
msgstr ""
-#: part/templates/part/part_base.html:42
+#: part/templates/part/part_base.html:47
msgid "Part can be purchased from external suppliers"
msgstr ""
-#: part/templates/part/part_base.html:45
+#: part/templates/part/part_base.html:50
msgid "Part can be sold to customers"
msgstr ""
-#: part/templates/part/part_base.html:52 part/templates/part/part_base.html:60
+#: part/templates/part/part_base.html:57 part/templates/part/part_base.html:65
msgid "Part is virtual (not a physical part)"
msgstr ""
-#: part/templates/part/part_base.html:53 templates/js/translated/company.js:454
-#: templates/js/translated/company.js:704 templates/js/translated/part.js:304
-#: templates/js/translated/part.js:381
+#: part/templates/part/part_base.html:58 templates/js/translated/company.js:503
+#: templates/js/translated/company.js:759 templates/js/translated/part.js:432
+#: templates/js/translated/part.js:509
msgid "Inactive"
msgstr ""
-#: part/templates/part/part_base.html:68
+#: part/templates/part/part_base.html:73
msgid "Star this part"
msgstr ""
-#: part/templates/part/part_base.html:75
+#: part/templates/part/part_base.html:80
#: stock/templates/stock/item_base.html:75
#: stock/templates/stock/location.html:51
msgid "Barcode actions"
msgstr ""
-#: part/templates/part/part_base.html:77
+#: part/templates/part/part_base.html:82
#: stock/templates/stock/item_base.html:77
#: stock/templates/stock/location.html:53 templates/qr_button.html:1
msgid "Show QR Code"
msgstr ""
-#: part/templates/part/part_base.html:78
+#: part/templates/part/part_base.html:83
#: stock/templates/stock/item_base.html:93
#: stock/templates/stock/location.html:54
msgid "Print Label"
msgstr ""
-#: part/templates/part/part_base.html:83
+#: part/templates/part/part_base.html:89
msgid "Show pricing information"
msgstr ""
-#: part/templates/part/part_base.html:88
+#: part/templates/part/part_base.html:95
#: stock/templates/stock/item_base.html:142
#: stock/templates/stock/location.html:62
msgid "Stock actions"
msgstr ""
-#: part/templates/part/part_base.html:95
+#: part/templates/part/part_base.html:102
msgid "Count part stock"
msgstr ""
-#: part/templates/part/part_base.html:101
+#: part/templates/part/part_base.html:108
msgid "Transfer part stock"
msgstr ""
-#: part/templates/part/part_base.html:118
+#: part/templates/part/part_base.html:125
msgid "Part actions"
msgstr ""
-#: part/templates/part/part_base.html:121
+#: part/templates/part/part_base.html:128
msgid "Duplicate part"
msgstr ""
-#: part/templates/part/part_base.html:124
+#: part/templates/part/part_base.html:131
msgid "Edit part"
msgstr ""
-#: part/templates/part/part_base.html:127
+#: part/templates/part/part_base.html:134
msgid "Delete part"
msgstr ""
-#: part/templates/part/part_base.html:139
+#: part/templates/part/part_base.html:146
#, python-format
msgid "This part is a variant of %(link)s"
msgstr ""
-#: part/templates/part/part_base.html:154
-#: templates/js/translated/table_filters.js:153
+#: part/templates/part/part_base.html:161
+#: templates/js/translated/table_filters.js:166
msgid "In Stock"
msgstr ""
-#: part/templates/part/part_base.html:167 templates/InvenTree/index.html:186
+#: part/templates/part/part_base.html:174 templates/InvenTree/index.html:186
msgid "Required for Build Orders"
msgstr ""
-#: part/templates/part/part_base.html:174
+#: part/templates/part/part_base.html:181
msgid "Required for Sales Orders"
msgstr ""
-#: part/templates/part/part_base.html:181
+#: part/templates/part/part_base.html:188
msgid "Allocated to Orders"
msgstr ""
-#: part/templates/part/part_base.html:196 templates/js/translated/bom.js:336
+#: part/templates/part/part_base.html:203 templates/js/translated/bom.js:352
msgid "Can Build"
msgstr ""
-#: part/templates/part/part_base.html:202 templates/js/translated/part.js:633
-#: templates/js/translated/part.js:806
+#: part/templates/part/part_base.html:209 templates/js/translated/part.js:765
+#: templates/js/translated/part.js:953
msgid "Building"
msgstr ""
-#: part/templates/part/part_base.html:275
+#: part/templates/part/part_base.html:223
+#: part/templates/part/part_base.html:524
+#: part/templates/part/part_base.html:550
+msgid "Show Part Details"
+msgstr ""
+
+#: part/templates/part/part_base.html:283
msgid "Latest Serial Number"
msgstr ""
-#: part/templates/part/part_base.html:383 part/templates/part/prices.html:125
+#: part/templates/part/part_base.html:396 part/templates/part/prices.html:144
msgid "Calculate"
msgstr ""
-#: part/templates/part/part_base.html:426
+#: part/templates/part/part_base.html:439
msgid "No matching images found"
msgstr ""
-#: part/templates/part/part_base.html:506
-#: part/templates/part/part_base.html:531
+#: part/templates/part/part_base.html:519
+#: part/templates/part/part_base.html:544
msgid "Hide Part Details"
msgstr ""
-#: part/templates/part/part_base.html:511
-#: part/templates/part/part_base.html:537
-msgid "Show Part Details"
-msgstr ""
-
#: part/templates/part/part_pricing.html:22 part/templates/part/prices.html:21
msgid "Supplier Pricing"
msgstr ""
#: part/templates/part/part_pricing.html:26
#: part/templates/part/part_pricing.html:52
-#: part/templates/part/part_pricing.html:85
-#: part/templates/part/part_pricing.html:100 part/templates/part/prices.html:25
-#: part/templates/part/prices.html:52 part/templates/part/prices.html:84
-#: part/templates/part/prices.html:101
+#: part/templates/part/part_pricing.html:100
+#: part/templates/part/part_pricing.html:115 part/templates/part/prices.html:25
+#: part/templates/part/prices.html:52 part/templates/part/prices.html:103
+#: part/templates/part/prices.html:120
msgid "Unit Cost"
msgstr ""
#: part/templates/part/part_pricing.html:32
#: part/templates/part/part_pricing.html:58
-#: part/templates/part/part_pricing.html:89
-#: part/templates/part/part_pricing.html:104 part/templates/part/prices.html:32
-#: part/templates/part/prices.html:59 part/templates/part/prices.html:89
-#: part/templates/part/prices.html:106
+#: part/templates/part/part_pricing.html:104
+#: part/templates/part/part_pricing.html:119 part/templates/part/prices.html:32
+#: part/templates/part/prices.html:59 part/templates/part/prices.html:108
+#: part/templates/part/prices.html:125
msgid "Total Cost"
msgstr ""
#: part/templates/part/part_pricing.html:40 part/templates/part/prices.html:40
-#: templates/js/translated/bom.js:291
+#: templates/js/translated/bom.js:307
msgid "No supplier pricing available"
msgstr ""
#: part/templates/part/part_pricing.html:48 part/templates/part/prices.html:49
-#: part/templates/part/prices.html:225
+#: part/templates/part/prices.html:243
msgid "BOM Pricing"
msgstr ""
-#: part/templates/part/part_pricing.html:66 part/templates/part/prices.html:67
+#: part/templates/part/part_pricing.html:65 part/templates/part/prices.html:69
+msgid "Unit Purchase Price"
+msgstr ""
+
+#: part/templates/part/part_pricing.html:71 part/templates/part/prices.html:76
+msgid "Total Purchase Price"
+msgstr ""
+
+#: part/templates/part/part_pricing.html:81 part/templates/part/prices.html:86
msgid "Note: BOM pricing is incomplete for this part"
msgstr ""
-#: part/templates/part/part_pricing.html:73 part/templates/part/prices.html:74
+#: part/templates/part/part_pricing.html:88 part/templates/part/prices.html:93
msgid "No BOM pricing available"
msgstr ""
-#: part/templates/part/part_pricing.html:82 part/templates/part/prices.html:83
+#: part/templates/part/part_pricing.html:97 part/templates/part/prices.html:102
msgid "Internal Price"
msgstr ""
-#: part/templates/part/part_pricing.html:113
-#: part/templates/part/prices.html:115
+#: part/templates/part/part_pricing.html:128
+#: part/templates/part/prices.html:134
msgid "No pricing information is available for this part."
msgstr ""
@@ -4919,7 +5053,7 @@ msgstr ""
#: part/templates/part/partial_delete.html:7
#, python-format
-msgid "Are you sure you want to delete part '%(full_name)s'?"
+msgid "Are you sure you want to delete part '%(full_name)s'?"
msgstr ""
#: part/templates/part/partial_delete.html:12
@@ -4963,53 +5097,53 @@ msgstr ""
msgid "Show BOM cost"
msgstr ""
-#: part/templates/part/prices.html:98
+#: part/templates/part/prices.html:117
msgid "Show sale cost"
msgstr ""
-#: part/templates/part/prices.html:99
+#: part/templates/part/prices.html:118
msgid "Show sale price"
msgstr ""
-#: part/templates/part/prices.html:121
+#: part/templates/part/prices.html:140
msgid "Calculation parameters"
msgstr ""
-#: part/templates/part/prices.html:136 templates/js/translated/bom.js:285
+#: part/templates/part/prices.html:155 templates/js/translated/bom.js:301
msgid "Supplier Cost"
msgstr ""
-#: part/templates/part/prices.html:137 part/templates/part/prices.html:158
-#: part/templates/part/prices.html:183 part/templates/part/prices.html:213
-#: part/templates/part/prices.html:239 part/templates/part/prices.html:267
+#: part/templates/part/prices.html:156 part/templates/part/prices.html:177
+#: part/templates/part/prices.html:201 part/templates/part/prices.html:231
+#: part/templates/part/prices.html:257 part/templates/part/prices.html:285
msgid "Jump to overview"
msgstr ""
-#: part/templates/part/prices.html:162
+#: part/templates/part/prices.html:181
msgid "Stock Pricing"
msgstr ""
-#: part/templates/part/prices.html:172
+#: part/templates/part/prices.html:190
msgid "No stock pricing history is available for this part."
msgstr ""
-#: part/templates/part/prices.html:182
+#: part/templates/part/prices.html:200
msgid "Internal Cost"
msgstr ""
-#: part/templates/part/prices.html:197 part/views.py:1793
+#: part/templates/part/prices.html:215 part/views.py:1801
msgid "Add Internal Price Break"
msgstr ""
-#: part/templates/part/prices.html:212
+#: part/templates/part/prices.html:230
msgid "BOM Cost"
msgstr ""
-#: part/templates/part/prices.html:238
+#: part/templates/part/prices.html:256
msgid "Sale Cost"
msgstr ""
-#: part/templates/part/prices.html:278
+#: part/templates/part/prices.html:296
msgid "No sale pice history available for this part."
msgstr ""
@@ -5017,8 +5151,8 @@ msgstr ""
msgid "Set category for the following parts"
msgstr ""
-#: part/templates/part/stock_count.html:7 templates/js/translated/bom.js:259
-#: templates/js/translated/part.js:623 templates/js/translated/part.js:810
+#: part/templates/part/stock_count.html:7 templates/js/translated/bom.js:278
+#: templates/js/translated/part.js:755 templates/js/translated/part.js:957
msgid "No Stock"
msgstr ""
@@ -5032,10 +5166,10 @@ msgstr ""
#: part/templates/part/variant_part.html:10
#, python-format
-msgid "Create a new variant of template '%(full_name)s'."
+msgid "Create a new variant of template '%(full_name)s'."
msgstr ""
-#: part/templatetags/inventree_extras.py:105
+#: part/templatetags/inventree_extras.py:106
msgid "Unknown database"
msgstr ""
@@ -5116,51 +5250,51 @@ msgstr ""
msgid "Part Pricing"
msgstr ""
-#: part/views.py:1429
+#: part/views.py:1437
msgid "Create Part Parameter Template"
msgstr ""
-#: part/views.py:1439
+#: part/views.py:1447
msgid "Edit Part Parameter Template"
msgstr ""
-#: part/views.py:1446
+#: part/views.py:1454
msgid "Delete Part Parameter Template"
msgstr ""
-#: part/views.py:1494 templates/js/translated/part.js:179
+#: part/views.py:1502 templates/js/translated/part.js:303
msgid "Edit Part Category"
msgstr ""
-#: part/views.py:1532
+#: part/views.py:1540
msgid "Delete Part Category"
msgstr ""
-#: part/views.py:1538
+#: part/views.py:1546
msgid "Part category was deleted"
msgstr ""
-#: part/views.py:1547
+#: part/views.py:1555
msgid "Create Category Parameter Template"
msgstr ""
-#: part/views.py:1648
+#: part/views.py:1656
msgid "Edit Category Parameter Template"
msgstr ""
-#: part/views.py:1704
+#: part/views.py:1712
msgid "Delete Category Parameter Template"
msgstr ""
-#: part/views.py:1726
+#: part/views.py:1734
msgid "Added new price break"
msgstr ""
-#: part/views.py:1802
+#: part/views.py:1810
msgid "Edit Internal Price Break"
msgstr ""
-#: part/views.py:1810
+#: part/views.py:1818
msgid "Delete Internal Price Break"
msgstr ""
@@ -5266,17 +5400,17 @@ msgid "Test Results"
msgstr ""
#: report/templates/report/inventree_test_report_base.html:88
-#: stock/models.py:1796
+#: stock/models.py:1807
msgid "Test"
msgstr ""
#: report/templates/report/inventree_test_report_base.html:89
-#: stock/models.py:1802
+#: stock/models.py:1813
msgid "Result"
msgstr ""
#: report/templates/report/inventree_test_report_base.html:92
-#: templates/js/translated/order.js:279 templates/js/translated/stock.js:1382
+#: templates/js/translated/order.js:353 templates/js/translated/stock.js:1523
msgid "Date"
msgstr ""
@@ -5288,51 +5422,51 @@ msgstr ""
msgid "Fail"
msgstr ""
-#: stock/api.py:145
+#: stock/api.py:146
msgid "Request must contain list of stock items"
msgstr ""
-#: stock/api.py:153
+#: stock/api.py:154
msgid "Improperly formatted data"
msgstr ""
-#: stock/api.py:161
+#: stock/api.py:162
msgid "Each entry must contain a valid integer primary-key"
msgstr ""
-#: stock/api.py:167
+#: stock/api.py:168
msgid "Primary key does not match valid stock item"
msgstr ""
-#: stock/api.py:177
+#: stock/api.py:178
msgid "Invalid quantity value"
msgstr ""
-#: stock/api.py:182
+#: stock/api.py:183
msgid "Quantity must not be less than zero"
msgstr ""
-#: stock/api.py:210
+#: stock/api.py:211
#, python-brace-format
msgid "Updated stock for {n} items"
msgstr ""
-#: stock/api.py:246 stock/api.py:279
+#: stock/api.py:247 stock/api.py:280
msgid "Specified quantity exceeds stock quantity"
msgstr ""
-#: stock/api.py:269
+#: stock/api.py:270
msgid "Valid location must be specified"
msgstr ""
-#: stock/api.py:289
+#: stock/api.py:290
#, python-brace-format
msgid "Moved {n} parts to {loc}"
msgstr ""
-#: stock/forms.py:79 stock/forms.py:307 stock/models.py:550
+#: stock/forms.py:79 stock/forms.py:307 stock/models.py:556
#: stock/templates/stock/item_base.html:395
-#: templates/js/translated/stock.js:1025
+#: templates/js/translated/stock.js:967
msgid "Expiry Date"
msgstr ""
@@ -5384,258 +5518,266 @@ msgstr ""
msgid "Confirm removal of installed stock items"
msgstr ""
-#: stock/models.py:57 stock/models.py:587
+#: stock/models.py:57 stock/models.py:593
msgid "Owner"
msgstr ""
-#: stock/models.py:58 stock/models.py:588
+#: stock/models.py:58 stock/models.py:594
msgid "Select Owner"
msgstr ""
-#: stock/models.py:316
+#: stock/models.py:322
msgid "StockItem with this serial number already exists"
msgstr ""
-#: stock/models.py:352
+#: stock/models.py:358
#, python-brace-format
msgid "Part type ('{pf}') must be {pe}"
msgstr ""
-#: stock/models.py:362 stock/models.py:371
+#: stock/models.py:368 stock/models.py:377
msgid "Quantity must be 1 for item with a serial number"
msgstr ""
-#: stock/models.py:363
+#: stock/models.py:369
msgid "Serial number cannot be set if quantity greater than 1"
msgstr ""
-#: stock/models.py:385
+#: stock/models.py:391
msgid "Item cannot belong to itself"
msgstr ""
-#: stock/models.py:391
+#: stock/models.py:397
msgid "Item must have a build reference if is_building=True"
msgstr ""
-#: stock/models.py:398
+#: stock/models.py:404
msgid "Build reference does not point to the same part object"
msgstr ""
-#: stock/models.py:440
+#: stock/models.py:446
msgid "Parent Stock Item"
msgstr ""
-#: stock/models.py:449
+#: stock/models.py:455
msgid "Base part"
msgstr ""
-#: stock/models.py:458
+#: stock/models.py:464
msgid "Select a matching supplier part for this stock item"
msgstr ""
-#: stock/models.py:463 stock/templates/stock/stock_app_base.html:8
+#: stock/models.py:469 stock/templates/stock/stock_app_base.html:8
msgid "Stock Location"
msgstr ""
-#: stock/models.py:466
+#: stock/models.py:472
msgid "Where is this stock item located?"
msgstr ""
-#: stock/models.py:473
+#: stock/models.py:479
msgid "Packaging this stock item is stored in"
msgstr ""
-#: stock/models.py:478 stock/templates/stock/item_base.html:284
+#: stock/models.py:484 stock/templates/stock/item_base.html:284
msgid "Installed In"
msgstr ""
-#: stock/models.py:481
+#: stock/models.py:487
msgid "Is this item installed in another item?"
msgstr ""
-#: stock/models.py:497
+#: stock/models.py:503
msgid "Serial number for this item"
msgstr ""
-#: stock/models.py:509
+#: stock/models.py:515
msgid "Batch code for this stock item"
msgstr ""
-#: stock/models.py:513
+#: stock/models.py:519
msgid "Stock Quantity"
msgstr ""
-#: stock/models.py:522
+#: stock/models.py:528
msgid "Source Build"
msgstr ""
-#: stock/models.py:524
+#: stock/models.py:530
msgid "Build for this stock item"
msgstr ""
-#: stock/models.py:535
+#: stock/models.py:541
msgid "Source Purchase Order"
msgstr ""
-#: stock/models.py:538
+#: stock/models.py:544
msgid "Purchase order for this stock item"
msgstr ""
-#: stock/models.py:544
+#: stock/models.py:550
msgid "Destination Sales Order"
msgstr ""
-#: stock/models.py:551
+#: stock/models.py:557
msgid "Expiry date for stock item. Stock will be considered expired after this date"
msgstr ""
-#: stock/models.py:564
+#: stock/models.py:570
msgid "Delete on deplete"
msgstr ""
-#: stock/models.py:564
+#: stock/models.py:570
msgid "Delete this Stock Item when stock is depleted"
msgstr ""
-#: stock/models.py:574 stock/templates/stock/item.html:98
+#: stock/models.py:580 stock/templates/stock/item.html:99
#: stock/templates/stock/navbar.html:54
msgid "Stock Item Notes"
msgstr ""
-#: stock/models.py:583
+#: stock/models.py:589
msgid "Single unit purchase price at time of purchase"
msgstr ""
-#: stock/models.py:1051
-msgid "Part is not set as trackable"
+#: stock/models.py:599
+msgid "Scheduled for deletion"
msgstr ""
-#: stock/models.py:1057
-msgid "Quantity must be integer"
+#: stock/models.py:600
+msgid "This StockItem will be deleted by the background worker"
msgstr ""
#: stock/models.py:1063
+msgid "Part is not set as trackable"
+msgstr ""
+
+#: stock/models.py:1069
+msgid "Quantity must be integer"
+msgstr ""
+
+#: stock/models.py:1075
#, python-brace-format
msgid "Quantity must not exceed available stock quantity ({n})"
msgstr ""
-#: stock/models.py:1066
+#: stock/models.py:1078
msgid "Serial numbers must be a list of integers"
msgstr ""
-#: stock/models.py:1069
+#: stock/models.py:1081
msgid "Quantity does not match serial numbers"
msgstr ""
-#: stock/models.py:1076
+#: stock/models.py:1088
#, python-brace-format
msgid "Serial numbers already exist: {exists}"
msgstr ""
-#: stock/models.py:1234
+#: stock/models.py:1246
msgid "StockItem cannot be moved as it is not in stock"
msgstr ""
-#: stock/models.py:1716
+#: stock/models.py:1727
msgid "Entry notes"
msgstr ""
-#: stock/models.py:1773
+#: stock/models.py:1784
msgid "Value must be provided for this test"
msgstr ""
-#: stock/models.py:1779
+#: stock/models.py:1790
msgid "Attachment must be uploaded for this test"
msgstr ""
-#: stock/models.py:1797
+#: stock/models.py:1808
msgid "Test name"
msgstr ""
-#: stock/models.py:1803 templates/js/translated/table_filters.js:231
+#: stock/models.py:1814 templates/js/translated/table_filters.js:244
msgid "Test result"
msgstr ""
-#: stock/models.py:1809
+#: stock/models.py:1820
msgid "Test output value"
msgstr ""
-#: stock/models.py:1816
+#: stock/models.py:1827
msgid "Test result attachment"
msgstr ""
-#: stock/models.py:1822
+#: stock/models.py:1833
msgid "Test notes"
msgstr ""
-#: stock/templates/stock/item.html:16
+#: stock/templates/stock/item.html:17
msgid "Stock Tracking Information"
msgstr ""
-#: stock/templates/stock/item.html:29
+#: stock/templates/stock/item.html:30
msgid "New Entry"
msgstr ""
-#: stock/templates/stock/item.html:42
+#: stock/templates/stock/item.html:43
msgid "Child Stock Items"
msgstr ""
-#: stock/templates/stock/item.html:49
+#: stock/templates/stock/item.html:50
msgid "This stock item does not have any child items"
msgstr ""
-#: stock/templates/stock/item.html:57 stock/templates/stock/navbar.html:19
+#: stock/templates/stock/item.html:58 stock/templates/stock/navbar.html:19
#: stock/templates/stock/navbar.html:22
msgid "Test Data"
msgstr ""
-#: stock/templates/stock/item.html:65
+#: stock/templates/stock/item.html:66
msgid "Delete Test Data"
msgstr ""
-#: stock/templates/stock/item.html:69
+#: stock/templates/stock/item.html:70
msgid "Add Test Data"
msgstr ""
-#: stock/templates/stock/item.html:72 stock/templates/stock/item_base.html:95
+#: stock/templates/stock/item.html:73 stock/templates/stock/item_base.html:95
msgid "Test Report"
msgstr ""
-#: stock/templates/stock/item.html:119 stock/templates/stock/navbar.html:27
+#: stock/templates/stock/item.html:120 stock/templates/stock/navbar.html:27
msgid "Installed Stock Items"
msgstr ""
-#: stock/templates/stock/item.html:124 stock/views.py:534
+#: stock/templates/stock/item.html:125 stock/views.py:534
msgid "Install Stock Item"
msgstr ""
-#: stock/templates/stock/item.html:299 stock/templates/stock/item.html:324
+#: stock/templates/stock/item.html:301 stock/templates/stock/item.html:326
msgid "Add Test Result"
msgstr ""
-#: stock/templates/stock/item.html:344
+#: stock/templates/stock/item.html:346
msgid "Edit Test Result"
msgstr ""
-#: stock/templates/stock/item.html:358
+#: stock/templates/stock/item.html:360
msgid "Delete Test Result"
msgstr ""
#: stock/templates/stock/item_base.html:33
#: stock/templates/stock/item_base.html:399
-#: templates/js/translated/table_filters.js:212
+#: templates/js/translated/table_filters.js:225
msgid "Expired"
msgstr ""
#: stock/templates/stock/item_base.html:43
#: stock/templates/stock/item_base.html:401
-#: templates/js/translated/table_filters.js:218
+#: templates/js/translated/table_filters.js:231
msgid "Stale"
msgstr ""
#: stock/templates/stock/item_base.html:80
-#: templates/js/translated/barcode.js:309
-#: templates/js/translated/barcode.js:314
+#: templates/js/translated/barcode.js:331
+#: templates/js/translated/barcode.js:336
msgid "Unlink Barcode"
msgstr ""
@@ -5768,7 +5910,7 @@ msgid "next page"
msgstr ""
#: stock/templates/stock/item_base.html:303
-#: templates/js/translated/build.js:628
+#: templates/js/translated/build.js:651
msgid "No location set"
msgstr ""
@@ -5795,7 +5937,7 @@ msgid "This StockItem expires on %(item.expiry_date)s"
msgstr ""
#: stock/templates/stock/item_base.html:408
-#: templates/js/translated/stock.js:1032
+#: templates/js/translated/stock.js:980
msgid "Last Updated"
msgstr ""
@@ -5825,7 +5967,7 @@ msgstr ""
#: stock/templates/stock/item_delete.html:12
#, python-format
-msgid "This will remove %(qty)s units of %(full_name)s from stock."
+msgid "This will remove %(qty)s units of %(full_name)s from stock."
msgstr ""
#: stock/templates/stock/item_install.html:8
@@ -5975,7 +6117,7 @@ msgstr ""
#: stock/templates/stock/stockitem_convert.html:8
#, python-format
-msgid "This stock item is current an instance of %(part)s"
+msgid "This stock item is current an instance of %(part)s"
msgstr ""
#: stock/templates/stock/stockitem_convert.html:9
@@ -6039,7 +6181,7 @@ msgstr ""
msgid "Uninstall Stock Items"
msgstr ""
-#: stock/views.py:780 templates/js/translated/stock.js:282
+#: stock/views.py:780 templates/js/translated/stock.js:353
msgid "Confirm stock adjustment"
msgstr ""
@@ -6059,7 +6201,7 @@ msgstr ""
msgid "Serialize Stock"
msgstr ""
-#: stock/views.py:1143 templates/js/translated/build.js:365
+#: stock/views.py:1143 templates/js/translated/build.js:392
msgid "Create new Stock Item"
msgstr ""
@@ -6171,11 +6313,11 @@ msgstr ""
msgid "Enter a search query"
msgstr ""
-#: templates/InvenTree/search.html:268 templates/js/translated/stock.js:629
+#: templates/InvenTree/search.html:268 templates/js/translated/stock.js:699
msgid "Shipped to customer"
msgstr ""
-#: templates/InvenTree/search.html:271 templates/js/translated/stock.js:639
+#: templates/InvenTree/search.html:271 templates/js/translated/stock.js:709
msgid "No stock location set"
msgstr ""
@@ -6240,7 +6382,7 @@ msgstr ""
#: templates/InvenTree/settings/navbar.html:27
#: templates/InvenTree/settings/navbar.html:29
-#: templates/js/translated/tables.js:351 templates/search_form.html:6
+#: templates/js/translated/tables.js:366 templates/search_form.html:6
#: templates/search_form.html:8
msgid "Search"
msgstr ""
@@ -6257,7 +6399,7 @@ msgstr ""
#: templates/InvenTree/settings/navbar.html:46
#: templates/InvenTree/settings/navbar.html:48
-#: templates/InvenTree/settings/settings.html:8 templates/navbar.html:84
+#: templates/InvenTree/settings/settings.html:8 templates/navbar.html:94
msgid "Settings"
msgstr ""
@@ -6332,16 +6474,16 @@ msgid "No category parameter templates found"
msgstr ""
#: templates/InvenTree/settings/settings.html:174
-#: templates/InvenTree/settings/settings.html:271
+#: templates/InvenTree/settings/settings.html:273
msgid "Edit Template"
msgstr ""
#: templates/InvenTree/settings/settings.html:175
-#: templates/InvenTree/settings/settings.html:272
+#: templates/InvenTree/settings/settings.html:274
msgid "Delete Template"
msgstr ""
-#: templates/InvenTree/settings/settings.html:251
+#: templates/InvenTree/settings/settings.html:253
msgid "No part parameter templates found"
msgstr ""
@@ -6358,6 +6500,7 @@ msgid "Account Settings"
msgstr ""
#: templates/InvenTree/settings/user.html:15
+#: templates/js/translated/helpers.js:26
msgid "Edit"
msgstr ""
@@ -6436,65 +6579,69 @@ msgstr ""
msgid "InvenTree Version"
msgstr ""
-#: templates/about.html:26
+#: templates/about.html:27
+msgid "Development Version"
+msgstr ""
+
+#: templates/about.html:30
msgid "Up to Date"
msgstr ""
-#: templates/about.html:28
+#: templates/about.html:32
msgid "Update Available"
msgstr ""
-#: templates/about.html:34
-msgid "API Version"
-msgstr ""
-
-#: templates/about.html:39
-msgid "Python Version"
-msgstr ""
-
-#: templates/about.html:44
-msgid "Django Version"
-msgstr ""
-
-#: templates/about.html:51
+#: templates/about.html:42
msgid "Commit Hash"
msgstr ""
-#: templates/about.html:58
+#: templates/about.html:49
msgid "Commit Date"
msgstr ""
-#: templates/about.html:63
+#: templates/about.html:55
msgid "InvenTree Documentation"
msgstr ""
-#: templates/about.html:68
+#: templates/about.html:60
+msgid "API Version"
+msgstr ""
+
+#: templates/about.html:65
+msgid "Python Version"
+msgstr ""
+
+#: templates/about.html:70
+msgid "Django Version"
+msgstr ""
+
+#: templates/about.html:75
msgid "View Code on GitHub"
msgstr ""
-#: templates/about.html:73
+#: templates/about.html:80
msgid "Credits"
msgstr ""
-#: templates/about.html:78
+#: templates/about.html:85
msgid "Mobile App"
msgstr ""
-#: templates/about.html:83
+#: templates/about.html:90
msgid "Submit Bug Report"
msgstr ""
-#: templates/about.html:90 templates/clip.html:4
+#: templates/about.html:97 templates/clip.html:4
msgid "copy to clipboard"
msgstr ""
-#: templates/about.html:90
+#: templates/about.html:97
msgid "copy version information"
msgstr ""
-#: templates/about.html:100 templates/js/translated/modals.js:33
-#: templates/js/translated/modals.js:567 templates/js/translated/modals.js:661
-#: templates/js/translated/modals.js:957 templates/modals.html:29
+#: templates/about.html:107 templates/js/translated/modals.js:50
+#: templates/js/translated/modals.js:584 templates/js/translated/modals.js:678
+#: templates/js/translated/modals.js:971 templates/modals.html:29
#: templates/modals.html:54
msgid "Close"
msgstr ""
@@ -6515,1358 +6662,1390 @@ msgstr ""
msgid "Remote image must not exceed maximum allowable file size"
msgstr ""
-#: templates/js/report.js:47 templates/js/translated/report.js:47
+#: templates/js/report.js:47 templates/js/translated/report.js:67
msgid "items selected"
msgstr ""
-#: templates/js/report.js:55 templates/js/translated/report.js:55
+#: templates/js/report.js:55 templates/js/translated/report.js:75
msgid "Select Report Template"
msgstr ""
-#: templates/js/report.js:70 templates/js/translated/report.js:70
+#: templates/js/report.js:70 templates/js/translated/report.js:90
msgid "Select Test Report Template"
msgstr ""
-#: templates/js/report.js:98 templates/js/translated/label.js:10
-#: templates/js/translated/report.js:98 templates/js/translated/stock.js:244
+#: templates/js/report.js:98 templates/js/translated/label.js:29
+#: templates/js/translated/report.js:118 templates/js/translated/stock.js:313
msgid "Select Stock Items"
msgstr ""
-#: templates/js/report.js:99 templates/js/translated/report.js:99
+#: templates/js/report.js:99 templates/js/translated/report.js:119
msgid "Stock item(s) must be selected before printing reports"
msgstr ""
#: templates/js/report.js:116 templates/js/report.js:169
#: templates/js/report.js:223 templates/js/report.js:277
-#: templates/js/report.js:331 templates/js/translated/report.js:116
-#: templates/js/translated/report.js:169 templates/js/translated/report.js:223
-#: templates/js/translated/report.js:277 templates/js/translated/report.js:331
+#: templates/js/report.js:331 templates/js/translated/report.js:136
+#: templates/js/translated/report.js:189 templates/js/translated/report.js:243
+#: templates/js/translated/report.js:297 templates/js/translated/report.js:351
msgid "No Reports Found"
msgstr ""
-#: templates/js/report.js:117 templates/js/translated/report.js:117
+#: templates/js/report.js:117 templates/js/translated/report.js:137
msgid "No report templates found which match selected stock item(s)"
msgstr ""
-#: templates/js/report.js:152 templates/js/translated/report.js:152
+#: templates/js/report.js:152 templates/js/translated/report.js:172
msgid "Select Builds"
msgstr ""
-#: templates/js/report.js:153 templates/js/translated/report.js:153
+#: templates/js/report.js:153 templates/js/translated/report.js:173
msgid "Build(s) must be selected before printing reports"
msgstr ""
-#: templates/js/report.js:170 templates/js/translated/report.js:170
+#: templates/js/report.js:170 templates/js/translated/report.js:190
msgid "No report templates found which match selected build(s)"
msgstr ""
-#: templates/js/report.js:205 templates/js/translated/label.js:115
-#: templates/js/translated/report.js:205
+#: templates/js/report.js:205 templates/js/translated/label.js:134
+#: templates/js/translated/report.js:225
msgid "Select Parts"
msgstr ""
-#: templates/js/report.js:206 templates/js/translated/report.js:206
+#: templates/js/report.js:206 templates/js/translated/report.js:226
msgid "Part(s) must be selected before printing reports"
msgstr ""
-#: templates/js/report.js:224 templates/js/translated/report.js:224
+#: templates/js/report.js:224 templates/js/translated/report.js:244
msgid "No report templates found which match selected part(s)"
msgstr ""
-#: templates/js/report.js:259 templates/js/translated/report.js:259
+#: templates/js/report.js:259 templates/js/translated/report.js:279
msgid "Select Purchase Orders"
msgstr ""
-#: templates/js/report.js:260 templates/js/translated/report.js:260
+#: templates/js/report.js:260 templates/js/translated/report.js:280
msgid "Purchase Order(s) must be selected before printing report"
msgstr ""
#: templates/js/report.js:278 templates/js/report.js:332
-#: templates/js/translated/report.js:278 templates/js/translated/report.js:332
+#: templates/js/translated/report.js:298 templates/js/translated/report.js:352
msgid "No report templates found which match selected orders"
msgstr ""
-#: templates/js/report.js:313 templates/js/translated/report.js:313
+#: templates/js/report.js:313 templates/js/translated/report.js:333
msgid "Select Sales Orders"
msgstr ""
-#: templates/js/report.js:314 templates/js/translated/report.js:314
+#: templates/js/report.js:314 templates/js/translated/report.js:334
msgid "Sales Order(s) must be selected before printing report"
msgstr ""
-#: templates/js/translated/api.js:161 templates/js/translated/modals.js:1027
+#: templates/js/translated/api.js:174 templates/js/translated/modals.js:1041
msgid "No Response"
msgstr ""
-#: templates/js/translated/api.js:162 templates/js/translated/modals.js:1028
+#: templates/js/translated/api.js:175 templates/js/translated/modals.js:1042
msgid "No response from the InvenTree server"
msgstr ""
-#: templates/js/translated/api.js:167
+#: templates/js/translated/api.js:181
msgid "Error 400: Bad request"
msgstr ""
-#: templates/js/translated/api.js:168
+#: templates/js/translated/api.js:182
msgid "API request returned error code 400"
msgstr ""
-#: templates/js/translated/api.js:171 templates/js/translated/modals.js:1037
+#: templates/js/translated/api.js:186 templates/js/translated/modals.js:1051
msgid "Error 401: Not Authenticated"
msgstr ""
-#: templates/js/translated/api.js:172 templates/js/translated/modals.js:1038
+#: templates/js/translated/api.js:187 templates/js/translated/modals.js:1052
msgid "Authentication credentials not supplied"
msgstr ""
-#: templates/js/translated/api.js:175 templates/js/translated/modals.js:1042
+#: templates/js/translated/api.js:191 templates/js/translated/modals.js:1056
msgid "Error 403: Permission Denied"
msgstr ""
-#: templates/js/translated/api.js:176 templates/js/translated/modals.js:1043
+#: templates/js/translated/api.js:192 templates/js/translated/modals.js:1057
msgid "You do not have the required permissions to access this function"
msgstr ""
-#: templates/js/translated/api.js:179 templates/js/translated/modals.js:1047
+#: templates/js/translated/api.js:196 templates/js/translated/modals.js:1061
msgid "Error 404: Resource Not Found"
msgstr ""
-#: templates/js/translated/api.js:180 templates/js/translated/modals.js:1048
+#: templates/js/translated/api.js:197 templates/js/translated/modals.js:1062
msgid "The requested resource could not be located on the server"
msgstr ""
-#: templates/js/translated/api.js:183 templates/js/translated/modals.js:1052
+#: templates/js/translated/api.js:201 templates/js/translated/modals.js:1066
msgid "Error 408: Timeout"
msgstr ""
-#: templates/js/translated/api.js:184 templates/js/translated/modals.js:1053
+#: templates/js/translated/api.js:202 templates/js/translated/modals.js:1067
msgid "Connection timeout while requesting data from server"
msgstr ""
-#: templates/js/translated/api.js:187
+#: templates/js/translated/api.js:205
msgid "Unhandled Error Code"
msgstr ""
-#: templates/js/translated/api.js:188
+#: templates/js/translated/api.js:206
msgid "Error code"
msgstr ""
-#: templates/js/translated/attachment.js:16
+#: templates/js/translated/attachment.js:27
msgid "No attachments found"
msgstr ""
-#: templates/js/translated/attachment.js:56
+#: templates/js/translated/attachment.js:91
msgid "Upload Date"
msgstr ""
-#: templates/js/translated/attachment.js:69
+#: templates/js/translated/attachment.js:104
msgid "Edit attachment"
msgstr ""
-#: templates/js/translated/attachment.js:76
+#: templates/js/translated/attachment.js:111
msgid "Delete attachment"
msgstr ""
-#: templates/js/translated/barcode.js:8
+#: templates/js/translated/barcode.js:30
msgid "Scan barcode data here using wedge scanner"
msgstr ""
-#: templates/js/translated/barcode.js:10
+#: templates/js/translated/barcode.js:32
msgid "Enter barcode data"
msgstr ""
-#: templates/js/translated/barcode.js:14
+#: templates/js/translated/barcode.js:36
msgid "Barcode"
msgstr ""
-#: templates/js/translated/barcode.js:32
+#: templates/js/translated/barcode.js:54
msgid "Enter optional notes for stock transfer"
msgstr ""
-#: templates/js/translated/barcode.js:33
+#: templates/js/translated/barcode.js:55
msgid "Enter notes"
msgstr ""
-#: templates/js/translated/barcode.js:71
+#: templates/js/translated/barcode.js:93
msgid "Server error"
msgstr ""
-#: templates/js/translated/barcode.js:92
+#: templates/js/translated/barcode.js:114
msgid "Unknown response from server"
msgstr ""
-#: templates/js/translated/barcode.js:119
-#: templates/js/translated/modals.js:1017
+#: templates/js/translated/barcode.js:141
+#: templates/js/translated/modals.js:1031
msgid "Invalid server response"
msgstr ""
-#: templates/js/translated/barcode.js:212
+#: templates/js/translated/barcode.js:234
msgid "Scan barcode data below"
msgstr ""
-#: templates/js/translated/barcode.js:270
+#: templates/js/translated/barcode.js:281 templates/navbar.html:65
+msgid "Scan Barcode"
+msgstr ""
+
+#: templates/js/translated/barcode.js:292
msgid "No URL in response"
msgstr ""
-#: templates/js/translated/barcode.js:288
+#: templates/js/translated/barcode.js:310
msgid "Link Barcode to Stock Item"
msgstr ""
-#: templates/js/translated/barcode.js:311
+#: templates/js/translated/barcode.js:333
msgid "This will remove the association between this stock item and the barcode"
msgstr ""
-#: templates/js/translated/barcode.js:317
+#: templates/js/translated/barcode.js:339
msgid "Unlink"
msgstr ""
-#: templates/js/translated/barcode.js:376 templates/js/translated/stock.js:220
+#: templates/js/translated/barcode.js:398 templates/js/translated/stock.js:289
msgid "Remove stock item"
msgstr ""
-#: templates/js/translated/barcode.js:418
+#: templates/js/translated/barcode.js:440
msgid "Check Stock Items into Location"
msgstr ""
-#: templates/js/translated/barcode.js:422
-#: templates/js/translated/barcode.js:547
+#: templates/js/translated/barcode.js:444
+#: templates/js/translated/barcode.js:571
msgid "Check In"
msgstr ""
-#: templates/js/translated/barcode.js:462
-#: templates/js/translated/barcode.js:586
+#: templates/js/translated/barcode.js:486
+#: templates/js/translated/barcode.js:610
msgid "Error transferring stock"
msgstr ""
-#: templates/js/translated/barcode.js:481
+#: templates/js/translated/barcode.js:505
msgid "Stock Item already scanned"
msgstr ""
-#: templates/js/translated/barcode.js:485
+#: templates/js/translated/barcode.js:509
msgid "Stock Item already in this location"
msgstr ""
-#: templates/js/translated/barcode.js:492
+#: templates/js/translated/barcode.js:516
msgid "Added stock item"
msgstr ""
-#: templates/js/translated/barcode.js:499
+#: templates/js/translated/barcode.js:523
msgid "Barcode does not match Stock Item"
msgstr ""
-#: templates/js/translated/barcode.js:542
+#: templates/js/translated/barcode.js:566
msgid "Check Into Location"
msgstr ""
-#: templates/js/translated/barcode.js:605
+#: templates/js/translated/barcode.js:629
msgid "Barcode does not match a valid location"
msgstr ""
-#: templates/js/translated/bom.js:195 templates/js/translated/build.js:1152
+#: templates/js/translated/bom.js:215 templates/js/translated/build.js:1169
msgid "Open subassembly"
msgstr ""
-#: templates/js/translated/bom.js:269
+#: templates/js/translated/bom.js:287
msgid "Purchase Price Range"
msgstr ""
-#: templates/js/translated/bom.js:277
+#: templates/js/translated/bom.js:294
msgid "Purchase Price Average"
msgstr ""
-#: templates/js/translated/bom.js:326 templates/js/translated/bom.js:412
+#: templates/js/translated/bom.js:342 templates/js/translated/bom.js:428
msgid "View BOM"
msgstr ""
-#: templates/js/translated/bom.js:386
+#: templates/js/translated/bom.js:402
msgid "Validate BOM Item"
msgstr ""
-#: templates/js/translated/bom.js:388
+#: templates/js/translated/bom.js:404
msgid "This line has been validated"
msgstr ""
-#: templates/js/translated/bom.js:390 templates/js/translated/bom.js:555
+#: templates/js/translated/bom.js:406 templates/js/translated/bom.js:569
msgid "Edit BOM Item"
msgstr ""
-#: templates/js/translated/bom.js:392 templates/js/translated/bom.js:539
+#: templates/js/translated/bom.js:408 templates/js/translated/bom.js:554
msgid "Delete BOM Item"
msgstr ""
-#: templates/js/translated/bom.js:483 templates/js/translated/build.js:458
-#: templates/js/translated/build.js:1250
+#: templates/js/translated/bom.js:499 templates/js/translated/build.js:483
+#: templates/js/translated/build.js:1267
msgid "No BOM items found"
msgstr ""
-#: templates/js/translated/build.js:42
+#: templates/js/translated/build.js:69
msgid "Edit Build Order"
msgstr ""
-#: templates/js/translated/build.js:68
+#: templates/js/translated/build.js:95
msgid "Create Build Order"
msgstr ""
-#: templates/js/translated/build.js:100
+#: templates/js/translated/build.js:127
msgid "Auto-allocate stock items to this output"
msgstr ""
-#: templates/js/translated/build.js:108
+#: templates/js/translated/build.js:135
msgid "Unallocate stock from build output"
msgstr ""
-#: templates/js/translated/build.js:118
+#: templates/js/translated/build.js:145
msgid "Complete build output"
msgstr ""
-#: templates/js/translated/build.js:127
+#: templates/js/translated/build.js:154
msgid "Delete build output"
msgstr ""
-#: templates/js/translated/build.js:222
+#: templates/js/translated/build.js:249
msgid "No build order allocations found"
msgstr ""
-#: templates/js/translated/build.js:260 templates/js/translated/order.js:471
+#: templates/js/translated/build.js:287 templates/js/translated/order.js:813
msgid "Location not specified"
msgstr ""
-#: templates/js/translated/build.js:364 templates/stock_table.html:20
+#: templates/js/translated/build.js:391 templates/stock_table.html:20
msgid "New Stock Item"
msgstr ""
-#: templates/js/translated/build.js:679
+#: templates/js/translated/build.js:702
msgid "Required Part"
msgstr ""
-#: templates/js/translated/build.js:700
+#: templates/js/translated/build.js:723
msgid "Quantity Per"
msgstr ""
-#: templates/js/translated/build.js:770 templates/js/translated/build.js:1214
+#: templates/js/translated/build.js:793 templates/js/translated/build.js:1231
#: templates/stock_table.html:59
msgid "Order stock"
msgstr ""
-#: templates/js/translated/build.js:823
+#: templates/js/translated/build.js:846
msgid "No builds matching query"
msgstr ""
-#: templates/js/translated/build.js:840 templates/js/translated/part.js:711
-#: templates/js/translated/part.js:956 templates/js/translated/stock.js:883
-#: templates/js/translated/stock.js:1336
+#: templates/js/translated/build.js:863 templates/js/translated/part.js:845
+#: templates/js/translated/part.js:1123 templates/js/translated/stock.js:783
+#: templates/js/translated/stock.js:1477
msgid "Select"
msgstr ""
-#: templates/js/translated/build.js:860
+#: templates/js/translated/build.js:883
msgid "Build order is overdue"
msgstr ""
-#: templates/js/translated/build.js:924 templates/js/translated/stock.js:1558
+#: templates/js/translated/build.js:944 templates/js/translated/stock.js:1696
msgid "No user information"
msgstr ""
-#: templates/js/translated/build.js:939
+#: templates/js/translated/build.js:956
msgid "No information"
msgstr ""
-#: templates/js/translated/build.js:989
+#: templates/js/translated/build.js:1007
msgid "No parts allocated for"
msgstr ""
-#: templates/js/translated/company.js:34
+#: templates/js/translated/company.js:65
msgid "Add Manufacturer"
msgstr ""
-#: templates/js/translated/company.js:47 templates/js/translated/company.js:136
+#: templates/js/translated/company.js:78 templates/js/translated/company.js:176
msgid "Add Manufacturer Part"
msgstr ""
-#: templates/js/translated/company.js:59
+#: templates/js/translated/company.js:99
msgid "Edit Manufacturer Part"
msgstr ""
-#: templates/js/translated/company.js:68
+#: templates/js/translated/company.js:108
msgid "Delete Manufacturer Part"
msgstr ""
-#: templates/js/translated/company.js:124 templates/js/translated/order.js:58
+#: templates/js/translated/company.js:164 templates/js/translated/order.js:86
msgid "Add Supplier"
msgstr ""
-#: templates/js/translated/company.js:152
+#: templates/js/translated/company.js:192
msgid "Add Supplier Part"
msgstr ""
-#: templates/js/translated/company.js:162
+#: templates/js/translated/company.js:207
msgid "Edit Supplier Part"
msgstr ""
-#: templates/js/translated/company.js:172
+#: templates/js/translated/company.js:217
msgid "Delete Supplier Part"
msgstr ""
-#: templates/js/translated/company.js:219
+#: templates/js/translated/company.js:264
msgid "Edit Company"
msgstr ""
-#: templates/js/translated/company.js:240
+#: templates/js/translated/company.js:285
msgid "Add new Company"
msgstr ""
-#: templates/js/translated/company.js:317
+#: templates/js/translated/company.js:362
msgid "Parts Supplied"
msgstr ""
-#: templates/js/translated/company.js:326
+#: templates/js/translated/company.js:371
msgid "Parts Manufactured"
msgstr ""
-#: templates/js/translated/company.js:339
+#: templates/js/translated/company.js:385
msgid "No company information found"
msgstr ""
-#: templates/js/translated/company.js:357
+#: templates/js/translated/company.js:404
msgid "The following manufacturer parts will be deleted"
msgstr ""
-#: templates/js/translated/company.js:374
+#: templates/js/translated/company.js:421
msgid "Delete Manufacturer Parts"
msgstr ""
-#: templates/js/translated/company.js:427
+#: templates/js/translated/company.js:475
msgid "No manufacturer parts found"
msgstr ""
-#: templates/js/translated/company.js:446
-#: templates/js/translated/company.js:696 templates/js/translated/part.js:288
-#: templates/js/translated/part.js:373
+#: templates/js/translated/company.js:495
+#: templates/js/translated/company.js:751 templates/js/translated/part.js:416
+#: templates/js/translated/part.js:501
msgid "Template part"
msgstr ""
-#: templates/js/translated/company.js:450
-#: templates/js/translated/company.js:700 templates/js/translated/part.js:292
-#: templates/js/translated/part.js:377
+#: templates/js/translated/company.js:499
+#: templates/js/translated/company.js:755 templates/js/translated/part.js:420
+#: templates/js/translated/part.js:505
msgid "Assembled part"
msgstr ""
-#: templates/js/translated/company.js:574 templates/js/translated/part.js:462
+#: templates/js/translated/company.js:626 templates/js/translated/part.js:593
msgid "No parameters found"
msgstr ""
-#: templates/js/translated/company.js:610 templates/js/translated/part.js:503
+#: templates/js/translated/company.js:663 templates/js/translated/part.js:635
msgid "Edit parameter"
msgstr ""
-#: templates/js/translated/company.js:611 templates/js/translated/part.js:504
+#: templates/js/translated/company.js:664 templates/js/translated/part.js:636
msgid "Delete parameter"
msgstr ""
-#: templates/js/translated/company.js:630 templates/js/translated/part.js:521
+#: templates/js/translated/company.js:683 templates/js/translated/part.js:653
msgid "Edit Parameter"
msgstr ""
-#: templates/js/translated/company.js:641 templates/js/translated/part.js:533
+#: templates/js/translated/company.js:694 templates/js/translated/part.js:665
msgid "Delete Parameter"
msgstr ""
-#: templates/js/translated/company.js:677
+#: templates/js/translated/company.js:731
msgid "No supplier parts found"
msgstr ""
-#: templates/js/translated/filters.js:167
-#: templates/js/translated/filters.js:404
+#: templates/js/translated/filters.js:178
+#: templates/js/translated/filters.js:402
msgid "true"
msgstr ""
-#: templates/js/translated/filters.js:171
-#: templates/js/translated/filters.js:405
+#: templates/js/translated/filters.js:182
+#: templates/js/translated/filters.js:403
msgid "false"
msgstr ""
-#: templates/js/translated/filters.js:193
+#: templates/js/translated/filters.js:204
msgid "Select filter"
msgstr ""
-#: templates/js/translated/filters.js:268
+#: templates/js/translated/filters.js:279
msgid "Reload data"
msgstr ""
-#: templates/js/translated/filters.js:270
+#: templates/js/translated/filters.js:281
msgid "Add new filter"
msgstr ""
-#: templates/js/translated/filters.js:273
+#: templates/js/translated/filters.js:284
msgid "Clear all filters"
msgstr ""
-#: templates/js/translated/filters.js:303
+#: templates/js/translated/filters.js:312
msgid "Create filter"
msgstr ""
-#: templates/js/translated/forms.js:289 templates/js/translated/forms.js:302
-#: templates/js/translated/forms.js:314 templates/js/translated/forms.js:326
+#: templates/js/translated/forms.js:323 templates/js/translated/forms.js:336
+#: templates/js/translated/forms.js:348 templates/js/translated/forms.js:360
msgid "Action Prohibited"
msgstr ""
-#: templates/js/translated/forms.js:290
+#: templates/js/translated/forms.js:324
msgid "Create operation not allowed"
msgstr ""
-#: templates/js/translated/forms.js:303
+#: templates/js/translated/forms.js:337
msgid "Update operation not allowed"
msgstr ""
-#: templates/js/translated/forms.js:315
+#: templates/js/translated/forms.js:349
msgid "Delete operation not allowed"
msgstr ""
-#: templates/js/translated/forms.js:327
+#: templates/js/translated/forms.js:361
msgid "View operation not allowed"
msgstr ""
-#: templates/js/translated/forms.js:865 templates/modals.html:21
+#: templates/js/translated/forms.js:889 templates/modals.html:21
#: templates/modals.html:47
msgid "Form errors exist"
msgstr ""
-#: templates/js/translated/forms.js:1258
+#: templates/js/translated/forms.js:1379
msgid "Searching"
msgstr ""
-#: templates/js/translated/forms.js:1423
+#: templates/js/translated/forms.js:1593
msgid "Clear input"
msgstr ""
-#: templates/js/translated/label.js:11
-msgid "Stock item(s) must be selected before printing labels"
+#: templates/js/translated/helpers.js:19
+msgid "YES"
msgstr ""
-#: templates/js/translated/label.js:29 templates/js/translated/label.js:79
-#: templates/js/translated/label.js:134
-msgid "No Labels Found"
+#: templates/js/translated/helpers.js:21
+msgid "NO"
msgstr ""
#: templates/js/translated/label.js:30
+msgid "Stock item(s) must be selected before printing labels"
+msgstr ""
+
+#: templates/js/translated/label.js:48 templates/js/translated/label.js:98
+#: templates/js/translated/label.js:153
+msgid "No Labels Found"
+msgstr ""
+
+#: templates/js/translated/label.js:49
msgid "No labels found which match selected stock item(s)"
msgstr ""
-#: templates/js/translated/label.js:61
+#: templates/js/translated/label.js:80
msgid "Select Stock Locations"
msgstr ""
-#: templates/js/translated/label.js:62
+#: templates/js/translated/label.js:81
msgid "Stock location(s) must be selected before printing labels"
msgstr ""
-#: templates/js/translated/label.js:80
+#: templates/js/translated/label.js:99
msgid "No labels found which match selected stock location(s)"
msgstr ""
-#: templates/js/translated/label.js:116
+#: templates/js/translated/label.js:135
msgid "Part(s) must be selected before printing labels"
msgstr ""
-#: templates/js/translated/label.js:135
+#: templates/js/translated/label.js:154
msgid "No labels found which match the selected part(s)"
msgstr ""
-#: templates/js/translated/label.js:209
+#: templates/js/translated/label.js:228
msgid "stock items selected"
msgstr ""
-#: templates/js/translated/label.js:217
+#: templates/js/translated/label.js:236
msgid "Select Label"
msgstr ""
-#: templates/js/translated/label.js:232
+#: templates/js/translated/label.js:251
msgid "Select Label Template"
msgstr ""
-#: templates/js/translated/modals.js:59 templates/js/translated/modals.js:103
-#: templates/js/translated/modals.js:593
+#: templates/js/translated/modals.js:76 templates/js/translated/modals.js:120
+#: templates/js/translated/modals.js:610
msgid "Cancel"
msgstr ""
-#: templates/js/translated/modals.js:60 templates/js/translated/modals.js:102
-#: templates/js/translated/modals.js:660 templates/js/translated/modals.js:956
+#: templates/js/translated/modals.js:77 templates/js/translated/modals.js:119
+#: templates/js/translated/modals.js:677 templates/js/translated/modals.js:970
#: templates/modals.html:30 templates/modals.html:55
msgid "Submit"
msgstr ""
-#: templates/js/translated/modals.js:101
+#: templates/js/translated/modals.js:118
msgid "Form Title"
msgstr ""
-#: templates/js/translated/modals.js:380
+#: templates/js/translated/modals.js:397
msgid "Waiting for server..."
msgstr ""
-#: templates/js/translated/modals.js:539
+#: templates/js/translated/modals.js:556
msgid "Show Error Information"
msgstr ""
-#: templates/js/translated/modals.js:592
+#: templates/js/translated/modals.js:609
msgid "Accept"
msgstr ""
-#: templates/js/translated/modals.js:649
+#: templates/js/translated/modals.js:666
msgid "Loading Data"
msgstr ""
-#: templates/js/translated/modals.js:907
+#: templates/js/translated/modals.js:922
msgid "Invalid response from server"
msgstr ""
-#: templates/js/translated/modals.js:907
+#: templates/js/translated/modals.js:922
msgid "Form data missing from server response"
msgstr ""
-#: templates/js/translated/modals.js:920
+#: templates/js/translated/modals.js:934
msgid "Error posting form data"
msgstr ""
-#: templates/js/translated/modals.js:1017
+#: templates/js/translated/modals.js:1031
msgid "JSON response missing form data"
msgstr ""
-#: templates/js/translated/modals.js:1032
+#: templates/js/translated/modals.js:1046
msgid "Error 400: Bad Request"
msgstr ""
-#: templates/js/translated/modals.js:1033
+#: templates/js/translated/modals.js:1047
msgid "Server returned error code 400"
msgstr ""
-#: templates/js/translated/modals.js:1056
+#: templates/js/translated/modals.js:1070
msgid "Error requesting form data"
msgstr ""
-#: templates/js/translated/model_renderers.js:38
+#: templates/js/translated/model_renderers.js:40
msgid "Company ID"
msgstr ""
-#: templates/js/translated/model_renderers.js:78
+#: templates/js/translated/model_renderers.js:82
msgid "Location ID"
msgstr ""
-#: templates/js/translated/model_renderers.js:95
+#: templates/js/translated/model_renderers.js:99
msgid "Build ID"
msgstr ""
-#: templates/js/translated/model_renderers.js:114
+#: templates/js/translated/model_renderers.js:119
msgid "Part ID"
msgstr ""
-#: templates/js/translated/model_renderers.js:163
+#: templates/js/translated/model_renderers.js:171
msgid "Category ID"
msgstr ""
-#: templates/js/translated/model_renderers.js:199
+#: templates/js/translated/model_renderers.js:208
msgid "Manufacturer Part ID"
msgstr ""
-#: templates/js/translated/model_renderers.js:227
+#: templates/js/translated/model_renderers.js:237
msgid "Supplier Part ID"
msgstr ""
-#: templates/js/translated/order.js:17
+#: templates/js/translated/order.js:45
msgid "Add Customer"
msgstr ""
-#: templates/js/translated/order.js:42
+#: templates/js/translated/order.js:70
msgid "Create Sales Order"
msgstr ""
-#: templates/js/translated/order.js:222
+#: templates/js/translated/order.js:295
msgid "No purchase orders found"
msgstr ""
-#: templates/js/translated/order.js:246 templates/js/translated/order.js:341
+#: templates/js/translated/order.js:320 templates/js/translated/order.js:682
msgid "Order is overdue"
msgstr ""
-#: templates/js/translated/order.js:318
+#: templates/js/translated/order.js:452
+msgid "No line items found"
+msgstr ""
+
+#: templates/js/translated/order.js:617
+msgid "Delete line item"
+msgstr ""
+
+#: templates/js/translated/order.js:621
+msgid "Receive line item"
+msgstr ""
+
+#: templates/js/translated/order.js:658
msgid "No sales orders found"
msgstr ""
-#: templates/js/translated/order.js:355
+#: templates/js/translated/order.js:696
msgid "Invalid Customer"
msgstr ""
-#: templates/js/translated/order.js:432
+#: templates/js/translated/order.js:774
msgid "No sales order allocations found"
msgstr ""
-#: templates/js/translated/part.js:10
-msgid "YES"
-msgstr ""
-
-#: templates/js/translated/part.js:12
-msgid "NO"
-msgstr ""
-
-#: templates/js/translated/part.js:22
-msgid "Add Part Category"
-msgstr ""
-
-#: templates/js/translated/part.js:53
+#: templates/js/translated/part.js:49
msgid "Part Attributes"
msgstr ""
-#: templates/js/translated/part.js:96
+#: templates/js/translated/part.js:53
msgid "Part Creation Options"
msgstr ""
-#: templates/js/translated/part.js:102
-msgid "Initial Stock Quantity"
-msgstr ""
-
-#: templates/js/translated/part.js:103
-msgid "Initialize part stock with specified quantity"
-msgstr ""
-
-#: templates/js/translated/part.js:109
-msgid "Copy Category Parameters"
-msgstr ""
-
-#: templates/js/translated/part.js:110
-msgid "Copy parameter templates from selected part category"
-msgstr ""
-
-#: templates/js/translated/part.js:120
+#: templates/js/translated/part.js:57
msgid "Part Duplication Options"
msgstr ""
-#: templates/js/translated/part.js:131
-msgid "Copy Image"
+#: templates/js/translated/part.js:61
+msgid "Supplier Options"
msgstr ""
-#: templates/js/translated/part.js:132
-msgid "Copy image from original part"
+#: templates/js/translated/part.js:75
+msgid "Add Part Category"
msgstr ""
-#: templates/js/translated/part.js:138
-msgid "Copy BOM"
+#: templates/js/translated/part.js:159
+msgid "Create Initial Stock"
msgstr ""
-#: templates/js/translated/part.js:139
-msgid "Copy bill of materials from original part"
+#: templates/js/translated/part.js:160
+msgid "Create an initial stock item for this part"
msgstr ""
-#: templates/js/translated/part.js:145
-msgid "Copy Parameters"
+#: templates/js/translated/part.js:167
+msgid "Initial Stock Quantity"
msgstr ""
-#: templates/js/translated/part.js:146
-msgid "Copy parameter data from original part"
+#: templates/js/translated/part.js:168
+msgid "Specify initial stock quantity for this part"
msgstr ""
-#: templates/js/translated/part.js:158
-msgid "Parent part category"
+#: templates/js/translated/part.js:175 templates/js/translated/stock.js:330
+msgid "Select destination stock location"
+msgstr ""
+
+#: templates/js/translated/part.js:186
+msgid "Copy Category Parameters"
+msgstr ""
+
+#: templates/js/translated/part.js:187
+msgid "Copy parameter templates from selected part category"
+msgstr ""
+
+#: templates/js/translated/part.js:195
+msgid "Add Supplier Data"
msgstr ""
#: templates/js/translated/part.js:196
+msgid "Create initial supplier data for this part"
+msgstr ""
+
+#: templates/js/translated/part.js:252
+msgid "Copy Image"
+msgstr ""
+
+#: templates/js/translated/part.js:253
+msgid "Copy image from original part"
+msgstr ""
+
+#: templates/js/translated/part.js:260
+msgid "Copy BOM"
+msgstr ""
+
+#: templates/js/translated/part.js:261
+msgid "Copy bill of materials from original part"
+msgstr ""
+
+#: templates/js/translated/part.js:268
+msgid "Copy Parameters"
+msgstr ""
+
+#: templates/js/translated/part.js:269
+msgid "Copy parameter data from original part"
+msgstr ""
+
+#: templates/js/translated/part.js:282
+msgid "Parent part category"
+msgstr ""
+
+#: templates/js/translated/part.js:323
msgid "Edit Part"
msgstr ""
-#: templates/js/translated/part.js:280 templates/js/translated/part.js:365
+#: templates/js/translated/part.js:408 templates/js/translated/part.js:493
msgid "Trackable part"
msgstr ""
-#: templates/js/translated/part.js:284 templates/js/translated/part.js:369
+#: templates/js/translated/part.js:412 templates/js/translated/part.js:497
msgid "Virtual part"
msgstr ""
-#: templates/js/translated/part.js:296
+#: templates/js/translated/part.js:424
msgid "Starred part"
msgstr ""
-#: templates/js/translated/part.js:300
+#: templates/js/translated/part.js:428
msgid "Salable part"
msgstr ""
-#: templates/js/translated/part.js:414
+#: templates/js/translated/part.js:543
msgid "No variants found"
msgstr ""
-#: templates/js/translated/part.js:601 templates/js/translated/part.js:840
+#: templates/js/translated/part.js:732 templates/js/translated/part.js:994
msgid "No parts found"
msgstr ""
-#: templates/js/translated/part.js:779
+#: templates/js/translated/part.js:921
msgid "No category"
msgstr ""
-#: templates/js/translated/part.js:797
-#: templates/js/translated/table_filters.js:337
+#: templates/js/translated/part.js:944
+#: templates/js/translated/table_filters.js:350
msgid "Low stock"
msgstr ""
-#: templates/js/translated/part.js:981 templates/js/translated/stock.js:1360
+#: templates/js/translated/part.js:1148 templates/js/translated/stock.js:1501
msgid "Path"
msgstr ""
-#: templates/js/translated/part.js:1024
+#: templates/js/translated/part.js:1191
msgid "No test templates matching query"
msgstr ""
-#: templates/js/translated/part.js:1075 templates/js/translated/stock.js:443
+#: templates/js/translated/part.js:1242 templates/js/translated/stock.js:514
msgid "Edit test result"
msgstr ""
-#: templates/js/translated/part.js:1076 templates/js/translated/stock.js:444
+#: templates/js/translated/part.js:1243 templates/js/translated/stock.js:515
msgid "Delete test result"
msgstr ""
-#: templates/js/translated/part.js:1082
+#: templates/js/translated/part.js:1249
msgid "This test is defined for a parent part"
msgstr ""
-#: templates/js/translated/part.js:1107
+#: templates/js/translated/part.js:1274
#, python-brace-format
msgid "No ${human_name} information found"
msgstr ""
-#: templates/js/translated/part.js:1160
+#: templates/js/translated/part.js:1329
#, python-brace-format
msgid "Edit ${human_name}"
msgstr ""
-#: templates/js/translated/part.js:1161
+#: templates/js/translated/part.js:1330
#, python-brace-format
msgid "Delete ${human_name}"
msgstr ""
-#: templates/js/translated/part.js:1261
+#: templates/js/translated/part.js:1431
msgid "Single Price"
msgstr ""
-#: templates/js/translated/part.js:1280
+#: templates/js/translated/part.js:1450
msgid "Single Price Difference"
msgstr ""
-#: templates/js/translated/stock.js:9
+#: templates/js/translated/stock.js:66
msgid "Parent stock location"
msgstr ""
-#: templates/js/translated/stock.js:39
+#: templates/js/translated/stock.js:96
msgid "Export Stock"
msgstr ""
-#: templates/js/translated/stock.js:42
+#: templates/js/translated/stock.js:99
msgid "Format"
msgstr ""
-#: templates/js/translated/stock.js:43
+#: templates/js/translated/stock.js:100
msgid "Select file format"
msgstr ""
-#: templates/js/translated/stock.js:55
+#: templates/js/translated/stock.js:124
msgid "Include Sublocations"
msgstr ""
-#: templates/js/translated/stock.js:56
+#: templates/js/translated/stock.js:125
msgid "Include stock items in sublocations"
msgstr ""
-#: templates/js/translated/stock.js:98
+#: templates/js/translated/stock.js:167
msgid "Transfer Stock"
msgstr ""
-#: templates/js/translated/stock.js:99
+#: templates/js/translated/stock.js:168
msgid "Move"
msgstr ""
-#: templates/js/translated/stock.js:105
+#: templates/js/translated/stock.js:174
msgid "Count Stock"
msgstr ""
-#: templates/js/translated/stock.js:106
+#: templates/js/translated/stock.js:175
msgid "Count"
msgstr ""
-#: templates/js/translated/stock.js:110
+#: templates/js/translated/stock.js:179
msgid "Remove Stock"
msgstr ""
-#: templates/js/translated/stock.js:111
+#: templates/js/translated/stock.js:180
msgid "Take"
msgstr ""
-#: templates/js/translated/stock.js:115
+#: templates/js/translated/stock.js:184
msgid "Add Stock"
msgstr ""
-#: templates/js/translated/stock.js:116 users/models.py:190
+#: templates/js/translated/stock.js:185 users/models.py:190
msgid "Add"
msgstr ""
-#: templates/js/translated/stock.js:120 templates/stock_table.html:63
+#: templates/js/translated/stock.js:189 templates/stock_table.html:63
msgid "Delete Stock"
msgstr ""
-#: templates/js/translated/stock.js:209
+#: templates/js/translated/stock.js:278
msgid "Quantity cannot be adjusted for serialized stock"
msgstr ""
-#: templates/js/translated/stock.js:209
+#: templates/js/translated/stock.js:278
msgid "Specify stock quantity"
msgstr ""
-#: templates/js/translated/stock.js:245
+#: templates/js/translated/stock.js:314
msgid "You must select at least one available stock item"
msgstr ""
-#: templates/js/translated/stock.js:261
-msgid "Select destination stock location"
-msgstr ""
-
-#: templates/js/translated/stock.js:269
+#: templates/js/translated/stock.js:339
msgid "Stock transaction notes"
msgstr ""
-#: templates/js/translated/stock.js:406
+#: templates/js/translated/stock.js:477
msgid "PASS"
msgstr ""
-#: templates/js/translated/stock.js:408
+#: templates/js/translated/stock.js:479
msgid "FAIL"
msgstr ""
-#: templates/js/translated/stock.js:413
+#: templates/js/translated/stock.js:484
msgid "NO RESULT"
msgstr ""
-#: templates/js/translated/stock.js:439
+#: templates/js/translated/stock.js:510
msgid "Add test result"
msgstr ""
-#: templates/js/translated/stock.js:465
+#: templates/js/translated/stock.js:536
msgid "No test results found"
msgstr ""
-#: templates/js/translated/stock.js:513
+#: templates/js/translated/stock.js:584
msgid "Test Date"
msgstr ""
-#: templates/js/translated/stock.js:621
+#: templates/js/translated/stock.js:691
msgid "In production"
msgstr ""
-#: templates/js/translated/stock.js:625
+#: templates/js/translated/stock.js:695
msgid "Installed in Stock Item"
msgstr ""
-#: templates/js/translated/stock.js:633
+#: templates/js/translated/stock.js:703
msgid "Assigned to Sales Order"
msgstr ""
-#: templates/js/translated/stock.js:709
-msgid "No stock items matching query"
-msgstr ""
-
-#: templates/js/translated/stock.js:729
-msgid "items"
-msgstr ""
-
-#: templates/js/translated/stock.js:821
-msgid "batches"
-msgstr ""
-
-#: templates/js/translated/stock.js:848
-msgid "locations"
-msgstr ""
-
-#: templates/js/translated/stock.js:850
-msgid "Undefined location"
-msgstr ""
-
-#: templates/js/translated/stock.js:951
+#: templates/js/translated/stock.js:865
msgid "Stock item is in production"
msgstr ""
-#: templates/js/translated/stock.js:956
+#: templates/js/translated/stock.js:870
msgid "Stock item assigned to sales order"
msgstr ""
-#: templates/js/translated/stock.js:959
+#: templates/js/translated/stock.js:873
msgid "Stock item assigned to customer"
msgstr ""
-#: templates/js/translated/stock.js:963
+#: templates/js/translated/stock.js:877
msgid "Stock item has expired"
msgstr ""
-#: templates/js/translated/stock.js:965
+#: templates/js/translated/stock.js:879
msgid "Stock item will expire soon"
msgstr ""
-#: templates/js/translated/stock.js:969
+#: templates/js/translated/stock.js:883
msgid "Stock item has been allocated"
msgstr ""
-#: templates/js/translated/stock.js:973
+#: templates/js/translated/stock.js:887
msgid "Stock item has been installed in another item"
msgstr ""
-#: templates/js/translated/stock.js:980
+#: templates/js/translated/stock.js:894
msgid "Stock item has been rejected"
msgstr ""
-#: templates/js/translated/stock.js:984
+#: templates/js/translated/stock.js:896
msgid "Stock item is lost"
msgstr ""
-#: templates/js/translated/stock.js:987
+#: templates/js/translated/stock.js:898
msgid "Stock item is destroyed"
msgstr ""
-#: templates/js/translated/stock.js:991
-#: templates/js/translated/table_filters.js:148
+#: templates/js/translated/stock.js:902
+#: templates/js/translated/table_filters.js:161
msgid "Depleted"
msgstr ""
-#: templates/js/translated/stock.js:1020
+#: templates/js/translated/stock.js:956
msgid "Stocktake"
msgstr ""
-#: templates/js/translated/stock.js:1073
+#: templates/js/translated/stock.js:1029
msgid "Supplier part not specified"
msgstr ""
-#: templates/js/translated/stock.js:1223
+#: templates/js/translated/stock.js:1067
+msgid "No stock items matching query"
+msgstr ""
+
+#: templates/js/translated/stock.js:1088 templates/js/translated/stock.js:1136
+msgid "items"
+msgstr ""
+
+#: templates/js/translated/stock.js:1176
+msgid "batches"
+msgstr ""
+
+#: templates/js/translated/stock.js:1203
+msgid "locations"
+msgstr ""
+
+#: templates/js/translated/stock.js:1205
+msgid "Undefined location"
+msgstr ""
+
+#: templates/js/translated/stock.js:1364
msgid "Stock Status"
msgstr ""
-#: templates/js/translated/stock.js:1238
+#: templates/js/translated/stock.js:1379
msgid "Set Stock Status"
msgstr ""
-#: templates/js/translated/stock.js:1252
+#: templates/js/translated/stock.js:1393
msgid "Select Status Code"
msgstr ""
-#: templates/js/translated/stock.js:1253
+#: templates/js/translated/stock.js:1394
msgid "Status code must be selected"
msgstr ""
-#: templates/js/translated/stock.js:1392
+#: templates/js/translated/stock.js:1533
msgid "Invalid date"
msgstr ""
-#: templates/js/translated/stock.js:1439
+#: templates/js/translated/stock.js:1580
msgid "Location no longer exists"
msgstr ""
-#: templates/js/translated/stock.js:1458
+#: templates/js/translated/stock.js:1599
msgid "Purchase order no longer exists"
msgstr ""
-#: templates/js/translated/stock.js:1477
+#: templates/js/translated/stock.js:1618
msgid "Customer no longer exists"
msgstr ""
-#: templates/js/translated/stock.js:1495
+#: templates/js/translated/stock.js:1636
msgid "Stock item no longer exists"
msgstr ""
-#: templates/js/translated/stock.js:1518
+#: templates/js/translated/stock.js:1659
msgid "Added"
msgstr ""
-#: templates/js/translated/stock.js:1526
+#: templates/js/translated/stock.js:1667
msgid "Removed"
msgstr ""
-#: templates/js/translated/stock.js:1570
+#: templates/js/translated/stock.js:1708
msgid "Edit tracking entry"
msgstr ""
-#: templates/js/translated/stock.js:1571
+#: templates/js/translated/stock.js:1709
msgid "Delete tracking entry"
msgstr ""
-#: templates/js/translated/stock.js:1715
+#: templates/js/translated/stock.js:1833
msgid "No installed items"
msgstr ""
-#: templates/js/translated/stock.js:1738
+#: templates/js/translated/stock.js:1856
msgid "Serial"
msgstr ""
-#: templates/js/translated/stock.js:1766
+#: templates/js/translated/stock.js:1884
msgid "Uninstall Stock Item"
msgstr ""
-#: templates/js/translated/table_filters.js:43
+#: templates/js/translated/table_filters.js:56
msgid "Trackable Part"
msgstr ""
-#: templates/js/translated/table_filters.js:47
+#: templates/js/translated/table_filters.js:60
msgid "Assembled Part"
msgstr ""
-#: templates/js/translated/table_filters.js:51
+#: templates/js/translated/table_filters.js:64
msgid "Validated"
msgstr ""
-#: templates/js/translated/table_filters.js:59
+#: templates/js/translated/table_filters.js:72
msgid "Allow Variant Stock"
msgstr ""
-#: templates/js/translated/table_filters.js:79
-#: templates/js/translated/table_filters.js:143
+#: templates/js/translated/table_filters.js:92
+#: templates/js/translated/table_filters.js:156
msgid "Include sublocations"
msgstr ""
-#: templates/js/translated/table_filters.js:80
+#: templates/js/translated/table_filters.js:93
msgid "Include locations"
msgstr ""
-#: templates/js/translated/table_filters.js:90
-#: templates/js/translated/table_filters.js:91
-#: templates/js/translated/table_filters.js:314
+#: templates/js/translated/table_filters.js:103
+#: templates/js/translated/table_filters.js:104
+#: templates/js/translated/table_filters.js:327
msgid "Include subcategories"
msgstr ""
-#: templates/js/translated/table_filters.js:101
-#: templates/js/translated/table_filters.js:178
+#: templates/js/translated/table_filters.js:114
+#: templates/js/translated/table_filters.js:191
msgid "Is Serialized"
msgstr ""
-#: templates/js/translated/table_filters.js:104
-#: templates/js/translated/table_filters.js:185
+#: templates/js/translated/table_filters.js:117
+#: templates/js/translated/table_filters.js:198
msgid "Serial number GTE"
msgstr ""
-#: templates/js/translated/table_filters.js:105
-#: templates/js/translated/table_filters.js:186
+#: templates/js/translated/table_filters.js:118
+#: templates/js/translated/table_filters.js:199
msgid "Serial number greater than or equal to"
msgstr ""
-#: templates/js/translated/table_filters.js:108
-#: templates/js/translated/table_filters.js:189
+#: templates/js/translated/table_filters.js:121
+#: templates/js/translated/table_filters.js:202
msgid "Serial number LTE"
msgstr ""
-#: templates/js/translated/table_filters.js:109
-#: templates/js/translated/table_filters.js:190
+#: templates/js/translated/table_filters.js:122
+#: templates/js/translated/table_filters.js:203
msgid "Serial number less than or equal to"
msgstr ""
-#: templates/js/translated/table_filters.js:112
-#: templates/js/translated/table_filters.js:113
-#: templates/js/translated/table_filters.js:181
-#: templates/js/translated/table_filters.js:182
+#: templates/js/translated/table_filters.js:125
+#: templates/js/translated/table_filters.js:126
+#: templates/js/translated/table_filters.js:194
+#: templates/js/translated/table_filters.js:195
msgid "Serial number"
msgstr ""
-#: templates/js/translated/table_filters.js:117
-#: templates/js/translated/table_filters.js:199
+#: templates/js/translated/table_filters.js:130
+#: templates/js/translated/table_filters.js:212
msgid "Batch code"
msgstr ""
-#: templates/js/translated/table_filters.js:128
-#: templates/js/translated/table_filters.js:304
+#: templates/js/translated/table_filters.js:141
+#: templates/js/translated/table_filters.js:317
msgid "Active parts"
msgstr ""
-#: templates/js/translated/table_filters.js:129
+#: templates/js/translated/table_filters.js:142
msgid "Show stock for active parts"
msgstr ""
-#: templates/js/translated/table_filters.js:134
+#: templates/js/translated/table_filters.js:147
msgid "Part is an assembly"
msgstr ""
-#: templates/js/translated/table_filters.js:138
+#: templates/js/translated/table_filters.js:151
msgid "Is allocated"
msgstr ""
-#: templates/js/translated/table_filters.js:139
+#: templates/js/translated/table_filters.js:152
msgid "Item has been allocated"
msgstr ""
-#: templates/js/translated/table_filters.js:144
+#: templates/js/translated/table_filters.js:157
msgid "Include stock in sublocations"
msgstr ""
-#: templates/js/translated/table_filters.js:149
+#: templates/js/translated/table_filters.js:162
msgid "Show stock items which are depleted"
msgstr ""
-#: templates/js/translated/table_filters.js:154
+#: templates/js/translated/table_filters.js:167
msgid "Show items which are in stock"
msgstr ""
-#: templates/js/translated/table_filters.js:158
+#: templates/js/translated/table_filters.js:171
msgid "In Production"
msgstr ""
-#: templates/js/translated/table_filters.js:159
+#: templates/js/translated/table_filters.js:172
msgid "Show items which are in production"
msgstr ""
-#: templates/js/translated/table_filters.js:163
+#: templates/js/translated/table_filters.js:176
msgid "Include Variants"
msgstr ""
-#: templates/js/translated/table_filters.js:164
+#: templates/js/translated/table_filters.js:177
msgid "Include stock items for variant parts"
msgstr ""
-#: templates/js/translated/table_filters.js:168
+#: templates/js/translated/table_filters.js:181
msgid "Installed"
msgstr ""
-#: templates/js/translated/table_filters.js:169
+#: templates/js/translated/table_filters.js:182
msgid "Show stock items which are installed in another item"
msgstr ""
-#: templates/js/translated/table_filters.js:174
+#: templates/js/translated/table_filters.js:187
msgid "Show items which have been assigned to a customer"
msgstr ""
-#: templates/js/translated/table_filters.js:194
-#: templates/js/translated/table_filters.js:195
+#: templates/js/translated/table_filters.js:207
+#: templates/js/translated/table_filters.js:208
msgid "Stock status"
msgstr ""
-#: templates/js/translated/table_filters.js:203
+#: templates/js/translated/table_filters.js:216
msgid "Has purchase price"
msgstr ""
-#: templates/js/translated/table_filters.js:204
+#: templates/js/translated/table_filters.js:217
msgid "Show stock items which have a purchase price set"
msgstr ""
-#: templates/js/translated/table_filters.js:213
+#: templates/js/translated/table_filters.js:226
msgid "Show stock items which have expired"
msgstr ""
-#: templates/js/translated/table_filters.js:219
+#: templates/js/translated/table_filters.js:232
msgid "Show stock which is close to expiring"
msgstr ""
-#: templates/js/translated/table_filters.js:250
+#: templates/js/translated/table_filters.js:263
msgid "Build status"
msgstr ""
-#: templates/js/translated/table_filters.js:269
-#: templates/js/translated/table_filters.js:286
+#: templates/js/translated/table_filters.js:282
+#: templates/js/translated/table_filters.js:299
msgid "Order status"
msgstr ""
-#: templates/js/translated/table_filters.js:274
-#: templates/js/translated/table_filters.js:291
+#: templates/js/translated/table_filters.js:287
+#: templates/js/translated/table_filters.js:304
msgid "Outstanding"
msgstr ""
-#: templates/js/translated/table_filters.js:315
+#: templates/js/translated/table_filters.js:328
msgid "Include parts in subcategories"
msgstr ""
-#: templates/js/translated/table_filters.js:319
+#: templates/js/translated/table_filters.js:332
msgid "Has IPN"
msgstr "A un IPN"
-#: templates/js/translated/table_filters.js:320
+#: templates/js/translated/table_filters.js:333
msgid "Part has internal part number"
msgstr ""
-#: templates/js/translated/table_filters.js:325
+#: templates/js/translated/table_filters.js:338
msgid "Show active parts"
msgstr ""
-#: templates/js/translated/table_filters.js:333
+#: templates/js/translated/table_filters.js:346
msgid "Stock available"
msgstr ""
-#: templates/js/translated/table_filters.js:349
+#: templates/js/translated/table_filters.js:362
msgid "Starred"
msgstr ""
-#: templates/js/translated/table_filters.js:361
+#: templates/js/translated/table_filters.js:374
msgid "Purchasable"
msgstr ""
-#: templates/js/translated/tables.js:342
+#: templates/js/translated/tables.js:357
msgid "Loading data"
msgstr ""
-#: templates/js/translated/tables.js:345
+#: templates/js/translated/tables.js:360
msgid "rows per page"
msgstr ""
-#: templates/js/translated/tables.js:348
+#: templates/js/translated/tables.js:363
msgid "Showing"
msgstr ""
-#: templates/js/translated/tables.js:348
+#: templates/js/translated/tables.js:363
msgid "to"
msgstr ""
-#: templates/js/translated/tables.js:348
+#: templates/js/translated/tables.js:363
msgid "of"
msgstr ""
-#: templates/js/translated/tables.js:348
+#: templates/js/translated/tables.js:363
msgid "rows"
msgstr ""
-#: templates/js/translated/tables.js:354
+#: templates/js/translated/tables.js:369
msgid "No matching results"
msgstr ""
-#: templates/js/translated/tables.js:357
+#: templates/js/translated/tables.js:372
msgid "Hide/Show pagination"
msgstr ""
-#: templates/js/translated/tables.js:360
+#: templates/js/translated/tables.js:375
msgid "Refresh"
msgstr ""
-#: templates/js/translated/tables.js:363
+#: templates/js/translated/tables.js:378
msgid "Toggle"
msgstr ""
-#: templates/js/translated/tables.js:366
+#: templates/js/translated/tables.js:381
msgid "Columns"
msgstr ""
-#: templates/js/translated/tables.js:369
+#: templates/js/translated/tables.js:384
msgid "All"
msgstr ""
-#: templates/navbar.html:13
+#: templates/navbar.html:19
msgid "Toggle navigation"
msgstr ""
-#: templates/navbar.html:33
+#: templates/navbar.html:39
msgid "Buy"
msgstr ""
-#: templates/navbar.html:43
+#: templates/navbar.html:51
msgid "Sell"
msgstr ""
-#: templates/navbar.html:55
-msgid "Scan Barcode"
-msgstr ""
-
-#: templates/navbar.html:77 users/models.py:39
+#: templates/navbar.html:87 users/models.py:39
msgid "Admin"
msgstr ""
-#: templates/navbar.html:79
+#: templates/navbar.html:89
msgid "Logout"
msgstr ""
-#: templates/navbar.html:81 templates/registration/login.html:89
+#: templates/navbar.html:91 templates/registration/login.html:89
msgid "Login"
msgstr ""
-#: templates/navbar.html:104
+#: templates/navbar.html:114
msgid "About InvenTree"
msgstr ""
diff --git a/InvenTree/locale/he/LC_MESSAGES/django.po b/InvenTree/locale/he/LC_MESSAGES/django.po
index 46b94951af..fc12e2bd83 100644
--- a/InvenTree/locale/he/LC_MESSAGES/django.po
+++ b/InvenTree/locale/he/LC_MESSAGES/django.po
@@ -2,8 +2,8 @@ msgid ""
msgstr ""
"Project-Id-Version: inventree\n"
"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2021-08-07 15:14+0000\n"
-"PO-Revision-Date: 2021-08-07 15:30\n"
+"POT-Creation-Date: 2021-09-12 13:15+0000\n"
+"PO-Revision-Date: 2021-09-12 13:44\n"
"Last-Translator: \n"
"Language-Team: Hebrew\n"
"Language: he_IL\n"
@@ -36,7 +36,7 @@ msgstr ""
#: InvenTree/forms.py:111 build/forms.py:102 build/forms.py:123
#: build/forms.py:145 build/forms.py:169 build/forms.py:185 build/forms.py:227
#: order/forms.py:30 order/forms.py:41 order/forms.py:52 order/forms.py:63
-#: order/forms.py:74 part/forms.py:108 templates/js/translated/forms.js:545
+#: order/forms.py:74 part/forms.py:108 templates/js/translated/forms.js:564
msgid "Confirm"
msgstr ""
@@ -73,7 +73,7 @@ msgstr ""
msgid "Duplicate serial: {n}"
msgstr ""
-#: InvenTree/helpers.py:408 order/models.py:315 order/models.py:425
+#: InvenTree/helpers.py:408 order/models.py:315 order/models.py:430
#: stock/views.py:1363
msgid "Invalid quantity provided"
msgstr ""
@@ -102,152 +102,181 @@ msgstr ""
msgid "Number of unique serial number ({s}) must match quantity ({q})"
msgstr ""
-#: InvenTree/models.py:61 stock/models.py:1815
+#: InvenTree/models.py:66 stock/models.py:1826
msgid "Attachment"
msgstr ""
-#: InvenTree/models.py:62
+#: InvenTree/models.py:67
msgid "Select file to attach"
msgstr ""
-#: InvenTree/models.py:64 templates/js/translated/attachment.js:52
+#: InvenTree/models.py:69 templates/js/translated/attachment.js:87
msgid "Comment"
msgstr ""
-#: InvenTree/models.py:64
+#: InvenTree/models.py:69
msgid "File comment"
msgstr ""
-#: InvenTree/models.py:70 InvenTree/models.py:71 common/models.py:969
-#: common/models.py:970 part/models.py:2035
+#: InvenTree/models.py:75 InvenTree/models.py:76 common/models.py:993
+#: common/models.py:994 part/models.py:2051
#: report/templates/report/inventree_test_report_base.html:91
-#: templates/js/translated/stock.js:1549
+#: templates/js/translated/stock.js:1690
msgid "User"
msgstr ""
-#: InvenTree/models.py:74
+#: InvenTree/models.py:79
msgid "upload date"
msgstr ""
-#: InvenTree/models.py:113
+#: InvenTree/models.py:99
+msgid "Filename must not be empty"
+msgstr ""
+
+#: InvenTree/models.py:122
+msgid "Invalid attachment directory"
+msgstr ""
+
+#: InvenTree/models.py:132
+#, python-brace-format
+msgid "Filename contains illegal character '{c}'"
+msgstr ""
+
+#: InvenTree/models.py:135
+msgid "Filename missing extension"
+msgstr ""
+
+#: InvenTree/models.py:142
+msgid "Attachment with this filename already exists"
+msgstr ""
+
+#: InvenTree/models.py:149
+msgid "Error renaming file"
+msgstr ""
+
+#: InvenTree/models.py:184
msgid "Invalid choice"
msgstr ""
-#: InvenTree/models.py:129 InvenTree/models.py:130 company/models.py:412
-#: label/models.py:112 part/models.py:656 part/models.py:2196
-#: part/templates/part/part_base.html:233 report/models.py:181
+#: InvenTree/models.py:200 InvenTree/models.py:201 company/models.py:414
+#: label/models.py:112 part/models.py:658 part/models.py:2212
+#: part/templates/part/part_base.html:241 report/models.py:181
#: templates/InvenTree/search.html:137 templates/InvenTree/search.html:289
-#: templates/js/translated/company.js:583 templates/js/translated/part.js:338
-#: templates/js/translated/part.js:471 templates/js/translated/part.js:963
-#: templates/js/translated/stock.js:1342
+#: templates/js/translated/company.js:636 templates/js/translated/part.js:466
+#: templates/js/translated/part.js:603 templates/js/translated/part.js:1130
+#: templates/js/translated/stock.js:1483
msgid "Name"
msgstr ""
-#: InvenTree/models.py:136 build/models.py:187
-#: build/templates/build/detail.html:24 company/models.py:351
-#: company/models.py:519 company/templates/company/manufacturer_part.html:76
+#: InvenTree/models.py:207 build/models.py:187
+#: build/templates/build/detail.html:24 company/models.py:353
+#: company/models.py:569 company/templates/company/manufacturer_part.html:76
#: company/templates/company/supplier_part.html:75 label/models.py:119
-#: order/models.py:158 order/templates/order/purchase_order_detail.html:312
-#: part/models.py:679 part/templates/part/part_base.html:238
+#: order/models.py:158 part/models.py:681
+#: part/templates/part/part_base.html:246
#: part/templates/part/set_category.html:14 report/models.py:194
#: report/models.py:551 report/models.py:590
#: report/templates/report/inventree_build_order_base.html:118
#: templates/InvenTree/search.html:144 templates/InvenTree/search.html:224
#: templates/InvenTree/search.html:296
#: templates/InvenTree/settings/header.html:9
-#: templates/js/translated/bom.js:210 templates/js/translated/build.js:868
-#: templates/js/translated/build.js:1162 templates/js/translated/company.js:299
-#: templates/js/translated/company.js:497
-#: templates/js/translated/company.js:779 templates/js/translated/order.js:267
-#: templates/js/translated/order.js:369 templates/js/translated/part.js:397
-#: templates/js/translated/part.js:581 templates/js/translated/part.js:758
-#: templates/js/translated/part.js:975 templates/js/translated/part.js:1043
-#: templates/js/translated/stock.js:926 templates/js/translated/stock.js:1354
-#: templates/js/translated/stock.js:1399
+#: templates/js/translated/bom.js:230 templates/js/translated/build.js:891
+#: templates/js/translated/build.js:1179 templates/js/translated/company.js:344
+#: templates/js/translated/company.js:546
+#: templates/js/translated/company.js:834 templates/js/translated/order.js:341
+#: templates/js/translated/order.js:486 templates/js/translated/order.js:710
+#: templates/js/translated/part.js:525 templates/js/translated/part.js:713
+#: templates/js/translated/part.js:902 templates/js/translated/part.js:1142
+#: templates/js/translated/part.js:1210 templates/js/translated/stock.js:840
+#: templates/js/translated/stock.js:1495 templates/js/translated/stock.js:1540
msgid "Description"
msgstr ""
-#: InvenTree/models.py:137
+#: InvenTree/models.py:208
msgid "Description (optional)"
msgstr ""
-#: InvenTree/models.py:145
+#: InvenTree/models.py:216
msgid "parent"
msgstr ""
-#: InvenTree/serializers.py:52 part/models.py:2438
+#: InvenTree/serializers.py:55 part/models.py:2454
msgid "Must be a valid number"
msgstr ""
-#: InvenTree/settings.py:518
-msgid "German"
-msgstr ""
-
-#: InvenTree/settings.py:519
-msgid "Greek"
-msgstr ""
-
-#: InvenTree/settings.py:520
-msgid "English"
-msgstr ""
-
-#: InvenTree/settings.py:521
-msgid "Spanish"
-msgstr ""
-
-#: InvenTree/settings.py:522
-msgid "French"
+#: InvenTree/serializers.py:244
+msgid "Filename"
msgstr ""
#: InvenTree/settings.py:523
-msgid "Hebrew"
+msgid "German"
msgstr ""
#: InvenTree/settings.py:524
-msgid "Italian"
+msgid "Greek"
msgstr ""
#: InvenTree/settings.py:525
-msgid "Japanese"
+msgid "English"
msgstr ""
#: InvenTree/settings.py:526
-msgid "Korean"
+msgid "Spanish"
msgstr ""
#: InvenTree/settings.py:527
-msgid "Dutch"
+msgid "French"
msgstr ""
#: InvenTree/settings.py:528
-msgid "Norwegian"
+msgid "Hebrew"
msgstr ""
#: InvenTree/settings.py:529
-msgid "Polish"
+msgid "Italian"
msgstr ""
#: InvenTree/settings.py:530
-msgid "Russian"
+msgid "Japanese"
msgstr ""
#: InvenTree/settings.py:531
-msgid "Swedish"
+msgid "Korean"
msgstr ""
#: InvenTree/settings.py:532
-msgid "Thai"
+msgid "Dutch"
msgstr ""
#: InvenTree/settings.py:533
-msgid "Turkish"
+msgid "Norwegian"
msgstr ""
#: InvenTree/settings.py:534
-msgid "Vietnamese"
+msgid "Polish"
msgstr ""
#: InvenTree/settings.py:535
+msgid "Russian"
+msgstr ""
+
+#: InvenTree/settings.py:536
+msgid "Swedish"
+msgstr ""
+
+#: InvenTree/settings.py:537
+msgid "Thai"
+msgstr ""
+
+#: InvenTree/settings.py:538
+msgid "Turkish"
+msgstr ""
+
+#: InvenTree/settings.py:539
+msgid "Vietnamese"
+msgstr ""
+
+#: InvenTree/settings.py:540
msgid "Chinese"
msgstr ""
@@ -372,7 +401,7 @@ msgstr ""
msgid "Split child item"
msgstr ""
-#: InvenTree/status_codes.py:294 templates/js/translated/table_filters.js:173
+#: InvenTree/status_codes.py:294 templates/js/translated/table_filters.js:186
msgid "Sent to customer"
msgstr ""
@@ -432,27 +461,27 @@ msgstr ""
msgid "Overage must be an integer value or a percentage"
msgstr ""
-#: InvenTree/views.py:612
+#: InvenTree/views.py:610
msgid "Delete Item"
msgstr ""
-#: InvenTree/views.py:661
+#: InvenTree/views.py:659
msgid "Check box to confirm item deletion"
msgstr ""
-#: InvenTree/views.py:676 templates/InvenTree/settings/user.html:14
+#: InvenTree/views.py:674 templates/InvenTree/settings/user.html:14
msgid "Edit User Information"
msgstr ""
-#: InvenTree/views.py:687 templates/InvenTree/settings/user.html:18
+#: InvenTree/views.py:685 templates/InvenTree/settings/user.html:18
msgid "Set Password"
msgstr ""
-#: InvenTree/views.py:706
+#: InvenTree/views.py:704
msgid "Password fields must match"
msgstr ""
-#: InvenTree/views.py:907 templates/navbar.html:95
+#: InvenTree/views.py:910 templates/navbar.html:105
msgid "System Information"
msgstr ""
@@ -509,8 +538,8 @@ msgstr ""
#: order/templates/order/order_base.html:124
#: order/templates/order/sales_order_base.html:119
#: report/templates/report/inventree_build_order_base.html:126
-#: templates/js/translated/build.js:945 templates/js/translated/order.js:284
-#: templates/js/translated/order.js:387
+#: templates/js/translated/build.js:962 templates/js/translated/order.js:358
+#: templates/js/translated/order.js:728
msgid "Target Date"
msgstr ""
@@ -522,19 +551,18 @@ msgstr ""
#: build/templates/build/allocation_card.html:23
#: build/templates/build/auto_allocate.html:17
#: build/templates/build/build_base.html:133
-#: build/templates/build/detail.html:34 common/models.py:1001
+#: build/templates/build/detail.html:34 common/models.py:1025
#: company/forms.py:42 company/templates/company/supplier_part.html:226
-#: order/forms.py:120 order/forms.py:142 order/forms.py:159 order/models.py:706
-#: order/models.py:952 order/templates/order/order_wizard/match_parts.html:30
+#: order/forms.py:120 order/forms.py:142 order/forms.py:159 order/models.py:712
+#: order/models.py:964 order/templates/order/order_wizard/match_parts.html:30
#: order/templates/order/order_wizard/select_parts.html:34
-#: order/templates/order/purchase_order_detail.html:348
-#: order/templates/order/sales_order_detail.html:200
-#: order/templates/order/sales_order_detail.html:207
-#: order/templates/order/sales_order_detail.html:292
-#: order/templates/order/sales_order_detail.html:364 part/forms.py:249
-#: part/forms.py:265 part/forms.py:281 part/models.py:2340
+#: order/templates/order/sales_order_detail.html:201
+#: order/templates/order/sales_order_detail.html:208
+#: order/templates/order/sales_order_detail.html:293
+#: order/templates/order/sales_order_detail.html:365 part/forms.py:249
+#: part/forms.py:265 part/forms.py:281 part/models.py:2356
#: part/templates/part/bom_upload/match_parts.html:31
-#: part/templates/part/detail.html:940 part/templates/part/detail.html:1026
+#: part/templates/part/detail.html:973 part/templates/part/detail.html:1059
#: part/templates/part/part_pricing.html:16
#: report/templates/report/inventree_build_order_base.html:114
#: report/templates/report/inventree_po_report.html:91
@@ -542,13 +570,14 @@ msgstr ""
#: report/templates/report/inventree_test_report_base.html:77
#: stock/forms.py:140 stock/templates/stock/item_base.html:269
#: stock/templates/stock/stock_adjust.html:18
-#: templates/js/translated/barcode.js:364 templates/js/translated/bom.js:225
-#: templates/js/translated/build.js:271 templates/js/translated/build.js:606
-#: templates/js/translated/build.js:1172
-#: templates/js/translated/model_renderers.js:56
-#: templates/js/translated/order.js:482 templates/js/translated/part.js:1148
-#: templates/js/translated/part.js:1270 templates/js/translated/part.js:1326
-#: templates/js/translated/stock.js:1534 templates/js/translated/stock.js:1732
+#: templates/js/translated/barcode.js:386 templates/js/translated/bom.js:245
+#: templates/js/translated/build.js:298 templates/js/translated/build.js:629
+#: templates/js/translated/build.js:1189
+#: templates/js/translated/model_renderers.js:59
+#: templates/js/translated/order.js:522 templates/js/translated/order.js:824
+#: templates/js/translated/part.js:1317 templates/js/translated/part.js:1440
+#: templates/js/translated/part.js:1518 templates/js/translated/stock.js:1675
+#: templates/js/translated/stock.js:1850
msgid "Quantity"
msgstr ""
@@ -589,13 +618,15 @@ msgid "Mark build as complete"
msgstr ""
#: build/forms.py:210 build/templates/build/auto_allocate.html:18
-#: stock/forms.py:280 stock/templates/stock/item_base.html:299
+#: order/serializers.py:216 order/serializers.py:275 stock/forms.py:280
+#: stock/templates/stock/item_base.html:299
#: stock/templates/stock/stock_adjust.html:17
-#: templates/InvenTree/search.html:260 templates/js/translated/barcode.js:363
-#: templates/js/translated/barcode.js:531 templates/js/translated/build.js:256
-#: templates/js/translated/build.js:620 templates/js/translated/order.js:467
-#: templates/js/translated/stock.js:134 templates/js/translated/stock.js:260
-#: templates/js/translated/stock.js:1012 templates/js/translated/stock.js:1426
+#: templates/InvenTree/search.html:260 templates/js/translated/barcode.js:385
+#: templates/js/translated/barcode.js:555 templates/js/translated/build.js:283
+#: templates/js/translated/build.js:643 templates/js/translated/order.js:809
+#: templates/js/translated/part.js:174 templates/js/translated/stock.js:203
+#: templates/js/translated/stock.js:329 templates/js/translated/stock.js:942
+#: templates/js/translated/stock.js:1567
msgid "Location"
msgstr ""
@@ -604,13 +635,13 @@ msgid "Location of completed parts"
msgstr ""
#: build/forms.py:215 build/templates/build/build_base.html:138
-#: build/templates/build/detail.html:62 order/models.py:549
-#: order/templates/order/receive_parts.html:24
+#: build/templates/build/detail.html:62 order/models.py:555
+#: order/serializers.py:230 order/templates/order/receive_parts.html:24
#: stock/templates/stock/item_base.html:422 templates/InvenTree/search.html:252
-#: templates/js/translated/barcode.js:119 templates/js/translated/build.js:902
-#: templates/js/translated/order.js:271 templates/js/translated/order.js:374
-#: templates/js/translated/stock.js:999 templates/js/translated/stock.js:1503
-#: templates/js/translated/stock.js:1748
+#: templates/js/translated/barcode.js:141 templates/js/translated/build.js:925
+#: templates/js/translated/order.js:345 templates/js/translated/order.js:715
+#: templates/js/translated/stock.js:917 templates/js/translated/stock.js:1644
+#: templates/js/translated/stock.js:1866
msgid "Status"
msgstr ""
@@ -649,7 +680,7 @@ msgstr ""
#: build/models.py:117 build/templates/build/build_base.html:9
#: build/templates/build/build_base.html:73
#: report/templates/report/inventree_build_order_base.html:106
-#: templates/js/translated/build.js:233
+#: templates/js/translated/build.js:260
msgid "Build Order"
msgstr ""
@@ -657,8 +688,8 @@ msgstr ""
#: build/templates/build/index.html:15
#: order/templates/order/sales_order_detail.html:34
#: order/templates/order/so_navbar.html:19
-#: order/templates/order/so_navbar.html:22 part/templates/part/navbar.html:42
-#: part/templates/part/navbar.html:45 templates/InvenTree/index.html:229
+#: order/templates/order/so_navbar.html:22 part/templates/part/navbar.html:50
+#: part/templates/part/navbar.html:53 templates/InvenTree/index.html:229
#: templates/InvenTree/search.html:185
#: templates/InvenTree/settings/navbar.html:101
#: templates/InvenTree/settings/navbar.html:103 users/models.py:44
@@ -669,14 +700,13 @@ msgstr ""
msgid "Build Order Reference"
msgstr ""
-#: build/models.py:179 order/models.py:246 order/models.py:533
-#: order/models.py:713 order/templates/order/purchase_order_detail.html:343
-#: order/templates/order/sales_order_detail.html:359 part/models.py:2349
-#: part/templates/part/bom_upload/match_parts.html:30
+#: build/models.py:179 order/models.py:246 order/models.py:539
+#: order/models.py:719 order/templates/order/sales_order_detail.html:360
+#: part/models.py:2365 part/templates/part/bom_upload/match_parts.html:30
#: report/templates/report/inventree_po_report.html:92
#: report/templates/report/inventree_so_report.html:92
-#: templates/js/translated/bom.js:217 templates/js/translated/build.js:695
-#: templates/js/translated/build.js:1166
+#: templates/js/translated/bom.js:237 templates/js/translated/build.js:718
+#: templates/js/translated/build.js:1183 templates/js/translated/order.js:517
msgid "Reference"
msgstr ""
@@ -695,15 +725,14 @@ msgstr ""
#: build/models.py:205 build/templates/build/auto_allocate.html:16
#: build/templates/build/build_base.html:128
-#: build/templates/build/detail.html:29 company/models.py:654
-#: order/models.py:766 order/models.py:825
+#: build/templates/build/detail.html:29 company/models.py:704
+#: order/models.py:772 order/models.py:837
#: order/templates/order/order_wizard/select_parts.html:32
-#: order/templates/order/purchase_order_detail.html:297
#: order/templates/order/receive_parts.html:19
-#: order/templates/order/sales_order_detail.html:344 part/models.py:295
-#: part/models.py:1980 part/models.py:1996 part/models.py:2015
-#: part/models.py:2033 part/models.py:2112 part/models.py:2234
-#: part/models.py:2324 part/templates/part/detail.html:199
+#: order/templates/order/sales_order_detail.html:345 part/models.py:297
+#: part/models.py:1996 part/models.py:2012 part/models.py:2031
+#: part/models.py:2049 part/models.py:2128 part/models.py:2250
+#: part/models.py:2340 part/templates/part/detail.html:199
#: part/templates/part/part_app_base.html:8
#: part/templates/part/part_pricing.html:12
#: part/templates/part/set_category.html:13
@@ -711,12 +740,13 @@ msgstr ""
#: report/templates/report/inventree_po_report.html:90
#: report/templates/report/inventree_so_report.html:90
#: templates/InvenTree/search.html:112 templates/InvenTree/search.html:210
-#: templates/js/translated/barcode.js:362 templates/js/translated/bom.js:183
-#: templates/js/translated/build.js:586 templates/js/translated/build.js:873
-#: templates/js/translated/build.js:1139 templates/js/translated/company.js:438
-#: templates/js/translated/company.js:688 templates/js/translated/part.js:562
-#: templates/js/translated/part.js:725 templates/js/translated/stock.js:132
-#: templates/js/translated/stock.js:895 templates/js/translated/stock.js:1720
+#: templates/js/translated/barcode.js:384 templates/js/translated/bom.js:203
+#: templates/js/translated/build.js:609 templates/js/translated/build.js:896
+#: templates/js/translated/build.js:1156 templates/js/translated/company.js:487
+#: templates/js/translated/company.js:743 templates/js/translated/order.js:471
+#: templates/js/translated/part.js:694 templates/js/translated/part.js:864
+#: templates/js/translated/stock.js:201 templates/js/translated/stock.js:797
+#: templates/js/translated/stock.js:1838
msgid "Part"
msgstr ""
@@ -764,7 +794,7 @@ msgstr ""
msgid "Number of stock items which have been completed"
msgstr ""
-#: build/models.py:257 part/templates/part/part_base.html:191
+#: build/models.py:257 part/templates/part/part_base.html:198
msgid "Build Status"
msgstr ""
@@ -772,7 +802,7 @@ msgstr ""
msgid "Build status code"
msgstr ""
-#: build/models.py:265 stock/models.py:507
+#: build/models.py:265 stock/models.py:513
msgid "Batch Code"
msgstr ""
@@ -780,16 +810,16 @@ msgstr ""
msgid "Batch code for this build output"
msgstr ""
-#: build/models.py:272 order/models.py:162 part/models.py:851
-#: part/templates/part/part_base.html:264 templates/js/translated/order.js:382
+#: build/models.py:272 order/models.py:162 part/models.py:853
+#: part/templates/part/part_base.html:272 templates/js/translated/order.js:723
msgid "Creation Date"
msgstr ""
-#: build/models.py:276 order/models.py:555
+#: build/models.py:276 order/models.py:561
msgid "Target completion date"
msgstr ""
-#: build/models.py:280 order/models.py:288 templates/js/translated/build.js:950
+#: build/models.py:280 order/models.py:288 templates/js/translated/build.js:967
msgid "Completion Date"
msgstr ""
@@ -797,7 +827,7 @@ msgstr ""
msgid "completed by"
msgstr ""
-#: build/models.py:294 templates/js/translated/build.js:915
+#: build/models.py:294 templates/js/translated/build.js:938
msgid "Issued by"
msgstr ""
@@ -808,9 +838,9 @@ msgstr ""
#: build/models.py:303 build/templates/build/build_base.html:184
#: build/templates/build/detail.html:108 order/models.py:176
#: order/templates/order/order_base.html:138
-#: order/templates/order/sales_order_base.html:140 part/models.py:855
+#: order/templates/order/sales_order_base.html:140 part/models.py:857
#: report/templates/report/inventree_build_order_base.html:159
-#: templates/js/translated/build.js:930
+#: templates/js/translated/build.js:950
msgid "Responsible"
msgstr ""
@@ -821,34 +851,33 @@ msgstr ""
#: build/models.py:309 build/templates/build/detail.html:94
#: company/templates/company/manufacturer_part.html:83
#: company/templates/company/supplier_part.html:82
-#: part/templates/part/part_base.html:258 stock/models.py:501
+#: part/templates/part/part_base.html:266 stock/models.py:507
#: stock/templates/stock/item_base.html:359
msgid "External Link"
msgstr ""
-#: build/models.py:310 part/models.py:713 stock/models.py:503
+#: build/models.py:310 part/models.py:715 stock/models.py:509
msgid "Link to external URL"
msgstr ""
#: build/models.py:314 build/templates/build/navbar.html:52
-#: company/models.py:139 company/models.py:526
-#: company/templates/company/navbar.html:63
-#: company/templates/company/navbar.html:66 order/models.py:180
-#: order/models.py:715 order/templates/order/po_navbar.html:38
+#: company/models.py:141 company/models.py:576
+#: company/templates/company/navbar.html:69
+#: company/templates/company/navbar.html:72 order/models.py:180
+#: order/models.py:721 order/templates/order/po_navbar.html:38
#: order/templates/order/po_navbar.html:41
-#: order/templates/order/purchase_order_detail.html:419
-#: order/templates/order/sales_order_detail.html:439
+#: order/templates/order/sales_order_detail.html:440
#: order/templates/order/so_navbar.html:33
-#: order/templates/order/so_navbar.html:36 part/models.py:840
-#: part/templates/part/detail.html:105 part/templates/part/navbar.html:108
-#: part/templates/part/navbar.html:111
+#: order/templates/order/so_navbar.html:36 part/models.py:842
+#: part/templates/part/detail.html:105 part/templates/part/navbar.html:120
+#: part/templates/part/navbar.html:123
#: report/templates/report/inventree_build_order_base.html:173
-#: stock/forms.py:138 stock/forms.py:250 stock/forms.py:282 stock/models.py:573
-#: stock/models.py:1715 stock/models.py:1821
-#: stock/templates/stock/navbar.html:57 templates/js/translated/barcode.js:37
-#: templates/js/translated/bom.js:369 templates/js/translated/company.js:784
-#: templates/js/translated/stock.js:268 templates/js/translated/stock.js:509
-#: templates/js/translated/stock.js:1090
+#: stock/forms.py:138 stock/forms.py:250 stock/forms.py:282 stock/models.py:579
+#: stock/models.py:1726 stock/models.py:1832
+#: stock/templates/stock/navbar.html:57 templates/js/translated/barcode.js:59
+#: templates/js/translated/bom.js:385 templates/js/translated/company.js:839
+#: templates/js/translated/order.js:604 templates/js/translated/stock.js:338
+#: templates/js/translated/stock.js:580 templates/js/translated/stock.js:1061
msgid "Notes"
msgstr ""
@@ -881,11 +910,11 @@ msgstr ""
msgid "Allocated quantity ({n}) must not exceed available quantity ({q})"
msgstr ""
-#: build/models.py:1244 order/models.py:926
+#: build/models.py:1244 order/models.py:938
msgid "StockItem is over-allocated"
msgstr ""
-#: build/models.py:1248 order/models.py:929
+#: build/models.py:1248 order/models.py:941
msgid "Allocation quantity must be greater than zero"
msgstr ""
@@ -899,8 +928,8 @@ msgid "Selected stock item not found in BOM for part '{p}'"
msgstr ""
#: build/models.py:1372 stock/templates/stock/item_base.html:331
-#: templates/InvenTree/search.html:183 templates/js/translated/build.js:846
-#: templates/navbar.html:29
+#: templates/InvenTree/search.html:183 templates/js/translated/build.js:869
+#: templates/navbar.html:35
msgid "Build"
msgstr ""
@@ -912,9 +941,9 @@ msgstr ""
#: stock/templates/stock/item_base.html:31
#: stock/templates/stock/item_base.html:353
#: stock/templates/stock/stock_adjust.html:16
-#: templates/js/translated/build.js:244 templates/js/translated/build.js:249
-#: templates/js/translated/build.js:993 templates/js/translated/order.js:455
-#: templates/js/translated/order.js:460 templates/js/translated/stock.js:1485
+#: templates/js/translated/build.js:271 templates/js/translated/build.js:276
+#: templates/js/translated/build.js:1012 templates/js/translated/order.js:797
+#: templates/js/translated/order.js:802 templates/js/translated/stock.js:1626
msgid "Stock Item"
msgstr ""
@@ -936,12 +965,12 @@ msgstr ""
#: build/templates/build/allocation_card.html:21
#: build/templates/build/complete_output.html:46
-#: order/templates/order/sales_order_detail.html:205
-#: order/templates/order/sales_order_detail.html:290
+#: order/templates/order/sales_order_detail.html:206
+#: order/templates/order/sales_order_detail.html:291
#: report/templates/report/inventree_test_report_base.html:75
-#: stock/models.py:495 stock/templates/stock/item_base.html:251
-#: templates/js/translated/build.js:604
-#: templates/js/translated/model_renderers.js:54
+#: stock/models.py:501 stock/templates/stock/item_base.html:251
+#: templates/js/translated/build.js:627
+#: templates/js/translated/model_renderers.js:57
msgid "Serial Number"
msgstr ""
@@ -993,7 +1022,7 @@ msgstr ""
#: company/templates/company/supplier_part.html:30
#: order/templates/order/order_base.html:26
#: order/templates/order/sales_order_base.html:37
-#: part/templates/part/category.html:27 part/templates/part/part_base.html:25
+#: part/templates/part/category.html:27 part/templates/part/part_base.html:30
#: stock/templates/stock/item_base.html:62
#: stock/templates/stock/location.html:31
msgid "Admin view"
@@ -1005,9 +1034,9 @@ msgstr ""
#: order/templates/order/order_base.html:86
#: order/templates/order/sales_order_base.html:43
#: order/templates/order/sales_order_base.html:88
-#: templates/js/translated/table_filters.js:259
-#: templates/js/translated/table_filters.js:278
-#: templates/js/translated/table_filters.js:295
+#: templates/js/translated/table_filters.js:272
+#: templates/js/translated/table_filters.js:291
+#: templates/js/translated/table_filters.js:308
msgid "Overdue"
msgstr ""
@@ -1057,14 +1086,14 @@ msgid "Progress"
msgstr ""
#: build/templates/build/build_base.html:170
-#: build/templates/build/detail.html:87 order/models.py:823
+#: build/templates/build/detail.html:87 order/models.py:835
#: order/templates/order/sales_order_base.html:9
#: order/templates/order/sales_order_base.html:35
#: order/templates/order/sales_order_ship.html:25
#: report/templates/report/inventree_build_order_base.html:136
#: report/templates/report/inventree_so_report.html:77
#: stock/templates/stock/item_base.html:293
-#: templates/js/translated/order.js:329
+#: templates/js/translated/order.js:670
msgid "Sales Order"
msgstr ""
@@ -1148,7 +1177,7 @@ msgstr ""
#: build/templates/build/create_build_item.html:11
#, python-format
-msgid "The allocated stock will be installed into the following build output:
%(output)s"
+msgid "The allocated stock will be installed into the following build output:
%(output)s"
msgstr ""
#: build/templates/build/create_build_item.html:17
@@ -1172,9 +1201,9 @@ msgstr ""
msgid "Stock can be taken from any available location."
msgstr ""
-#: build/templates/build/detail.html:49 order/forms.py:88 order/models.py:782
-#: order/templates/order/purchase_order_detail.html:408
+#: build/templates/build/detail.html:49 order/forms.py:88 order/models.py:794
#: order/templates/order/receive_parts.html:25 stock/forms.py:134
+#: templates/js/translated/order.js:593
msgid "Destination"
msgstr ""
@@ -1184,16 +1213,16 @@ msgstr ""
#: build/templates/build/detail.html:73
#: stock/templates/stock/item_base.html:317
-#: templates/js/translated/stock.js:1007 templates/js/translated/stock.js:1755
-#: templates/js/translated/table_filters.js:116
-#: templates/js/translated/table_filters.js:198
+#: templates/js/translated/stock.js:931 templates/js/translated/stock.js:1873
+#: templates/js/translated/table_filters.js:129
+#: templates/js/translated/table_filters.js:211
msgid "Batch"
msgstr ""
#: build/templates/build/detail.html:119
#: order/templates/order/order_base.html:111
#: order/templates/order/sales_order_base.html:113
-#: templates/js/translated/build.js:910
+#: templates/js/translated/build.js:933
msgid "Created"
msgstr ""
@@ -1201,7 +1230,7 @@ msgstr ""
msgid "No target date set"
msgstr ""
-#: build/templates/build/detail.html:135 templates/js/translated/build.js:888
+#: build/templates/build/detail.html:135 templates/js/translated/build.js:911
msgid "Completed"
msgstr ""
@@ -1225,7 +1254,7 @@ msgstr ""
msgid "Auto Allocate"
msgstr ""
-#: build/templates/build/detail.html:175 templates/js/translated/build.js:778
+#: build/templates/build/detail.html:175 templates/js/translated/build.js:801
msgid "Unallocate stock"
msgstr ""
@@ -1238,8 +1267,8 @@ msgid "Order required parts"
msgstr ""
#: build/templates/build/detail.html:180
-#: company/templates/company/detail.html:33
-#: company/templates/company/detail.html:75 order/views.py:679
+#: company/templates/company/detail.html:32
+#: company/templates/company/detail.html:72 order/views.py:679
#: part/templates/part/category.html:140
msgid "Order Parts"
msgstr ""
@@ -1288,8 +1317,8 @@ msgstr ""
#: build/templates/build/navbar.html:45 order/templates/order/po_navbar.html:35
#: order/templates/order/sales_order_detail.html:43
#: order/templates/order/so_navbar.html:29 part/templates/part/detail.html:173
-#: part/templates/part/navbar.html:102 part/templates/part/navbar.html:105
-#: stock/templates/stock/item.html:87 stock/templates/stock/navbar.html:47
+#: part/templates/part/navbar.html:114 part/templates/part/navbar.html:117
+#: stock/templates/stock/item.html:88 stock/templates/stock/navbar.html:47
#: stock/templates/stock/navbar.html:50
msgid "Attachments"
msgstr ""
@@ -1298,48 +1327,48 @@ msgstr ""
msgid "Build Notes"
msgstr ""
-#: build/templates/build/detail.html:261 build/templates/build/detail.html:397
-#: company/templates/company/detail.html:173
-#: company/templates/company/detail.html:200
+#: build/templates/build/detail.html:261 build/templates/build/detail.html:398
+#: company/templates/company/detail.html:169
+#: company/templates/company/detail.html:196
#: order/templates/order/purchase_order_detail.html:62
#: order/templates/order/purchase_order_detail.html:95
#: order/templates/order/sales_order_detail.html:58
#: order/templates/order/sales_order_detail.html:85
-#: part/templates/part/detail.html:109 stock/templates/stock/item.html:102
-#: stock/templates/stock/item.html:187
+#: part/templates/part/detail.html:109 stock/templates/stock/item.html:103
+#: stock/templates/stock/item.html:188
msgid "Edit Notes"
msgstr ""
#: build/templates/build/detail.html:357
#: order/templates/order/po_attachments.html:79
-#: order/templates/order/purchase_order_detail.html:156
-#: order/templates/order/sales_order_detail.html:145
-#: part/templates/part/detail.html:802 stock/templates/stock/item.html:251
+#: order/templates/order/purchase_order_detail.html:157
+#: order/templates/order/sales_order_detail.html:146
+#: part/templates/part/detail.html:920 stock/templates/stock/item.html:253
#: templates/attachment_table.html:6
msgid "Add Attachment"
msgstr ""
-#: build/templates/build/detail.html:375
+#: build/templates/build/detail.html:376
#: order/templates/order/po_attachments.html:51
-#: order/templates/order/purchase_order_detail.html:128
-#: order/templates/order/sales_order_detail.html:118
-#: part/templates/part/detail.html:756 stock/templates/stock/item.html:219
+#: order/templates/order/purchase_order_detail.html:129
+#: order/templates/order/sales_order_detail.html:119
+#: part/templates/part/detail.html:874 stock/templates/stock/item.html:221
msgid "Edit Attachment"
msgstr ""
-#: build/templates/build/detail.html:382
+#: build/templates/build/detail.html:383
#: order/templates/order/po_attachments.html:58
-#: order/templates/order/purchase_order_detail.html:135
-#: order/templates/order/sales_order_detail.html:124
-#: part/templates/part/detail.html:765 stock/templates/stock/item.html:228
+#: order/templates/order/purchase_order_detail.html:136
+#: order/templates/order/sales_order_detail.html:125
+#: part/templates/part/detail.html:883 stock/templates/stock/item.html:230
msgid "Confirm Delete Operation"
msgstr ""
-#: build/templates/build/detail.html:383
+#: build/templates/build/detail.html:384
#: order/templates/order/po_attachments.html:59
-#: order/templates/order/purchase_order_detail.html:136
-#: order/templates/order/sales_order_detail.html:125
-#: part/templates/part/detail.html:766 stock/templates/stock/item.html:229
+#: order/templates/order/purchase_order_detail.html:137
+#: order/templates/order/sales_order_detail.html:126
+#: part/templates/part/detail.html:884 stock/templates/stock/item.html:231
msgid "Delete Attachment"
msgstr ""
@@ -1372,7 +1401,7 @@ msgid "Build Order Details"
msgstr ""
#: build/templates/build/navbar.html:15 order/templates/order/po_navbar.html:15
-#: templates/js/translated/stock.js:1414
+#: templates/js/translated/stock.js:1555
msgid "Details"
msgstr ""
@@ -1501,9 +1530,9 @@ msgstr ""
msgid "Stock item is over-allocated"
msgstr ""
-#: build/views.py:705 templates/js/translated/bom.js:250
-#: templates/js/translated/build.js:705 templates/js/translated/build.js:1000
-#: templates/js/translated/build.js:1179
+#: build/views.py:705 templates/js/translated/bom.js:269
+#: templates/js/translated/build.js:728 templates/js/translated/build.js:1019
+#: templates/js/translated/build.js:1196
msgid "Available"
msgstr ""
@@ -1539,7 +1568,7 @@ msgstr ""
msgid "Error reading file (data could be corrupted)"
msgstr ""
-#: common/forms.py:34 templates/js/translated/attachment.js:42
+#: common/forms.py:34 templates/js/translated/attachment.js:54
msgid "File"
msgstr ""
@@ -1556,546 +1585,594 @@ msgstr ""
msgid "Select {name} file to upload"
msgstr ""
-#: common/models.py:322 common/models.py:815 common/models.py:962
+#: common/models.py:308 common/models.py:839 common/models.py:986
msgid "Settings key (must be unique - case insensitive"
msgstr ""
-#: common/models.py:324
+#: common/models.py:310
msgid "Settings value"
msgstr ""
-#: common/models.py:359
+#: common/models.py:345
msgid "Must be an integer value"
msgstr ""
-#: common/models.py:382
+#: common/models.py:368
msgid "Value must be a boolean value"
msgstr ""
-#: common/models.py:393
+#: common/models.py:379
msgid "Value must be an integer value"
msgstr ""
-#: common/models.py:416
+#: common/models.py:402
msgid "Key string must be unique"
msgstr ""
-#: common/models.py:523
+#: common/models.py:509
msgid "InvenTree Instance Name"
msgstr ""
-#: common/models.py:525
+#: common/models.py:511
msgid "String descriptor for the server instance"
msgstr ""
-#: common/models.py:529
+#: common/models.py:515
msgid "Use instance name"
msgstr ""
-#: common/models.py:530
+#: common/models.py:516
msgid "Use the instance name in the title-bar"
msgstr ""
-#: common/models.py:536 company/models.py:97 company/models.py:98
+#: common/models.py:522 company/models.py:99 company/models.py:100
msgid "Company name"
msgstr ""
-#: common/models.py:537
+#: common/models.py:523
msgid "Internal company name"
msgstr ""
-#: common/models.py:542
+#: common/models.py:528
msgid "Base URL"
msgstr ""
-#: common/models.py:543
+#: common/models.py:529
msgid "Base URL for server instance"
msgstr ""
-#: common/models.py:549
+#: common/models.py:535
msgid "Default Currency"
msgstr ""
-#: common/models.py:550
+#: common/models.py:536
msgid "Default currency"
msgstr ""
-#: common/models.py:556
+#: common/models.py:542
msgid "Download from URL"
msgstr ""
-#: common/models.py:557
+#: common/models.py:543
msgid "Allow download of remote images and files from external URL"
msgstr ""
-#: common/models.py:563
+#: common/models.py:549
msgid "Barcode Support"
msgstr ""
-#: common/models.py:564
+#: common/models.py:550
msgid "Enable barcode scanner support"
msgstr ""
-#: common/models.py:570
+#: common/models.py:556
msgid "IPN Regex"
msgstr ""
-#: common/models.py:571
+#: common/models.py:557
msgid "Regular expression pattern for matching Part IPN"
msgstr ""
-#: common/models.py:575
+#: common/models.py:561
msgid "Allow Duplicate IPN"
msgstr ""
-#: common/models.py:576
+#: common/models.py:562
msgid "Allow multiple parts to share the same IPN"
msgstr ""
-#: common/models.py:582
+#: common/models.py:568
msgid "Allow Editing IPN"
msgstr ""
-#: common/models.py:583
+#: common/models.py:569
msgid "Allow changing the IPN value while editing a part"
msgstr ""
-#: common/models.py:589
+#: common/models.py:575
msgid "Copy Part BOM Data"
msgstr ""
-#: common/models.py:590
+#: common/models.py:576
msgid "Copy BOM data by default when duplicating a part"
msgstr ""
-#: common/models.py:596
+#: common/models.py:582
msgid "Copy Part Parameter Data"
msgstr ""
-#: common/models.py:597
+#: common/models.py:583
msgid "Copy parameter data by default when duplicating a part"
msgstr ""
-#: common/models.py:603
+#: common/models.py:589
msgid "Copy Part Test Data"
msgstr ""
-#: common/models.py:604
+#: common/models.py:590
msgid "Copy test data by default when duplicating a part"
msgstr ""
-#: common/models.py:610
+#: common/models.py:596
msgid "Copy Category Parameter Templates"
msgstr ""
-#: common/models.py:611
+#: common/models.py:597
msgid "Copy category parameter templates when creating a part"
msgstr ""
-#: common/models.py:617 part/models.py:2236 report/models.py:187
-#: stock/forms.py:224 templates/js/translated/table_filters.js:25
-#: templates/js/translated/table_filters.js:329
+#: common/models.py:603 part/models.py:2252 report/models.py:187
+#: stock/forms.py:224 templates/js/translated/table_filters.js:38
+#: templates/js/translated/table_filters.js:342
msgid "Template"
msgstr ""
-#: common/models.py:618
+#: common/models.py:604
msgid "Parts are templates by default"
msgstr ""
-#: common/models.py:624 part/models.py:803
-#: templates/js/translated/table_filters.js:133
-#: templates/js/translated/table_filters.js:341
+#: common/models.py:610 part/models.py:805
+#: templates/js/translated/table_filters.js:146
+#: templates/js/translated/table_filters.js:354
msgid "Assembly"
msgstr ""
-#: common/models.py:625
+#: common/models.py:611
msgid "Parts can be assembled from other components by default"
msgstr ""
-#: common/models.py:631 part/models.py:809
-#: templates/js/translated/table_filters.js:345
+#: common/models.py:617 part/models.py:811
+#: templates/js/translated/table_filters.js:358
msgid "Component"
msgstr ""
-#: common/models.py:632
+#: common/models.py:618
msgid "Parts can be used as sub-components by default"
msgstr ""
-#: common/models.py:638 part/models.py:820
+#: common/models.py:624 part/models.py:822
msgid "Purchaseable"
msgstr ""
-#: common/models.py:639
+#: common/models.py:625
msgid "Parts are purchaseable by default"
msgstr ""
-#: common/models.py:645 part/models.py:825
-#: templates/js/translated/table_filters.js:353
+#: common/models.py:631 part/models.py:827
+#: templates/js/translated/table_filters.js:366
msgid "Salable"
msgstr ""
-#: common/models.py:646
+#: common/models.py:632
msgid "Parts are salable by default"
msgstr ""
-#: common/models.py:652 part/models.py:815
-#: templates/js/translated/table_filters.js:33
-#: templates/js/translated/table_filters.js:357
+#: common/models.py:638 part/models.py:817
+#: templates/js/translated/table_filters.js:46
+#: templates/js/translated/table_filters.js:370
msgid "Trackable"
msgstr ""
-#: common/models.py:653
+#: common/models.py:639
msgid "Parts are trackable by default"
msgstr ""
-#: common/models.py:659 part/models.py:835
-#: part/templates/part/part_base.html:61
-#: templates/js/translated/table_filters.js:29
+#: common/models.py:645 part/models.py:837
+#: part/templates/part/part_base.html:66
+#: templates/js/translated/table_filters.js:42
msgid "Virtual"
msgstr ""
-#: common/models.py:660
+#: common/models.py:646
msgid "Parts are virtual by default"
msgstr ""
-#: common/models.py:667
+#: common/models.py:653
msgid "Show Quantity in Forms"
msgstr ""
-#: common/models.py:668
+#: common/models.py:654
msgid "Display available part quantity in some forms"
msgstr ""
-#: common/models.py:674
+#: common/models.py:660
msgid "Show Import in Views"
msgstr ""
-#: common/models.py:675
+#: common/models.py:661
msgid "Display the import wizard in some part views"
msgstr ""
-#: common/models.py:681
+#: common/models.py:667
msgid "Show Price in Forms"
msgstr ""
-#: common/models.py:682
+#: common/models.py:668
msgid "Display part price in some forms"
msgstr ""
-#: common/models.py:688
+#: common/models.py:674
msgid "Show related parts"
msgstr ""
-#: common/models.py:689
+#: common/models.py:675
msgid "Display related parts for a part"
msgstr ""
-#: common/models.py:695
+#: common/models.py:681
msgid "Create initial stock"
msgstr ""
-#: common/models.py:696
+#: common/models.py:682
msgid "Create initial stock on part creation"
msgstr ""
-#: common/models.py:702
+#: common/models.py:688
msgid "Internal Prices"
msgstr ""
-#: common/models.py:703
+#: common/models.py:689
msgid "Enable internal prices for parts"
msgstr ""
-#: common/models.py:709
+#: common/models.py:695
msgid "Internal Price as BOM-Price"
msgstr ""
-#: common/models.py:710
+#: common/models.py:696
msgid "Use the internal price (if set) in BOM-price calculations"
msgstr ""
-#: common/models.py:716 templates/stats.html:25
+#: common/models.py:702 templates/stats.html:25
msgid "Debug Mode"
msgstr ""
-#: common/models.py:717
+#: common/models.py:703
msgid "Generate reports in debug mode (HTML output)"
msgstr ""
-#: common/models.py:723
+#: common/models.py:709
msgid "Page Size"
msgstr ""
-#: common/models.py:724
+#: common/models.py:710
msgid "Default page size for PDF reports"
msgstr ""
-#: common/models.py:734
+#: common/models.py:720
msgid "Test Reports"
msgstr ""
-#: common/models.py:735
+#: common/models.py:721
msgid "Enable generation of test reports"
msgstr ""
-#: common/models.py:741
+#: common/models.py:727
msgid "Stock Expiry"
msgstr ""
-#: common/models.py:742
+#: common/models.py:728
msgid "Enable stock expiry functionality"
msgstr ""
-#: common/models.py:748
+#: common/models.py:734
msgid "Sell Expired Stock"
msgstr ""
-#: common/models.py:749
+#: common/models.py:735
msgid "Allow sale of expired stock"
msgstr ""
-#: common/models.py:755
+#: common/models.py:741
msgid "Stock Stale Time"
msgstr ""
-#: common/models.py:756
+#: common/models.py:742
msgid "Number of days stock items are considered stale before expiring"
msgstr ""
-#: common/models.py:758
+#: common/models.py:744
msgid "days"
msgstr ""
-#: common/models.py:763
+#: common/models.py:749
msgid "Build Expired Stock"
msgstr ""
-#: common/models.py:764
+#: common/models.py:750
msgid "Allow building with expired stock"
msgstr ""
-#: common/models.py:770
+#: common/models.py:756
msgid "Stock Ownership Control"
msgstr ""
-#: common/models.py:771
+#: common/models.py:757
msgid "Enable ownership control over stock locations and items"
msgstr ""
-#: common/models.py:777
+#: common/models.py:763
msgid "Group by Part"
msgstr ""
-#: common/models.py:778
+#: common/models.py:764
msgid "Group stock items by part reference in table views"
msgstr ""
-#: common/models.py:784
+#: common/models.py:770
msgid "Build Order Reference Prefix"
msgstr ""
-#: common/models.py:785
+#: common/models.py:771
msgid "Prefix value for build order reference"
msgstr ""
-#: common/models.py:790
+#: common/models.py:776
msgid "Build Order Reference Regex"
msgstr ""
-#: common/models.py:791
+#: common/models.py:777
msgid "Regular expression pattern for matching build order reference"
msgstr ""
-#: common/models.py:795
+#: common/models.py:781
msgid "Sales Order Reference Prefix"
msgstr ""
-#: common/models.py:796
+#: common/models.py:782
msgid "Prefix value for sales order reference"
msgstr ""
-#: common/models.py:801
+#: common/models.py:787
msgid "Purchase Order Reference Prefix"
msgstr ""
-#: common/models.py:802
+#: common/models.py:788
msgid "Prefix value for purchase order reference"
msgstr ""
-#: common/models.py:826
+#: common/models.py:794
+msgid "Enable build"
+msgstr ""
+
+#: common/models.py:795
+msgid "Enable build functionality in InvenTree interface"
+msgstr ""
+
+#: common/models.py:800
+msgid "Enable buy"
+msgstr ""
+
+#: common/models.py:801
+msgid "Enable buy functionality in InvenTree interface"
+msgstr ""
+
+#: common/models.py:806
+msgid "Enable sell"
+msgstr ""
+
+#: common/models.py:807
+msgid "Enable sell functionality in InvenTree interface"
+msgstr ""
+
+#: common/models.py:812
+msgid "Enable stock"
+msgstr ""
+
+#: common/models.py:813
+msgid "Enable stock functionality in InvenTree interface"
+msgstr ""
+
+#: common/models.py:818
+msgid "Enable SO"
+msgstr ""
+
+#: common/models.py:819
+msgid "Enable SO functionality in InvenTree interface"
+msgstr ""
+
+#: common/models.py:824
+msgid "Enable PO"
+msgstr ""
+
+#: common/models.py:825
+msgid "Enable PO functionality in InvenTree interface"
+msgstr ""
+
+#: common/models.py:850
msgid "Show starred parts"
msgstr ""
-#: common/models.py:827
+#: common/models.py:851
msgid "Show starred parts on the homepage"
msgstr ""
-#: common/models.py:832
+#: common/models.py:856
msgid "Show latest parts"
msgstr ""
-#: common/models.py:833
+#: common/models.py:857
msgid "Show latest parts on the homepage"
msgstr ""
-#: common/models.py:838
+#: common/models.py:862
msgid "Recent Part Count"
msgstr ""
-#: common/models.py:839
+#: common/models.py:863
msgid "Number of recent parts to display on index page"
msgstr ""
-#: common/models.py:845
+#: common/models.py:869
msgid "Show unvalidated BOMs"
msgstr ""
-#: common/models.py:846
+#: common/models.py:870
msgid "Show BOMs that await validation on the homepage"
msgstr ""
-#: common/models.py:851
+#: common/models.py:875
msgid "Show recent stock changes"
msgstr ""
-#: common/models.py:852
+#: common/models.py:876
msgid "Show recently changed stock items on the homepage"
msgstr ""
-#: common/models.py:857
+#: common/models.py:881
msgid "Recent Stock Count"
msgstr ""
-#: common/models.py:858
+#: common/models.py:882
msgid "Number of recent stock items to display on index page"
msgstr ""
-#: common/models.py:863
+#: common/models.py:887
msgid "Show low stock"
msgstr ""
-#: common/models.py:864
+#: common/models.py:888
msgid "Show low stock items on the homepage"
msgstr ""
-#: common/models.py:869
+#: common/models.py:893
msgid "Show depleted stock"
msgstr ""
-#: common/models.py:870
+#: common/models.py:894
msgid "Show depleted stock items on the homepage"
msgstr ""
-#: common/models.py:875
+#: common/models.py:899
msgid "Show needed stock"
msgstr ""
-#: common/models.py:876
+#: common/models.py:900
msgid "Show stock items needed for builds on the homepage"
msgstr ""
-#: common/models.py:881
+#: common/models.py:905
msgid "Show expired stock"
msgstr ""
-#: common/models.py:882
+#: common/models.py:906
msgid "Show expired stock items on the homepage"
msgstr ""
-#: common/models.py:887
+#: common/models.py:911
msgid "Show stale stock"
msgstr ""
-#: common/models.py:888
+#: common/models.py:912
msgid "Show stale stock items on the homepage"
msgstr ""
-#: common/models.py:893
+#: common/models.py:917
msgid "Show pending builds"
msgstr ""
-#: common/models.py:894
+#: common/models.py:918
msgid "Show pending builds on the homepage"
msgstr ""
-#: common/models.py:899
+#: common/models.py:923
msgid "Show overdue builds"
msgstr ""
-#: common/models.py:900
+#: common/models.py:924
msgid "Show overdue builds on the homepage"
msgstr ""
-#: common/models.py:905
+#: common/models.py:929
msgid "Show outstanding POs"
msgstr ""
-#: common/models.py:906
+#: common/models.py:930
msgid "Show outstanding POs on the homepage"
msgstr ""
-#: common/models.py:911
+#: common/models.py:935
msgid "Show overdue POs"
msgstr ""
-#: common/models.py:912
+#: common/models.py:936
msgid "Show overdue POs on the homepage"
msgstr ""
-#: common/models.py:917
+#: common/models.py:941
msgid "Show outstanding SOs"
msgstr ""
-#: common/models.py:918
+#: common/models.py:942
msgid "Show outstanding SOs on the homepage"
msgstr ""
-#: common/models.py:923
+#: common/models.py:947
msgid "Show overdue SOs"
msgstr ""
-#: common/models.py:924
+#: common/models.py:948
msgid "Show overdue SOs on the homepage"
msgstr ""
-#: common/models.py:930
+#: common/models.py:954
msgid "Inline label display"
msgstr ""
-#: common/models.py:931
+#: common/models.py:955
msgid "Display PDF labels in the browser, instead of downloading as a file"
msgstr ""
-#: common/models.py:937
+#: common/models.py:961
msgid "Inline report display"
msgstr ""
-#: common/models.py:938
+#: common/models.py:962
msgid "Display PDF reports in the browser, instead of downloading as a file"
msgstr ""
-#: common/models.py:944
+#: common/models.py:968
msgid "Search Preview Results"
msgstr ""
-#: common/models.py:945
+#: common/models.py:969
msgid "Number of results to show in search preview window"
msgstr ""
-#: common/models.py:1002 company/forms.py:43
+#: common/models.py:1026 company/forms.py:43
msgid "Price break quantity"
msgstr ""
-#: common/models.py:1009 company/templates/company/supplier_part.html:231
-#: templates/js/translated/part.js:1153
+#: common/models.py:1033 company/templates/company/supplier_part.html:231
+#: templates/js/translated/part.js:1322
msgid "Price"
msgstr ""
-#: common/models.py:1010
+#: common/models.py:1034
msgid "Unit price at specified quantity"
msgstr ""
-#: common/models.py:1103
+#: common/models.py:1127
msgid "Default"
msgstr ""
@@ -2123,7 +2200,7 @@ msgstr ""
#: order/templates/order/po_navbar.html:19
#: order/templates/order/po_navbar.html:22
#: order/templates/order/purchase_order_detail.html:26 order/views.py:290
-#: part/templates/part/bom_upload/upload_file.html:45
+#: part/templates/part/bom_upload/upload_file.html:65
#: part/templates/part/import_wizard/part_upload.html:45 part/views.py:268
#: part/views.py:882
msgid "Upload File"
@@ -2154,7 +2231,7 @@ msgstr ""
#: order/templates/order/order_wizard/po_upload.html:40
#: 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:43
+#: part/templates/part/bom_upload/upload_file.html:63
#: 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:43
@@ -2169,244 +2246,249 @@ msgstr ""
msgid "Image URL"
msgstr ""
-#: company/models.py:102
+#: company/models.py:104
msgid "Company description"
msgstr ""
-#: company/models.py:103
+#: company/models.py:105
msgid "Description of the company"
msgstr ""
-#: company/models.py:109 company/templates/company/company_base.html:70
-#: templates/js/translated/company.js:303
+#: company/models.py:111 company/templates/company/company_base.html:70
+#: templates/js/translated/company.js:348
msgid "Website"
msgstr ""
-#: company/models.py:110
+#: company/models.py:112
msgid "Company website URL"
msgstr ""
-#: company/models.py:114 company/templates/company/company_base.html:88
+#: company/models.py:116 company/templates/company/company_base.html:88
msgid "Address"
msgstr ""
-#: company/models.py:115
+#: company/models.py:117
msgid "Company address"
msgstr ""
-#: company/models.py:118
+#: company/models.py:120
msgid "Phone number"
msgstr ""
-#: company/models.py:119
+#: company/models.py:121
msgid "Contact phone number"
msgstr ""
-#: company/models.py:122 company/templates/company/company_base.html:102
+#: company/models.py:124 company/templates/company/company_base.html:102
msgid "Email"
msgstr ""
-#: company/models.py:122
+#: company/models.py:124
msgid "Contact email address"
msgstr ""
-#: company/models.py:125 company/templates/company/company_base.html:109
+#: company/models.py:127 company/templates/company/company_base.html:109
msgid "Contact"
msgstr ""
-#: company/models.py:126
+#: company/models.py:128
msgid "Point of contact"
msgstr ""
-#: company/models.py:128 company/models.py:345 company/models.py:513
-#: order/models.py:160 part/models.py:712
+#: company/models.py:130 company/models.py:347 company/models.py:563
+#: order/models.py:160 part/models.py:714
#: report/templates/report/inventree_build_order_base.html:165
-#: templates/js/translated/company.js:486
-#: templates/js/translated/company.js:768 templates/js/translated/part.js:819
+#: templates/js/translated/company.js:535
+#: templates/js/translated/company.js:823 templates/js/translated/part.js:972
msgid "Link"
msgstr ""
-#: company/models.py:128
+#: company/models.py:130
msgid "Link to external company information"
msgstr ""
-#: company/models.py:136 part/models.py:722
+#: company/models.py:138 part/models.py:724
msgid "Image"
msgstr ""
-#: company/models.py:141
+#: company/models.py:143
msgid "is customer"
msgstr ""
-#: company/models.py:141
+#: company/models.py:143
msgid "Do you sell items to this company?"
msgstr ""
-#: company/models.py:143
+#: company/models.py:145
msgid "is supplier"
msgstr ""
-#: company/models.py:143
+#: company/models.py:145
msgid "Do you purchase items from this company?"
msgstr ""
-#: company/models.py:145
+#: company/models.py:147
msgid "is manufacturer"
msgstr ""
-#: company/models.py:145
+#: company/models.py:147
msgid "Does this company manufacture parts?"
msgstr ""
-#: company/models.py:149 company/serializers.py:245
-#: company/templates/company/company_base.html:76
+#: company/models.py:151 company/serializers.py:264
+#: company/templates/company/company_base.html:76 stock/serializers.py:155
msgid "Currency"
msgstr ""
-#: company/models.py:152
+#: company/models.py:154
msgid "Default currency used for this company"
msgstr ""
-#: company/models.py:317 company/models.py:484 stock/models.py:448
+#: company/models.py:319 company/models.py:534 stock/models.py:454
#: stock/templates/stock/item_base.html:237
msgid "Base Part"
msgstr ""
-#: company/models.py:321 company/models.py:488 order/views.py:1082
+#: company/models.py:323 company/models.py:538 order/views.py:1082
msgid "Select part"
msgstr ""
-#: company/models.py:332 company/templates/company/company_base.html:116
+#: company/models.py:334 company/templates/company/company_base.html:116
#: company/templates/company/manufacturer_part.html:89
#: company/templates/company/supplier_part.html:98 part/bom.py:170
#: part/bom.py:241 stock/templates/stock/item_base.html:366
-#: templates/js/translated/company.js:287
-#: templates/js/translated/company.js:463
-#: templates/js/translated/company.js:739
+#: templates/js/translated/company.js:332
+#: templates/js/translated/company.js:512
+#: templates/js/translated/company.js:794 templates/js/translated/part.js:222
msgid "Manufacturer"
msgstr ""
-#: company/models.py:333
+#: company/models.py:335 templates/js/translated/part.js:223
msgid "Select manufacturer"
msgstr ""
-#: company/models.py:339 company/templates/company/manufacturer_part.html:93
-#: company/templates/company/supplier_part.html:106
-#: order/templates/order/purchase_order_detail.html:331 part/bom.py:171
-#: part/bom.py:242 templates/js/translated/company.js:479
-#: templates/js/translated/company.js:757
+#: company/models.py:341 company/templates/company/manufacturer_part.html:93
+#: company/templates/company/supplier_part.html:106 part/bom.py:171
+#: part/bom.py:242 templates/js/translated/company.js:528
+#: templates/js/translated/company.js:812 templates/js/translated/order.js:505
+#: templates/js/translated/part.js:233
msgid "MPN"
msgstr ""
-#: company/models.py:340
+#: company/models.py:342 templates/js/translated/part.js:234
msgid "Manufacturer Part Number"
msgstr ""
-#: company/models.py:346
+#: company/models.py:348
msgid "URL for external manufacturer part link"
msgstr ""
-#: company/models.py:352
+#: company/models.py:354
msgid "Manufacturer part description"
msgstr ""
-#: company/models.py:406 company/models.py:507
+#: company/models.py:408 company/models.py:557
#: company/templates/company/manufacturer_part.html:6
#: company/templates/company/manufacturer_part.html:23
#: stock/templates/stock/item_base.html:376
msgid "Manufacturer Part"
msgstr ""
-#: company/models.py:413
+#: company/models.py:415
msgid "Parameter name"
msgstr ""
-#: company/models.py:419
+#: company/models.py:421
#: report/templates/report/inventree_test_report_base.html:90
-#: stock/models.py:1808 templates/InvenTree/settings/header.html:8
-#: templates/js/translated/company.js:589 templates/js/translated/part.js:480
-#: templates/js/translated/stock.js:505
+#: stock/models.py:1819 templates/InvenTree/settings/header.html:8
+#: templates/js/translated/company.js:642 templates/js/translated/part.js:612
+#: templates/js/translated/stock.js:576
msgid "Value"
msgstr ""
-#: company/models.py:420
+#: company/models.py:422
msgid "Parameter value"
msgstr ""
-#: company/models.py:426 part/models.py:797 part/models.py:2204
-#: templates/js/translated/company.js:595 templates/js/translated/part.js:486
+#: company/models.py:428 part/models.py:799 part/models.py:2220
+#: templates/js/translated/company.js:648 templates/js/translated/part.js:618
msgid "Units"
msgstr ""
-#: company/models.py:427
+#: company/models.py:429
msgid "Parameter units"
msgstr ""
-#: company/models.py:494 company/templates/company/company_base.html:121
+#: company/models.py:501
+msgid "Linked manufacturer part must reference the same base part"
+msgstr ""
+
+#: company/models.py:544 company/templates/company/company_base.html:121
#: company/templates/company/supplier_part.html:88 order/models.py:260
#: order/templates/order/order_base.html:92
#: order/templates/order/order_wizard/select_pos.html:30 part/bom.py:175
#: part/bom.py:286 stock/templates/stock/item_base.html:383
-#: templates/js/translated/company.js:291
-#: templates/js/translated/company.js:713 templates/js/translated/order.js:254
+#: templates/js/translated/company.js:336
+#: templates/js/translated/company.js:768 templates/js/translated/order.js:328
+#: templates/js/translated/part.js:203
msgid "Supplier"
msgstr ""
-#: company/models.py:495
+#: company/models.py:545 templates/js/translated/part.js:204
msgid "Select supplier"
msgstr ""
-#: company/models.py:500 company/templates/company/supplier_part.html:92
-#: order/templates/order/purchase_order_detail.html:318 part/bom.py:176
-#: part/bom.py:287
+#: company/models.py:550 company/templates/company/supplier_part.html:92
+#: part/bom.py:176 part/bom.py:287 templates/js/translated/order.js:492
+#: templates/js/translated/part.js:214
msgid "SKU"
msgstr ""
-#: company/models.py:501
+#: company/models.py:551 templates/js/translated/part.js:215
msgid "Supplier stock keeping unit"
msgstr ""
-#: company/models.py:508
+#: company/models.py:558
msgid "Select manufacturer part"
msgstr ""
-#: company/models.py:514
+#: company/models.py:564
msgid "URL for external supplier part link"
msgstr ""
-#: company/models.py:520
+#: company/models.py:570
msgid "Supplier part description"
msgstr ""
-#: company/models.py:525 company/templates/company/supplier_part.html:120
-#: part/models.py:2352 report/templates/report/inventree_po_report.html:93
+#: company/models.py:575 company/templates/company/supplier_part.html:120
+#: part/models.py:2368 report/templates/report/inventree_po_report.html:93
#: report/templates/report/inventree_so_report.html:93
msgid "Note"
msgstr ""
-#: company/models.py:529 part/models.py:1590
+#: company/models.py:579 part/models.py:1599
msgid "base cost"
msgstr ""
-#: company/models.py:529 part/models.py:1590
+#: company/models.py:579 part/models.py:1599
msgid "Minimum charge (e.g. stocking fee)"
msgstr ""
-#: company/models.py:531 company/templates/company/supplier_part.html:113
-#: stock/models.py:472 stock/templates/stock/item_base.html:324
-#: templates/js/translated/company.js:789 templates/js/translated/stock.js:1086
+#: company/models.py:581 company/templates/company/supplier_part.html:113
+#: stock/models.py:478 stock/templates/stock/item_base.html:324
+#: templates/js/translated/company.js:844 templates/js/translated/stock.js:1057
msgid "Packaging"
msgstr ""
-#: company/models.py:531
+#: company/models.py:581
msgid "Part packaging"
msgstr ""
-#: company/models.py:533 part/models.py:1592
+#: company/models.py:583 part/models.py:1601
msgid "multiple"
msgstr ""
-#: company/models.py:533
+#: company/models.py:583
msgid "Order multiple"
msgstr ""
@@ -2420,7 +2502,7 @@ msgstr ""
#: company/templates/company/company_base.html:9
#: company/templates/company/company_base.html:35
-#: templates/InvenTree/search.html:304 templates/js/translated/company.js:276
+#: templates/InvenTree/search.html:304 templates/js/translated/company.js:321
msgid "Company"
msgstr ""
@@ -2435,7 +2517,7 @@ msgid "Download image from URL"
msgstr ""
#: company/templates/company/company_base.html:46
-#: templates/js/translated/order.js:83
+#: templates/js/translated/order.js:117
msgid "Create Purchase Order"
msgstr ""
@@ -2460,16 +2542,16 @@ msgstr ""
msgid "Phone"
msgstr ""
-#: company/templates/company/company_base.html:126 order/models.py:544
-#: order/templates/order/sales_order_base.html:94 stock/models.py:490
-#: stock/models.py:491 stock/templates/stock/item_base.html:276
-#: templates/js/translated/company.js:283 templates/js/translated/order.js:351
-#: templates/js/translated/stock.js:1467
+#: company/templates/company/company_base.html:126 order/models.py:550
+#: order/templates/order/sales_order_base.html:94 stock/models.py:496
+#: stock/models.py:497 stock/templates/stock/item_base.html:276
+#: templates/js/translated/company.js:328 templates/js/translated/order.js:692
+#: templates/js/translated/stock.js:1608
msgid "Customer"
msgstr ""
#: company/templates/company/company_base.html:193
-#: part/templates/part/part_base.html:405
+#: part/templates/part/part_base.html:418
msgid "Upload Image"
msgstr ""
@@ -2490,8 +2572,8 @@ msgstr ""
msgid "New Supplier Part"
msgstr ""
-#: company/templates/company/detail.html:28
-#: company/templates/company/detail.html:70
+#: company/templates/company/detail.html:27
+#: company/templates/company/detail.html:67
#: company/templates/company/manufacturer_part.html:112
#: company/templates/company/manufacturer_part.html:136
#: part/templates/part/category.html:135 part/templates/part/detail.html:292
@@ -2499,106 +2581,106 @@ msgstr ""
msgid "Options"
msgstr ""
-#: company/templates/company/detail.html:33
-#: company/templates/company/detail.html:75
+#: company/templates/company/detail.html:32
+#: company/templates/company/detail.html:72
#: part/templates/part/category.html:140
msgid "Order parts"
msgstr ""
-#: company/templates/company/detail.html:36
-#: company/templates/company/detail.html:78
+#: company/templates/company/detail.html:35
+#: company/templates/company/detail.html:75
msgid "Delete parts"
msgstr ""
-#: company/templates/company/detail.html:36
-#: company/templates/company/detail.html:78
+#: company/templates/company/detail.html:35
+#: company/templates/company/detail.html:75
msgid "Delete Parts"
msgstr ""
-#: company/templates/company/detail.html:56 templates/InvenTree/search.html:149
+#: company/templates/company/detail.html:54 templates/InvenTree/search.html:149
msgid "Manufacturer Parts"
msgstr ""
-#: company/templates/company/detail.html:64
+#: company/templates/company/detail.html:62
msgid "Create new manufacturer part"
msgstr ""
-#: company/templates/company/detail.html:65 part/templates/part/detail.html:312
+#: company/templates/company/detail.html:63 part/templates/part/detail.html:312
msgid "New Manufacturer Part"
msgstr ""
-#: company/templates/company/detail.html:97
+#: company/templates/company/detail.html:93
msgid "Supplier Stock"
msgstr ""
-#: company/templates/company/detail.html:106
-#: company/templates/company/navbar.html:40
-#: company/templates/company/navbar.html:43
+#: company/templates/company/detail.html:102
+#: company/templates/company/navbar.html:46
+#: company/templates/company/navbar.html:49
#: order/templates/order/purchase_orders.html:8
#: order/templates/order/purchase_orders.html:13
-#: part/templates/part/detail.html:50 part/templates/part/navbar.html:71
-#: part/templates/part/navbar.html:74 templates/InvenTree/index.html:260
+#: part/templates/part/detail.html:50 part/templates/part/navbar.html:82
+#: part/templates/part/navbar.html:85 templates/InvenTree/index.html:260
#: templates/InvenTree/search.html:325
#: templates/InvenTree/settings/navbar.html:107
-#: templates/InvenTree/settings/navbar.html:109 templates/navbar.html:37
+#: templates/InvenTree/settings/navbar.html:109 templates/navbar.html:44
#: users/models.py:45
msgid "Purchase Orders"
msgstr ""
-#: company/templates/company/detail.html:112
+#: company/templates/company/detail.html:108
#: order/templates/order/purchase_orders.html:20
msgid "Create new purchase order"
msgstr ""
-#: company/templates/company/detail.html:113
+#: company/templates/company/detail.html:109
#: order/templates/order/purchase_orders.html:21
msgid "New Purchase Order"
msgstr ""
-#: company/templates/company/detail.html:128
-#: company/templates/company/navbar.html:49
-#: company/templates/company/navbar.html:52
+#: company/templates/company/detail.html:124
+#: company/templates/company/navbar.html:55
+#: company/templates/company/navbar.html:58
#: order/templates/order/sales_orders.html:8
#: order/templates/order/sales_orders.html:13
-#: part/templates/part/detail.html:71 part/templates/part/navbar.html:79
-#: part/templates/part/navbar.html:82 templates/InvenTree/index.html:291
+#: part/templates/part/detail.html:71 part/templates/part/navbar.html:91
+#: part/templates/part/navbar.html:94 templates/InvenTree/index.html:291
#: templates/InvenTree/search.html:345
#: templates/InvenTree/settings/navbar.html:113
-#: templates/InvenTree/settings/navbar.html:115 templates/navbar.html:46
+#: templates/InvenTree/settings/navbar.html:115 templates/navbar.html:55
#: users/models.py:46
msgid "Sales Orders"
msgstr ""
-#: company/templates/company/detail.html:134
+#: company/templates/company/detail.html:130
#: order/templates/order/sales_orders.html:20
msgid "Create new sales order"
msgstr ""
-#: company/templates/company/detail.html:135
+#: company/templates/company/detail.html:131
#: order/templates/order/sales_orders.html:21
msgid "New Sales Order"
msgstr ""
-#: company/templates/company/detail.html:151
-#: company/templates/company/navbar.html:55
-#: company/templates/company/navbar.html:58
-#: templates/js/translated/build.js:597
+#: company/templates/company/detail.html:147
+#: company/templates/company/navbar.html:61
+#: company/templates/company/navbar.html:64
+#: templates/js/translated/build.js:620
msgid "Assigned Stock"
msgstr ""
-#: company/templates/company/detail.html:169
+#: company/templates/company/detail.html:165
msgid "Company Notes"
msgstr ""
#: company/templates/company/detail.html:364
#: company/templates/company/manufacturer_part.html:200
-#: part/templates/part/detail.html:826
+#: part/templates/part/detail.html:357
msgid "Delete Supplier Parts?"
msgstr ""
#: company/templates/company/detail.html:365
#: company/templates/company/manufacturer_part.html:201
-#: part/templates/part/detail.html:827
+#: part/templates/part/detail.html:358
msgid "All selected supplier parts will be deleted"
msgstr ""
@@ -2609,17 +2691,17 @@ msgstr ""
#: company/templates/company/manufacturer_part.html:40
#: company/templates/company/supplier_part.html:40
#: company/templates/company/supplier_part.html:146
-#: part/templates/part/detail.html:55 part/templates/part/part_base.html:109
+#: part/templates/part/detail.html:55 part/templates/part/part_base.html:116
msgid "Order part"
msgstr ""
#: company/templates/company/manufacturer_part.html:45
-#: templates/js/translated/company.js:511
+#: templates/js/translated/company.js:560
msgid "Edit manufacturer part"
msgstr ""
#: company/templates/company/manufacturer_part.html:49
-#: templates/js/translated/company.js:512
+#: templates/js/translated/company.js:561
msgid "Delete manufacturer part"
msgstr ""
@@ -2634,9 +2716,9 @@ msgstr ""
#: company/templates/company/manufacturer_part.html:103
#: company/templates/company/manufacturer_part_navbar.html:21
-#: company/views.py:49 part/templates/part/navbar.html:65
-#: part/templates/part/navbar.html:68 part/templates/part/prices.html:144
-#: templates/InvenTree/search.html:316 templates/navbar.html:35
+#: company/views.py:49 part/templates/part/navbar.html:75
+#: part/templates/part/navbar.html:78 part/templates/part/prices.html:163
+#: templates/InvenTree/search.html:316 templates/navbar.html:41
msgid "Suppliers"
msgstr ""
@@ -2649,8 +2731,8 @@ msgstr ""
#: company/templates/company/manufacturer_part.html:138
#: company/templates/company/manufacturer_part.html:239
#: part/templates/part/detail.html:214 part/templates/part/detail.html:294
-#: part/templates/part/detail.html:317 templates/js/translated/company.js:377
-#: users/models.py:194
+#: part/templates/part/detail.html:317 templates/js/translated/company.js:424
+#: templates/js/translated/helpers.js:31 users/models.py:194
msgid "Delete"
msgstr ""
@@ -2659,8 +2741,8 @@ msgstr ""
#: company/templates/company/manufacturer_part_navbar.html:14
#: part/templates/part/category_navbar.html:38
#: part/templates/part/category_navbar.html:41
-#: part/templates/part/detail.html:155 part/templates/part/navbar.html:14
-#: part/templates/part/navbar.html:17
+#: part/templates/part/detail.html:155 part/templates/part/navbar.html:20
+#: part/templates/part/navbar.html:23
msgid "Parameters"
msgstr ""
@@ -2676,7 +2758,7 @@ msgid "Delete parameters"
msgstr ""
#: company/templates/company/manufacturer_part.html:176
-#: part/templates/part/detail.html:719
+#: part/templates/part/detail.html:834
msgid "Add Parameter"
msgstr ""
@@ -2693,18 +2775,18 @@ msgid "Manufacturer Part Stock"
msgstr ""
#: company/templates/company/manufacturer_part_navbar.html:29
-#: company/templates/company/navbar.html:34
+#: company/templates/company/navbar.html:39
#: company/templates/company/supplier_part_navbar.html:15
-#: part/templates/part/navbar.html:31 stock/api.py:53
+#: part/templates/part/navbar.html:38 stock/api.py:54
#: stock/templates/stock/loc_link.html:7 stock/templates/stock/location.html:36
#: stock/templates/stock/stock_app_base.html:10
#: templates/InvenTree/index.html:150 templates/InvenTree/search.html:196
#: templates/InvenTree/search.html:232
#: templates/InvenTree/settings/navbar.html:95
#: templates/InvenTree/settings/navbar.html:97
-#: templates/js/translated/part.js:401 templates/js/translated/part.js:626
-#: templates/js/translated/part.js:786 templates/js/translated/stock.js:133
-#: templates/js/translated/stock.js:935 templates/navbar.html:26
+#: templates/js/translated/part.js:529 templates/js/translated/part.js:758
+#: templates/js/translated/part.js:934 templates/js/translated/stock.js:202
+#: templates/js/translated/stock.js:850 templates/navbar.html:32
msgid "Stock"
msgstr ""
@@ -2717,41 +2799,41 @@ msgstr ""
msgid "Orders"
msgstr ""
-#: company/templates/company/navbar.html:13
-#: company/templates/company/navbar.html:16
+#: company/templates/company/navbar.html:17
+#: company/templates/company/navbar.html:20
msgid "Manufactured Parts"
msgstr ""
-#: company/templates/company/navbar.html:22
-#: company/templates/company/navbar.html:25
+#: company/templates/company/navbar.html:26
+#: company/templates/company/navbar.html:29
msgid "Supplied Parts"
msgstr ""
-#: company/templates/company/navbar.html:31 part/templates/part/navbar.html:28
+#: company/templates/company/navbar.html:36 part/templates/part/navbar.html:35
#: stock/templates/stock/location.html:119
#: stock/templates/stock/location.html:134
#: stock/templates/stock/location.html:148
#: stock/templates/stock/location_navbar.html:18
#: stock/templates/stock/location_navbar.html:21
-#: templates/InvenTree/search.html:198 templates/js/translated/stock.js:1366
+#: templates/InvenTree/search.html:198 templates/js/translated/stock.js:1507
#: templates/stats.html:93 templates/stats.html:102 users/models.py:43
msgid "Stock Items"
msgstr ""
#: company/templates/company/supplier_part.html:7
-#: company/templates/company/supplier_part.html:24 stock/models.py:457
+#: company/templates/company/supplier_part.html:24 stock/models.py:463
#: stock/templates/stock/item_base.html:388
-#: templates/js/translated/company.js:729 templates/js/translated/stock.js:1058
+#: templates/js/translated/company.js:784 templates/js/translated/stock.js:1014
msgid "Supplier Part"
msgstr ""
#: company/templates/company/supplier_part.html:44
-#: templates/js/translated/company.js:802
+#: templates/js/translated/company.js:857
msgid "Edit supplier part"
msgstr ""
#: company/templates/company/supplier_part.html:48
-#: templates/js/translated/company.js:803
+#: templates/js/translated/company.js:858
msgid "Delete supplier part"
msgstr ""
@@ -2775,13 +2857,13 @@ msgid "Order Part"
msgstr ""
#: company/templates/company/supplier_part.html:158
-#: part/templates/part/navbar.html:58 part/templates/part/prices.html:7
+#: part/templates/part/navbar.html:67 part/templates/part/prices.html:7
msgid "Pricing Information"
msgstr ""
#: company/templates/company/supplier_part.html:164
#: company/templates/company/supplier_part.html:265
-#: part/templates/part/prices.html:253 part/views.py:1722
+#: part/templates/part/prices.html:271 part/views.py:1730
msgid "Add Price Break"
msgstr ""
@@ -2789,11 +2871,11 @@ msgstr ""
msgid "No price break information found"
msgstr ""
-#: company/templates/company/supplier_part.html:199 part/views.py:1784
+#: company/templates/company/supplier_part.html:199 part/views.py:1792
msgid "Delete Price Break"
msgstr ""
-#: company/templates/company/supplier_part.html:213 part/views.py:1770
+#: company/templates/company/supplier_part.html:213 part/views.py:1778
msgid "Edit Price Break"
msgstr ""
@@ -2817,8 +2899,8 @@ msgstr ""
msgid "New Supplier"
msgstr ""
-#: company/views.py:55 part/templates/part/prices.html:148
-#: templates/InvenTree/search.html:306 templates/navbar.html:36
+#: company/views.py:55 part/templates/part/prices.html:167
+#: templates/InvenTree/search.html:306 templates/navbar.html:42
msgid "Manufacturers"
msgstr ""
@@ -2827,7 +2909,7 @@ msgid "New Manufacturer"
msgstr ""
#: company/views.py:61 templates/InvenTree/search.html:336
-#: templates/navbar.html:45
+#: templates/navbar.html:53
msgid "Customers"
msgstr ""
@@ -2929,6 +3011,10 @@ msgstr ""
msgid "Part query filters (comma-separated value of key=value pairs)"
msgstr ""
+#: order/api.py:302
+msgid "Destination location must be specified"
+msgstr ""
+
#: order/forms.py:30 order/templates/order/order_base.html:47
msgid "Place order"
msgstr ""
@@ -2978,11 +3064,11 @@ msgstr ""
msgid "Order notes"
msgstr ""
-#: order/models.py:247 order/models.py:534
+#: order/models.py:247 order/models.py:540
msgid "Order reference"
msgstr ""
-#: order/models.py:252 order/models.py:549
+#: order/models.py:252 order/models.py:555
msgid "Purchase order status"
msgstr ""
@@ -2991,7 +3077,7 @@ msgid "Company from which the items are being ordered"
msgstr ""
#: order/models.py:264 order/templates/order/order_base.html:98
-#: templates/js/translated/order.js:263
+#: templates/js/translated/order.js:337
msgid "Supplier Reference"
msgstr ""
@@ -3023,7 +3109,7 @@ msgstr ""
msgid "Date order was completed"
msgstr ""
-#: order/models.py:313 stock/models.py:345 stock/models.py:1060
+#: order/models.py:313 stock/models.py:351 stock/models.py:1072
msgid "Quantity must be greater than zero"
msgstr ""
@@ -3031,150 +3117,182 @@ msgstr ""
msgid "Part supplier must match PO supplier"
msgstr ""
-#: order/models.py:416
+#: order/models.py:421
msgid "Lines can only be received against an order marked as 'Placed'"
msgstr ""
-#: order/models.py:420
+#: order/models.py:425
msgid "Quantity must be an integer"
msgstr ""
-#: order/models.py:422
+#: order/models.py:427
msgid "Quantity must be a positive number"
msgstr ""
-#: order/models.py:545
+#: order/models.py:551
msgid "Company to which the items are being sold"
msgstr ""
-#: order/models.py:551
+#: order/models.py:557
msgid "Customer Reference "
msgstr ""
-#: order/models.py:551
+#: order/models.py:557
msgid "Customer order reference code"
msgstr ""
-#: order/models.py:556
+#: order/models.py:562
msgid "Target date for order completion. Order will be overdue after this date."
msgstr ""
-#: order/models.py:559 templates/js/translated/order.js:392
+#: order/models.py:565 templates/js/translated/order.js:733
msgid "Shipment Date"
msgstr ""
-#: order/models.py:566
+#: order/models.py:572
msgid "shipped by"
msgstr ""
-#: order/models.py:610
+#: order/models.py:616
msgid "SalesOrder cannot be shipped as it is not currently pending"
msgstr ""
-#: order/models.py:707
+#: order/models.py:713
msgid "Item quantity"
msgstr ""
-#: order/models.py:713
+#: order/models.py:719
msgid "Line item reference"
msgstr ""
-#: order/models.py:715
+#: order/models.py:721
msgid "Line item notes"
msgstr ""
-#: order/models.py:745 order/models.py:823 templates/js/translated/order.js:442
+#: order/models.py:751 order/models.py:835 templates/js/translated/order.js:785
msgid "Order"
msgstr ""
-#: order/models.py:746 order/templates/order/order_base.html:9
+#: order/models.py:752 order/templates/order/order_base.html:9
#: order/templates/order/order_base.html:24
#: report/templates/report/inventree_po_report.html:77
#: stock/templates/stock/item_base.html:338
-#: templates/js/translated/order.js:232 templates/js/translated/stock.js:1037
-#: templates/js/translated/stock.js:1448
+#: templates/js/translated/order.js:306 templates/js/translated/stock.js:991
+#: templates/js/translated/stock.js:1589
msgid "Purchase Order"
msgstr ""
-#: order/models.py:767
+#: order/models.py:773
msgid "Supplier part"
msgstr ""
-#: order/models.py:770 order/templates/order/order_base.html:131
-#: order/templates/order/purchase_order_detail.html:388
+#: order/models.py:780 order/templates/order/order_base.html:131
#: order/templates/order/receive_parts.html:22
#: order/templates/order/sales_order_base.html:133
+#: templates/js/translated/order.js:573
msgid "Received"
msgstr ""
-#: order/models.py:770
+#: order/models.py:781
msgid "Number of items received"
msgstr ""
-#: order/models.py:776 part/templates/part/prices.html:157 stock/models.py:582
-#: stock/templates/stock/item_base.html:345
-#: templates/js/translated/stock.js:1081
+#: order/models.py:788 part/templates/part/prices.html:176 stock/models.py:588
+#: stock/serializers.py:147 stock/templates/stock/item_base.html:345
+#: templates/js/translated/stock.js:1045
msgid "Purchase Price"
msgstr ""
-#: order/models.py:777
+#: order/models.py:789
msgid "Unit purchase price"
msgstr ""
-#: order/models.py:785
+#: order/models.py:797
msgid "Where does the Purchaser want this item to be stored?"
msgstr ""
-#: order/models.py:831 part/templates/part/part_pricing.html:97
-#: part/templates/part/prices.html:97 part/templates/part/prices.html:266
+#: order/models.py:843 part/templates/part/part_pricing.html:112
+#: part/templates/part/prices.html:116 part/templates/part/prices.html:284
msgid "Sale Price"
msgstr ""
-#: order/models.py:832
+#: order/models.py:844
msgid "Unit sale price"
msgstr ""
-#: order/models.py:911 order/models.py:913
+#: order/models.py:923 order/models.py:925
msgid "Stock item has not been assigned"
msgstr ""
-#: order/models.py:917
+#: order/models.py:929
msgid "Cannot allocate stock item to a line with a different part"
msgstr ""
-#: order/models.py:919
+#: order/models.py:931
msgid "Cannot allocate stock to a line without a part"
msgstr ""
-#: order/models.py:922
+#: order/models.py:934
msgid "Allocation quantity cannot exceed stock quantity"
msgstr ""
-#: order/models.py:932
+#: order/models.py:944
msgid "Quantity must be 1 for serialized stock item"
msgstr ""
-#: order/models.py:937
+#: order/models.py:949
msgid "Line"
msgstr ""
-#: order/models.py:948
+#: order/models.py:960
msgid "Item"
msgstr ""
-#: order/models.py:949
+#: order/models.py:961
msgid "Select stock item to allocate"
msgstr ""
-#: order/models.py:952
+#: order/models.py:964
msgid "Enter stock allocation quantity"
msgstr ""
-#: order/serializers.py:139
+#: order/serializers.py:166
msgid "Purchase price currency"
msgstr ""
-#: order/serializers.py:360
+#: order/serializers.py:201
+msgid "Line Item"
+msgstr ""
+
+#: order/serializers.py:207
+msgid "Line item does not match purchase order"
+msgstr ""
+
+#: order/serializers.py:217 order/serializers.py:276
+msgid "Select destination location for received items"
+msgstr ""
+
+#: order/serializers.py:234
+msgid "Barcode Hash"
+msgstr ""
+
+#: order/serializers.py:235
+msgid "Unique identifier field"
+msgstr ""
+
+#: order/serializers.py:250
+msgid "Barcode is already in use"
+msgstr ""
+
+#: order/serializers.py:289
+msgid "Line items must be provided"
+msgstr ""
+
+#: order/serializers.py:299
+msgid "Supplied barcode values must be unique"
+msgstr ""
+
+#: order/serializers.py:514
msgid "Sale price currency"
msgstr ""
@@ -3227,14 +3345,12 @@ msgid "Edit Purchase Order"
msgstr ""
#: order/templates/order/order_base.html:196
-#: order/templates/order/purchase_order_detail.html:265
-#: stock/templates/stock/location.html:250
+#: stock/templates/stock/location.html:250 templates/js/translated/order.js:437
msgid "New Location"
msgstr ""
#: order/templates/order/order_base.html:197
-#: order/templates/order/purchase_order_detail.html:266
-#: stock/templates/stock/location.html:42
+#: stock/templates/stock/location.html:42 templates/js/translated/order.js:438
msgid "Create new stock location"
msgstr ""
@@ -3336,7 +3452,7 @@ msgid "Upload File for Purchase Order"
msgstr ""
#: order/templates/order/order_wizard/po_upload.html:18
-#: part/templates/part/bom_upload/upload_file.html:24
+#: part/templates/part/bom_upload/upload_file.html:34
#: part/templates/part/import_wizard/ajax_part_upload.html:10
#: part/templates/part/import_wizard/part_upload.html:21
#, python-format
@@ -3369,7 +3485,7 @@ msgstr ""
#: order/templates/order/order_wizard/select_parts.html:65
#, python-format
-msgid "Select a supplier for %(name)s"
+msgid "Select a supplier for %(name)s"
msgstr ""
#: order/templates/order/order_wizard/select_parts.html:77
@@ -3386,7 +3502,7 @@ msgid "Select existing purchase orders, or create new orders."
msgstr ""
#: order/templates/order/order_wizard/select_pos.html:31
-#: templates/js/translated/order.js:289 templates/js/translated/order.js:397
+#: templates/js/translated/order.js:363 templates/js/translated/order.js:738
msgid "Items"
msgstr ""
@@ -3425,9 +3541,9 @@ msgid "Purchase Order Items"
msgstr ""
#: order/templates/order/purchase_order_detail.html:23
-#: order/templates/order/purchase_order_detail.html:202
+#: order/templates/order/purchase_order_detail.html:203
#: order/templates/order/sales_order_detail.html:23
-#: order/templates/order/sales_order_detail.html:176
+#: order/templates/order/sales_order_detail.html:177
msgid "Add Line Item"
msgstr ""
@@ -3436,49 +3552,6 @@ msgstr ""
msgid "Order Notes"
msgstr ""
-#: order/templates/order/purchase_order_detail.html:238
-#: order/templates/order/sales_order_detail.html:518
-msgid "Edit Line Item"
-msgstr ""
-
-#: order/templates/order/purchase_order_detail.html:248
-#: order/templates/order/sales_order_detail.html:528
-msgid "Delete Line Item"
-msgstr ""
-
-#: order/templates/order/purchase_order_detail.html:279
-msgid "No line items found"
-msgstr ""
-
-#: order/templates/order/purchase_order_detail.html:307
-#: order/templates/order/sales_order_detail.html:353
-msgid "Total"
-msgstr ""
-
-#: order/templates/order/purchase_order_detail.html:360
-#: order/templates/order/sales_order_detail.html:376
-#: templates/js/translated/part.js:1128 templates/js/translated/part.js:1317
-msgid "Unit Price"
-msgstr ""
-
-#: order/templates/order/purchase_order_detail.html:367
-#: order/templates/order/sales_order_detail.html:383
-msgid "Total price"
-msgstr ""
-
-#: order/templates/order/purchase_order_detail.html:431
-#: order/templates/order/sales_order_detail.html:489
-msgid "Edit line item"
-msgstr ""
-
-#: order/templates/order/purchase_order_detail.html:432
-msgid "Delete line item"
-msgstr ""
-
-#: order/templates/order/purchase_order_detail.html:437
-msgid "Receive line item"
-msgstr ""
-
#: order/templates/order/purchase_orders.html:24
#: order/templates/order/sales_orders.html:24
msgid "Print Order Reports"
@@ -3486,18 +3559,18 @@ msgstr ""
#: order/templates/order/receive_parts.html:8
#, python-format
-msgid "Receive outstanding parts for %(order)s - %(desc)s"
+msgid "Receive outstanding parts for %(order)s - %(desc)s"
msgstr ""
-#: order/templates/order/receive_parts.html:14 part/api.py:49
-#: part/models.py:296 part/templates/part/cat_link.html:7
+#: order/templates/order/receive_parts.html:14 part/api.py:54
+#: part/models.py:298 part/templates/part/cat_link.html:7
#: part/templates/part/category.html:108 part/templates/part/category.html:122
#: part/templates/part/category_navbar.html:21
#: part/templates/part/category_navbar.html:24
#: templates/InvenTree/index.html:102 templates/InvenTree/search.html:114
#: templates/InvenTree/settings/navbar.html:83
#: templates/InvenTree/settings/navbar.html:85
-#: templates/js/translated/part.js:987 templates/navbar.html:23
+#: templates/js/translated/part.js:1154 templates/navbar.html:29
#: templates/stats.html:80 templates/stats.html:89 users/models.py:41
msgid "Parts"
msgstr ""
@@ -3511,7 +3584,7 @@ msgid "Order Code"
msgstr ""
#: order/templates/order/receive_parts.html:21
-#: part/templates/part/part_base.html:160 templates/js/translated/part.js:802
+#: part/templates/part/part_base.html:167 templates/js/translated/part.js:949
msgid "On Order"
msgstr ""
@@ -3540,7 +3613,7 @@ msgid "Sales Order Details"
msgstr ""
#: order/templates/order/sales_order_base.html:100
-#: templates/js/translated/order.js:364
+#: templates/js/translated/order.js:705
msgid "Customer Reference"
msgstr ""
@@ -3563,71 +3636,102 @@ msgstr ""
msgid "Sales Order Items"
msgstr ""
-#: order/templates/order/sales_order_detail.html:225
-#: templates/js/translated/bom.js:378 templates/js/translated/build.js:759
-#: templates/js/translated/build.js:1202
+#: order/templates/order/sales_order_detail.html:226
+#: templates/js/translated/bom.js:394 templates/js/translated/build.js:782
+#: templates/js/translated/build.js:1219
msgid "Actions"
msgstr ""
-#: order/templates/order/sales_order_detail.html:232
-#: templates/js/translated/build.js:645 templates/js/translated/build.js:1011
+#: order/templates/order/sales_order_detail.html:233
+#: templates/js/translated/build.js:668 templates/js/translated/build.js:1030
msgid "Edit stock allocation"
msgstr ""
-#: order/templates/order/sales_order_detail.html:233
-#: templates/js/translated/build.js:647 templates/js/translated/build.js:1012
+#: order/templates/order/sales_order_detail.html:234
+#: templates/js/translated/build.js:670 templates/js/translated/build.js:1031
msgid "Delete stock allocation"
msgstr ""
-#: order/templates/order/sales_order_detail.html:306
+#: order/templates/order/sales_order_detail.html:307
msgid "No matching line items"
msgstr ""
-#: order/templates/order/sales_order_detail.html:336
+#: order/templates/order/sales_order_detail.html:337
msgid "ID"
msgstr ""
-#: order/templates/order/sales_order_detail.html:404
-#: templates/js/translated/build.js:710 templates/js/translated/build.js:1007
+#: order/templates/order/sales_order_detail.html:354
+#: templates/js/translated/order.js:481
+msgid "Total"
+msgstr ""
+
+#: order/templates/order/sales_order_detail.html:377
+#: templates/js/translated/order.js:534 templates/js/translated/part.js:1296
+#: templates/js/translated/part.js:1507
+msgid "Unit Price"
+msgstr ""
+
+#: order/templates/order/sales_order_detail.html:384
+#: templates/js/translated/order.js:543
+msgid "Total price"
+msgstr ""
+
+#: order/templates/order/sales_order_detail.html:405
+#: templates/js/translated/build.js:733 templates/js/translated/build.js:1026
msgid "Allocated"
msgstr ""
-#: order/templates/order/sales_order_detail.html:406
+#: order/templates/order/sales_order_detail.html:407
msgid "Fulfilled"
msgstr ""
-#: order/templates/order/sales_order_detail.html:443
+#: order/templates/order/sales_order_detail.html:444
msgid "PO"
msgstr ""
-#: order/templates/order/sales_order_detail.html:473
+#: order/templates/order/sales_order_detail.html:474
msgid "Allocate serial numbers"
msgstr ""
-#: order/templates/order/sales_order_detail.html:476
-#: templates/js/translated/build.js:773
+#: order/templates/order/sales_order_detail.html:477
+#: templates/js/translated/build.js:796
msgid "Allocate stock"
msgstr ""
-#: order/templates/order/sales_order_detail.html:479
+#: order/templates/order/sales_order_detail.html:480
msgid "Purchase stock"
msgstr ""
-#: order/templates/order/sales_order_detail.html:483
-#: templates/js/translated/build.js:766 templates/js/translated/build.js:1210
+#: order/templates/order/sales_order_detail.html:484
+#: templates/js/translated/build.js:789 templates/js/translated/build.js:1227
msgid "Build stock"
msgstr ""
-#: order/templates/order/sales_order_detail.html:486
-#: order/templates/order/sales_order_detail.html:605
+#: order/templates/order/sales_order_detail.html:487
+#: order/templates/order/sales_order_detail.html:606
msgid "Calculate price"
msgstr ""
#: order/templates/order/sales_order_detail.html:490
+#: templates/js/translated/order.js:616
+msgid "Edit line item"
+msgstr ""
+
+#: order/templates/order/sales_order_detail.html:491
msgid "Delete line item "
msgstr ""
-#: order/templates/order/sales_order_detail.html:611
+#: order/templates/order/sales_order_detail.html:519
+#: templates/js/translated/order.js:403
+msgid "Edit Line Item"
+msgstr ""
+
+#: order/templates/order/sales_order_detail.html:529
+#: templates/js/translated/order.js:415
+msgid "Delete Line Item"
+msgstr ""
+
+#: order/templates/order/sales_order_detail.html:612
msgid "Update Unit Price"
msgstr ""
@@ -3814,12 +3918,28 @@ msgstr ""
msgid "Updated {part} unit-price to {price} and quantity to {qty}"
msgstr ""
-#: part/bom.py:133 part/models.py:73 part/models.py:731
-#: part/templates/part/category.html:75 part/templates/part/part_base.html:282
+#: part/api.py:700
+msgid "Must be greater than zero"
+msgstr ""
+
+#: part/api.py:704
+msgid "Must be a valid quantity"
+msgstr ""
+
+#: part/api.py:719
+msgid "Specify location for initial part stock"
+msgstr ""
+
+#: part/api.py:750 part/api.py:754 part/api.py:769 part/api.py:773
+msgid "This field is required"
+msgstr ""
+
+#: part/bom.py:133 part/models.py:75 part/models.py:733
+#: part/templates/part/category.html:75 part/templates/part/part_base.html:290
msgid "Default Location"
msgstr ""
-#: part/bom.py:134 part/templates/part/part_base.html:149
+#: part/bom.py:134 part/templates/part/part_base.html:156
msgid "Available Stock"
msgstr ""
@@ -3879,7 +3999,7 @@ msgstr ""
msgid "Include part supplier data in exported BOM"
msgstr ""
-#: part/forms.py:96 part/models.py:2234
+#: part/forms.py:96 part/models.py:2250
msgid "Parent Part"
msgstr ""
@@ -3923,391 +4043,391 @@ msgstr ""
msgid "Input quantity for price calculation"
msgstr ""
-#: part/models.py:74
+#: part/models.py:76
msgid "Default location for parts in this category"
msgstr ""
-#: part/models.py:77
+#: part/models.py:79
msgid "Default keywords"
msgstr ""
-#: part/models.py:77
+#: part/models.py:79
msgid "Default keywords for parts in this category"
msgstr ""
-#: part/models.py:87 part/models.py:2280
+#: part/models.py:89 part/models.py:2296
#: part/templates/part/part_app_base.html:10
msgid "Part Category"
msgstr ""
-#: part/models.py:88 part/templates/part/category.html:32
+#: part/models.py:90 part/templates/part/category.html:32
#: part/templates/part/category.html:103 templates/InvenTree/search.html:127
#: templates/stats.html:84 users/models.py:40
msgid "Part Categories"
msgstr ""
-#: part/models.py:381
+#: part/models.py:383
msgid "Invalid choice for parent part"
msgstr ""
-#: part/models.py:433 part/models.py:445
+#: part/models.py:435 part/models.py:447
#, python-brace-format
msgid "Part '{p1}' is used in BOM for '{p2}' (recursive)"
msgstr ""
-#: part/models.py:542
+#: part/models.py:544
msgid "Next available serial numbers are"
msgstr ""
-#: part/models.py:546
+#: part/models.py:548
msgid "Next available serial number is"
msgstr ""
-#: part/models.py:551
+#: part/models.py:553
msgid "Most recent serial number is"
msgstr ""
-#: part/models.py:630
+#: part/models.py:632
msgid "Duplicate IPN not allowed in part settings"
msgstr ""
-#: part/models.py:655
+#: part/models.py:657
msgid "Part name"
msgstr ""
-#: part/models.py:662
+#: part/models.py:664
msgid "Is Template"
msgstr ""
-#: part/models.py:663
+#: part/models.py:665
msgid "Is this part a template part?"
msgstr ""
-#: part/models.py:673
+#: part/models.py:675
msgid "Is this part a variant of another part?"
msgstr ""
-#: part/models.py:674
+#: part/models.py:676
msgid "Variant Of"
msgstr ""
-#: part/models.py:680
+#: part/models.py:682
msgid "Part description"
msgstr ""
-#: part/models.py:685 part/templates/part/category.html:82
-#: part/templates/part/part_base.html:251
+#: part/models.py:687 part/templates/part/category.html:82
+#: part/templates/part/part_base.html:259
msgid "Keywords"
msgstr ""
-#: part/models.py:686
+#: part/models.py:688
msgid "Part keywords to improve visibility in search results"
msgstr ""
-#: part/models.py:693 part/models.py:2279
+#: part/models.py:695 part/models.py:2295
#: part/templates/part/set_category.html:15
#: templates/InvenTree/settings/settings.html:167
-#: templates/js/translated/part.js:773
+#: templates/js/translated/part.js:916
msgid "Category"
msgstr ""
-#: part/models.py:694
+#: part/models.py:696
msgid "Part category"
msgstr ""
-#: part/models.py:699 part/templates/part/part_base.html:227
-#: templates/js/translated/part.js:389 templates/js/translated/part.js:617
+#: part/models.py:701 part/templates/part/part_base.html:235
+#: templates/js/translated/part.js:517 templates/js/translated/part.js:749
msgid "IPN"
msgstr ""
-#: part/models.py:700
+#: part/models.py:702
msgid "Internal Part Number"
msgstr ""
-#: part/models.py:706
+#: part/models.py:708
msgid "Part revision or version number"
msgstr ""
-#: part/models.py:707 part/templates/part/part_base.html:244
-#: report/models.py:200 templates/js/translated/part.js:393
+#: part/models.py:709 part/templates/part/part_base.html:252
+#: report/models.py:200 templates/js/translated/part.js:521
msgid "Revision"
msgstr ""
-#: part/models.py:729
+#: part/models.py:731
msgid "Where is this item normally stored?"
msgstr ""
-#: part/models.py:776 part/templates/part/part_base.html:289
+#: part/models.py:778 part/templates/part/part_base.html:297
msgid "Default Supplier"
msgstr ""
-#: part/models.py:777
+#: part/models.py:779
msgid "Default supplier part"
msgstr ""
-#: part/models.py:784
+#: part/models.py:786
msgid "Default Expiry"
msgstr ""
-#: part/models.py:785
+#: part/models.py:787
msgid "Expiry time (in days) for stock items of this part"
msgstr ""
-#: part/models.py:790
+#: part/models.py:792
msgid "Minimum Stock"
msgstr ""
-#: part/models.py:791
+#: part/models.py:793
msgid "Minimum allowed stock level"
msgstr ""
-#: part/models.py:798
+#: part/models.py:800
msgid "Stock keeping units for this part"
msgstr ""
-#: part/models.py:804
+#: part/models.py:806
msgid "Can this part be built from other parts?"
msgstr ""
-#: part/models.py:810
+#: part/models.py:812
msgid "Can this part be used to build other parts?"
msgstr ""
-#: part/models.py:816
+#: part/models.py:818
msgid "Does this part have tracking for unique items?"
msgstr ""
-#: part/models.py:821
+#: part/models.py:823
msgid "Can this part be purchased from external suppliers?"
msgstr ""
-#: part/models.py:826
+#: part/models.py:828
msgid "Can this part be sold to customers?"
msgstr ""
-#: part/models.py:830 templates/js/translated/table_filters.js:21
-#: templates/js/translated/table_filters.js:69
-#: templates/js/translated/table_filters.js:255
-#: templates/js/translated/table_filters.js:324
+#: part/models.py:832 templates/js/translated/table_filters.js:34
+#: templates/js/translated/table_filters.js:82
+#: templates/js/translated/table_filters.js:268
+#: templates/js/translated/table_filters.js:337
msgid "Active"
msgstr ""
-#: part/models.py:831
+#: part/models.py:833
msgid "Is this part active?"
msgstr ""
-#: part/models.py:836
+#: part/models.py:838
msgid "Is this a virtual part, such as a software product or license?"
msgstr ""
-#: part/models.py:841
+#: part/models.py:843
msgid "Part notes - supports Markdown formatting"
msgstr ""
-#: part/models.py:844
+#: part/models.py:846
msgid "BOM checksum"
msgstr ""
-#: part/models.py:844
+#: part/models.py:846
msgid "Stored BOM checksum"
msgstr ""
-#: part/models.py:847
+#: part/models.py:849
msgid "BOM checked by"
msgstr ""
-#: part/models.py:849
+#: part/models.py:851
msgid "BOM checked date"
msgstr ""
-#: part/models.py:853
+#: part/models.py:855
msgid "Creation User"
msgstr ""
-#: part/models.py:1592
+#: part/models.py:1601
msgid "Sell multiple"
msgstr ""
-#: part/models.py:2080
+#: part/models.py:2096
msgid "Test templates can only be created for trackable parts"
msgstr ""
-#: part/models.py:2097
+#: part/models.py:2113
msgid "Test with this name already exists for this part"
msgstr ""
-#: part/models.py:2117 templates/js/translated/part.js:1038
-#: templates/js/translated/stock.js:485
+#: part/models.py:2133 templates/js/translated/part.js:1205
+#: templates/js/translated/stock.js:556
msgid "Test Name"
msgstr ""
-#: part/models.py:2118
+#: part/models.py:2134
msgid "Enter a name for the test"
msgstr ""
-#: part/models.py:2123
+#: part/models.py:2139
msgid "Test Description"
msgstr ""
-#: part/models.py:2124
+#: part/models.py:2140
msgid "Enter description for this test"
msgstr ""
-#: part/models.py:2129 templates/js/translated/part.js:1047
-#: templates/js/translated/table_filters.js:241
+#: part/models.py:2145 templates/js/translated/part.js:1214
+#: templates/js/translated/table_filters.js:254
msgid "Required"
msgstr ""
-#: part/models.py:2130
+#: part/models.py:2146
msgid "Is this test required to pass?"
msgstr ""
-#: part/models.py:2135 templates/js/translated/part.js:1055
+#: part/models.py:2151 templates/js/translated/part.js:1222
msgid "Requires Value"
msgstr ""
-#: part/models.py:2136
+#: part/models.py:2152
msgid "Does this test require a value when adding a test result?"
msgstr ""
-#: part/models.py:2141 templates/js/translated/part.js:1062
+#: part/models.py:2157 templates/js/translated/part.js:1229
msgid "Requires Attachment"
msgstr ""
-#: part/models.py:2142
+#: part/models.py:2158
msgid "Does this test require a file attachment when adding a test result?"
msgstr ""
-#: part/models.py:2153
+#: part/models.py:2169
#, python-brace-format
msgid "Illegal character in template name ({c})"
msgstr ""
-#: part/models.py:2189
+#: part/models.py:2205
msgid "Parameter template name must be unique"
msgstr ""
-#: part/models.py:2197
+#: part/models.py:2213
msgid "Parameter Name"
msgstr ""
-#: part/models.py:2204
+#: part/models.py:2220
msgid "Parameter Units"
msgstr ""
-#: part/models.py:2236 part/models.py:2285 part/models.py:2286
+#: part/models.py:2252 part/models.py:2301 part/models.py:2302
#: templates/InvenTree/settings/settings.html:162
msgid "Parameter Template"
msgstr ""
-#: part/models.py:2238
+#: part/models.py:2254
msgid "Data"
msgstr ""
-#: part/models.py:2238
+#: part/models.py:2254
msgid "Parameter Value"
msgstr ""
-#: part/models.py:2290 templates/InvenTree/settings/settings.html:171
+#: part/models.py:2306 templates/InvenTree/settings/settings.html:171
msgid "Default Value"
msgstr ""
-#: part/models.py:2291
+#: part/models.py:2307
msgid "Default Parameter Value"
msgstr ""
-#: part/models.py:2325
+#: part/models.py:2341
msgid "Select parent part"
msgstr ""
-#: part/models.py:2333
+#: part/models.py:2349
msgid "Sub part"
msgstr ""
-#: part/models.py:2334
+#: part/models.py:2350
msgid "Select part to be used in BOM"
msgstr ""
-#: part/models.py:2340
+#: part/models.py:2356
msgid "BOM quantity for this BOM item"
msgstr ""
-#: part/models.py:2342 templates/js/translated/bom.js:236
-#: templates/js/translated/bom.js:298
+#: part/models.py:2358 templates/js/translated/bom.js:256
+#: templates/js/translated/bom.js:314
msgid "Optional"
msgstr ""
-#: part/models.py:2342
+#: part/models.py:2358
msgid "This BOM item is optional"
msgstr ""
-#: part/models.py:2345
+#: part/models.py:2361
msgid "Overage"
msgstr ""
-#: part/models.py:2346
+#: part/models.py:2362
msgid "Estimated build wastage quantity (absolute or percentage)"
msgstr ""
-#: part/models.py:2349
+#: part/models.py:2365
msgid "BOM item reference"
msgstr ""
-#: part/models.py:2352
+#: part/models.py:2368
msgid "BOM item notes"
msgstr ""
-#: part/models.py:2354
+#: part/models.py:2370
msgid "Checksum"
msgstr ""
-#: part/models.py:2354
+#: part/models.py:2370
msgid "BOM line checksum"
msgstr ""
-#: part/models.py:2358 templates/js/translated/bom.js:315
-#: templates/js/translated/bom.js:322
-#: templates/js/translated/table_filters.js:55
+#: part/models.py:2374 templates/js/translated/bom.js:331
+#: templates/js/translated/bom.js:338
+#: templates/js/translated/table_filters.js:68
msgid "Inherited"
msgstr ""
-#: part/models.py:2359
+#: part/models.py:2375
msgid "This BOM item is inherited by BOMs for variant parts"
msgstr ""
-#: part/models.py:2364 templates/js/translated/bom.js:307
+#: part/models.py:2380 templates/js/translated/bom.js:323
msgid "Allow Variants"
msgstr ""
-#: part/models.py:2365
+#: part/models.py:2381
msgid "Stock items for variant parts can be used for this BOM item"
msgstr ""
-#: part/models.py:2450 stock/models.py:335
+#: part/models.py:2466 stock/models.py:341
msgid "Quantity must be integer value for trackable parts"
msgstr ""
-#: part/models.py:2459 part/models.py:2461
+#: part/models.py:2475 part/models.py:2477
msgid "Sub part must be specified"
msgstr ""
-#: part/models.py:2464
+#: part/models.py:2480
msgid "BOM Item"
msgstr ""
-#: part/models.py:2583
+#: part/models.py:2599
msgid "Part 1"
msgstr ""
-#: part/models.py:2587
+#: part/models.py:2603
msgid "Part 2"
msgstr ""
-#: part/models.py:2587
+#: part/models.py:2603
msgid "Select Related Part"
msgstr ""
-#: part/models.py:2619
+#: part/models.py:2635
msgid "Error creating relationship: check that the part is not related to itself and that the relationship is unique"
msgstr ""
@@ -4317,17 +4437,17 @@ msgstr ""
#: part/templates/part/bom.html:14
#, python-format
-msgid "The BOM for %(part)s has changed, and must be validated.
"
+msgid "The BOM for %(part)s has changed, and must be validated.
"
msgstr ""
#: part/templates/part/bom.html:16
#, python-format
-msgid "The BOM for %(part)s was last checked by %(checker)s on %(check_date)s"
+msgid "The BOM for %(part)s was last checked by %(checker)s on %(check_date)s"
msgstr ""
#: part/templates/part/bom.html:20
#, python-format
-msgid "The BOM for %(part)s has not been validated."
+msgid "The BOM for %(part)s has not been validated."
msgstr ""
#: part/templates/part/bom.html:27
@@ -4374,33 +4494,34 @@ msgstr ""
msgid "Select Part"
msgstr ""
-#: part/templates/part/bom_upload/upload_file.html:7
-msgid "Upload BOM File"
+#: part/templates/part/bom_upload/upload_file.html:13
+#: part/templates/part/bom_upload/upload_file.html:16
+msgid "Return To BOM"
msgstr ""
-#: part/templates/part/bom_upload/upload_file.html:12
+#: part/templates/part/bom_upload/upload_file.html:27
msgid "Upload Bill of Materials"
msgstr ""
-#: part/templates/part/bom_upload/upload_file.html:16
+#: part/templates/part/bom_upload/upload_file.html:46
msgid "Requirements for BOM upload"
msgstr ""
-#: part/templates/part/bom_upload/upload_file.html:18
+#: part/templates/part/bom_upload/upload_file.html:48
msgid "The BOM file must contain the required named columns as provided in the "
msgstr ""
-#: part/templates/part/bom_upload/upload_file.html:18
+#: part/templates/part/bom_upload/upload_file.html:48
msgid "BOM Upload Template"
msgstr ""
-#: part/templates/part/bom_upload/upload_file.html:19
+#: part/templates/part/bom_upload/upload_file.html:49
msgid "Each part must already exist in the database"
msgstr ""
#: part/templates/part/bom_validate.html:6
#, python-format
-msgid "Confirm that the Bill of Materials (BOM) is valid for:
%(part)s"
+msgid "Confirm that the Bill of Materials (BOM) is valid for:
%(part)s"
msgstr ""
#: part/templates/part/bom_validate.html:9
@@ -4435,7 +4556,7 @@ msgstr ""
msgid "Category Description"
msgstr ""
-#: part/templates/part/category.html:88 part/templates/part/category.html:174
+#: part/templates/part/category.html:88 part/templates/part/category.html:175
#: part/templates/part/category_navbar.html:14
#: part/templates/part/category_navbar.html:17
msgid "Subcategories"
@@ -4449,7 +4570,7 @@ msgstr ""
msgid "Export Part Data"
msgstr ""
-#: part/templates/part/category.html:127 part/templates/part/category.html:141
+#: part/templates/part/category.html:127 part/templates/part/category.html:142
msgid "Export"
msgstr ""
@@ -4470,26 +4591,30 @@ msgid "Set Category"
msgstr ""
#: part/templates/part/category.html:141
+msgid "Print Labels"
+msgstr ""
+
+#: part/templates/part/category.html:142
msgid "Export Data"
msgstr ""
-#: part/templates/part/category.html:145
+#: part/templates/part/category.html:146
msgid "View list display"
msgstr ""
-#: part/templates/part/category.html:148
+#: part/templates/part/category.html:149
msgid "View grid display"
msgstr ""
-#: part/templates/part/category.html:164
+#: part/templates/part/category.html:165
msgid "Part Parameters"
msgstr ""
-#: part/templates/part/category.html:253
+#: part/templates/part/category.html:254
msgid "Create Part Category"
msgstr ""
-#: part/templates/part/category.html:279
+#: part/templates/part/category.html:281
msgid "Create Part"
msgstr ""
@@ -4533,7 +4658,7 @@ msgstr ""
msgid "Import Parts"
msgstr ""
-#: part/templates/part/copy_part.html:9 templates/js/translated/part.js:224
+#: part/templates/part/copy_part.html:9 templates/js/translated/part.js:352
msgid "Duplicate Part"
msgstr ""
@@ -4554,7 +4679,7 @@ msgstr ""
#: part/templates/part/create_part.html:17
#, python-format
-msgid "%(full_name)s - %(desc)s (%(match_per)s%% match)"
+msgid "%(full_name)s - %(desc)s (%(match_per)s%% match)"
msgstr ""
#: part/templates/part/detail.html:16
@@ -4563,10 +4688,10 @@ msgstr ""
#: part/templates/part/detail.html:21
#, python-format
-msgid "Showing stock for all variants of %(full_name)s"
+msgid "Showing stock for all variants of %(full_name)s"
msgstr ""
-#: part/templates/part/detail.html:30 part/templates/part/navbar.html:87
+#: part/templates/part/detail.html:30 part/templates/part/navbar.html:99
msgid "Part Test Templates"
msgstr ""
@@ -4586,7 +4711,7 @@ msgstr ""
msgid "Sales Order Allocations"
msgstr ""
-#: part/templates/part/detail.html:130 part/templates/part/navbar.html:21
+#: part/templates/part/detail.html:130 part/templates/part/navbar.html:27
msgid "Part Variants"
msgstr ""
@@ -4602,8 +4727,8 @@ msgstr ""
msgid "Add new parameter"
msgstr ""
-#: part/templates/part/detail.html:182 part/templates/part/navbar.html:95
-#: part/templates/part/navbar.html:98
+#: part/templates/part/detail.html:182 part/templates/part/navbar.html:107
+#: part/templates/part/navbar.html:110
msgid "Related Parts"
msgstr ""
@@ -4611,8 +4736,8 @@ msgstr ""
msgid "Add Related"
msgstr ""
-#: part/templates/part/detail.html:228 part/templates/part/navbar.html:35
-#: part/templates/part/navbar.html:38
+#: part/templates/part/detail.html:228 part/templates/part/navbar.html:43
+#: part/templates/part/navbar.html:46
msgid "Bill of Materials"
msgstr ""
@@ -4644,50 +4769,50 @@ msgstr ""
msgid "Delete manufacturer parts"
msgstr ""
-#: part/templates/part/detail.html:402
+#: part/templates/part/detail.html:502
msgid "Delete selected BOM items?"
msgstr ""
-#: part/templates/part/detail.html:403
+#: part/templates/part/detail.html:503
msgid "All selected BOM items will be deleted"
msgstr ""
-#: part/templates/part/detail.html:454
+#: part/templates/part/detail.html:554
msgid "Create BOM Item"
msgstr ""
-#: part/templates/part/detail.html:589
+#: part/templates/part/detail.html:699
msgid "Add Test Result Template"
msgstr ""
-#: part/templates/part/detail.html:607
+#: part/templates/part/detail.html:716
msgid "Edit Test Result Template"
msgstr ""
-#: part/templates/part/detail.html:619
+#: part/templates/part/detail.html:728
msgid "Delete Test Result Template"
msgstr ""
-#: part/templates/part/detail.html:670
+#: part/templates/part/detail.html:784
msgid "Edit Part Notes"
msgstr ""
-#: part/templates/part/detail.html:903
+#: part/templates/part/detail.html:936
#, python-format
msgid "Purchase Unit Price - %(currency)s"
msgstr ""
-#: part/templates/part/detail.html:915
+#: part/templates/part/detail.html:948
#, python-format
msgid "Unit Price-Cost Difference - %(currency)s"
msgstr ""
-#: part/templates/part/detail.html:927
+#: part/templates/part/detail.html:960
#, python-format
msgid "Supplier Unit Cost - %(currency)s"
msgstr ""
-#: part/templates/part/detail.html:1016
+#: part/templates/part/detail.html:1049
#, python-format
msgid "Unit Price - %(currency)s"
msgstr ""
@@ -4701,19 +4826,19 @@ msgstr ""
msgid "Import Parts from File"
msgstr ""
-#: part/templates/part/navbar.html:24
+#: part/templates/part/navbar.html:30
msgid "Variants"
msgstr ""
-#: part/templates/part/navbar.html:51 part/templates/part/navbar.html:54
+#: part/templates/part/navbar.html:59 part/templates/part/navbar.html:62
msgid "Used In"
msgstr ""
-#: part/templates/part/navbar.html:61
+#: part/templates/part/navbar.html:70
msgid "Prices"
msgstr ""
-#: part/templates/part/navbar.html:90
+#: part/templates/part/navbar.html:102
msgid "Test Templates"
msgstr ""
@@ -4721,195 +4846,204 @@ msgstr ""
msgid "Part List"
msgstr ""
-#: part/templates/part/part_base.html:30
+#: part/templates/part/part_base.html:35
msgid "Part is a template part (variants can be made from this part)"
msgstr ""
-#: part/templates/part/part_base.html:33
+#: part/templates/part/part_base.html:38
msgid "Part can be assembled from other parts"
msgstr ""
-#: part/templates/part/part_base.html:36
+#: part/templates/part/part_base.html:41
msgid "Part can be used in assemblies"
msgstr ""
-#: part/templates/part/part_base.html:39
+#: part/templates/part/part_base.html:44
msgid "Part stock is tracked by serial number"
msgstr ""
-#: part/templates/part/part_base.html:42
+#: part/templates/part/part_base.html:47
msgid "Part can be purchased from external suppliers"
msgstr ""
-#: part/templates/part/part_base.html:45
+#: part/templates/part/part_base.html:50
msgid "Part can be sold to customers"
msgstr ""
-#: part/templates/part/part_base.html:52 part/templates/part/part_base.html:60
+#: part/templates/part/part_base.html:57 part/templates/part/part_base.html:65
msgid "Part is virtual (not a physical part)"
msgstr ""
-#: part/templates/part/part_base.html:53 templates/js/translated/company.js:454
-#: templates/js/translated/company.js:704 templates/js/translated/part.js:304
-#: templates/js/translated/part.js:381
+#: part/templates/part/part_base.html:58 templates/js/translated/company.js:503
+#: templates/js/translated/company.js:759 templates/js/translated/part.js:432
+#: templates/js/translated/part.js:509
msgid "Inactive"
msgstr ""
-#: part/templates/part/part_base.html:68
+#: part/templates/part/part_base.html:73
msgid "Star this part"
msgstr ""
-#: part/templates/part/part_base.html:75
+#: part/templates/part/part_base.html:80
#: stock/templates/stock/item_base.html:75
#: stock/templates/stock/location.html:51
msgid "Barcode actions"
msgstr ""
-#: part/templates/part/part_base.html:77
+#: part/templates/part/part_base.html:82
#: stock/templates/stock/item_base.html:77
#: stock/templates/stock/location.html:53 templates/qr_button.html:1
msgid "Show QR Code"
msgstr ""
-#: part/templates/part/part_base.html:78
+#: part/templates/part/part_base.html:83
#: stock/templates/stock/item_base.html:93
#: stock/templates/stock/location.html:54
msgid "Print Label"
msgstr ""
-#: part/templates/part/part_base.html:83
+#: part/templates/part/part_base.html:89
msgid "Show pricing information"
msgstr ""
-#: part/templates/part/part_base.html:88
+#: part/templates/part/part_base.html:95
#: stock/templates/stock/item_base.html:142
#: stock/templates/stock/location.html:62
msgid "Stock actions"
msgstr ""
-#: part/templates/part/part_base.html:95
+#: part/templates/part/part_base.html:102
msgid "Count part stock"
msgstr ""
-#: part/templates/part/part_base.html:101
+#: part/templates/part/part_base.html:108
msgid "Transfer part stock"
msgstr ""
-#: part/templates/part/part_base.html:118
+#: part/templates/part/part_base.html:125
msgid "Part actions"
msgstr ""
-#: part/templates/part/part_base.html:121
+#: part/templates/part/part_base.html:128
msgid "Duplicate part"
msgstr ""
-#: part/templates/part/part_base.html:124
+#: part/templates/part/part_base.html:131
msgid "Edit part"
msgstr ""
-#: part/templates/part/part_base.html:127
+#: part/templates/part/part_base.html:134
msgid "Delete part"
msgstr ""
-#: part/templates/part/part_base.html:139
+#: part/templates/part/part_base.html:146
#, python-format
msgid "This part is a variant of %(link)s"
msgstr ""
-#: part/templates/part/part_base.html:154
-#: templates/js/translated/table_filters.js:153
+#: part/templates/part/part_base.html:161
+#: templates/js/translated/table_filters.js:166
msgid "In Stock"
msgstr ""
-#: part/templates/part/part_base.html:167 templates/InvenTree/index.html:186
+#: part/templates/part/part_base.html:174 templates/InvenTree/index.html:186
msgid "Required for Build Orders"
msgstr ""
-#: part/templates/part/part_base.html:174
+#: part/templates/part/part_base.html:181
msgid "Required for Sales Orders"
msgstr ""
-#: part/templates/part/part_base.html:181
+#: part/templates/part/part_base.html:188
msgid "Allocated to Orders"
msgstr ""
-#: part/templates/part/part_base.html:196 templates/js/translated/bom.js:336
+#: part/templates/part/part_base.html:203 templates/js/translated/bom.js:352
msgid "Can Build"
msgstr ""
-#: part/templates/part/part_base.html:202 templates/js/translated/part.js:633
-#: templates/js/translated/part.js:806
+#: part/templates/part/part_base.html:209 templates/js/translated/part.js:765
+#: templates/js/translated/part.js:953
msgid "Building"
msgstr ""
-#: part/templates/part/part_base.html:275
+#: part/templates/part/part_base.html:223
+#: part/templates/part/part_base.html:524
+#: part/templates/part/part_base.html:550
+msgid "Show Part Details"
+msgstr ""
+
+#: part/templates/part/part_base.html:283
msgid "Latest Serial Number"
msgstr ""
-#: part/templates/part/part_base.html:383 part/templates/part/prices.html:125
+#: part/templates/part/part_base.html:396 part/templates/part/prices.html:144
msgid "Calculate"
msgstr ""
-#: part/templates/part/part_base.html:426
+#: part/templates/part/part_base.html:439
msgid "No matching images found"
msgstr ""
-#: part/templates/part/part_base.html:506
-#: part/templates/part/part_base.html:531
+#: part/templates/part/part_base.html:519
+#: part/templates/part/part_base.html:544
msgid "Hide Part Details"
msgstr ""
-#: part/templates/part/part_base.html:511
-#: part/templates/part/part_base.html:537
-msgid "Show Part Details"
-msgstr ""
-
#: part/templates/part/part_pricing.html:22 part/templates/part/prices.html:21
msgid "Supplier Pricing"
msgstr ""
#: part/templates/part/part_pricing.html:26
#: part/templates/part/part_pricing.html:52
-#: part/templates/part/part_pricing.html:85
-#: part/templates/part/part_pricing.html:100 part/templates/part/prices.html:25
-#: part/templates/part/prices.html:52 part/templates/part/prices.html:84
-#: part/templates/part/prices.html:101
+#: part/templates/part/part_pricing.html:100
+#: part/templates/part/part_pricing.html:115 part/templates/part/prices.html:25
+#: part/templates/part/prices.html:52 part/templates/part/prices.html:103
+#: part/templates/part/prices.html:120
msgid "Unit Cost"
msgstr ""
#: part/templates/part/part_pricing.html:32
#: part/templates/part/part_pricing.html:58
-#: part/templates/part/part_pricing.html:89
-#: part/templates/part/part_pricing.html:104 part/templates/part/prices.html:32
-#: part/templates/part/prices.html:59 part/templates/part/prices.html:89
-#: part/templates/part/prices.html:106
+#: part/templates/part/part_pricing.html:104
+#: part/templates/part/part_pricing.html:119 part/templates/part/prices.html:32
+#: part/templates/part/prices.html:59 part/templates/part/prices.html:108
+#: part/templates/part/prices.html:125
msgid "Total Cost"
msgstr ""
#: part/templates/part/part_pricing.html:40 part/templates/part/prices.html:40
-#: templates/js/translated/bom.js:291
+#: templates/js/translated/bom.js:307
msgid "No supplier pricing available"
msgstr ""
#: part/templates/part/part_pricing.html:48 part/templates/part/prices.html:49
-#: part/templates/part/prices.html:225
+#: part/templates/part/prices.html:243
msgid "BOM Pricing"
msgstr ""
-#: part/templates/part/part_pricing.html:66 part/templates/part/prices.html:67
+#: part/templates/part/part_pricing.html:65 part/templates/part/prices.html:69
+msgid "Unit Purchase Price"
+msgstr ""
+
+#: part/templates/part/part_pricing.html:71 part/templates/part/prices.html:76
+msgid "Total Purchase Price"
+msgstr ""
+
+#: part/templates/part/part_pricing.html:81 part/templates/part/prices.html:86
msgid "Note: BOM pricing is incomplete for this part"
msgstr ""
-#: part/templates/part/part_pricing.html:73 part/templates/part/prices.html:74
+#: part/templates/part/part_pricing.html:88 part/templates/part/prices.html:93
msgid "No BOM pricing available"
msgstr ""
-#: part/templates/part/part_pricing.html:82 part/templates/part/prices.html:83
+#: part/templates/part/part_pricing.html:97 part/templates/part/prices.html:102
msgid "Internal Price"
msgstr ""
-#: part/templates/part/part_pricing.html:113
-#: part/templates/part/prices.html:115
+#: part/templates/part/part_pricing.html:128
+#: part/templates/part/prices.html:134
msgid "No pricing information is available for this part."
msgstr ""
@@ -4919,7 +5053,7 @@ msgstr ""
#: part/templates/part/partial_delete.html:7
#, python-format
-msgid "Are you sure you want to delete part '%(full_name)s'?"
+msgid "Are you sure you want to delete part '%(full_name)s'?"
msgstr ""
#: part/templates/part/partial_delete.html:12
@@ -4963,53 +5097,53 @@ msgstr ""
msgid "Show BOM cost"
msgstr ""
-#: part/templates/part/prices.html:98
+#: part/templates/part/prices.html:117
msgid "Show sale cost"
msgstr ""
-#: part/templates/part/prices.html:99
+#: part/templates/part/prices.html:118
msgid "Show sale price"
msgstr ""
-#: part/templates/part/prices.html:121
+#: part/templates/part/prices.html:140
msgid "Calculation parameters"
msgstr ""
-#: part/templates/part/prices.html:136 templates/js/translated/bom.js:285
+#: part/templates/part/prices.html:155 templates/js/translated/bom.js:301
msgid "Supplier Cost"
msgstr ""
-#: part/templates/part/prices.html:137 part/templates/part/prices.html:158
-#: part/templates/part/prices.html:183 part/templates/part/prices.html:213
-#: part/templates/part/prices.html:239 part/templates/part/prices.html:267
+#: part/templates/part/prices.html:156 part/templates/part/prices.html:177
+#: part/templates/part/prices.html:201 part/templates/part/prices.html:231
+#: part/templates/part/prices.html:257 part/templates/part/prices.html:285
msgid "Jump to overview"
msgstr ""
-#: part/templates/part/prices.html:162
+#: part/templates/part/prices.html:181
msgid "Stock Pricing"
msgstr ""
-#: part/templates/part/prices.html:172
+#: part/templates/part/prices.html:190
msgid "No stock pricing history is available for this part."
msgstr ""
-#: part/templates/part/prices.html:182
+#: part/templates/part/prices.html:200
msgid "Internal Cost"
msgstr ""
-#: part/templates/part/prices.html:197 part/views.py:1793
+#: part/templates/part/prices.html:215 part/views.py:1801
msgid "Add Internal Price Break"
msgstr ""
-#: part/templates/part/prices.html:212
+#: part/templates/part/prices.html:230
msgid "BOM Cost"
msgstr ""
-#: part/templates/part/prices.html:238
+#: part/templates/part/prices.html:256
msgid "Sale Cost"
msgstr ""
-#: part/templates/part/prices.html:278
+#: part/templates/part/prices.html:296
msgid "No sale pice history available for this part."
msgstr ""
@@ -5017,8 +5151,8 @@ msgstr ""
msgid "Set category for the following parts"
msgstr ""
-#: part/templates/part/stock_count.html:7 templates/js/translated/bom.js:259
-#: templates/js/translated/part.js:623 templates/js/translated/part.js:810
+#: part/templates/part/stock_count.html:7 templates/js/translated/bom.js:278
+#: templates/js/translated/part.js:755 templates/js/translated/part.js:957
msgid "No Stock"
msgstr ""
@@ -5032,10 +5166,10 @@ msgstr ""
#: part/templates/part/variant_part.html:10
#, python-format
-msgid "Create a new variant of template '%(full_name)s'."
+msgid "Create a new variant of template '%(full_name)s'."
msgstr ""
-#: part/templatetags/inventree_extras.py:105
+#: part/templatetags/inventree_extras.py:106
msgid "Unknown database"
msgstr ""
@@ -5116,51 +5250,51 @@ msgstr ""
msgid "Part Pricing"
msgstr ""
-#: part/views.py:1429
+#: part/views.py:1437
msgid "Create Part Parameter Template"
msgstr ""
-#: part/views.py:1439
+#: part/views.py:1447
msgid "Edit Part Parameter Template"
msgstr ""
-#: part/views.py:1446
+#: part/views.py:1454
msgid "Delete Part Parameter Template"
msgstr ""
-#: part/views.py:1494 templates/js/translated/part.js:179
+#: part/views.py:1502 templates/js/translated/part.js:303
msgid "Edit Part Category"
msgstr ""
-#: part/views.py:1532
+#: part/views.py:1540
msgid "Delete Part Category"
msgstr ""
-#: part/views.py:1538
+#: part/views.py:1546
msgid "Part category was deleted"
msgstr ""
-#: part/views.py:1547
+#: part/views.py:1555
msgid "Create Category Parameter Template"
msgstr ""
-#: part/views.py:1648
+#: part/views.py:1656
msgid "Edit Category Parameter Template"
msgstr ""
-#: part/views.py:1704
+#: part/views.py:1712
msgid "Delete Category Parameter Template"
msgstr ""
-#: part/views.py:1726
+#: part/views.py:1734
msgid "Added new price break"
msgstr ""
-#: part/views.py:1802
+#: part/views.py:1810
msgid "Edit Internal Price Break"
msgstr ""
-#: part/views.py:1810
+#: part/views.py:1818
msgid "Delete Internal Price Break"
msgstr ""
@@ -5266,17 +5400,17 @@ msgid "Test Results"
msgstr ""
#: report/templates/report/inventree_test_report_base.html:88
-#: stock/models.py:1796
+#: stock/models.py:1807
msgid "Test"
msgstr ""
#: report/templates/report/inventree_test_report_base.html:89
-#: stock/models.py:1802
+#: stock/models.py:1813
msgid "Result"
msgstr ""
#: report/templates/report/inventree_test_report_base.html:92
-#: templates/js/translated/order.js:279 templates/js/translated/stock.js:1382
+#: templates/js/translated/order.js:353 templates/js/translated/stock.js:1523
msgid "Date"
msgstr ""
@@ -5288,51 +5422,51 @@ msgstr ""
msgid "Fail"
msgstr ""
-#: stock/api.py:145
+#: stock/api.py:146
msgid "Request must contain list of stock items"
msgstr ""
-#: stock/api.py:153
+#: stock/api.py:154
msgid "Improperly formatted data"
msgstr ""
-#: stock/api.py:161
+#: stock/api.py:162
msgid "Each entry must contain a valid integer primary-key"
msgstr ""
-#: stock/api.py:167
+#: stock/api.py:168
msgid "Primary key does not match valid stock item"
msgstr ""
-#: stock/api.py:177
+#: stock/api.py:178
msgid "Invalid quantity value"
msgstr ""
-#: stock/api.py:182
+#: stock/api.py:183
msgid "Quantity must not be less than zero"
msgstr ""
-#: stock/api.py:210
+#: stock/api.py:211
#, python-brace-format
msgid "Updated stock for {n} items"
msgstr ""
-#: stock/api.py:246 stock/api.py:279
+#: stock/api.py:247 stock/api.py:280
msgid "Specified quantity exceeds stock quantity"
msgstr ""
-#: stock/api.py:269
+#: stock/api.py:270
msgid "Valid location must be specified"
msgstr ""
-#: stock/api.py:289
+#: stock/api.py:290
#, python-brace-format
msgid "Moved {n} parts to {loc}"
msgstr ""
-#: stock/forms.py:79 stock/forms.py:307 stock/models.py:550
+#: stock/forms.py:79 stock/forms.py:307 stock/models.py:556
#: stock/templates/stock/item_base.html:395
-#: templates/js/translated/stock.js:1025
+#: templates/js/translated/stock.js:967
msgid "Expiry Date"
msgstr ""
@@ -5384,258 +5518,266 @@ msgstr ""
msgid "Confirm removal of installed stock items"
msgstr ""
-#: stock/models.py:57 stock/models.py:587
+#: stock/models.py:57 stock/models.py:593
msgid "Owner"
msgstr ""
-#: stock/models.py:58 stock/models.py:588
+#: stock/models.py:58 stock/models.py:594
msgid "Select Owner"
msgstr ""
-#: stock/models.py:316
+#: stock/models.py:322
msgid "StockItem with this serial number already exists"
msgstr ""
-#: stock/models.py:352
+#: stock/models.py:358
#, python-brace-format
msgid "Part type ('{pf}') must be {pe}"
msgstr ""
-#: stock/models.py:362 stock/models.py:371
+#: stock/models.py:368 stock/models.py:377
msgid "Quantity must be 1 for item with a serial number"
msgstr ""
-#: stock/models.py:363
+#: stock/models.py:369
msgid "Serial number cannot be set if quantity greater than 1"
msgstr ""
-#: stock/models.py:385
+#: stock/models.py:391
msgid "Item cannot belong to itself"
msgstr ""
-#: stock/models.py:391
+#: stock/models.py:397
msgid "Item must have a build reference if is_building=True"
msgstr ""
-#: stock/models.py:398
+#: stock/models.py:404
msgid "Build reference does not point to the same part object"
msgstr ""
-#: stock/models.py:440
+#: stock/models.py:446
msgid "Parent Stock Item"
msgstr ""
-#: stock/models.py:449
+#: stock/models.py:455
msgid "Base part"
msgstr ""
-#: stock/models.py:458
+#: stock/models.py:464
msgid "Select a matching supplier part for this stock item"
msgstr ""
-#: stock/models.py:463 stock/templates/stock/stock_app_base.html:8
+#: stock/models.py:469 stock/templates/stock/stock_app_base.html:8
msgid "Stock Location"
msgstr ""
-#: stock/models.py:466
+#: stock/models.py:472
msgid "Where is this stock item located?"
msgstr ""
-#: stock/models.py:473
+#: stock/models.py:479
msgid "Packaging this stock item is stored in"
msgstr ""
-#: stock/models.py:478 stock/templates/stock/item_base.html:284
+#: stock/models.py:484 stock/templates/stock/item_base.html:284
msgid "Installed In"
msgstr ""
-#: stock/models.py:481
+#: stock/models.py:487
msgid "Is this item installed in another item?"
msgstr ""
-#: stock/models.py:497
+#: stock/models.py:503
msgid "Serial number for this item"
msgstr ""
-#: stock/models.py:509
+#: stock/models.py:515
msgid "Batch code for this stock item"
msgstr ""
-#: stock/models.py:513
+#: stock/models.py:519
msgid "Stock Quantity"
msgstr ""
-#: stock/models.py:522
+#: stock/models.py:528
msgid "Source Build"
msgstr ""
-#: stock/models.py:524
+#: stock/models.py:530
msgid "Build for this stock item"
msgstr ""
-#: stock/models.py:535
+#: stock/models.py:541
msgid "Source Purchase Order"
msgstr ""
-#: stock/models.py:538
+#: stock/models.py:544
msgid "Purchase order for this stock item"
msgstr ""
-#: stock/models.py:544
+#: stock/models.py:550
msgid "Destination Sales Order"
msgstr ""
-#: stock/models.py:551
+#: stock/models.py:557
msgid "Expiry date for stock item. Stock will be considered expired after this date"
msgstr ""
-#: stock/models.py:564
+#: stock/models.py:570
msgid "Delete on deplete"
msgstr ""
-#: stock/models.py:564
+#: stock/models.py:570
msgid "Delete this Stock Item when stock is depleted"
msgstr ""
-#: stock/models.py:574 stock/templates/stock/item.html:98
+#: stock/models.py:580 stock/templates/stock/item.html:99
#: stock/templates/stock/navbar.html:54
msgid "Stock Item Notes"
msgstr ""
-#: stock/models.py:583
+#: stock/models.py:589
msgid "Single unit purchase price at time of purchase"
msgstr ""
-#: stock/models.py:1051
-msgid "Part is not set as trackable"
+#: stock/models.py:599
+msgid "Scheduled for deletion"
msgstr ""
-#: stock/models.py:1057
-msgid "Quantity must be integer"
+#: stock/models.py:600
+msgid "This StockItem will be deleted by the background worker"
msgstr ""
#: stock/models.py:1063
+msgid "Part is not set as trackable"
+msgstr ""
+
+#: stock/models.py:1069
+msgid "Quantity must be integer"
+msgstr ""
+
+#: stock/models.py:1075
#, python-brace-format
msgid "Quantity must not exceed available stock quantity ({n})"
msgstr ""
-#: stock/models.py:1066
+#: stock/models.py:1078
msgid "Serial numbers must be a list of integers"
msgstr ""
-#: stock/models.py:1069
+#: stock/models.py:1081
msgid "Quantity does not match serial numbers"
msgstr ""
-#: stock/models.py:1076
+#: stock/models.py:1088
#, python-brace-format
msgid "Serial numbers already exist: {exists}"
msgstr ""
-#: stock/models.py:1234
+#: stock/models.py:1246
msgid "StockItem cannot be moved as it is not in stock"
msgstr ""
-#: stock/models.py:1716
+#: stock/models.py:1727
msgid "Entry notes"
msgstr ""
-#: stock/models.py:1773
+#: stock/models.py:1784
msgid "Value must be provided for this test"
msgstr ""
-#: stock/models.py:1779
+#: stock/models.py:1790
msgid "Attachment must be uploaded for this test"
msgstr ""
-#: stock/models.py:1797
+#: stock/models.py:1808
msgid "Test name"
msgstr ""
-#: stock/models.py:1803 templates/js/translated/table_filters.js:231
+#: stock/models.py:1814 templates/js/translated/table_filters.js:244
msgid "Test result"
msgstr ""
-#: stock/models.py:1809
+#: stock/models.py:1820
msgid "Test output value"
msgstr ""
-#: stock/models.py:1816
+#: stock/models.py:1827
msgid "Test result attachment"
msgstr ""
-#: stock/models.py:1822
+#: stock/models.py:1833
msgid "Test notes"
msgstr ""
-#: stock/templates/stock/item.html:16
+#: stock/templates/stock/item.html:17
msgid "Stock Tracking Information"
msgstr ""
-#: stock/templates/stock/item.html:29
+#: stock/templates/stock/item.html:30
msgid "New Entry"
msgstr ""
-#: stock/templates/stock/item.html:42
+#: stock/templates/stock/item.html:43
msgid "Child Stock Items"
msgstr ""
-#: stock/templates/stock/item.html:49
+#: stock/templates/stock/item.html:50
msgid "This stock item does not have any child items"
msgstr ""
-#: stock/templates/stock/item.html:57 stock/templates/stock/navbar.html:19
+#: stock/templates/stock/item.html:58 stock/templates/stock/navbar.html:19
#: stock/templates/stock/navbar.html:22
msgid "Test Data"
msgstr ""
-#: stock/templates/stock/item.html:65
+#: stock/templates/stock/item.html:66
msgid "Delete Test Data"
msgstr ""
-#: stock/templates/stock/item.html:69
+#: stock/templates/stock/item.html:70
msgid "Add Test Data"
msgstr ""
-#: stock/templates/stock/item.html:72 stock/templates/stock/item_base.html:95
+#: stock/templates/stock/item.html:73 stock/templates/stock/item_base.html:95
msgid "Test Report"
msgstr ""
-#: stock/templates/stock/item.html:119 stock/templates/stock/navbar.html:27
+#: stock/templates/stock/item.html:120 stock/templates/stock/navbar.html:27
msgid "Installed Stock Items"
msgstr ""
-#: stock/templates/stock/item.html:124 stock/views.py:534
+#: stock/templates/stock/item.html:125 stock/views.py:534
msgid "Install Stock Item"
msgstr ""
-#: stock/templates/stock/item.html:299 stock/templates/stock/item.html:324
+#: stock/templates/stock/item.html:301 stock/templates/stock/item.html:326
msgid "Add Test Result"
msgstr ""
-#: stock/templates/stock/item.html:344
+#: stock/templates/stock/item.html:346
msgid "Edit Test Result"
msgstr ""
-#: stock/templates/stock/item.html:358
+#: stock/templates/stock/item.html:360
msgid "Delete Test Result"
msgstr ""
#: stock/templates/stock/item_base.html:33
#: stock/templates/stock/item_base.html:399
-#: templates/js/translated/table_filters.js:212
+#: templates/js/translated/table_filters.js:225
msgid "Expired"
msgstr ""
#: stock/templates/stock/item_base.html:43
#: stock/templates/stock/item_base.html:401
-#: templates/js/translated/table_filters.js:218
+#: templates/js/translated/table_filters.js:231
msgid "Stale"
msgstr ""
#: stock/templates/stock/item_base.html:80
-#: templates/js/translated/barcode.js:309
-#: templates/js/translated/barcode.js:314
+#: templates/js/translated/barcode.js:331
+#: templates/js/translated/barcode.js:336
msgid "Unlink Barcode"
msgstr ""
@@ -5768,7 +5910,7 @@ msgid "next page"
msgstr ""
#: stock/templates/stock/item_base.html:303
-#: templates/js/translated/build.js:628
+#: templates/js/translated/build.js:651
msgid "No location set"
msgstr ""
@@ -5795,7 +5937,7 @@ msgid "This StockItem expires on %(item.expiry_date)s"
msgstr ""
#: stock/templates/stock/item_base.html:408
-#: templates/js/translated/stock.js:1032
+#: templates/js/translated/stock.js:980
msgid "Last Updated"
msgstr ""
@@ -5825,7 +5967,7 @@ msgstr ""
#: stock/templates/stock/item_delete.html:12
#, python-format
-msgid "This will remove %(qty)s units of %(full_name)s from stock."
+msgid "This will remove %(qty)s units of %(full_name)s from stock."
msgstr ""
#: stock/templates/stock/item_install.html:8
@@ -5975,7 +6117,7 @@ msgstr ""
#: stock/templates/stock/stockitem_convert.html:8
#, python-format
-msgid "This stock item is current an instance of %(part)s"
+msgid "This stock item is current an instance of %(part)s"
msgstr ""
#: stock/templates/stock/stockitem_convert.html:9
@@ -6039,7 +6181,7 @@ msgstr ""
msgid "Uninstall Stock Items"
msgstr ""
-#: stock/views.py:780 templates/js/translated/stock.js:282
+#: stock/views.py:780 templates/js/translated/stock.js:353
msgid "Confirm stock adjustment"
msgstr ""
@@ -6059,7 +6201,7 @@ msgstr ""
msgid "Serialize Stock"
msgstr ""
-#: stock/views.py:1143 templates/js/translated/build.js:365
+#: stock/views.py:1143 templates/js/translated/build.js:392
msgid "Create new Stock Item"
msgstr ""
@@ -6171,11 +6313,11 @@ msgstr ""
msgid "Enter a search query"
msgstr ""
-#: templates/InvenTree/search.html:268 templates/js/translated/stock.js:629
+#: templates/InvenTree/search.html:268 templates/js/translated/stock.js:699
msgid "Shipped to customer"
msgstr ""
-#: templates/InvenTree/search.html:271 templates/js/translated/stock.js:639
+#: templates/InvenTree/search.html:271 templates/js/translated/stock.js:709
msgid "No stock location set"
msgstr ""
@@ -6240,7 +6382,7 @@ msgstr ""
#: templates/InvenTree/settings/navbar.html:27
#: templates/InvenTree/settings/navbar.html:29
-#: templates/js/translated/tables.js:351 templates/search_form.html:6
+#: templates/js/translated/tables.js:366 templates/search_form.html:6
#: templates/search_form.html:8
msgid "Search"
msgstr ""
@@ -6257,7 +6399,7 @@ msgstr ""
#: templates/InvenTree/settings/navbar.html:46
#: templates/InvenTree/settings/navbar.html:48
-#: templates/InvenTree/settings/settings.html:8 templates/navbar.html:84
+#: templates/InvenTree/settings/settings.html:8 templates/navbar.html:94
msgid "Settings"
msgstr ""
@@ -6332,16 +6474,16 @@ msgid "No category parameter templates found"
msgstr ""
#: templates/InvenTree/settings/settings.html:174
-#: templates/InvenTree/settings/settings.html:271
+#: templates/InvenTree/settings/settings.html:273
msgid "Edit Template"
msgstr ""
#: templates/InvenTree/settings/settings.html:175
-#: templates/InvenTree/settings/settings.html:272
+#: templates/InvenTree/settings/settings.html:274
msgid "Delete Template"
msgstr ""
-#: templates/InvenTree/settings/settings.html:251
+#: templates/InvenTree/settings/settings.html:253
msgid "No part parameter templates found"
msgstr ""
@@ -6358,6 +6500,7 @@ msgid "Account Settings"
msgstr ""
#: templates/InvenTree/settings/user.html:15
+#: templates/js/translated/helpers.js:26
msgid "Edit"
msgstr ""
@@ -6436,65 +6579,69 @@ msgstr ""
msgid "InvenTree Version"
msgstr ""
-#: templates/about.html:26
+#: templates/about.html:27
+msgid "Development Version"
+msgstr ""
+
+#: templates/about.html:30
msgid "Up to Date"
msgstr ""
-#: templates/about.html:28
+#: templates/about.html:32
msgid "Update Available"
msgstr ""
-#: templates/about.html:34
-msgid "API Version"
-msgstr ""
-
-#: templates/about.html:39
-msgid "Python Version"
-msgstr ""
-
-#: templates/about.html:44
-msgid "Django Version"
-msgstr ""
-
-#: templates/about.html:51
+#: templates/about.html:42
msgid "Commit Hash"
msgstr ""
-#: templates/about.html:58
+#: templates/about.html:49
msgid "Commit Date"
msgstr ""
-#: templates/about.html:63
+#: templates/about.html:55
msgid "InvenTree Documentation"
msgstr ""
-#: templates/about.html:68
+#: templates/about.html:60
+msgid "API Version"
+msgstr ""
+
+#: templates/about.html:65
+msgid "Python Version"
+msgstr ""
+
+#: templates/about.html:70
+msgid "Django Version"
+msgstr ""
+
+#: templates/about.html:75
msgid "View Code on GitHub"
msgstr ""
-#: templates/about.html:73
+#: templates/about.html:80
msgid "Credits"
msgstr ""
-#: templates/about.html:78
+#: templates/about.html:85
msgid "Mobile App"
msgstr ""
-#: templates/about.html:83
+#: templates/about.html:90
msgid "Submit Bug Report"
msgstr ""
-#: templates/about.html:90 templates/clip.html:4
+#: templates/about.html:97 templates/clip.html:4
msgid "copy to clipboard"
msgstr ""
-#: templates/about.html:90
+#: templates/about.html:97
msgid "copy version information"
msgstr ""
-#: templates/about.html:100 templates/js/translated/modals.js:33
-#: templates/js/translated/modals.js:567 templates/js/translated/modals.js:661
-#: templates/js/translated/modals.js:957 templates/modals.html:29
+#: templates/about.html:107 templates/js/translated/modals.js:50
+#: templates/js/translated/modals.js:584 templates/js/translated/modals.js:678
+#: templates/js/translated/modals.js:971 templates/modals.html:29
#: templates/modals.html:54
msgid "Close"
msgstr ""
@@ -6515,1358 +6662,1390 @@ msgstr ""
msgid "Remote image must not exceed maximum allowable file size"
msgstr ""
-#: templates/js/report.js:47 templates/js/translated/report.js:47
+#: templates/js/report.js:47 templates/js/translated/report.js:67
msgid "items selected"
msgstr ""
-#: templates/js/report.js:55 templates/js/translated/report.js:55
+#: templates/js/report.js:55 templates/js/translated/report.js:75
msgid "Select Report Template"
msgstr ""
-#: templates/js/report.js:70 templates/js/translated/report.js:70
+#: templates/js/report.js:70 templates/js/translated/report.js:90
msgid "Select Test Report Template"
msgstr ""
-#: templates/js/report.js:98 templates/js/translated/label.js:10
-#: templates/js/translated/report.js:98 templates/js/translated/stock.js:244
+#: templates/js/report.js:98 templates/js/translated/label.js:29
+#: templates/js/translated/report.js:118 templates/js/translated/stock.js:313
msgid "Select Stock Items"
msgstr ""
-#: templates/js/report.js:99 templates/js/translated/report.js:99
+#: templates/js/report.js:99 templates/js/translated/report.js:119
msgid "Stock item(s) must be selected before printing reports"
msgstr ""
#: templates/js/report.js:116 templates/js/report.js:169
#: templates/js/report.js:223 templates/js/report.js:277
-#: templates/js/report.js:331 templates/js/translated/report.js:116
-#: templates/js/translated/report.js:169 templates/js/translated/report.js:223
-#: templates/js/translated/report.js:277 templates/js/translated/report.js:331
+#: templates/js/report.js:331 templates/js/translated/report.js:136
+#: templates/js/translated/report.js:189 templates/js/translated/report.js:243
+#: templates/js/translated/report.js:297 templates/js/translated/report.js:351
msgid "No Reports Found"
msgstr ""
-#: templates/js/report.js:117 templates/js/translated/report.js:117
+#: templates/js/report.js:117 templates/js/translated/report.js:137
msgid "No report templates found which match selected stock item(s)"
msgstr ""
-#: templates/js/report.js:152 templates/js/translated/report.js:152
+#: templates/js/report.js:152 templates/js/translated/report.js:172
msgid "Select Builds"
msgstr ""
-#: templates/js/report.js:153 templates/js/translated/report.js:153
+#: templates/js/report.js:153 templates/js/translated/report.js:173
msgid "Build(s) must be selected before printing reports"
msgstr ""
-#: templates/js/report.js:170 templates/js/translated/report.js:170
+#: templates/js/report.js:170 templates/js/translated/report.js:190
msgid "No report templates found which match selected build(s)"
msgstr ""
-#: templates/js/report.js:205 templates/js/translated/label.js:115
-#: templates/js/translated/report.js:205
+#: templates/js/report.js:205 templates/js/translated/label.js:134
+#: templates/js/translated/report.js:225
msgid "Select Parts"
msgstr ""
-#: templates/js/report.js:206 templates/js/translated/report.js:206
+#: templates/js/report.js:206 templates/js/translated/report.js:226
msgid "Part(s) must be selected before printing reports"
msgstr ""
-#: templates/js/report.js:224 templates/js/translated/report.js:224
+#: templates/js/report.js:224 templates/js/translated/report.js:244
msgid "No report templates found which match selected part(s)"
msgstr ""
-#: templates/js/report.js:259 templates/js/translated/report.js:259
+#: templates/js/report.js:259 templates/js/translated/report.js:279
msgid "Select Purchase Orders"
msgstr ""
-#: templates/js/report.js:260 templates/js/translated/report.js:260
+#: templates/js/report.js:260 templates/js/translated/report.js:280
msgid "Purchase Order(s) must be selected before printing report"
msgstr ""
#: templates/js/report.js:278 templates/js/report.js:332
-#: templates/js/translated/report.js:278 templates/js/translated/report.js:332
+#: templates/js/translated/report.js:298 templates/js/translated/report.js:352
msgid "No report templates found which match selected orders"
msgstr ""
-#: templates/js/report.js:313 templates/js/translated/report.js:313
+#: templates/js/report.js:313 templates/js/translated/report.js:333
msgid "Select Sales Orders"
msgstr ""
-#: templates/js/report.js:314 templates/js/translated/report.js:314
+#: templates/js/report.js:314 templates/js/translated/report.js:334
msgid "Sales Order(s) must be selected before printing report"
msgstr ""
-#: templates/js/translated/api.js:161 templates/js/translated/modals.js:1027
+#: templates/js/translated/api.js:174 templates/js/translated/modals.js:1041
msgid "No Response"
msgstr ""
-#: templates/js/translated/api.js:162 templates/js/translated/modals.js:1028
+#: templates/js/translated/api.js:175 templates/js/translated/modals.js:1042
msgid "No response from the InvenTree server"
msgstr ""
-#: templates/js/translated/api.js:167
+#: templates/js/translated/api.js:181
msgid "Error 400: Bad request"
msgstr ""
-#: templates/js/translated/api.js:168
+#: templates/js/translated/api.js:182
msgid "API request returned error code 400"
msgstr ""
-#: templates/js/translated/api.js:171 templates/js/translated/modals.js:1037
+#: templates/js/translated/api.js:186 templates/js/translated/modals.js:1051
msgid "Error 401: Not Authenticated"
msgstr ""
-#: templates/js/translated/api.js:172 templates/js/translated/modals.js:1038
+#: templates/js/translated/api.js:187 templates/js/translated/modals.js:1052
msgid "Authentication credentials not supplied"
msgstr ""
-#: templates/js/translated/api.js:175 templates/js/translated/modals.js:1042
+#: templates/js/translated/api.js:191 templates/js/translated/modals.js:1056
msgid "Error 403: Permission Denied"
msgstr ""
-#: templates/js/translated/api.js:176 templates/js/translated/modals.js:1043
+#: templates/js/translated/api.js:192 templates/js/translated/modals.js:1057
msgid "You do not have the required permissions to access this function"
msgstr ""
-#: templates/js/translated/api.js:179 templates/js/translated/modals.js:1047
+#: templates/js/translated/api.js:196 templates/js/translated/modals.js:1061
msgid "Error 404: Resource Not Found"
msgstr ""
-#: templates/js/translated/api.js:180 templates/js/translated/modals.js:1048
+#: templates/js/translated/api.js:197 templates/js/translated/modals.js:1062
msgid "The requested resource could not be located on the server"
msgstr ""
-#: templates/js/translated/api.js:183 templates/js/translated/modals.js:1052
+#: templates/js/translated/api.js:201 templates/js/translated/modals.js:1066
msgid "Error 408: Timeout"
msgstr ""
-#: templates/js/translated/api.js:184 templates/js/translated/modals.js:1053
+#: templates/js/translated/api.js:202 templates/js/translated/modals.js:1067
msgid "Connection timeout while requesting data from server"
msgstr ""
-#: templates/js/translated/api.js:187
+#: templates/js/translated/api.js:205
msgid "Unhandled Error Code"
msgstr ""
-#: templates/js/translated/api.js:188
+#: templates/js/translated/api.js:206
msgid "Error code"
msgstr ""
-#: templates/js/translated/attachment.js:16
+#: templates/js/translated/attachment.js:27
msgid "No attachments found"
msgstr ""
-#: templates/js/translated/attachment.js:56
+#: templates/js/translated/attachment.js:91
msgid "Upload Date"
msgstr ""
-#: templates/js/translated/attachment.js:69
+#: templates/js/translated/attachment.js:104
msgid "Edit attachment"
msgstr ""
-#: templates/js/translated/attachment.js:76
+#: templates/js/translated/attachment.js:111
msgid "Delete attachment"
msgstr ""
-#: templates/js/translated/barcode.js:8
+#: templates/js/translated/barcode.js:30
msgid "Scan barcode data here using wedge scanner"
msgstr ""
-#: templates/js/translated/barcode.js:10
+#: templates/js/translated/barcode.js:32
msgid "Enter barcode data"
msgstr ""
-#: templates/js/translated/barcode.js:14
+#: templates/js/translated/barcode.js:36
msgid "Barcode"
msgstr ""
-#: templates/js/translated/barcode.js:32
+#: templates/js/translated/barcode.js:54
msgid "Enter optional notes for stock transfer"
msgstr ""
-#: templates/js/translated/barcode.js:33
+#: templates/js/translated/barcode.js:55
msgid "Enter notes"
msgstr ""
-#: templates/js/translated/barcode.js:71
+#: templates/js/translated/barcode.js:93
msgid "Server error"
msgstr ""
-#: templates/js/translated/barcode.js:92
+#: templates/js/translated/barcode.js:114
msgid "Unknown response from server"
msgstr ""
-#: templates/js/translated/barcode.js:119
-#: templates/js/translated/modals.js:1017
+#: templates/js/translated/barcode.js:141
+#: templates/js/translated/modals.js:1031
msgid "Invalid server response"
msgstr ""
-#: templates/js/translated/barcode.js:212
+#: templates/js/translated/barcode.js:234
msgid "Scan barcode data below"
msgstr ""
-#: templates/js/translated/barcode.js:270
+#: templates/js/translated/barcode.js:281 templates/navbar.html:65
+msgid "Scan Barcode"
+msgstr ""
+
+#: templates/js/translated/barcode.js:292
msgid "No URL in response"
msgstr ""
-#: templates/js/translated/barcode.js:288
+#: templates/js/translated/barcode.js:310
msgid "Link Barcode to Stock Item"
msgstr ""
-#: templates/js/translated/barcode.js:311
+#: templates/js/translated/barcode.js:333
msgid "This will remove the association between this stock item and the barcode"
msgstr ""
-#: templates/js/translated/barcode.js:317
+#: templates/js/translated/barcode.js:339
msgid "Unlink"
msgstr ""
-#: templates/js/translated/barcode.js:376 templates/js/translated/stock.js:220
+#: templates/js/translated/barcode.js:398 templates/js/translated/stock.js:289
msgid "Remove stock item"
msgstr ""
-#: templates/js/translated/barcode.js:418
+#: templates/js/translated/barcode.js:440
msgid "Check Stock Items into Location"
msgstr ""
-#: templates/js/translated/barcode.js:422
-#: templates/js/translated/barcode.js:547
+#: templates/js/translated/barcode.js:444
+#: templates/js/translated/barcode.js:571
msgid "Check In"
msgstr ""
-#: templates/js/translated/barcode.js:462
-#: templates/js/translated/barcode.js:586
+#: templates/js/translated/barcode.js:486
+#: templates/js/translated/barcode.js:610
msgid "Error transferring stock"
msgstr ""
-#: templates/js/translated/barcode.js:481
+#: templates/js/translated/barcode.js:505
msgid "Stock Item already scanned"
msgstr ""
-#: templates/js/translated/barcode.js:485
+#: templates/js/translated/barcode.js:509
msgid "Stock Item already in this location"
msgstr ""
-#: templates/js/translated/barcode.js:492
+#: templates/js/translated/barcode.js:516
msgid "Added stock item"
msgstr ""
-#: templates/js/translated/barcode.js:499
+#: templates/js/translated/barcode.js:523
msgid "Barcode does not match Stock Item"
msgstr ""
-#: templates/js/translated/barcode.js:542
+#: templates/js/translated/barcode.js:566
msgid "Check Into Location"
msgstr ""
-#: templates/js/translated/barcode.js:605
+#: templates/js/translated/barcode.js:629
msgid "Barcode does not match a valid location"
msgstr ""
-#: templates/js/translated/bom.js:195 templates/js/translated/build.js:1152
+#: templates/js/translated/bom.js:215 templates/js/translated/build.js:1169
msgid "Open subassembly"
msgstr ""
-#: templates/js/translated/bom.js:269
+#: templates/js/translated/bom.js:287
msgid "Purchase Price Range"
msgstr ""
-#: templates/js/translated/bom.js:277
+#: templates/js/translated/bom.js:294
msgid "Purchase Price Average"
msgstr ""
-#: templates/js/translated/bom.js:326 templates/js/translated/bom.js:412
+#: templates/js/translated/bom.js:342 templates/js/translated/bom.js:428
msgid "View BOM"
msgstr ""
-#: templates/js/translated/bom.js:386
+#: templates/js/translated/bom.js:402
msgid "Validate BOM Item"
msgstr ""
-#: templates/js/translated/bom.js:388
+#: templates/js/translated/bom.js:404
msgid "This line has been validated"
msgstr ""
-#: templates/js/translated/bom.js:390 templates/js/translated/bom.js:555
+#: templates/js/translated/bom.js:406 templates/js/translated/bom.js:569
msgid "Edit BOM Item"
msgstr ""
-#: templates/js/translated/bom.js:392 templates/js/translated/bom.js:539
+#: templates/js/translated/bom.js:408 templates/js/translated/bom.js:554
msgid "Delete BOM Item"
msgstr ""
-#: templates/js/translated/bom.js:483 templates/js/translated/build.js:458
-#: templates/js/translated/build.js:1250
+#: templates/js/translated/bom.js:499 templates/js/translated/build.js:483
+#: templates/js/translated/build.js:1267
msgid "No BOM items found"
msgstr ""
-#: templates/js/translated/build.js:42
+#: templates/js/translated/build.js:69
msgid "Edit Build Order"
msgstr ""
-#: templates/js/translated/build.js:68
+#: templates/js/translated/build.js:95
msgid "Create Build Order"
msgstr ""
-#: templates/js/translated/build.js:100
+#: templates/js/translated/build.js:127
msgid "Auto-allocate stock items to this output"
msgstr ""
-#: templates/js/translated/build.js:108
+#: templates/js/translated/build.js:135
msgid "Unallocate stock from build output"
msgstr ""
-#: templates/js/translated/build.js:118
+#: templates/js/translated/build.js:145
msgid "Complete build output"
msgstr ""
-#: templates/js/translated/build.js:127
+#: templates/js/translated/build.js:154
msgid "Delete build output"
msgstr ""
-#: templates/js/translated/build.js:222
+#: templates/js/translated/build.js:249
msgid "No build order allocations found"
msgstr ""
-#: templates/js/translated/build.js:260 templates/js/translated/order.js:471
+#: templates/js/translated/build.js:287 templates/js/translated/order.js:813
msgid "Location not specified"
msgstr ""
-#: templates/js/translated/build.js:364 templates/stock_table.html:20
+#: templates/js/translated/build.js:391 templates/stock_table.html:20
msgid "New Stock Item"
msgstr ""
-#: templates/js/translated/build.js:679
+#: templates/js/translated/build.js:702
msgid "Required Part"
msgstr ""
-#: templates/js/translated/build.js:700
+#: templates/js/translated/build.js:723
msgid "Quantity Per"
msgstr ""
-#: templates/js/translated/build.js:770 templates/js/translated/build.js:1214
+#: templates/js/translated/build.js:793 templates/js/translated/build.js:1231
#: templates/stock_table.html:59
msgid "Order stock"
msgstr ""
-#: templates/js/translated/build.js:823
+#: templates/js/translated/build.js:846
msgid "No builds matching query"
msgstr ""
-#: templates/js/translated/build.js:840 templates/js/translated/part.js:711
-#: templates/js/translated/part.js:956 templates/js/translated/stock.js:883
-#: templates/js/translated/stock.js:1336
+#: templates/js/translated/build.js:863 templates/js/translated/part.js:845
+#: templates/js/translated/part.js:1123 templates/js/translated/stock.js:783
+#: templates/js/translated/stock.js:1477
msgid "Select"
msgstr ""
-#: templates/js/translated/build.js:860
+#: templates/js/translated/build.js:883
msgid "Build order is overdue"
msgstr ""
-#: templates/js/translated/build.js:924 templates/js/translated/stock.js:1558
+#: templates/js/translated/build.js:944 templates/js/translated/stock.js:1696
msgid "No user information"
msgstr ""
-#: templates/js/translated/build.js:939
+#: templates/js/translated/build.js:956
msgid "No information"
msgstr ""
-#: templates/js/translated/build.js:989
+#: templates/js/translated/build.js:1007
msgid "No parts allocated for"
msgstr ""
-#: templates/js/translated/company.js:34
+#: templates/js/translated/company.js:65
msgid "Add Manufacturer"
msgstr ""
-#: templates/js/translated/company.js:47 templates/js/translated/company.js:136
+#: templates/js/translated/company.js:78 templates/js/translated/company.js:176
msgid "Add Manufacturer Part"
msgstr ""
-#: templates/js/translated/company.js:59
+#: templates/js/translated/company.js:99
msgid "Edit Manufacturer Part"
msgstr ""
-#: templates/js/translated/company.js:68
+#: templates/js/translated/company.js:108
msgid "Delete Manufacturer Part"
msgstr ""
-#: templates/js/translated/company.js:124 templates/js/translated/order.js:58
+#: templates/js/translated/company.js:164 templates/js/translated/order.js:86
msgid "Add Supplier"
msgstr ""
-#: templates/js/translated/company.js:152
+#: templates/js/translated/company.js:192
msgid "Add Supplier Part"
msgstr ""
-#: templates/js/translated/company.js:162
+#: templates/js/translated/company.js:207
msgid "Edit Supplier Part"
msgstr ""
-#: templates/js/translated/company.js:172
+#: templates/js/translated/company.js:217
msgid "Delete Supplier Part"
msgstr ""
-#: templates/js/translated/company.js:219
+#: templates/js/translated/company.js:264
msgid "Edit Company"
msgstr ""
-#: templates/js/translated/company.js:240
+#: templates/js/translated/company.js:285
msgid "Add new Company"
msgstr ""
-#: templates/js/translated/company.js:317
+#: templates/js/translated/company.js:362
msgid "Parts Supplied"
msgstr ""
-#: templates/js/translated/company.js:326
+#: templates/js/translated/company.js:371
msgid "Parts Manufactured"
msgstr ""
-#: templates/js/translated/company.js:339
+#: templates/js/translated/company.js:385
msgid "No company information found"
msgstr ""
-#: templates/js/translated/company.js:357
+#: templates/js/translated/company.js:404
msgid "The following manufacturer parts will be deleted"
msgstr ""
-#: templates/js/translated/company.js:374
+#: templates/js/translated/company.js:421
msgid "Delete Manufacturer Parts"
msgstr ""
-#: templates/js/translated/company.js:427
+#: templates/js/translated/company.js:475
msgid "No manufacturer parts found"
msgstr ""
-#: templates/js/translated/company.js:446
-#: templates/js/translated/company.js:696 templates/js/translated/part.js:288
-#: templates/js/translated/part.js:373
+#: templates/js/translated/company.js:495
+#: templates/js/translated/company.js:751 templates/js/translated/part.js:416
+#: templates/js/translated/part.js:501
msgid "Template part"
msgstr ""
-#: templates/js/translated/company.js:450
-#: templates/js/translated/company.js:700 templates/js/translated/part.js:292
-#: templates/js/translated/part.js:377
+#: templates/js/translated/company.js:499
+#: templates/js/translated/company.js:755 templates/js/translated/part.js:420
+#: templates/js/translated/part.js:505
msgid "Assembled part"
msgstr ""
-#: templates/js/translated/company.js:574 templates/js/translated/part.js:462
+#: templates/js/translated/company.js:626 templates/js/translated/part.js:593
msgid "No parameters found"
msgstr ""
-#: templates/js/translated/company.js:610 templates/js/translated/part.js:503
+#: templates/js/translated/company.js:663 templates/js/translated/part.js:635
msgid "Edit parameter"
msgstr ""
-#: templates/js/translated/company.js:611 templates/js/translated/part.js:504
+#: templates/js/translated/company.js:664 templates/js/translated/part.js:636
msgid "Delete parameter"
msgstr ""
-#: templates/js/translated/company.js:630 templates/js/translated/part.js:521
+#: templates/js/translated/company.js:683 templates/js/translated/part.js:653
msgid "Edit Parameter"
msgstr ""
-#: templates/js/translated/company.js:641 templates/js/translated/part.js:533
+#: templates/js/translated/company.js:694 templates/js/translated/part.js:665
msgid "Delete Parameter"
msgstr ""
-#: templates/js/translated/company.js:677
+#: templates/js/translated/company.js:731
msgid "No supplier parts found"
msgstr ""
-#: templates/js/translated/filters.js:167
-#: templates/js/translated/filters.js:404
+#: templates/js/translated/filters.js:178
+#: templates/js/translated/filters.js:402
msgid "true"
msgstr ""
-#: templates/js/translated/filters.js:171
-#: templates/js/translated/filters.js:405
+#: templates/js/translated/filters.js:182
+#: templates/js/translated/filters.js:403
msgid "false"
msgstr ""
-#: templates/js/translated/filters.js:193
+#: templates/js/translated/filters.js:204
msgid "Select filter"
msgstr ""
-#: templates/js/translated/filters.js:268
+#: templates/js/translated/filters.js:279
msgid "Reload data"
msgstr ""
-#: templates/js/translated/filters.js:270
+#: templates/js/translated/filters.js:281
msgid "Add new filter"
msgstr ""
-#: templates/js/translated/filters.js:273
+#: templates/js/translated/filters.js:284
msgid "Clear all filters"
msgstr ""
-#: templates/js/translated/filters.js:303
+#: templates/js/translated/filters.js:312
msgid "Create filter"
msgstr ""
-#: templates/js/translated/forms.js:289 templates/js/translated/forms.js:302
-#: templates/js/translated/forms.js:314 templates/js/translated/forms.js:326
+#: templates/js/translated/forms.js:323 templates/js/translated/forms.js:336
+#: templates/js/translated/forms.js:348 templates/js/translated/forms.js:360
msgid "Action Prohibited"
msgstr ""
-#: templates/js/translated/forms.js:290
+#: templates/js/translated/forms.js:324
msgid "Create operation not allowed"
msgstr ""
-#: templates/js/translated/forms.js:303
+#: templates/js/translated/forms.js:337
msgid "Update operation not allowed"
msgstr ""
-#: templates/js/translated/forms.js:315
+#: templates/js/translated/forms.js:349
msgid "Delete operation not allowed"
msgstr ""
-#: templates/js/translated/forms.js:327
+#: templates/js/translated/forms.js:361
msgid "View operation not allowed"
msgstr ""
-#: templates/js/translated/forms.js:865 templates/modals.html:21
+#: templates/js/translated/forms.js:889 templates/modals.html:21
#: templates/modals.html:47
msgid "Form errors exist"
msgstr ""
-#: templates/js/translated/forms.js:1258
+#: templates/js/translated/forms.js:1379
msgid "Searching"
msgstr ""
-#: templates/js/translated/forms.js:1423
+#: templates/js/translated/forms.js:1593
msgid "Clear input"
msgstr ""
-#: templates/js/translated/label.js:11
-msgid "Stock item(s) must be selected before printing labels"
+#: templates/js/translated/helpers.js:19
+msgid "YES"
msgstr ""
-#: templates/js/translated/label.js:29 templates/js/translated/label.js:79
-#: templates/js/translated/label.js:134
-msgid "No Labels Found"
+#: templates/js/translated/helpers.js:21
+msgid "NO"
msgstr ""
#: templates/js/translated/label.js:30
+msgid "Stock item(s) must be selected before printing labels"
+msgstr ""
+
+#: templates/js/translated/label.js:48 templates/js/translated/label.js:98
+#: templates/js/translated/label.js:153
+msgid "No Labels Found"
+msgstr ""
+
+#: templates/js/translated/label.js:49
msgid "No labels found which match selected stock item(s)"
msgstr ""
-#: templates/js/translated/label.js:61
+#: templates/js/translated/label.js:80
msgid "Select Stock Locations"
msgstr ""
-#: templates/js/translated/label.js:62
+#: templates/js/translated/label.js:81
msgid "Stock location(s) must be selected before printing labels"
msgstr ""
-#: templates/js/translated/label.js:80
+#: templates/js/translated/label.js:99
msgid "No labels found which match selected stock location(s)"
msgstr ""
-#: templates/js/translated/label.js:116
+#: templates/js/translated/label.js:135
msgid "Part(s) must be selected before printing labels"
msgstr ""
-#: templates/js/translated/label.js:135
+#: templates/js/translated/label.js:154
msgid "No labels found which match the selected part(s)"
msgstr ""
-#: templates/js/translated/label.js:209
+#: templates/js/translated/label.js:228
msgid "stock items selected"
msgstr ""
-#: templates/js/translated/label.js:217
+#: templates/js/translated/label.js:236
msgid "Select Label"
msgstr ""
-#: templates/js/translated/label.js:232
+#: templates/js/translated/label.js:251
msgid "Select Label Template"
msgstr ""
-#: templates/js/translated/modals.js:59 templates/js/translated/modals.js:103
-#: templates/js/translated/modals.js:593
+#: templates/js/translated/modals.js:76 templates/js/translated/modals.js:120
+#: templates/js/translated/modals.js:610
msgid "Cancel"
msgstr ""
-#: templates/js/translated/modals.js:60 templates/js/translated/modals.js:102
-#: templates/js/translated/modals.js:660 templates/js/translated/modals.js:956
+#: templates/js/translated/modals.js:77 templates/js/translated/modals.js:119
+#: templates/js/translated/modals.js:677 templates/js/translated/modals.js:970
#: templates/modals.html:30 templates/modals.html:55
msgid "Submit"
msgstr ""
-#: templates/js/translated/modals.js:101
+#: templates/js/translated/modals.js:118
msgid "Form Title"
msgstr ""
-#: templates/js/translated/modals.js:380
+#: templates/js/translated/modals.js:397
msgid "Waiting for server..."
msgstr ""
-#: templates/js/translated/modals.js:539
+#: templates/js/translated/modals.js:556
msgid "Show Error Information"
msgstr ""
-#: templates/js/translated/modals.js:592
+#: templates/js/translated/modals.js:609
msgid "Accept"
msgstr ""
-#: templates/js/translated/modals.js:649
+#: templates/js/translated/modals.js:666
msgid "Loading Data"
msgstr ""
-#: templates/js/translated/modals.js:907
+#: templates/js/translated/modals.js:922
msgid "Invalid response from server"
msgstr ""
-#: templates/js/translated/modals.js:907
+#: templates/js/translated/modals.js:922
msgid "Form data missing from server response"
msgstr ""
-#: templates/js/translated/modals.js:920
+#: templates/js/translated/modals.js:934
msgid "Error posting form data"
msgstr ""
-#: templates/js/translated/modals.js:1017
+#: templates/js/translated/modals.js:1031
msgid "JSON response missing form data"
msgstr ""
-#: templates/js/translated/modals.js:1032
+#: templates/js/translated/modals.js:1046
msgid "Error 400: Bad Request"
msgstr ""
-#: templates/js/translated/modals.js:1033
+#: templates/js/translated/modals.js:1047
msgid "Server returned error code 400"
msgstr ""
-#: templates/js/translated/modals.js:1056
+#: templates/js/translated/modals.js:1070
msgid "Error requesting form data"
msgstr ""
-#: templates/js/translated/model_renderers.js:38
+#: templates/js/translated/model_renderers.js:40
msgid "Company ID"
msgstr ""
-#: templates/js/translated/model_renderers.js:78
+#: templates/js/translated/model_renderers.js:82
msgid "Location ID"
msgstr ""
-#: templates/js/translated/model_renderers.js:95
+#: templates/js/translated/model_renderers.js:99
msgid "Build ID"
msgstr ""
-#: templates/js/translated/model_renderers.js:114
+#: templates/js/translated/model_renderers.js:119
msgid "Part ID"
msgstr ""
-#: templates/js/translated/model_renderers.js:163
+#: templates/js/translated/model_renderers.js:171
msgid "Category ID"
msgstr ""
-#: templates/js/translated/model_renderers.js:199
+#: templates/js/translated/model_renderers.js:208
msgid "Manufacturer Part ID"
msgstr ""
-#: templates/js/translated/model_renderers.js:227
+#: templates/js/translated/model_renderers.js:237
msgid "Supplier Part ID"
msgstr ""
-#: templates/js/translated/order.js:17
+#: templates/js/translated/order.js:45
msgid "Add Customer"
msgstr ""
-#: templates/js/translated/order.js:42
+#: templates/js/translated/order.js:70
msgid "Create Sales Order"
msgstr ""
-#: templates/js/translated/order.js:222
+#: templates/js/translated/order.js:295
msgid "No purchase orders found"
msgstr ""
-#: templates/js/translated/order.js:246 templates/js/translated/order.js:341
+#: templates/js/translated/order.js:320 templates/js/translated/order.js:682
msgid "Order is overdue"
msgstr ""
-#: templates/js/translated/order.js:318
+#: templates/js/translated/order.js:452
+msgid "No line items found"
+msgstr ""
+
+#: templates/js/translated/order.js:617
+msgid "Delete line item"
+msgstr ""
+
+#: templates/js/translated/order.js:621
+msgid "Receive line item"
+msgstr ""
+
+#: templates/js/translated/order.js:658
msgid "No sales orders found"
msgstr ""
-#: templates/js/translated/order.js:355
+#: templates/js/translated/order.js:696
msgid "Invalid Customer"
msgstr ""
-#: templates/js/translated/order.js:432
+#: templates/js/translated/order.js:774
msgid "No sales order allocations found"
msgstr ""
-#: templates/js/translated/part.js:10
-msgid "YES"
-msgstr ""
-
-#: templates/js/translated/part.js:12
-msgid "NO"
-msgstr ""
-
-#: templates/js/translated/part.js:22
-msgid "Add Part Category"
-msgstr ""
-
-#: templates/js/translated/part.js:53
+#: templates/js/translated/part.js:49
msgid "Part Attributes"
msgstr ""
-#: templates/js/translated/part.js:96
+#: templates/js/translated/part.js:53
msgid "Part Creation Options"
msgstr ""
-#: templates/js/translated/part.js:102
-msgid "Initial Stock Quantity"
-msgstr ""
-
-#: templates/js/translated/part.js:103
-msgid "Initialize part stock with specified quantity"
-msgstr ""
-
-#: templates/js/translated/part.js:109
-msgid "Copy Category Parameters"
-msgstr ""
-
-#: templates/js/translated/part.js:110
-msgid "Copy parameter templates from selected part category"
-msgstr ""
-
-#: templates/js/translated/part.js:120
+#: templates/js/translated/part.js:57
msgid "Part Duplication Options"
msgstr ""
-#: templates/js/translated/part.js:131
-msgid "Copy Image"
+#: templates/js/translated/part.js:61
+msgid "Supplier Options"
msgstr ""
-#: templates/js/translated/part.js:132
-msgid "Copy image from original part"
+#: templates/js/translated/part.js:75
+msgid "Add Part Category"
msgstr ""
-#: templates/js/translated/part.js:138
-msgid "Copy BOM"
+#: templates/js/translated/part.js:159
+msgid "Create Initial Stock"
msgstr ""
-#: templates/js/translated/part.js:139
-msgid "Copy bill of materials from original part"
+#: templates/js/translated/part.js:160
+msgid "Create an initial stock item for this part"
msgstr ""
-#: templates/js/translated/part.js:145
-msgid "Copy Parameters"
+#: templates/js/translated/part.js:167
+msgid "Initial Stock Quantity"
msgstr ""
-#: templates/js/translated/part.js:146
-msgid "Copy parameter data from original part"
+#: templates/js/translated/part.js:168
+msgid "Specify initial stock quantity for this part"
msgstr ""
-#: templates/js/translated/part.js:158
-msgid "Parent part category"
+#: templates/js/translated/part.js:175 templates/js/translated/stock.js:330
+msgid "Select destination stock location"
+msgstr ""
+
+#: templates/js/translated/part.js:186
+msgid "Copy Category Parameters"
+msgstr ""
+
+#: templates/js/translated/part.js:187
+msgid "Copy parameter templates from selected part category"
+msgstr ""
+
+#: templates/js/translated/part.js:195
+msgid "Add Supplier Data"
msgstr ""
#: templates/js/translated/part.js:196
+msgid "Create initial supplier data for this part"
+msgstr ""
+
+#: templates/js/translated/part.js:252
+msgid "Copy Image"
+msgstr ""
+
+#: templates/js/translated/part.js:253
+msgid "Copy image from original part"
+msgstr ""
+
+#: templates/js/translated/part.js:260
+msgid "Copy BOM"
+msgstr ""
+
+#: templates/js/translated/part.js:261
+msgid "Copy bill of materials from original part"
+msgstr ""
+
+#: templates/js/translated/part.js:268
+msgid "Copy Parameters"
+msgstr ""
+
+#: templates/js/translated/part.js:269
+msgid "Copy parameter data from original part"
+msgstr ""
+
+#: templates/js/translated/part.js:282
+msgid "Parent part category"
+msgstr ""
+
+#: templates/js/translated/part.js:323
msgid "Edit Part"
msgstr ""
-#: templates/js/translated/part.js:280 templates/js/translated/part.js:365
+#: templates/js/translated/part.js:408 templates/js/translated/part.js:493
msgid "Trackable part"
msgstr ""
-#: templates/js/translated/part.js:284 templates/js/translated/part.js:369
+#: templates/js/translated/part.js:412 templates/js/translated/part.js:497
msgid "Virtual part"
msgstr ""
-#: templates/js/translated/part.js:296
+#: templates/js/translated/part.js:424
msgid "Starred part"
msgstr ""
-#: templates/js/translated/part.js:300
+#: templates/js/translated/part.js:428
msgid "Salable part"
msgstr ""
-#: templates/js/translated/part.js:414
+#: templates/js/translated/part.js:543
msgid "No variants found"
msgstr ""
-#: templates/js/translated/part.js:601 templates/js/translated/part.js:840
+#: templates/js/translated/part.js:732 templates/js/translated/part.js:994
msgid "No parts found"
msgstr ""
-#: templates/js/translated/part.js:779
+#: templates/js/translated/part.js:921
msgid "No category"
msgstr ""
-#: templates/js/translated/part.js:797
-#: templates/js/translated/table_filters.js:337
+#: templates/js/translated/part.js:944
+#: templates/js/translated/table_filters.js:350
msgid "Low stock"
msgstr ""
-#: templates/js/translated/part.js:981 templates/js/translated/stock.js:1360
+#: templates/js/translated/part.js:1148 templates/js/translated/stock.js:1501
msgid "Path"
msgstr ""
-#: templates/js/translated/part.js:1024
+#: templates/js/translated/part.js:1191
msgid "No test templates matching query"
msgstr ""
-#: templates/js/translated/part.js:1075 templates/js/translated/stock.js:443
+#: templates/js/translated/part.js:1242 templates/js/translated/stock.js:514
msgid "Edit test result"
msgstr ""
-#: templates/js/translated/part.js:1076 templates/js/translated/stock.js:444
+#: templates/js/translated/part.js:1243 templates/js/translated/stock.js:515
msgid "Delete test result"
msgstr ""
-#: templates/js/translated/part.js:1082
+#: templates/js/translated/part.js:1249
msgid "This test is defined for a parent part"
msgstr ""
-#: templates/js/translated/part.js:1107
+#: templates/js/translated/part.js:1274
#, python-brace-format
msgid "No ${human_name} information found"
msgstr ""
-#: templates/js/translated/part.js:1160
+#: templates/js/translated/part.js:1329
#, python-brace-format
msgid "Edit ${human_name}"
msgstr ""
-#: templates/js/translated/part.js:1161
+#: templates/js/translated/part.js:1330
#, python-brace-format
msgid "Delete ${human_name}"
msgstr ""
-#: templates/js/translated/part.js:1261
+#: templates/js/translated/part.js:1431
msgid "Single Price"
msgstr ""
-#: templates/js/translated/part.js:1280
+#: templates/js/translated/part.js:1450
msgid "Single Price Difference"
msgstr ""
-#: templates/js/translated/stock.js:9
+#: templates/js/translated/stock.js:66
msgid "Parent stock location"
msgstr ""
-#: templates/js/translated/stock.js:39
+#: templates/js/translated/stock.js:96
msgid "Export Stock"
msgstr ""
-#: templates/js/translated/stock.js:42
+#: templates/js/translated/stock.js:99
msgid "Format"
msgstr ""
-#: templates/js/translated/stock.js:43
+#: templates/js/translated/stock.js:100
msgid "Select file format"
msgstr ""
-#: templates/js/translated/stock.js:55
+#: templates/js/translated/stock.js:124
msgid "Include Sublocations"
msgstr ""
-#: templates/js/translated/stock.js:56
+#: templates/js/translated/stock.js:125
msgid "Include stock items in sublocations"
msgstr ""
-#: templates/js/translated/stock.js:98
+#: templates/js/translated/stock.js:167
msgid "Transfer Stock"
msgstr ""
-#: templates/js/translated/stock.js:99
+#: templates/js/translated/stock.js:168
msgid "Move"
msgstr ""
-#: templates/js/translated/stock.js:105
+#: templates/js/translated/stock.js:174
msgid "Count Stock"
msgstr ""
-#: templates/js/translated/stock.js:106
+#: templates/js/translated/stock.js:175
msgid "Count"
msgstr ""
-#: templates/js/translated/stock.js:110
+#: templates/js/translated/stock.js:179
msgid "Remove Stock"
msgstr ""
-#: templates/js/translated/stock.js:111
+#: templates/js/translated/stock.js:180
msgid "Take"
msgstr ""
-#: templates/js/translated/stock.js:115
+#: templates/js/translated/stock.js:184
msgid "Add Stock"
msgstr ""
-#: templates/js/translated/stock.js:116 users/models.py:190
+#: templates/js/translated/stock.js:185 users/models.py:190
msgid "Add"
msgstr ""
-#: templates/js/translated/stock.js:120 templates/stock_table.html:63
+#: templates/js/translated/stock.js:189 templates/stock_table.html:63
msgid "Delete Stock"
msgstr ""
-#: templates/js/translated/stock.js:209
+#: templates/js/translated/stock.js:278
msgid "Quantity cannot be adjusted for serialized stock"
msgstr ""
-#: templates/js/translated/stock.js:209
+#: templates/js/translated/stock.js:278
msgid "Specify stock quantity"
msgstr ""
-#: templates/js/translated/stock.js:245
+#: templates/js/translated/stock.js:314
msgid "You must select at least one available stock item"
msgstr ""
-#: templates/js/translated/stock.js:261
-msgid "Select destination stock location"
-msgstr ""
-
-#: templates/js/translated/stock.js:269
+#: templates/js/translated/stock.js:339
msgid "Stock transaction notes"
msgstr ""
-#: templates/js/translated/stock.js:406
+#: templates/js/translated/stock.js:477
msgid "PASS"
msgstr ""
-#: templates/js/translated/stock.js:408
+#: templates/js/translated/stock.js:479
msgid "FAIL"
msgstr ""
-#: templates/js/translated/stock.js:413
+#: templates/js/translated/stock.js:484
msgid "NO RESULT"
msgstr ""
-#: templates/js/translated/stock.js:439
+#: templates/js/translated/stock.js:510
msgid "Add test result"
msgstr ""
-#: templates/js/translated/stock.js:465
+#: templates/js/translated/stock.js:536
msgid "No test results found"
msgstr ""
-#: templates/js/translated/stock.js:513
+#: templates/js/translated/stock.js:584
msgid "Test Date"
msgstr ""
-#: templates/js/translated/stock.js:621
+#: templates/js/translated/stock.js:691
msgid "In production"
msgstr ""
-#: templates/js/translated/stock.js:625
+#: templates/js/translated/stock.js:695
msgid "Installed in Stock Item"
msgstr ""
-#: templates/js/translated/stock.js:633
+#: templates/js/translated/stock.js:703
msgid "Assigned to Sales Order"
msgstr ""
-#: templates/js/translated/stock.js:709
-msgid "No stock items matching query"
-msgstr ""
-
-#: templates/js/translated/stock.js:729
-msgid "items"
-msgstr ""
-
-#: templates/js/translated/stock.js:821
-msgid "batches"
-msgstr ""
-
-#: templates/js/translated/stock.js:848
-msgid "locations"
-msgstr ""
-
-#: templates/js/translated/stock.js:850
-msgid "Undefined location"
-msgstr ""
-
-#: templates/js/translated/stock.js:951
+#: templates/js/translated/stock.js:865
msgid "Stock item is in production"
msgstr ""
-#: templates/js/translated/stock.js:956
+#: templates/js/translated/stock.js:870
msgid "Stock item assigned to sales order"
msgstr ""
-#: templates/js/translated/stock.js:959
+#: templates/js/translated/stock.js:873
msgid "Stock item assigned to customer"
msgstr ""
-#: templates/js/translated/stock.js:963
+#: templates/js/translated/stock.js:877
msgid "Stock item has expired"
msgstr ""
-#: templates/js/translated/stock.js:965
+#: templates/js/translated/stock.js:879
msgid "Stock item will expire soon"
msgstr ""
-#: templates/js/translated/stock.js:969
+#: templates/js/translated/stock.js:883
msgid "Stock item has been allocated"
msgstr ""
-#: templates/js/translated/stock.js:973
+#: templates/js/translated/stock.js:887
msgid "Stock item has been installed in another item"
msgstr ""
-#: templates/js/translated/stock.js:980
+#: templates/js/translated/stock.js:894
msgid "Stock item has been rejected"
msgstr ""
-#: templates/js/translated/stock.js:984
+#: templates/js/translated/stock.js:896
msgid "Stock item is lost"
msgstr ""
-#: templates/js/translated/stock.js:987
+#: templates/js/translated/stock.js:898
msgid "Stock item is destroyed"
msgstr ""
-#: templates/js/translated/stock.js:991
-#: templates/js/translated/table_filters.js:148
+#: templates/js/translated/stock.js:902
+#: templates/js/translated/table_filters.js:161
msgid "Depleted"
msgstr ""
-#: templates/js/translated/stock.js:1020
+#: templates/js/translated/stock.js:956
msgid "Stocktake"
msgstr ""
-#: templates/js/translated/stock.js:1073
+#: templates/js/translated/stock.js:1029
msgid "Supplier part not specified"
msgstr ""
-#: templates/js/translated/stock.js:1223
+#: templates/js/translated/stock.js:1067
+msgid "No stock items matching query"
+msgstr ""
+
+#: templates/js/translated/stock.js:1088 templates/js/translated/stock.js:1136
+msgid "items"
+msgstr ""
+
+#: templates/js/translated/stock.js:1176
+msgid "batches"
+msgstr ""
+
+#: templates/js/translated/stock.js:1203
+msgid "locations"
+msgstr ""
+
+#: templates/js/translated/stock.js:1205
+msgid "Undefined location"
+msgstr ""
+
+#: templates/js/translated/stock.js:1364
msgid "Stock Status"
msgstr ""
-#: templates/js/translated/stock.js:1238
+#: templates/js/translated/stock.js:1379
msgid "Set Stock Status"
msgstr ""
-#: templates/js/translated/stock.js:1252
+#: templates/js/translated/stock.js:1393
msgid "Select Status Code"
msgstr ""
-#: templates/js/translated/stock.js:1253
+#: templates/js/translated/stock.js:1394
msgid "Status code must be selected"
msgstr ""
-#: templates/js/translated/stock.js:1392
+#: templates/js/translated/stock.js:1533
msgid "Invalid date"
msgstr ""
-#: templates/js/translated/stock.js:1439
+#: templates/js/translated/stock.js:1580
msgid "Location no longer exists"
msgstr ""
-#: templates/js/translated/stock.js:1458
+#: templates/js/translated/stock.js:1599
msgid "Purchase order no longer exists"
msgstr ""
-#: templates/js/translated/stock.js:1477
+#: templates/js/translated/stock.js:1618
msgid "Customer no longer exists"
msgstr ""
-#: templates/js/translated/stock.js:1495
+#: templates/js/translated/stock.js:1636
msgid "Stock item no longer exists"
msgstr ""
-#: templates/js/translated/stock.js:1518
+#: templates/js/translated/stock.js:1659
msgid "Added"
msgstr ""
-#: templates/js/translated/stock.js:1526
+#: templates/js/translated/stock.js:1667
msgid "Removed"
msgstr ""
-#: templates/js/translated/stock.js:1570
+#: templates/js/translated/stock.js:1708
msgid "Edit tracking entry"
msgstr ""
-#: templates/js/translated/stock.js:1571
+#: templates/js/translated/stock.js:1709
msgid "Delete tracking entry"
msgstr ""
-#: templates/js/translated/stock.js:1715
+#: templates/js/translated/stock.js:1833
msgid "No installed items"
msgstr ""
-#: templates/js/translated/stock.js:1738
+#: templates/js/translated/stock.js:1856
msgid "Serial"
msgstr ""
-#: templates/js/translated/stock.js:1766
+#: templates/js/translated/stock.js:1884
msgid "Uninstall Stock Item"
msgstr ""
-#: templates/js/translated/table_filters.js:43
+#: templates/js/translated/table_filters.js:56
msgid "Trackable Part"
msgstr ""
-#: templates/js/translated/table_filters.js:47
+#: templates/js/translated/table_filters.js:60
msgid "Assembled Part"
msgstr ""
-#: templates/js/translated/table_filters.js:51
+#: templates/js/translated/table_filters.js:64
msgid "Validated"
msgstr ""
-#: templates/js/translated/table_filters.js:59
+#: templates/js/translated/table_filters.js:72
msgid "Allow Variant Stock"
msgstr ""
-#: templates/js/translated/table_filters.js:79
-#: templates/js/translated/table_filters.js:143
+#: templates/js/translated/table_filters.js:92
+#: templates/js/translated/table_filters.js:156
msgid "Include sublocations"
msgstr ""
-#: templates/js/translated/table_filters.js:80
+#: templates/js/translated/table_filters.js:93
msgid "Include locations"
msgstr ""
-#: templates/js/translated/table_filters.js:90
-#: templates/js/translated/table_filters.js:91
-#: templates/js/translated/table_filters.js:314
+#: templates/js/translated/table_filters.js:103
+#: templates/js/translated/table_filters.js:104
+#: templates/js/translated/table_filters.js:327
msgid "Include subcategories"
msgstr ""
-#: templates/js/translated/table_filters.js:101
-#: templates/js/translated/table_filters.js:178
+#: templates/js/translated/table_filters.js:114
+#: templates/js/translated/table_filters.js:191
msgid "Is Serialized"
msgstr ""
-#: templates/js/translated/table_filters.js:104
-#: templates/js/translated/table_filters.js:185
+#: templates/js/translated/table_filters.js:117
+#: templates/js/translated/table_filters.js:198
msgid "Serial number GTE"
msgstr ""
-#: templates/js/translated/table_filters.js:105
-#: templates/js/translated/table_filters.js:186
+#: templates/js/translated/table_filters.js:118
+#: templates/js/translated/table_filters.js:199
msgid "Serial number greater than or equal to"
msgstr ""
-#: templates/js/translated/table_filters.js:108
-#: templates/js/translated/table_filters.js:189
+#: templates/js/translated/table_filters.js:121
+#: templates/js/translated/table_filters.js:202
msgid "Serial number LTE"
msgstr ""
-#: templates/js/translated/table_filters.js:109
-#: templates/js/translated/table_filters.js:190
+#: templates/js/translated/table_filters.js:122
+#: templates/js/translated/table_filters.js:203
msgid "Serial number less than or equal to"
msgstr ""
-#: templates/js/translated/table_filters.js:112
-#: templates/js/translated/table_filters.js:113
-#: templates/js/translated/table_filters.js:181
-#: templates/js/translated/table_filters.js:182
+#: templates/js/translated/table_filters.js:125
+#: templates/js/translated/table_filters.js:126
+#: templates/js/translated/table_filters.js:194
+#: templates/js/translated/table_filters.js:195
msgid "Serial number"
msgstr ""
-#: templates/js/translated/table_filters.js:117
-#: templates/js/translated/table_filters.js:199
+#: templates/js/translated/table_filters.js:130
+#: templates/js/translated/table_filters.js:212
msgid "Batch code"
msgstr ""
-#: templates/js/translated/table_filters.js:128
-#: templates/js/translated/table_filters.js:304
+#: templates/js/translated/table_filters.js:141
+#: templates/js/translated/table_filters.js:317
msgid "Active parts"
msgstr ""
-#: templates/js/translated/table_filters.js:129
+#: templates/js/translated/table_filters.js:142
msgid "Show stock for active parts"
msgstr ""
-#: templates/js/translated/table_filters.js:134
+#: templates/js/translated/table_filters.js:147
msgid "Part is an assembly"
msgstr ""
-#: templates/js/translated/table_filters.js:138
+#: templates/js/translated/table_filters.js:151
msgid "Is allocated"
msgstr ""
-#: templates/js/translated/table_filters.js:139
+#: templates/js/translated/table_filters.js:152
msgid "Item has been allocated"
msgstr ""
-#: templates/js/translated/table_filters.js:144
+#: templates/js/translated/table_filters.js:157
msgid "Include stock in sublocations"
msgstr ""
-#: templates/js/translated/table_filters.js:149
+#: templates/js/translated/table_filters.js:162
msgid "Show stock items which are depleted"
msgstr ""
-#: templates/js/translated/table_filters.js:154
+#: templates/js/translated/table_filters.js:167
msgid "Show items which are in stock"
msgstr ""
-#: templates/js/translated/table_filters.js:158
+#: templates/js/translated/table_filters.js:171
msgid "In Production"
msgstr ""
-#: templates/js/translated/table_filters.js:159
+#: templates/js/translated/table_filters.js:172
msgid "Show items which are in production"
msgstr ""
-#: templates/js/translated/table_filters.js:163
+#: templates/js/translated/table_filters.js:176
msgid "Include Variants"
msgstr ""
-#: templates/js/translated/table_filters.js:164
+#: templates/js/translated/table_filters.js:177
msgid "Include stock items for variant parts"
msgstr ""
-#: templates/js/translated/table_filters.js:168
+#: templates/js/translated/table_filters.js:181
msgid "Installed"
msgstr ""
-#: templates/js/translated/table_filters.js:169
+#: templates/js/translated/table_filters.js:182
msgid "Show stock items which are installed in another item"
msgstr ""
-#: templates/js/translated/table_filters.js:174
+#: templates/js/translated/table_filters.js:187
msgid "Show items which have been assigned to a customer"
msgstr ""
-#: templates/js/translated/table_filters.js:194
-#: templates/js/translated/table_filters.js:195
+#: templates/js/translated/table_filters.js:207
+#: templates/js/translated/table_filters.js:208
msgid "Stock status"
msgstr ""
-#: templates/js/translated/table_filters.js:203
+#: templates/js/translated/table_filters.js:216
msgid "Has purchase price"
msgstr ""
-#: templates/js/translated/table_filters.js:204
+#: templates/js/translated/table_filters.js:217
msgid "Show stock items which have a purchase price set"
msgstr ""
-#: templates/js/translated/table_filters.js:213
+#: templates/js/translated/table_filters.js:226
msgid "Show stock items which have expired"
msgstr ""
-#: templates/js/translated/table_filters.js:219
+#: templates/js/translated/table_filters.js:232
msgid "Show stock which is close to expiring"
msgstr ""
-#: templates/js/translated/table_filters.js:250
+#: templates/js/translated/table_filters.js:263
msgid "Build status"
msgstr ""
-#: templates/js/translated/table_filters.js:269
-#: templates/js/translated/table_filters.js:286
+#: templates/js/translated/table_filters.js:282
+#: templates/js/translated/table_filters.js:299
msgid "Order status"
msgstr ""
-#: templates/js/translated/table_filters.js:274
-#: templates/js/translated/table_filters.js:291
+#: templates/js/translated/table_filters.js:287
+#: templates/js/translated/table_filters.js:304
msgid "Outstanding"
msgstr ""
-#: templates/js/translated/table_filters.js:315
+#: templates/js/translated/table_filters.js:328
msgid "Include parts in subcategories"
msgstr ""
-#: templates/js/translated/table_filters.js:319
+#: templates/js/translated/table_filters.js:332
msgid "Has IPN"
msgstr ""
-#: templates/js/translated/table_filters.js:320
+#: templates/js/translated/table_filters.js:333
msgid "Part has internal part number"
msgstr ""
-#: templates/js/translated/table_filters.js:325
+#: templates/js/translated/table_filters.js:338
msgid "Show active parts"
msgstr ""
-#: templates/js/translated/table_filters.js:333
+#: templates/js/translated/table_filters.js:346
msgid "Stock available"
msgstr ""
-#: templates/js/translated/table_filters.js:349
+#: templates/js/translated/table_filters.js:362
msgid "Starred"
msgstr ""
-#: templates/js/translated/table_filters.js:361
+#: templates/js/translated/table_filters.js:374
msgid "Purchasable"
msgstr ""
-#: templates/js/translated/tables.js:342
+#: templates/js/translated/tables.js:357
msgid "Loading data"
msgstr ""
-#: templates/js/translated/tables.js:345
+#: templates/js/translated/tables.js:360
msgid "rows per page"
msgstr ""
-#: templates/js/translated/tables.js:348
+#: templates/js/translated/tables.js:363
msgid "Showing"
msgstr ""
-#: templates/js/translated/tables.js:348
+#: templates/js/translated/tables.js:363
msgid "to"
msgstr ""
-#: templates/js/translated/tables.js:348
+#: templates/js/translated/tables.js:363
msgid "of"
msgstr ""
-#: templates/js/translated/tables.js:348
+#: templates/js/translated/tables.js:363
msgid "rows"
msgstr ""
-#: templates/js/translated/tables.js:354
+#: templates/js/translated/tables.js:369
msgid "No matching results"
msgstr ""
-#: templates/js/translated/tables.js:357
+#: templates/js/translated/tables.js:372
msgid "Hide/Show pagination"
msgstr ""
-#: templates/js/translated/tables.js:360
+#: templates/js/translated/tables.js:375
msgid "Refresh"
msgstr ""
-#: templates/js/translated/tables.js:363
+#: templates/js/translated/tables.js:378
msgid "Toggle"
msgstr ""
-#: templates/js/translated/tables.js:366
+#: templates/js/translated/tables.js:381
msgid "Columns"
msgstr ""
-#: templates/js/translated/tables.js:369
+#: templates/js/translated/tables.js:384
msgid "All"
msgstr ""
-#: templates/navbar.html:13
+#: templates/navbar.html:19
msgid "Toggle navigation"
msgstr ""
-#: templates/navbar.html:33
+#: templates/navbar.html:39
msgid "Buy"
msgstr ""
-#: templates/navbar.html:43
+#: templates/navbar.html:51
msgid "Sell"
msgstr ""
-#: templates/navbar.html:55
-msgid "Scan Barcode"
-msgstr ""
-
-#: templates/navbar.html:77 users/models.py:39
+#: templates/navbar.html:87 users/models.py:39
msgid "Admin"
msgstr ""
-#: templates/navbar.html:79
+#: templates/navbar.html:89
msgid "Logout"
msgstr ""
-#: templates/navbar.html:81 templates/registration/login.html:89
+#: templates/navbar.html:91 templates/registration/login.html:89
msgid "Login"
msgstr ""
-#: templates/navbar.html:104
+#: templates/navbar.html:114
msgid "About InvenTree"
msgstr ""
diff --git a/InvenTree/locale/id/LC_MESSAGES/django.po b/InvenTree/locale/id/LC_MESSAGES/django.po
index 95d97efc15..55af0d653e 100644
--- a/InvenTree/locale/id/LC_MESSAGES/django.po
+++ b/InvenTree/locale/id/LC_MESSAGES/django.po
@@ -2,8 +2,8 @@ msgid ""
msgstr ""
"Project-Id-Version: inventree\n"
"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2021-08-07 15:14+0000\n"
-"PO-Revision-Date: 2021-08-07 15:30\n"
+"POT-Creation-Date: 2021-09-12 13:15+0000\n"
+"PO-Revision-Date: 2021-09-12 13:44\n"
"Last-Translator: \n"
"Language-Team: Indonesian\n"
"Language: id_ID\n"
@@ -36,7 +36,7 @@ msgstr ""
#: InvenTree/forms.py:111 build/forms.py:102 build/forms.py:123
#: build/forms.py:145 build/forms.py:169 build/forms.py:185 build/forms.py:227
#: order/forms.py:30 order/forms.py:41 order/forms.py:52 order/forms.py:63
-#: order/forms.py:74 part/forms.py:108 templates/js/translated/forms.js:545
+#: order/forms.py:74 part/forms.py:108 templates/js/translated/forms.js:564
msgid "Confirm"
msgstr ""
@@ -73,7 +73,7 @@ msgstr ""
msgid "Duplicate serial: {n}"
msgstr ""
-#: InvenTree/helpers.py:408 order/models.py:315 order/models.py:425
+#: InvenTree/helpers.py:408 order/models.py:315 order/models.py:430
#: stock/views.py:1363
msgid "Invalid quantity provided"
msgstr ""
@@ -102,152 +102,181 @@ msgstr ""
msgid "Number of unique serial number ({s}) must match quantity ({q})"
msgstr ""
-#: InvenTree/models.py:61 stock/models.py:1815
+#: InvenTree/models.py:66 stock/models.py:1826
msgid "Attachment"
msgstr ""
-#: InvenTree/models.py:62
+#: InvenTree/models.py:67
msgid "Select file to attach"
msgstr ""
-#: InvenTree/models.py:64 templates/js/translated/attachment.js:52
+#: InvenTree/models.py:69 templates/js/translated/attachment.js:87
msgid "Comment"
msgstr ""
-#: InvenTree/models.py:64
+#: InvenTree/models.py:69
msgid "File comment"
msgstr ""
-#: InvenTree/models.py:70 InvenTree/models.py:71 common/models.py:969
-#: common/models.py:970 part/models.py:2035
+#: InvenTree/models.py:75 InvenTree/models.py:76 common/models.py:993
+#: common/models.py:994 part/models.py:2051
#: report/templates/report/inventree_test_report_base.html:91
-#: templates/js/translated/stock.js:1549
+#: templates/js/translated/stock.js:1690
msgid "User"
msgstr ""
-#: InvenTree/models.py:74
+#: InvenTree/models.py:79
msgid "upload date"
msgstr ""
-#: InvenTree/models.py:113
+#: InvenTree/models.py:99
+msgid "Filename must not be empty"
+msgstr ""
+
+#: InvenTree/models.py:122
+msgid "Invalid attachment directory"
+msgstr ""
+
+#: InvenTree/models.py:132
+#, python-brace-format
+msgid "Filename contains illegal character '{c}'"
+msgstr ""
+
+#: InvenTree/models.py:135
+msgid "Filename missing extension"
+msgstr ""
+
+#: InvenTree/models.py:142
+msgid "Attachment with this filename already exists"
+msgstr ""
+
+#: InvenTree/models.py:149
+msgid "Error renaming file"
+msgstr ""
+
+#: InvenTree/models.py:184
msgid "Invalid choice"
msgstr ""
-#: InvenTree/models.py:129 InvenTree/models.py:130 company/models.py:412
-#: label/models.py:112 part/models.py:656 part/models.py:2196
-#: part/templates/part/part_base.html:233 report/models.py:181
+#: InvenTree/models.py:200 InvenTree/models.py:201 company/models.py:414
+#: label/models.py:112 part/models.py:658 part/models.py:2212
+#: part/templates/part/part_base.html:241 report/models.py:181
#: templates/InvenTree/search.html:137 templates/InvenTree/search.html:289
-#: templates/js/translated/company.js:583 templates/js/translated/part.js:338
-#: templates/js/translated/part.js:471 templates/js/translated/part.js:963
-#: templates/js/translated/stock.js:1342
+#: templates/js/translated/company.js:636 templates/js/translated/part.js:466
+#: templates/js/translated/part.js:603 templates/js/translated/part.js:1130
+#: templates/js/translated/stock.js:1483
msgid "Name"
msgstr ""
-#: InvenTree/models.py:136 build/models.py:187
-#: build/templates/build/detail.html:24 company/models.py:351
-#: company/models.py:519 company/templates/company/manufacturer_part.html:76
+#: InvenTree/models.py:207 build/models.py:187
+#: build/templates/build/detail.html:24 company/models.py:353
+#: company/models.py:569 company/templates/company/manufacturer_part.html:76
#: company/templates/company/supplier_part.html:75 label/models.py:119
-#: order/models.py:158 order/templates/order/purchase_order_detail.html:312
-#: part/models.py:679 part/templates/part/part_base.html:238
+#: order/models.py:158 part/models.py:681
+#: part/templates/part/part_base.html:246
#: part/templates/part/set_category.html:14 report/models.py:194
#: report/models.py:551 report/models.py:590
#: report/templates/report/inventree_build_order_base.html:118
#: templates/InvenTree/search.html:144 templates/InvenTree/search.html:224
#: templates/InvenTree/search.html:296
#: templates/InvenTree/settings/header.html:9
-#: templates/js/translated/bom.js:210 templates/js/translated/build.js:868
-#: templates/js/translated/build.js:1162 templates/js/translated/company.js:299
-#: templates/js/translated/company.js:497
-#: templates/js/translated/company.js:779 templates/js/translated/order.js:267
-#: templates/js/translated/order.js:369 templates/js/translated/part.js:397
-#: templates/js/translated/part.js:581 templates/js/translated/part.js:758
-#: templates/js/translated/part.js:975 templates/js/translated/part.js:1043
-#: templates/js/translated/stock.js:926 templates/js/translated/stock.js:1354
-#: templates/js/translated/stock.js:1399
+#: templates/js/translated/bom.js:230 templates/js/translated/build.js:891
+#: templates/js/translated/build.js:1179 templates/js/translated/company.js:344
+#: templates/js/translated/company.js:546
+#: templates/js/translated/company.js:834 templates/js/translated/order.js:341
+#: templates/js/translated/order.js:486 templates/js/translated/order.js:710
+#: templates/js/translated/part.js:525 templates/js/translated/part.js:713
+#: templates/js/translated/part.js:902 templates/js/translated/part.js:1142
+#: templates/js/translated/part.js:1210 templates/js/translated/stock.js:840
+#: templates/js/translated/stock.js:1495 templates/js/translated/stock.js:1540
msgid "Description"
msgstr ""
-#: InvenTree/models.py:137
+#: InvenTree/models.py:208
msgid "Description (optional)"
msgstr ""
-#: InvenTree/models.py:145
+#: InvenTree/models.py:216
msgid "parent"
msgstr ""
-#: InvenTree/serializers.py:52 part/models.py:2438
+#: InvenTree/serializers.py:55 part/models.py:2454
msgid "Must be a valid number"
msgstr ""
-#: InvenTree/settings.py:518
-msgid "German"
-msgstr ""
-
-#: InvenTree/settings.py:519
-msgid "Greek"
-msgstr ""
-
-#: InvenTree/settings.py:520
-msgid "English"
-msgstr ""
-
-#: InvenTree/settings.py:521
-msgid "Spanish"
-msgstr ""
-
-#: InvenTree/settings.py:522
-msgid "French"
+#: InvenTree/serializers.py:244
+msgid "Filename"
msgstr ""
#: InvenTree/settings.py:523
-msgid "Hebrew"
+msgid "German"
msgstr ""
#: InvenTree/settings.py:524
-msgid "Italian"
+msgid "Greek"
msgstr ""
#: InvenTree/settings.py:525
-msgid "Japanese"
+msgid "English"
msgstr ""
#: InvenTree/settings.py:526
-msgid "Korean"
+msgid "Spanish"
msgstr ""
#: InvenTree/settings.py:527
-msgid "Dutch"
+msgid "French"
msgstr ""
#: InvenTree/settings.py:528
-msgid "Norwegian"
+msgid "Hebrew"
msgstr ""
#: InvenTree/settings.py:529
-msgid "Polish"
+msgid "Italian"
msgstr ""
#: InvenTree/settings.py:530
-msgid "Russian"
+msgid "Japanese"
msgstr ""
#: InvenTree/settings.py:531
-msgid "Swedish"
+msgid "Korean"
msgstr ""
#: InvenTree/settings.py:532
-msgid "Thai"
+msgid "Dutch"
msgstr ""
#: InvenTree/settings.py:533
-msgid "Turkish"
+msgid "Norwegian"
msgstr ""
#: InvenTree/settings.py:534
-msgid "Vietnamese"
+msgid "Polish"
msgstr ""
#: InvenTree/settings.py:535
+msgid "Russian"
+msgstr ""
+
+#: InvenTree/settings.py:536
+msgid "Swedish"
+msgstr ""
+
+#: InvenTree/settings.py:537
+msgid "Thai"
+msgstr ""
+
+#: InvenTree/settings.py:538
+msgid "Turkish"
+msgstr ""
+
+#: InvenTree/settings.py:539
+msgid "Vietnamese"
+msgstr ""
+
+#: InvenTree/settings.py:540
msgid "Chinese"
msgstr ""
@@ -372,7 +401,7 @@ msgstr ""
msgid "Split child item"
msgstr ""
-#: InvenTree/status_codes.py:294 templates/js/translated/table_filters.js:173
+#: InvenTree/status_codes.py:294 templates/js/translated/table_filters.js:186
msgid "Sent to customer"
msgstr ""
@@ -432,27 +461,27 @@ msgstr ""
msgid "Overage must be an integer value or a percentage"
msgstr ""
-#: InvenTree/views.py:612
+#: InvenTree/views.py:610
msgid "Delete Item"
msgstr ""
-#: InvenTree/views.py:661
+#: InvenTree/views.py:659
msgid "Check box to confirm item deletion"
msgstr ""
-#: InvenTree/views.py:676 templates/InvenTree/settings/user.html:14
+#: InvenTree/views.py:674 templates/InvenTree/settings/user.html:14
msgid "Edit User Information"
msgstr ""
-#: InvenTree/views.py:687 templates/InvenTree/settings/user.html:18
+#: InvenTree/views.py:685 templates/InvenTree/settings/user.html:18
msgid "Set Password"
msgstr ""
-#: InvenTree/views.py:706
+#: InvenTree/views.py:704
msgid "Password fields must match"
msgstr ""
-#: InvenTree/views.py:907 templates/navbar.html:95
+#: InvenTree/views.py:910 templates/navbar.html:105
msgid "System Information"
msgstr ""
@@ -509,8 +538,8 @@ msgstr ""
#: order/templates/order/order_base.html:124
#: order/templates/order/sales_order_base.html:119
#: report/templates/report/inventree_build_order_base.html:126
-#: templates/js/translated/build.js:945 templates/js/translated/order.js:284
-#: templates/js/translated/order.js:387
+#: templates/js/translated/build.js:962 templates/js/translated/order.js:358
+#: templates/js/translated/order.js:728
msgid "Target Date"
msgstr ""
@@ -522,19 +551,18 @@ msgstr ""
#: build/templates/build/allocation_card.html:23
#: build/templates/build/auto_allocate.html:17
#: build/templates/build/build_base.html:133
-#: build/templates/build/detail.html:34 common/models.py:1001
+#: build/templates/build/detail.html:34 common/models.py:1025
#: company/forms.py:42 company/templates/company/supplier_part.html:226
-#: order/forms.py:120 order/forms.py:142 order/forms.py:159 order/models.py:706
-#: order/models.py:952 order/templates/order/order_wizard/match_parts.html:30
+#: order/forms.py:120 order/forms.py:142 order/forms.py:159 order/models.py:712
+#: order/models.py:964 order/templates/order/order_wizard/match_parts.html:30
#: order/templates/order/order_wizard/select_parts.html:34
-#: order/templates/order/purchase_order_detail.html:348
-#: order/templates/order/sales_order_detail.html:200
-#: order/templates/order/sales_order_detail.html:207
-#: order/templates/order/sales_order_detail.html:292
-#: order/templates/order/sales_order_detail.html:364 part/forms.py:249
-#: part/forms.py:265 part/forms.py:281 part/models.py:2340
+#: order/templates/order/sales_order_detail.html:201
+#: order/templates/order/sales_order_detail.html:208
+#: order/templates/order/sales_order_detail.html:293
+#: order/templates/order/sales_order_detail.html:365 part/forms.py:249
+#: part/forms.py:265 part/forms.py:281 part/models.py:2356
#: part/templates/part/bom_upload/match_parts.html:31
-#: part/templates/part/detail.html:940 part/templates/part/detail.html:1026
+#: part/templates/part/detail.html:973 part/templates/part/detail.html:1059
#: part/templates/part/part_pricing.html:16
#: report/templates/report/inventree_build_order_base.html:114
#: report/templates/report/inventree_po_report.html:91
@@ -542,13 +570,14 @@ msgstr ""
#: report/templates/report/inventree_test_report_base.html:77
#: stock/forms.py:140 stock/templates/stock/item_base.html:269
#: stock/templates/stock/stock_adjust.html:18
-#: templates/js/translated/barcode.js:364 templates/js/translated/bom.js:225
-#: templates/js/translated/build.js:271 templates/js/translated/build.js:606
-#: templates/js/translated/build.js:1172
-#: templates/js/translated/model_renderers.js:56
-#: templates/js/translated/order.js:482 templates/js/translated/part.js:1148
-#: templates/js/translated/part.js:1270 templates/js/translated/part.js:1326
-#: templates/js/translated/stock.js:1534 templates/js/translated/stock.js:1732
+#: templates/js/translated/barcode.js:386 templates/js/translated/bom.js:245
+#: templates/js/translated/build.js:298 templates/js/translated/build.js:629
+#: templates/js/translated/build.js:1189
+#: templates/js/translated/model_renderers.js:59
+#: templates/js/translated/order.js:522 templates/js/translated/order.js:824
+#: templates/js/translated/part.js:1317 templates/js/translated/part.js:1440
+#: templates/js/translated/part.js:1518 templates/js/translated/stock.js:1675
+#: templates/js/translated/stock.js:1850
msgid "Quantity"
msgstr ""
@@ -589,13 +618,15 @@ msgid "Mark build as complete"
msgstr ""
#: build/forms.py:210 build/templates/build/auto_allocate.html:18
-#: stock/forms.py:280 stock/templates/stock/item_base.html:299
+#: order/serializers.py:216 order/serializers.py:275 stock/forms.py:280
+#: stock/templates/stock/item_base.html:299
#: stock/templates/stock/stock_adjust.html:17
-#: templates/InvenTree/search.html:260 templates/js/translated/barcode.js:363
-#: templates/js/translated/barcode.js:531 templates/js/translated/build.js:256
-#: templates/js/translated/build.js:620 templates/js/translated/order.js:467
-#: templates/js/translated/stock.js:134 templates/js/translated/stock.js:260
-#: templates/js/translated/stock.js:1012 templates/js/translated/stock.js:1426
+#: templates/InvenTree/search.html:260 templates/js/translated/barcode.js:385
+#: templates/js/translated/barcode.js:555 templates/js/translated/build.js:283
+#: templates/js/translated/build.js:643 templates/js/translated/order.js:809
+#: templates/js/translated/part.js:174 templates/js/translated/stock.js:203
+#: templates/js/translated/stock.js:329 templates/js/translated/stock.js:942
+#: templates/js/translated/stock.js:1567
msgid "Location"
msgstr ""
@@ -604,13 +635,13 @@ msgid "Location of completed parts"
msgstr ""
#: build/forms.py:215 build/templates/build/build_base.html:138
-#: build/templates/build/detail.html:62 order/models.py:549
-#: order/templates/order/receive_parts.html:24
+#: build/templates/build/detail.html:62 order/models.py:555
+#: order/serializers.py:230 order/templates/order/receive_parts.html:24
#: stock/templates/stock/item_base.html:422 templates/InvenTree/search.html:252
-#: templates/js/translated/barcode.js:119 templates/js/translated/build.js:902
-#: templates/js/translated/order.js:271 templates/js/translated/order.js:374
-#: templates/js/translated/stock.js:999 templates/js/translated/stock.js:1503
-#: templates/js/translated/stock.js:1748
+#: templates/js/translated/barcode.js:141 templates/js/translated/build.js:925
+#: templates/js/translated/order.js:345 templates/js/translated/order.js:715
+#: templates/js/translated/stock.js:917 templates/js/translated/stock.js:1644
+#: templates/js/translated/stock.js:1866
msgid "Status"
msgstr ""
@@ -649,7 +680,7 @@ msgstr ""
#: build/models.py:117 build/templates/build/build_base.html:9
#: build/templates/build/build_base.html:73
#: report/templates/report/inventree_build_order_base.html:106
-#: templates/js/translated/build.js:233
+#: templates/js/translated/build.js:260
msgid "Build Order"
msgstr ""
@@ -657,8 +688,8 @@ msgstr ""
#: build/templates/build/index.html:15
#: order/templates/order/sales_order_detail.html:34
#: order/templates/order/so_navbar.html:19
-#: order/templates/order/so_navbar.html:22 part/templates/part/navbar.html:42
-#: part/templates/part/navbar.html:45 templates/InvenTree/index.html:229
+#: order/templates/order/so_navbar.html:22 part/templates/part/navbar.html:50
+#: part/templates/part/navbar.html:53 templates/InvenTree/index.html:229
#: templates/InvenTree/search.html:185
#: templates/InvenTree/settings/navbar.html:101
#: templates/InvenTree/settings/navbar.html:103 users/models.py:44
@@ -669,14 +700,13 @@ msgstr ""
msgid "Build Order Reference"
msgstr ""
-#: build/models.py:179 order/models.py:246 order/models.py:533
-#: order/models.py:713 order/templates/order/purchase_order_detail.html:343
-#: order/templates/order/sales_order_detail.html:359 part/models.py:2349
-#: part/templates/part/bom_upload/match_parts.html:30
+#: build/models.py:179 order/models.py:246 order/models.py:539
+#: order/models.py:719 order/templates/order/sales_order_detail.html:360
+#: part/models.py:2365 part/templates/part/bom_upload/match_parts.html:30
#: report/templates/report/inventree_po_report.html:92
#: report/templates/report/inventree_so_report.html:92
-#: templates/js/translated/bom.js:217 templates/js/translated/build.js:695
-#: templates/js/translated/build.js:1166
+#: templates/js/translated/bom.js:237 templates/js/translated/build.js:718
+#: templates/js/translated/build.js:1183 templates/js/translated/order.js:517
msgid "Reference"
msgstr ""
@@ -695,15 +725,14 @@ msgstr ""
#: build/models.py:205 build/templates/build/auto_allocate.html:16
#: build/templates/build/build_base.html:128
-#: build/templates/build/detail.html:29 company/models.py:654
-#: order/models.py:766 order/models.py:825
+#: build/templates/build/detail.html:29 company/models.py:704
+#: order/models.py:772 order/models.py:837
#: order/templates/order/order_wizard/select_parts.html:32
-#: order/templates/order/purchase_order_detail.html:297
#: order/templates/order/receive_parts.html:19
-#: order/templates/order/sales_order_detail.html:344 part/models.py:295
-#: part/models.py:1980 part/models.py:1996 part/models.py:2015
-#: part/models.py:2033 part/models.py:2112 part/models.py:2234
-#: part/models.py:2324 part/templates/part/detail.html:199
+#: order/templates/order/sales_order_detail.html:345 part/models.py:297
+#: part/models.py:1996 part/models.py:2012 part/models.py:2031
+#: part/models.py:2049 part/models.py:2128 part/models.py:2250
+#: part/models.py:2340 part/templates/part/detail.html:199
#: part/templates/part/part_app_base.html:8
#: part/templates/part/part_pricing.html:12
#: part/templates/part/set_category.html:13
@@ -711,12 +740,13 @@ msgstr ""
#: report/templates/report/inventree_po_report.html:90
#: report/templates/report/inventree_so_report.html:90
#: templates/InvenTree/search.html:112 templates/InvenTree/search.html:210
-#: templates/js/translated/barcode.js:362 templates/js/translated/bom.js:183
-#: templates/js/translated/build.js:586 templates/js/translated/build.js:873
-#: templates/js/translated/build.js:1139 templates/js/translated/company.js:438
-#: templates/js/translated/company.js:688 templates/js/translated/part.js:562
-#: templates/js/translated/part.js:725 templates/js/translated/stock.js:132
-#: templates/js/translated/stock.js:895 templates/js/translated/stock.js:1720
+#: templates/js/translated/barcode.js:384 templates/js/translated/bom.js:203
+#: templates/js/translated/build.js:609 templates/js/translated/build.js:896
+#: templates/js/translated/build.js:1156 templates/js/translated/company.js:487
+#: templates/js/translated/company.js:743 templates/js/translated/order.js:471
+#: templates/js/translated/part.js:694 templates/js/translated/part.js:864
+#: templates/js/translated/stock.js:201 templates/js/translated/stock.js:797
+#: templates/js/translated/stock.js:1838
msgid "Part"
msgstr ""
@@ -764,7 +794,7 @@ msgstr ""
msgid "Number of stock items which have been completed"
msgstr ""
-#: build/models.py:257 part/templates/part/part_base.html:191
+#: build/models.py:257 part/templates/part/part_base.html:198
msgid "Build Status"
msgstr ""
@@ -772,7 +802,7 @@ msgstr ""
msgid "Build status code"
msgstr ""
-#: build/models.py:265 stock/models.py:507
+#: build/models.py:265 stock/models.py:513
msgid "Batch Code"
msgstr ""
@@ -780,16 +810,16 @@ msgstr ""
msgid "Batch code for this build output"
msgstr ""
-#: build/models.py:272 order/models.py:162 part/models.py:851
-#: part/templates/part/part_base.html:264 templates/js/translated/order.js:382
+#: build/models.py:272 order/models.py:162 part/models.py:853
+#: part/templates/part/part_base.html:272 templates/js/translated/order.js:723
msgid "Creation Date"
msgstr ""
-#: build/models.py:276 order/models.py:555
+#: build/models.py:276 order/models.py:561
msgid "Target completion date"
msgstr ""
-#: build/models.py:280 order/models.py:288 templates/js/translated/build.js:950
+#: build/models.py:280 order/models.py:288 templates/js/translated/build.js:967
msgid "Completion Date"
msgstr ""
@@ -797,7 +827,7 @@ msgstr ""
msgid "completed by"
msgstr ""
-#: build/models.py:294 templates/js/translated/build.js:915
+#: build/models.py:294 templates/js/translated/build.js:938
msgid "Issued by"
msgstr ""
@@ -808,9 +838,9 @@ msgstr ""
#: build/models.py:303 build/templates/build/build_base.html:184
#: build/templates/build/detail.html:108 order/models.py:176
#: order/templates/order/order_base.html:138
-#: order/templates/order/sales_order_base.html:140 part/models.py:855
+#: order/templates/order/sales_order_base.html:140 part/models.py:857
#: report/templates/report/inventree_build_order_base.html:159
-#: templates/js/translated/build.js:930
+#: templates/js/translated/build.js:950
msgid "Responsible"
msgstr ""
@@ -821,34 +851,33 @@ msgstr ""
#: build/models.py:309 build/templates/build/detail.html:94
#: company/templates/company/manufacturer_part.html:83
#: company/templates/company/supplier_part.html:82
-#: part/templates/part/part_base.html:258 stock/models.py:501
+#: part/templates/part/part_base.html:266 stock/models.py:507
#: stock/templates/stock/item_base.html:359
msgid "External Link"
msgstr ""
-#: build/models.py:310 part/models.py:713 stock/models.py:503
+#: build/models.py:310 part/models.py:715 stock/models.py:509
msgid "Link to external URL"
msgstr ""
#: build/models.py:314 build/templates/build/navbar.html:52
-#: company/models.py:139 company/models.py:526
-#: company/templates/company/navbar.html:63
-#: company/templates/company/navbar.html:66 order/models.py:180
-#: order/models.py:715 order/templates/order/po_navbar.html:38
+#: company/models.py:141 company/models.py:576
+#: company/templates/company/navbar.html:69
+#: company/templates/company/navbar.html:72 order/models.py:180
+#: order/models.py:721 order/templates/order/po_navbar.html:38
#: order/templates/order/po_navbar.html:41
-#: order/templates/order/purchase_order_detail.html:419
-#: order/templates/order/sales_order_detail.html:439
+#: order/templates/order/sales_order_detail.html:440
#: order/templates/order/so_navbar.html:33
-#: order/templates/order/so_navbar.html:36 part/models.py:840
-#: part/templates/part/detail.html:105 part/templates/part/navbar.html:108
-#: part/templates/part/navbar.html:111
+#: order/templates/order/so_navbar.html:36 part/models.py:842
+#: part/templates/part/detail.html:105 part/templates/part/navbar.html:120
+#: part/templates/part/navbar.html:123
#: report/templates/report/inventree_build_order_base.html:173
-#: stock/forms.py:138 stock/forms.py:250 stock/forms.py:282 stock/models.py:573
-#: stock/models.py:1715 stock/models.py:1821
-#: stock/templates/stock/navbar.html:57 templates/js/translated/barcode.js:37
-#: templates/js/translated/bom.js:369 templates/js/translated/company.js:784
-#: templates/js/translated/stock.js:268 templates/js/translated/stock.js:509
-#: templates/js/translated/stock.js:1090
+#: stock/forms.py:138 stock/forms.py:250 stock/forms.py:282 stock/models.py:579
+#: stock/models.py:1726 stock/models.py:1832
+#: stock/templates/stock/navbar.html:57 templates/js/translated/barcode.js:59
+#: templates/js/translated/bom.js:385 templates/js/translated/company.js:839
+#: templates/js/translated/order.js:604 templates/js/translated/stock.js:338
+#: templates/js/translated/stock.js:580 templates/js/translated/stock.js:1061
msgid "Notes"
msgstr ""
@@ -881,11 +910,11 @@ msgstr ""
msgid "Allocated quantity ({n}) must not exceed available quantity ({q})"
msgstr ""
-#: build/models.py:1244 order/models.py:926
+#: build/models.py:1244 order/models.py:938
msgid "StockItem is over-allocated"
msgstr ""
-#: build/models.py:1248 order/models.py:929
+#: build/models.py:1248 order/models.py:941
msgid "Allocation quantity must be greater than zero"
msgstr ""
@@ -899,8 +928,8 @@ msgid "Selected stock item not found in BOM for part '{p}'"
msgstr ""
#: build/models.py:1372 stock/templates/stock/item_base.html:331
-#: templates/InvenTree/search.html:183 templates/js/translated/build.js:846
-#: templates/navbar.html:29
+#: templates/InvenTree/search.html:183 templates/js/translated/build.js:869
+#: templates/navbar.html:35
msgid "Build"
msgstr ""
@@ -912,9 +941,9 @@ msgstr ""
#: stock/templates/stock/item_base.html:31
#: stock/templates/stock/item_base.html:353
#: stock/templates/stock/stock_adjust.html:16
-#: templates/js/translated/build.js:244 templates/js/translated/build.js:249
-#: templates/js/translated/build.js:993 templates/js/translated/order.js:455
-#: templates/js/translated/order.js:460 templates/js/translated/stock.js:1485
+#: templates/js/translated/build.js:271 templates/js/translated/build.js:276
+#: templates/js/translated/build.js:1012 templates/js/translated/order.js:797
+#: templates/js/translated/order.js:802 templates/js/translated/stock.js:1626
msgid "Stock Item"
msgstr ""
@@ -936,12 +965,12 @@ msgstr ""
#: build/templates/build/allocation_card.html:21
#: build/templates/build/complete_output.html:46
-#: order/templates/order/sales_order_detail.html:205
-#: order/templates/order/sales_order_detail.html:290
+#: order/templates/order/sales_order_detail.html:206
+#: order/templates/order/sales_order_detail.html:291
#: report/templates/report/inventree_test_report_base.html:75
-#: stock/models.py:495 stock/templates/stock/item_base.html:251
-#: templates/js/translated/build.js:604
-#: templates/js/translated/model_renderers.js:54
+#: stock/models.py:501 stock/templates/stock/item_base.html:251
+#: templates/js/translated/build.js:627
+#: templates/js/translated/model_renderers.js:57
msgid "Serial Number"
msgstr ""
@@ -993,7 +1022,7 @@ msgstr ""
#: company/templates/company/supplier_part.html:30
#: order/templates/order/order_base.html:26
#: order/templates/order/sales_order_base.html:37
-#: part/templates/part/category.html:27 part/templates/part/part_base.html:25
+#: part/templates/part/category.html:27 part/templates/part/part_base.html:30
#: stock/templates/stock/item_base.html:62
#: stock/templates/stock/location.html:31
msgid "Admin view"
@@ -1005,9 +1034,9 @@ msgstr ""
#: order/templates/order/order_base.html:86
#: order/templates/order/sales_order_base.html:43
#: order/templates/order/sales_order_base.html:88
-#: templates/js/translated/table_filters.js:259
-#: templates/js/translated/table_filters.js:278
-#: templates/js/translated/table_filters.js:295
+#: templates/js/translated/table_filters.js:272
+#: templates/js/translated/table_filters.js:291
+#: templates/js/translated/table_filters.js:308
msgid "Overdue"
msgstr ""
@@ -1057,14 +1086,14 @@ msgid "Progress"
msgstr ""
#: build/templates/build/build_base.html:170
-#: build/templates/build/detail.html:87 order/models.py:823
+#: build/templates/build/detail.html:87 order/models.py:835
#: order/templates/order/sales_order_base.html:9
#: order/templates/order/sales_order_base.html:35
#: order/templates/order/sales_order_ship.html:25
#: report/templates/report/inventree_build_order_base.html:136
#: report/templates/report/inventree_so_report.html:77
#: stock/templates/stock/item_base.html:293
-#: templates/js/translated/order.js:329
+#: templates/js/translated/order.js:670
msgid "Sales Order"
msgstr ""
@@ -1148,7 +1177,7 @@ msgstr ""
#: build/templates/build/create_build_item.html:11
#, python-format
-msgid "The allocated stock will be installed into the following build output:
%(output)s"
+msgid "The allocated stock will be installed into the following build output:
%(output)s"
msgstr ""
#: build/templates/build/create_build_item.html:17
@@ -1172,9 +1201,9 @@ msgstr ""
msgid "Stock can be taken from any available location."
msgstr ""
-#: build/templates/build/detail.html:49 order/forms.py:88 order/models.py:782
-#: order/templates/order/purchase_order_detail.html:408
+#: build/templates/build/detail.html:49 order/forms.py:88 order/models.py:794
#: order/templates/order/receive_parts.html:25 stock/forms.py:134
+#: templates/js/translated/order.js:593
msgid "Destination"
msgstr ""
@@ -1184,16 +1213,16 @@ msgstr ""
#: build/templates/build/detail.html:73
#: stock/templates/stock/item_base.html:317
-#: templates/js/translated/stock.js:1007 templates/js/translated/stock.js:1755
-#: templates/js/translated/table_filters.js:116
-#: templates/js/translated/table_filters.js:198
+#: templates/js/translated/stock.js:931 templates/js/translated/stock.js:1873
+#: templates/js/translated/table_filters.js:129
+#: templates/js/translated/table_filters.js:211
msgid "Batch"
msgstr ""
#: build/templates/build/detail.html:119
#: order/templates/order/order_base.html:111
#: order/templates/order/sales_order_base.html:113
-#: templates/js/translated/build.js:910
+#: templates/js/translated/build.js:933
msgid "Created"
msgstr ""
@@ -1201,7 +1230,7 @@ msgstr ""
msgid "No target date set"
msgstr ""
-#: build/templates/build/detail.html:135 templates/js/translated/build.js:888
+#: build/templates/build/detail.html:135 templates/js/translated/build.js:911
msgid "Completed"
msgstr ""
@@ -1225,7 +1254,7 @@ msgstr ""
msgid "Auto Allocate"
msgstr ""
-#: build/templates/build/detail.html:175 templates/js/translated/build.js:778
+#: build/templates/build/detail.html:175 templates/js/translated/build.js:801
msgid "Unallocate stock"
msgstr ""
@@ -1238,8 +1267,8 @@ msgid "Order required parts"
msgstr ""
#: build/templates/build/detail.html:180
-#: company/templates/company/detail.html:33
-#: company/templates/company/detail.html:75 order/views.py:679
+#: company/templates/company/detail.html:32
+#: company/templates/company/detail.html:72 order/views.py:679
#: part/templates/part/category.html:140
msgid "Order Parts"
msgstr ""
@@ -1288,8 +1317,8 @@ msgstr ""
#: build/templates/build/navbar.html:45 order/templates/order/po_navbar.html:35
#: order/templates/order/sales_order_detail.html:43
#: order/templates/order/so_navbar.html:29 part/templates/part/detail.html:173
-#: part/templates/part/navbar.html:102 part/templates/part/navbar.html:105
-#: stock/templates/stock/item.html:87 stock/templates/stock/navbar.html:47
+#: part/templates/part/navbar.html:114 part/templates/part/navbar.html:117
+#: stock/templates/stock/item.html:88 stock/templates/stock/navbar.html:47
#: stock/templates/stock/navbar.html:50
msgid "Attachments"
msgstr ""
@@ -1298,48 +1327,48 @@ msgstr ""
msgid "Build Notes"
msgstr ""
-#: build/templates/build/detail.html:261 build/templates/build/detail.html:397
-#: company/templates/company/detail.html:173
-#: company/templates/company/detail.html:200
+#: build/templates/build/detail.html:261 build/templates/build/detail.html:398
+#: company/templates/company/detail.html:169
+#: company/templates/company/detail.html:196
#: order/templates/order/purchase_order_detail.html:62
#: order/templates/order/purchase_order_detail.html:95
#: order/templates/order/sales_order_detail.html:58
#: order/templates/order/sales_order_detail.html:85
-#: part/templates/part/detail.html:109 stock/templates/stock/item.html:102
-#: stock/templates/stock/item.html:187
+#: part/templates/part/detail.html:109 stock/templates/stock/item.html:103
+#: stock/templates/stock/item.html:188
msgid "Edit Notes"
msgstr ""
#: build/templates/build/detail.html:357
#: order/templates/order/po_attachments.html:79
-#: order/templates/order/purchase_order_detail.html:156
-#: order/templates/order/sales_order_detail.html:145
-#: part/templates/part/detail.html:802 stock/templates/stock/item.html:251
+#: order/templates/order/purchase_order_detail.html:157
+#: order/templates/order/sales_order_detail.html:146
+#: part/templates/part/detail.html:920 stock/templates/stock/item.html:253
#: templates/attachment_table.html:6
msgid "Add Attachment"
msgstr ""
-#: build/templates/build/detail.html:375
+#: build/templates/build/detail.html:376
#: order/templates/order/po_attachments.html:51
-#: order/templates/order/purchase_order_detail.html:128
-#: order/templates/order/sales_order_detail.html:118
-#: part/templates/part/detail.html:756 stock/templates/stock/item.html:219
+#: order/templates/order/purchase_order_detail.html:129
+#: order/templates/order/sales_order_detail.html:119
+#: part/templates/part/detail.html:874 stock/templates/stock/item.html:221
msgid "Edit Attachment"
msgstr ""
-#: build/templates/build/detail.html:382
+#: build/templates/build/detail.html:383
#: order/templates/order/po_attachments.html:58
-#: order/templates/order/purchase_order_detail.html:135
-#: order/templates/order/sales_order_detail.html:124
-#: part/templates/part/detail.html:765 stock/templates/stock/item.html:228
+#: order/templates/order/purchase_order_detail.html:136
+#: order/templates/order/sales_order_detail.html:125
+#: part/templates/part/detail.html:883 stock/templates/stock/item.html:230
msgid "Confirm Delete Operation"
msgstr ""
-#: build/templates/build/detail.html:383
+#: build/templates/build/detail.html:384
#: order/templates/order/po_attachments.html:59
-#: order/templates/order/purchase_order_detail.html:136
-#: order/templates/order/sales_order_detail.html:125
-#: part/templates/part/detail.html:766 stock/templates/stock/item.html:229
+#: order/templates/order/purchase_order_detail.html:137
+#: order/templates/order/sales_order_detail.html:126
+#: part/templates/part/detail.html:884 stock/templates/stock/item.html:231
msgid "Delete Attachment"
msgstr ""
@@ -1372,7 +1401,7 @@ msgid "Build Order Details"
msgstr ""
#: build/templates/build/navbar.html:15 order/templates/order/po_navbar.html:15
-#: templates/js/translated/stock.js:1414
+#: templates/js/translated/stock.js:1555
msgid "Details"
msgstr ""
@@ -1501,9 +1530,9 @@ msgstr ""
msgid "Stock item is over-allocated"
msgstr ""
-#: build/views.py:705 templates/js/translated/bom.js:250
-#: templates/js/translated/build.js:705 templates/js/translated/build.js:1000
-#: templates/js/translated/build.js:1179
+#: build/views.py:705 templates/js/translated/bom.js:269
+#: templates/js/translated/build.js:728 templates/js/translated/build.js:1019
+#: templates/js/translated/build.js:1196
msgid "Available"
msgstr ""
@@ -1539,7 +1568,7 @@ msgstr ""
msgid "Error reading file (data could be corrupted)"
msgstr ""
-#: common/forms.py:34 templates/js/translated/attachment.js:42
+#: common/forms.py:34 templates/js/translated/attachment.js:54
msgid "File"
msgstr ""
@@ -1556,546 +1585,594 @@ msgstr ""
msgid "Select {name} file to upload"
msgstr ""
-#: common/models.py:322 common/models.py:815 common/models.py:962
+#: common/models.py:308 common/models.py:839 common/models.py:986
msgid "Settings key (must be unique - case insensitive"
msgstr ""
-#: common/models.py:324
+#: common/models.py:310
msgid "Settings value"
msgstr ""
-#: common/models.py:359
+#: common/models.py:345
msgid "Must be an integer value"
msgstr ""
-#: common/models.py:382
+#: common/models.py:368
msgid "Value must be a boolean value"
msgstr ""
-#: common/models.py:393
+#: common/models.py:379
msgid "Value must be an integer value"
msgstr ""
-#: common/models.py:416
+#: common/models.py:402
msgid "Key string must be unique"
msgstr ""
-#: common/models.py:523
+#: common/models.py:509
msgid "InvenTree Instance Name"
msgstr ""
-#: common/models.py:525
+#: common/models.py:511
msgid "String descriptor for the server instance"
msgstr ""
-#: common/models.py:529
+#: common/models.py:515
msgid "Use instance name"
msgstr ""
-#: common/models.py:530
+#: common/models.py:516
msgid "Use the instance name in the title-bar"
msgstr ""
-#: common/models.py:536 company/models.py:97 company/models.py:98
+#: common/models.py:522 company/models.py:99 company/models.py:100
msgid "Company name"
msgstr ""
-#: common/models.py:537
+#: common/models.py:523
msgid "Internal company name"
msgstr ""
-#: common/models.py:542
+#: common/models.py:528
msgid "Base URL"
msgstr ""
-#: common/models.py:543
+#: common/models.py:529
msgid "Base URL for server instance"
msgstr ""
-#: common/models.py:549
+#: common/models.py:535
msgid "Default Currency"
msgstr ""
-#: common/models.py:550
+#: common/models.py:536
msgid "Default currency"
msgstr ""
-#: common/models.py:556
+#: common/models.py:542
msgid "Download from URL"
msgstr ""
-#: common/models.py:557
+#: common/models.py:543
msgid "Allow download of remote images and files from external URL"
msgstr ""
-#: common/models.py:563
+#: common/models.py:549
msgid "Barcode Support"
msgstr ""
-#: common/models.py:564
+#: common/models.py:550
msgid "Enable barcode scanner support"
msgstr ""
-#: common/models.py:570
+#: common/models.py:556
msgid "IPN Regex"
msgstr ""
-#: common/models.py:571
+#: common/models.py:557
msgid "Regular expression pattern for matching Part IPN"
msgstr ""
-#: common/models.py:575
+#: common/models.py:561
msgid "Allow Duplicate IPN"
msgstr ""
-#: common/models.py:576
+#: common/models.py:562
msgid "Allow multiple parts to share the same IPN"
msgstr ""
-#: common/models.py:582
+#: common/models.py:568
msgid "Allow Editing IPN"
msgstr ""
-#: common/models.py:583
+#: common/models.py:569
msgid "Allow changing the IPN value while editing a part"
msgstr ""
-#: common/models.py:589
+#: common/models.py:575
msgid "Copy Part BOM Data"
msgstr ""
-#: common/models.py:590
+#: common/models.py:576
msgid "Copy BOM data by default when duplicating a part"
msgstr ""
-#: common/models.py:596
+#: common/models.py:582
msgid "Copy Part Parameter Data"
msgstr ""
-#: common/models.py:597
+#: common/models.py:583
msgid "Copy parameter data by default when duplicating a part"
msgstr ""
-#: common/models.py:603
+#: common/models.py:589
msgid "Copy Part Test Data"
msgstr ""
-#: common/models.py:604
+#: common/models.py:590
msgid "Copy test data by default when duplicating a part"
msgstr ""
-#: common/models.py:610
+#: common/models.py:596
msgid "Copy Category Parameter Templates"
msgstr ""
-#: common/models.py:611
+#: common/models.py:597
msgid "Copy category parameter templates when creating a part"
msgstr ""
-#: common/models.py:617 part/models.py:2236 report/models.py:187
-#: stock/forms.py:224 templates/js/translated/table_filters.js:25
-#: templates/js/translated/table_filters.js:329
+#: common/models.py:603 part/models.py:2252 report/models.py:187
+#: stock/forms.py:224 templates/js/translated/table_filters.js:38
+#: templates/js/translated/table_filters.js:342
msgid "Template"
msgstr ""
-#: common/models.py:618
+#: common/models.py:604
msgid "Parts are templates by default"
msgstr ""
-#: common/models.py:624 part/models.py:803
-#: templates/js/translated/table_filters.js:133
-#: templates/js/translated/table_filters.js:341
+#: common/models.py:610 part/models.py:805
+#: templates/js/translated/table_filters.js:146
+#: templates/js/translated/table_filters.js:354
msgid "Assembly"
msgstr ""
-#: common/models.py:625
+#: common/models.py:611
msgid "Parts can be assembled from other components by default"
msgstr ""
-#: common/models.py:631 part/models.py:809
-#: templates/js/translated/table_filters.js:345
+#: common/models.py:617 part/models.py:811
+#: templates/js/translated/table_filters.js:358
msgid "Component"
msgstr ""
-#: common/models.py:632
+#: common/models.py:618
msgid "Parts can be used as sub-components by default"
msgstr ""
-#: common/models.py:638 part/models.py:820
+#: common/models.py:624 part/models.py:822
msgid "Purchaseable"
msgstr ""
-#: common/models.py:639
+#: common/models.py:625
msgid "Parts are purchaseable by default"
msgstr ""
-#: common/models.py:645 part/models.py:825
-#: templates/js/translated/table_filters.js:353
+#: common/models.py:631 part/models.py:827
+#: templates/js/translated/table_filters.js:366
msgid "Salable"
msgstr ""
-#: common/models.py:646
+#: common/models.py:632
msgid "Parts are salable by default"
msgstr ""
-#: common/models.py:652 part/models.py:815
-#: templates/js/translated/table_filters.js:33
-#: templates/js/translated/table_filters.js:357
+#: common/models.py:638 part/models.py:817
+#: templates/js/translated/table_filters.js:46
+#: templates/js/translated/table_filters.js:370
msgid "Trackable"
msgstr ""
-#: common/models.py:653
+#: common/models.py:639
msgid "Parts are trackable by default"
msgstr ""
-#: common/models.py:659 part/models.py:835
-#: part/templates/part/part_base.html:61
-#: templates/js/translated/table_filters.js:29
+#: common/models.py:645 part/models.py:837
+#: part/templates/part/part_base.html:66
+#: templates/js/translated/table_filters.js:42
msgid "Virtual"
msgstr ""
-#: common/models.py:660
+#: common/models.py:646
msgid "Parts are virtual by default"
msgstr ""
-#: common/models.py:667
+#: common/models.py:653
msgid "Show Quantity in Forms"
msgstr ""
-#: common/models.py:668
+#: common/models.py:654
msgid "Display available part quantity in some forms"
msgstr ""
-#: common/models.py:674
+#: common/models.py:660
msgid "Show Import in Views"
msgstr ""
-#: common/models.py:675
+#: common/models.py:661
msgid "Display the import wizard in some part views"
msgstr ""
-#: common/models.py:681
+#: common/models.py:667
msgid "Show Price in Forms"
msgstr ""
-#: common/models.py:682
+#: common/models.py:668
msgid "Display part price in some forms"
msgstr ""
-#: common/models.py:688
+#: common/models.py:674
msgid "Show related parts"
msgstr ""
-#: common/models.py:689
+#: common/models.py:675
msgid "Display related parts for a part"
msgstr ""
-#: common/models.py:695
+#: common/models.py:681
msgid "Create initial stock"
msgstr ""
-#: common/models.py:696
+#: common/models.py:682
msgid "Create initial stock on part creation"
msgstr ""
-#: common/models.py:702
+#: common/models.py:688
msgid "Internal Prices"
msgstr ""
-#: common/models.py:703
+#: common/models.py:689
msgid "Enable internal prices for parts"
msgstr ""
-#: common/models.py:709
+#: common/models.py:695
msgid "Internal Price as BOM-Price"
msgstr ""
-#: common/models.py:710
+#: common/models.py:696
msgid "Use the internal price (if set) in BOM-price calculations"
msgstr ""
-#: common/models.py:716 templates/stats.html:25
+#: common/models.py:702 templates/stats.html:25
msgid "Debug Mode"
msgstr ""
-#: common/models.py:717
+#: common/models.py:703
msgid "Generate reports in debug mode (HTML output)"
msgstr ""
-#: common/models.py:723
+#: common/models.py:709
msgid "Page Size"
msgstr ""
-#: common/models.py:724
+#: common/models.py:710
msgid "Default page size for PDF reports"
msgstr ""
-#: common/models.py:734
+#: common/models.py:720
msgid "Test Reports"
msgstr ""
-#: common/models.py:735
+#: common/models.py:721
msgid "Enable generation of test reports"
msgstr ""
-#: common/models.py:741
+#: common/models.py:727
msgid "Stock Expiry"
msgstr ""
-#: common/models.py:742
+#: common/models.py:728
msgid "Enable stock expiry functionality"
msgstr ""
-#: common/models.py:748
+#: common/models.py:734
msgid "Sell Expired Stock"
msgstr ""
-#: common/models.py:749
+#: common/models.py:735
msgid "Allow sale of expired stock"
msgstr ""
-#: common/models.py:755
+#: common/models.py:741
msgid "Stock Stale Time"
msgstr ""
-#: common/models.py:756
+#: common/models.py:742
msgid "Number of days stock items are considered stale before expiring"
msgstr ""
-#: common/models.py:758
+#: common/models.py:744
msgid "days"
msgstr ""
-#: common/models.py:763
+#: common/models.py:749
msgid "Build Expired Stock"
msgstr ""
-#: common/models.py:764
+#: common/models.py:750
msgid "Allow building with expired stock"
msgstr ""
-#: common/models.py:770
+#: common/models.py:756
msgid "Stock Ownership Control"
msgstr ""
-#: common/models.py:771
+#: common/models.py:757
msgid "Enable ownership control over stock locations and items"
msgstr ""
-#: common/models.py:777
+#: common/models.py:763
msgid "Group by Part"
msgstr ""
-#: common/models.py:778
+#: common/models.py:764
msgid "Group stock items by part reference in table views"
msgstr ""
-#: common/models.py:784
+#: common/models.py:770
msgid "Build Order Reference Prefix"
msgstr ""
-#: common/models.py:785
+#: common/models.py:771
msgid "Prefix value for build order reference"
msgstr ""
-#: common/models.py:790
+#: common/models.py:776
msgid "Build Order Reference Regex"
msgstr ""
-#: common/models.py:791
+#: common/models.py:777
msgid "Regular expression pattern for matching build order reference"
msgstr ""
-#: common/models.py:795
+#: common/models.py:781
msgid "Sales Order Reference Prefix"
msgstr ""
-#: common/models.py:796
+#: common/models.py:782
msgid "Prefix value for sales order reference"
msgstr ""
-#: common/models.py:801
+#: common/models.py:787
msgid "Purchase Order Reference Prefix"
msgstr ""
-#: common/models.py:802
+#: common/models.py:788
msgid "Prefix value for purchase order reference"
msgstr ""
-#: common/models.py:826
+#: common/models.py:794
+msgid "Enable build"
+msgstr ""
+
+#: common/models.py:795
+msgid "Enable build functionality in InvenTree interface"
+msgstr ""
+
+#: common/models.py:800
+msgid "Enable buy"
+msgstr ""
+
+#: common/models.py:801
+msgid "Enable buy functionality in InvenTree interface"
+msgstr ""
+
+#: common/models.py:806
+msgid "Enable sell"
+msgstr ""
+
+#: common/models.py:807
+msgid "Enable sell functionality in InvenTree interface"
+msgstr ""
+
+#: common/models.py:812
+msgid "Enable stock"
+msgstr ""
+
+#: common/models.py:813
+msgid "Enable stock functionality in InvenTree interface"
+msgstr ""
+
+#: common/models.py:818
+msgid "Enable SO"
+msgstr ""
+
+#: common/models.py:819
+msgid "Enable SO functionality in InvenTree interface"
+msgstr ""
+
+#: common/models.py:824
+msgid "Enable PO"
+msgstr ""
+
+#: common/models.py:825
+msgid "Enable PO functionality in InvenTree interface"
+msgstr ""
+
+#: common/models.py:850
msgid "Show starred parts"
msgstr ""
-#: common/models.py:827
+#: common/models.py:851
msgid "Show starred parts on the homepage"
msgstr ""
-#: common/models.py:832
+#: common/models.py:856
msgid "Show latest parts"
msgstr ""
-#: common/models.py:833
+#: common/models.py:857
msgid "Show latest parts on the homepage"
msgstr ""
-#: common/models.py:838
+#: common/models.py:862
msgid "Recent Part Count"
msgstr ""
-#: common/models.py:839
+#: common/models.py:863
msgid "Number of recent parts to display on index page"
msgstr ""
-#: common/models.py:845
+#: common/models.py:869
msgid "Show unvalidated BOMs"
msgstr ""
-#: common/models.py:846
+#: common/models.py:870
msgid "Show BOMs that await validation on the homepage"
msgstr ""
-#: common/models.py:851
+#: common/models.py:875
msgid "Show recent stock changes"
msgstr ""
-#: common/models.py:852
+#: common/models.py:876
msgid "Show recently changed stock items on the homepage"
msgstr ""
-#: common/models.py:857
+#: common/models.py:881
msgid "Recent Stock Count"
msgstr ""
-#: common/models.py:858
+#: common/models.py:882
msgid "Number of recent stock items to display on index page"
msgstr ""
-#: common/models.py:863
+#: common/models.py:887
msgid "Show low stock"
msgstr ""
-#: common/models.py:864
+#: common/models.py:888
msgid "Show low stock items on the homepage"
msgstr ""
-#: common/models.py:869
+#: common/models.py:893
msgid "Show depleted stock"
msgstr ""
-#: common/models.py:870
+#: common/models.py:894
msgid "Show depleted stock items on the homepage"
msgstr ""
-#: common/models.py:875
+#: common/models.py:899
msgid "Show needed stock"
msgstr ""
-#: common/models.py:876
+#: common/models.py:900
msgid "Show stock items needed for builds on the homepage"
msgstr ""
-#: common/models.py:881
+#: common/models.py:905
msgid "Show expired stock"
msgstr ""
-#: common/models.py:882
+#: common/models.py:906
msgid "Show expired stock items on the homepage"
msgstr ""
-#: common/models.py:887
+#: common/models.py:911
msgid "Show stale stock"
msgstr ""
-#: common/models.py:888
+#: common/models.py:912
msgid "Show stale stock items on the homepage"
msgstr ""
-#: common/models.py:893
+#: common/models.py:917
msgid "Show pending builds"
msgstr ""
-#: common/models.py:894
+#: common/models.py:918
msgid "Show pending builds on the homepage"
msgstr ""
-#: common/models.py:899
+#: common/models.py:923
msgid "Show overdue builds"
msgstr ""
-#: common/models.py:900
+#: common/models.py:924
msgid "Show overdue builds on the homepage"
msgstr ""
-#: common/models.py:905
+#: common/models.py:929
msgid "Show outstanding POs"
msgstr ""
-#: common/models.py:906
+#: common/models.py:930
msgid "Show outstanding POs on the homepage"
msgstr ""
-#: common/models.py:911
+#: common/models.py:935
msgid "Show overdue POs"
msgstr ""
-#: common/models.py:912
+#: common/models.py:936
msgid "Show overdue POs on the homepage"
msgstr ""
-#: common/models.py:917
+#: common/models.py:941
msgid "Show outstanding SOs"
msgstr ""
-#: common/models.py:918
+#: common/models.py:942
msgid "Show outstanding SOs on the homepage"
msgstr ""
-#: common/models.py:923
+#: common/models.py:947
msgid "Show overdue SOs"
msgstr ""
-#: common/models.py:924
+#: common/models.py:948
msgid "Show overdue SOs on the homepage"
msgstr ""
-#: common/models.py:930
+#: common/models.py:954
msgid "Inline label display"
msgstr ""
-#: common/models.py:931
+#: common/models.py:955
msgid "Display PDF labels in the browser, instead of downloading as a file"
msgstr ""
-#: common/models.py:937
+#: common/models.py:961
msgid "Inline report display"
msgstr ""
-#: common/models.py:938
+#: common/models.py:962
msgid "Display PDF reports in the browser, instead of downloading as a file"
msgstr ""
-#: common/models.py:944
+#: common/models.py:968
msgid "Search Preview Results"
msgstr ""
-#: common/models.py:945
+#: common/models.py:969
msgid "Number of results to show in search preview window"
msgstr ""
-#: common/models.py:1002 company/forms.py:43
+#: common/models.py:1026 company/forms.py:43
msgid "Price break quantity"
msgstr ""
-#: common/models.py:1009 company/templates/company/supplier_part.html:231
-#: templates/js/translated/part.js:1153
+#: common/models.py:1033 company/templates/company/supplier_part.html:231
+#: templates/js/translated/part.js:1322
msgid "Price"
msgstr ""
-#: common/models.py:1010
+#: common/models.py:1034
msgid "Unit price at specified quantity"
msgstr ""
-#: common/models.py:1103
+#: common/models.py:1127
msgid "Default"
msgstr ""
@@ -2123,7 +2200,7 @@ msgstr ""
#: order/templates/order/po_navbar.html:19
#: order/templates/order/po_navbar.html:22
#: order/templates/order/purchase_order_detail.html:26 order/views.py:290
-#: part/templates/part/bom_upload/upload_file.html:45
+#: part/templates/part/bom_upload/upload_file.html:65
#: part/templates/part/import_wizard/part_upload.html:45 part/views.py:268
#: part/views.py:882
msgid "Upload File"
@@ -2154,7 +2231,7 @@ msgstr ""
#: order/templates/order/order_wizard/po_upload.html:40
#: 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:43
+#: part/templates/part/bom_upload/upload_file.html:63
#: 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:43
@@ -2169,244 +2246,249 @@ msgstr ""
msgid "Image URL"
msgstr ""
-#: company/models.py:102
+#: company/models.py:104
msgid "Company description"
msgstr ""
-#: company/models.py:103
+#: company/models.py:105
msgid "Description of the company"
msgstr ""
-#: company/models.py:109 company/templates/company/company_base.html:70
-#: templates/js/translated/company.js:303
+#: company/models.py:111 company/templates/company/company_base.html:70
+#: templates/js/translated/company.js:348
msgid "Website"
msgstr ""
-#: company/models.py:110
+#: company/models.py:112
msgid "Company website URL"
msgstr ""
-#: company/models.py:114 company/templates/company/company_base.html:88
+#: company/models.py:116 company/templates/company/company_base.html:88
msgid "Address"
msgstr ""
-#: company/models.py:115
+#: company/models.py:117
msgid "Company address"
msgstr ""
-#: company/models.py:118
+#: company/models.py:120
msgid "Phone number"
msgstr ""
-#: company/models.py:119
+#: company/models.py:121
msgid "Contact phone number"
msgstr ""
-#: company/models.py:122 company/templates/company/company_base.html:102
+#: company/models.py:124 company/templates/company/company_base.html:102
msgid "Email"
msgstr ""
-#: company/models.py:122
+#: company/models.py:124
msgid "Contact email address"
msgstr ""
-#: company/models.py:125 company/templates/company/company_base.html:109
+#: company/models.py:127 company/templates/company/company_base.html:109
msgid "Contact"
msgstr ""
-#: company/models.py:126
+#: company/models.py:128
msgid "Point of contact"
msgstr ""
-#: company/models.py:128 company/models.py:345 company/models.py:513
-#: order/models.py:160 part/models.py:712
+#: company/models.py:130 company/models.py:347 company/models.py:563
+#: order/models.py:160 part/models.py:714
#: report/templates/report/inventree_build_order_base.html:165
-#: templates/js/translated/company.js:486
-#: templates/js/translated/company.js:768 templates/js/translated/part.js:819
+#: templates/js/translated/company.js:535
+#: templates/js/translated/company.js:823 templates/js/translated/part.js:972
msgid "Link"
msgstr ""
-#: company/models.py:128
+#: company/models.py:130
msgid "Link to external company information"
msgstr ""
-#: company/models.py:136 part/models.py:722
+#: company/models.py:138 part/models.py:724
msgid "Image"
msgstr ""
-#: company/models.py:141
+#: company/models.py:143
msgid "is customer"
msgstr ""
-#: company/models.py:141
+#: company/models.py:143
msgid "Do you sell items to this company?"
msgstr ""
-#: company/models.py:143
+#: company/models.py:145
msgid "is supplier"
msgstr ""
-#: company/models.py:143
+#: company/models.py:145
msgid "Do you purchase items from this company?"
msgstr ""
-#: company/models.py:145
+#: company/models.py:147
msgid "is manufacturer"
msgstr ""
-#: company/models.py:145
+#: company/models.py:147
msgid "Does this company manufacture parts?"
msgstr ""
-#: company/models.py:149 company/serializers.py:245
-#: company/templates/company/company_base.html:76
+#: company/models.py:151 company/serializers.py:264
+#: company/templates/company/company_base.html:76 stock/serializers.py:155
msgid "Currency"
msgstr ""
-#: company/models.py:152
+#: company/models.py:154
msgid "Default currency used for this company"
msgstr ""
-#: company/models.py:317 company/models.py:484 stock/models.py:448
+#: company/models.py:319 company/models.py:534 stock/models.py:454
#: stock/templates/stock/item_base.html:237
msgid "Base Part"
msgstr ""
-#: company/models.py:321 company/models.py:488 order/views.py:1082
+#: company/models.py:323 company/models.py:538 order/views.py:1082
msgid "Select part"
msgstr ""
-#: company/models.py:332 company/templates/company/company_base.html:116
+#: company/models.py:334 company/templates/company/company_base.html:116
#: company/templates/company/manufacturer_part.html:89
#: company/templates/company/supplier_part.html:98 part/bom.py:170
#: part/bom.py:241 stock/templates/stock/item_base.html:366
-#: templates/js/translated/company.js:287
-#: templates/js/translated/company.js:463
-#: templates/js/translated/company.js:739
+#: templates/js/translated/company.js:332
+#: templates/js/translated/company.js:512
+#: templates/js/translated/company.js:794 templates/js/translated/part.js:222
msgid "Manufacturer"
msgstr ""
-#: company/models.py:333
+#: company/models.py:335 templates/js/translated/part.js:223
msgid "Select manufacturer"
msgstr ""
-#: company/models.py:339 company/templates/company/manufacturer_part.html:93
-#: company/templates/company/supplier_part.html:106
-#: order/templates/order/purchase_order_detail.html:331 part/bom.py:171
-#: part/bom.py:242 templates/js/translated/company.js:479
-#: templates/js/translated/company.js:757
+#: company/models.py:341 company/templates/company/manufacturer_part.html:93
+#: company/templates/company/supplier_part.html:106 part/bom.py:171
+#: part/bom.py:242 templates/js/translated/company.js:528
+#: templates/js/translated/company.js:812 templates/js/translated/order.js:505
+#: templates/js/translated/part.js:233
msgid "MPN"
msgstr ""
-#: company/models.py:340
+#: company/models.py:342 templates/js/translated/part.js:234
msgid "Manufacturer Part Number"
msgstr ""
-#: company/models.py:346
+#: company/models.py:348
msgid "URL for external manufacturer part link"
msgstr ""
-#: company/models.py:352
+#: company/models.py:354
msgid "Manufacturer part description"
msgstr ""
-#: company/models.py:406 company/models.py:507
+#: company/models.py:408 company/models.py:557
#: company/templates/company/manufacturer_part.html:6
#: company/templates/company/manufacturer_part.html:23
#: stock/templates/stock/item_base.html:376
msgid "Manufacturer Part"
msgstr ""
-#: company/models.py:413
+#: company/models.py:415
msgid "Parameter name"
msgstr ""
-#: company/models.py:419
+#: company/models.py:421
#: report/templates/report/inventree_test_report_base.html:90
-#: stock/models.py:1808 templates/InvenTree/settings/header.html:8
-#: templates/js/translated/company.js:589 templates/js/translated/part.js:480
-#: templates/js/translated/stock.js:505
+#: stock/models.py:1819 templates/InvenTree/settings/header.html:8
+#: templates/js/translated/company.js:642 templates/js/translated/part.js:612
+#: templates/js/translated/stock.js:576
msgid "Value"
msgstr ""
-#: company/models.py:420
+#: company/models.py:422
msgid "Parameter value"
msgstr ""
-#: company/models.py:426 part/models.py:797 part/models.py:2204
-#: templates/js/translated/company.js:595 templates/js/translated/part.js:486
+#: company/models.py:428 part/models.py:799 part/models.py:2220
+#: templates/js/translated/company.js:648 templates/js/translated/part.js:618
msgid "Units"
msgstr ""
-#: company/models.py:427
+#: company/models.py:429
msgid "Parameter units"
msgstr ""
-#: company/models.py:494 company/templates/company/company_base.html:121
+#: company/models.py:501
+msgid "Linked manufacturer part must reference the same base part"
+msgstr ""
+
+#: company/models.py:544 company/templates/company/company_base.html:121
#: company/templates/company/supplier_part.html:88 order/models.py:260
#: order/templates/order/order_base.html:92
#: order/templates/order/order_wizard/select_pos.html:30 part/bom.py:175
#: part/bom.py:286 stock/templates/stock/item_base.html:383
-#: templates/js/translated/company.js:291
-#: templates/js/translated/company.js:713 templates/js/translated/order.js:254
+#: templates/js/translated/company.js:336
+#: templates/js/translated/company.js:768 templates/js/translated/order.js:328
+#: templates/js/translated/part.js:203
msgid "Supplier"
msgstr ""
-#: company/models.py:495
+#: company/models.py:545 templates/js/translated/part.js:204
msgid "Select supplier"
msgstr ""
-#: company/models.py:500 company/templates/company/supplier_part.html:92
-#: order/templates/order/purchase_order_detail.html:318 part/bom.py:176
-#: part/bom.py:287
+#: company/models.py:550 company/templates/company/supplier_part.html:92
+#: part/bom.py:176 part/bom.py:287 templates/js/translated/order.js:492
+#: templates/js/translated/part.js:214
msgid "SKU"
msgstr ""
-#: company/models.py:501
+#: company/models.py:551 templates/js/translated/part.js:215
msgid "Supplier stock keeping unit"
msgstr ""
-#: company/models.py:508
+#: company/models.py:558
msgid "Select manufacturer part"
msgstr ""
-#: company/models.py:514
+#: company/models.py:564
msgid "URL for external supplier part link"
msgstr ""
-#: company/models.py:520
+#: company/models.py:570
msgid "Supplier part description"
msgstr ""
-#: company/models.py:525 company/templates/company/supplier_part.html:120
-#: part/models.py:2352 report/templates/report/inventree_po_report.html:93
+#: company/models.py:575 company/templates/company/supplier_part.html:120
+#: part/models.py:2368 report/templates/report/inventree_po_report.html:93
#: report/templates/report/inventree_so_report.html:93
msgid "Note"
msgstr ""
-#: company/models.py:529 part/models.py:1590
+#: company/models.py:579 part/models.py:1599
msgid "base cost"
msgstr ""
-#: company/models.py:529 part/models.py:1590
+#: company/models.py:579 part/models.py:1599
msgid "Minimum charge (e.g. stocking fee)"
msgstr ""
-#: company/models.py:531 company/templates/company/supplier_part.html:113
-#: stock/models.py:472 stock/templates/stock/item_base.html:324
-#: templates/js/translated/company.js:789 templates/js/translated/stock.js:1086
+#: company/models.py:581 company/templates/company/supplier_part.html:113
+#: stock/models.py:478 stock/templates/stock/item_base.html:324
+#: templates/js/translated/company.js:844 templates/js/translated/stock.js:1057
msgid "Packaging"
msgstr ""
-#: company/models.py:531
+#: company/models.py:581
msgid "Part packaging"
msgstr ""
-#: company/models.py:533 part/models.py:1592
+#: company/models.py:583 part/models.py:1601
msgid "multiple"
msgstr ""
-#: company/models.py:533
+#: company/models.py:583
msgid "Order multiple"
msgstr ""
@@ -2420,7 +2502,7 @@ msgstr ""
#: company/templates/company/company_base.html:9
#: company/templates/company/company_base.html:35
-#: templates/InvenTree/search.html:304 templates/js/translated/company.js:276
+#: templates/InvenTree/search.html:304 templates/js/translated/company.js:321
msgid "Company"
msgstr ""
@@ -2435,7 +2517,7 @@ msgid "Download image from URL"
msgstr ""
#: company/templates/company/company_base.html:46
-#: templates/js/translated/order.js:83
+#: templates/js/translated/order.js:117
msgid "Create Purchase Order"
msgstr ""
@@ -2460,16 +2542,16 @@ msgstr ""
msgid "Phone"
msgstr ""
-#: company/templates/company/company_base.html:126 order/models.py:544
-#: order/templates/order/sales_order_base.html:94 stock/models.py:490
-#: stock/models.py:491 stock/templates/stock/item_base.html:276
-#: templates/js/translated/company.js:283 templates/js/translated/order.js:351
-#: templates/js/translated/stock.js:1467
+#: company/templates/company/company_base.html:126 order/models.py:550
+#: order/templates/order/sales_order_base.html:94 stock/models.py:496
+#: stock/models.py:497 stock/templates/stock/item_base.html:276
+#: templates/js/translated/company.js:328 templates/js/translated/order.js:692
+#: templates/js/translated/stock.js:1608
msgid "Customer"
msgstr ""
#: company/templates/company/company_base.html:193
-#: part/templates/part/part_base.html:405
+#: part/templates/part/part_base.html:418
msgid "Upload Image"
msgstr ""
@@ -2490,8 +2572,8 @@ msgstr ""
msgid "New Supplier Part"
msgstr ""
-#: company/templates/company/detail.html:28
-#: company/templates/company/detail.html:70
+#: company/templates/company/detail.html:27
+#: company/templates/company/detail.html:67
#: company/templates/company/manufacturer_part.html:112
#: company/templates/company/manufacturer_part.html:136
#: part/templates/part/category.html:135 part/templates/part/detail.html:292
@@ -2499,106 +2581,106 @@ msgstr ""
msgid "Options"
msgstr ""
-#: company/templates/company/detail.html:33
-#: company/templates/company/detail.html:75
+#: company/templates/company/detail.html:32
+#: company/templates/company/detail.html:72
#: part/templates/part/category.html:140
msgid "Order parts"
msgstr ""
-#: company/templates/company/detail.html:36
-#: company/templates/company/detail.html:78
+#: company/templates/company/detail.html:35
+#: company/templates/company/detail.html:75
msgid "Delete parts"
msgstr ""
-#: company/templates/company/detail.html:36
-#: company/templates/company/detail.html:78
+#: company/templates/company/detail.html:35
+#: company/templates/company/detail.html:75
msgid "Delete Parts"
msgstr ""
-#: company/templates/company/detail.html:56 templates/InvenTree/search.html:149
+#: company/templates/company/detail.html:54 templates/InvenTree/search.html:149
msgid "Manufacturer Parts"
msgstr ""
-#: company/templates/company/detail.html:64
+#: company/templates/company/detail.html:62
msgid "Create new manufacturer part"
msgstr ""
-#: company/templates/company/detail.html:65 part/templates/part/detail.html:312
+#: company/templates/company/detail.html:63 part/templates/part/detail.html:312
msgid "New Manufacturer Part"
msgstr ""
-#: company/templates/company/detail.html:97
+#: company/templates/company/detail.html:93
msgid "Supplier Stock"
msgstr ""
-#: company/templates/company/detail.html:106
-#: company/templates/company/navbar.html:40
-#: company/templates/company/navbar.html:43
+#: company/templates/company/detail.html:102
+#: company/templates/company/navbar.html:46
+#: company/templates/company/navbar.html:49
#: order/templates/order/purchase_orders.html:8
#: order/templates/order/purchase_orders.html:13
-#: part/templates/part/detail.html:50 part/templates/part/navbar.html:71
-#: part/templates/part/navbar.html:74 templates/InvenTree/index.html:260
+#: part/templates/part/detail.html:50 part/templates/part/navbar.html:82
+#: part/templates/part/navbar.html:85 templates/InvenTree/index.html:260
#: templates/InvenTree/search.html:325
#: templates/InvenTree/settings/navbar.html:107
-#: templates/InvenTree/settings/navbar.html:109 templates/navbar.html:37
+#: templates/InvenTree/settings/navbar.html:109 templates/navbar.html:44
#: users/models.py:45
msgid "Purchase Orders"
msgstr ""
-#: company/templates/company/detail.html:112
+#: company/templates/company/detail.html:108
#: order/templates/order/purchase_orders.html:20
msgid "Create new purchase order"
msgstr ""
-#: company/templates/company/detail.html:113
+#: company/templates/company/detail.html:109
#: order/templates/order/purchase_orders.html:21
msgid "New Purchase Order"
msgstr ""
-#: company/templates/company/detail.html:128
-#: company/templates/company/navbar.html:49
-#: company/templates/company/navbar.html:52
+#: company/templates/company/detail.html:124
+#: company/templates/company/navbar.html:55
+#: company/templates/company/navbar.html:58
#: order/templates/order/sales_orders.html:8
#: order/templates/order/sales_orders.html:13
-#: part/templates/part/detail.html:71 part/templates/part/navbar.html:79
-#: part/templates/part/navbar.html:82 templates/InvenTree/index.html:291
+#: part/templates/part/detail.html:71 part/templates/part/navbar.html:91
+#: part/templates/part/navbar.html:94 templates/InvenTree/index.html:291
#: templates/InvenTree/search.html:345
#: templates/InvenTree/settings/navbar.html:113
-#: templates/InvenTree/settings/navbar.html:115 templates/navbar.html:46
+#: templates/InvenTree/settings/navbar.html:115 templates/navbar.html:55
#: users/models.py:46
msgid "Sales Orders"
msgstr ""
-#: company/templates/company/detail.html:134
+#: company/templates/company/detail.html:130
#: order/templates/order/sales_orders.html:20
msgid "Create new sales order"
msgstr ""
-#: company/templates/company/detail.html:135
+#: company/templates/company/detail.html:131
#: order/templates/order/sales_orders.html:21
msgid "New Sales Order"
msgstr ""
-#: company/templates/company/detail.html:151
-#: company/templates/company/navbar.html:55
-#: company/templates/company/navbar.html:58
-#: templates/js/translated/build.js:597
+#: company/templates/company/detail.html:147
+#: company/templates/company/navbar.html:61
+#: company/templates/company/navbar.html:64
+#: templates/js/translated/build.js:620
msgid "Assigned Stock"
msgstr ""
-#: company/templates/company/detail.html:169
+#: company/templates/company/detail.html:165
msgid "Company Notes"
msgstr ""
#: company/templates/company/detail.html:364
#: company/templates/company/manufacturer_part.html:200
-#: part/templates/part/detail.html:826
+#: part/templates/part/detail.html:357
msgid "Delete Supplier Parts?"
msgstr ""
#: company/templates/company/detail.html:365
#: company/templates/company/manufacturer_part.html:201
-#: part/templates/part/detail.html:827
+#: part/templates/part/detail.html:358
msgid "All selected supplier parts will be deleted"
msgstr ""
@@ -2609,17 +2691,17 @@ msgstr ""
#: company/templates/company/manufacturer_part.html:40
#: company/templates/company/supplier_part.html:40
#: company/templates/company/supplier_part.html:146
-#: part/templates/part/detail.html:55 part/templates/part/part_base.html:109
+#: part/templates/part/detail.html:55 part/templates/part/part_base.html:116
msgid "Order part"
msgstr ""
#: company/templates/company/manufacturer_part.html:45
-#: templates/js/translated/company.js:511
+#: templates/js/translated/company.js:560
msgid "Edit manufacturer part"
msgstr ""
#: company/templates/company/manufacturer_part.html:49
-#: templates/js/translated/company.js:512
+#: templates/js/translated/company.js:561
msgid "Delete manufacturer part"
msgstr ""
@@ -2634,9 +2716,9 @@ msgstr ""
#: company/templates/company/manufacturer_part.html:103
#: company/templates/company/manufacturer_part_navbar.html:21
-#: company/views.py:49 part/templates/part/navbar.html:65
-#: part/templates/part/navbar.html:68 part/templates/part/prices.html:144
-#: templates/InvenTree/search.html:316 templates/navbar.html:35
+#: company/views.py:49 part/templates/part/navbar.html:75
+#: part/templates/part/navbar.html:78 part/templates/part/prices.html:163
+#: templates/InvenTree/search.html:316 templates/navbar.html:41
msgid "Suppliers"
msgstr ""
@@ -2649,8 +2731,8 @@ msgstr ""
#: company/templates/company/manufacturer_part.html:138
#: company/templates/company/manufacturer_part.html:239
#: part/templates/part/detail.html:214 part/templates/part/detail.html:294
-#: part/templates/part/detail.html:317 templates/js/translated/company.js:377
-#: users/models.py:194
+#: part/templates/part/detail.html:317 templates/js/translated/company.js:424
+#: templates/js/translated/helpers.js:31 users/models.py:194
msgid "Delete"
msgstr ""
@@ -2659,8 +2741,8 @@ msgstr ""
#: company/templates/company/manufacturer_part_navbar.html:14
#: part/templates/part/category_navbar.html:38
#: part/templates/part/category_navbar.html:41
-#: part/templates/part/detail.html:155 part/templates/part/navbar.html:14
-#: part/templates/part/navbar.html:17
+#: part/templates/part/detail.html:155 part/templates/part/navbar.html:20
+#: part/templates/part/navbar.html:23
msgid "Parameters"
msgstr ""
@@ -2676,7 +2758,7 @@ msgid "Delete parameters"
msgstr ""
#: company/templates/company/manufacturer_part.html:176
-#: part/templates/part/detail.html:719
+#: part/templates/part/detail.html:834
msgid "Add Parameter"
msgstr ""
@@ -2693,18 +2775,18 @@ msgid "Manufacturer Part Stock"
msgstr ""
#: company/templates/company/manufacturer_part_navbar.html:29
-#: company/templates/company/navbar.html:34
+#: company/templates/company/navbar.html:39
#: company/templates/company/supplier_part_navbar.html:15
-#: part/templates/part/navbar.html:31 stock/api.py:53
+#: part/templates/part/navbar.html:38 stock/api.py:54
#: stock/templates/stock/loc_link.html:7 stock/templates/stock/location.html:36
#: stock/templates/stock/stock_app_base.html:10
#: templates/InvenTree/index.html:150 templates/InvenTree/search.html:196
#: templates/InvenTree/search.html:232
#: templates/InvenTree/settings/navbar.html:95
#: templates/InvenTree/settings/navbar.html:97
-#: templates/js/translated/part.js:401 templates/js/translated/part.js:626
-#: templates/js/translated/part.js:786 templates/js/translated/stock.js:133
-#: templates/js/translated/stock.js:935 templates/navbar.html:26
+#: templates/js/translated/part.js:529 templates/js/translated/part.js:758
+#: templates/js/translated/part.js:934 templates/js/translated/stock.js:202
+#: templates/js/translated/stock.js:850 templates/navbar.html:32
msgid "Stock"
msgstr ""
@@ -2717,41 +2799,41 @@ msgstr ""
msgid "Orders"
msgstr ""
-#: company/templates/company/navbar.html:13
-#: company/templates/company/navbar.html:16
+#: company/templates/company/navbar.html:17
+#: company/templates/company/navbar.html:20
msgid "Manufactured Parts"
msgstr ""
-#: company/templates/company/navbar.html:22
-#: company/templates/company/navbar.html:25
+#: company/templates/company/navbar.html:26
+#: company/templates/company/navbar.html:29
msgid "Supplied Parts"
msgstr ""
-#: company/templates/company/navbar.html:31 part/templates/part/navbar.html:28
+#: company/templates/company/navbar.html:36 part/templates/part/navbar.html:35
#: stock/templates/stock/location.html:119
#: stock/templates/stock/location.html:134
#: stock/templates/stock/location.html:148
#: stock/templates/stock/location_navbar.html:18
#: stock/templates/stock/location_navbar.html:21
-#: templates/InvenTree/search.html:198 templates/js/translated/stock.js:1366
+#: templates/InvenTree/search.html:198 templates/js/translated/stock.js:1507
#: templates/stats.html:93 templates/stats.html:102 users/models.py:43
msgid "Stock Items"
msgstr ""
#: company/templates/company/supplier_part.html:7
-#: company/templates/company/supplier_part.html:24 stock/models.py:457
+#: company/templates/company/supplier_part.html:24 stock/models.py:463
#: stock/templates/stock/item_base.html:388
-#: templates/js/translated/company.js:729 templates/js/translated/stock.js:1058
+#: templates/js/translated/company.js:784 templates/js/translated/stock.js:1014
msgid "Supplier Part"
msgstr ""
#: company/templates/company/supplier_part.html:44
-#: templates/js/translated/company.js:802
+#: templates/js/translated/company.js:857
msgid "Edit supplier part"
msgstr ""
#: company/templates/company/supplier_part.html:48
-#: templates/js/translated/company.js:803
+#: templates/js/translated/company.js:858
msgid "Delete supplier part"
msgstr ""
@@ -2775,13 +2857,13 @@ msgid "Order Part"
msgstr ""
#: company/templates/company/supplier_part.html:158
-#: part/templates/part/navbar.html:58 part/templates/part/prices.html:7
+#: part/templates/part/navbar.html:67 part/templates/part/prices.html:7
msgid "Pricing Information"
msgstr ""
#: company/templates/company/supplier_part.html:164
#: company/templates/company/supplier_part.html:265
-#: part/templates/part/prices.html:253 part/views.py:1722
+#: part/templates/part/prices.html:271 part/views.py:1730
msgid "Add Price Break"
msgstr ""
@@ -2789,11 +2871,11 @@ msgstr ""
msgid "No price break information found"
msgstr ""
-#: company/templates/company/supplier_part.html:199 part/views.py:1784
+#: company/templates/company/supplier_part.html:199 part/views.py:1792
msgid "Delete Price Break"
msgstr ""
-#: company/templates/company/supplier_part.html:213 part/views.py:1770
+#: company/templates/company/supplier_part.html:213 part/views.py:1778
msgid "Edit Price Break"
msgstr ""
@@ -2817,8 +2899,8 @@ msgstr ""
msgid "New Supplier"
msgstr ""
-#: company/views.py:55 part/templates/part/prices.html:148
-#: templates/InvenTree/search.html:306 templates/navbar.html:36
+#: company/views.py:55 part/templates/part/prices.html:167
+#: templates/InvenTree/search.html:306 templates/navbar.html:42
msgid "Manufacturers"
msgstr ""
@@ -2827,7 +2909,7 @@ msgid "New Manufacturer"
msgstr ""
#: company/views.py:61 templates/InvenTree/search.html:336
-#: templates/navbar.html:45
+#: templates/navbar.html:53
msgid "Customers"
msgstr ""
@@ -2929,6 +3011,10 @@ msgstr ""
msgid "Part query filters (comma-separated value of key=value pairs)"
msgstr ""
+#: order/api.py:302
+msgid "Destination location must be specified"
+msgstr ""
+
#: order/forms.py:30 order/templates/order/order_base.html:47
msgid "Place order"
msgstr ""
@@ -2978,11 +3064,11 @@ msgstr ""
msgid "Order notes"
msgstr ""
-#: order/models.py:247 order/models.py:534
+#: order/models.py:247 order/models.py:540
msgid "Order reference"
msgstr ""
-#: order/models.py:252 order/models.py:549
+#: order/models.py:252 order/models.py:555
msgid "Purchase order status"
msgstr ""
@@ -2991,7 +3077,7 @@ msgid "Company from which the items are being ordered"
msgstr ""
#: order/models.py:264 order/templates/order/order_base.html:98
-#: templates/js/translated/order.js:263
+#: templates/js/translated/order.js:337
msgid "Supplier Reference"
msgstr ""
@@ -3023,7 +3109,7 @@ msgstr ""
msgid "Date order was completed"
msgstr ""
-#: order/models.py:313 stock/models.py:345 stock/models.py:1060
+#: order/models.py:313 stock/models.py:351 stock/models.py:1072
msgid "Quantity must be greater than zero"
msgstr ""
@@ -3031,150 +3117,182 @@ msgstr ""
msgid "Part supplier must match PO supplier"
msgstr ""
-#: order/models.py:416
+#: order/models.py:421
msgid "Lines can only be received against an order marked as 'Placed'"
msgstr ""
-#: order/models.py:420
+#: order/models.py:425
msgid "Quantity must be an integer"
msgstr ""
-#: order/models.py:422
+#: order/models.py:427
msgid "Quantity must be a positive number"
msgstr ""
-#: order/models.py:545
+#: order/models.py:551
msgid "Company to which the items are being sold"
msgstr ""
-#: order/models.py:551
+#: order/models.py:557
msgid "Customer Reference "
msgstr ""
-#: order/models.py:551
+#: order/models.py:557
msgid "Customer order reference code"
msgstr ""
-#: order/models.py:556
+#: order/models.py:562
msgid "Target date for order completion. Order will be overdue after this date."
msgstr ""
-#: order/models.py:559 templates/js/translated/order.js:392
+#: order/models.py:565 templates/js/translated/order.js:733
msgid "Shipment Date"
msgstr ""
-#: order/models.py:566
+#: order/models.py:572
msgid "shipped by"
msgstr ""
-#: order/models.py:610
+#: order/models.py:616
msgid "SalesOrder cannot be shipped as it is not currently pending"
msgstr ""
-#: order/models.py:707
+#: order/models.py:713
msgid "Item quantity"
msgstr ""
-#: order/models.py:713
+#: order/models.py:719
msgid "Line item reference"
msgstr ""
-#: order/models.py:715
+#: order/models.py:721
msgid "Line item notes"
msgstr ""
-#: order/models.py:745 order/models.py:823 templates/js/translated/order.js:442
+#: order/models.py:751 order/models.py:835 templates/js/translated/order.js:785
msgid "Order"
msgstr ""
-#: order/models.py:746 order/templates/order/order_base.html:9
+#: order/models.py:752 order/templates/order/order_base.html:9
#: order/templates/order/order_base.html:24
#: report/templates/report/inventree_po_report.html:77
#: stock/templates/stock/item_base.html:338
-#: templates/js/translated/order.js:232 templates/js/translated/stock.js:1037
-#: templates/js/translated/stock.js:1448
+#: templates/js/translated/order.js:306 templates/js/translated/stock.js:991
+#: templates/js/translated/stock.js:1589
msgid "Purchase Order"
msgstr ""
-#: order/models.py:767
+#: order/models.py:773
msgid "Supplier part"
msgstr ""
-#: order/models.py:770 order/templates/order/order_base.html:131
-#: order/templates/order/purchase_order_detail.html:388
+#: order/models.py:780 order/templates/order/order_base.html:131
#: order/templates/order/receive_parts.html:22
#: order/templates/order/sales_order_base.html:133
+#: templates/js/translated/order.js:573
msgid "Received"
msgstr ""
-#: order/models.py:770
+#: order/models.py:781
msgid "Number of items received"
msgstr ""
-#: order/models.py:776 part/templates/part/prices.html:157 stock/models.py:582
-#: stock/templates/stock/item_base.html:345
-#: templates/js/translated/stock.js:1081
+#: order/models.py:788 part/templates/part/prices.html:176 stock/models.py:588
+#: stock/serializers.py:147 stock/templates/stock/item_base.html:345
+#: templates/js/translated/stock.js:1045
msgid "Purchase Price"
msgstr ""
-#: order/models.py:777
+#: order/models.py:789
msgid "Unit purchase price"
msgstr ""
-#: order/models.py:785
+#: order/models.py:797
msgid "Where does the Purchaser want this item to be stored?"
msgstr ""
-#: order/models.py:831 part/templates/part/part_pricing.html:97
-#: part/templates/part/prices.html:97 part/templates/part/prices.html:266
+#: order/models.py:843 part/templates/part/part_pricing.html:112
+#: part/templates/part/prices.html:116 part/templates/part/prices.html:284
msgid "Sale Price"
msgstr ""
-#: order/models.py:832
+#: order/models.py:844
msgid "Unit sale price"
msgstr ""
-#: order/models.py:911 order/models.py:913
+#: order/models.py:923 order/models.py:925
msgid "Stock item has not been assigned"
msgstr ""
-#: order/models.py:917
+#: order/models.py:929
msgid "Cannot allocate stock item to a line with a different part"
msgstr ""
-#: order/models.py:919
+#: order/models.py:931
msgid "Cannot allocate stock to a line without a part"
msgstr ""
-#: order/models.py:922
+#: order/models.py:934
msgid "Allocation quantity cannot exceed stock quantity"
msgstr ""
-#: order/models.py:932
+#: order/models.py:944
msgid "Quantity must be 1 for serialized stock item"
msgstr ""
-#: order/models.py:937
+#: order/models.py:949
msgid "Line"
msgstr ""
-#: order/models.py:948
+#: order/models.py:960
msgid "Item"
msgstr ""
-#: order/models.py:949
+#: order/models.py:961
msgid "Select stock item to allocate"
msgstr ""
-#: order/models.py:952
+#: order/models.py:964
msgid "Enter stock allocation quantity"
msgstr ""
-#: order/serializers.py:139
+#: order/serializers.py:166
msgid "Purchase price currency"
msgstr ""
-#: order/serializers.py:360
+#: order/serializers.py:201
+msgid "Line Item"
+msgstr ""
+
+#: order/serializers.py:207
+msgid "Line item does not match purchase order"
+msgstr ""
+
+#: order/serializers.py:217 order/serializers.py:276
+msgid "Select destination location for received items"
+msgstr ""
+
+#: order/serializers.py:234
+msgid "Barcode Hash"
+msgstr ""
+
+#: order/serializers.py:235
+msgid "Unique identifier field"
+msgstr ""
+
+#: order/serializers.py:250
+msgid "Barcode is already in use"
+msgstr ""
+
+#: order/serializers.py:289
+msgid "Line items must be provided"
+msgstr ""
+
+#: order/serializers.py:299
+msgid "Supplied barcode values must be unique"
+msgstr ""
+
+#: order/serializers.py:514
msgid "Sale price currency"
msgstr ""
@@ -3227,14 +3345,12 @@ msgid "Edit Purchase Order"
msgstr ""
#: order/templates/order/order_base.html:196
-#: order/templates/order/purchase_order_detail.html:265
-#: stock/templates/stock/location.html:250
+#: stock/templates/stock/location.html:250 templates/js/translated/order.js:437
msgid "New Location"
msgstr ""
#: order/templates/order/order_base.html:197
-#: order/templates/order/purchase_order_detail.html:266
-#: stock/templates/stock/location.html:42
+#: stock/templates/stock/location.html:42 templates/js/translated/order.js:438
msgid "Create new stock location"
msgstr ""
@@ -3336,7 +3452,7 @@ msgid "Upload File for Purchase Order"
msgstr ""
#: order/templates/order/order_wizard/po_upload.html:18
-#: part/templates/part/bom_upload/upload_file.html:24
+#: part/templates/part/bom_upload/upload_file.html:34
#: part/templates/part/import_wizard/ajax_part_upload.html:10
#: part/templates/part/import_wizard/part_upload.html:21
#, python-format
@@ -3369,7 +3485,7 @@ msgstr ""
#: order/templates/order/order_wizard/select_parts.html:65
#, python-format
-msgid "Select a supplier for %(name)s"
+msgid "Select a supplier for %(name)s"
msgstr ""
#: order/templates/order/order_wizard/select_parts.html:77
@@ -3386,7 +3502,7 @@ msgid "Select existing purchase orders, or create new orders."
msgstr ""
#: order/templates/order/order_wizard/select_pos.html:31
-#: templates/js/translated/order.js:289 templates/js/translated/order.js:397
+#: templates/js/translated/order.js:363 templates/js/translated/order.js:738
msgid "Items"
msgstr ""
@@ -3425,9 +3541,9 @@ msgid "Purchase Order Items"
msgstr ""
#: order/templates/order/purchase_order_detail.html:23
-#: order/templates/order/purchase_order_detail.html:202
+#: order/templates/order/purchase_order_detail.html:203
#: order/templates/order/sales_order_detail.html:23
-#: order/templates/order/sales_order_detail.html:176
+#: order/templates/order/sales_order_detail.html:177
msgid "Add Line Item"
msgstr ""
@@ -3436,49 +3552,6 @@ msgstr ""
msgid "Order Notes"
msgstr ""
-#: order/templates/order/purchase_order_detail.html:238
-#: order/templates/order/sales_order_detail.html:518
-msgid "Edit Line Item"
-msgstr ""
-
-#: order/templates/order/purchase_order_detail.html:248
-#: order/templates/order/sales_order_detail.html:528
-msgid "Delete Line Item"
-msgstr ""
-
-#: order/templates/order/purchase_order_detail.html:279
-msgid "No line items found"
-msgstr ""
-
-#: order/templates/order/purchase_order_detail.html:307
-#: order/templates/order/sales_order_detail.html:353
-msgid "Total"
-msgstr ""
-
-#: order/templates/order/purchase_order_detail.html:360
-#: order/templates/order/sales_order_detail.html:376
-#: templates/js/translated/part.js:1128 templates/js/translated/part.js:1317
-msgid "Unit Price"
-msgstr ""
-
-#: order/templates/order/purchase_order_detail.html:367
-#: order/templates/order/sales_order_detail.html:383
-msgid "Total price"
-msgstr ""
-
-#: order/templates/order/purchase_order_detail.html:431
-#: order/templates/order/sales_order_detail.html:489
-msgid "Edit line item"
-msgstr ""
-
-#: order/templates/order/purchase_order_detail.html:432
-msgid "Delete line item"
-msgstr ""
-
-#: order/templates/order/purchase_order_detail.html:437
-msgid "Receive line item"
-msgstr ""
-
#: order/templates/order/purchase_orders.html:24
#: order/templates/order/sales_orders.html:24
msgid "Print Order Reports"
@@ -3486,18 +3559,18 @@ msgstr ""
#: order/templates/order/receive_parts.html:8
#, python-format
-msgid "Receive outstanding parts for %(order)s - %(desc)s"
+msgid "Receive outstanding parts for %(order)s - %(desc)s"
msgstr ""
-#: order/templates/order/receive_parts.html:14 part/api.py:49
-#: part/models.py:296 part/templates/part/cat_link.html:7
+#: order/templates/order/receive_parts.html:14 part/api.py:54
+#: part/models.py:298 part/templates/part/cat_link.html:7
#: part/templates/part/category.html:108 part/templates/part/category.html:122
#: part/templates/part/category_navbar.html:21
#: part/templates/part/category_navbar.html:24
#: templates/InvenTree/index.html:102 templates/InvenTree/search.html:114
#: templates/InvenTree/settings/navbar.html:83
#: templates/InvenTree/settings/navbar.html:85
-#: templates/js/translated/part.js:987 templates/navbar.html:23
+#: templates/js/translated/part.js:1154 templates/navbar.html:29
#: templates/stats.html:80 templates/stats.html:89 users/models.py:41
msgid "Parts"
msgstr ""
@@ -3511,7 +3584,7 @@ msgid "Order Code"
msgstr ""
#: order/templates/order/receive_parts.html:21
-#: part/templates/part/part_base.html:160 templates/js/translated/part.js:802
+#: part/templates/part/part_base.html:167 templates/js/translated/part.js:949
msgid "On Order"
msgstr ""
@@ -3540,7 +3613,7 @@ msgid "Sales Order Details"
msgstr ""
#: order/templates/order/sales_order_base.html:100
-#: templates/js/translated/order.js:364
+#: templates/js/translated/order.js:705
msgid "Customer Reference"
msgstr ""
@@ -3563,71 +3636,102 @@ msgstr ""
msgid "Sales Order Items"
msgstr ""
-#: order/templates/order/sales_order_detail.html:225
-#: templates/js/translated/bom.js:378 templates/js/translated/build.js:759
-#: templates/js/translated/build.js:1202
+#: order/templates/order/sales_order_detail.html:226
+#: templates/js/translated/bom.js:394 templates/js/translated/build.js:782
+#: templates/js/translated/build.js:1219
msgid "Actions"
msgstr ""
-#: order/templates/order/sales_order_detail.html:232
-#: templates/js/translated/build.js:645 templates/js/translated/build.js:1011
+#: order/templates/order/sales_order_detail.html:233
+#: templates/js/translated/build.js:668 templates/js/translated/build.js:1030
msgid "Edit stock allocation"
msgstr ""
-#: order/templates/order/sales_order_detail.html:233
-#: templates/js/translated/build.js:647 templates/js/translated/build.js:1012
+#: order/templates/order/sales_order_detail.html:234
+#: templates/js/translated/build.js:670 templates/js/translated/build.js:1031
msgid "Delete stock allocation"
msgstr ""
-#: order/templates/order/sales_order_detail.html:306
+#: order/templates/order/sales_order_detail.html:307
msgid "No matching line items"
msgstr ""
-#: order/templates/order/sales_order_detail.html:336
+#: order/templates/order/sales_order_detail.html:337
msgid "ID"
msgstr ""
-#: order/templates/order/sales_order_detail.html:404
-#: templates/js/translated/build.js:710 templates/js/translated/build.js:1007
+#: order/templates/order/sales_order_detail.html:354
+#: templates/js/translated/order.js:481
+msgid "Total"
+msgstr ""
+
+#: order/templates/order/sales_order_detail.html:377
+#: templates/js/translated/order.js:534 templates/js/translated/part.js:1296
+#: templates/js/translated/part.js:1507
+msgid "Unit Price"
+msgstr ""
+
+#: order/templates/order/sales_order_detail.html:384
+#: templates/js/translated/order.js:543
+msgid "Total price"
+msgstr ""
+
+#: order/templates/order/sales_order_detail.html:405
+#: templates/js/translated/build.js:733 templates/js/translated/build.js:1026
msgid "Allocated"
msgstr ""
-#: order/templates/order/sales_order_detail.html:406
+#: order/templates/order/sales_order_detail.html:407
msgid "Fulfilled"
msgstr ""
-#: order/templates/order/sales_order_detail.html:443
+#: order/templates/order/sales_order_detail.html:444
msgid "PO"
msgstr ""
-#: order/templates/order/sales_order_detail.html:473
+#: order/templates/order/sales_order_detail.html:474
msgid "Allocate serial numbers"
msgstr ""
-#: order/templates/order/sales_order_detail.html:476
-#: templates/js/translated/build.js:773
+#: order/templates/order/sales_order_detail.html:477
+#: templates/js/translated/build.js:796
msgid "Allocate stock"
msgstr ""
-#: order/templates/order/sales_order_detail.html:479
+#: order/templates/order/sales_order_detail.html:480
msgid "Purchase stock"
msgstr ""
-#: order/templates/order/sales_order_detail.html:483
-#: templates/js/translated/build.js:766 templates/js/translated/build.js:1210
+#: order/templates/order/sales_order_detail.html:484
+#: templates/js/translated/build.js:789 templates/js/translated/build.js:1227
msgid "Build stock"
msgstr ""
-#: order/templates/order/sales_order_detail.html:486
-#: order/templates/order/sales_order_detail.html:605
+#: order/templates/order/sales_order_detail.html:487
+#: order/templates/order/sales_order_detail.html:606
msgid "Calculate price"
msgstr ""
#: order/templates/order/sales_order_detail.html:490
+#: templates/js/translated/order.js:616
+msgid "Edit line item"
+msgstr ""
+
+#: order/templates/order/sales_order_detail.html:491
msgid "Delete line item "
msgstr ""
-#: order/templates/order/sales_order_detail.html:611
+#: order/templates/order/sales_order_detail.html:519
+#: templates/js/translated/order.js:403
+msgid "Edit Line Item"
+msgstr ""
+
+#: order/templates/order/sales_order_detail.html:529
+#: templates/js/translated/order.js:415
+msgid "Delete Line Item"
+msgstr ""
+
+#: order/templates/order/sales_order_detail.html:612
msgid "Update Unit Price"
msgstr ""
@@ -3814,12 +3918,28 @@ msgstr ""
msgid "Updated {part} unit-price to {price} and quantity to {qty}"
msgstr ""
-#: part/bom.py:133 part/models.py:73 part/models.py:731
-#: part/templates/part/category.html:75 part/templates/part/part_base.html:282
+#: part/api.py:700
+msgid "Must be greater than zero"
+msgstr ""
+
+#: part/api.py:704
+msgid "Must be a valid quantity"
+msgstr ""
+
+#: part/api.py:719
+msgid "Specify location for initial part stock"
+msgstr ""
+
+#: part/api.py:750 part/api.py:754 part/api.py:769 part/api.py:773
+msgid "This field is required"
+msgstr ""
+
+#: part/bom.py:133 part/models.py:75 part/models.py:733
+#: part/templates/part/category.html:75 part/templates/part/part_base.html:290
msgid "Default Location"
msgstr ""
-#: part/bom.py:134 part/templates/part/part_base.html:149
+#: part/bom.py:134 part/templates/part/part_base.html:156
msgid "Available Stock"
msgstr ""
@@ -3879,7 +3999,7 @@ msgstr ""
msgid "Include part supplier data in exported BOM"
msgstr ""
-#: part/forms.py:96 part/models.py:2234
+#: part/forms.py:96 part/models.py:2250
msgid "Parent Part"
msgstr ""
@@ -3923,391 +4043,391 @@ msgstr ""
msgid "Input quantity for price calculation"
msgstr ""
-#: part/models.py:74
+#: part/models.py:76
msgid "Default location for parts in this category"
msgstr ""
-#: part/models.py:77
+#: part/models.py:79
msgid "Default keywords"
msgstr ""
-#: part/models.py:77
+#: part/models.py:79
msgid "Default keywords for parts in this category"
msgstr ""
-#: part/models.py:87 part/models.py:2280
+#: part/models.py:89 part/models.py:2296
#: part/templates/part/part_app_base.html:10
msgid "Part Category"
msgstr ""
-#: part/models.py:88 part/templates/part/category.html:32
+#: part/models.py:90 part/templates/part/category.html:32
#: part/templates/part/category.html:103 templates/InvenTree/search.html:127
#: templates/stats.html:84 users/models.py:40
msgid "Part Categories"
msgstr ""
-#: part/models.py:381
+#: part/models.py:383
msgid "Invalid choice for parent part"
msgstr ""
-#: part/models.py:433 part/models.py:445
+#: part/models.py:435 part/models.py:447
#, python-brace-format
msgid "Part '{p1}' is used in BOM for '{p2}' (recursive)"
msgstr ""
-#: part/models.py:542
+#: part/models.py:544
msgid "Next available serial numbers are"
msgstr ""
-#: part/models.py:546
+#: part/models.py:548
msgid "Next available serial number is"
msgstr ""
-#: part/models.py:551
+#: part/models.py:553
msgid "Most recent serial number is"
msgstr ""
-#: part/models.py:630
+#: part/models.py:632
msgid "Duplicate IPN not allowed in part settings"
msgstr ""
-#: part/models.py:655
+#: part/models.py:657
msgid "Part name"
msgstr ""
-#: part/models.py:662
+#: part/models.py:664
msgid "Is Template"
msgstr ""
-#: part/models.py:663
+#: part/models.py:665
msgid "Is this part a template part?"
msgstr ""
-#: part/models.py:673
+#: part/models.py:675
msgid "Is this part a variant of another part?"
msgstr ""
-#: part/models.py:674
+#: part/models.py:676
msgid "Variant Of"
msgstr ""
-#: part/models.py:680
+#: part/models.py:682
msgid "Part description"
msgstr ""
-#: part/models.py:685 part/templates/part/category.html:82
-#: part/templates/part/part_base.html:251
+#: part/models.py:687 part/templates/part/category.html:82
+#: part/templates/part/part_base.html:259
msgid "Keywords"
msgstr ""
-#: part/models.py:686
+#: part/models.py:688
msgid "Part keywords to improve visibility in search results"
msgstr ""
-#: part/models.py:693 part/models.py:2279
+#: part/models.py:695 part/models.py:2295
#: part/templates/part/set_category.html:15
#: templates/InvenTree/settings/settings.html:167
-#: templates/js/translated/part.js:773
+#: templates/js/translated/part.js:916
msgid "Category"
msgstr ""
-#: part/models.py:694
+#: part/models.py:696
msgid "Part category"
msgstr ""
-#: part/models.py:699 part/templates/part/part_base.html:227
-#: templates/js/translated/part.js:389 templates/js/translated/part.js:617
+#: part/models.py:701 part/templates/part/part_base.html:235
+#: templates/js/translated/part.js:517 templates/js/translated/part.js:749
msgid "IPN"
msgstr ""
-#: part/models.py:700
+#: part/models.py:702
msgid "Internal Part Number"
msgstr ""
-#: part/models.py:706
+#: part/models.py:708
msgid "Part revision or version number"
msgstr ""
-#: part/models.py:707 part/templates/part/part_base.html:244
-#: report/models.py:200 templates/js/translated/part.js:393
+#: part/models.py:709 part/templates/part/part_base.html:252
+#: report/models.py:200 templates/js/translated/part.js:521
msgid "Revision"
msgstr ""
-#: part/models.py:729
+#: part/models.py:731
msgid "Where is this item normally stored?"
msgstr ""
-#: part/models.py:776 part/templates/part/part_base.html:289
+#: part/models.py:778 part/templates/part/part_base.html:297
msgid "Default Supplier"
msgstr ""
-#: part/models.py:777
+#: part/models.py:779
msgid "Default supplier part"
msgstr ""
-#: part/models.py:784
+#: part/models.py:786
msgid "Default Expiry"
msgstr ""
-#: part/models.py:785
+#: part/models.py:787
msgid "Expiry time (in days) for stock items of this part"
msgstr ""
-#: part/models.py:790
+#: part/models.py:792
msgid "Minimum Stock"
msgstr ""
-#: part/models.py:791
+#: part/models.py:793
msgid "Minimum allowed stock level"
msgstr ""
-#: part/models.py:798
+#: part/models.py:800
msgid "Stock keeping units for this part"
msgstr ""
-#: part/models.py:804
+#: part/models.py:806
msgid "Can this part be built from other parts?"
msgstr ""
-#: part/models.py:810
+#: part/models.py:812
msgid "Can this part be used to build other parts?"
msgstr ""
-#: part/models.py:816
+#: part/models.py:818
msgid "Does this part have tracking for unique items?"
msgstr ""
-#: part/models.py:821
+#: part/models.py:823
msgid "Can this part be purchased from external suppliers?"
msgstr ""
-#: part/models.py:826
+#: part/models.py:828
msgid "Can this part be sold to customers?"
msgstr ""
-#: part/models.py:830 templates/js/translated/table_filters.js:21
-#: templates/js/translated/table_filters.js:69
-#: templates/js/translated/table_filters.js:255
-#: templates/js/translated/table_filters.js:324
+#: part/models.py:832 templates/js/translated/table_filters.js:34
+#: templates/js/translated/table_filters.js:82
+#: templates/js/translated/table_filters.js:268
+#: templates/js/translated/table_filters.js:337
msgid "Active"
msgstr ""
-#: part/models.py:831
+#: part/models.py:833
msgid "Is this part active?"
msgstr ""
-#: part/models.py:836
+#: part/models.py:838
msgid "Is this a virtual part, such as a software product or license?"
msgstr ""
-#: part/models.py:841
+#: part/models.py:843
msgid "Part notes - supports Markdown formatting"
msgstr ""
-#: part/models.py:844
+#: part/models.py:846
msgid "BOM checksum"
msgstr ""
-#: part/models.py:844
+#: part/models.py:846
msgid "Stored BOM checksum"
msgstr ""
-#: part/models.py:847
+#: part/models.py:849
msgid "BOM checked by"
msgstr ""
-#: part/models.py:849
+#: part/models.py:851
msgid "BOM checked date"
msgstr ""
-#: part/models.py:853
+#: part/models.py:855
msgid "Creation User"
msgstr ""
-#: part/models.py:1592
+#: part/models.py:1601
msgid "Sell multiple"
msgstr ""
-#: part/models.py:2080
+#: part/models.py:2096
msgid "Test templates can only be created for trackable parts"
msgstr ""
-#: part/models.py:2097
+#: part/models.py:2113
msgid "Test with this name already exists for this part"
msgstr ""
-#: part/models.py:2117 templates/js/translated/part.js:1038
-#: templates/js/translated/stock.js:485
+#: part/models.py:2133 templates/js/translated/part.js:1205
+#: templates/js/translated/stock.js:556
msgid "Test Name"
msgstr ""
-#: part/models.py:2118
+#: part/models.py:2134
msgid "Enter a name for the test"
msgstr ""
-#: part/models.py:2123
+#: part/models.py:2139
msgid "Test Description"
msgstr ""
-#: part/models.py:2124
+#: part/models.py:2140
msgid "Enter description for this test"
msgstr ""
-#: part/models.py:2129 templates/js/translated/part.js:1047
-#: templates/js/translated/table_filters.js:241
+#: part/models.py:2145 templates/js/translated/part.js:1214
+#: templates/js/translated/table_filters.js:254
msgid "Required"
msgstr ""
-#: part/models.py:2130
+#: part/models.py:2146
msgid "Is this test required to pass?"
msgstr ""
-#: part/models.py:2135 templates/js/translated/part.js:1055
+#: part/models.py:2151 templates/js/translated/part.js:1222
msgid "Requires Value"
msgstr ""
-#: part/models.py:2136
+#: part/models.py:2152
msgid "Does this test require a value when adding a test result?"
msgstr ""
-#: part/models.py:2141 templates/js/translated/part.js:1062
+#: part/models.py:2157 templates/js/translated/part.js:1229
msgid "Requires Attachment"
msgstr ""
-#: part/models.py:2142
+#: part/models.py:2158
msgid "Does this test require a file attachment when adding a test result?"
msgstr ""
-#: part/models.py:2153
+#: part/models.py:2169
#, python-brace-format
msgid "Illegal character in template name ({c})"
msgstr ""
-#: part/models.py:2189
+#: part/models.py:2205
msgid "Parameter template name must be unique"
msgstr ""
-#: part/models.py:2197
+#: part/models.py:2213
msgid "Parameter Name"
msgstr ""
-#: part/models.py:2204
+#: part/models.py:2220
msgid "Parameter Units"
msgstr ""
-#: part/models.py:2236 part/models.py:2285 part/models.py:2286
+#: part/models.py:2252 part/models.py:2301 part/models.py:2302
#: templates/InvenTree/settings/settings.html:162
msgid "Parameter Template"
msgstr ""
-#: part/models.py:2238
+#: part/models.py:2254
msgid "Data"
msgstr ""
-#: part/models.py:2238
+#: part/models.py:2254
msgid "Parameter Value"
msgstr ""
-#: part/models.py:2290 templates/InvenTree/settings/settings.html:171
+#: part/models.py:2306 templates/InvenTree/settings/settings.html:171
msgid "Default Value"
msgstr ""
-#: part/models.py:2291
+#: part/models.py:2307
msgid "Default Parameter Value"
msgstr ""
-#: part/models.py:2325
+#: part/models.py:2341
msgid "Select parent part"
msgstr ""
-#: part/models.py:2333
+#: part/models.py:2349
msgid "Sub part"
msgstr ""
-#: part/models.py:2334
+#: part/models.py:2350
msgid "Select part to be used in BOM"
msgstr ""
-#: part/models.py:2340
+#: part/models.py:2356
msgid "BOM quantity for this BOM item"
msgstr ""
-#: part/models.py:2342 templates/js/translated/bom.js:236
-#: templates/js/translated/bom.js:298
+#: part/models.py:2358 templates/js/translated/bom.js:256
+#: templates/js/translated/bom.js:314
msgid "Optional"
msgstr ""
-#: part/models.py:2342
+#: part/models.py:2358
msgid "This BOM item is optional"
msgstr ""
-#: part/models.py:2345
+#: part/models.py:2361
msgid "Overage"
msgstr ""
-#: part/models.py:2346
+#: part/models.py:2362
msgid "Estimated build wastage quantity (absolute or percentage)"
msgstr ""
-#: part/models.py:2349
+#: part/models.py:2365
msgid "BOM item reference"
msgstr ""
-#: part/models.py:2352
+#: part/models.py:2368
msgid "BOM item notes"
msgstr ""
-#: part/models.py:2354
+#: part/models.py:2370
msgid "Checksum"
msgstr ""
-#: part/models.py:2354
+#: part/models.py:2370
msgid "BOM line checksum"
msgstr ""
-#: part/models.py:2358 templates/js/translated/bom.js:315
-#: templates/js/translated/bom.js:322
-#: templates/js/translated/table_filters.js:55
+#: part/models.py:2374 templates/js/translated/bom.js:331
+#: templates/js/translated/bom.js:338
+#: templates/js/translated/table_filters.js:68
msgid "Inherited"
msgstr ""
-#: part/models.py:2359
+#: part/models.py:2375
msgid "This BOM item is inherited by BOMs for variant parts"
msgstr ""
-#: part/models.py:2364 templates/js/translated/bom.js:307
+#: part/models.py:2380 templates/js/translated/bom.js:323
msgid "Allow Variants"
msgstr ""
-#: part/models.py:2365
+#: part/models.py:2381
msgid "Stock items for variant parts can be used for this BOM item"
msgstr ""
-#: part/models.py:2450 stock/models.py:335
+#: part/models.py:2466 stock/models.py:341
msgid "Quantity must be integer value for trackable parts"
msgstr ""
-#: part/models.py:2459 part/models.py:2461
+#: part/models.py:2475 part/models.py:2477
msgid "Sub part must be specified"
msgstr ""
-#: part/models.py:2464
+#: part/models.py:2480
msgid "BOM Item"
msgstr ""
-#: part/models.py:2583
+#: part/models.py:2599
msgid "Part 1"
msgstr ""
-#: part/models.py:2587
+#: part/models.py:2603
msgid "Part 2"
msgstr ""
-#: part/models.py:2587
+#: part/models.py:2603
msgid "Select Related Part"
msgstr ""
-#: part/models.py:2619
+#: part/models.py:2635
msgid "Error creating relationship: check that the part is not related to itself and that the relationship is unique"
msgstr ""
@@ -4317,17 +4437,17 @@ msgstr ""
#: part/templates/part/bom.html:14
#, python-format
-msgid "The BOM for %(part)s has changed, and must be validated.
"
+msgid "The BOM for %(part)s has changed, and must be validated.
"
msgstr ""
#: part/templates/part/bom.html:16
#, python-format
-msgid "The BOM for %(part)s was last checked by %(checker)s on %(check_date)s"
+msgid "The BOM for %(part)s was last checked by %(checker)s on %(check_date)s"
msgstr ""
#: part/templates/part/bom.html:20
#, python-format
-msgid "The BOM for %(part)s has not been validated."
+msgid "The BOM for %(part)s has not been validated."
msgstr ""
#: part/templates/part/bom.html:27
@@ -4374,33 +4494,34 @@ msgstr ""
msgid "Select Part"
msgstr ""
-#: part/templates/part/bom_upload/upload_file.html:7
-msgid "Upload BOM File"
+#: part/templates/part/bom_upload/upload_file.html:13
+#: part/templates/part/bom_upload/upload_file.html:16
+msgid "Return To BOM"
msgstr ""
-#: part/templates/part/bom_upload/upload_file.html:12
+#: part/templates/part/bom_upload/upload_file.html:27
msgid "Upload Bill of Materials"
msgstr ""
-#: part/templates/part/bom_upload/upload_file.html:16
+#: part/templates/part/bom_upload/upload_file.html:46
msgid "Requirements for BOM upload"
msgstr ""
-#: part/templates/part/bom_upload/upload_file.html:18
+#: part/templates/part/bom_upload/upload_file.html:48
msgid "The BOM file must contain the required named columns as provided in the "
msgstr ""
-#: part/templates/part/bom_upload/upload_file.html:18
+#: part/templates/part/bom_upload/upload_file.html:48
msgid "BOM Upload Template"
msgstr ""
-#: part/templates/part/bom_upload/upload_file.html:19
+#: part/templates/part/bom_upload/upload_file.html:49
msgid "Each part must already exist in the database"
msgstr ""
#: part/templates/part/bom_validate.html:6
#, python-format
-msgid "Confirm that the Bill of Materials (BOM) is valid for:
%(part)s"
+msgid "Confirm that the Bill of Materials (BOM) is valid for:
%(part)s"
msgstr ""
#: part/templates/part/bom_validate.html:9
@@ -4435,7 +4556,7 @@ msgstr ""
msgid "Category Description"
msgstr ""
-#: part/templates/part/category.html:88 part/templates/part/category.html:174
+#: part/templates/part/category.html:88 part/templates/part/category.html:175
#: part/templates/part/category_navbar.html:14
#: part/templates/part/category_navbar.html:17
msgid "Subcategories"
@@ -4449,7 +4570,7 @@ msgstr ""
msgid "Export Part Data"
msgstr ""
-#: part/templates/part/category.html:127 part/templates/part/category.html:141
+#: part/templates/part/category.html:127 part/templates/part/category.html:142
msgid "Export"
msgstr ""
@@ -4470,26 +4591,30 @@ msgid "Set Category"
msgstr ""
#: part/templates/part/category.html:141
+msgid "Print Labels"
+msgstr ""
+
+#: part/templates/part/category.html:142
msgid "Export Data"
msgstr ""
-#: part/templates/part/category.html:145
+#: part/templates/part/category.html:146
msgid "View list display"
msgstr ""
-#: part/templates/part/category.html:148
+#: part/templates/part/category.html:149
msgid "View grid display"
msgstr ""
-#: part/templates/part/category.html:164
+#: part/templates/part/category.html:165
msgid "Part Parameters"
msgstr ""
-#: part/templates/part/category.html:253
+#: part/templates/part/category.html:254
msgid "Create Part Category"
msgstr ""
-#: part/templates/part/category.html:279
+#: part/templates/part/category.html:281
msgid "Create Part"
msgstr ""
@@ -4533,7 +4658,7 @@ msgstr ""
msgid "Import Parts"
msgstr ""
-#: part/templates/part/copy_part.html:9 templates/js/translated/part.js:224
+#: part/templates/part/copy_part.html:9 templates/js/translated/part.js:352
msgid "Duplicate Part"
msgstr ""
@@ -4554,7 +4679,7 @@ msgstr ""
#: part/templates/part/create_part.html:17
#, python-format
-msgid "%(full_name)s - %(desc)s (%(match_per)s%% match)"
+msgid "%(full_name)s - %(desc)s (%(match_per)s%% match)"
msgstr ""
#: part/templates/part/detail.html:16
@@ -4563,10 +4688,10 @@ msgstr ""
#: part/templates/part/detail.html:21
#, python-format
-msgid "Showing stock for all variants of %(full_name)s"
+msgid "Showing stock for all variants of %(full_name)s"
msgstr ""
-#: part/templates/part/detail.html:30 part/templates/part/navbar.html:87
+#: part/templates/part/detail.html:30 part/templates/part/navbar.html:99
msgid "Part Test Templates"
msgstr ""
@@ -4586,7 +4711,7 @@ msgstr ""
msgid "Sales Order Allocations"
msgstr ""
-#: part/templates/part/detail.html:130 part/templates/part/navbar.html:21
+#: part/templates/part/detail.html:130 part/templates/part/navbar.html:27
msgid "Part Variants"
msgstr ""
@@ -4602,8 +4727,8 @@ msgstr ""
msgid "Add new parameter"
msgstr ""
-#: part/templates/part/detail.html:182 part/templates/part/navbar.html:95
-#: part/templates/part/navbar.html:98
+#: part/templates/part/detail.html:182 part/templates/part/navbar.html:107
+#: part/templates/part/navbar.html:110
msgid "Related Parts"
msgstr ""
@@ -4611,8 +4736,8 @@ msgstr ""
msgid "Add Related"
msgstr ""
-#: part/templates/part/detail.html:228 part/templates/part/navbar.html:35
-#: part/templates/part/navbar.html:38
+#: part/templates/part/detail.html:228 part/templates/part/navbar.html:43
+#: part/templates/part/navbar.html:46
msgid "Bill of Materials"
msgstr ""
@@ -4644,50 +4769,50 @@ msgstr ""
msgid "Delete manufacturer parts"
msgstr ""
-#: part/templates/part/detail.html:402
+#: part/templates/part/detail.html:502
msgid "Delete selected BOM items?"
msgstr ""
-#: part/templates/part/detail.html:403
+#: part/templates/part/detail.html:503
msgid "All selected BOM items will be deleted"
msgstr ""
-#: part/templates/part/detail.html:454
+#: part/templates/part/detail.html:554
msgid "Create BOM Item"
msgstr ""
-#: part/templates/part/detail.html:589
+#: part/templates/part/detail.html:699
msgid "Add Test Result Template"
msgstr ""
-#: part/templates/part/detail.html:607
+#: part/templates/part/detail.html:716
msgid "Edit Test Result Template"
msgstr ""
-#: part/templates/part/detail.html:619
+#: part/templates/part/detail.html:728
msgid "Delete Test Result Template"
msgstr ""
-#: part/templates/part/detail.html:670
+#: part/templates/part/detail.html:784
msgid "Edit Part Notes"
msgstr ""
-#: part/templates/part/detail.html:903
+#: part/templates/part/detail.html:936
#, python-format
msgid "Purchase Unit Price - %(currency)s"
msgstr ""
-#: part/templates/part/detail.html:915
+#: part/templates/part/detail.html:948
#, python-format
msgid "Unit Price-Cost Difference - %(currency)s"
msgstr ""
-#: part/templates/part/detail.html:927
+#: part/templates/part/detail.html:960
#, python-format
msgid "Supplier Unit Cost - %(currency)s"
msgstr ""
-#: part/templates/part/detail.html:1016
+#: part/templates/part/detail.html:1049
#, python-format
msgid "Unit Price - %(currency)s"
msgstr ""
@@ -4701,19 +4826,19 @@ msgstr ""
msgid "Import Parts from File"
msgstr ""
-#: part/templates/part/navbar.html:24
+#: part/templates/part/navbar.html:30
msgid "Variants"
msgstr ""
-#: part/templates/part/navbar.html:51 part/templates/part/navbar.html:54
+#: part/templates/part/navbar.html:59 part/templates/part/navbar.html:62
msgid "Used In"
msgstr ""
-#: part/templates/part/navbar.html:61
+#: part/templates/part/navbar.html:70
msgid "Prices"
msgstr ""
-#: part/templates/part/navbar.html:90
+#: part/templates/part/navbar.html:102
msgid "Test Templates"
msgstr ""
@@ -4721,195 +4846,204 @@ msgstr ""
msgid "Part List"
msgstr ""
-#: part/templates/part/part_base.html:30
+#: part/templates/part/part_base.html:35
msgid "Part is a template part (variants can be made from this part)"
msgstr ""
-#: part/templates/part/part_base.html:33
+#: part/templates/part/part_base.html:38
msgid "Part can be assembled from other parts"
msgstr ""
-#: part/templates/part/part_base.html:36
+#: part/templates/part/part_base.html:41
msgid "Part can be used in assemblies"
msgstr ""
-#: part/templates/part/part_base.html:39
+#: part/templates/part/part_base.html:44
msgid "Part stock is tracked by serial number"
msgstr ""
-#: part/templates/part/part_base.html:42
+#: part/templates/part/part_base.html:47
msgid "Part can be purchased from external suppliers"
msgstr ""
-#: part/templates/part/part_base.html:45
+#: part/templates/part/part_base.html:50
msgid "Part can be sold to customers"
msgstr ""
-#: part/templates/part/part_base.html:52 part/templates/part/part_base.html:60
+#: part/templates/part/part_base.html:57 part/templates/part/part_base.html:65
msgid "Part is virtual (not a physical part)"
msgstr ""
-#: part/templates/part/part_base.html:53 templates/js/translated/company.js:454
-#: templates/js/translated/company.js:704 templates/js/translated/part.js:304
-#: templates/js/translated/part.js:381
+#: part/templates/part/part_base.html:58 templates/js/translated/company.js:503
+#: templates/js/translated/company.js:759 templates/js/translated/part.js:432
+#: templates/js/translated/part.js:509
msgid "Inactive"
msgstr ""
-#: part/templates/part/part_base.html:68
+#: part/templates/part/part_base.html:73
msgid "Star this part"
msgstr ""
-#: part/templates/part/part_base.html:75
+#: part/templates/part/part_base.html:80
#: stock/templates/stock/item_base.html:75
#: stock/templates/stock/location.html:51
msgid "Barcode actions"
msgstr ""
-#: part/templates/part/part_base.html:77
+#: part/templates/part/part_base.html:82
#: stock/templates/stock/item_base.html:77
#: stock/templates/stock/location.html:53 templates/qr_button.html:1
msgid "Show QR Code"
msgstr ""
-#: part/templates/part/part_base.html:78
+#: part/templates/part/part_base.html:83
#: stock/templates/stock/item_base.html:93
#: stock/templates/stock/location.html:54
msgid "Print Label"
msgstr ""
-#: part/templates/part/part_base.html:83
+#: part/templates/part/part_base.html:89
msgid "Show pricing information"
msgstr ""
-#: part/templates/part/part_base.html:88
+#: part/templates/part/part_base.html:95
#: stock/templates/stock/item_base.html:142
#: stock/templates/stock/location.html:62
msgid "Stock actions"
msgstr ""
-#: part/templates/part/part_base.html:95
+#: part/templates/part/part_base.html:102
msgid "Count part stock"
msgstr ""
-#: part/templates/part/part_base.html:101
+#: part/templates/part/part_base.html:108
msgid "Transfer part stock"
msgstr ""
-#: part/templates/part/part_base.html:118
+#: part/templates/part/part_base.html:125
msgid "Part actions"
msgstr ""
-#: part/templates/part/part_base.html:121
+#: part/templates/part/part_base.html:128
msgid "Duplicate part"
msgstr ""
-#: part/templates/part/part_base.html:124
+#: part/templates/part/part_base.html:131
msgid "Edit part"
msgstr ""
-#: part/templates/part/part_base.html:127
+#: part/templates/part/part_base.html:134
msgid "Delete part"
msgstr ""
-#: part/templates/part/part_base.html:139
+#: part/templates/part/part_base.html:146
#, python-format
msgid "This part is a variant of %(link)s"
msgstr ""
-#: part/templates/part/part_base.html:154
-#: templates/js/translated/table_filters.js:153
+#: part/templates/part/part_base.html:161
+#: templates/js/translated/table_filters.js:166
msgid "In Stock"
msgstr ""
-#: part/templates/part/part_base.html:167 templates/InvenTree/index.html:186
+#: part/templates/part/part_base.html:174 templates/InvenTree/index.html:186
msgid "Required for Build Orders"
msgstr ""
-#: part/templates/part/part_base.html:174
+#: part/templates/part/part_base.html:181
msgid "Required for Sales Orders"
msgstr ""
-#: part/templates/part/part_base.html:181
+#: part/templates/part/part_base.html:188
msgid "Allocated to Orders"
msgstr ""
-#: part/templates/part/part_base.html:196 templates/js/translated/bom.js:336
+#: part/templates/part/part_base.html:203 templates/js/translated/bom.js:352
msgid "Can Build"
msgstr ""
-#: part/templates/part/part_base.html:202 templates/js/translated/part.js:633
-#: templates/js/translated/part.js:806
+#: part/templates/part/part_base.html:209 templates/js/translated/part.js:765
+#: templates/js/translated/part.js:953
msgid "Building"
msgstr ""
-#: part/templates/part/part_base.html:275
+#: part/templates/part/part_base.html:223
+#: part/templates/part/part_base.html:524
+#: part/templates/part/part_base.html:550
+msgid "Show Part Details"
+msgstr ""
+
+#: part/templates/part/part_base.html:283
msgid "Latest Serial Number"
msgstr ""
-#: part/templates/part/part_base.html:383 part/templates/part/prices.html:125
+#: part/templates/part/part_base.html:396 part/templates/part/prices.html:144
msgid "Calculate"
msgstr ""
-#: part/templates/part/part_base.html:426
+#: part/templates/part/part_base.html:439
msgid "No matching images found"
msgstr ""
-#: part/templates/part/part_base.html:506
-#: part/templates/part/part_base.html:531
+#: part/templates/part/part_base.html:519
+#: part/templates/part/part_base.html:544
msgid "Hide Part Details"
msgstr ""
-#: part/templates/part/part_base.html:511
-#: part/templates/part/part_base.html:537
-msgid "Show Part Details"
-msgstr ""
-
#: part/templates/part/part_pricing.html:22 part/templates/part/prices.html:21
msgid "Supplier Pricing"
msgstr ""
#: part/templates/part/part_pricing.html:26
#: part/templates/part/part_pricing.html:52
-#: part/templates/part/part_pricing.html:85
-#: part/templates/part/part_pricing.html:100 part/templates/part/prices.html:25
-#: part/templates/part/prices.html:52 part/templates/part/prices.html:84
-#: part/templates/part/prices.html:101
+#: part/templates/part/part_pricing.html:100
+#: part/templates/part/part_pricing.html:115 part/templates/part/prices.html:25
+#: part/templates/part/prices.html:52 part/templates/part/prices.html:103
+#: part/templates/part/prices.html:120
msgid "Unit Cost"
msgstr ""
#: part/templates/part/part_pricing.html:32
#: part/templates/part/part_pricing.html:58
-#: part/templates/part/part_pricing.html:89
-#: part/templates/part/part_pricing.html:104 part/templates/part/prices.html:32
-#: part/templates/part/prices.html:59 part/templates/part/prices.html:89
-#: part/templates/part/prices.html:106
+#: part/templates/part/part_pricing.html:104
+#: part/templates/part/part_pricing.html:119 part/templates/part/prices.html:32
+#: part/templates/part/prices.html:59 part/templates/part/prices.html:108
+#: part/templates/part/prices.html:125
msgid "Total Cost"
msgstr ""
#: part/templates/part/part_pricing.html:40 part/templates/part/prices.html:40
-#: templates/js/translated/bom.js:291
+#: templates/js/translated/bom.js:307
msgid "No supplier pricing available"
msgstr ""
#: part/templates/part/part_pricing.html:48 part/templates/part/prices.html:49
-#: part/templates/part/prices.html:225
+#: part/templates/part/prices.html:243
msgid "BOM Pricing"
msgstr ""
-#: part/templates/part/part_pricing.html:66 part/templates/part/prices.html:67
+#: part/templates/part/part_pricing.html:65 part/templates/part/prices.html:69
+msgid "Unit Purchase Price"
+msgstr ""
+
+#: part/templates/part/part_pricing.html:71 part/templates/part/prices.html:76
+msgid "Total Purchase Price"
+msgstr ""
+
+#: part/templates/part/part_pricing.html:81 part/templates/part/prices.html:86
msgid "Note: BOM pricing is incomplete for this part"
msgstr ""
-#: part/templates/part/part_pricing.html:73 part/templates/part/prices.html:74
+#: part/templates/part/part_pricing.html:88 part/templates/part/prices.html:93
msgid "No BOM pricing available"
msgstr ""
-#: part/templates/part/part_pricing.html:82 part/templates/part/prices.html:83
+#: part/templates/part/part_pricing.html:97 part/templates/part/prices.html:102
msgid "Internal Price"
msgstr ""
-#: part/templates/part/part_pricing.html:113
-#: part/templates/part/prices.html:115
+#: part/templates/part/part_pricing.html:128
+#: part/templates/part/prices.html:134
msgid "No pricing information is available for this part."
msgstr ""
@@ -4919,7 +5053,7 @@ msgstr ""
#: part/templates/part/partial_delete.html:7
#, python-format
-msgid "Are you sure you want to delete part '%(full_name)s'?"
+msgid "Are you sure you want to delete part '%(full_name)s'?"
msgstr ""
#: part/templates/part/partial_delete.html:12
@@ -4963,53 +5097,53 @@ msgstr ""
msgid "Show BOM cost"
msgstr ""
-#: part/templates/part/prices.html:98
+#: part/templates/part/prices.html:117
msgid "Show sale cost"
msgstr ""
-#: part/templates/part/prices.html:99
+#: part/templates/part/prices.html:118
msgid "Show sale price"
msgstr ""
-#: part/templates/part/prices.html:121
+#: part/templates/part/prices.html:140
msgid "Calculation parameters"
msgstr ""
-#: part/templates/part/prices.html:136 templates/js/translated/bom.js:285
+#: part/templates/part/prices.html:155 templates/js/translated/bom.js:301
msgid "Supplier Cost"
msgstr ""
-#: part/templates/part/prices.html:137 part/templates/part/prices.html:158
-#: part/templates/part/prices.html:183 part/templates/part/prices.html:213
-#: part/templates/part/prices.html:239 part/templates/part/prices.html:267
+#: part/templates/part/prices.html:156 part/templates/part/prices.html:177
+#: part/templates/part/prices.html:201 part/templates/part/prices.html:231
+#: part/templates/part/prices.html:257 part/templates/part/prices.html:285
msgid "Jump to overview"
msgstr ""
-#: part/templates/part/prices.html:162
+#: part/templates/part/prices.html:181
msgid "Stock Pricing"
msgstr ""
-#: part/templates/part/prices.html:172
+#: part/templates/part/prices.html:190
msgid "No stock pricing history is available for this part."
msgstr ""
-#: part/templates/part/prices.html:182
+#: part/templates/part/prices.html:200
msgid "Internal Cost"
msgstr ""
-#: part/templates/part/prices.html:197 part/views.py:1793
+#: part/templates/part/prices.html:215 part/views.py:1801
msgid "Add Internal Price Break"
msgstr ""
-#: part/templates/part/prices.html:212
+#: part/templates/part/prices.html:230
msgid "BOM Cost"
msgstr ""
-#: part/templates/part/prices.html:238
+#: part/templates/part/prices.html:256
msgid "Sale Cost"
msgstr ""
-#: part/templates/part/prices.html:278
+#: part/templates/part/prices.html:296
msgid "No sale pice history available for this part."
msgstr ""
@@ -5017,8 +5151,8 @@ msgstr ""
msgid "Set category for the following parts"
msgstr ""
-#: part/templates/part/stock_count.html:7 templates/js/translated/bom.js:259
-#: templates/js/translated/part.js:623 templates/js/translated/part.js:810
+#: part/templates/part/stock_count.html:7 templates/js/translated/bom.js:278
+#: templates/js/translated/part.js:755 templates/js/translated/part.js:957
msgid "No Stock"
msgstr ""
@@ -5032,10 +5166,10 @@ msgstr ""
#: part/templates/part/variant_part.html:10
#, python-format
-msgid "Create a new variant of template '%(full_name)s'."
+msgid "Create a new variant of template '%(full_name)s'."
msgstr ""
-#: part/templatetags/inventree_extras.py:105
+#: part/templatetags/inventree_extras.py:106
msgid "Unknown database"
msgstr ""
@@ -5116,51 +5250,51 @@ msgstr ""
msgid "Part Pricing"
msgstr ""
-#: part/views.py:1429
+#: part/views.py:1437
msgid "Create Part Parameter Template"
msgstr ""
-#: part/views.py:1439
+#: part/views.py:1447
msgid "Edit Part Parameter Template"
msgstr ""
-#: part/views.py:1446
+#: part/views.py:1454
msgid "Delete Part Parameter Template"
msgstr ""
-#: part/views.py:1494 templates/js/translated/part.js:179
+#: part/views.py:1502 templates/js/translated/part.js:303
msgid "Edit Part Category"
msgstr ""
-#: part/views.py:1532
+#: part/views.py:1540
msgid "Delete Part Category"
msgstr ""
-#: part/views.py:1538
+#: part/views.py:1546
msgid "Part category was deleted"
msgstr ""
-#: part/views.py:1547
+#: part/views.py:1555
msgid "Create Category Parameter Template"
msgstr ""
-#: part/views.py:1648
+#: part/views.py:1656
msgid "Edit Category Parameter Template"
msgstr ""
-#: part/views.py:1704
+#: part/views.py:1712
msgid "Delete Category Parameter Template"
msgstr ""
-#: part/views.py:1726
+#: part/views.py:1734
msgid "Added new price break"
msgstr ""
-#: part/views.py:1802
+#: part/views.py:1810
msgid "Edit Internal Price Break"
msgstr ""
-#: part/views.py:1810
+#: part/views.py:1818
msgid "Delete Internal Price Break"
msgstr ""
@@ -5266,17 +5400,17 @@ msgid "Test Results"
msgstr ""
#: report/templates/report/inventree_test_report_base.html:88
-#: stock/models.py:1796
+#: stock/models.py:1807
msgid "Test"
msgstr ""
#: report/templates/report/inventree_test_report_base.html:89
-#: stock/models.py:1802
+#: stock/models.py:1813
msgid "Result"
msgstr ""
#: report/templates/report/inventree_test_report_base.html:92
-#: templates/js/translated/order.js:279 templates/js/translated/stock.js:1382
+#: templates/js/translated/order.js:353 templates/js/translated/stock.js:1523
msgid "Date"
msgstr ""
@@ -5288,51 +5422,51 @@ msgstr ""
msgid "Fail"
msgstr ""
-#: stock/api.py:145
+#: stock/api.py:146
msgid "Request must contain list of stock items"
msgstr ""
-#: stock/api.py:153
+#: stock/api.py:154
msgid "Improperly formatted data"
msgstr ""
-#: stock/api.py:161
+#: stock/api.py:162
msgid "Each entry must contain a valid integer primary-key"
msgstr ""
-#: stock/api.py:167
+#: stock/api.py:168
msgid "Primary key does not match valid stock item"
msgstr ""
-#: stock/api.py:177
+#: stock/api.py:178
msgid "Invalid quantity value"
msgstr ""
-#: stock/api.py:182
+#: stock/api.py:183
msgid "Quantity must not be less than zero"
msgstr ""
-#: stock/api.py:210
+#: stock/api.py:211
#, python-brace-format
msgid "Updated stock for {n} items"
msgstr ""
-#: stock/api.py:246 stock/api.py:279
+#: stock/api.py:247 stock/api.py:280
msgid "Specified quantity exceeds stock quantity"
msgstr ""
-#: stock/api.py:269
+#: stock/api.py:270
msgid "Valid location must be specified"
msgstr ""
-#: stock/api.py:289
+#: stock/api.py:290
#, python-brace-format
msgid "Moved {n} parts to {loc}"
msgstr ""
-#: stock/forms.py:79 stock/forms.py:307 stock/models.py:550
+#: stock/forms.py:79 stock/forms.py:307 stock/models.py:556
#: stock/templates/stock/item_base.html:395
-#: templates/js/translated/stock.js:1025
+#: templates/js/translated/stock.js:967
msgid "Expiry Date"
msgstr ""
@@ -5384,258 +5518,266 @@ msgstr ""
msgid "Confirm removal of installed stock items"
msgstr ""
-#: stock/models.py:57 stock/models.py:587
+#: stock/models.py:57 stock/models.py:593
msgid "Owner"
msgstr ""
-#: stock/models.py:58 stock/models.py:588
+#: stock/models.py:58 stock/models.py:594
msgid "Select Owner"
msgstr ""
-#: stock/models.py:316
+#: stock/models.py:322
msgid "StockItem with this serial number already exists"
msgstr ""
-#: stock/models.py:352
+#: stock/models.py:358
#, python-brace-format
msgid "Part type ('{pf}') must be {pe}"
msgstr ""
-#: stock/models.py:362 stock/models.py:371
+#: stock/models.py:368 stock/models.py:377
msgid "Quantity must be 1 for item with a serial number"
msgstr ""
-#: stock/models.py:363
+#: stock/models.py:369
msgid "Serial number cannot be set if quantity greater than 1"
msgstr ""
-#: stock/models.py:385
+#: stock/models.py:391
msgid "Item cannot belong to itself"
msgstr ""
-#: stock/models.py:391
+#: stock/models.py:397
msgid "Item must have a build reference if is_building=True"
msgstr ""
-#: stock/models.py:398
+#: stock/models.py:404
msgid "Build reference does not point to the same part object"
msgstr ""
-#: stock/models.py:440
+#: stock/models.py:446
msgid "Parent Stock Item"
msgstr ""
-#: stock/models.py:449
+#: stock/models.py:455
msgid "Base part"
msgstr ""
-#: stock/models.py:458
+#: stock/models.py:464
msgid "Select a matching supplier part for this stock item"
msgstr ""
-#: stock/models.py:463 stock/templates/stock/stock_app_base.html:8
+#: stock/models.py:469 stock/templates/stock/stock_app_base.html:8
msgid "Stock Location"
msgstr ""
-#: stock/models.py:466
+#: stock/models.py:472
msgid "Where is this stock item located?"
msgstr ""
-#: stock/models.py:473
+#: stock/models.py:479
msgid "Packaging this stock item is stored in"
msgstr ""
-#: stock/models.py:478 stock/templates/stock/item_base.html:284
+#: stock/models.py:484 stock/templates/stock/item_base.html:284
msgid "Installed In"
msgstr ""
-#: stock/models.py:481
+#: stock/models.py:487
msgid "Is this item installed in another item?"
msgstr ""
-#: stock/models.py:497
+#: stock/models.py:503
msgid "Serial number for this item"
msgstr ""
-#: stock/models.py:509
+#: stock/models.py:515
msgid "Batch code for this stock item"
msgstr ""
-#: stock/models.py:513
+#: stock/models.py:519
msgid "Stock Quantity"
msgstr ""
-#: stock/models.py:522
+#: stock/models.py:528
msgid "Source Build"
msgstr ""
-#: stock/models.py:524
+#: stock/models.py:530
msgid "Build for this stock item"
msgstr ""
-#: stock/models.py:535
+#: stock/models.py:541
msgid "Source Purchase Order"
msgstr ""
-#: stock/models.py:538
+#: stock/models.py:544
msgid "Purchase order for this stock item"
msgstr ""
-#: stock/models.py:544
+#: stock/models.py:550
msgid "Destination Sales Order"
msgstr ""
-#: stock/models.py:551
+#: stock/models.py:557
msgid "Expiry date for stock item. Stock will be considered expired after this date"
msgstr ""
-#: stock/models.py:564
+#: stock/models.py:570
msgid "Delete on deplete"
msgstr ""
-#: stock/models.py:564
+#: stock/models.py:570
msgid "Delete this Stock Item when stock is depleted"
msgstr ""
-#: stock/models.py:574 stock/templates/stock/item.html:98
+#: stock/models.py:580 stock/templates/stock/item.html:99
#: stock/templates/stock/navbar.html:54
msgid "Stock Item Notes"
msgstr ""
-#: stock/models.py:583
+#: stock/models.py:589
msgid "Single unit purchase price at time of purchase"
msgstr ""
-#: stock/models.py:1051
-msgid "Part is not set as trackable"
+#: stock/models.py:599
+msgid "Scheduled for deletion"
msgstr ""
-#: stock/models.py:1057
-msgid "Quantity must be integer"
+#: stock/models.py:600
+msgid "This StockItem will be deleted by the background worker"
msgstr ""
#: stock/models.py:1063
+msgid "Part is not set as trackable"
+msgstr ""
+
+#: stock/models.py:1069
+msgid "Quantity must be integer"
+msgstr ""
+
+#: stock/models.py:1075
#, python-brace-format
msgid "Quantity must not exceed available stock quantity ({n})"
msgstr ""
-#: stock/models.py:1066
+#: stock/models.py:1078
msgid "Serial numbers must be a list of integers"
msgstr ""
-#: stock/models.py:1069
+#: stock/models.py:1081
msgid "Quantity does not match serial numbers"
msgstr ""
-#: stock/models.py:1076
+#: stock/models.py:1088
#, python-brace-format
msgid "Serial numbers already exist: {exists}"
msgstr ""
-#: stock/models.py:1234
+#: stock/models.py:1246
msgid "StockItem cannot be moved as it is not in stock"
msgstr ""
-#: stock/models.py:1716
+#: stock/models.py:1727
msgid "Entry notes"
msgstr ""
-#: stock/models.py:1773
+#: stock/models.py:1784
msgid "Value must be provided for this test"
msgstr ""
-#: stock/models.py:1779
+#: stock/models.py:1790
msgid "Attachment must be uploaded for this test"
msgstr ""
-#: stock/models.py:1797
+#: stock/models.py:1808
msgid "Test name"
msgstr ""
-#: stock/models.py:1803 templates/js/translated/table_filters.js:231
+#: stock/models.py:1814 templates/js/translated/table_filters.js:244
msgid "Test result"
msgstr ""
-#: stock/models.py:1809
+#: stock/models.py:1820
msgid "Test output value"
msgstr ""
-#: stock/models.py:1816
+#: stock/models.py:1827
msgid "Test result attachment"
msgstr ""
-#: stock/models.py:1822
+#: stock/models.py:1833
msgid "Test notes"
msgstr ""
-#: stock/templates/stock/item.html:16
+#: stock/templates/stock/item.html:17
msgid "Stock Tracking Information"
msgstr ""
-#: stock/templates/stock/item.html:29
+#: stock/templates/stock/item.html:30
msgid "New Entry"
msgstr ""
-#: stock/templates/stock/item.html:42
+#: stock/templates/stock/item.html:43
msgid "Child Stock Items"
msgstr ""
-#: stock/templates/stock/item.html:49
+#: stock/templates/stock/item.html:50
msgid "This stock item does not have any child items"
msgstr ""
-#: stock/templates/stock/item.html:57 stock/templates/stock/navbar.html:19
+#: stock/templates/stock/item.html:58 stock/templates/stock/navbar.html:19
#: stock/templates/stock/navbar.html:22
msgid "Test Data"
msgstr ""
-#: stock/templates/stock/item.html:65
+#: stock/templates/stock/item.html:66
msgid "Delete Test Data"
msgstr ""
-#: stock/templates/stock/item.html:69
+#: stock/templates/stock/item.html:70
msgid "Add Test Data"
msgstr ""
-#: stock/templates/stock/item.html:72 stock/templates/stock/item_base.html:95
+#: stock/templates/stock/item.html:73 stock/templates/stock/item_base.html:95
msgid "Test Report"
msgstr ""
-#: stock/templates/stock/item.html:119 stock/templates/stock/navbar.html:27
+#: stock/templates/stock/item.html:120 stock/templates/stock/navbar.html:27
msgid "Installed Stock Items"
msgstr ""
-#: stock/templates/stock/item.html:124 stock/views.py:534
+#: stock/templates/stock/item.html:125 stock/views.py:534
msgid "Install Stock Item"
msgstr ""
-#: stock/templates/stock/item.html:299 stock/templates/stock/item.html:324
+#: stock/templates/stock/item.html:301 stock/templates/stock/item.html:326
msgid "Add Test Result"
msgstr ""
-#: stock/templates/stock/item.html:344
+#: stock/templates/stock/item.html:346
msgid "Edit Test Result"
msgstr ""
-#: stock/templates/stock/item.html:358
+#: stock/templates/stock/item.html:360
msgid "Delete Test Result"
msgstr ""
#: stock/templates/stock/item_base.html:33
#: stock/templates/stock/item_base.html:399
-#: templates/js/translated/table_filters.js:212
+#: templates/js/translated/table_filters.js:225
msgid "Expired"
msgstr ""
#: stock/templates/stock/item_base.html:43
#: stock/templates/stock/item_base.html:401
-#: templates/js/translated/table_filters.js:218
+#: templates/js/translated/table_filters.js:231
msgid "Stale"
msgstr ""
#: stock/templates/stock/item_base.html:80
-#: templates/js/translated/barcode.js:309
-#: templates/js/translated/barcode.js:314
+#: templates/js/translated/barcode.js:331
+#: templates/js/translated/barcode.js:336
msgid "Unlink Barcode"
msgstr ""
@@ -5768,7 +5910,7 @@ msgid "next page"
msgstr ""
#: stock/templates/stock/item_base.html:303
-#: templates/js/translated/build.js:628
+#: templates/js/translated/build.js:651
msgid "No location set"
msgstr ""
@@ -5795,7 +5937,7 @@ msgid "This StockItem expires on %(item.expiry_date)s"
msgstr ""
#: stock/templates/stock/item_base.html:408
-#: templates/js/translated/stock.js:1032
+#: templates/js/translated/stock.js:980
msgid "Last Updated"
msgstr ""
@@ -5825,7 +5967,7 @@ msgstr ""
#: stock/templates/stock/item_delete.html:12
#, python-format
-msgid "This will remove %(qty)s units of %(full_name)s from stock."
+msgid "This will remove %(qty)s units of %(full_name)s from stock."
msgstr ""
#: stock/templates/stock/item_install.html:8
@@ -5975,7 +6117,7 @@ msgstr ""
#: stock/templates/stock/stockitem_convert.html:8
#, python-format
-msgid "This stock item is current an instance of %(part)s"
+msgid "This stock item is current an instance of %(part)s"
msgstr ""
#: stock/templates/stock/stockitem_convert.html:9
@@ -6039,7 +6181,7 @@ msgstr ""
msgid "Uninstall Stock Items"
msgstr ""
-#: stock/views.py:780 templates/js/translated/stock.js:282
+#: stock/views.py:780 templates/js/translated/stock.js:353
msgid "Confirm stock adjustment"
msgstr ""
@@ -6059,7 +6201,7 @@ msgstr ""
msgid "Serialize Stock"
msgstr ""
-#: stock/views.py:1143 templates/js/translated/build.js:365
+#: stock/views.py:1143 templates/js/translated/build.js:392
msgid "Create new Stock Item"
msgstr ""
@@ -6171,11 +6313,11 @@ msgstr ""
msgid "Enter a search query"
msgstr ""
-#: templates/InvenTree/search.html:268 templates/js/translated/stock.js:629
+#: templates/InvenTree/search.html:268 templates/js/translated/stock.js:699
msgid "Shipped to customer"
msgstr ""
-#: templates/InvenTree/search.html:271 templates/js/translated/stock.js:639
+#: templates/InvenTree/search.html:271 templates/js/translated/stock.js:709
msgid "No stock location set"
msgstr ""
@@ -6240,7 +6382,7 @@ msgstr ""
#: templates/InvenTree/settings/navbar.html:27
#: templates/InvenTree/settings/navbar.html:29
-#: templates/js/translated/tables.js:351 templates/search_form.html:6
+#: templates/js/translated/tables.js:366 templates/search_form.html:6
#: templates/search_form.html:8
msgid "Search"
msgstr ""
@@ -6257,7 +6399,7 @@ msgstr ""
#: templates/InvenTree/settings/navbar.html:46
#: templates/InvenTree/settings/navbar.html:48
-#: templates/InvenTree/settings/settings.html:8 templates/navbar.html:84
+#: templates/InvenTree/settings/settings.html:8 templates/navbar.html:94
msgid "Settings"
msgstr ""
@@ -6332,16 +6474,16 @@ msgid "No category parameter templates found"
msgstr ""
#: templates/InvenTree/settings/settings.html:174
-#: templates/InvenTree/settings/settings.html:271
+#: templates/InvenTree/settings/settings.html:273
msgid "Edit Template"
msgstr ""
#: templates/InvenTree/settings/settings.html:175
-#: templates/InvenTree/settings/settings.html:272
+#: templates/InvenTree/settings/settings.html:274
msgid "Delete Template"
msgstr ""
-#: templates/InvenTree/settings/settings.html:251
+#: templates/InvenTree/settings/settings.html:253
msgid "No part parameter templates found"
msgstr ""
@@ -6358,6 +6500,7 @@ msgid "Account Settings"
msgstr ""
#: templates/InvenTree/settings/user.html:15
+#: templates/js/translated/helpers.js:26
msgid "Edit"
msgstr ""
@@ -6436,65 +6579,69 @@ msgstr ""
msgid "InvenTree Version"
msgstr ""
-#: templates/about.html:26
+#: templates/about.html:27
+msgid "Development Version"
+msgstr ""
+
+#: templates/about.html:30
msgid "Up to Date"
msgstr ""
-#: templates/about.html:28
+#: templates/about.html:32
msgid "Update Available"
msgstr ""
-#: templates/about.html:34
-msgid "API Version"
-msgstr ""
-
-#: templates/about.html:39
-msgid "Python Version"
-msgstr ""
-
-#: templates/about.html:44
-msgid "Django Version"
-msgstr ""
-
-#: templates/about.html:51
+#: templates/about.html:42
msgid "Commit Hash"
msgstr ""
-#: templates/about.html:58
+#: templates/about.html:49
msgid "Commit Date"
msgstr ""
-#: templates/about.html:63
+#: templates/about.html:55
msgid "InvenTree Documentation"
msgstr ""
-#: templates/about.html:68
+#: templates/about.html:60
+msgid "API Version"
+msgstr ""
+
+#: templates/about.html:65
+msgid "Python Version"
+msgstr ""
+
+#: templates/about.html:70
+msgid "Django Version"
+msgstr ""
+
+#: templates/about.html:75
msgid "View Code on GitHub"
msgstr ""
-#: templates/about.html:73
+#: templates/about.html:80
msgid "Credits"
msgstr ""
-#: templates/about.html:78
+#: templates/about.html:85
msgid "Mobile App"
msgstr ""
-#: templates/about.html:83
+#: templates/about.html:90
msgid "Submit Bug Report"
msgstr ""
-#: templates/about.html:90 templates/clip.html:4
+#: templates/about.html:97 templates/clip.html:4
msgid "copy to clipboard"
msgstr ""
-#: templates/about.html:90
+#: templates/about.html:97
msgid "copy version information"
msgstr ""
-#: templates/about.html:100 templates/js/translated/modals.js:33
-#: templates/js/translated/modals.js:567 templates/js/translated/modals.js:661
-#: templates/js/translated/modals.js:957 templates/modals.html:29
+#: templates/about.html:107 templates/js/translated/modals.js:50
+#: templates/js/translated/modals.js:584 templates/js/translated/modals.js:678
+#: templates/js/translated/modals.js:971 templates/modals.html:29
#: templates/modals.html:54
msgid "Close"
msgstr ""
@@ -6515,1358 +6662,1390 @@ msgstr ""
msgid "Remote image must not exceed maximum allowable file size"
msgstr ""
-#: templates/js/report.js:47 templates/js/translated/report.js:47
+#: templates/js/report.js:47 templates/js/translated/report.js:67
msgid "items selected"
msgstr ""
-#: templates/js/report.js:55 templates/js/translated/report.js:55
+#: templates/js/report.js:55 templates/js/translated/report.js:75
msgid "Select Report Template"
msgstr ""
-#: templates/js/report.js:70 templates/js/translated/report.js:70
+#: templates/js/report.js:70 templates/js/translated/report.js:90
msgid "Select Test Report Template"
msgstr ""
-#: templates/js/report.js:98 templates/js/translated/label.js:10
-#: templates/js/translated/report.js:98 templates/js/translated/stock.js:244
+#: templates/js/report.js:98 templates/js/translated/label.js:29
+#: templates/js/translated/report.js:118 templates/js/translated/stock.js:313
msgid "Select Stock Items"
msgstr ""
-#: templates/js/report.js:99 templates/js/translated/report.js:99
+#: templates/js/report.js:99 templates/js/translated/report.js:119
msgid "Stock item(s) must be selected before printing reports"
msgstr ""
#: templates/js/report.js:116 templates/js/report.js:169
#: templates/js/report.js:223 templates/js/report.js:277
-#: templates/js/report.js:331 templates/js/translated/report.js:116
-#: templates/js/translated/report.js:169 templates/js/translated/report.js:223
-#: templates/js/translated/report.js:277 templates/js/translated/report.js:331
+#: templates/js/report.js:331 templates/js/translated/report.js:136
+#: templates/js/translated/report.js:189 templates/js/translated/report.js:243
+#: templates/js/translated/report.js:297 templates/js/translated/report.js:351
msgid "No Reports Found"
msgstr ""
-#: templates/js/report.js:117 templates/js/translated/report.js:117
+#: templates/js/report.js:117 templates/js/translated/report.js:137
msgid "No report templates found which match selected stock item(s)"
msgstr ""
-#: templates/js/report.js:152 templates/js/translated/report.js:152
+#: templates/js/report.js:152 templates/js/translated/report.js:172
msgid "Select Builds"
msgstr ""
-#: templates/js/report.js:153 templates/js/translated/report.js:153
+#: templates/js/report.js:153 templates/js/translated/report.js:173
msgid "Build(s) must be selected before printing reports"
msgstr ""
-#: templates/js/report.js:170 templates/js/translated/report.js:170
+#: templates/js/report.js:170 templates/js/translated/report.js:190
msgid "No report templates found which match selected build(s)"
msgstr ""
-#: templates/js/report.js:205 templates/js/translated/label.js:115
-#: templates/js/translated/report.js:205
+#: templates/js/report.js:205 templates/js/translated/label.js:134
+#: templates/js/translated/report.js:225
msgid "Select Parts"
msgstr ""
-#: templates/js/report.js:206 templates/js/translated/report.js:206
+#: templates/js/report.js:206 templates/js/translated/report.js:226
msgid "Part(s) must be selected before printing reports"
msgstr ""
-#: templates/js/report.js:224 templates/js/translated/report.js:224
+#: templates/js/report.js:224 templates/js/translated/report.js:244
msgid "No report templates found which match selected part(s)"
msgstr ""
-#: templates/js/report.js:259 templates/js/translated/report.js:259
+#: templates/js/report.js:259 templates/js/translated/report.js:279
msgid "Select Purchase Orders"
msgstr ""
-#: templates/js/report.js:260 templates/js/translated/report.js:260
+#: templates/js/report.js:260 templates/js/translated/report.js:280
msgid "Purchase Order(s) must be selected before printing report"
msgstr ""
#: templates/js/report.js:278 templates/js/report.js:332
-#: templates/js/translated/report.js:278 templates/js/translated/report.js:332
+#: templates/js/translated/report.js:298 templates/js/translated/report.js:352
msgid "No report templates found which match selected orders"
msgstr ""
-#: templates/js/report.js:313 templates/js/translated/report.js:313
+#: templates/js/report.js:313 templates/js/translated/report.js:333
msgid "Select Sales Orders"
msgstr ""
-#: templates/js/report.js:314 templates/js/translated/report.js:314
+#: templates/js/report.js:314 templates/js/translated/report.js:334
msgid "Sales Order(s) must be selected before printing report"
msgstr ""
-#: templates/js/translated/api.js:161 templates/js/translated/modals.js:1027
+#: templates/js/translated/api.js:174 templates/js/translated/modals.js:1041
msgid "No Response"
msgstr ""
-#: templates/js/translated/api.js:162 templates/js/translated/modals.js:1028
+#: templates/js/translated/api.js:175 templates/js/translated/modals.js:1042
msgid "No response from the InvenTree server"
msgstr ""
-#: templates/js/translated/api.js:167
+#: templates/js/translated/api.js:181
msgid "Error 400: Bad request"
msgstr ""
-#: templates/js/translated/api.js:168
+#: templates/js/translated/api.js:182
msgid "API request returned error code 400"
msgstr ""
-#: templates/js/translated/api.js:171 templates/js/translated/modals.js:1037
+#: templates/js/translated/api.js:186 templates/js/translated/modals.js:1051
msgid "Error 401: Not Authenticated"
msgstr ""
-#: templates/js/translated/api.js:172 templates/js/translated/modals.js:1038
+#: templates/js/translated/api.js:187 templates/js/translated/modals.js:1052
msgid "Authentication credentials not supplied"
msgstr ""
-#: templates/js/translated/api.js:175 templates/js/translated/modals.js:1042
+#: templates/js/translated/api.js:191 templates/js/translated/modals.js:1056
msgid "Error 403: Permission Denied"
msgstr ""
-#: templates/js/translated/api.js:176 templates/js/translated/modals.js:1043
+#: templates/js/translated/api.js:192 templates/js/translated/modals.js:1057
msgid "You do not have the required permissions to access this function"
msgstr ""
-#: templates/js/translated/api.js:179 templates/js/translated/modals.js:1047
+#: templates/js/translated/api.js:196 templates/js/translated/modals.js:1061
msgid "Error 404: Resource Not Found"
msgstr ""
-#: templates/js/translated/api.js:180 templates/js/translated/modals.js:1048
+#: templates/js/translated/api.js:197 templates/js/translated/modals.js:1062
msgid "The requested resource could not be located on the server"
msgstr ""
-#: templates/js/translated/api.js:183 templates/js/translated/modals.js:1052
+#: templates/js/translated/api.js:201 templates/js/translated/modals.js:1066
msgid "Error 408: Timeout"
msgstr ""
-#: templates/js/translated/api.js:184 templates/js/translated/modals.js:1053
+#: templates/js/translated/api.js:202 templates/js/translated/modals.js:1067
msgid "Connection timeout while requesting data from server"
msgstr ""
-#: templates/js/translated/api.js:187
+#: templates/js/translated/api.js:205
msgid "Unhandled Error Code"
msgstr ""
-#: templates/js/translated/api.js:188
+#: templates/js/translated/api.js:206
msgid "Error code"
msgstr ""
-#: templates/js/translated/attachment.js:16
+#: templates/js/translated/attachment.js:27
msgid "No attachments found"
msgstr ""
-#: templates/js/translated/attachment.js:56
+#: templates/js/translated/attachment.js:91
msgid "Upload Date"
msgstr ""
-#: templates/js/translated/attachment.js:69
+#: templates/js/translated/attachment.js:104
msgid "Edit attachment"
msgstr ""
-#: templates/js/translated/attachment.js:76
+#: templates/js/translated/attachment.js:111
msgid "Delete attachment"
msgstr ""
-#: templates/js/translated/barcode.js:8
+#: templates/js/translated/barcode.js:30
msgid "Scan barcode data here using wedge scanner"
msgstr ""
-#: templates/js/translated/barcode.js:10
+#: templates/js/translated/barcode.js:32
msgid "Enter barcode data"
msgstr ""
-#: templates/js/translated/barcode.js:14
+#: templates/js/translated/barcode.js:36
msgid "Barcode"
msgstr ""
-#: templates/js/translated/barcode.js:32
+#: templates/js/translated/barcode.js:54
msgid "Enter optional notes for stock transfer"
msgstr ""
-#: templates/js/translated/barcode.js:33
+#: templates/js/translated/barcode.js:55
msgid "Enter notes"
msgstr ""
-#: templates/js/translated/barcode.js:71
+#: templates/js/translated/barcode.js:93
msgid "Server error"
msgstr ""
-#: templates/js/translated/barcode.js:92
+#: templates/js/translated/barcode.js:114
msgid "Unknown response from server"
msgstr ""
-#: templates/js/translated/barcode.js:119
-#: templates/js/translated/modals.js:1017
+#: templates/js/translated/barcode.js:141
+#: templates/js/translated/modals.js:1031
msgid "Invalid server response"
msgstr ""
-#: templates/js/translated/barcode.js:212
+#: templates/js/translated/barcode.js:234
msgid "Scan barcode data below"
msgstr ""
-#: templates/js/translated/barcode.js:270
+#: templates/js/translated/barcode.js:281 templates/navbar.html:65
+msgid "Scan Barcode"
+msgstr ""
+
+#: templates/js/translated/barcode.js:292
msgid "No URL in response"
msgstr ""
-#: templates/js/translated/barcode.js:288
+#: templates/js/translated/barcode.js:310
msgid "Link Barcode to Stock Item"
msgstr ""
-#: templates/js/translated/barcode.js:311
+#: templates/js/translated/barcode.js:333
msgid "This will remove the association between this stock item and the barcode"
msgstr ""
-#: templates/js/translated/barcode.js:317
+#: templates/js/translated/barcode.js:339
msgid "Unlink"
msgstr ""
-#: templates/js/translated/barcode.js:376 templates/js/translated/stock.js:220
+#: templates/js/translated/barcode.js:398 templates/js/translated/stock.js:289
msgid "Remove stock item"
msgstr ""
-#: templates/js/translated/barcode.js:418
+#: templates/js/translated/barcode.js:440
msgid "Check Stock Items into Location"
msgstr ""
-#: templates/js/translated/barcode.js:422
-#: templates/js/translated/barcode.js:547
+#: templates/js/translated/barcode.js:444
+#: templates/js/translated/barcode.js:571
msgid "Check In"
msgstr ""
-#: templates/js/translated/barcode.js:462
-#: templates/js/translated/barcode.js:586
+#: templates/js/translated/barcode.js:486
+#: templates/js/translated/barcode.js:610
msgid "Error transferring stock"
msgstr ""
-#: templates/js/translated/barcode.js:481
+#: templates/js/translated/barcode.js:505
msgid "Stock Item already scanned"
msgstr ""
-#: templates/js/translated/barcode.js:485
+#: templates/js/translated/barcode.js:509
msgid "Stock Item already in this location"
msgstr ""
-#: templates/js/translated/barcode.js:492
+#: templates/js/translated/barcode.js:516
msgid "Added stock item"
msgstr ""
-#: templates/js/translated/barcode.js:499
+#: templates/js/translated/barcode.js:523
msgid "Barcode does not match Stock Item"
msgstr ""
-#: templates/js/translated/barcode.js:542
+#: templates/js/translated/barcode.js:566
msgid "Check Into Location"
msgstr ""
-#: templates/js/translated/barcode.js:605
+#: templates/js/translated/barcode.js:629
msgid "Barcode does not match a valid location"
msgstr ""
-#: templates/js/translated/bom.js:195 templates/js/translated/build.js:1152
+#: templates/js/translated/bom.js:215 templates/js/translated/build.js:1169
msgid "Open subassembly"
msgstr ""
-#: templates/js/translated/bom.js:269
+#: templates/js/translated/bom.js:287
msgid "Purchase Price Range"
msgstr ""
-#: templates/js/translated/bom.js:277
+#: templates/js/translated/bom.js:294
msgid "Purchase Price Average"
msgstr ""
-#: templates/js/translated/bom.js:326 templates/js/translated/bom.js:412
+#: templates/js/translated/bom.js:342 templates/js/translated/bom.js:428
msgid "View BOM"
msgstr ""
-#: templates/js/translated/bom.js:386
+#: templates/js/translated/bom.js:402
msgid "Validate BOM Item"
msgstr ""
-#: templates/js/translated/bom.js:388
+#: templates/js/translated/bom.js:404
msgid "This line has been validated"
msgstr ""
-#: templates/js/translated/bom.js:390 templates/js/translated/bom.js:555
+#: templates/js/translated/bom.js:406 templates/js/translated/bom.js:569
msgid "Edit BOM Item"
msgstr ""
-#: templates/js/translated/bom.js:392 templates/js/translated/bom.js:539
+#: templates/js/translated/bom.js:408 templates/js/translated/bom.js:554
msgid "Delete BOM Item"
msgstr ""
-#: templates/js/translated/bom.js:483 templates/js/translated/build.js:458
-#: templates/js/translated/build.js:1250
+#: templates/js/translated/bom.js:499 templates/js/translated/build.js:483
+#: templates/js/translated/build.js:1267
msgid "No BOM items found"
msgstr ""
-#: templates/js/translated/build.js:42
+#: templates/js/translated/build.js:69
msgid "Edit Build Order"
msgstr ""
-#: templates/js/translated/build.js:68
+#: templates/js/translated/build.js:95
msgid "Create Build Order"
msgstr ""
-#: templates/js/translated/build.js:100
+#: templates/js/translated/build.js:127
msgid "Auto-allocate stock items to this output"
msgstr ""
-#: templates/js/translated/build.js:108
+#: templates/js/translated/build.js:135
msgid "Unallocate stock from build output"
msgstr ""
-#: templates/js/translated/build.js:118
+#: templates/js/translated/build.js:145
msgid "Complete build output"
msgstr ""
-#: templates/js/translated/build.js:127
+#: templates/js/translated/build.js:154
msgid "Delete build output"
msgstr ""
-#: templates/js/translated/build.js:222
+#: templates/js/translated/build.js:249
msgid "No build order allocations found"
msgstr ""
-#: templates/js/translated/build.js:260 templates/js/translated/order.js:471
+#: templates/js/translated/build.js:287 templates/js/translated/order.js:813
msgid "Location not specified"
msgstr ""
-#: templates/js/translated/build.js:364 templates/stock_table.html:20
+#: templates/js/translated/build.js:391 templates/stock_table.html:20
msgid "New Stock Item"
msgstr ""
-#: templates/js/translated/build.js:679
+#: templates/js/translated/build.js:702
msgid "Required Part"
msgstr ""
-#: templates/js/translated/build.js:700
+#: templates/js/translated/build.js:723
msgid "Quantity Per"
msgstr ""
-#: templates/js/translated/build.js:770 templates/js/translated/build.js:1214
+#: templates/js/translated/build.js:793 templates/js/translated/build.js:1231
#: templates/stock_table.html:59
msgid "Order stock"
msgstr ""
-#: templates/js/translated/build.js:823
+#: templates/js/translated/build.js:846
msgid "No builds matching query"
msgstr ""
-#: templates/js/translated/build.js:840 templates/js/translated/part.js:711
-#: templates/js/translated/part.js:956 templates/js/translated/stock.js:883
-#: templates/js/translated/stock.js:1336
+#: templates/js/translated/build.js:863 templates/js/translated/part.js:845
+#: templates/js/translated/part.js:1123 templates/js/translated/stock.js:783
+#: templates/js/translated/stock.js:1477
msgid "Select"
msgstr ""
-#: templates/js/translated/build.js:860
+#: templates/js/translated/build.js:883
msgid "Build order is overdue"
msgstr ""
-#: templates/js/translated/build.js:924 templates/js/translated/stock.js:1558
+#: templates/js/translated/build.js:944 templates/js/translated/stock.js:1696
msgid "No user information"
msgstr ""
-#: templates/js/translated/build.js:939
+#: templates/js/translated/build.js:956
msgid "No information"
msgstr ""
-#: templates/js/translated/build.js:989
+#: templates/js/translated/build.js:1007
msgid "No parts allocated for"
msgstr ""
-#: templates/js/translated/company.js:34
+#: templates/js/translated/company.js:65
msgid "Add Manufacturer"
msgstr ""
-#: templates/js/translated/company.js:47 templates/js/translated/company.js:136
+#: templates/js/translated/company.js:78 templates/js/translated/company.js:176
msgid "Add Manufacturer Part"
msgstr ""
-#: templates/js/translated/company.js:59
+#: templates/js/translated/company.js:99
msgid "Edit Manufacturer Part"
msgstr ""
-#: templates/js/translated/company.js:68
+#: templates/js/translated/company.js:108
msgid "Delete Manufacturer Part"
msgstr ""
-#: templates/js/translated/company.js:124 templates/js/translated/order.js:58
+#: templates/js/translated/company.js:164 templates/js/translated/order.js:86
msgid "Add Supplier"
msgstr ""
-#: templates/js/translated/company.js:152
+#: templates/js/translated/company.js:192
msgid "Add Supplier Part"
msgstr ""
-#: templates/js/translated/company.js:162
+#: templates/js/translated/company.js:207
msgid "Edit Supplier Part"
msgstr ""
-#: templates/js/translated/company.js:172
+#: templates/js/translated/company.js:217
msgid "Delete Supplier Part"
msgstr ""
-#: templates/js/translated/company.js:219
+#: templates/js/translated/company.js:264
msgid "Edit Company"
msgstr ""
-#: templates/js/translated/company.js:240
+#: templates/js/translated/company.js:285
msgid "Add new Company"
msgstr ""
-#: templates/js/translated/company.js:317
+#: templates/js/translated/company.js:362
msgid "Parts Supplied"
msgstr ""
-#: templates/js/translated/company.js:326
+#: templates/js/translated/company.js:371
msgid "Parts Manufactured"
msgstr ""
-#: templates/js/translated/company.js:339
+#: templates/js/translated/company.js:385
msgid "No company information found"
msgstr ""
-#: templates/js/translated/company.js:357
+#: templates/js/translated/company.js:404
msgid "The following manufacturer parts will be deleted"
msgstr ""
-#: templates/js/translated/company.js:374
+#: templates/js/translated/company.js:421
msgid "Delete Manufacturer Parts"
msgstr ""
-#: templates/js/translated/company.js:427
+#: templates/js/translated/company.js:475
msgid "No manufacturer parts found"
msgstr ""
-#: templates/js/translated/company.js:446
-#: templates/js/translated/company.js:696 templates/js/translated/part.js:288
-#: templates/js/translated/part.js:373
+#: templates/js/translated/company.js:495
+#: templates/js/translated/company.js:751 templates/js/translated/part.js:416
+#: templates/js/translated/part.js:501
msgid "Template part"
msgstr ""
-#: templates/js/translated/company.js:450
-#: templates/js/translated/company.js:700 templates/js/translated/part.js:292
-#: templates/js/translated/part.js:377
+#: templates/js/translated/company.js:499
+#: templates/js/translated/company.js:755 templates/js/translated/part.js:420
+#: templates/js/translated/part.js:505
msgid "Assembled part"
msgstr ""
-#: templates/js/translated/company.js:574 templates/js/translated/part.js:462
+#: templates/js/translated/company.js:626 templates/js/translated/part.js:593
msgid "No parameters found"
msgstr ""
-#: templates/js/translated/company.js:610 templates/js/translated/part.js:503
+#: templates/js/translated/company.js:663 templates/js/translated/part.js:635
msgid "Edit parameter"
msgstr ""
-#: templates/js/translated/company.js:611 templates/js/translated/part.js:504
+#: templates/js/translated/company.js:664 templates/js/translated/part.js:636
msgid "Delete parameter"
msgstr ""
-#: templates/js/translated/company.js:630 templates/js/translated/part.js:521
+#: templates/js/translated/company.js:683 templates/js/translated/part.js:653
msgid "Edit Parameter"
msgstr ""
-#: templates/js/translated/company.js:641 templates/js/translated/part.js:533
+#: templates/js/translated/company.js:694 templates/js/translated/part.js:665
msgid "Delete Parameter"
msgstr ""
-#: templates/js/translated/company.js:677
+#: templates/js/translated/company.js:731
msgid "No supplier parts found"
msgstr ""
-#: templates/js/translated/filters.js:167
-#: templates/js/translated/filters.js:404
+#: templates/js/translated/filters.js:178
+#: templates/js/translated/filters.js:402
msgid "true"
msgstr ""
-#: templates/js/translated/filters.js:171
-#: templates/js/translated/filters.js:405
+#: templates/js/translated/filters.js:182
+#: templates/js/translated/filters.js:403
msgid "false"
msgstr ""
-#: templates/js/translated/filters.js:193
+#: templates/js/translated/filters.js:204
msgid "Select filter"
msgstr ""
-#: templates/js/translated/filters.js:268
+#: templates/js/translated/filters.js:279
msgid "Reload data"
msgstr ""
-#: templates/js/translated/filters.js:270
+#: templates/js/translated/filters.js:281
msgid "Add new filter"
msgstr ""
-#: templates/js/translated/filters.js:273
+#: templates/js/translated/filters.js:284
msgid "Clear all filters"
msgstr ""
-#: templates/js/translated/filters.js:303
+#: templates/js/translated/filters.js:312
msgid "Create filter"
msgstr ""
-#: templates/js/translated/forms.js:289 templates/js/translated/forms.js:302
-#: templates/js/translated/forms.js:314 templates/js/translated/forms.js:326
+#: templates/js/translated/forms.js:323 templates/js/translated/forms.js:336
+#: templates/js/translated/forms.js:348 templates/js/translated/forms.js:360
msgid "Action Prohibited"
msgstr ""
-#: templates/js/translated/forms.js:290
+#: templates/js/translated/forms.js:324
msgid "Create operation not allowed"
msgstr ""
-#: templates/js/translated/forms.js:303
+#: templates/js/translated/forms.js:337
msgid "Update operation not allowed"
msgstr ""
-#: templates/js/translated/forms.js:315
+#: templates/js/translated/forms.js:349
msgid "Delete operation not allowed"
msgstr ""
-#: templates/js/translated/forms.js:327
+#: templates/js/translated/forms.js:361
msgid "View operation not allowed"
msgstr ""
-#: templates/js/translated/forms.js:865 templates/modals.html:21
+#: templates/js/translated/forms.js:889 templates/modals.html:21
#: templates/modals.html:47
msgid "Form errors exist"
msgstr ""
-#: templates/js/translated/forms.js:1258
+#: templates/js/translated/forms.js:1379
msgid "Searching"
msgstr ""
-#: templates/js/translated/forms.js:1423
+#: templates/js/translated/forms.js:1593
msgid "Clear input"
msgstr ""
-#: templates/js/translated/label.js:11
-msgid "Stock item(s) must be selected before printing labels"
+#: templates/js/translated/helpers.js:19
+msgid "YES"
msgstr ""
-#: templates/js/translated/label.js:29 templates/js/translated/label.js:79
-#: templates/js/translated/label.js:134
-msgid "No Labels Found"
+#: templates/js/translated/helpers.js:21
+msgid "NO"
msgstr ""
#: templates/js/translated/label.js:30
+msgid "Stock item(s) must be selected before printing labels"
+msgstr ""
+
+#: templates/js/translated/label.js:48 templates/js/translated/label.js:98
+#: templates/js/translated/label.js:153
+msgid "No Labels Found"
+msgstr ""
+
+#: templates/js/translated/label.js:49
msgid "No labels found which match selected stock item(s)"
msgstr ""
-#: templates/js/translated/label.js:61
+#: templates/js/translated/label.js:80
msgid "Select Stock Locations"
msgstr ""
-#: templates/js/translated/label.js:62
+#: templates/js/translated/label.js:81
msgid "Stock location(s) must be selected before printing labels"
msgstr ""
-#: templates/js/translated/label.js:80
+#: templates/js/translated/label.js:99
msgid "No labels found which match selected stock location(s)"
msgstr ""
-#: templates/js/translated/label.js:116
+#: templates/js/translated/label.js:135
msgid "Part(s) must be selected before printing labels"
msgstr ""
-#: templates/js/translated/label.js:135
+#: templates/js/translated/label.js:154
msgid "No labels found which match the selected part(s)"
msgstr ""
-#: templates/js/translated/label.js:209
+#: templates/js/translated/label.js:228
msgid "stock items selected"
msgstr ""
-#: templates/js/translated/label.js:217
+#: templates/js/translated/label.js:236
msgid "Select Label"
msgstr ""
-#: templates/js/translated/label.js:232
+#: templates/js/translated/label.js:251
msgid "Select Label Template"
msgstr ""
-#: templates/js/translated/modals.js:59 templates/js/translated/modals.js:103
-#: templates/js/translated/modals.js:593
+#: templates/js/translated/modals.js:76 templates/js/translated/modals.js:120
+#: templates/js/translated/modals.js:610
msgid "Cancel"
msgstr ""
-#: templates/js/translated/modals.js:60 templates/js/translated/modals.js:102
-#: templates/js/translated/modals.js:660 templates/js/translated/modals.js:956
+#: templates/js/translated/modals.js:77 templates/js/translated/modals.js:119
+#: templates/js/translated/modals.js:677 templates/js/translated/modals.js:970
#: templates/modals.html:30 templates/modals.html:55
msgid "Submit"
msgstr ""
-#: templates/js/translated/modals.js:101
+#: templates/js/translated/modals.js:118
msgid "Form Title"
msgstr ""
-#: templates/js/translated/modals.js:380
+#: templates/js/translated/modals.js:397
msgid "Waiting for server..."
msgstr ""
-#: templates/js/translated/modals.js:539
+#: templates/js/translated/modals.js:556
msgid "Show Error Information"
msgstr ""
-#: templates/js/translated/modals.js:592
+#: templates/js/translated/modals.js:609
msgid "Accept"
msgstr ""
-#: templates/js/translated/modals.js:649
+#: templates/js/translated/modals.js:666
msgid "Loading Data"
msgstr ""
-#: templates/js/translated/modals.js:907
+#: templates/js/translated/modals.js:922
msgid "Invalid response from server"
msgstr ""
-#: templates/js/translated/modals.js:907
+#: templates/js/translated/modals.js:922
msgid "Form data missing from server response"
msgstr ""
-#: templates/js/translated/modals.js:920
+#: templates/js/translated/modals.js:934
msgid "Error posting form data"
msgstr ""
-#: templates/js/translated/modals.js:1017
+#: templates/js/translated/modals.js:1031
msgid "JSON response missing form data"
msgstr ""
-#: templates/js/translated/modals.js:1032
+#: templates/js/translated/modals.js:1046
msgid "Error 400: Bad Request"
msgstr ""
-#: templates/js/translated/modals.js:1033
+#: templates/js/translated/modals.js:1047
msgid "Server returned error code 400"
msgstr ""
-#: templates/js/translated/modals.js:1056
+#: templates/js/translated/modals.js:1070
msgid "Error requesting form data"
msgstr ""
-#: templates/js/translated/model_renderers.js:38
+#: templates/js/translated/model_renderers.js:40
msgid "Company ID"
msgstr ""
-#: templates/js/translated/model_renderers.js:78
+#: templates/js/translated/model_renderers.js:82
msgid "Location ID"
msgstr ""
-#: templates/js/translated/model_renderers.js:95
+#: templates/js/translated/model_renderers.js:99
msgid "Build ID"
msgstr ""
-#: templates/js/translated/model_renderers.js:114
+#: templates/js/translated/model_renderers.js:119
msgid "Part ID"
msgstr ""
-#: templates/js/translated/model_renderers.js:163
+#: templates/js/translated/model_renderers.js:171
msgid "Category ID"
msgstr ""
-#: templates/js/translated/model_renderers.js:199
+#: templates/js/translated/model_renderers.js:208
msgid "Manufacturer Part ID"
msgstr ""
-#: templates/js/translated/model_renderers.js:227
+#: templates/js/translated/model_renderers.js:237
msgid "Supplier Part ID"
msgstr ""
-#: templates/js/translated/order.js:17
+#: templates/js/translated/order.js:45
msgid "Add Customer"
msgstr ""
-#: templates/js/translated/order.js:42
+#: templates/js/translated/order.js:70
msgid "Create Sales Order"
msgstr ""
-#: templates/js/translated/order.js:222
+#: templates/js/translated/order.js:295
msgid "No purchase orders found"
msgstr ""
-#: templates/js/translated/order.js:246 templates/js/translated/order.js:341
+#: templates/js/translated/order.js:320 templates/js/translated/order.js:682
msgid "Order is overdue"
msgstr ""
-#: templates/js/translated/order.js:318
+#: templates/js/translated/order.js:452
+msgid "No line items found"
+msgstr ""
+
+#: templates/js/translated/order.js:617
+msgid "Delete line item"
+msgstr ""
+
+#: templates/js/translated/order.js:621
+msgid "Receive line item"
+msgstr ""
+
+#: templates/js/translated/order.js:658
msgid "No sales orders found"
msgstr ""
-#: templates/js/translated/order.js:355
+#: templates/js/translated/order.js:696
msgid "Invalid Customer"
msgstr ""
-#: templates/js/translated/order.js:432
+#: templates/js/translated/order.js:774
msgid "No sales order allocations found"
msgstr ""
-#: templates/js/translated/part.js:10
-msgid "YES"
-msgstr ""
-
-#: templates/js/translated/part.js:12
-msgid "NO"
-msgstr ""
-
-#: templates/js/translated/part.js:22
-msgid "Add Part Category"
-msgstr ""
-
-#: templates/js/translated/part.js:53
+#: templates/js/translated/part.js:49
msgid "Part Attributes"
msgstr ""
-#: templates/js/translated/part.js:96
+#: templates/js/translated/part.js:53
msgid "Part Creation Options"
msgstr ""
-#: templates/js/translated/part.js:102
-msgid "Initial Stock Quantity"
-msgstr ""
-
-#: templates/js/translated/part.js:103
-msgid "Initialize part stock with specified quantity"
-msgstr ""
-
-#: templates/js/translated/part.js:109
-msgid "Copy Category Parameters"
-msgstr ""
-
-#: templates/js/translated/part.js:110
-msgid "Copy parameter templates from selected part category"
-msgstr ""
-
-#: templates/js/translated/part.js:120
+#: templates/js/translated/part.js:57
msgid "Part Duplication Options"
msgstr ""
-#: templates/js/translated/part.js:131
-msgid "Copy Image"
+#: templates/js/translated/part.js:61
+msgid "Supplier Options"
msgstr ""
-#: templates/js/translated/part.js:132
-msgid "Copy image from original part"
+#: templates/js/translated/part.js:75
+msgid "Add Part Category"
msgstr ""
-#: templates/js/translated/part.js:138
-msgid "Copy BOM"
+#: templates/js/translated/part.js:159
+msgid "Create Initial Stock"
msgstr ""
-#: templates/js/translated/part.js:139
-msgid "Copy bill of materials from original part"
+#: templates/js/translated/part.js:160
+msgid "Create an initial stock item for this part"
msgstr ""
-#: templates/js/translated/part.js:145
-msgid "Copy Parameters"
+#: templates/js/translated/part.js:167
+msgid "Initial Stock Quantity"
msgstr ""
-#: templates/js/translated/part.js:146
-msgid "Copy parameter data from original part"
+#: templates/js/translated/part.js:168
+msgid "Specify initial stock quantity for this part"
msgstr ""
-#: templates/js/translated/part.js:158
-msgid "Parent part category"
+#: templates/js/translated/part.js:175 templates/js/translated/stock.js:330
+msgid "Select destination stock location"
+msgstr ""
+
+#: templates/js/translated/part.js:186
+msgid "Copy Category Parameters"
+msgstr ""
+
+#: templates/js/translated/part.js:187
+msgid "Copy parameter templates from selected part category"
+msgstr ""
+
+#: templates/js/translated/part.js:195
+msgid "Add Supplier Data"
msgstr ""
#: templates/js/translated/part.js:196
+msgid "Create initial supplier data for this part"
+msgstr ""
+
+#: templates/js/translated/part.js:252
+msgid "Copy Image"
+msgstr ""
+
+#: templates/js/translated/part.js:253
+msgid "Copy image from original part"
+msgstr ""
+
+#: templates/js/translated/part.js:260
+msgid "Copy BOM"
+msgstr ""
+
+#: templates/js/translated/part.js:261
+msgid "Copy bill of materials from original part"
+msgstr ""
+
+#: templates/js/translated/part.js:268
+msgid "Copy Parameters"
+msgstr ""
+
+#: templates/js/translated/part.js:269
+msgid "Copy parameter data from original part"
+msgstr ""
+
+#: templates/js/translated/part.js:282
+msgid "Parent part category"
+msgstr ""
+
+#: templates/js/translated/part.js:323
msgid "Edit Part"
msgstr ""
-#: templates/js/translated/part.js:280 templates/js/translated/part.js:365
+#: templates/js/translated/part.js:408 templates/js/translated/part.js:493
msgid "Trackable part"
msgstr ""
-#: templates/js/translated/part.js:284 templates/js/translated/part.js:369
+#: templates/js/translated/part.js:412 templates/js/translated/part.js:497
msgid "Virtual part"
msgstr ""
-#: templates/js/translated/part.js:296
+#: templates/js/translated/part.js:424
msgid "Starred part"
msgstr ""
-#: templates/js/translated/part.js:300
+#: templates/js/translated/part.js:428
msgid "Salable part"
msgstr ""
-#: templates/js/translated/part.js:414
+#: templates/js/translated/part.js:543
msgid "No variants found"
msgstr ""
-#: templates/js/translated/part.js:601 templates/js/translated/part.js:840
+#: templates/js/translated/part.js:732 templates/js/translated/part.js:994
msgid "No parts found"
msgstr ""
-#: templates/js/translated/part.js:779
+#: templates/js/translated/part.js:921
msgid "No category"
msgstr ""
-#: templates/js/translated/part.js:797
-#: templates/js/translated/table_filters.js:337
+#: templates/js/translated/part.js:944
+#: templates/js/translated/table_filters.js:350
msgid "Low stock"
msgstr ""
-#: templates/js/translated/part.js:981 templates/js/translated/stock.js:1360
+#: templates/js/translated/part.js:1148 templates/js/translated/stock.js:1501
msgid "Path"
msgstr ""
-#: templates/js/translated/part.js:1024
+#: templates/js/translated/part.js:1191
msgid "No test templates matching query"
msgstr ""
-#: templates/js/translated/part.js:1075 templates/js/translated/stock.js:443
+#: templates/js/translated/part.js:1242 templates/js/translated/stock.js:514
msgid "Edit test result"
msgstr ""
-#: templates/js/translated/part.js:1076 templates/js/translated/stock.js:444
+#: templates/js/translated/part.js:1243 templates/js/translated/stock.js:515
msgid "Delete test result"
msgstr ""
-#: templates/js/translated/part.js:1082
+#: templates/js/translated/part.js:1249
msgid "This test is defined for a parent part"
msgstr ""
-#: templates/js/translated/part.js:1107
+#: templates/js/translated/part.js:1274
#, python-brace-format
msgid "No ${human_name} information found"
msgstr ""
-#: templates/js/translated/part.js:1160
+#: templates/js/translated/part.js:1329
#, python-brace-format
msgid "Edit ${human_name}"
msgstr ""
-#: templates/js/translated/part.js:1161
+#: templates/js/translated/part.js:1330
#, python-brace-format
msgid "Delete ${human_name}"
msgstr ""
-#: templates/js/translated/part.js:1261
+#: templates/js/translated/part.js:1431
msgid "Single Price"
msgstr ""
-#: templates/js/translated/part.js:1280
+#: templates/js/translated/part.js:1450
msgid "Single Price Difference"
msgstr ""
-#: templates/js/translated/stock.js:9
+#: templates/js/translated/stock.js:66
msgid "Parent stock location"
msgstr ""
-#: templates/js/translated/stock.js:39
+#: templates/js/translated/stock.js:96
msgid "Export Stock"
msgstr ""
-#: templates/js/translated/stock.js:42
+#: templates/js/translated/stock.js:99
msgid "Format"
msgstr ""
-#: templates/js/translated/stock.js:43
+#: templates/js/translated/stock.js:100
msgid "Select file format"
msgstr ""
-#: templates/js/translated/stock.js:55
+#: templates/js/translated/stock.js:124
msgid "Include Sublocations"
msgstr ""
-#: templates/js/translated/stock.js:56
+#: templates/js/translated/stock.js:125
msgid "Include stock items in sublocations"
msgstr ""
-#: templates/js/translated/stock.js:98
+#: templates/js/translated/stock.js:167
msgid "Transfer Stock"
msgstr ""
-#: templates/js/translated/stock.js:99
+#: templates/js/translated/stock.js:168
msgid "Move"
msgstr ""
-#: templates/js/translated/stock.js:105
+#: templates/js/translated/stock.js:174
msgid "Count Stock"
msgstr ""
-#: templates/js/translated/stock.js:106
+#: templates/js/translated/stock.js:175
msgid "Count"
msgstr ""
-#: templates/js/translated/stock.js:110
+#: templates/js/translated/stock.js:179
msgid "Remove Stock"
msgstr ""
-#: templates/js/translated/stock.js:111
+#: templates/js/translated/stock.js:180
msgid "Take"
msgstr ""
-#: templates/js/translated/stock.js:115
+#: templates/js/translated/stock.js:184
msgid "Add Stock"
msgstr ""
-#: templates/js/translated/stock.js:116 users/models.py:190
+#: templates/js/translated/stock.js:185 users/models.py:190
msgid "Add"
msgstr ""
-#: templates/js/translated/stock.js:120 templates/stock_table.html:63
+#: templates/js/translated/stock.js:189 templates/stock_table.html:63
msgid "Delete Stock"
msgstr ""
-#: templates/js/translated/stock.js:209
+#: templates/js/translated/stock.js:278
msgid "Quantity cannot be adjusted for serialized stock"
msgstr ""
-#: templates/js/translated/stock.js:209
+#: templates/js/translated/stock.js:278
msgid "Specify stock quantity"
msgstr ""
-#: templates/js/translated/stock.js:245
+#: templates/js/translated/stock.js:314
msgid "You must select at least one available stock item"
msgstr ""
-#: templates/js/translated/stock.js:261
-msgid "Select destination stock location"
-msgstr ""
-
-#: templates/js/translated/stock.js:269
+#: templates/js/translated/stock.js:339
msgid "Stock transaction notes"
msgstr ""
-#: templates/js/translated/stock.js:406
+#: templates/js/translated/stock.js:477
msgid "PASS"
msgstr ""
-#: templates/js/translated/stock.js:408
+#: templates/js/translated/stock.js:479
msgid "FAIL"
msgstr ""
-#: templates/js/translated/stock.js:413
+#: templates/js/translated/stock.js:484
msgid "NO RESULT"
msgstr ""
-#: templates/js/translated/stock.js:439
+#: templates/js/translated/stock.js:510
msgid "Add test result"
msgstr ""
-#: templates/js/translated/stock.js:465
+#: templates/js/translated/stock.js:536
msgid "No test results found"
msgstr ""
-#: templates/js/translated/stock.js:513
+#: templates/js/translated/stock.js:584
msgid "Test Date"
msgstr ""
-#: templates/js/translated/stock.js:621
+#: templates/js/translated/stock.js:691
msgid "In production"
msgstr ""
-#: templates/js/translated/stock.js:625
+#: templates/js/translated/stock.js:695
msgid "Installed in Stock Item"
msgstr ""
-#: templates/js/translated/stock.js:633
+#: templates/js/translated/stock.js:703
msgid "Assigned to Sales Order"
msgstr ""
-#: templates/js/translated/stock.js:709
-msgid "No stock items matching query"
-msgstr ""
-
-#: templates/js/translated/stock.js:729
-msgid "items"
-msgstr ""
-
-#: templates/js/translated/stock.js:821
-msgid "batches"
-msgstr ""
-
-#: templates/js/translated/stock.js:848
-msgid "locations"
-msgstr ""
-
-#: templates/js/translated/stock.js:850
-msgid "Undefined location"
-msgstr ""
-
-#: templates/js/translated/stock.js:951
+#: templates/js/translated/stock.js:865
msgid "Stock item is in production"
msgstr ""
-#: templates/js/translated/stock.js:956
+#: templates/js/translated/stock.js:870
msgid "Stock item assigned to sales order"
msgstr ""
-#: templates/js/translated/stock.js:959
+#: templates/js/translated/stock.js:873
msgid "Stock item assigned to customer"
msgstr ""
-#: templates/js/translated/stock.js:963
+#: templates/js/translated/stock.js:877
msgid "Stock item has expired"
msgstr ""
-#: templates/js/translated/stock.js:965
+#: templates/js/translated/stock.js:879
msgid "Stock item will expire soon"
msgstr ""
-#: templates/js/translated/stock.js:969
+#: templates/js/translated/stock.js:883
msgid "Stock item has been allocated"
msgstr ""
-#: templates/js/translated/stock.js:973
+#: templates/js/translated/stock.js:887
msgid "Stock item has been installed in another item"
msgstr ""
-#: templates/js/translated/stock.js:980
+#: templates/js/translated/stock.js:894
msgid "Stock item has been rejected"
msgstr ""
-#: templates/js/translated/stock.js:984
+#: templates/js/translated/stock.js:896
msgid "Stock item is lost"
msgstr ""
-#: templates/js/translated/stock.js:987
+#: templates/js/translated/stock.js:898
msgid "Stock item is destroyed"
msgstr ""
-#: templates/js/translated/stock.js:991
-#: templates/js/translated/table_filters.js:148
+#: templates/js/translated/stock.js:902
+#: templates/js/translated/table_filters.js:161
msgid "Depleted"
msgstr ""
-#: templates/js/translated/stock.js:1020
+#: templates/js/translated/stock.js:956
msgid "Stocktake"
msgstr ""
-#: templates/js/translated/stock.js:1073
+#: templates/js/translated/stock.js:1029
msgid "Supplier part not specified"
msgstr ""
-#: templates/js/translated/stock.js:1223
+#: templates/js/translated/stock.js:1067
+msgid "No stock items matching query"
+msgstr ""
+
+#: templates/js/translated/stock.js:1088 templates/js/translated/stock.js:1136
+msgid "items"
+msgstr ""
+
+#: templates/js/translated/stock.js:1176
+msgid "batches"
+msgstr ""
+
+#: templates/js/translated/stock.js:1203
+msgid "locations"
+msgstr ""
+
+#: templates/js/translated/stock.js:1205
+msgid "Undefined location"
+msgstr ""
+
+#: templates/js/translated/stock.js:1364
msgid "Stock Status"
msgstr ""
-#: templates/js/translated/stock.js:1238
+#: templates/js/translated/stock.js:1379
msgid "Set Stock Status"
msgstr ""
-#: templates/js/translated/stock.js:1252
+#: templates/js/translated/stock.js:1393
msgid "Select Status Code"
msgstr ""
-#: templates/js/translated/stock.js:1253
+#: templates/js/translated/stock.js:1394
msgid "Status code must be selected"
msgstr ""
-#: templates/js/translated/stock.js:1392
+#: templates/js/translated/stock.js:1533
msgid "Invalid date"
msgstr ""
-#: templates/js/translated/stock.js:1439
+#: templates/js/translated/stock.js:1580
msgid "Location no longer exists"
msgstr ""
-#: templates/js/translated/stock.js:1458
+#: templates/js/translated/stock.js:1599
msgid "Purchase order no longer exists"
msgstr ""
-#: templates/js/translated/stock.js:1477
+#: templates/js/translated/stock.js:1618
msgid "Customer no longer exists"
msgstr ""
-#: templates/js/translated/stock.js:1495
+#: templates/js/translated/stock.js:1636
msgid "Stock item no longer exists"
msgstr ""
-#: templates/js/translated/stock.js:1518
+#: templates/js/translated/stock.js:1659
msgid "Added"
msgstr ""
-#: templates/js/translated/stock.js:1526
+#: templates/js/translated/stock.js:1667
msgid "Removed"
msgstr ""
-#: templates/js/translated/stock.js:1570
+#: templates/js/translated/stock.js:1708
msgid "Edit tracking entry"
msgstr ""
-#: templates/js/translated/stock.js:1571
+#: templates/js/translated/stock.js:1709
msgid "Delete tracking entry"
msgstr ""
-#: templates/js/translated/stock.js:1715
+#: templates/js/translated/stock.js:1833
msgid "No installed items"
msgstr ""
-#: templates/js/translated/stock.js:1738
+#: templates/js/translated/stock.js:1856
msgid "Serial"
msgstr ""
-#: templates/js/translated/stock.js:1766
+#: templates/js/translated/stock.js:1884
msgid "Uninstall Stock Item"
msgstr ""
-#: templates/js/translated/table_filters.js:43
+#: templates/js/translated/table_filters.js:56
msgid "Trackable Part"
msgstr ""
-#: templates/js/translated/table_filters.js:47
+#: templates/js/translated/table_filters.js:60
msgid "Assembled Part"
msgstr ""
-#: templates/js/translated/table_filters.js:51
+#: templates/js/translated/table_filters.js:64
msgid "Validated"
msgstr ""
-#: templates/js/translated/table_filters.js:59
+#: templates/js/translated/table_filters.js:72
msgid "Allow Variant Stock"
msgstr ""
-#: templates/js/translated/table_filters.js:79
-#: templates/js/translated/table_filters.js:143
+#: templates/js/translated/table_filters.js:92
+#: templates/js/translated/table_filters.js:156
msgid "Include sublocations"
msgstr ""
-#: templates/js/translated/table_filters.js:80
+#: templates/js/translated/table_filters.js:93
msgid "Include locations"
msgstr ""
-#: templates/js/translated/table_filters.js:90
-#: templates/js/translated/table_filters.js:91
-#: templates/js/translated/table_filters.js:314
+#: templates/js/translated/table_filters.js:103
+#: templates/js/translated/table_filters.js:104
+#: templates/js/translated/table_filters.js:327
msgid "Include subcategories"
msgstr ""
-#: templates/js/translated/table_filters.js:101
-#: templates/js/translated/table_filters.js:178
+#: templates/js/translated/table_filters.js:114
+#: templates/js/translated/table_filters.js:191
msgid "Is Serialized"
msgstr ""
-#: templates/js/translated/table_filters.js:104
-#: templates/js/translated/table_filters.js:185
+#: templates/js/translated/table_filters.js:117
+#: templates/js/translated/table_filters.js:198
msgid "Serial number GTE"
msgstr ""
-#: templates/js/translated/table_filters.js:105
-#: templates/js/translated/table_filters.js:186
+#: templates/js/translated/table_filters.js:118
+#: templates/js/translated/table_filters.js:199
msgid "Serial number greater than or equal to"
msgstr ""
-#: templates/js/translated/table_filters.js:108
-#: templates/js/translated/table_filters.js:189
+#: templates/js/translated/table_filters.js:121
+#: templates/js/translated/table_filters.js:202
msgid "Serial number LTE"
msgstr ""
-#: templates/js/translated/table_filters.js:109
-#: templates/js/translated/table_filters.js:190
+#: templates/js/translated/table_filters.js:122
+#: templates/js/translated/table_filters.js:203
msgid "Serial number less than or equal to"
msgstr ""
-#: templates/js/translated/table_filters.js:112
-#: templates/js/translated/table_filters.js:113
-#: templates/js/translated/table_filters.js:181
-#: templates/js/translated/table_filters.js:182
+#: templates/js/translated/table_filters.js:125
+#: templates/js/translated/table_filters.js:126
+#: templates/js/translated/table_filters.js:194
+#: templates/js/translated/table_filters.js:195
msgid "Serial number"
msgstr ""
-#: templates/js/translated/table_filters.js:117
-#: templates/js/translated/table_filters.js:199
+#: templates/js/translated/table_filters.js:130
+#: templates/js/translated/table_filters.js:212
msgid "Batch code"
msgstr ""
-#: templates/js/translated/table_filters.js:128
-#: templates/js/translated/table_filters.js:304
+#: templates/js/translated/table_filters.js:141
+#: templates/js/translated/table_filters.js:317
msgid "Active parts"
msgstr ""
-#: templates/js/translated/table_filters.js:129
+#: templates/js/translated/table_filters.js:142
msgid "Show stock for active parts"
msgstr ""
-#: templates/js/translated/table_filters.js:134
+#: templates/js/translated/table_filters.js:147
msgid "Part is an assembly"
msgstr ""
-#: templates/js/translated/table_filters.js:138
+#: templates/js/translated/table_filters.js:151
msgid "Is allocated"
msgstr ""
-#: templates/js/translated/table_filters.js:139
+#: templates/js/translated/table_filters.js:152
msgid "Item has been allocated"
msgstr ""
-#: templates/js/translated/table_filters.js:144
+#: templates/js/translated/table_filters.js:157
msgid "Include stock in sublocations"
msgstr ""
-#: templates/js/translated/table_filters.js:149
+#: templates/js/translated/table_filters.js:162
msgid "Show stock items which are depleted"
msgstr ""
-#: templates/js/translated/table_filters.js:154
+#: templates/js/translated/table_filters.js:167
msgid "Show items which are in stock"
msgstr ""
-#: templates/js/translated/table_filters.js:158
+#: templates/js/translated/table_filters.js:171
msgid "In Production"
msgstr ""
-#: templates/js/translated/table_filters.js:159
+#: templates/js/translated/table_filters.js:172
msgid "Show items which are in production"
msgstr ""
-#: templates/js/translated/table_filters.js:163
+#: templates/js/translated/table_filters.js:176
msgid "Include Variants"
msgstr ""
-#: templates/js/translated/table_filters.js:164
+#: templates/js/translated/table_filters.js:177
msgid "Include stock items for variant parts"
msgstr ""
-#: templates/js/translated/table_filters.js:168
+#: templates/js/translated/table_filters.js:181
msgid "Installed"
msgstr ""
-#: templates/js/translated/table_filters.js:169
+#: templates/js/translated/table_filters.js:182
msgid "Show stock items which are installed in another item"
msgstr ""
-#: templates/js/translated/table_filters.js:174
+#: templates/js/translated/table_filters.js:187
msgid "Show items which have been assigned to a customer"
msgstr ""
-#: templates/js/translated/table_filters.js:194
-#: templates/js/translated/table_filters.js:195
+#: templates/js/translated/table_filters.js:207
+#: templates/js/translated/table_filters.js:208
msgid "Stock status"
msgstr ""
-#: templates/js/translated/table_filters.js:203
+#: templates/js/translated/table_filters.js:216
msgid "Has purchase price"
msgstr ""
-#: templates/js/translated/table_filters.js:204
+#: templates/js/translated/table_filters.js:217
msgid "Show stock items which have a purchase price set"
msgstr ""
-#: templates/js/translated/table_filters.js:213
+#: templates/js/translated/table_filters.js:226
msgid "Show stock items which have expired"
msgstr ""
-#: templates/js/translated/table_filters.js:219
+#: templates/js/translated/table_filters.js:232
msgid "Show stock which is close to expiring"
msgstr ""
-#: templates/js/translated/table_filters.js:250
+#: templates/js/translated/table_filters.js:263
msgid "Build status"
msgstr ""
-#: templates/js/translated/table_filters.js:269
-#: templates/js/translated/table_filters.js:286
+#: templates/js/translated/table_filters.js:282
+#: templates/js/translated/table_filters.js:299
msgid "Order status"
msgstr ""
-#: templates/js/translated/table_filters.js:274
-#: templates/js/translated/table_filters.js:291
+#: templates/js/translated/table_filters.js:287
+#: templates/js/translated/table_filters.js:304
msgid "Outstanding"
msgstr ""
-#: templates/js/translated/table_filters.js:315
+#: templates/js/translated/table_filters.js:328
msgid "Include parts in subcategories"
msgstr ""
-#: templates/js/translated/table_filters.js:319
+#: templates/js/translated/table_filters.js:332
msgid "Has IPN"
msgstr ""
-#: templates/js/translated/table_filters.js:320
+#: templates/js/translated/table_filters.js:333
msgid "Part has internal part number"
msgstr ""
-#: templates/js/translated/table_filters.js:325
+#: templates/js/translated/table_filters.js:338
msgid "Show active parts"
msgstr ""
-#: templates/js/translated/table_filters.js:333
+#: templates/js/translated/table_filters.js:346
msgid "Stock available"
msgstr ""
-#: templates/js/translated/table_filters.js:349
+#: templates/js/translated/table_filters.js:362
msgid "Starred"
msgstr ""
-#: templates/js/translated/table_filters.js:361
+#: templates/js/translated/table_filters.js:374
msgid "Purchasable"
msgstr ""
-#: templates/js/translated/tables.js:342
+#: templates/js/translated/tables.js:357
msgid "Loading data"
msgstr ""
-#: templates/js/translated/tables.js:345
+#: templates/js/translated/tables.js:360
msgid "rows per page"
msgstr ""
-#: templates/js/translated/tables.js:348
+#: templates/js/translated/tables.js:363
msgid "Showing"
msgstr ""
-#: templates/js/translated/tables.js:348
+#: templates/js/translated/tables.js:363
msgid "to"
msgstr ""
-#: templates/js/translated/tables.js:348
+#: templates/js/translated/tables.js:363
msgid "of"
msgstr ""
-#: templates/js/translated/tables.js:348
+#: templates/js/translated/tables.js:363
msgid "rows"
msgstr ""
-#: templates/js/translated/tables.js:354
+#: templates/js/translated/tables.js:369
msgid "No matching results"
msgstr ""
-#: templates/js/translated/tables.js:357
+#: templates/js/translated/tables.js:372
msgid "Hide/Show pagination"
msgstr ""
-#: templates/js/translated/tables.js:360
+#: templates/js/translated/tables.js:375
msgid "Refresh"
msgstr ""
-#: templates/js/translated/tables.js:363
+#: templates/js/translated/tables.js:378
msgid "Toggle"
msgstr ""
-#: templates/js/translated/tables.js:366
+#: templates/js/translated/tables.js:381
msgid "Columns"
msgstr ""
-#: templates/js/translated/tables.js:369
+#: templates/js/translated/tables.js:384
msgid "All"
msgstr ""
-#: templates/navbar.html:13
+#: templates/navbar.html:19
msgid "Toggle navigation"
msgstr ""
-#: templates/navbar.html:33
+#: templates/navbar.html:39
msgid "Buy"
msgstr ""
-#: templates/navbar.html:43
+#: templates/navbar.html:51
msgid "Sell"
msgstr ""
-#: templates/navbar.html:55
-msgid "Scan Barcode"
-msgstr ""
-
-#: templates/navbar.html:77 users/models.py:39
+#: templates/navbar.html:87 users/models.py:39
msgid "Admin"
msgstr ""
-#: templates/navbar.html:79
+#: templates/navbar.html:89
msgid "Logout"
msgstr ""
-#: templates/navbar.html:81 templates/registration/login.html:89
+#: templates/navbar.html:91 templates/registration/login.html:89
msgid "Login"
msgstr ""
-#: templates/navbar.html:104
+#: templates/navbar.html:114
msgid "About InvenTree"
msgstr ""
diff --git a/InvenTree/locale/it/LC_MESSAGES/django.po b/InvenTree/locale/it/LC_MESSAGES/django.po
index 66b6042cf2..fa012e8d93 100644
--- a/InvenTree/locale/it/LC_MESSAGES/django.po
+++ b/InvenTree/locale/it/LC_MESSAGES/django.po
@@ -2,8 +2,8 @@ msgid ""
msgstr ""
"Project-Id-Version: inventree\n"
"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2021-08-07 15:14+0000\n"
-"PO-Revision-Date: 2021-08-07 15:30\n"
+"POT-Creation-Date: 2021-09-12 13:15+0000\n"
+"PO-Revision-Date: 2021-09-12 13:44\n"
"Last-Translator: \n"
"Language-Team: Italian\n"
"Language: it_IT\n"
@@ -36,7 +36,7 @@ msgstr "Inserisci la data"
#: InvenTree/forms.py:111 build/forms.py:102 build/forms.py:123
#: build/forms.py:145 build/forms.py:169 build/forms.py:185 build/forms.py:227
#: order/forms.py:30 order/forms.py:41 order/forms.py:52 order/forms.py:63
-#: order/forms.py:74 part/forms.py:108 templates/js/translated/forms.js:545
+#: order/forms.py:74 part/forms.py:108 templates/js/translated/forms.js:564
msgid "Confirm"
msgstr "Conferma"
@@ -73,7 +73,7 @@ msgstr "Selezione una categoria"
msgid "Duplicate serial: {n}"
msgstr ""
-#: InvenTree/helpers.py:408 order/models.py:315 order/models.py:425
+#: InvenTree/helpers.py:408 order/models.py:315 order/models.py:430
#: stock/views.py:1363
msgid "Invalid quantity provided"
msgstr ""
@@ -102,152 +102,181 @@ msgstr ""
msgid "Number of unique serial number ({s}) must match quantity ({q})"
msgstr ""
-#: InvenTree/models.py:61 stock/models.py:1815
+#: InvenTree/models.py:66 stock/models.py:1826
msgid "Attachment"
msgstr ""
-#: InvenTree/models.py:62
+#: InvenTree/models.py:67
msgid "Select file to attach"
msgstr ""
-#: InvenTree/models.py:64 templates/js/translated/attachment.js:52
+#: InvenTree/models.py:69 templates/js/translated/attachment.js:87
msgid "Comment"
msgstr ""
-#: InvenTree/models.py:64
+#: InvenTree/models.py:69
msgid "File comment"
msgstr ""
-#: InvenTree/models.py:70 InvenTree/models.py:71 common/models.py:969
-#: common/models.py:970 part/models.py:2035
+#: InvenTree/models.py:75 InvenTree/models.py:76 common/models.py:993
+#: common/models.py:994 part/models.py:2051
#: report/templates/report/inventree_test_report_base.html:91
-#: templates/js/translated/stock.js:1549
+#: templates/js/translated/stock.js:1690
msgid "User"
msgstr ""
-#: InvenTree/models.py:74
+#: InvenTree/models.py:79
msgid "upload date"
msgstr ""
-#: InvenTree/models.py:113
+#: InvenTree/models.py:99
+msgid "Filename must not be empty"
+msgstr ""
+
+#: InvenTree/models.py:122
+msgid "Invalid attachment directory"
+msgstr ""
+
+#: InvenTree/models.py:132
+#, python-brace-format
+msgid "Filename contains illegal character '{c}'"
+msgstr ""
+
+#: InvenTree/models.py:135
+msgid "Filename missing extension"
+msgstr ""
+
+#: InvenTree/models.py:142
+msgid "Attachment with this filename already exists"
+msgstr ""
+
+#: InvenTree/models.py:149
+msgid "Error renaming file"
+msgstr ""
+
+#: InvenTree/models.py:184
msgid "Invalid choice"
msgstr ""
-#: InvenTree/models.py:129 InvenTree/models.py:130 company/models.py:412
-#: label/models.py:112 part/models.py:656 part/models.py:2196
-#: part/templates/part/part_base.html:233 report/models.py:181
+#: InvenTree/models.py:200 InvenTree/models.py:201 company/models.py:414
+#: label/models.py:112 part/models.py:658 part/models.py:2212
+#: part/templates/part/part_base.html:241 report/models.py:181
#: templates/InvenTree/search.html:137 templates/InvenTree/search.html:289
-#: templates/js/translated/company.js:583 templates/js/translated/part.js:338
-#: templates/js/translated/part.js:471 templates/js/translated/part.js:963
-#: templates/js/translated/stock.js:1342
+#: templates/js/translated/company.js:636 templates/js/translated/part.js:466
+#: templates/js/translated/part.js:603 templates/js/translated/part.js:1130
+#: templates/js/translated/stock.js:1483
msgid "Name"
msgstr ""
-#: InvenTree/models.py:136 build/models.py:187
-#: build/templates/build/detail.html:24 company/models.py:351
-#: company/models.py:519 company/templates/company/manufacturer_part.html:76
+#: InvenTree/models.py:207 build/models.py:187
+#: build/templates/build/detail.html:24 company/models.py:353
+#: company/models.py:569 company/templates/company/manufacturer_part.html:76
#: company/templates/company/supplier_part.html:75 label/models.py:119
-#: order/models.py:158 order/templates/order/purchase_order_detail.html:312
-#: part/models.py:679 part/templates/part/part_base.html:238
+#: order/models.py:158 part/models.py:681
+#: part/templates/part/part_base.html:246
#: part/templates/part/set_category.html:14 report/models.py:194
#: report/models.py:551 report/models.py:590
#: report/templates/report/inventree_build_order_base.html:118
#: templates/InvenTree/search.html:144 templates/InvenTree/search.html:224
#: templates/InvenTree/search.html:296
#: templates/InvenTree/settings/header.html:9
-#: templates/js/translated/bom.js:210 templates/js/translated/build.js:868
-#: templates/js/translated/build.js:1162 templates/js/translated/company.js:299
-#: templates/js/translated/company.js:497
-#: templates/js/translated/company.js:779 templates/js/translated/order.js:267
-#: templates/js/translated/order.js:369 templates/js/translated/part.js:397
-#: templates/js/translated/part.js:581 templates/js/translated/part.js:758
-#: templates/js/translated/part.js:975 templates/js/translated/part.js:1043
-#: templates/js/translated/stock.js:926 templates/js/translated/stock.js:1354
-#: templates/js/translated/stock.js:1399
+#: templates/js/translated/bom.js:230 templates/js/translated/build.js:891
+#: templates/js/translated/build.js:1179 templates/js/translated/company.js:344
+#: templates/js/translated/company.js:546
+#: templates/js/translated/company.js:834 templates/js/translated/order.js:341
+#: templates/js/translated/order.js:486 templates/js/translated/order.js:710
+#: templates/js/translated/part.js:525 templates/js/translated/part.js:713
+#: templates/js/translated/part.js:902 templates/js/translated/part.js:1142
+#: templates/js/translated/part.js:1210 templates/js/translated/stock.js:840
+#: templates/js/translated/stock.js:1495 templates/js/translated/stock.js:1540
msgid "Description"
msgstr ""
-#: InvenTree/models.py:137
+#: InvenTree/models.py:208
msgid "Description (optional)"
msgstr ""
-#: InvenTree/models.py:145
+#: InvenTree/models.py:216
msgid "parent"
msgstr ""
-#: InvenTree/serializers.py:52 part/models.py:2438
+#: InvenTree/serializers.py:55 part/models.py:2454
msgid "Must be a valid number"
msgstr ""
-#: InvenTree/settings.py:518
+#: InvenTree/serializers.py:244
+msgid "Filename"
+msgstr ""
+
+#: InvenTree/settings.py:523
msgid "German"
msgstr "Tedesco"
-#: InvenTree/settings.py:519
+#: InvenTree/settings.py:524
msgid "Greek"
msgstr "Greco"
-#: InvenTree/settings.py:520
+#: InvenTree/settings.py:525
msgid "English"
msgstr "Inglese"
-#: InvenTree/settings.py:521
+#: InvenTree/settings.py:526
msgid "Spanish"
msgstr "Spagnolo"
-#: InvenTree/settings.py:522
+#: InvenTree/settings.py:527
msgid "French"
msgstr "Francese"
-#: InvenTree/settings.py:523
+#: InvenTree/settings.py:528
msgid "Hebrew"
msgstr "Ebraico"
-#: InvenTree/settings.py:524
+#: InvenTree/settings.py:529
msgid "Italian"
msgstr "Italiano"
-#: InvenTree/settings.py:525
+#: InvenTree/settings.py:530
msgid "Japanese"
msgstr "Giapponese"
-#: InvenTree/settings.py:526
+#: InvenTree/settings.py:531
msgid "Korean"
msgstr "Coreano"
-#: InvenTree/settings.py:527
+#: InvenTree/settings.py:532
msgid "Dutch"
msgstr "Olandese"
-#: InvenTree/settings.py:528
+#: InvenTree/settings.py:533
msgid "Norwegian"
msgstr "Norvegese"
-#: InvenTree/settings.py:529
+#: InvenTree/settings.py:534
msgid "Polish"
msgstr "Polacco"
-#: InvenTree/settings.py:530
+#: InvenTree/settings.py:535
msgid "Russian"
msgstr "Russo"
-#: InvenTree/settings.py:531
+#: InvenTree/settings.py:536
msgid "Swedish"
msgstr "Svedese"
-#: InvenTree/settings.py:532
+#: InvenTree/settings.py:537
msgid "Thai"
msgstr "Thailandese"
-#: InvenTree/settings.py:533
+#: InvenTree/settings.py:538
msgid "Turkish"
msgstr "Turco"
-#: InvenTree/settings.py:534
+#: InvenTree/settings.py:539
msgid "Vietnamese"
msgstr "Vietnamita"
-#: InvenTree/settings.py:535
+#: InvenTree/settings.py:540
msgid "Chinese"
msgstr "Cinese"
@@ -372,7 +401,7 @@ msgstr ""
msgid "Split child item"
msgstr ""
-#: InvenTree/status_codes.py:294 templates/js/translated/table_filters.js:173
+#: InvenTree/status_codes.py:294 templates/js/translated/table_filters.js:186
msgid "Sent to customer"
msgstr ""
@@ -432,27 +461,27 @@ msgstr ""
msgid "Overage must be an integer value or a percentage"
msgstr ""
-#: InvenTree/views.py:612
+#: InvenTree/views.py:610
msgid "Delete Item"
msgstr ""
-#: InvenTree/views.py:661
+#: InvenTree/views.py:659
msgid "Check box to confirm item deletion"
msgstr ""
-#: InvenTree/views.py:676 templates/InvenTree/settings/user.html:14
+#: InvenTree/views.py:674 templates/InvenTree/settings/user.html:14
msgid "Edit User Information"
msgstr ""
-#: InvenTree/views.py:687 templates/InvenTree/settings/user.html:18
+#: InvenTree/views.py:685 templates/InvenTree/settings/user.html:18
msgid "Set Password"
msgstr ""
-#: InvenTree/views.py:706
+#: InvenTree/views.py:704
msgid "Password fields must match"
msgstr ""
-#: InvenTree/views.py:907 templates/navbar.html:95
+#: InvenTree/views.py:910 templates/navbar.html:105
msgid "System Information"
msgstr ""
@@ -509,8 +538,8 @@ msgstr ""
#: order/templates/order/order_base.html:124
#: order/templates/order/sales_order_base.html:119
#: report/templates/report/inventree_build_order_base.html:126
-#: templates/js/translated/build.js:945 templates/js/translated/order.js:284
-#: templates/js/translated/order.js:387
+#: templates/js/translated/build.js:962 templates/js/translated/order.js:358
+#: templates/js/translated/order.js:728
msgid "Target Date"
msgstr ""
@@ -522,19 +551,18 @@ msgstr ""
#: build/templates/build/allocation_card.html:23
#: build/templates/build/auto_allocate.html:17
#: build/templates/build/build_base.html:133
-#: build/templates/build/detail.html:34 common/models.py:1001
+#: build/templates/build/detail.html:34 common/models.py:1025
#: company/forms.py:42 company/templates/company/supplier_part.html:226
-#: order/forms.py:120 order/forms.py:142 order/forms.py:159 order/models.py:706
-#: order/models.py:952 order/templates/order/order_wizard/match_parts.html:30
+#: order/forms.py:120 order/forms.py:142 order/forms.py:159 order/models.py:712
+#: order/models.py:964 order/templates/order/order_wizard/match_parts.html:30
#: order/templates/order/order_wizard/select_parts.html:34
-#: order/templates/order/purchase_order_detail.html:348
-#: order/templates/order/sales_order_detail.html:200
-#: order/templates/order/sales_order_detail.html:207
-#: order/templates/order/sales_order_detail.html:292
-#: order/templates/order/sales_order_detail.html:364 part/forms.py:249
-#: part/forms.py:265 part/forms.py:281 part/models.py:2340
+#: order/templates/order/sales_order_detail.html:201
+#: order/templates/order/sales_order_detail.html:208
+#: order/templates/order/sales_order_detail.html:293
+#: order/templates/order/sales_order_detail.html:365 part/forms.py:249
+#: part/forms.py:265 part/forms.py:281 part/models.py:2356
#: part/templates/part/bom_upload/match_parts.html:31
-#: part/templates/part/detail.html:940 part/templates/part/detail.html:1026
+#: part/templates/part/detail.html:973 part/templates/part/detail.html:1059
#: part/templates/part/part_pricing.html:16
#: report/templates/report/inventree_build_order_base.html:114
#: report/templates/report/inventree_po_report.html:91
@@ -542,13 +570,14 @@ msgstr ""
#: report/templates/report/inventree_test_report_base.html:77
#: stock/forms.py:140 stock/templates/stock/item_base.html:269
#: stock/templates/stock/stock_adjust.html:18
-#: templates/js/translated/barcode.js:364 templates/js/translated/bom.js:225
-#: templates/js/translated/build.js:271 templates/js/translated/build.js:606
-#: templates/js/translated/build.js:1172
-#: templates/js/translated/model_renderers.js:56
-#: templates/js/translated/order.js:482 templates/js/translated/part.js:1148
-#: templates/js/translated/part.js:1270 templates/js/translated/part.js:1326
-#: templates/js/translated/stock.js:1534 templates/js/translated/stock.js:1732
+#: templates/js/translated/barcode.js:386 templates/js/translated/bom.js:245
+#: templates/js/translated/build.js:298 templates/js/translated/build.js:629
+#: templates/js/translated/build.js:1189
+#: templates/js/translated/model_renderers.js:59
+#: templates/js/translated/order.js:522 templates/js/translated/order.js:824
+#: templates/js/translated/part.js:1317 templates/js/translated/part.js:1440
+#: templates/js/translated/part.js:1518 templates/js/translated/stock.js:1675
+#: templates/js/translated/stock.js:1850
msgid "Quantity"
msgstr "Quantità"
@@ -589,13 +618,15 @@ msgid "Mark build as complete"
msgstr ""
#: build/forms.py:210 build/templates/build/auto_allocate.html:18
-#: stock/forms.py:280 stock/templates/stock/item_base.html:299
+#: order/serializers.py:216 order/serializers.py:275 stock/forms.py:280
+#: stock/templates/stock/item_base.html:299
#: stock/templates/stock/stock_adjust.html:17
-#: templates/InvenTree/search.html:260 templates/js/translated/barcode.js:363
-#: templates/js/translated/barcode.js:531 templates/js/translated/build.js:256
-#: templates/js/translated/build.js:620 templates/js/translated/order.js:467
-#: templates/js/translated/stock.js:134 templates/js/translated/stock.js:260
-#: templates/js/translated/stock.js:1012 templates/js/translated/stock.js:1426
+#: templates/InvenTree/search.html:260 templates/js/translated/barcode.js:385
+#: templates/js/translated/barcode.js:555 templates/js/translated/build.js:283
+#: templates/js/translated/build.js:643 templates/js/translated/order.js:809
+#: templates/js/translated/part.js:174 templates/js/translated/stock.js:203
+#: templates/js/translated/stock.js:329 templates/js/translated/stock.js:942
+#: templates/js/translated/stock.js:1567
msgid "Location"
msgstr ""
@@ -604,13 +635,13 @@ msgid "Location of completed parts"
msgstr ""
#: build/forms.py:215 build/templates/build/build_base.html:138
-#: build/templates/build/detail.html:62 order/models.py:549
-#: order/templates/order/receive_parts.html:24
+#: build/templates/build/detail.html:62 order/models.py:555
+#: order/serializers.py:230 order/templates/order/receive_parts.html:24
#: stock/templates/stock/item_base.html:422 templates/InvenTree/search.html:252
-#: templates/js/translated/barcode.js:119 templates/js/translated/build.js:902
-#: templates/js/translated/order.js:271 templates/js/translated/order.js:374
-#: templates/js/translated/stock.js:999 templates/js/translated/stock.js:1503
-#: templates/js/translated/stock.js:1748
+#: templates/js/translated/barcode.js:141 templates/js/translated/build.js:925
+#: templates/js/translated/order.js:345 templates/js/translated/order.js:715
+#: templates/js/translated/stock.js:917 templates/js/translated/stock.js:1644
+#: templates/js/translated/stock.js:1866
msgid "Status"
msgstr ""
@@ -649,7 +680,7 @@ msgstr ""
#: build/models.py:117 build/templates/build/build_base.html:9
#: build/templates/build/build_base.html:73
#: report/templates/report/inventree_build_order_base.html:106
-#: templates/js/translated/build.js:233
+#: templates/js/translated/build.js:260
msgid "Build Order"
msgstr ""
@@ -657,8 +688,8 @@ msgstr ""
#: build/templates/build/index.html:15
#: order/templates/order/sales_order_detail.html:34
#: order/templates/order/so_navbar.html:19
-#: order/templates/order/so_navbar.html:22 part/templates/part/navbar.html:42
-#: part/templates/part/navbar.html:45 templates/InvenTree/index.html:229
+#: order/templates/order/so_navbar.html:22 part/templates/part/navbar.html:50
+#: part/templates/part/navbar.html:53 templates/InvenTree/index.html:229
#: templates/InvenTree/search.html:185
#: templates/InvenTree/settings/navbar.html:101
#: templates/InvenTree/settings/navbar.html:103 users/models.py:44
@@ -669,14 +700,13 @@ msgstr ""
msgid "Build Order Reference"
msgstr ""
-#: build/models.py:179 order/models.py:246 order/models.py:533
-#: order/models.py:713 order/templates/order/purchase_order_detail.html:343
-#: order/templates/order/sales_order_detail.html:359 part/models.py:2349
-#: part/templates/part/bom_upload/match_parts.html:30
+#: build/models.py:179 order/models.py:246 order/models.py:539
+#: order/models.py:719 order/templates/order/sales_order_detail.html:360
+#: part/models.py:2365 part/templates/part/bom_upload/match_parts.html:30
#: report/templates/report/inventree_po_report.html:92
#: report/templates/report/inventree_so_report.html:92
-#: templates/js/translated/bom.js:217 templates/js/translated/build.js:695
-#: templates/js/translated/build.js:1166
+#: templates/js/translated/bom.js:237 templates/js/translated/build.js:718
+#: templates/js/translated/build.js:1183 templates/js/translated/order.js:517
msgid "Reference"
msgstr ""
@@ -695,15 +725,14 @@ msgstr ""
#: build/models.py:205 build/templates/build/auto_allocate.html:16
#: build/templates/build/build_base.html:128
-#: build/templates/build/detail.html:29 company/models.py:654
-#: order/models.py:766 order/models.py:825
+#: build/templates/build/detail.html:29 company/models.py:704
+#: order/models.py:772 order/models.py:837
#: order/templates/order/order_wizard/select_parts.html:32
-#: order/templates/order/purchase_order_detail.html:297
#: order/templates/order/receive_parts.html:19
-#: order/templates/order/sales_order_detail.html:344 part/models.py:295
-#: part/models.py:1980 part/models.py:1996 part/models.py:2015
-#: part/models.py:2033 part/models.py:2112 part/models.py:2234
-#: part/models.py:2324 part/templates/part/detail.html:199
+#: order/templates/order/sales_order_detail.html:345 part/models.py:297
+#: part/models.py:1996 part/models.py:2012 part/models.py:2031
+#: part/models.py:2049 part/models.py:2128 part/models.py:2250
+#: part/models.py:2340 part/templates/part/detail.html:199
#: part/templates/part/part_app_base.html:8
#: part/templates/part/part_pricing.html:12
#: part/templates/part/set_category.html:13
@@ -711,12 +740,13 @@ msgstr ""
#: report/templates/report/inventree_po_report.html:90
#: report/templates/report/inventree_so_report.html:90
#: templates/InvenTree/search.html:112 templates/InvenTree/search.html:210
-#: templates/js/translated/barcode.js:362 templates/js/translated/bom.js:183
-#: templates/js/translated/build.js:586 templates/js/translated/build.js:873
-#: templates/js/translated/build.js:1139 templates/js/translated/company.js:438
-#: templates/js/translated/company.js:688 templates/js/translated/part.js:562
-#: templates/js/translated/part.js:725 templates/js/translated/stock.js:132
-#: templates/js/translated/stock.js:895 templates/js/translated/stock.js:1720
+#: templates/js/translated/barcode.js:384 templates/js/translated/bom.js:203
+#: templates/js/translated/build.js:609 templates/js/translated/build.js:896
+#: templates/js/translated/build.js:1156 templates/js/translated/company.js:487
+#: templates/js/translated/company.js:743 templates/js/translated/order.js:471
+#: templates/js/translated/part.js:694 templates/js/translated/part.js:864
+#: templates/js/translated/stock.js:201 templates/js/translated/stock.js:797
+#: templates/js/translated/stock.js:1838
msgid "Part"
msgstr ""
@@ -764,7 +794,7 @@ msgstr ""
msgid "Number of stock items which have been completed"
msgstr ""
-#: build/models.py:257 part/templates/part/part_base.html:191
+#: build/models.py:257 part/templates/part/part_base.html:198
msgid "Build Status"
msgstr ""
@@ -772,7 +802,7 @@ msgstr ""
msgid "Build status code"
msgstr ""
-#: build/models.py:265 stock/models.py:507
+#: build/models.py:265 stock/models.py:513
msgid "Batch Code"
msgstr ""
@@ -780,16 +810,16 @@ msgstr ""
msgid "Batch code for this build output"
msgstr ""
-#: build/models.py:272 order/models.py:162 part/models.py:851
-#: part/templates/part/part_base.html:264 templates/js/translated/order.js:382
+#: build/models.py:272 order/models.py:162 part/models.py:853
+#: part/templates/part/part_base.html:272 templates/js/translated/order.js:723
msgid "Creation Date"
msgstr ""
-#: build/models.py:276 order/models.py:555
+#: build/models.py:276 order/models.py:561
msgid "Target completion date"
msgstr ""
-#: build/models.py:280 order/models.py:288 templates/js/translated/build.js:950
+#: build/models.py:280 order/models.py:288 templates/js/translated/build.js:967
msgid "Completion Date"
msgstr ""
@@ -797,7 +827,7 @@ msgstr ""
msgid "completed by"
msgstr ""
-#: build/models.py:294 templates/js/translated/build.js:915
+#: build/models.py:294 templates/js/translated/build.js:938
msgid "Issued by"
msgstr ""
@@ -808,9 +838,9 @@ msgstr ""
#: build/models.py:303 build/templates/build/build_base.html:184
#: build/templates/build/detail.html:108 order/models.py:176
#: order/templates/order/order_base.html:138
-#: order/templates/order/sales_order_base.html:140 part/models.py:855
+#: order/templates/order/sales_order_base.html:140 part/models.py:857
#: report/templates/report/inventree_build_order_base.html:159
-#: templates/js/translated/build.js:930
+#: templates/js/translated/build.js:950
msgid "Responsible"
msgstr ""
@@ -821,34 +851,33 @@ msgstr ""
#: build/models.py:309 build/templates/build/detail.html:94
#: company/templates/company/manufacturer_part.html:83
#: company/templates/company/supplier_part.html:82
-#: part/templates/part/part_base.html:258 stock/models.py:501
+#: part/templates/part/part_base.html:266 stock/models.py:507
#: stock/templates/stock/item_base.html:359
msgid "External Link"
msgstr ""
-#: build/models.py:310 part/models.py:713 stock/models.py:503
+#: build/models.py:310 part/models.py:715 stock/models.py:509
msgid "Link to external URL"
msgstr ""
#: build/models.py:314 build/templates/build/navbar.html:52
-#: company/models.py:139 company/models.py:526
-#: company/templates/company/navbar.html:63
-#: company/templates/company/navbar.html:66 order/models.py:180
-#: order/models.py:715 order/templates/order/po_navbar.html:38
+#: company/models.py:141 company/models.py:576
+#: company/templates/company/navbar.html:69
+#: company/templates/company/navbar.html:72 order/models.py:180
+#: order/models.py:721 order/templates/order/po_navbar.html:38
#: order/templates/order/po_navbar.html:41
-#: order/templates/order/purchase_order_detail.html:419
-#: order/templates/order/sales_order_detail.html:439
+#: order/templates/order/sales_order_detail.html:440
#: order/templates/order/so_navbar.html:33
-#: order/templates/order/so_navbar.html:36 part/models.py:840
-#: part/templates/part/detail.html:105 part/templates/part/navbar.html:108
-#: part/templates/part/navbar.html:111
+#: order/templates/order/so_navbar.html:36 part/models.py:842
+#: part/templates/part/detail.html:105 part/templates/part/navbar.html:120
+#: part/templates/part/navbar.html:123
#: report/templates/report/inventree_build_order_base.html:173
-#: stock/forms.py:138 stock/forms.py:250 stock/forms.py:282 stock/models.py:573
-#: stock/models.py:1715 stock/models.py:1821
-#: stock/templates/stock/navbar.html:57 templates/js/translated/barcode.js:37
-#: templates/js/translated/bom.js:369 templates/js/translated/company.js:784
-#: templates/js/translated/stock.js:268 templates/js/translated/stock.js:509
-#: templates/js/translated/stock.js:1090
+#: stock/forms.py:138 stock/forms.py:250 stock/forms.py:282 stock/models.py:579
+#: stock/models.py:1726 stock/models.py:1832
+#: stock/templates/stock/navbar.html:57 templates/js/translated/barcode.js:59
+#: templates/js/translated/bom.js:385 templates/js/translated/company.js:839
+#: templates/js/translated/order.js:604 templates/js/translated/stock.js:338
+#: templates/js/translated/stock.js:580 templates/js/translated/stock.js:1061
msgid "Notes"
msgstr ""
@@ -881,11 +910,11 @@ msgstr ""
msgid "Allocated quantity ({n}) must not exceed available quantity ({q})"
msgstr ""
-#: build/models.py:1244 order/models.py:926
+#: build/models.py:1244 order/models.py:938
msgid "StockItem is over-allocated"
msgstr ""
-#: build/models.py:1248 order/models.py:929
+#: build/models.py:1248 order/models.py:941
msgid "Allocation quantity must be greater than zero"
msgstr ""
@@ -899,8 +928,8 @@ msgid "Selected stock item not found in BOM for part '{p}'"
msgstr ""
#: build/models.py:1372 stock/templates/stock/item_base.html:331
-#: templates/InvenTree/search.html:183 templates/js/translated/build.js:846
-#: templates/navbar.html:29
+#: templates/InvenTree/search.html:183 templates/js/translated/build.js:869
+#: templates/navbar.html:35
msgid "Build"
msgstr ""
@@ -912,9 +941,9 @@ msgstr ""
#: stock/templates/stock/item_base.html:31
#: stock/templates/stock/item_base.html:353
#: stock/templates/stock/stock_adjust.html:16
-#: templates/js/translated/build.js:244 templates/js/translated/build.js:249
-#: templates/js/translated/build.js:993 templates/js/translated/order.js:455
-#: templates/js/translated/order.js:460 templates/js/translated/stock.js:1485
+#: templates/js/translated/build.js:271 templates/js/translated/build.js:276
+#: templates/js/translated/build.js:1012 templates/js/translated/order.js:797
+#: templates/js/translated/order.js:802 templates/js/translated/stock.js:1626
msgid "Stock Item"
msgstr ""
@@ -936,12 +965,12 @@ msgstr ""
#: build/templates/build/allocation_card.html:21
#: build/templates/build/complete_output.html:46
-#: order/templates/order/sales_order_detail.html:205
-#: order/templates/order/sales_order_detail.html:290
+#: order/templates/order/sales_order_detail.html:206
+#: order/templates/order/sales_order_detail.html:291
#: report/templates/report/inventree_test_report_base.html:75
-#: stock/models.py:495 stock/templates/stock/item_base.html:251
-#: templates/js/translated/build.js:604
-#: templates/js/translated/model_renderers.js:54
+#: stock/models.py:501 stock/templates/stock/item_base.html:251
+#: templates/js/translated/build.js:627
+#: templates/js/translated/model_renderers.js:57
msgid "Serial Number"
msgstr ""
@@ -993,7 +1022,7 @@ msgstr ""
#: company/templates/company/supplier_part.html:30
#: order/templates/order/order_base.html:26
#: order/templates/order/sales_order_base.html:37
-#: part/templates/part/category.html:27 part/templates/part/part_base.html:25
+#: part/templates/part/category.html:27 part/templates/part/part_base.html:30
#: stock/templates/stock/item_base.html:62
#: stock/templates/stock/location.html:31
msgid "Admin view"
@@ -1005,9 +1034,9 @@ msgstr ""
#: order/templates/order/order_base.html:86
#: order/templates/order/sales_order_base.html:43
#: order/templates/order/sales_order_base.html:88
-#: templates/js/translated/table_filters.js:259
-#: templates/js/translated/table_filters.js:278
-#: templates/js/translated/table_filters.js:295
+#: templates/js/translated/table_filters.js:272
+#: templates/js/translated/table_filters.js:291
+#: templates/js/translated/table_filters.js:308
msgid "Overdue"
msgstr ""
@@ -1057,14 +1086,14 @@ msgid "Progress"
msgstr ""
#: build/templates/build/build_base.html:170
-#: build/templates/build/detail.html:87 order/models.py:823
+#: build/templates/build/detail.html:87 order/models.py:835
#: order/templates/order/sales_order_base.html:9
#: order/templates/order/sales_order_base.html:35
#: order/templates/order/sales_order_ship.html:25
#: report/templates/report/inventree_build_order_base.html:136
#: report/templates/report/inventree_so_report.html:77
#: stock/templates/stock/item_base.html:293
-#: templates/js/translated/order.js:329
+#: templates/js/translated/order.js:670
msgid "Sales Order"
msgstr ""
@@ -1148,7 +1177,7 @@ msgstr ""
#: build/templates/build/create_build_item.html:11
#, python-format
-msgid "The allocated stock will be installed into the following build output:
%(output)s"
+msgid "The allocated stock will be installed into the following build output:
%(output)s"
msgstr ""
#: build/templates/build/create_build_item.html:17
@@ -1172,9 +1201,9 @@ msgstr ""
msgid "Stock can be taken from any available location."
msgstr ""
-#: build/templates/build/detail.html:49 order/forms.py:88 order/models.py:782
-#: order/templates/order/purchase_order_detail.html:408
+#: build/templates/build/detail.html:49 order/forms.py:88 order/models.py:794
#: order/templates/order/receive_parts.html:25 stock/forms.py:134
+#: templates/js/translated/order.js:593
msgid "Destination"
msgstr ""
@@ -1184,16 +1213,16 @@ msgstr ""
#: build/templates/build/detail.html:73
#: stock/templates/stock/item_base.html:317
-#: templates/js/translated/stock.js:1007 templates/js/translated/stock.js:1755
-#: templates/js/translated/table_filters.js:116
-#: templates/js/translated/table_filters.js:198
+#: templates/js/translated/stock.js:931 templates/js/translated/stock.js:1873
+#: templates/js/translated/table_filters.js:129
+#: templates/js/translated/table_filters.js:211
msgid "Batch"
msgstr ""
#: build/templates/build/detail.html:119
#: order/templates/order/order_base.html:111
#: order/templates/order/sales_order_base.html:113
-#: templates/js/translated/build.js:910
+#: templates/js/translated/build.js:933
msgid "Created"
msgstr ""
@@ -1201,7 +1230,7 @@ msgstr ""
msgid "No target date set"
msgstr ""
-#: build/templates/build/detail.html:135 templates/js/translated/build.js:888
+#: build/templates/build/detail.html:135 templates/js/translated/build.js:911
msgid "Completed"
msgstr ""
@@ -1225,7 +1254,7 @@ msgstr ""
msgid "Auto Allocate"
msgstr ""
-#: build/templates/build/detail.html:175 templates/js/translated/build.js:778
+#: build/templates/build/detail.html:175 templates/js/translated/build.js:801
msgid "Unallocate stock"
msgstr ""
@@ -1238,8 +1267,8 @@ msgid "Order required parts"
msgstr ""
#: build/templates/build/detail.html:180
-#: company/templates/company/detail.html:33
-#: company/templates/company/detail.html:75 order/views.py:679
+#: company/templates/company/detail.html:32
+#: company/templates/company/detail.html:72 order/views.py:679
#: part/templates/part/category.html:140
msgid "Order Parts"
msgstr ""
@@ -1288,8 +1317,8 @@ msgstr ""
#: build/templates/build/navbar.html:45 order/templates/order/po_navbar.html:35
#: order/templates/order/sales_order_detail.html:43
#: order/templates/order/so_navbar.html:29 part/templates/part/detail.html:173
-#: part/templates/part/navbar.html:102 part/templates/part/navbar.html:105
-#: stock/templates/stock/item.html:87 stock/templates/stock/navbar.html:47
+#: part/templates/part/navbar.html:114 part/templates/part/navbar.html:117
+#: stock/templates/stock/item.html:88 stock/templates/stock/navbar.html:47
#: stock/templates/stock/navbar.html:50
msgid "Attachments"
msgstr ""
@@ -1298,48 +1327,48 @@ msgstr ""
msgid "Build Notes"
msgstr ""
-#: build/templates/build/detail.html:261 build/templates/build/detail.html:397
-#: company/templates/company/detail.html:173
-#: company/templates/company/detail.html:200
+#: build/templates/build/detail.html:261 build/templates/build/detail.html:398
+#: company/templates/company/detail.html:169
+#: company/templates/company/detail.html:196
#: order/templates/order/purchase_order_detail.html:62
#: order/templates/order/purchase_order_detail.html:95
#: order/templates/order/sales_order_detail.html:58
#: order/templates/order/sales_order_detail.html:85
-#: part/templates/part/detail.html:109 stock/templates/stock/item.html:102
-#: stock/templates/stock/item.html:187
+#: part/templates/part/detail.html:109 stock/templates/stock/item.html:103
+#: stock/templates/stock/item.html:188
msgid "Edit Notes"
msgstr ""
#: build/templates/build/detail.html:357
#: order/templates/order/po_attachments.html:79
-#: order/templates/order/purchase_order_detail.html:156
-#: order/templates/order/sales_order_detail.html:145
-#: part/templates/part/detail.html:802 stock/templates/stock/item.html:251
+#: order/templates/order/purchase_order_detail.html:157
+#: order/templates/order/sales_order_detail.html:146
+#: part/templates/part/detail.html:920 stock/templates/stock/item.html:253
#: templates/attachment_table.html:6
msgid "Add Attachment"
msgstr ""
-#: build/templates/build/detail.html:375
+#: build/templates/build/detail.html:376
#: order/templates/order/po_attachments.html:51
-#: order/templates/order/purchase_order_detail.html:128
-#: order/templates/order/sales_order_detail.html:118
-#: part/templates/part/detail.html:756 stock/templates/stock/item.html:219
+#: order/templates/order/purchase_order_detail.html:129
+#: order/templates/order/sales_order_detail.html:119
+#: part/templates/part/detail.html:874 stock/templates/stock/item.html:221
msgid "Edit Attachment"
msgstr ""
-#: build/templates/build/detail.html:382
+#: build/templates/build/detail.html:383
#: order/templates/order/po_attachments.html:58
-#: order/templates/order/purchase_order_detail.html:135
-#: order/templates/order/sales_order_detail.html:124
-#: part/templates/part/detail.html:765 stock/templates/stock/item.html:228
+#: order/templates/order/purchase_order_detail.html:136
+#: order/templates/order/sales_order_detail.html:125
+#: part/templates/part/detail.html:883 stock/templates/stock/item.html:230
msgid "Confirm Delete Operation"
msgstr ""
-#: build/templates/build/detail.html:383
+#: build/templates/build/detail.html:384
#: order/templates/order/po_attachments.html:59
-#: order/templates/order/purchase_order_detail.html:136
-#: order/templates/order/sales_order_detail.html:125
-#: part/templates/part/detail.html:766 stock/templates/stock/item.html:229
+#: order/templates/order/purchase_order_detail.html:137
+#: order/templates/order/sales_order_detail.html:126
+#: part/templates/part/detail.html:884 stock/templates/stock/item.html:231
msgid "Delete Attachment"
msgstr ""
@@ -1372,7 +1401,7 @@ msgid "Build Order Details"
msgstr ""
#: build/templates/build/navbar.html:15 order/templates/order/po_navbar.html:15
-#: templates/js/translated/stock.js:1414
+#: templates/js/translated/stock.js:1555
msgid "Details"
msgstr ""
@@ -1501,9 +1530,9 @@ msgstr ""
msgid "Stock item is over-allocated"
msgstr ""
-#: build/views.py:705 templates/js/translated/bom.js:250
-#: templates/js/translated/build.js:705 templates/js/translated/build.js:1000
-#: templates/js/translated/build.js:1179
+#: build/views.py:705 templates/js/translated/bom.js:269
+#: templates/js/translated/build.js:728 templates/js/translated/build.js:1019
+#: templates/js/translated/build.js:1196
msgid "Available"
msgstr ""
@@ -1539,7 +1568,7 @@ msgstr ""
msgid "Error reading file (data could be corrupted)"
msgstr ""
-#: common/forms.py:34 templates/js/translated/attachment.js:42
+#: common/forms.py:34 templates/js/translated/attachment.js:54
msgid "File"
msgstr ""
@@ -1556,546 +1585,594 @@ msgstr ""
msgid "Select {name} file to upload"
msgstr ""
-#: common/models.py:322 common/models.py:815 common/models.py:962
+#: common/models.py:308 common/models.py:839 common/models.py:986
msgid "Settings key (must be unique - case insensitive"
msgstr ""
-#: common/models.py:324
+#: common/models.py:310
msgid "Settings value"
msgstr ""
-#: common/models.py:359
+#: common/models.py:345
msgid "Must be an integer value"
msgstr ""
-#: common/models.py:382
+#: common/models.py:368
msgid "Value must be a boolean value"
msgstr ""
-#: common/models.py:393
+#: common/models.py:379
msgid "Value must be an integer value"
msgstr ""
-#: common/models.py:416
+#: common/models.py:402
msgid "Key string must be unique"
msgstr ""
-#: common/models.py:523
+#: common/models.py:509
msgid "InvenTree Instance Name"
msgstr ""
-#: common/models.py:525
+#: common/models.py:511
msgid "String descriptor for the server instance"
msgstr ""
-#: common/models.py:529
+#: common/models.py:515
msgid "Use instance name"
msgstr ""
-#: common/models.py:530
+#: common/models.py:516
msgid "Use the instance name in the title-bar"
msgstr ""
-#: common/models.py:536 company/models.py:97 company/models.py:98
+#: common/models.py:522 company/models.py:99 company/models.py:100
msgid "Company name"
msgstr ""
-#: common/models.py:537
+#: common/models.py:523
msgid "Internal company name"
msgstr ""
-#: common/models.py:542
+#: common/models.py:528
msgid "Base URL"
msgstr ""
-#: common/models.py:543
+#: common/models.py:529
msgid "Base URL for server instance"
msgstr ""
-#: common/models.py:549
+#: common/models.py:535
msgid "Default Currency"
msgstr ""
-#: common/models.py:550
+#: common/models.py:536
msgid "Default currency"
msgstr ""
-#: common/models.py:556
+#: common/models.py:542
msgid "Download from URL"
msgstr ""
-#: common/models.py:557
+#: common/models.py:543
msgid "Allow download of remote images and files from external URL"
msgstr ""
-#: common/models.py:563
+#: common/models.py:549
msgid "Barcode Support"
msgstr ""
-#: common/models.py:564
+#: common/models.py:550
msgid "Enable barcode scanner support"
msgstr ""
-#: common/models.py:570
+#: common/models.py:556
msgid "IPN Regex"
msgstr ""
-#: common/models.py:571
+#: common/models.py:557
msgid "Regular expression pattern for matching Part IPN"
msgstr ""
-#: common/models.py:575
+#: common/models.py:561
msgid "Allow Duplicate IPN"
msgstr ""
-#: common/models.py:576
+#: common/models.py:562
msgid "Allow multiple parts to share the same IPN"
msgstr ""
-#: common/models.py:582
+#: common/models.py:568
msgid "Allow Editing IPN"
msgstr ""
-#: common/models.py:583
+#: common/models.py:569
msgid "Allow changing the IPN value while editing a part"
msgstr ""
-#: common/models.py:589
+#: common/models.py:575
msgid "Copy Part BOM Data"
msgstr ""
-#: common/models.py:590
+#: common/models.py:576
msgid "Copy BOM data by default when duplicating a part"
msgstr ""
-#: common/models.py:596
+#: common/models.py:582
msgid "Copy Part Parameter Data"
msgstr ""
-#: common/models.py:597
+#: common/models.py:583
msgid "Copy parameter data by default when duplicating a part"
msgstr ""
-#: common/models.py:603
+#: common/models.py:589
msgid "Copy Part Test Data"
msgstr ""
-#: common/models.py:604
+#: common/models.py:590
msgid "Copy test data by default when duplicating a part"
msgstr ""
-#: common/models.py:610
+#: common/models.py:596
msgid "Copy Category Parameter Templates"
msgstr ""
-#: common/models.py:611
+#: common/models.py:597
msgid "Copy category parameter templates when creating a part"
msgstr ""
-#: common/models.py:617 part/models.py:2236 report/models.py:187
-#: stock/forms.py:224 templates/js/translated/table_filters.js:25
-#: templates/js/translated/table_filters.js:329
+#: common/models.py:603 part/models.py:2252 report/models.py:187
+#: stock/forms.py:224 templates/js/translated/table_filters.js:38
+#: templates/js/translated/table_filters.js:342
msgid "Template"
msgstr ""
-#: common/models.py:618
+#: common/models.py:604
msgid "Parts are templates by default"
msgstr ""
-#: common/models.py:624 part/models.py:803
-#: templates/js/translated/table_filters.js:133
-#: templates/js/translated/table_filters.js:341
+#: common/models.py:610 part/models.py:805
+#: templates/js/translated/table_filters.js:146
+#: templates/js/translated/table_filters.js:354
msgid "Assembly"
msgstr ""
-#: common/models.py:625
+#: common/models.py:611
msgid "Parts can be assembled from other components by default"
msgstr ""
-#: common/models.py:631 part/models.py:809
-#: templates/js/translated/table_filters.js:345
+#: common/models.py:617 part/models.py:811
+#: templates/js/translated/table_filters.js:358
msgid "Component"
msgstr ""
-#: common/models.py:632
+#: common/models.py:618
msgid "Parts can be used as sub-components by default"
msgstr ""
-#: common/models.py:638 part/models.py:820
+#: common/models.py:624 part/models.py:822
msgid "Purchaseable"
msgstr ""
-#: common/models.py:639
+#: common/models.py:625
msgid "Parts are purchaseable by default"
msgstr ""
-#: common/models.py:645 part/models.py:825
-#: templates/js/translated/table_filters.js:353
+#: common/models.py:631 part/models.py:827
+#: templates/js/translated/table_filters.js:366
msgid "Salable"
msgstr ""
-#: common/models.py:646
+#: common/models.py:632
msgid "Parts are salable by default"
msgstr ""
-#: common/models.py:652 part/models.py:815
-#: templates/js/translated/table_filters.js:33
-#: templates/js/translated/table_filters.js:357
+#: common/models.py:638 part/models.py:817
+#: templates/js/translated/table_filters.js:46
+#: templates/js/translated/table_filters.js:370
msgid "Trackable"
msgstr ""
-#: common/models.py:653
+#: common/models.py:639
msgid "Parts are trackable by default"
msgstr ""
-#: common/models.py:659 part/models.py:835
-#: part/templates/part/part_base.html:61
-#: templates/js/translated/table_filters.js:29
+#: common/models.py:645 part/models.py:837
+#: part/templates/part/part_base.html:66
+#: templates/js/translated/table_filters.js:42
msgid "Virtual"
msgstr ""
-#: common/models.py:660
+#: common/models.py:646
msgid "Parts are virtual by default"
msgstr ""
-#: common/models.py:667
+#: common/models.py:653
msgid "Show Quantity in Forms"
msgstr ""
-#: common/models.py:668
+#: common/models.py:654
msgid "Display available part quantity in some forms"
msgstr ""
-#: common/models.py:674
+#: common/models.py:660
msgid "Show Import in Views"
msgstr ""
-#: common/models.py:675
+#: common/models.py:661
msgid "Display the import wizard in some part views"
msgstr ""
-#: common/models.py:681
+#: common/models.py:667
msgid "Show Price in Forms"
msgstr ""
-#: common/models.py:682
+#: common/models.py:668
msgid "Display part price in some forms"
msgstr ""
-#: common/models.py:688
+#: common/models.py:674
msgid "Show related parts"
msgstr ""
-#: common/models.py:689
+#: common/models.py:675
msgid "Display related parts for a part"
msgstr ""
-#: common/models.py:695
+#: common/models.py:681
msgid "Create initial stock"
msgstr ""
-#: common/models.py:696
+#: common/models.py:682
msgid "Create initial stock on part creation"
msgstr ""
-#: common/models.py:702
+#: common/models.py:688
msgid "Internal Prices"
msgstr ""
-#: common/models.py:703
+#: common/models.py:689
msgid "Enable internal prices for parts"
msgstr ""
-#: common/models.py:709
+#: common/models.py:695
msgid "Internal Price as BOM-Price"
msgstr ""
-#: common/models.py:710
+#: common/models.py:696
msgid "Use the internal price (if set) in BOM-price calculations"
msgstr ""
-#: common/models.py:716 templates/stats.html:25
+#: common/models.py:702 templates/stats.html:25
msgid "Debug Mode"
msgstr ""
-#: common/models.py:717
+#: common/models.py:703
msgid "Generate reports in debug mode (HTML output)"
msgstr ""
-#: common/models.py:723
+#: common/models.py:709
msgid "Page Size"
msgstr ""
-#: common/models.py:724
+#: common/models.py:710
msgid "Default page size for PDF reports"
msgstr ""
-#: common/models.py:734
+#: common/models.py:720
msgid "Test Reports"
msgstr ""
-#: common/models.py:735
+#: common/models.py:721
msgid "Enable generation of test reports"
msgstr ""
-#: common/models.py:741
+#: common/models.py:727
msgid "Stock Expiry"
msgstr ""
-#: common/models.py:742
+#: common/models.py:728
msgid "Enable stock expiry functionality"
msgstr ""
-#: common/models.py:748
+#: common/models.py:734
msgid "Sell Expired Stock"
msgstr ""
-#: common/models.py:749
+#: common/models.py:735
msgid "Allow sale of expired stock"
msgstr ""
-#: common/models.py:755
+#: common/models.py:741
msgid "Stock Stale Time"
msgstr ""
-#: common/models.py:756
+#: common/models.py:742
msgid "Number of days stock items are considered stale before expiring"
msgstr ""
-#: common/models.py:758
+#: common/models.py:744
msgid "days"
msgstr ""
-#: common/models.py:763
+#: common/models.py:749
msgid "Build Expired Stock"
msgstr ""
-#: common/models.py:764
+#: common/models.py:750
msgid "Allow building with expired stock"
msgstr ""
-#: common/models.py:770
+#: common/models.py:756
msgid "Stock Ownership Control"
msgstr ""
-#: common/models.py:771
+#: common/models.py:757
msgid "Enable ownership control over stock locations and items"
msgstr ""
-#: common/models.py:777
+#: common/models.py:763
msgid "Group by Part"
msgstr ""
-#: common/models.py:778
+#: common/models.py:764
msgid "Group stock items by part reference in table views"
msgstr ""
-#: common/models.py:784
+#: common/models.py:770
msgid "Build Order Reference Prefix"
msgstr ""
-#: common/models.py:785
+#: common/models.py:771
msgid "Prefix value for build order reference"
msgstr ""
-#: common/models.py:790
+#: common/models.py:776
msgid "Build Order Reference Regex"
msgstr ""
-#: common/models.py:791
+#: common/models.py:777
msgid "Regular expression pattern for matching build order reference"
msgstr ""
-#: common/models.py:795
+#: common/models.py:781
msgid "Sales Order Reference Prefix"
msgstr ""
-#: common/models.py:796
+#: common/models.py:782
msgid "Prefix value for sales order reference"
msgstr ""
-#: common/models.py:801
+#: common/models.py:787
msgid "Purchase Order Reference Prefix"
msgstr ""
-#: common/models.py:802
+#: common/models.py:788
msgid "Prefix value for purchase order reference"
msgstr ""
-#: common/models.py:826
+#: common/models.py:794
+msgid "Enable build"
+msgstr ""
+
+#: common/models.py:795
+msgid "Enable build functionality in InvenTree interface"
+msgstr ""
+
+#: common/models.py:800
+msgid "Enable buy"
+msgstr ""
+
+#: common/models.py:801
+msgid "Enable buy functionality in InvenTree interface"
+msgstr ""
+
+#: common/models.py:806
+msgid "Enable sell"
+msgstr ""
+
+#: common/models.py:807
+msgid "Enable sell functionality in InvenTree interface"
+msgstr ""
+
+#: common/models.py:812
+msgid "Enable stock"
+msgstr ""
+
+#: common/models.py:813
+msgid "Enable stock functionality in InvenTree interface"
+msgstr ""
+
+#: common/models.py:818
+msgid "Enable SO"
+msgstr ""
+
+#: common/models.py:819
+msgid "Enable SO functionality in InvenTree interface"
+msgstr ""
+
+#: common/models.py:824
+msgid "Enable PO"
+msgstr ""
+
+#: common/models.py:825
+msgid "Enable PO functionality in InvenTree interface"
+msgstr ""
+
+#: common/models.py:850
msgid "Show starred parts"
msgstr ""
-#: common/models.py:827
+#: common/models.py:851
msgid "Show starred parts on the homepage"
msgstr ""
-#: common/models.py:832
+#: common/models.py:856
msgid "Show latest parts"
msgstr ""
-#: common/models.py:833
+#: common/models.py:857
msgid "Show latest parts on the homepage"
msgstr ""
-#: common/models.py:838
+#: common/models.py:862
msgid "Recent Part Count"
msgstr ""
-#: common/models.py:839
+#: common/models.py:863
msgid "Number of recent parts to display on index page"
msgstr ""
-#: common/models.py:845
+#: common/models.py:869
msgid "Show unvalidated BOMs"
msgstr ""
-#: common/models.py:846
+#: common/models.py:870
msgid "Show BOMs that await validation on the homepage"
msgstr ""
-#: common/models.py:851
+#: common/models.py:875
msgid "Show recent stock changes"
msgstr ""
-#: common/models.py:852
+#: common/models.py:876
msgid "Show recently changed stock items on the homepage"
msgstr ""
-#: common/models.py:857
+#: common/models.py:881
msgid "Recent Stock Count"
msgstr ""
-#: common/models.py:858
+#: common/models.py:882
msgid "Number of recent stock items to display on index page"
msgstr ""
-#: common/models.py:863
+#: common/models.py:887
msgid "Show low stock"
msgstr ""
-#: common/models.py:864
+#: common/models.py:888
msgid "Show low stock items on the homepage"
msgstr ""
-#: common/models.py:869
+#: common/models.py:893
msgid "Show depleted stock"
msgstr ""
-#: common/models.py:870
+#: common/models.py:894
msgid "Show depleted stock items on the homepage"
msgstr ""
-#: common/models.py:875
+#: common/models.py:899
msgid "Show needed stock"
msgstr ""
-#: common/models.py:876
+#: common/models.py:900
msgid "Show stock items needed for builds on the homepage"
msgstr ""
-#: common/models.py:881
+#: common/models.py:905
msgid "Show expired stock"
msgstr ""
-#: common/models.py:882
+#: common/models.py:906
msgid "Show expired stock items on the homepage"
msgstr ""
-#: common/models.py:887
+#: common/models.py:911
msgid "Show stale stock"
msgstr ""
-#: common/models.py:888
+#: common/models.py:912
msgid "Show stale stock items on the homepage"
msgstr ""
-#: common/models.py:893
+#: common/models.py:917
msgid "Show pending builds"
msgstr ""
-#: common/models.py:894
+#: common/models.py:918
msgid "Show pending builds on the homepage"
msgstr ""
-#: common/models.py:899
+#: common/models.py:923
msgid "Show overdue builds"
msgstr ""
-#: common/models.py:900
+#: common/models.py:924
msgid "Show overdue builds on the homepage"
msgstr ""
-#: common/models.py:905
+#: common/models.py:929
msgid "Show outstanding POs"
msgstr ""
-#: common/models.py:906
+#: common/models.py:930
msgid "Show outstanding POs on the homepage"
msgstr ""
-#: common/models.py:911
+#: common/models.py:935
msgid "Show overdue POs"
msgstr ""
-#: common/models.py:912
+#: common/models.py:936
msgid "Show overdue POs on the homepage"
msgstr ""
-#: common/models.py:917
+#: common/models.py:941
msgid "Show outstanding SOs"
msgstr ""
-#: common/models.py:918
+#: common/models.py:942
msgid "Show outstanding SOs on the homepage"
msgstr ""
-#: common/models.py:923
+#: common/models.py:947
msgid "Show overdue SOs"
msgstr ""
-#: common/models.py:924
+#: common/models.py:948
msgid "Show overdue SOs on the homepage"
msgstr ""
-#: common/models.py:930
+#: common/models.py:954
msgid "Inline label display"
msgstr ""
-#: common/models.py:931
+#: common/models.py:955
msgid "Display PDF labels in the browser, instead of downloading as a file"
msgstr ""
-#: common/models.py:937
+#: common/models.py:961
msgid "Inline report display"
msgstr ""
-#: common/models.py:938
+#: common/models.py:962
msgid "Display PDF reports in the browser, instead of downloading as a file"
msgstr ""
-#: common/models.py:944
+#: common/models.py:968
msgid "Search Preview Results"
msgstr ""
-#: common/models.py:945
+#: common/models.py:969
msgid "Number of results to show in search preview window"
msgstr ""
-#: common/models.py:1002 company/forms.py:43
+#: common/models.py:1026 company/forms.py:43
msgid "Price break quantity"
msgstr ""
-#: common/models.py:1009 company/templates/company/supplier_part.html:231
-#: templates/js/translated/part.js:1153
+#: common/models.py:1033 company/templates/company/supplier_part.html:231
+#: templates/js/translated/part.js:1322
msgid "Price"
msgstr ""
-#: common/models.py:1010
+#: common/models.py:1034
msgid "Unit price at specified quantity"
msgstr ""
-#: common/models.py:1103
+#: common/models.py:1127
msgid "Default"
msgstr ""
@@ -2123,7 +2200,7 @@ msgstr ""
#: order/templates/order/po_navbar.html:19
#: order/templates/order/po_navbar.html:22
#: order/templates/order/purchase_order_detail.html:26 order/views.py:290
-#: part/templates/part/bom_upload/upload_file.html:45
+#: part/templates/part/bom_upload/upload_file.html:65
#: part/templates/part/import_wizard/part_upload.html:45 part/views.py:268
#: part/views.py:882
msgid "Upload File"
@@ -2154,7 +2231,7 @@ msgstr ""
#: order/templates/order/order_wizard/po_upload.html:40
#: 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:43
+#: part/templates/part/bom_upload/upload_file.html:63
#: 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:43
@@ -2169,244 +2246,249 @@ msgstr ""
msgid "Image URL"
msgstr ""
-#: company/models.py:102
+#: company/models.py:104
msgid "Company description"
msgstr ""
-#: company/models.py:103
+#: company/models.py:105
msgid "Description of the company"
msgstr ""
-#: company/models.py:109 company/templates/company/company_base.html:70
-#: templates/js/translated/company.js:303
+#: company/models.py:111 company/templates/company/company_base.html:70
+#: templates/js/translated/company.js:348
msgid "Website"
msgstr ""
-#: company/models.py:110
+#: company/models.py:112
msgid "Company website URL"
msgstr ""
-#: company/models.py:114 company/templates/company/company_base.html:88
+#: company/models.py:116 company/templates/company/company_base.html:88
msgid "Address"
msgstr ""
-#: company/models.py:115
+#: company/models.py:117
msgid "Company address"
msgstr ""
-#: company/models.py:118
+#: company/models.py:120
msgid "Phone number"
msgstr ""
-#: company/models.py:119
+#: company/models.py:121
msgid "Contact phone number"
msgstr ""
-#: company/models.py:122 company/templates/company/company_base.html:102
+#: company/models.py:124 company/templates/company/company_base.html:102
msgid "Email"
msgstr ""
-#: company/models.py:122
+#: company/models.py:124
msgid "Contact email address"
msgstr ""
-#: company/models.py:125 company/templates/company/company_base.html:109
+#: company/models.py:127 company/templates/company/company_base.html:109
msgid "Contact"
msgstr ""
-#: company/models.py:126
+#: company/models.py:128
msgid "Point of contact"
msgstr ""
-#: company/models.py:128 company/models.py:345 company/models.py:513
-#: order/models.py:160 part/models.py:712
+#: company/models.py:130 company/models.py:347 company/models.py:563
+#: order/models.py:160 part/models.py:714
#: report/templates/report/inventree_build_order_base.html:165
-#: templates/js/translated/company.js:486
-#: templates/js/translated/company.js:768 templates/js/translated/part.js:819
+#: templates/js/translated/company.js:535
+#: templates/js/translated/company.js:823 templates/js/translated/part.js:972
msgid "Link"
msgstr ""
-#: company/models.py:128
+#: company/models.py:130
msgid "Link to external company information"
msgstr ""
-#: company/models.py:136 part/models.py:722
+#: company/models.py:138 part/models.py:724
msgid "Image"
msgstr ""
-#: company/models.py:141
+#: company/models.py:143
msgid "is customer"
msgstr ""
-#: company/models.py:141
+#: company/models.py:143
msgid "Do you sell items to this company?"
msgstr ""
-#: company/models.py:143
+#: company/models.py:145
msgid "is supplier"
msgstr ""
-#: company/models.py:143
+#: company/models.py:145
msgid "Do you purchase items from this company?"
msgstr ""
-#: company/models.py:145
+#: company/models.py:147
msgid "is manufacturer"
msgstr ""
-#: company/models.py:145
+#: company/models.py:147
msgid "Does this company manufacture parts?"
msgstr ""
-#: company/models.py:149 company/serializers.py:245
-#: company/templates/company/company_base.html:76
+#: company/models.py:151 company/serializers.py:264
+#: company/templates/company/company_base.html:76 stock/serializers.py:155
msgid "Currency"
msgstr ""
-#: company/models.py:152
+#: company/models.py:154
msgid "Default currency used for this company"
msgstr ""
-#: company/models.py:317 company/models.py:484 stock/models.py:448
+#: company/models.py:319 company/models.py:534 stock/models.py:454
#: stock/templates/stock/item_base.html:237
msgid "Base Part"
msgstr ""
-#: company/models.py:321 company/models.py:488 order/views.py:1082
+#: company/models.py:323 company/models.py:538 order/views.py:1082
msgid "Select part"
msgstr ""
-#: company/models.py:332 company/templates/company/company_base.html:116
+#: company/models.py:334 company/templates/company/company_base.html:116
#: company/templates/company/manufacturer_part.html:89
#: company/templates/company/supplier_part.html:98 part/bom.py:170
#: part/bom.py:241 stock/templates/stock/item_base.html:366
-#: templates/js/translated/company.js:287
-#: templates/js/translated/company.js:463
-#: templates/js/translated/company.js:739
+#: templates/js/translated/company.js:332
+#: templates/js/translated/company.js:512
+#: templates/js/translated/company.js:794 templates/js/translated/part.js:222
msgid "Manufacturer"
msgstr ""
-#: company/models.py:333
+#: company/models.py:335 templates/js/translated/part.js:223
msgid "Select manufacturer"
msgstr ""
-#: company/models.py:339 company/templates/company/manufacturer_part.html:93
-#: company/templates/company/supplier_part.html:106
-#: order/templates/order/purchase_order_detail.html:331 part/bom.py:171
-#: part/bom.py:242 templates/js/translated/company.js:479
-#: templates/js/translated/company.js:757
+#: company/models.py:341 company/templates/company/manufacturer_part.html:93
+#: company/templates/company/supplier_part.html:106 part/bom.py:171
+#: part/bom.py:242 templates/js/translated/company.js:528
+#: templates/js/translated/company.js:812 templates/js/translated/order.js:505
+#: templates/js/translated/part.js:233
msgid "MPN"
msgstr ""
-#: company/models.py:340
+#: company/models.py:342 templates/js/translated/part.js:234
msgid "Manufacturer Part Number"
msgstr ""
-#: company/models.py:346
+#: company/models.py:348
msgid "URL for external manufacturer part link"
msgstr ""
-#: company/models.py:352
+#: company/models.py:354
msgid "Manufacturer part description"
msgstr ""
-#: company/models.py:406 company/models.py:507
+#: company/models.py:408 company/models.py:557
#: company/templates/company/manufacturer_part.html:6
#: company/templates/company/manufacturer_part.html:23
#: stock/templates/stock/item_base.html:376
msgid "Manufacturer Part"
msgstr ""
-#: company/models.py:413
+#: company/models.py:415
msgid "Parameter name"
msgstr ""
-#: company/models.py:419
+#: company/models.py:421
#: report/templates/report/inventree_test_report_base.html:90
-#: stock/models.py:1808 templates/InvenTree/settings/header.html:8
-#: templates/js/translated/company.js:589 templates/js/translated/part.js:480
-#: templates/js/translated/stock.js:505
+#: stock/models.py:1819 templates/InvenTree/settings/header.html:8
+#: templates/js/translated/company.js:642 templates/js/translated/part.js:612
+#: templates/js/translated/stock.js:576
msgid "Value"
msgstr ""
-#: company/models.py:420
+#: company/models.py:422
msgid "Parameter value"
msgstr ""
-#: company/models.py:426 part/models.py:797 part/models.py:2204
-#: templates/js/translated/company.js:595 templates/js/translated/part.js:486
+#: company/models.py:428 part/models.py:799 part/models.py:2220
+#: templates/js/translated/company.js:648 templates/js/translated/part.js:618
msgid "Units"
msgstr ""
-#: company/models.py:427
+#: company/models.py:429
msgid "Parameter units"
msgstr ""
-#: company/models.py:494 company/templates/company/company_base.html:121
+#: company/models.py:501
+msgid "Linked manufacturer part must reference the same base part"
+msgstr ""
+
+#: company/models.py:544 company/templates/company/company_base.html:121
#: company/templates/company/supplier_part.html:88 order/models.py:260
#: order/templates/order/order_base.html:92
#: order/templates/order/order_wizard/select_pos.html:30 part/bom.py:175
#: part/bom.py:286 stock/templates/stock/item_base.html:383
-#: templates/js/translated/company.js:291
-#: templates/js/translated/company.js:713 templates/js/translated/order.js:254
+#: templates/js/translated/company.js:336
+#: templates/js/translated/company.js:768 templates/js/translated/order.js:328
+#: templates/js/translated/part.js:203
msgid "Supplier"
msgstr ""
-#: company/models.py:495
+#: company/models.py:545 templates/js/translated/part.js:204
msgid "Select supplier"
msgstr ""
-#: company/models.py:500 company/templates/company/supplier_part.html:92
-#: order/templates/order/purchase_order_detail.html:318 part/bom.py:176
-#: part/bom.py:287
+#: company/models.py:550 company/templates/company/supplier_part.html:92
+#: part/bom.py:176 part/bom.py:287 templates/js/translated/order.js:492
+#: templates/js/translated/part.js:214
msgid "SKU"
msgstr ""
-#: company/models.py:501
+#: company/models.py:551 templates/js/translated/part.js:215
msgid "Supplier stock keeping unit"
msgstr ""
-#: company/models.py:508
+#: company/models.py:558
msgid "Select manufacturer part"
msgstr ""
-#: company/models.py:514
+#: company/models.py:564
msgid "URL for external supplier part link"
msgstr ""
-#: company/models.py:520
+#: company/models.py:570
msgid "Supplier part description"
msgstr ""
-#: company/models.py:525 company/templates/company/supplier_part.html:120
-#: part/models.py:2352 report/templates/report/inventree_po_report.html:93
+#: company/models.py:575 company/templates/company/supplier_part.html:120
+#: part/models.py:2368 report/templates/report/inventree_po_report.html:93
#: report/templates/report/inventree_so_report.html:93
msgid "Note"
msgstr ""
-#: company/models.py:529 part/models.py:1590
+#: company/models.py:579 part/models.py:1599
msgid "base cost"
msgstr ""
-#: company/models.py:529 part/models.py:1590
+#: company/models.py:579 part/models.py:1599
msgid "Minimum charge (e.g. stocking fee)"
msgstr ""
-#: company/models.py:531 company/templates/company/supplier_part.html:113
-#: stock/models.py:472 stock/templates/stock/item_base.html:324
-#: templates/js/translated/company.js:789 templates/js/translated/stock.js:1086
+#: company/models.py:581 company/templates/company/supplier_part.html:113
+#: stock/models.py:478 stock/templates/stock/item_base.html:324
+#: templates/js/translated/company.js:844 templates/js/translated/stock.js:1057
msgid "Packaging"
msgstr ""
-#: company/models.py:531
+#: company/models.py:581
msgid "Part packaging"
msgstr ""
-#: company/models.py:533 part/models.py:1592
+#: company/models.py:583 part/models.py:1601
msgid "multiple"
msgstr ""
-#: company/models.py:533
+#: company/models.py:583
msgid "Order multiple"
msgstr ""
@@ -2420,7 +2502,7 @@ msgstr ""
#: company/templates/company/company_base.html:9
#: company/templates/company/company_base.html:35
-#: templates/InvenTree/search.html:304 templates/js/translated/company.js:276
+#: templates/InvenTree/search.html:304 templates/js/translated/company.js:321
msgid "Company"
msgstr ""
@@ -2435,7 +2517,7 @@ msgid "Download image from URL"
msgstr ""
#: company/templates/company/company_base.html:46
-#: templates/js/translated/order.js:83
+#: templates/js/translated/order.js:117
msgid "Create Purchase Order"
msgstr ""
@@ -2460,16 +2542,16 @@ msgstr ""
msgid "Phone"
msgstr ""
-#: company/templates/company/company_base.html:126 order/models.py:544
-#: order/templates/order/sales_order_base.html:94 stock/models.py:490
-#: stock/models.py:491 stock/templates/stock/item_base.html:276
-#: templates/js/translated/company.js:283 templates/js/translated/order.js:351
-#: templates/js/translated/stock.js:1467
+#: company/templates/company/company_base.html:126 order/models.py:550
+#: order/templates/order/sales_order_base.html:94 stock/models.py:496
+#: stock/models.py:497 stock/templates/stock/item_base.html:276
+#: templates/js/translated/company.js:328 templates/js/translated/order.js:692
+#: templates/js/translated/stock.js:1608
msgid "Customer"
msgstr ""
#: company/templates/company/company_base.html:193
-#: part/templates/part/part_base.html:405
+#: part/templates/part/part_base.html:418
msgid "Upload Image"
msgstr ""
@@ -2490,8 +2572,8 @@ msgstr ""
msgid "New Supplier Part"
msgstr ""
-#: company/templates/company/detail.html:28
-#: company/templates/company/detail.html:70
+#: company/templates/company/detail.html:27
+#: company/templates/company/detail.html:67
#: company/templates/company/manufacturer_part.html:112
#: company/templates/company/manufacturer_part.html:136
#: part/templates/part/category.html:135 part/templates/part/detail.html:292
@@ -2499,106 +2581,106 @@ msgstr ""
msgid "Options"
msgstr ""
-#: company/templates/company/detail.html:33
-#: company/templates/company/detail.html:75
+#: company/templates/company/detail.html:32
+#: company/templates/company/detail.html:72
#: part/templates/part/category.html:140
msgid "Order parts"
msgstr ""
-#: company/templates/company/detail.html:36
-#: company/templates/company/detail.html:78
+#: company/templates/company/detail.html:35
+#: company/templates/company/detail.html:75
msgid "Delete parts"
msgstr ""
-#: company/templates/company/detail.html:36
-#: company/templates/company/detail.html:78
+#: company/templates/company/detail.html:35
+#: company/templates/company/detail.html:75
msgid "Delete Parts"
msgstr ""
-#: company/templates/company/detail.html:56 templates/InvenTree/search.html:149
+#: company/templates/company/detail.html:54 templates/InvenTree/search.html:149
msgid "Manufacturer Parts"
msgstr ""
-#: company/templates/company/detail.html:64
+#: company/templates/company/detail.html:62
msgid "Create new manufacturer part"
msgstr ""
-#: company/templates/company/detail.html:65 part/templates/part/detail.html:312
+#: company/templates/company/detail.html:63 part/templates/part/detail.html:312
msgid "New Manufacturer Part"
msgstr ""
-#: company/templates/company/detail.html:97
+#: company/templates/company/detail.html:93
msgid "Supplier Stock"
msgstr ""
-#: company/templates/company/detail.html:106
-#: company/templates/company/navbar.html:40
-#: company/templates/company/navbar.html:43
+#: company/templates/company/detail.html:102
+#: company/templates/company/navbar.html:46
+#: company/templates/company/navbar.html:49
#: order/templates/order/purchase_orders.html:8
#: order/templates/order/purchase_orders.html:13
-#: part/templates/part/detail.html:50 part/templates/part/navbar.html:71
-#: part/templates/part/navbar.html:74 templates/InvenTree/index.html:260
+#: part/templates/part/detail.html:50 part/templates/part/navbar.html:82
+#: part/templates/part/navbar.html:85 templates/InvenTree/index.html:260
#: templates/InvenTree/search.html:325
#: templates/InvenTree/settings/navbar.html:107
-#: templates/InvenTree/settings/navbar.html:109 templates/navbar.html:37
+#: templates/InvenTree/settings/navbar.html:109 templates/navbar.html:44
#: users/models.py:45
msgid "Purchase Orders"
msgstr ""
-#: company/templates/company/detail.html:112
+#: company/templates/company/detail.html:108
#: order/templates/order/purchase_orders.html:20
msgid "Create new purchase order"
msgstr ""
-#: company/templates/company/detail.html:113
+#: company/templates/company/detail.html:109
#: order/templates/order/purchase_orders.html:21
msgid "New Purchase Order"
msgstr ""
-#: company/templates/company/detail.html:128
-#: company/templates/company/navbar.html:49
-#: company/templates/company/navbar.html:52
+#: company/templates/company/detail.html:124
+#: company/templates/company/navbar.html:55
+#: company/templates/company/navbar.html:58
#: order/templates/order/sales_orders.html:8
#: order/templates/order/sales_orders.html:13
-#: part/templates/part/detail.html:71 part/templates/part/navbar.html:79
-#: part/templates/part/navbar.html:82 templates/InvenTree/index.html:291
+#: part/templates/part/detail.html:71 part/templates/part/navbar.html:91
+#: part/templates/part/navbar.html:94 templates/InvenTree/index.html:291
#: templates/InvenTree/search.html:345
#: templates/InvenTree/settings/navbar.html:113
-#: templates/InvenTree/settings/navbar.html:115 templates/navbar.html:46
+#: templates/InvenTree/settings/navbar.html:115 templates/navbar.html:55
#: users/models.py:46
msgid "Sales Orders"
msgstr ""
-#: company/templates/company/detail.html:134
+#: company/templates/company/detail.html:130
#: order/templates/order/sales_orders.html:20
msgid "Create new sales order"
msgstr ""
-#: company/templates/company/detail.html:135
+#: company/templates/company/detail.html:131
#: order/templates/order/sales_orders.html:21
msgid "New Sales Order"
msgstr ""
-#: company/templates/company/detail.html:151
-#: company/templates/company/navbar.html:55
-#: company/templates/company/navbar.html:58
-#: templates/js/translated/build.js:597
+#: company/templates/company/detail.html:147
+#: company/templates/company/navbar.html:61
+#: company/templates/company/navbar.html:64
+#: templates/js/translated/build.js:620
msgid "Assigned Stock"
msgstr ""
-#: company/templates/company/detail.html:169
+#: company/templates/company/detail.html:165
msgid "Company Notes"
msgstr ""
#: company/templates/company/detail.html:364
#: company/templates/company/manufacturer_part.html:200
-#: part/templates/part/detail.html:826
+#: part/templates/part/detail.html:357
msgid "Delete Supplier Parts?"
msgstr ""
#: company/templates/company/detail.html:365
#: company/templates/company/manufacturer_part.html:201
-#: part/templates/part/detail.html:827
+#: part/templates/part/detail.html:358
msgid "All selected supplier parts will be deleted"
msgstr ""
@@ -2609,17 +2691,17 @@ msgstr ""
#: company/templates/company/manufacturer_part.html:40
#: company/templates/company/supplier_part.html:40
#: company/templates/company/supplier_part.html:146
-#: part/templates/part/detail.html:55 part/templates/part/part_base.html:109
+#: part/templates/part/detail.html:55 part/templates/part/part_base.html:116
msgid "Order part"
msgstr ""
#: company/templates/company/manufacturer_part.html:45
-#: templates/js/translated/company.js:511
+#: templates/js/translated/company.js:560
msgid "Edit manufacturer part"
msgstr ""
#: company/templates/company/manufacturer_part.html:49
-#: templates/js/translated/company.js:512
+#: templates/js/translated/company.js:561
msgid "Delete manufacturer part"
msgstr ""
@@ -2634,9 +2716,9 @@ msgstr ""
#: company/templates/company/manufacturer_part.html:103
#: company/templates/company/manufacturer_part_navbar.html:21
-#: company/views.py:49 part/templates/part/navbar.html:65
-#: part/templates/part/navbar.html:68 part/templates/part/prices.html:144
-#: templates/InvenTree/search.html:316 templates/navbar.html:35
+#: company/views.py:49 part/templates/part/navbar.html:75
+#: part/templates/part/navbar.html:78 part/templates/part/prices.html:163
+#: templates/InvenTree/search.html:316 templates/navbar.html:41
msgid "Suppliers"
msgstr ""
@@ -2649,8 +2731,8 @@ msgstr ""
#: company/templates/company/manufacturer_part.html:138
#: company/templates/company/manufacturer_part.html:239
#: part/templates/part/detail.html:214 part/templates/part/detail.html:294
-#: part/templates/part/detail.html:317 templates/js/translated/company.js:377
-#: users/models.py:194
+#: part/templates/part/detail.html:317 templates/js/translated/company.js:424
+#: templates/js/translated/helpers.js:31 users/models.py:194
msgid "Delete"
msgstr ""
@@ -2659,8 +2741,8 @@ msgstr ""
#: company/templates/company/manufacturer_part_navbar.html:14
#: part/templates/part/category_navbar.html:38
#: part/templates/part/category_navbar.html:41
-#: part/templates/part/detail.html:155 part/templates/part/navbar.html:14
-#: part/templates/part/navbar.html:17
+#: part/templates/part/detail.html:155 part/templates/part/navbar.html:20
+#: part/templates/part/navbar.html:23
msgid "Parameters"
msgstr ""
@@ -2676,7 +2758,7 @@ msgid "Delete parameters"
msgstr ""
#: company/templates/company/manufacturer_part.html:176
-#: part/templates/part/detail.html:719
+#: part/templates/part/detail.html:834
msgid "Add Parameter"
msgstr ""
@@ -2693,18 +2775,18 @@ msgid "Manufacturer Part Stock"
msgstr ""
#: company/templates/company/manufacturer_part_navbar.html:29
-#: company/templates/company/navbar.html:34
+#: company/templates/company/navbar.html:39
#: company/templates/company/supplier_part_navbar.html:15
-#: part/templates/part/navbar.html:31 stock/api.py:53
+#: part/templates/part/navbar.html:38 stock/api.py:54
#: stock/templates/stock/loc_link.html:7 stock/templates/stock/location.html:36
#: stock/templates/stock/stock_app_base.html:10
#: templates/InvenTree/index.html:150 templates/InvenTree/search.html:196
#: templates/InvenTree/search.html:232
#: templates/InvenTree/settings/navbar.html:95
#: templates/InvenTree/settings/navbar.html:97
-#: templates/js/translated/part.js:401 templates/js/translated/part.js:626
-#: templates/js/translated/part.js:786 templates/js/translated/stock.js:133
-#: templates/js/translated/stock.js:935 templates/navbar.html:26
+#: templates/js/translated/part.js:529 templates/js/translated/part.js:758
+#: templates/js/translated/part.js:934 templates/js/translated/stock.js:202
+#: templates/js/translated/stock.js:850 templates/navbar.html:32
msgid "Stock"
msgstr ""
@@ -2717,41 +2799,41 @@ msgstr ""
msgid "Orders"
msgstr ""
-#: company/templates/company/navbar.html:13
-#: company/templates/company/navbar.html:16
+#: company/templates/company/navbar.html:17
+#: company/templates/company/navbar.html:20
msgid "Manufactured Parts"
msgstr ""
-#: company/templates/company/navbar.html:22
-#: company/templates/company/navbar.html:25
+#: company/templates/company/navbar.html:26
+#: company/templates/company/navbar.html:29
msgid "Supplied Parts"
msgstr ""
-#: company/templates/company/navbar.html:31 part/templates/part/navbar.html:28
+#: company/templates/company/navbar.html:36 part/templates/part/navbar.html:35
#: stock/templates/stock/location.html:119
#: stock/templates/stock/location.html:134
#: stock/templates/stock/location.html:148
#: stock/templates/stock/location_navbar.html:18
#: stock/templates/stock/location_navbar.html:21
-#: templates/InvenTree/search.html:198 templates/js/translated/stock.js:1366
+#: templates/InvenTree/search.html:198 templates/js/translated/stock.js:1507
#: templates/stats.html:93 templates/stats.html:102 users/models.py:43
msgid "Stock Items"
msgstr ""
#: company/templates/company/supplier_part.html:7
-#: company/templates/company/supplier_part.html:24 stock/models.py:457
+#: company/templates/company/supplier_part.html:24 stock/models.py:463
#: stock/templates/stock/item_base.html:388
-#: templates/js/translated/company.js:729 templates/js/translated/stock.js:1058
+#: templates/js/translated/company.js:784 templates/js/translated/stock.js:1014
msgid "Supplier Part"
msgstr ""
#: company/templates/company/supplier_part.html:44
-#: templates/js/translated/company.js:802
+#: templates/js/translated/company.js:857
msgid "Edit supplier part"
msgstr ""
#: company/templates/company/supplier_part.html:48
-#: templates/js/translated/company.js:803
+#: templates/js/translated/company.js:858
msgid "Delete supplier part"
msgstr ""
@@ -2775,13 +2857,13 @@ msgid "Order Part"
msgstr ""
#: company/templates/company/supplier_part.html:158
-#: part/templates/part/navbar.html:58 part/templates/part/prices.html:7
+#: part/templates/part/navbar.html:67 part/templates/part/prices.html:7
msgid "Pricing Information"
msgstr ""
#: company/templates/company/supplier_part.html:164
#: company/templates/company/supplier_part.html:265
-#: part/templates/part/prices.html:253 part/views.py:1722
+#: part/templates/part/prices.html:271 part/views.py:1730
msgid "Add Price Break"
msgstr ""
@@ -2789,11 +2871,11 @@ msgstr ""
msgid "No price break information found"
msgstr ""
-#: company/templates/company/supplier_part.html:199 part/views.py:1784
+#: company/templates/company/supplier_part.html:199 part/views.py:1792
msgid "Delete Price Break"
msgstr ""
-#: company/templates/company/supplier_part.html:213 part/views.py:1770
+#: company/templates/company/supplier_part.html:213 part/views.py:1778
msgid "Edit Price Break"
msgstr ""
@@ -2817,8 +2899,8 @@ msgstr ""
msgid "New Supplier"
msgstr ""
-#: company/views.py:55 part/templates/part/prices.html:148
-#: templates/InvenTree/search.html:306 templates/navbar.html:36
+#: company/views.py:55 part/templates/part/prices.html:167
+#: templates/InvenTree/search.html:306 templates/navbar.html:42
msgid "Manufacturers"
msgstr ""
@@ -2827,7 +2909,7 @@ msgid "New Manufacturer"
msgstr ""
#: company/views.py:61 templates/InvenTree/search.html:336
-#: templates/navbar.html:45
+#: templates/navbar.html:53
msgid "Customers"
msgstr ""
@@ -2929,6 +3011,10 @@ msgstr ""
msgid "Part query filters (comma-separated value of key=value pairs)"
msgstr ""
+#: order/api.py:302
+msgid "Destination location must be specified"
+msgstr ""
+
#: order/forms.py:30 order/templates/order/order_base.html:47
msgid "Place order"
msgstr ""
@@ -2978,11 +3064,11 @@ msgstr ""
msgid "Order notes"
msgstr ""
-#: order/models.py:247 order/models.py:534
+#: order/models.py:247 order/models.py:540
msgid "Order reference"
msgstr ""
-#: order/models.py:252 order/models.py:549
+#: order/models.py:252 order/models.py:555
msgid "Purchase order status"
msgstr ""
@@ -2991,7 +3077,7 @@ msgid "Company from which the items are being ordered"
msgstr ""
#: order/models.py:264 order/templates/order/order_base.html:98
-#: templates/js/translated/order.js:263
+#: templates/js/translated/order.js:337
msgid "Supplier Reference"
msgstr ""
@@ -3023,7 +3109,7 @@ msgstr ""
msgid "Date order was completed"
msgstr ""
-#: order/models.py:313 stock/models.py:345 stock/models.py:1060
+#: order/models.py:313 stock/models.py:351 stock/models.py:1072
msgid "Quantity must be greater than zero"
msgstr ""
@@ -3031,150 +3117,182 @@ msgstr ""
msgid "Part supplier must match PO supplier"
msgstr ""
-#: order/models.py:416
+#: order/models.py:421
msgid "Lines can only be received against an order marked as 'Placed'"
msgstr ""
-#: order/models.py:420
+#: order/models.py:425
msgid "Quantity must be an integer"
msgstr ""
-#: order/models.py:422
+#: order/models.py:427
msgid "Quantity must be a positive number"
msgstr ""
-#: order/models.py:545
+#: order/models.py:551
msgid "Company to which the items are being sold"
msgstr ""
-#: order/models.py:551
+#: order/models.py:557
msgid "Customer Reference "
msgstr ""
-#: order/models.py:551
+#: order/models.py:557
msgid "Customer order reference code"
msgstr ""
-#: order/models.py:556
+#: order/models.py:562
msgid "Target date for order completion. Order will be overdue after this date."
msgstr ""
-#: order/models.py:559 templates/js/translated/order.js:392
+#: order/models.py:565 templates/js/translated/order.js:733
msgid "Shipment Date"
msgstr ""
-#: order/models.py:566
+#: order/models.py:572
msgid "shipped by"
msgstr ""
-#: order/models.py:610
+#: order/models.py:616
msgid "SalesOrder cannot be shipped as it is not currently pending"
msgstr ""
-#: order/models.py:707
+#: order/models.py:713
msgid "Item quantity"
msgstr ""
-#: order/models.py:713
+#: order/models.py:719
msgid "Line item reference"
msgstr ""
-#: order/models.py:715
+#: order/models.py:721
msgid "Line item notes"
msgstr ""
-#: order/models.py:745 order/models.py:823 templates/js/translated/order.js:442
+#: order/models.py:751 order/models.py:835 templates/js/translated/order.js:785
msgid "Order"
msgstr ""
-#: order/models.py:746 order/templates/order/order_base.html:9
+#: order/models.py:752 order/templates/order/order_base.html:9
#: order/templates/order/order_base.html:24
#: report/templates/report/inventree_po_report.html:77
#: stock/templates/stock/item_base.html:338
-#: templates/js/translated/order.js:232 templates/js/translated/stock.js:1037
-#: templates/js/translated/stock.js:1448
+#: templates/js/translated/order.js:306 templates/js/translated/stock.js:991
+#: templates/js/translated/stock.js:1589
msgid "Purchase Order"
msgstr ""
-#: order/models.py:767
+#: order/models.py:773
msgid "Supplier part"
msgstr ""
-#: order/models.py:770 order/templates/order/order_base.html:131
-#: order/templates/order/purchase_order_detail.html:388
+#: order/models.py:780 order/templates/order/order_base.html:131
#: order/templates/order/receive_parts.html:22
#: order/templates/order/sales_order_base.html:133
+#: templates/js/translated/order.js:573
msgid "Received"
msgstr ""
-#: order/models.py:770
+#: order/models.py:781
msgid "Number of items received"
msgstr ""
-#: order/models.py:776 part/templates/part/prices.html:157 stock/models.py:582
-#: stock/templates/stock/item_base.html:345
-#: templates/js/translated/stock.js:1081
+#: order/models.py:788 part/templates/part/prices.html:176 stock/models.py:588
+#: stock/serializers.py:147 stock/templates/stock/item_base.html:345
+#: templates/js/translated/stock.js:1045
msgid "Purchase Price"
msgstr ""
-#: order/models.py:777
+#: order/models.py:789
msgid "Unit purchase price"
msgstr ""
-#: order/models.py:785
+#: order/models.py:797
msgid "Where does the Purchaser want this item to be stored?"
msgstr ""
-#: order/models.py:831 part/templates/part/part_pricing.html:97
-#: part/templates/part/prices.html:97 part/templates/part/prices.html:266
+#: order/models.py:843 part/templates/part/part_pricing.html:112
+#: part/templates/part/prices.html:116 part/templates/part/prices.html:284
msgid "Sale Price"
msgstr ""
-#: order/models.py:832
+#: order/models.py:844
msgid "Unit sale price"
msgstr ""
-#: order/models.py:911 order/models.py:913
+#: order/models.py:923 order/models.py:925
msgid "Stock item has not been assigned"
msgstr ""
-#: order/models.py:917
+#: order/models.py:929
msgid "Cannot allocate stock item to a line with a different part"
msgstr ""
-#: order/models.py:919
+#: order/models.py:931
msgid "Cannot allocate stock to a line without a part"
msgstr ""
-#: order/models.py:922
+#: order/models.py:934
msgid "Allocation quantity cannot exceed stock quantity"
msgstr ""
-#: order/models.py:932
+#: order/models.py:944
msgid "Quantity must be 1 for serialized stock item"
msgstr ""
-#: order/models.py:937
+#: order/models.py:949
msgid "Line"
msgstr ""
-#: order/models.py:948
+#: order/models.py:960
msgid "Item"
msgstr ""
-#: order/models.py:949
+#: order/models.py:961
msgid "Select stock item to allocate"
msgstr ""
-#: order/models.py:952
+#: order/models.py:964
msgid "Enter stock allocation quantity"
msgstr ""
-#: order/serializers.py:139
+#: order/serializers.py:166
msgid "Purchase price currency"
msgstr ""
-#: order/serializers.py:360
+#: order/serializers.py:201
+msgid "Line Item"
+msgstr ""
+
+#: order/serializers.py:207
+msgid "Line item does not match purchase order"
+msgstr ""
+
+#: order/serializers.py:217 order/serializers.py:276
+msgid "Select destination location for received items"
+msgstr ""
+
+#: order/serializers.py:234
+msgid "Barcode Hash"
+msgstr ""
+
+#: order/serializers.py:235
+msgid "Unique identifier field"
+msgstr ""
+
+#: order/serializers.py:250
+msgid "Barcode is already in use"
+msgstr ""
+
+#: order/serializers.py:289
+msgid "Line items must be provided"
+msgstr ""
+
+#: order/serializers.py:299
+msgid "Supplied barcode values must be unique"
+msgstr ""
+
+#: order/serializers.py:514
msgid "Sale price currency"
msgstr ""
@@ -3227,14 +3345,12 @@ msgid "Edit Purchase Order"
msgstr ""
#: order/templates/order/order_base.html:196
-#: order/templates/order/purchase_order_detail.html:265
-#: stock/templates/stock/location.html:250
+#: stock/templates/stock/location.html:250 templates/js/translated/order.js:437
msgid "New Location"
msgstr ""
#: order/templates/order/order_base.html:197
-#: order/templates/order/purchase_order_detail.html:266
-#: stock/templates/stock/location.html:42
+#: stock/templates/stock/location.html:42 templates/js/translated/order.js:438
msgid "Create new stock location"
msgstr ""
@@ -3336,7 +3452,7 @@ msgid "Upload File for Purchase Order"
msgstr ""
#: order/templates/order/order_wizard/po_upload.html:18
-#: part/templates/part/bom_upload/upload_file.html:24
+#: part/templates/part/bom_upload/upload_file.html:34
#: part/templates/part/import_wizard/ajax_part_upload.html:10
#: part/templates/part/import_wizard/part_upload.html:21
#, python-format
@@ -3369,7 +3485,7 @@ msgstr ""
#: order/templates/order/order_wizard/select_parts.html:65
#, python-format
-msgid "Select a supplier for %(name)s"
+msgid "Select a supplier for %(name)s"
msgstr ""
#: order/templates/order/order_wizard/select_parts.html:77
@@ -3386,7 +3502,7 @@ msgid "Select existing purchase orders, or create new orders."
msgstr ""
#: order/templates/order/order_wizard/select_pos.html:31
-#: templates/js/translated/order.js:289 templates/js/translated/order.js:397
+#: templates/js/translated/order.js:363 templates/js/translated/order.js:738
msgid "Items"
msgstr ""
@@ -3425,9 +3541,9 @@ msgid "Purchase Order Items"
msgstr ""
#: order/templates/order/purchase_order_detail.html:23
-#: order/templates/order/purchase_order_detail.html:202
+#: order/templates/order/purchase_order_detail.html:203
#: order/templates/order/sales_order_detail.html:23
-#: order/templates/order/sales_order_detail.html:176
+#: order/templates/order/sales_order_detail.html:177
msgid "Add Line Item"
msgstr ""
@@ -3436,49 +3552,6 @@ msgstr ""
msgid "Order Notes"
msgstr ""
-#: order/templates/order/purchase_order_detail.html:238
-#: order/templates/order/sales_order_detail.html:518
-msgid "Edit Line Item"
-msgstr ""
-
-#: order/templates/order/purchase_order_detail.html:248
-#: order/templates/order/sales_order_detail.html:528
-msgid "Delete Line Item"
-msgstr ""
-
-#: order/templates/order/purchase_order_detail.html:279
-msgid "No line items found"
-msgstr ""
-
-#: order/templates/order/purchase_order_detail.html:307
-#: order/templates/order/sales_order_detail.html:353
-msgid "Total"
-msgstr ""
-
-#: order/templates/order/purchase_order_detail.html:360
-#: order/templates/order/sales_order_detail.html:376
-#: templates/js/translated/part.js:1128 templates/js/translated/part.js:1317
-msgid "Unit Price"
-msgstr ""
-
-#: order/templates/order/purchase_order_detail.html:367
-#: order/templates/order/sales_order_detail.html:383
-msgid "Total price"
-msgstr ""
-
-#: order/templates/order/purchase_order_detail.html:431
-#: order/templates/order/sales_order_detail.html:489
-msgid "Edit line item"
-msgstr ""
-
-#: order/templates/order/purchase_order_detail.html:432
-msgid "Delete line item"
-msgstr ""
-
-#: order/templates/order/purchase_order_detail.html:437
-msgid "Receive line item"
-msgstr ""
-
#: order/templates/order/purchase_orders.html:24
#: order/templates/order/sales_orders.html:24
msgid "Print Order Reports"
@@ -3486,18 +3559,18 @@ msgstr ""
#: order/templates/order/receive_parts.html:8
#, python-format
-msgid "Receive outstanding parts for %(order)s - %(desc)s"
+msgid "Receive outstanding parts for %(order)s - %(desc)s"
msgstr ""
-#: order/templates/order/receive_parts.html:14 part/api.py:49
-#: part/models.py:296 part/templates/part/cat_link.html:7
+#: order/templates/order/receive_parts.html:14 part/api.py:54
+#: part/models.py:298 part/templates/part/cat_link.html:7
#: part/templates/part/category.html:108 part/templates/part/category.html:122
#: part/templates/part/category_navbar.html:21
#: part/templates/part/category_navbar.html:24
#: templates/InvenTree/index.html:102 templates/InvenTree/search.html:114
#: templates/InvenTree/settings/navbar.html:83
#: templates/InvenTree/settings/navbar.html:85
-#: templates/js/translated/part.js:987 templates/navbar.html:23
+#: templates/js/translated/part.js:1154 templates/navbar.html:29
#: templates/stats.html:80 templates/stats.html:89 users/models.py:41
msgid "Parts"
msgstr ""
@@ -3511,7 +3584,7 @@ msgid "Order Code"
msgstr ""
#: order/templates/order/receive_parts.html:21
-#: part/templates/part/part_base.html:160 templates/js/translated/part.js:802
+#: part/templates/part/part_base.html:167 templates/js/translated/part.js:949
msgid "On Order"
msgstr ""
@@ -3540,7 +3613,7 @@ msgid "Sales Order Details"
msgstr ""
#: order/templates/order/sales_order_base.html:100
-#: templates/js/translated/order.js:364
+#: templates/js/translated/order.js:705
msgid "Customer Reference"
msgstr ""
@@ -3563,71 +3636,102 @@ msgstr ""
msgid "Sales Order Items"
msgstr ""
-#: order/templates/order/sales_order_detail.html:225
-#: templates/js/translated/bom.js:378 templates/js/translated/build.js:759
-#: templates/js/translated/build.js:1202
+#: order/templates/order/sales_order_detail.html:226
+#: templates/js/translated/bom.js:394 templates/js/translated/build.js:782
+#: templates/js/translated/build.js:1219
msgid "Actions"
msgstr ""
-#: order/templates/order/sales_order_detail.html:232
-#: templates/js/translated/build.js:645 templates/js/translated/build.js:1011
+#: order/templates/order/sales_order_detail.html:233
+#: templates/js/translated/build.js:668 templates/js/translated/build.js:1030
msgid "Edit stock allocation"
msgstr ""
-#: order/templates/order/sales_order_detail.html:233
-#: templates/js/translated/build.js:647 templates/js/translated/build.js:1012
+#: order/templates/order/sales_order_detail.html:234
+#: templates/js/translated/build.js:670 templates/js/translated/build.js:1031
msgid "Delete stock allocation"
msgstr ""
-#: order/templates/order/sales_order_detail.html:306
+#: order/templates/order/sales_order_detail.html:307
msgid "No matching line items"
msgstr ""
-#: order/templates/order/sales_order_detail.html:336
+#: order/templates/order/sales_order_detail.html:337
msgid "ID"
msgstr ""
-#: order/templates/order/sales_order_detail.html:404
-#: templates/js/translated/build.js:710 templates/js/translated/build.js:1007
+#: order/templates/order/sales_order_detail.html:354
+#: templates/js/translated/order.js:481
+msgid "Total"
+msgstr ""
+
+#: order/templates/order/sales_order_detail.html:377
+#: templates/js/translated/order.js:534 templates/js/translated/part.js:1296
+#: templates/js/translated/part.js:1507
+msgid "Unit Price"
+msgstr ""
+
+#: order/templates/order/sales_order_detail.html:384
+#: templates/js/translated/order.js:543
+msgid "Total price"
+msgstr ""
+
+#: order/templates/order/sales_order_detail.html:405
+#: templates/js/translated/build.js:733 templates/js/translated/build.js:1026
msgid "Allocated"
msgstr ""
-#: order/templates/order/sales_order_detail.html:406
+#: order/templates/order/sales_order_detail.html:407
msgid "Fulfilled"
msgstr ""
-#: order/templates/order/sales_order_detail.html:443
+#: order/templates/order/sales_order_detail.html:444
msgid "PO"
msgstr ""
-#: order/templates/order/sales_order_detail.html:473
+#: order/templates/order/sales_order_detail.html:474
msgid "Allocate serial numbers"
msgstr ""
-#: order/templates/order/sales_order_detail.html:476
-#: templates/js/translated/build.js:773
+#: order/templates/order/sales_order_detail.html:477
+#: templates/js/translated/build.js:796
msgid "Allocate stock"
msgstr ""
-#: order/templates/order/sales_order_detail.html:479
+#: order/templates/order/sales_order_detail.html:480
msgid "Purchase stock"
msgstr ""
-#: order/templates/order/sales_order_detail.html:483
-#: templates/js/translated/build.js:766 templates/js/translated/build.js:1210
+#: order/templates/order/sales_order_detail.html:484
+#: templates/js/translated/build.js:789 templates/js/translated/build.js:1227
msgid "Build stock"
msgstr ""
-#: order/templates/order/sales_order_detail.html:486
-#: order/templates/order/sales_order_detail.html:605
+#: order/templates/order/sales_order_detail.html:487
+#: order/templates/order/sales_order_detail.html:606
msgid "Calculate price"
msgstr ""
#: order/templates/order/sales_order_detail.html:490
+#: templates/js/translated/order.js:616
+msgid "Edit line item"
+msgstr ""
+
+#: order/templates/order/sales_order_detail.html:491
msgid "Delete line item "
msgstr ""
-#: order/templates/order/sales_order_detail.html:611
+#: order/templates/order/sales_order_detail.html:519
+#: templates/js/translated/order.js:403
+msgid "Edit Line Item"
+msgstr ""
+
+#: order/templates/order/sales_order_detail.html:529
+#: templates/js/translated/order.js:415
+msgid "Delete Line Item"
+msgstr ""
+
+#: order/templates/order/sales_order_detail.html:612
msgid "Update Unit Price"
msgstr ""
@@ -3814,12 +3918,28 @@ msgstr ""
msgid "Updated {part} unit-price to {price} and quantity to {qty}"
msgstr ""
-#: part/bom.py:133 part/models.py:73 part/models.py:731
-#: part/templates/part/category.html:75 part/templates/part/part_base.html:282
+#: part/api.py:700
+msgid "Must be greater than zero"
+msgstr ""
+
+#: part/api.py:704
+msgid "Must be a valid quantity"
+msgstr ""
+
+#: part/api.py:719
+msgid "Specify location for initial part stock"
+msgstr ""
+
+#: part/api.py:750 part/api.py:754 part/api.py:769 part/api.py:773
+msgid "This field is required"
+msgstr ""
+
+#: part/bom.py:133 part/models.py:75 part/models.py:733
+#: part/templates/part/category.html:75 part/templates/part/part_base.html:290
msgid "Default Location"
msgstr ""
-#: part/bom.py:134 part/templates/part/part_base.html:149
+#: part/bom.py:134 part/templates/part/part_base.html:156
msgid "Available Stock"
msgstr ""
@@ -3879,7 +3999,7 @@ msgstr ""
msgid "Include part supplier data in exported BOM"
msgstr ""
-#: part/forms.py:96 part/models.py:2234
+#: part/forms.py:96 part/models.py:2250
msgid "Parent Part"
msgstr ""
@@ -3923,391 +4043,391 @@ msgstr ""
msgid "Input quantity for price calculation"
msgstr ""
-#: part/models.py:74
+#: part/models.py:76
msgid "Default location for parts in this category"
msgstr ""
-#: part/models.py:77
+#: part/models.py:79
msgid "Default keywords"
msgstr ""
-#: part/models.py:77
+#: part/models.py:79
msgid "Default keywords for parts in this category"
msgstr ""
-#: part/models.py:87 part/models.py:2280
+#: part/models.py:89 part/models.py:2296
#: part/templates/part/part_app_base.html:10
msgid "Part Category"
msgstr ""
-#: part/models.py:88 part/templates/part/category.html:32
+#: part/models.py:90 part/templates/part/category.html:32
#: part/templates/part/category.html:103 templates/InvenTree/search.html:127
#: templates/stats.html:84 users/models.py:40
msgid "Part Categories"
msgstr ""
-#: part/models.py:381
+#: part/models.py:383
msgid "Invalid choice for parent part"
msgstr ""
-#: part/models.py:433 part/models.py:445
+#: part/models.py:435 part/models.py:447
#, python-brace-format
msgid "Part '{p1}' is used in BOM for '{p2}' (recursive)"
msgstr ""
-#: part/models.py:542
+#: part/models.py:544
msgid "Next available serial numbers are"
msgstr ""
-#: part/models.py:546
+#: part/models.py:548
msgid "Next available serial number is"
msgstr ""
-#: part/models.py:551
+#: part/models.py:553
msgid "Most recent serial number is"
msgstr ""
-#: part/models.py:630
+#: part/models.py:632
msgid "Duplicate IPN not allowed in part settings"
msgstr ""
-#: part/models.py:655
+#: part/models.py:657
msgid "Part name"
msgstr ""
-#: part/models.py:662
+#: part/models.py:664
msgid "Is Template"
msgstr ""
-#: part/models.py:663
+#: part/models.py:665
msgid "Is this part a template part?"
msgstr ""
-#: part/models.py:673
+#: part/models.py:675
msgid "Is this part a variant of another part?"
msgstr ""
-#: part/models.py:674
+#: part/models.py:676
msgid "Variant Of"
msgstr ""
-#: part/models.py:680
+#: part/models.py:682
msgid "Part description"
msgstr ""
-#: part/models.py:685 part/templates/part/category.html:82
-#: part/templates/part/part_base.html:251
+#: part/models.py:687 part/templates/part/category.html:82
+#: part/templates/part/part_base.html:259
msgid "Keywords"
msgstr ""
-#: part/models.py:686
+#: part/models.py:688
msgid "Part keywords to improve visibility in search results"
msgstr ""
-#: part/models.py:693 part/models.py:2279
+#: part/models.py:695 part/models.py:2295
#: part/templates/part/set_category.html:15
#: templates/InvenTree/settings/settings.html:167
-#: templates/js/translated/part.js:773
+#: templates/js/translated/part.js:916
msgid "Category"
msgstr ""
-#: part/models.py:694
+#: part/models.py:696
msgid "Part category"
msgstr ""
-#: part/models.py:699 part/templates/part/part_base.html:227
-#: templates/js/translated/part.js:389 templates/js/translated/part.js:617
+#: part/models.py:701 part/templates/part/part_base.html:235
+#: templates/js/translated/part.js:517 templates/js/translated/part.js:749
msgid "IPN"
msgstr ""
-#: part/models.py:700
+#: part/models.py:702
msgid "Internal Part Number"
msgstr ""
-#: part/models.py:706
+#: part/models.py:708
msgid "Part revision or version number"
msgstr ""
-#: part/models.py:707 part/templates/part/part_base.html:244
-#: report/models.py:200 templates/js/translated/part.js:393
+#: part/models.py:709 part/templates/part/part_base.html:252
+#: report/models.py:200 templates/js/translated/part.js:521
msgid "Revision"
msgstr ""
-#: part/models.py:729
+#: part/models.py:731
msgid "Where is this item normally stored?"
msgstr ""
-#: part/models.py:776 part/templates/part/part_base.html:289
+#: part/models.py:778 part/templates/part/part_base.html:297
msgid "Default Supplier"
msgstr ""
-#: part/models.py:777
+#: part/models.py:779
msgid "Default supplier part"
msgstr ""
-#: part/models.py:784
+#: part/models.py:786
msgid "Default Expiry"
msgstr ""
-#: part/models.py:785
+#: part/models.py:787
msgid "Expiry time (in days) for stock items of this part"
msgstr ""
-#: part/models.py:790
+#: part/models.py:792
msgid "Minimum Stock"
msgstr ""
-#: part/models.py:791
+#: part/models.py:793
msgid "Minimum allowed stock level"
msgstr ""
-#: part/models.py:798
+#: part/models.py:800
msgid "Stock keeping units for this part"
msgstr ""
-#: part/models.py:804
+#: part/models.py:806
msgid "Can this part be built from other parts?"
msgstr ""
-#: part/models.py:810
+#: part/models.py:812
msgid "Can this part be used to build other parts?"
msgstr ""
-#: part/models.py:816
+#: part/models.py:818
msgid "Does this part have tracking for unique items?"
msgstr ""
-#: part/models.py:821
+#: part/models.py:823
msgid "Can this part be purchased from external suppliers?"
msgstr ""
-#: part/models.py:826
+#: part/models.py:828
msgid "Can this part be sold to customers?"
msgstr ""
-#: part/models.py:830 templates/js/translated/table_filters.js:21
-#: templates/js/translated/table_filters.js:69
-#: templates/js/translated/table_filters.js:255
-#: templates/js/translated/table_filters.js:324
+#: part/models.py:832 templates/js/translated/table_filters.js:34
+#: templates/js/translated/table_filters.js:82
+#: templates/js/translated/table_filters.js:268
+#: templates/js/translated/table_filters.js:337
msgid "Active"
msgstr ""
-#: part/models.py:831
+#: part/models.py:833
msgid "Is this part active?"
msgstr ""
-#: part/models.py:836
+#: part/models.py:838
msgid "Is this a virtual part, such as a software product or license?"
msgstr ""
-#: part/models.py:841
+#: part/models.py:843
msgid "Part notes - supports Markdown formatting"
msgstr ""
-#: part/models.py:844
+#: part/models.py:846
msgid "BOM checksum"
msgstr ""
-#: part/models.py:844
+#: part/models.py:846
msgid "Stored BOM checksum"
msgstr ""
-#: part/models.py:847
+#: part/models.py:849
msgid "BOM checked by"
msgstr ""
-#: part/models.py:849
+#: part/models.py:851
msgid "BOM checked date"
msgstr ""
-#: part/models.py:853
+#: part/models.py:855
msgid "Creation User"
msgstr ""
-#: part/models.py:1592
+#: part/models.py:1601
msgid "Sell multiple"
msgstr ""
-#: part/models.py:2080
+#: part/models.py:2096
msgid "Test templates can only be created for trackable parts"
msgstr ""
-#: part/models.py:2097
+#: part/models.py:2113
msgid "Test with this name already exists for this part"
msgstr ""
-#: part/models.py:2117 templates/js/translated/part.js:1038
-#: templates/js/translated/stock.js:485
+#: part/models.py:2133 templates/js/translated/part.js:1205
+#: templates/js/translated/stock.js:556
msgid "Test Name"
msgstr ""
-#: part/models.py:2118
+#: part/models.py:2134
msgid "Enter a name for the test"
msgstr ""
-#: part/models.py:2123
+#: part/models.py:2139
msgid "Test Description"
msgstr ""
-#: part/models.py:2124
+#: part/models.py:2140
msgid "Enter description for this test"
msgstr ""
-#: part/models.py:2129 templates/js/translated/part.js:1047
-#: templates/js/translated/table_filters.js:241
+#: part/models.py:2145 templates/js/translated/part.js:1214
+#: templates/js/translated/table_filters.js:254
msgid "Required"
msgstr ""
-#: part/models.py:2130
+#: part/models.py:2146
msgid "Is this test required to pass?"
msgstr ""
-#: part/models.py:2135 templates/js/translated/part.js:1055
+#: part/models.py:2151 templates/js/translated/part.js:1222
msgid "Requires Value"
msgstr ""
-#: part/models.py:2136
+#: part/models.py:2152
msgid "Does this test require a value when adding a test result?"
msgstr ""
-#: part/models.py:2141 templates/js/translated/part.js:1062
+#: part/models.py:2157 templates/js/translated/part.js:1229
msgid "Requires Attachment"
msgstr ""
-#: part/models.py:2142
+#: part/models.py:2158
msgid "Does this test require a file attachment when adding a test result?"
msgstr ""
-#: part/models.py:2153
+#: part/models.py:2169
#, python-brace-format
msgid "Illegal character in template name ({c})"
msgstr ""
-#: part/models.py:2189
+#: part/models.py:2205
msgid "Parameter template name must be unique"
msgstr ""
-#: part/models.py:2197
+#: part/models.py:2213
msgid "Parameter Name"
msgstr ""
-#: part/models.py:2204
+#: part/models.py:2220
msgid "Parameter Units"
msgstr ""
-#: part/models.py:2236 part/models.py:2285 part/models.py:2286
+#: part/models.py:2252 part/models.py:2301 part/models.py:2302
#: templates/InvenTree/settings/settings.html:162
msgid "Parameter Template"
msgstr ""
-#: part/models.py:2238
+#: part/models.py:2254
msgid "Data"
msgstr ""
-#: part/models.py:2238
+#: part/models.py:2254
msgid "Parameter Value"
msgstr ""
-#: part/models.py:2290 templates/InvenTree/settings/settings.html:171
+#: part/models.py:2306 templates/InvenTree/settings/settings.html:171
msgid "Default Value"
msgstr ""
-#: part/models.py:2291
+#: part/models.py:2307
msgid "Default Parameter Value"
msgstr ""
-#: part/models.py:2325
+#: part/models.py:2341
msgid "Select parent part"
msgstr ""
-#: part/models.py:2333
+#: part/models.py:2349
msgid "Sub part"
msgstr ""
-#: part/models.py:2334
+#: part/models.py:2350
msgid "Select part to be used in BOM"
msgstr ""
-#: part/models.py:2340
+#: part/models.py:2356
msgid "BOM quantity for this BOM item"
msgstr ""
-#: part/models.py:2342 templates/js/translated/bom.js:236
-#: templates/js/translated/bom.js:298
+#: part/models.py:2358 templates/js/translated/bom.js:256
+#: templates/js/translated/bom.js:314
msgid "Optional"
msgstr ""
-#: part/models.py:2342
+#: part/models.py:2358
msgid "This BOM item is optional"
msgstr ""
-#: part/models.py:2345
+#: part/models.py:2361
msgid "Overage"
msgstr ""
-#: part/models.py:2346
+#: part/models.py:2362
msgid "Estimated build wastage quantity (absolute or percentage)"
msgstr ""
-#: part/models.py:2349
+#: part/models.py:2365
msgid "BOM item reference"
msgstr ""
-#: part/models.py:2352
+#: part/models.py:2368
msgid "BOM item notes"
msgstr ""
-#: part/models.py:2354
+#: part/models.py:2370
msgid "Checksum"
msgstr ""
-#: part/models.py:2354
+#: part/models.py:2370
msgid "BOM line checksum"
msgstr ""
-#: part/models.py:2358 templates/js/translated/bom.js:315
-#: templates/js/translated/bom.js:322
-#: templates/js/translated/table_filters.js:55
+#: part/models.py:2374 templates/js/translated/bom.js:331
+#: templates/js/translated/bom.js:338
+#: templates/js/translated/table_filters.js:68
msgid "Inherited"
msgstr ""
-#: part/models.py:2359
+#: part/models.py:2375
msgid "This BOM item is inherited by BOMs for variant parts"
msgstr ""
-#: part/models.py:2364 templates/js/translated/bom.js:307
+#: part/models.py:2380 templates/js/translated/bom.js:323
msgid "Allow Variants"
msgstr ""
-#: part/models.py:2365
+#: part/models.py:2381
msgid "Stock items for variant parts can be used for this BOM item"
msgstr ""
-#: part/models.py:2450 stock/models.py:335
+#: part/models.py:2466 stock/models.py:341
msgid "Quantity must be integer value for trackable parts"
msgstr ""
-#: part/models.py:2459 part/models.py:2461
+#: part/models.py:2475 part/models.py:2477
msgid "Sub part must be specified"
msgstr ""
-#: part/models.py:2464
+#: part/models.py:2480
msgid "BOM Item"
msgstr ""
-#: part/models.py:2583
+#: part/models.py:2599
msgid "Part 1"
msgstr ""
-#: part/models.py:2587
+#: part/models.py:2603
msgid "Part 2"
msgstr ""
-#: part/models.py:2587
+#: part/models.py:2603
msgid "Select Related Part"
msgstr ""
-#: part/models.py:2619
+#: part/models.py:2635
msgid "Error creating relationship: check that the part is not related to itself and that the relationship is unique"
msgstr ""
@@ -4317,17 +4437,17 @@ msgstr ""
#: part/templates/part/bom.html:14
#, python-format
-msgid "The BOM for %(part)s has changed, and must be validated.
"
+msgid "The BOM for %(part)s has changed, and must be validated.
"
msgstr ""
#: part/templates/part/bom.html:16
#, python-format
-msgid "The BOM for %(part)s was last checked by %(checker)s on %(check_date)s"
+msgid "The BOM for %(part)s was last checked by %(checker)s on %(check_date)s"
msgstr ""
#: part/templates/part/bom.html:20
#, python-format
-msgid "The BOM for %(part)s has not been validated."
+msgid "The BOM for %(part)s has not been validated."
msgstr ""
#: part/templates/part/bom.html:27
@@ -4374,33 +4494,34 @@ msgstr ""
msgid "Select Part"
msgstr ""
-#: part/templates/part/bom_upload/upload_file.html:7
-msgid "Upload BOM File"
+#: part/templates/part/bom_upload/upload_file.html:13
+#: part/templates/part/bom_upload/upload_file.html:16
+msgid "Return To BOM"
msgstr ""
-#: part/templates/part/bom_upload/upload_file.html:12
+#: part/templates/part/bom_upload/upload_file.html:27
msgid "Upload Bill of Materials"
msgstr ""
-#: part/templates/part/bom_upload/upload_file.html:16
+#: part/templates/part/bom_upload/upload_file.html:46
msgid "Requirements for BOM upload"
msgstr ""
-#: part/templates/part/bom_upload/upload_file.html:18
+#: part/templates/part/bom_upload/upload_file.html:48
msgid "The BOM file must contain the required named columns as provided in the "
msgstr ""
-#: part/templates/part/bom_upload/upload_file.html:18
+#: part/templates/part/bom_upload/upload_file.html:48
msgid "BOM Upload Template"
msgstr ""
-#: part/templates/part/bom_upload/upload_file.html:19
+#: part/templates/part/bom_upload/upload_file.html:49
msgid "Each part must already exist in the database"
msgstr ""
#: part/templates/part/bom_validate.html:6
#, python-format
-msgid "Confirm that the Bill of Materials (BOM) is valid for:
%(part)s"
+msgid "Confirm that the Bill of Materials (BOM) is valid for:
%(part)s"
msgstr ""
#: part/templates/part/bom_validate.html:9
@@ -4435,7 +4556,7 @@ msgstr ""
msgid "Category Description"
msgstr ""
-#: part/templates/part/category.html:88 part/templates/part/category.html:174
+#: part/templates/part/category.html:88 part/templates/part/category.html:175
#: part/templates/part/category_navbar.html:14
#: part/templates/part/category_navbar.html:17
msgid "Subcategories"
@@ -4449,7 +4570,7 @@ msgstr ""
msgid "Export Part Data"
msgstr ""
-#: part/templates/part/category.html:127 part/templates/part/category.html:141
+#: part/templates/part/category.html:127 part/templates/part/category.html:142
msgid "Export"
msgstr ""
@@ -4470,26 +4591,30 @@ msgid "Set Category"
msgstr ""
#: part/templates/part/category.html:141
+msgid "Print Labels"
+msgstr ""
+
+#: part/templates/part/category.html:142
msgid "Export Data"
msgstr ""
-#: part/templates/part/category.html:145
+#: part/templates/part/category.html:146
msgid "View list display"
msgstr ""
-#: part/templates/part/category.html:148
+#: part/templates/part/category.html:149
msgid "View grid display"
msgstr ""
-#: part/templates/part/category.html:164
+#: part/templates/part/category.html:165
msgid "Part Parameters"
msgstr ""
-#: part/templates/part/category.html:253
+#: part/templates/part/category.html:254
msgid "Create Part Category"
msgstr ""
-#: part/templates/part/category.html:279
+#: part/templates/part/category.html:281
msgid "Create Part"
msgstr ""
@@ -4533,7 +4658,7 @@ msgstr ""
msgid "Import Parts"
msgstr ""
-#: part/templates/part/copy_part.html:9 templates/js/translated/part.js:224
+#: part/templates/part/copy_part.html:9 templates/js/translated/part.js:352
msgid "Duplicate Part"
msgstr ""
@@ -4554,7 +4679,7 @@ msgstr ""
#: part/templates/part/create_part.html:17
#, python-format
-msgid "%(full_name)s - %(desc)s (%(match_per)s%% match)"
+msgid "%(full_name)s - %(desc)s (%(match_per)s%% match)"
msgstr ""
#: part/templates/part/detail.html:16
@@ -4563,10 +4688,10 @@ msgstr ""
#: part/templates/part/detail.html:21
#, python-format
-msgid "Showing stock for all variants of %(full_name)s"
+msgid "Showing stock for all variants of %(full_name)s"
msgstr ""
-#: part/templates/part/detail.html:30 part/templates/part/navbar.html:87
+#: part/templates/part/detail.html:30 part/templates/part/navbar.html:99
msgid "Part Test Templates"
msgstr ""
@@ -4586,7 +4711,7 @@ msgstr ""
msgid "Sales Order Allocations"
msgstr ""
-#: part/templates/part/detail.html:130 part/templates/part/navbar.html:21
+#: part/templates/part/detail.html:130 part/templates/part/navbar.html:27
msgid "Part Variants"
msgstr ""
@@ -4602,8 +4727,8 @@ msgstr ""
msgid "Add new parameter"
msgstr ""
-#: part/templates/part/detail.html:182 part/templates/part/navbar.html:95
-#: part/templates/part/navbar.html:98
+#: part/templates/part/detail.html:182 part/templates/part/navbar.html:107
+#: part/templates/part/navbar.html:110
msgid "Related Parts"
msgstr ""
@@ -4611,8 +4736,8 @@ msgstr ""
msgid "Add Related"
msgstr ""
-#: part/templates/part/detail.html:228 part/templates/part/navbar.html:35
-#: part/templates/part/navbar.html:38
+#: part/templates/part/detail.html:228 part/templates/part/navbar.html:43
+#: part/templates/part/navbar.html:46
msgid "Bill of Materials"
msgstr ""
@@ -4644,50 +4769,50 @@ msgstr ""
msgid "Delete manufacturer parts"
msgstr ""
-#: part/templates/part/detail.html:402
+#: part/templates/part/detail.html:502
msgid "Delete selected BOM items?"
msgstr ""
-#: part/templates/part/detail.html:403
+#: part/templates/part/detail.html:503
msgid "All selected BOM items will be deleted"
msgstr ""
-#: part/templates/part/detail.html:454
+#: part/templates/part/detail.html:554
msgid "Create BOM Item"
msgstr ""
-#: part/templates/part/detail.html:589
+#: part/templates/part/detail.html:699
msgid "Add Test Result Template"
msgstr ""
-#: part/templates/part/detail.html:607
+#: part/templates/part/detail.html:716
msgid "Edit Test Result Template"
msgstr ""
-#: part/templates/part/detail.html:619
+#: part/templates/part/detail.html:728
msgid "Delete Test Result Template"
msgstr ""
-#: part/templates/part/detail.html:670
+#: part/templates/part/detail.html:784
msgid "Edit Part Notes"
msgstr ""
-#: part/templates/part/detail.html:903
+#: part/templates/part/detail.html:936
#, python-format
msgid "Purchase Unit Price - %(currency)s"
msgstr ""
-#: part/templates/part/detail.html:915
+#: part/templates/part/detail.html:948
#, python-format
msgid "Unit Price-Cost Difference - %(currency)s"
msgstr ""
-#: part/templates/part/detail.html:927
+#: part/templates/part/detail.html:960
#, python-format
msgid "Supplier Unit Cost - %(currency)s"
msgstr ""
-#: part/templates/part/detail.html:1016
+#: part/templates/part/detail.html:1049
#, python-format
msgid "Unit Price - %(currency)s"
msgstr ""
@@ -4701,19 +4826,19 @@ msgstr ""
msgid "Import Parts from File"
msgstr ""
-#: part/templates/part/navbar.html:24
+#: part/templates/part/navbar.html:30
msgid "Variants"
msgstr ""
-#: part/templates/part/navbar.html:51 part/templates/part/navbar.html:54
+#: part/templates/part/navbar.html:59 part/templates/part/navbar.html:62
msgid "Used In"
msgstr ""
-#: part/templates/part/navbar.html:61
+#: part/templates/part/navbar.html:70
msgid "Prices"
msgstr ""
-#: part/templates/part/navbar.html:90
+#: part/templates/part/navbar.html:102
msgid "Test Templates"
msgstr ""
@@ -4721,195 +4846,204 @@ msgstr ""
msgid "Part List"
msgstr ""
-#: part/templates/part/part_base.html:30
+#: part/templates/part/part_base.html:35
msgid "Part is a template part (variants can be made from this part)"
msgstr ""
-#: part/templates/part/part_base.html:33
+#: part/templates/part/part_base.html:38
msgid "Part can be assembled from other parts"
msgstr ""
-#: part/templates/part/part_base.html:36
+#: part/templates/part/part_base.html:41
msgid "Part can be used in assemblies"
msgstr ""
-#: part/templates/part/part_base.html:39
+#: part/templates/part/part_base.html:44
msgid "Part stock is tracked by serial number"
msgstr ""
-#: part/templates/part/part_base.html:42
+#: part/templates/part/part_base.html:47
msgid "Part can be purchased from external suppliers"
msgstr ""
-#: part/templates/part/part_base.html:45
+#: part/templates/part/part_base.html:50
msgid "Part can be sold to customers"
msgstr ""
-#: part/templates/part/part_base.html:52 part/templates/part/part_base.html:60
+#: part/templates/part/part_base.html:57 part/templates/part/part_base.html:65
msgid "Part is virtual (not a physical part)"
msgstr ""
-#: part/templates/part/part_base.html:53 templates/js/translated/company.js:454
-#: templates/js/translated/company.js:704 templates/js/translated/part.js:304
-#: templates/js/translated/part.js:381
+#: part/templates/part/part_base.html:58 templates/js/translated/company.js:503
+#: templates/js/translated/company.js:759 templates/js/translated/part.js:432
+#: templates/js/translated/part.js:509
msgid "Inactive"
msgstr ""
-#: part/templates/part/part_base.html:68
+#: part/templates/part/part_base.html:73
msgid "Star this part"
msgstr ""
-#: part/templates/part/part_base.html:75
+#: part/templates/part/part_base.html:80
#: stock/templates/stock/item_base.html:75
#: stock/templates/stock/location.html:51
msgid "Barcode actions"
msgstr ""
-#: part/templates/part/part_base.html:77
+#: part/templates/part/part_base.html:82
#: stock/templates/stock/item_base.html:77
#: stock/templates/stock/location.html:53 templates/qr_button.html:1
msgid "Show QR Code"
msgstr ""
-#: part/templates/part/part_base.html:78
+#: part/templates/part/part_base.html:83
#: stock/templates/stock/item_base.html:93
#: stock/templates/stock/location.html:54
msgid "Print Label"
msgstr ""
-#: part/templates/part/part_base.html:83
+#: part/templates/part/part_base.html:89
msgid "Show pricing information"
msgstr ""
-#: part/templates/part/part_base.html:88
+#: part/templates/part/part_base.html:95
#: stock/templates/stock/item_base.html:142
#: stock/templates/stock/location.html:62
msgid "Stock actions"
msgstr ""
-#: part/templates/part/part_base.html:95
+#: part/templates/part/part_base.html:102
msgid "Count part stock"
msgstr ""
-#: part/templates/part/part_base.html:101
+#: part/templates/part/part_base.html:108
msgid "Transfer part stock"
msgstr ""
-#: part/templates/part/part_base.html:118
+#: part/templates/part/part_base.html:125
msgid "Part actions"
msgstr ""
-#: part/templates/part/part_base.html:121
+#: part/templates/part/part_base.html:128
msgid "Duplicate part"
msgstr ""
-#: part/templates/part/part_base.html:124
+#: part/templates/part/part_base.html:131
msgid "Edit part"
msgstr ""
-#: part/templates/part/part_base.html:127
+#: part/templates/part/part_base.html:134
msgid "Delete part"
msgstr ""
-#: part/templates/part/part_base.html:139
+#: part/templates/part/part_base.html:146
#, python-format
msgid "This part is a variant of %(link)s"
msgstr ""
-#: part/templates/part/part_base.html:154
-#: templates/js/translated/table_filters.js:153
+#: part/templates/part/part_base.html:161
+#: templates/js/translated/table_filters.js:166
msgid "In Stock"
msgstr ""
-#: part/templates/part/part_base.html:167 templates/InvenTree/index.html:186
+#: part/templates/part/part_base.html:174 templates/InvenTree/index.html:186
msgid "Required for Build Orders"
msgstr ""
-#: part/templates/part/part_base.html:174
+#: part/templates/part/part_base.html:181
msgid "Required for Sales Orders"
msgstr ""
-#: part/templates/part/part_base.html:181
+#: part/templates/part/part_base.html:188
msgid "Allocated to Orders"
msgstr ""
-#: part/templates/part/part_base.html:196 templates/js/translated/bom.js:336
+#: part/templates/part/part_base.html:203 templates/js/translated/bom.js:352
msgid "Can Build"
msgstr ""
-#: part/templates/part/part_base.html:202 templates/js/translated/part.js:633
-#: templates/js/translated/part.js:806
+#: part/templates/part/part_base.html:209 templates/js/translated/part.js:765
+#: templates/js/translated/part.js:953
msgid "Building"
msgstr ""
-#: part/templates/part/part_base.html:275
+#: part/templates/part/part_base.html:223
+#: part/templates/part/part_base.html:524
+#: part/templates/part/part_base.html:550
+msgid "Show Part Details"
+msgstr ""
+
+#: part/templates/part/part_base.html:283
msgid "Latest Serial Number"
msgstr ""
-#: part/templates/part/part_base.html:383 part/templates/part/prices.html:125
+#: part/templates/part/part_base.html:396 part/templates/part/prices.html:144
msgid "Calculate"
msgstr ""
-#: part/templates/part/part_base.html:426
+#: part/templates/part/part_base.html:439
msgid "No matching images found"
msgstr ""
-#: part/templates/part/part_base.html:506
-#: part/templates/part/part_base.html:531
+#: part/templates/part/part_base.html:519
+#: part/templates/part/part_base.html:544
msgid "Hide Part Details"
msgstr ""
-#: part/templates/part/part_base.html:511
-#: part/templates/part/part_base.html:537
-msgid "Show Part Details"
-msgstr ""
-
#: part/templates/part/part_pricing.html:22 part/templates/part/prices.html:21
msgid "Supplier Pricing"
msgstr ""
#: part/templates/part/part_pricing.html:26
#: part/templates/part/part_pricing.html:52
-#: part/templates/part/part_pricing.html:85
-#: part/templates/part/part_pricing.html:100 part/templates/part/prices.html:25
-#: part/templates/part/prices.html:52 part/templates/part/prices.html:84
-#: part/templates/part/prices.html:101
+#: part/templates/part/part_pricing.html:100
+#: part/templates/part/part_pricing.html:115 part/templates/part/prices.html:25
+#: part/templates/part/prices.html:52 part/templates/part/prices.html:103
+#: part/templates/part/prices.html:120
msgid "Unit Cost"
msgstr ""
#: part/templates/part/part_pricing.html:32
#: part/templates/part/part_pricing.html:58
-#: part/templates/part/part_pricing.html:89
-#: part/templates/part/part_pricing.html:104 part/templates/part/prices.html:32
-#: part/templates/part/prices.html:59 part/templates/part/prices.html:89
-#: part/templates/part/prices.html:106
+#: part/templates/part/part_pricing.html:104
+#: part/templates/part/part_pricing.html:119 part/templates/part/prices.html:32
+#: part/templates/part/prices.html:59 part/templates/part/prices.html:108
+#: part/templates/part/prices.html:125
msgid "Total Cost"
msgstr ""
#: part/templates/part/part_pricing.html:40 part/templates/part/prices.html:40
-#: templates/js/translated/bom.js:291
+#: templates/js/translated/bom.js:307
msgid "No supplier pricing available"
msgstr ""
#: part/templates/part/part_pricing.html:48 part/templates/part/prices.html:49
-#: part/templates/part/prices.html:225
+#: part/templates/part/prices.html:243
msgid "BOM Pricing"
msgstr ""
-#: part/templates/part/part_pricing.html:66 part/templates/part/prices.html:67
+#: part/templates/part/part_pricing.html:65 part/templates/part/prices.html:69
+msgid "Unit Purchase Price"
+msgstr ""
+
+#: part/templates/part/part_pricing.html:71 part/templates/part/prices.html:76
+msgid "Total Purchase Price"
+msgstr ""
+
+#: part/templates/part/part_pricing.html:81 part/templates/part/prices.html:86
msgid "Note: BOM pricing is incomplete for this part"
msgstr ""
-#: part/templates/part/part_pricing.html:73 part/templates/part/prices.html:74
+#: part/templates/part/part_pricing.html:88 part/templates/part/prices.html:93
msgid "No BOM pricing available"
msgstr ""
-#: part/templates/part/part_pricing.html:82 part/templates/part/prices.html:83
+#: part/templates/part/part_pricing.html:97 part/templates/part/prices.html:102
msgid "Internal Price"
msgstr ""
-#: part/templates/part/part_pricing.html:113
-#: part/templates/part/prices.html:115
+#: part/templates/part/part_pricing.html:128
+#: part/templates/part/prices.html:134
msgid "No pricing information is available for this part."
msgstr ""
@@ -4919,7 +5053,7 @@ msgstr ""
#: part/templates/part/partial_delete.html:7
#, python-format
-msgid "Are you sure you want to delete part '%(full_name)s'?"
+msgid "Are you sure you want to delete part '%(full_name)s'?"
msgstr ""
#: part/templates/part/partial_delete.html:12
@@ -4963,53 +5097,53 @@ msgstr ""
msgid "Show BOM cost"
msgstr ""
-#: part/templates/part/prices.html:98
+#: part/templates/part/prices.html:117
msgid "Show sale cost"
msgstr ""
-#: part/templates/part/prices.html:99
+#: part/templates/part/prices.html:118
msgid "Show sale price"
msgstr ""
-#: part/templates/part/prices.html:121
+#: part/templates/part/prices.html:140
msgid "Calculation parameters"
msgstr ""
-#: part/templates/part/prices.html:136 templates/js/translated/bom.js:285
+#: part/templates/part/prices.html:155 templates/js/translated/bom.js:301
msgid "Supplier Cost"
msgstr ""
-#: part/templates/part/prices.html:137 part/templates/part/prices.html:158
-#: part/templates/part/prices.html:183 part/templates/part/prices.html:213
-#: part/templates/part/prices.html:239 part/templates/part/prices.html:267
+#: part/templates/part/prices.html:156 part/templates/part/prices.html:177
+#: part/templates/part/prices.html:201 part/templates/part/prices.html:231
+#: part/templates/part/prices.html:257 part/templates/part/prices.html:285
msgid "Jump to overview"
msgstr ""
-#: part/templates/part/prices.html:162
+#: part/templates/part/prices.html:181
msgid "Stock Pricing"
msgstr ""
-#: part/templates/part/prices.html:172
+#: part/templates/part/prices.html:190
msgid "No stock pricing history is available for this part."
msgstr ""
-#: part/templates/part/prices.html:182
+#: part/templates/part/prices.html:200
msgid "Internal Cost"
msgstr ""
-#: part/templates/part/prices.html:197 part/views.py:1793
+#: part/templates/part/prices.html:215 part/views.py:1801
msgid "Add Internal Price Break"
msgstr ""
-#: part/templates/part/prices.html:212
+#: part/templates/part/prices.html:230
msgid "BOM Cost"
msgstr ""
-#: part/templates/part/prices.html:238
+#: part/templates/part/prices.html:256
msgid "Sale Cost"
msgstr ""
-#: part/templates/part/prices.html:278
+#: part/templates/part/prices.html:296
msgid "No sale pice history available for this part."
msgstr ""
@@ -5017,8 +5151,8 @@ msgstr ""
msgid "Set category for the following parts"
msgstr ""
-#: part/templates/part/stock_count.html:7 templates/js/translated/bom.js:259
-#: templates/js/translated/part.js:623 templates/js/translated/part.js:810
+#: part/templates/part/stock_count.html:7 templates/js/translated/bom.js:278
+#: templates/js/translated/part.js:755 templates/js/translated/part.js:957
msgid "No Stock"
msgstr ""
@@ -5032,10 +5166,10 @@ msgstr ""
#: part/templates/part/variant_part.html:10
#, python-format
-msgid "Create a new variant of template '%(full_name)s'."
+msgid "Create a new variant of template '%(full_name)s'."
msgstr ""
-#: part/templatetags/inventree_extras.py:105
+#: part/templatetags/inventree_extras.py:106
msgid "Unknown database"
msgstr ""
@@ -5116,51 +5250,51 @@ msgstr ""
msgid "Part Pricing"
msgstr ""
-#: part/views.py:1429
+#: part/views.py:1437
msgid "Create Part Parameter Template"
msgstr ""
-#: part/views.py:1439
+#: part/views.py:1447
msgid "Edit Part Parameter Template"
msgstr ""
-#: part/views.py:1446
+#: part/views.py:1454
msgid "Delete Part Parameter Template"
msgstr ""
-#: part/views.py:1494 templates/js/translated/part.js:179
+#: part/views.py:1502 templates/js/translated/part.js:303
msgid "Edit Part Category"
msgstr ""
-#: part/views.py:1532
+#: part/views.py:1540
msgid "Delete Part Category"
msgstr ""
-#: part/views.py:1538
+#: part/views.py:1546
msgid "Part category was deleted"
msgstr ""
-#: part/views.py:1547
+#: part/views.py:1555
msgid "Create Category Parameter Template"
msgstr ""
-#: part/views.py:1648
+#: part/views.py:1656
msgid "Edit Category Parameter Template"
msgstr ""
-#: part/views.py:1704
+#: part/views.py:1712
msgid "Delete Category Parameter Template"
msgstr ""
-#: part/views.py:1726
+#: part/views.py:1734
msgid "Added new price break"
msgstr ""
-#: part/views.py:1802
+#: part/views.py:1810
msgid "Edit Internal Price Break"
msgstr ""
-#: part/views.py:1810
+#: part/views.py:1818
msgid "Delete Internal Price Break"
msgstr ""
@@ -5266,17 +5400,17 @@ msgid "Test Results"
msgstr ""
#: report/templates/report/inventree_test_report_base.html:88
-#: stock/models.py:1796
+#: stock/models.py:1807
msgid "Test"
msgstr ""
#: report/templates/report/inventree_test_report_base.html:89
-#: stock/models.py:1802
+#: stock/models.py:1813
msgid "Result"
msgstr ""
#: report/templates/report/inventree_test_report_base.html:92
-#: templates/js/translated/order.js:279 templates/js/translated/stock.js:1382
+#: templates/js/translated/order.js:353 templates/js/translated/stock.js:1523
msgid "Date"
msgstr ""
@@ -5288,51 +5422,51 @@ msgstr ""
msgid "Fail"
msgstr ""
-#: stock/api.py:145
+#: stock/api.py:146
msgid "Request must contain list of stock items"
msgstr ""
-#: stock/api.py:153
+#: stock/api.py:154
msgid "Improperly formatted data"
msgstr ""
-#: stock/api.py:161
+#: stock/api.py:162
msgid "Each entry must contain a valid integer primary-key"
msgstr ""
-#: stock/api.py:167
+#: stock/api.py:168
msgid "Primary key does not match valid stock item"
msgstr ""
-#: stock/api.py:177
+#: stock/api.py:178
msgid "Invalid quantity value"
msgstr ""
-#: stock/api.py:182
+#: stock/api.py:183
msgid "Quantity must not be less than zero"
msgstr ""
-#: stock/api.py:210
+#: stock/api.py:211
#, python-brace-format
msgid "Updated stock for {n} items"
msgstr ""
-#: stock/api.py:246 stock/api.py:279
+#: stock/api.py:247 stock/api.py:280
msgid "Specified quantity exceeds stock quantity"
msgstr ""
-#: stock/api.py:269
+#: stock/api.py:270
msgid "Valid location must be specified"
msgstr ""
-#: stock/api.py:289
+#: stock/api.py:290
#, python-brace-format
msgid "Moved {n} parts to {loc}"
msgstr ""
-#: stock/forms.py:79 stock/forms.py:307 stock/models.py:550
+#: stock/forms.py:79 stock/forms.py:307 stock/models.py:556
#: stock/templates/stock/item_base.html:395
-#: templates/js/translated/stock.js:1025
+#: templates/js/translated/stock.js:967
msgid "Expiry Date"
msgstr ""
@@ -5384,258 +5518,266 @@ msgstr ""
msgid "Confirm removal of installed stock items"
msgstr ""
-#: stock/models.py:57 stock/models.py:587
+#: stock/models.py:57 stock/models.py:593
msgid "Owner"
msgstr ""
-#: stock/models.py:58 stock/models.py:588
+#: stock/models.py:58 stock/models.py:594
msgid "Select Owner"
msgstr ""
-#: stock/models.py:316
+#: stock/models.py:322
msgid "StockItem with this serial number already exists"
msgstr ""
-#: stock/models.py:352
+#: stock/models.py:358
#, python-brace-format
msgid "Part type ('{pf}') must be {pe}"
msgstr ""
-#: stock/models.py:362 stock/models.py:371
+#: stock/models.py:368 stock/models.py:377
msgid "Quantity must be 1 for item with a serial number"
msgstr ""
-#: stock/models.py:363
+#: stock/models.py:369
msgid "Serial number cannot be set if quantity greater than 1"
msgstr ""
-#: stock/models.py:385
+#: stock/models.py:391
msgid "Item cannot belong to itself"
msgstr ""
-#: stock/models.py:391
+#: stock/models.py:397
msgid "Item must have a build reference if is_building=True"
msgstr ""
-#: stock/models.py:398
+#: stock/models.py:404
msgid "Build reference does not point to the same part object"
msgstr ""
-#: stock/models.py:440
+#: stock/models.py:446
msgid "Parent Stock Item"
msgstr ""
-#: stock/models.py:449
+#: stock/models.py:455
msgid "Base part"
msgstr ""
-#: stock/models.py:458
+#: stock/models.py:464
msgid "Select a matching supplier part for this stock item"
msgstr ""
-#: stock/models.py:463 stock/templates/stock/stock_app_base.html:8
+#: stock/models.py:469 stock/templates/stock/stock_app_base.html:8
msgid "Stock Location"
msgstr ""
-#: stock/models.py:466
+#: stock/models.py:472
msgid "Where is this stock item located?"
msgstr ""
-#: stock/models.py:473
+#: stock/models.py:479
msgid "Packaging this stock item is stored in"
msgstr ""
-#: stock/models.py:478 stock/templates/stock/item_base.html:284
+#: stock/models.py:484 stock/templates/stock/item_base.html:284
msgid "Installed In"
msgstr ""
-#: stock/models.py:481
+#: stock/models.py:487
msgid "Is this item installed in another item?"
msgstr ""
-#: stock/models.py:497
+#: stock/models.py:503
msgid "Serial number for this item"
msgstr ""
-#: stock/models.py:509
+#: stock/models.py:515
msgid "Batch code for this stock item"
msgstr ""
-#: stock/models.py:513
+#: stock/models.py:519
msgid "Stock Quantity"
msgstr ""
-#: stock/models.py:522
+#: stock/models.py:528
msgid "Source Build"
msgstr ""
-#: stock/models.py:524
+#: stock/models.py:530
msgid "Build for this stock item"
msgstr ""
-#: stock/models.py:535
+#: stock/models.py:541
msgid "Source Purchase Order"
msgstr ""
-#: stock/models.py:538
+#: stock/models.py:544
msgid "Purchase order for this stock item"
msgstr ""
-#: stock/models.py:544
+#: stock/models.py:550
msgid "Destination Sales Order"
msgstr ""
-#: stock/models.py:551
+#: stock/models.py:557
msgid "Expiry date for stock item. Stock will be considered expired after this date"
msgstr ""
-#: stock/models.py:564
+#: stock/models.py:570
msgid "Delete on deplete"
msgstr ""
-#: stock/models.py:564
+#: stock/models.py:570
msgid "Delete this Stock Item when stock is depleted"
msgstr ""
-#: stock/models.py:574 stock/templates/stock/item.html:98
+#: stock/models.py:580 stock/templates/stock/item.html:99
#: stock/templates/stock/navbar.html:54
msgid "Stock Item Notes"
msgstr ""
-#: stock/models.py:583
+#: stock/models.py:589
msgid "Single unit purchase price at time of purchase"
msgstr ""
-#: stock/models.py:1051
-msgid "Part is not set as trackable"
+#: stock/models.py:599
+msgid "Scheduled for deletion"
msgstr ""
-#: stock/models.py:1057
-msgid "Quantity must be integer"
+#: stock/models.py:600
+msgid "This StockItem will be deleted by the background worker"
msgstr ""
#: stock/models.py:1063
+msgid "Part is not set as trackable"
+msgstr ""
+
+#: stock/models.py:1069
+msgid "Quantity must be integer"
+msgstr ""
+
+#: stock/models.py:1075
#, python-brace-format
msgid "Quantity must not exceed available stock quantity ({n})"
msgstr ""
-#: stock/models.py:1066
+#: stock/models.py:1078
msgid "Serial numbers must be a list of integers"
msgstr ""
-#: stock/models.py:1069
+#: stock/models.py:1081
msgid "Quantity does not match serial numbers"
msgstr ""
-#: stock/models.py:1076
+#: stock/models.py:1088
#, python-brace-format
msgid "Serial numbers already exist: {exists}"
msgstr ""
-#: stock/models.py:1234
+#: stock/models.py:1246
msgid "StockItem cannot be moved as it is not in stock"
msgstr ""
-#: stock/models.py:1716
+#: stock/models.py:1727
msgid "Entry notes"
msgstr ""
-#: stock/models.py:1773
+#: stock/models.py:1784
msgid "Value must be provided for this test"
msgstr ""
-#: stock/models.py:1779
+#: stock/models.py:1790
msgid "Attachment must be uploaded for this test"
msgstr ""
-#: stock/models.py:1797
+#: stock/models.py:1808
msgid "Test name"
msgstr ""
-#: stock/models.py:1803 templates/js/translated/table_filters.js:231
+#: stock/models.py:1814 templates/js/translated/table_filters.js:244
msgid "Test result"
msgstr ""
-#: stock/models.py:1809
+#: stock/models.py:1820
msgid "Test output value"
msgstr ""
-#: stock/models.py:1816
+#: stock/models.py:1827
msgid "Test result attachment"
msgstr ""
-#: stock/models.py:1822
+#: stock/models.py:1833
msgid "Test notes"
msgstr ""
-#: stock/templates/stock/item.html:16
+#: stock/templates/stock/item.html:17
msgid "Stock Tracking Information"
msgstr ""
-#: stock/templates/stock/item.html:29
+#: stock/templates/stock/item.html:30
msgid "New Entry"
msgstr ""
-#: stock/templates/stock/item.html:42
+#: stock/templates/stock/item.html:43
msgid "Child Stock Items"
msgstr ""
-#: stock/templates/stock/item.html:49
+#: stock/templates/stock/item.html:50
msgid "This stock item does not have any child items"
msgstr ""
-#: stock/templates/stock/item.html:57 stock/templates/stock/navbar.html:19
+#: stock/templates/stock/item.html:58 stock/templates/stock/navbar.html:19
#: stock/templates/stock/navbar.html:22
msgid "Test Data"
msgstr ""
-#: stock/templates/stock/item.html:65
+#: stock/templates/stock/item.html:66
msgid "Delete Test Data"
msgstr ""
-#: stock/templates/stock/item.html:69
+#: stock/templates/stock/item.html:70
msgid "Add Test Data"
msgstr ""
-#: stock/templates/stock/item.html:72 stock/templates/stock/item_base.html:95
+#: stock/templates/stock/item.html:73 stock/templates/stock/item_base.html:95
msgid "Test Report"
msgstr ""
-#: stock/templates/stock/item.html:119 stock/templates/stock/navbar.html:27
+#: stock/templates/stock/item.html:120 stock/templates/stock/navbar.html:27
msgid "Installed Stock Items"
msgstr ""
-#: stock/templates/stock/item.html:124 stock/views.py:534
+#: stock/templates/stock/item.html:125 stock/views.py:534
msgid "Install Stock Item"
msgstr ""
-#: stock/templates/stock/item.html:299 stock/templates/stock/item.html:324
+#: stock/templates/stock/item.html:301 stock/templates/stock/item.html:326
msgid "Add Test Result"
msgstr ""
-#: stock/templates/stock/item.html:344
+#: stock/templates/stock/item.html:346
msgid "Edit Test Result"
msgstr ""
-#: stock/templates/stock/item.html:358
+#: stock/templates/stock/item.html:360
msgid "Delete Test Result"
msgstr ""
#: stock/templates/stock/item_base.html:33
#: stock/templates/stock/item_base.html:399
-#: templates/js/translated/table_filters.js:212
+#: templates/js/translated/table_filters.js:225
msgid "Expired"
msgstr ""
#: stock/templates/stock/item_base.html:43
#: stock/templates/stock/item_base.html:401
-#: templates/js/translated/table_filters.js:218
+#: templates/js/translated/table_filters.js:231
msgid "Stale"
msgstr ""
#: stock/templates/stock/item_base.html:80
-#: templates/js/translated/barcode.js:309
-#: templates/js/translated/barcode.js:314
+#: templates/js/translated/barcode.js:331
+#: templates/js/translated/barcode.js:336
msgid "Unlink Barcode"
msgstr ""
@@ -5768,7 +5910,7 @@ msgid "next page"
msgstr ""
#: stock/templates/stock/item_base.html:303
-#: templates/js/translated/build.js:628
+#: templates/js/translated/build.js:651
msgid "No location set"
msgstr ""
@@ -5795,7 +5937,7 @@ msgid "This StockItem expires on %(item.expiry_date)s"
msgstr ""
#: stock/templates/stock/item_base.html:408
-#: templates/js/translated/stock.js:1032
+#: templates/js/translated/stock.js:980
msgid "Last Updated"
msgstr ""
@@ -5825,7 +5967,7 @@ msgstr ""
#: stock/templates/stock/item_delete.html:12
#, python-format
-msgid "This will remove %(qty)s units of %(full_name)s from stock."
+msgid "This will remove %(qty)s units of %(full_name)s from stock."
msgstr ""
#: stock/templates/stock/item_install.html:8
@@ -5975,7 +6117,7 @@ msgstr ""
#: stock/templates/stock/stockitem_convert.html:8
#, python-format
-msgid "This stock item is current an instance of %(part)s"
+msgid "This stock item is current an instance of %(part)s"
msgstr ""
#: stock/templates/stock/stockitem_convert.html:9
@@ -6039,7 +6181,7 @@ msgstr ""
msgid "Uninstall Stock Items"
msgstr ""
-#: stock/views.py:780 templates/js/translated/stock.js:282
+#: stock/views.py:780 templates/js/translated/stock.js:353
msgid "Confirm stock adjustment"
msgstr ""
@@ -6059,7 +6201,7 @@ msgstr ""
msgid "Serialize Stock"
msgstr ""
-#: stock/views.py:1143 templates/js/translated/build.js:365
+#: stock/views.py:1143 templates/js/translated/build.js:392
msgid "Create new Stock Item"
msgstr ""
@@ -6171,11 +6313,11 @@ msgstr ""
msgid "Enter a search query"
msgstr ""
-#: templates/InvenTree/search.html:268 templates/js/translated/stock.js:629
+#: templates/InvenTree/search.html:268 templates/js/translated/stock.js:699
msgid "Shipped to customer"
msgstr ""
-#: templates/InvenTree/search.html:271 templates/js/translated/stock.js:639
+#: templates/InvenTree/search.html:271 templates/js/translated/stock.js:709
msgid "No stock location set"
msgstr ""
@@ -6240,7 +6382,7 @@ msgstr ""
#: templates/InvenTree/settings/navbar.html:27
#: templates/InvenTree/settings/navbar.html:29
-#: templates/js/translated/tables.js:351 templates/search_form.html:6
+#: templates/js/translated/tables.js:366 templates/search_form.html:6
#: templates/search_form.html:8
msgid "Search"
msgstr ""
@@ -6257,7 +6399,7 @@ msgstr ""
#: templates/InvenTree/settings/navbar.html:46
#: templates/InvenTree/settings/navbar.html:48
-#: templates/InvenTree/settings/settings.html:8 templates/navbar.html:84
+#: templates/InvenTree/settings/settings.html:8 templates/navbar.html:94
msgid "Settings"
msgstr ""
@@ -6332,16 +6474,16 @@ msgid "No category parameter templates found"
msgstr ""
#: templates/InvenTree/settings/settings.html:174
-#: templates/InvenTree/settings/settings.html:271
+#: templates/InvenTree/settings/settings.html:273
msgid "Edit Template"
msgstr ""
#: templates/InvenTree/settings/settings.html:175
-#: templates/InvenTree/settings/settings.html:272
+#: templates/InvenTree/settings/settings.html:274
msgid "Delete Template"
msgstr ""
-#: templates/InvenTree/settings/settings.html:251
+#: templates/InvenTree/settings/settings.html:253
msgid "No part parameter templates found"
msgstr ""
@@ -6358,6 +6500,7 @@ msgid "Account Settings"
msgstr ""
#: templates/InvenTree/settings/user.html:15
+#: templates/js/translated/helpers.js:26
msgid "Edit"
msgstr ""
@@ -6436,65 +6579,69 @@ msgstr ""
msgid "InvenTree Version"
msgstr ""
-#: templates/about.html:26
+#: templates/about.html:27
+msgid "Development Version"
+msgstr ""
+
+#: templates/about.html:30
msgid "Up to Date"
msgstr ""
-#: templates/about.html:28
+#: templates/about.html:32
msgid "Update Available"
msgstr ""
-#: templates/about.html:34
-msgid "API Version"
-msgstr ""
-
-#: templates/about.html:39
-msgid "Python Version"
-msgstr ""
-
-#: templates/about.html:44
-msgid "Django Version"
-msgstr ""
-
-#: templates/about.html:51
+#: templates/about.html:42
msgid "Commit Hash"
msgstr ""
-#: templates/about.html:58
+#: templates/about.html:49
msgid "Commit Date"
msgstr ""
-#: templates/about.html:63
+#: templates/about.html:55
msgid "InvenTree Documentation"
msgstr ""
-#: templates/about.html:68
+#: templates/about.html:60
+msgid "API Version"
+msgstr ""
+
+#: templates/about.html:65
+msgid "Python Version"
+msgstr ""
+
+#: templates/about.html:70
+msgid "Django Version"
+msgstr ""
+
+#: templates/about.html:75
msgid "View Code on GitHub"
msgstr ""
-#: templates/about.html:73
+#: templates/about.html:80
msgid "Credits"
msgstr ""
-#: templates/about.html:78
+#: templates/about.html:85
msgid "Mobile App"
msgstr ""
-#: templates/about.html:83
+#: templates/about.html:90
msgid "Submit Bug Report"
msgstr ""
-#: templates/about.html:90 templates/clip.html:4
+#: templates/about.html:97 templates/clip.html:4
msgid "copy to clipboard"
msgstr ""
-#: templates/about.html:90
+#: templates/about.html:97
msgid "copy version information"
msgstr ""
-#: templates/about.html:100 templates/js/translated/modals.js:33
-#: templates/js/translated/modals.js:567 templates/js/translated/modals.js:661
-#: templates/js/translated/modals.js:957 templates/modals.html:29
+#: templates/about.html:107 templates/js/translated/modals.js:50
+#: templates/js/translated/modals.js:584 templates/js/translated/modals.js:678
+#: templates/js/translated/modals.js:971 templates/modals.html:29
#: templates/modals.html:54
msgid "Close"
msgstr ""
@@ -6515,1358 +6662,1390 @@ msgstr ""
msgid "Remote image must not exceed maximum allowable file size"
msgstr ""
-#: templates/js/report.js:47 templates/js/translated/report.js:47
+#: templates/js/report.js:47 templates/js/translated/report.js:67
msgid "items selected"
msgstr ""
-#: templates/js/report.js:55 templates/js/translated/report.js:55
+#: templates/js/report.js:55 templates/js/translated/report.js:75
msgid "Select Report Template"
msgstr ""
-#: templates/js/report.js:70 templates/js/translated/report.js:70
+#: templates/js/report.js:70 templates/js/translated/report.js:90
msgid "Select Test Report Template"
msgstr ""
-#: templates/js/report.js:98 templates/js/translated/label.js:10
-#: templates/js/translated/report.js:98 templates/js/translated/stock.js:244
+#: templates/js/report.js:98 templates/js/translated/label.js:29
+#: templates/js/translated/report.js:118 templates/js/translated/stock.js:313
msgid "Select Stock Items"
msgstr ""
-#: templates/js/report.js:99 templates/js/translated/report.js:99
+#: templates/js/report.js:99 templates/js/translated/report.js:119
msgid "Stock item(s) must be selected before printing reports"
msgstr ""
#: templates/js/report.js:116 templates/js/report.js:169
#: templates/js/report.js:223 templates/js/report.js:277
-#: templates/js/report.js:331 templates/js/translated/report.js:116
-#: templates/js/translated/report.js:169 templates/js/translated/report.js:223
-#: templates/js/translated/report.js:277 templates/js/translated/report.js:331
+#: templates/js/report.js:331 templates/js/translated/report.js:136
+#: templates/js/translated/report.js:189 templates/js/translated/report.js:243
+#: templates/js/translated/report.js:297 templates/js/translated/report.js:351
msgid "No Reports Found"
msgstr ""
-#: templates/js/report.js:117 templates/js/translated/report.js:117
+#: templates/js/report.js:117 templates/js/translated/report.js:137
msgid "No report templates found which match selected stock item(s)"
msgstr ""
-#: templates/js/report.js:152 templates/js/translated/report.js:152
+#: templates/js/report.js:152 templates/js/translated/report.js:172
msgid "Select Builds"
msgstr ""
-#: templates/js/report.js:153 templates/js/translated/report.js:153
+#: templates/js/report.js:153 templates/js/translated/report.js:173
msgid "Build(s) must be selected before printing reports"
msgstr ""
-#: templates/js/report.js:170 templates/js/translated/report.js:170
+#: templates/js/report.js:170 templates/js/translated/report.js:190
msgid "No report templates found which match selected build(s)"
msgstr ""
-#: templates/js/report.js:205 templates/js/translated/label.js:115
-#: templates/js/translated/report.js:205
+#: templates/js/report.js:205 templates/js/translated/label.js:134
+#: templates/js/translated/report.js:225
msgid "Select Parts"
msgstr ""
-#: templates/js/report.js:206 templates/js/translated/report.js:206
+#: templates/js/report.js:206 templates/js/translated/report.js:226
msgid "Part(s) must be selected before printing reports"
msgstr ""
-#: templates/js/report.js:224 templates/js/translated/report.js:224
+#: templates/js/report.js:224 templates/js/translated/report.js:244
msgid "No report templates found which match selected part(s)"
msgstr ""
-#: templates/js/report.js:259 templates/js/translated/report.js:259
+#: templates/js/report.js:259 templates/js/translated/report.js:279
msgid "Select Purchase Orders"
msgstr ""
-#: templates/js/report.js:260 templates/js/translated/report.js:260
+#: templates/js/report.js:260 templates/js/translated/report.js:280
msgid "Purchase Order(s) must be selected before printing report"
msgstr ""
#: templates/js/report.js:278 templates/js/report.js:332
-#: templates/js/translated/report.js:278 templates/js/translated/report.js:332
+#: templates/js/translated/report.js:298 templates/js/translated/report.js:352
msgid "No report templates found which match selected orders"
msgstr ""
-#: templates/js/report.js:313 templates/js/translated/report.js:313
+#: templates/js/report.js:313 templates/js/translated/report.js:333
msgid "Select Sales Orders"
msgstr ""
-#: templates/js/report.js:314 templates/js/translated/report.js:314
+#: templates/js/report.js:314 templates/js/translated/report.js:334
msgid "Sales Order(s) must be selected before printing report"
msgstr ""
-#: templates/js/translated/api.js:161 templates/js/translated/modals.js:1027
+#: templates/js/translated/api.js:174 templates/js/translated/modals.js:1041
msgid "No Response"
msgstr ""
-#: templates/js/translated/api.js:162 templates/js/translated/modals.js:1028
+#: templates/js/translated/api.js:175 templates/js/translated/modals.js:1042
msgid "No response from the InvenTree server"
msgstr ""
-#: templates/js/translated/api.js:167
+#: templates/js/translated/api.js:181
msgid "Error 400: Bad request"
msgstr ""
-#: templates/js/translated/api.js:168
+#: templates/js/translated/api.js:182
msgid "API request returned error code 400"
msgstr ""
-#: templates/js/translated/api.js:171 templates/js/translated/modals.js:1037
+#: templates/js/translated/api.js:186 templates/js/translated/modals.js:1051
msgid "Error 401: Not Authenticated"
msgstr ""
-#: templates/js/translated/api.js:172 templates/js/translated/modals.js:1038
+#: templates/js/translated/api.js:187 templates/js/translated/modals.js:1052
msgid "Authentication credentials not supplied"
msgstr ""
-#: templates/js/translated/api.js:175 templates/js/translated/modals.js:1042
+#: templates/js/translated/api.js:191 templates/js/translated/modals.js:1056
msgid "Error 403: Permission Denied"
msgstr ""
-#: templates/js/translated/api.js:176 templates/js/translated/modals.js:1043
+#: templates/js/translated/api.js:192 templates/js/translated/modals.js:1057
msgid "You do not have the required permissions to access this function"
msgstr ""
-#: templates/js/translated/api.js:179 templates/js/translated/modals.js:1047
+#: templates/js/translated/api.js:196 templates/js/translated/modals.js:1061
msgid "Error 404: Resource Not Found"
msgstr ""
-#: templates/js/translated/api.js:180 templates/js/translated/modals.js:1048
+#: templates/js/translated/api.js:197 templates/js/translated/modals.js:1062
msgid "The requested resource could not be located on the server"
msgstr ""
-#: templates/js/translated/api.js:183 templates/js/translated/modals.js:1052
+#: templates/js/translated/api.js:201 templates/js/translated/modals.js:1066
msgid "Error 408: Timeout"
msgstr ""
-#: templates/js/translated/api.js:184 templates/js/translated/modals.js:1053
+#: templates/js/translated/api.js:202 templates/js/translated/modals.js:1067
msgid "Connection timeout while requesting data from server"
msgstr ""
-#: templates/js/translated/api.js:187
+#: templates/js/translated/api.js:205
msgid "Unhandled Error Code"
msgstr ""
-#: templates/js/translated/api.js:188
+#: templates/js/translated/api.js:206
msgid "Error code"
msgstr ""
-#: templates/js/translated/attachment.js:16
+#: templates/js/translated/attachment.js:27
msgid "No attachments found"
msgstr ""
-#: templates/js/translated/attachment.js:56
+#: templates/js/translated/attachment.js:91
msgid "Upload Date"
msgstr ""
-#: templates/js/translated/attachment.js:69
+#: templates/js/translated/attachment.js:104
msgid "Edit attachment"
msgstr ""
-#: templates/js/translated/attachment.js:76
+#: templates/js/translated/attachment.js:111
msgid "Delete attachment"
msgstr ""
-#: templates/js/translated/barcode.js:8
+#: templates/js/translated/barcode.js:30
msgid "Scan barcode data here using wedge scanner"
msgstr ""
-#: templates/js/translated/barcode.js:10
+#: templates/js/translated/barcode.js:32
msgid "Enter barcode data"
msgstr ""
-#: templates/js/translated/barcode.js:14
+#: templates/js/translated/barcode.js:36
msgid "Barcode"
msgstr ""
-#: templates/js/translated/barcode.js:32
+#: templates/js/translated/barcode.js:54
msgid "Enter optional notes for stock transfer"
msgstr ""
-#: templates/js/translated/barcode.js:33
+#: templates/js/translated/barcode.js:55
msgid "Enter notes"
msgstr ""
-#: templates/js/translated/barcode.js:71
+#: templates/js/translated/barcode.js:93
msgid "Server error"
msgstr ""
-#: templates/js/translated/barcode.js:92
+#: templates/js/translated/barcode.js:114
msgid "Unknown response from server"
msgstr ""
-#: templates/js/translated/barcode.js:119
-#: templates/js/translated/modals.js:1017
+#: templates/js/translated/barcode.js:141
+#: templates/js/translated/modals.js:1031
msgid "Invalid server response"
msgstr ""
-#: templates/js/translated/barcode.js:212
+#: templates/js/translated/barcode.js:234
msgid "Scan barcode data below"
msgstr ""
-#: templates/js/translated/barcode.js:270
+#: templates/js/translated/barcode.js:281 templates/navbar.html:65
+msgid "Scan Barcode"
+msgstr ""
+
+#: templates/js/translated/barcode.js:292
msgid "No URL in response"
msgstr ""
-#: templates/js/translated/barcode.js:288
+#: templates/js/translated/barcode.js:310
msgid "Link Barcode to Stock Item"
msgstr ""
-#: templates/js/translated/barcode.js:311
+#: templates/js/translated/barcode.js:333
msgid "This will remove the association between this stock item and the barcode"
msgstr ""
-#: templates/js/translated/barcode.js:317
+#: templates/js/translated/barcode.js:339
msgid "Unlink"
msgstr ""
-#: templates/js/translated/barcode.js:376 templates/js/translated/stock.js:220
+#: templates/js/translated/barcode.js:398 templates/js/translated/stock.js:289
msgid "Remove stock item"
msgstr ""
-#: templates/js/translated/barcode.js:418
+#: templates/js/translated/barcode.js:440
msgid "Check Stock Items into Location"
msgstr ""
-#: templates/js/translated/barcode.js:422
-#: templates/js/translated/barcode.js:547
+#: templates/js/translated/barcode.js:444
+#: templates/js/translated/barcode.js:571
msgid "Check In"
msgstr ""
-#: templates/js/translated/barcode.js:462
-#: templates/js/translated/barcode.js:586
+#: templates/js/translated/barcode.js:486
+#: templates/js/translated/barcode.js:610
msgid "Error transferring stock"
msgstr ""
-#: templates/js/translated/barcode.js:481
+#: templates/js/translated/barcode.js:505
msgid "Stock Item already scanned"
msgstr ""
-#: templates/js/translated/barcode.js:485
+#: templates/js/translated/barcode.js:509
msgid "Stock Item already in this location"
msgstr ""
-#: templates/js/translated/barcode.js:492
+#: templates/js/translated/barcode.js:516
msgid "Added stock item"
msgstr ""
-#: templates/js/translated/barcode.js:499
+#: templates/js/translated/barcode.js:523
msgid "Barcode does not match Stock Item"
msgstr ""
-#: templates/js/translated/barcode.js:542
+#: templates/js/translated/barcode.js:566
msgid "Check Into Location"
msgstr ""
-#: templates/js/translated/barcode.js:605
+#: templates/js/translated/barcode.js:629
msgid "Barcode does not match a valid location"
msgstr ""
-#: templates/js/translated/bom.js:195 templates/js/translated/build.js:1152
+#: templates/js/translated/bom.js:215 templates/js/translated/build.js:1169
msgid "Open subassembly"
msgstr ""
-#: templates/js/translated/bom.js:269
+#: templates/js/translated/bom.js:287
msgid "Purchase Price Range"
msgstr ""
-#: templates/js/translated/bom.js:277
+#: templates/js/translated/bom.js:294
msgid "Purchase Price Average"
msgstr ""
-#: templates/js/translated/bom.js:326 templates/js/translated/bom.js:412
+#: templates/js/translated/bom.js:342 templates/js/translated/bom.js:428
msgid "View BOM"
msgstr ""
-#: templates/js/translated/bom.js:386
+#: templates/js/translated/bom.js:402
msgid "Validate BOM Item"
msgstr ""
-#: templates/js/translated/bom.js:388
+#: templates/js/translated/bom.js:404
msgid "This line has been validated"
msgstr ""
-#: templates/js/translated/bom.js:390 templates/js/translated/bom.js:555
+#: templates/js/translated/bom.js:406 templates/js/translated/bom.js:569
msgid "Edit BOM Item"
msgstr ""
-#: templates/js/translated/bom.js:392 templates/js/translated/bom.js:539
+#: templates/js/translated/bom.js:408 templates/js/translated/bom.js:554
msgid "Delete BOM Item"
msgstr ""
-#: templates/js/translated/bom.js:483 templates/js/translated/build.js:458
-#: templates/js/translated/build.js:1250
+#: templates/js/translated/bom.js:499 templates/js/translated/build.js:483
+#: templates/js/translated/build.js:1267
msgid "No BOM items found"
msgstr ""
-#: templates/js/translated/build.js:42
+#: templates/js/translated/build.js:69
msgid "Edit Build Order"
msgstr ""
-#: templates/js/translated/build.js:68
+#: templates/js/translated/build.js:95
msgid "Create Build Order"
msgstr ""
-#: templates/js/translated/build.js:100
+#: templates/js/translated/build.js:127
msgid "Auto-allocate stock items to this output"
msgstr ""
-#: templates/js/translated/build.js:108
+#: templates/js/translated/build.js:135
msgid "Unallocate stock from build output"
msgstr ""
-#: templates/js/translated/build.js:118
+#: templates/js/translated/build.js:145
msgid "Complete build output"
msgstr ""
-#: templates/js/translated/build.js:127
+#: templates/js/translated/build.js:154
msgid "Delete build output"
msgstr ""
-#: templates/js/translated/build.js:222
+#: templates/js/translated/build.js:249
msgid "No build order allocations found"
msgstr ""
-#: templates/js/translated/build.js:260 templates/js/translated/order.js:471
+#: templates/js/translated/build.js:287 templates/js/translated/order.js:813
msgid "Location not specified"
msgstr ""
-#: templates/js/translated/build.js:364 templates/stock_table.html:20
+#: templates/js/translated/build.js:391 templates/stock_table.html:20
msgid "New Stock Item"
msgstr ""
-#: templates/js/translated/build.js:679
+#: templates/js/translated/build.js:702
msgid "Required Part"
msgstr ""
-#: templates/js/translated/build.js:700
+#: templates/js/translated/build.js:723
msgid "Quantity Per"
msgstr ""
-#: templates/js/translated/build.js:770 templates/js/translated/build.js:1214
+#: templates/js/translated/build.js:793 templates/js/translated/build.js:1231
#: templates/stock_table.html:59
msgid "Order stock"
msgstr ""
-#: templates/js/translated/build.js:823
+#: templates/js/translated/build.js:846
msgid "No builds matching query"
msgstr ""
-#: templates/js/translated/build.js:840 templates/js/translated/part.js:711
-#: templates/js/translated/part.js:956 templates/js/translated/stock.js:883
-#: templates/js/translated/stock.js:1336
+#: templates/js/translated/build.js:863 templates/js/translated/part.js:845
+#: templates/js/translated/part.js:1123 templates/js/translated/stock.js:783
+#: templates/js/translated/stock.js:1477
msgid "Select"
msgstr ""
-#: templates/js/translated/build.js:860
+#: templates/js/translated/build.js:883
msgid "Build order is overdue"
msgstr ""
-#: templates/js/translated/build.js:924 templates/js/translated/stock.js:1558
+#: templates/js/translated/build.js:944 templates/js/translated/stock.js:1696
msgid "No user information"
msgstr ""
-#: templates/js/translated/build.js:939
+#: templates/js/translated/build.js:956
msgid "No information"
msgstr ""
-#: templates/js/translated/build.js:989
+#: templates/js/translated/build.js:1007
msgid "No parts allocated for"
msgstr ""
-#: templates/js/translated/company.js:34
+#: templates/js/translated/company.js:65
msgid "Add Manufacturer"
msgstr ""
-#: templates/js/translated/company.js:47 templates/js/translated/company.js:136
+#: templates/js/translated/company.js:78 templates/js/translated/company.js:176
msgid "Add Manufacturer Part"
msgstr ""
-#: templates/js/translated/company.js:59
+#: templates/js/translated/company.js:99
msgid "Edit Manufacturer Part"
msgstr ""
-#: templates/js/translated/company.js:68
+#: templates/js/translated/company.js:108
msgid "Delete Manufacturer Part"
msgstr ""
-#: templates/js/translated/company.js:124 templates/js/translated/order.js:58
+#: templates/js/translated/company.js:164 templates/js/translated/order.js:86
msgid "Add Supplier"
msgstr ""
-#: templates/js/translated/company.js:152
+#: templates/js/translated/company.js:192
msgid "Add Supplier Part"
msgstr ""
-#: templates/js/translated/company.js:162
+#: templates/js/translated/company.js:207
msgid "Edit Supplier Part"
msgstr ""
-#: templates/js/translated/company.js:172
+#: templates/js/translated/company.js:217
msgid "Delete Supplier Part"
msgstr ""
-#: templates/js/translated/company.js:219
+#: templates/js/translated/company.js:264
msgid "Edit Company"
msgstr ""
-#: templates/js/translated/company.js:240
+#: templates/js/translated/company.js:285
msgid "Add new Company"
msgstr ""
-#: templates/js/translated/company.js:317
+#: templates/js/translated/company.js:362
msgid "Parts Supplied"
msgstr ""
-#: templates/js/translated/company.js:326
+#: templates/js/translated/company.js:371
msgid "Parts Manufactured"
msgstr ""
-#: templates/js/translated/company.js:339
+#: templates/js/translated/company.js:385
msgid "No company information found"
msgstr ""
-#: templates/js/translated/company.js:357
+#: templates/js/translated/company.js:404
msgid "The following manufacturer parts will be deleted"
msgstr ""
-#: templates/js/translated/company.js:374
+#: templates/js/translated/company.js:421
msgid "Delete Manufacturer Parts"
msgstr ""
-#: templates/js/translated/company.js:427
+#: templates/js/translated/company.js:475
msgid "No manufacturer parts found"
msgstr ""
-#: templates/js/translated/company.js:446
-#: templates/js/translated/company.js:696 templates/js/translated/part.js:288
-#: templates/js/translated/part.js:373
+#: templates/js/translated/company.js:495
+#: templates/js/translated/company.js:751 templates/js/translated/part.js:416
+#: templates/js/translated/part.js:501
msgid "Template part"
msgstr ""
-#: templates/js/translated/company.js:450
-#: templates/js/translated/company.js:700 templates/js/translated/part.js:292
-#: templates/js/translated/part.js:377
+#: templates/js/translated/company.js:499
+#: templates/js/translated/company.js:755 templates/js/translated/part.js:420
+#: templates/js/translated/part.js:505
msgid "Assembled part"
msgstr ""
-#: templates/js/translated/company.js:574 templates/js/translated/part.js:462
+#: templates/js/translated/company.js:626 templates/js/translated/part.js:593
msgid "No parameters found"
msgstr ""
-#: templates/js/translated/company.js:610 templates/js/translated/part.js:503
+#: templates/js/translated/company.js:663 templates/js/translated/part.js:635
msgid "Edit parameter"
msgstr ""
-#: templates/js/translated/company.js:611 templates/js/translated/part.js:504
+#: templates/js/translated/company.js:664 templates/js/translated/part.js:636
msgid "Delete parameter"
msgstr ""
-#: templates/js/translated/company.js:630 templates/js/translated/part.js:521
+#: templates/js/translated/company.js:683 templates/js/translated/part.js:653
msgid "Edit Parameter"
msgstr ""
-#: templates/js/translated/company.js:641 templates/js/translated/part.js:533
+#: templates/js/translated/company.js:694 templates/js/translated/part.js:665
msgid "Delete Parameter"
msgstr ""
-#: templates/js/translated/company.js:677
+#: templates/js/translated/company.js:731
msgid "No supplier parts found"
msgstr ""
-#: templates/js/translated/filters.js:167
-#: templates/js/translated/filters.js:404
+#: templates/js/translated/filters.js:178
+#: templates/js/translated/filters.js:402
msgid "true"
msgstr ""
-#: templates/js/translated/filters.js:171
-#: templates/js/translated/filters.js:405
+#: templates/js/translated/filters.js:182
+#: templates/js/translated/filters.js:403
msgid "false"
msgstr ""
-#: templates/js/translated/filters.js:193
+#: templates/js/translated/filters.js:204
msgid "Select filter"
msgstr ""
-#: templates/js/translated/filters.js:268
+#: templates/js/translated/filters.js:279
msgid "Reload data"
msgstr ""
-#: templates/js/translated/filters.js:270
+#: templates/js/translated/filters.js:281
msgid "Add new filter"
msgstr ""
-#: templates/js/translated/filters.js:273
+#: templates/js/translated/filters.js:284
msgid "Clear all filters"
msgstr ""
-#: templates/js/translated/filters.js:303
+#: templates/js/translated/filters.js:312
msgid "Create filter"
msgstr ""
-#: templates/js/translated/forms.js:289 templates/js/translated/forms.js:302
-#: templates/js/translated/forms.js:314 templates/js/translated/forms.js:326
+#: templates/js/translated/forms.js:323 templates/js/translated/forms.js:336
+#: templates/js/translated/forms.js:348 templates/js/translated/forms.js:360
msgid "Action Prohibited"
msgstr ""
-#: templates/js/translated/forms.js:290
+#: templates/js/translated/forms.js:324
msgid "Create operation not allowed"
msgstr ""
-#: templates/js/translated/forms.js:303
+#: templates/js/translated/forms.js:337
msgid "Update operation not allowed"
msgstr ""
-#: templates/js/translated/forms.js:315
+#: templates/js/translated/forms.js:349
msgid "Delete operation not allowed"
msgstr ""
-#: templates/js/translated/forms.js:327
+#: templates/js/translated/forms.js:361
msgid "View operation not allowed"
msgstr ""
-#: templates/js/translated/forms.js:865 templates/modals.html:21
+#: templates/js/translated/forms.js:889 templates/modals.html:21
#: templates/modals.html:47
msgid "Form errors exist"
msgstr ""
-#: templates/js/translated/forms.js:1258
+#: templates/js/translated/forms.js:1379
msgid "Searching"
msgstr ""
-#: templates/js/translated/forms.js:1423
+#: templates/js/translated/forms.js:1593
msgid "Clear input"
msgstr ""
-#: templates/js/translated/label.js:11
-msgid "Stock item(s) must be selected before printing labels"
+#: templates/js/translated/helpers.js:19
+msgid "YES"
msgstr ""
-#: templates/js/translated/label.js:29 templates/js/translated/label.js:79
-#: templates/js/translated/label.js:134
-msgid "No Labels Found"
+#: templates/js/translated/helpers.js:21
+msgid "NO"
msgstr ""
#: templates/js/translated/label.js:30
+msgid "Stock item(s) must be selected before printing labels"
+msgstr ""
+
+#: templates/js/translated/label.js:48 templates/js/translated/label.js:98
+#: templates/js/translated/label.js:153
+msgid "No Labels Found"
+msgstr ""
+
+#: templates/js/translated/label.js:49
msgid "No labels found which match selected stock item(s)"
msgstr ""
-#: templates/js/translated/label.js:61
+#: templates/js/translated/label.js:80
msgid "Select Stock Locations"
msgstr ""
-#: templates/js/translated/label.js:62
+#: templates/js/translated/label.js:81
msgid "Stock location(s) must be selected before printing labels"
msgstr ""
-#: templates/js/translated/label.js:80
+#: templates/js/translated/label.js:99
msgid "No labels found which match selected stock location(s)"
msgstr ""
-#: templates/js/translated/label.js:116
+#: templates/js/translated/label.js:135
msgid "Part(s) must be selected before printing labels"
msgstr ""
-#: templates/js/translated/label.js:135
+#: templates/js/translated/label.js:154
msgid "No labels found which match the selected part(s)"
msgstr ""
-#: templates/js/translated/label.js:209
+#: templates/js/translated/label.js:228
msgid "stock items selected"
msgstr ""
-#: templates/js/translated/label.js:217
+#: templates/js/translated/label.js:236
msgid "Select Label"
msgstr ""
-#: templates/js/translated/label.js:232
+#: templates/js/translated/label.js:251
msgid "Select Label Template"
msgstr ""
-#: templates/js/translated/modals.js:59 templates/js/translated/modals.js:103
-#: templates/js/translated/modals.js:593
+#: templates/js/translated/modals.js:76 templates/js/translated/modals.js:120
+#: templates/js/translated/modals.js:610
msgid "Cancel"
msgstr ""
-#: templates/js/translated/modals.js:60 templates/js/translated/modals.js:102
-#: templates/js/translated/modals.js:660 templates/js/translated/modals.js:956
+#: templates/js/translated/modals.js:77 templates/js/translated/modals.js:119
+#: templates/js/translated/modals.js:677 templates/js/translated/modals.js:970
#: templates/modals.html:30 templates/modals.html:55
msgid "Submit"
msgstr ""
-#: templates/js/translated/modals.js:101
+#: templates/js/translated/modals.js:118
msgid "Form Title"
msgstr ""
-#: templates/js/translated/modals.js:380
+#: templates/js/translated/modals.js:397
msgid "Waiting for server..."
msgstr ""
-#: templates/js/translated/modals.js:539
+#: templates/js/translated/modals.js:556
msgid "Show Error Information"
msgstr ""
-#: templates/js/translated/modals.js:592
+#: templates/js/translated/modals.js:609
msgid "Accept"
msgstr ""
-#: templates/js/translated/modals.js:649
+#: templates/js/translated/modals.js:666
msgid "Loading Data"
msgstr ""
-#: templates/js/translated/modals.js:907
+#: templates/js/translated/modals.js:922
msgid "Invalid response from server"
msgstr ""
-#: templates/js/translated/modals.js:907
+#: templates/js/translated/modals.js:922
msgid "Form data missing from server response"
msgstr ""
-#: templates/js/translated/modals.js:920
+#: templates/js/translated/modals.js:934
msgid "Error posting form data"
msgstr ""
-#: templates/js/translated/modals.js:1017
+#: templates/js/translated/modals.js:1031
msgid "JSON response missing form data"
msgstr ""
-#: templates/js/translated/modals.js:1032
+#: templates/js/translated/modals.js:1046
msgid "Error 400: Bad Request"
msgstr ""
-#: templates/js/translated/modals.js:1033
+#: templates/js/translated/modals.js:1047
msgid "Server returned error code 400"
msgstr ""
-#: templates/js/translated/modals.js:1056
+#: templates/js/translated/modals.js:1070
msgid "Error requesting form data"
msgstr ""
-#: templates/js/translated/model_renderers.js:38
+#: templates/js/translated/model_renderers.js:40
msgid "Company ID"
msgstr ""
-#: templates/js/translated/model_renderers.js:78
+#: templates/js/translated/model_renderers.js:82
msgid "Location ID"
msgstr ""
-#: templates/js/translated/model_renderers.js:95
+#: templates/js/translated/model_renderers.js:99
msgid "Build ID"
msgstr ""
-#: templates/js/translated/model_renderers.js:114
+#: templates/js/translated/model_renderers.js:119
msgid "Part ID"
msgstr ""
-#: templates/js/translated/model_renderers.js:163
+#: templates/js/translated/model_renderers.js:171
msgid "Category ID"
msgstr ""
-#: templates/js/translated/model_renderers.js:199
+#: templates/js/translated/model_renderers.js:208
msgid "Manufacturer Part ID"
msgstr ""
-#: templates/js/translated/model_renderers.js:227
+#: templates/js/translated/model_renderers.js:237
msgid "Supplier Part ID"
msgstr ""
-#: templates/js/translated/order.js:17
+#: templates/js/translated/order.js:45
msgid "Add Customer"
msgstr ""
-#: templates/js/translated/order.js:42
+#: templates/js/translated/order.js:70
msgid "Create Sales Order"
msgstr ""
-#: templates/js/translated/order.js:222
+#: templates/js/translated/order.js:295
msgid "No purchase orders found"
msgstr ""
-#: templates/js/translated/order.js:246 templates/js/translated/order.js:341
+#: templates/js/translated/order.js:320 templates/js/translated/order.js:682
msgid "Order is overdue"
msgstr ""
-#: templates/js/translated/order.js:318
+#: templates/js/translated/order.js:452
+msgid "No line items found"
+msgstr ""
+
+#: templates/js/translated/order.js:617
+msgid "Delete line item"
+msgstr ""
+
+#: templates/js/translated/order.js:621
+msgid "Receive line item"
+msgstr ""
+
+#: templates/js/translated/order.js:658
msgid "No sales orders found"
msgstr ""
-#: templates/js/translated/order.js:355
+#: templates/js/translated/order.js:696
msgid "Invalid Customer"
msgstr ""
-#: templates/js/translated/order.js:432
+#: templates/js/translated/order.js:774
msgid "No sales order allocations found"
msgstr ""
-#: templates/js/translated/part.js:10
-msgid "YES"
-msgstr ""
-
-#: templates/js/translated/part.js:12
-msgid "NO"
-msgstr ""
-
-#: templates/js/translated/part.js:22
-msgid "Add Part Category"
-msgstr ""
-
-#: templates/js/translated/part.js:53
+#: templates/js/translated/part.js:49
msgid "Part Attributes"
msgstr ""
-#: templates/js/translated/part.js:96
+#: templates/js/translated/part.js:53
msgid "Part Creation Options"
msgstr ""
-#: templates/js/translated/part.js:102
-msgid "Initial Stock Quantity"
-msgstr ""
-
-#: templates/js/translated/part.js:103
-msgid "Initialize part stock with specified quantity"
-msgstr ""
-
-#: templates/js/translated/part.js:109
-msgid "Copy Category Parameters"
-msgstr ""
-
-#: templates/js/translated/part.js:110
-msgid "Copy parameter templates from selected part category"
-msgstr ""
-
-#: templates/js/translated/part.js:120
+#: templates/js/translated/part.js:57
msgid "Part Duplication Options"
msgstr ""
-#: templates/js/translated/part.js:131
-msgid "Copy Image"
+#: templates/js/translated/part.js:61
+msgid "Supplier Options"
msgstr ""
-#: templates/js/translated/part.js:132
-msgid "Copy image from original part"
+#: templates/js/translated/part.js:75
+msgid "Add Part Category"
msgstr ""
-#: templates/js/translated/part.js:138
-msgid "Copy BOM"
+#: templates/js/translated/part.js:159
+msgid "Create Initial Stock"
msgstr ""
-#: templates/js/translated/part.js:139
-msgid "Copy bill of materials from original part"
+#: templates/js/translated/part.js:160
+msgid "Create an initial stock item for this part"
msgstr ""
-#: templates/js/translated/part.js:145
-msgid "Copy Parameters"
+#: templates/js/translated/part.js:167
+msgid "Initial Stock Quantity"
msgstr ""
-#: templates/js/translated/part.js:146
-msgid "Copy parameter data from original part"
+#: templates/js/translated/part.js:168
+msgid "Specify initial stock quantity for this part"
msgstr ""
-#: templates/js/translated/part.js:158
-msgid "Parent part category"
+#: templates/js/translated/part.js:175 templates/js/translated/stock.js:330
+msgid "Select destination stock location"
+msgstr ""
+
+#: templates/js/translated/part.js:186
+msgid "Copy Category Parameters"
+msgstr ""
+
+#: templates/js/translated/part.js:187
+msgid "Copy parameter templates from selected part category"
+msgstr ""
+
+#: templates/js/translated/part.js:195
+msgid "Add Supplier Data"
msgstr ""
#: templates/js/translated/part.js:196
+msgid "Create initial supplier data for this part"
+msgstr ""
+
+#: templates/js/translated/part.js:252
+msgid "Copy Image"
+msgstr ""
+
+#: templates/js/translated/part.js:253
+msgid "Copy image from original part"
+msgstr ""
+
+#: templates/js/translated/part.js:260
+msgid "Copy BOM"
+msgstr ""
+
+#: templates/js/translated/part.js:261
+msgid "Copy bill of materials from original part"
+msgstr ""
+
+#: templates/js/translated/part.js:268
+msgid "Copy Parameters"
+msgstr ""
+
+#: templates/js/translated/part.js:269
+msgid "Copy parameter data from original part"
+msgstr ""
+
+#: templates/js/translated/part.js:282
+msgid "Parent part category"
+msgstr ""
+
+#: templates/js/translated/part.js:323
msgid "Edit Part"
msgstr ""
-#: templates/js/translated/part.js:280 templates/js/translated/part.js:365
+#: templates/js/translated/part.js:408 templates/js/translated/part.js:493
msgid "Trackable part"
msgstr ""
-#: templates/js/translated/part.js:284 templates/js/translated/part.js:369
+#: templates/js/translated/part.js:412 templates/js/translated/part.js:497
msgid "Virtual part"
msgstr ""
-#: templates/js/translated/part.js:296
+#: templates/js/translated/part.js:424
msgid "Starred part"
msgstr ""
-#: templates/js/translated/part.js:300
+#: templates/js/translated/part.js:428
msgid "Salable part"
msgstr ""
-#: templates/js/translated/part.js:414
+#: templates/js/translated/part.js:543
msgid "No variants found"
msgstr ""
-#: templates/js/translated/part.js:601 templates/js/translated/part.js:840
+#: templates/js/translated/part.js:732 templates/js/translated/part.js:994
msgid "No parts found"
msgstr ""
-#: templates/js/translated/part.js:779
+#: templates/js/translated/part.js:921
msgid "No category"
msgstr ""
-#: templates/js/translated/part.js:797
-#: templates/js/translated/table_filters.js:337
+#: templates/js/translated/part.js:944
+#: templates/js/translated/table_filters.js:350
msgid "Low stock"
msgstr ""
-#: templates/js/translated/part.js:981 templates/js/translated/stock.js:1360
+#: templates/js/translated/part.js:1148 templates/js/translated/stock.js:1501
msgid "Path"
msgstr ""
-#: templates/js/translated/part.js:1024
+#: templates/js/translated/part.js:1191
msgid "No test templates matching query"
msgstr ""
-#: templates/js/translated/part.js:1075 templates/js/translated/stock.js:443
+#: templates/js/translated/part.js:1242 templates/js/translated/stock.js:514
msgid "Edit test result"
msgstr ""
-#: templates/js/translated/part.js:1076 templates/js/translated/stock.js:444
+#: templates/js/translated/part.js:1243 templates/js/translated/stock.js:515
msgid "Delete test result"
msgstr ""
-#: templates/js/translated/part.js:1082
+#: templates/js/translated/part.js:1249
msgid "This test is defined for a parent part"
msgstr ""
-#: templates/js/translated/part.js:1107
+#: templates/js/translated/part.js:1274
#, python-brace-format
msgid "No ${human_name} information found"
msgstr ""
-#: templates/js/translated/part.js:1160
+#: templates/js/translated/part.js:1329
#, python-brace-format
msgid "Edit ${human_name}"
msgstr ""
-#: templates/js/translated/part.js:1161
+#: templates/js/translated/part.js:1330
#, python-brace-format
msgid "Delete ${human_name}"
msgstr ""
-#: templates/js/translated/part.js:1261
+#: templates/js/translated/part.js:1431
msgid "Single Price"
msgstr ""
-#: templates/js/translated/part.js:1280
+#: templates/js/translated/part.js:1450
msgid "Single Price Difference"
msgstr ""
-#: templates/js/translated/stock.js:9
+#: templates/js/translated/stock.js:66
msgid "Parent stock location"
msgstr ""
-#: templates/js/translated/stock.js:39
+#: templates/js/translated/stock.js:96
msgid "Export Stock"
msgstr ""
-#: templates/js/translated/stock.js:42
+#: templates/js/translated/stock.js:99
msgid "Format"
msgstr ""
-#: templates/js/translated/stock.js:43
+#: templates/js/translated/stock.js:100
msgid "Select file format"
msgstr ""
-#: templates/js/translated/stock.js:55
+#: templates/js/translated/stock.js:124
msgid "Include Sublocations"
msgstr ""
-#: templates/js/translated/stock.js:56
+#: templates/js/translated/stock.js:125
msgid "Include stock items in sublocations"
msgstr ""
-#: templates/js/translated/stock.js:98
+#: templates/js/translated/stock.js:167
msgid "Transfer Stock"
msgstr ""
-#: templates/js/translated/stock.js:99
+#: templates/js/translated/stock.js:168
msgid "Move"
msgstr ""
-#: templates/js/translated/stock.js:105
+#: templates/js/translated/stock.js:174
msgid "Count Stock"
msgstr ""
-#: templates/js/translated/stock.js:106
+#: templates/js/translated/stock.js:175
msgid "Count"
msgstr ""
-#: templates/js/translated/stock.js:110
+#: templates/js/translated/stock.js:179
msgid "Remove Stock"
msgstr ""
-#: templates/js/translated/stock.js:111
+#: templates/js/translated/stock.js:180
msgid "Take"
msgstr ""
-#: templates/js/translated/stock.js:115
+#: templates/js/translated/stock.js:184
msgid "Add Stock"
msgstr ""
-#: templates/js/translated/stock.js:116 users/models.py:190
+#: templates/js/translated/stock.js:185 users/models.py:190
msgid "Add"
msgstr ""
-#: templates/js/translated/stock.js:120 templates/stock_table.html:63
+#: templates/js/translated/stock.js:189 templates/stock_table.html:63
msgid "Delete Stock"
msgstr ""
-#: templates/js/translated/stock.js:209
+#: templates/js/translated/stock.js:278
msgid "Quantity cannot be adjusted for serialized stock"
msgstr ""
-#: templates/js/translated/stock.js:209
+#: templates/js/translated/stock.js:278
msgid "Specify stock quantity"
msgstr ""
-#: templates/js/translated/stock.js:245
+#: templates/js/translated/stock.js:314
msgid "You must select at least one available stock item"
msgstr ""
-#: templates/js/translated/stock.js:261
-msgid "Select destination stock location"
-msgstr ""
-
-#: templates/js/translated/stock.js:269
+#: templates/js/translated/stock.js:339
msgid "Stock transaction notes"
msgstr ""
-#: templates/js/translated/stock.js:406
+#: templates/js/translated/stock.js:477
msgid "PASS"
msgstr ""
-#: templates/js/translated/stock.js:408
+#: templates/js/translated/stock.js:479
msgid "FAIL"
msgstr ""
-#: templates/js/translated/stock.js:413
+#: templates/js/translated/stock.js:484
msgid "NO RESULT"
msgstr ""
-#: templates/js/translated/stock.js:439
+#: templates/js/translated/stock.js:510
msgid "Add test result"
msgstr ""
-#: templates/js/translated/stock.js:465
+#: templates/js/translated/stock.js:536
msgid "No test results found"
msgstr ""
-#: templates/js/translated/stock.js:513
+#: templates/js/translated/stock.js:584
msgid "Test Date"
msgstr ""
-#: templates/js/translated/stock.js:621
+#: templates/js/translated/stock.js:691
msgid "In production"
msgstr ""
-#: templates/js/translated/stock.js:625
+#: templates/js/translated/stock.js:695
msgid "Installed in Stock Item"
msgstr ""
-#: templates/js/translated/stock.js:633
+#: templates/js/translated/stock.js:703
msgid "Assigned to Sales Order"
msgstr ""
-#: templates/js/translated/stock.js:709
-msgid "No stock items matching query"
-msgstr ""
-
-#: templates/js/translated/stock.js:729
-msgid "items"
-msgstr ""
-
-#: templates/js/translated/stock.js:821
-msgid "batches"
-msgstr ""
-
-#: templates/js/translated/stock.js:848
-msgid "locations"
-msgstr ""
-
-#: templates/js/translated/stock.js:850
-msgid "Undefined location"
-msgstr ""
-
-#: templates/js/translated/stock.js:951
+#: templates/js/translated/stock.js:865
msgid "Stock item is in production"
msgstr ""
-#: templates/js/translated/stock.js:956
+#: templates/js/translated/stock.js:870
msgid "Stock item assigned to sales order"
msgstr ""
-#: templates/js/translated/stock.js:959
+#: templates/js/translated/stock.js:873
msgid "Stock item assigned to customer"
msgstr ""
-#: templates/js/translated/stock.js:963
+#: templates/js/translated/stock.js:877
msgid "Stock item has expired"
msgstr ""
-#: templates/js/translated/stock.js:965
+#: templates/js/translated/stock.js:879
msgid "Stock item will expire soon"
msgstr ""
-#: templates/js/translated/stock.js:969
+#: templates/js/translated/stock.js:883
msgid "Stock item has been allocated"
msgstr ""
-#: templates/js/translated/stock.js:973
+#: templates/js/translated/stock.js:887
msgid "Stock item has been installed in another item"
msgstr ""
-#: templates/js/translated/stock.js:980
+#: templates/js/translated/stock.js:894
msgid "Stock item has been rejected"
msgstr ""
-#: templates/js/translated/stock.js:984
+#: templates/js/translated/stock.js:896
msgid "Stock item is lost"
msgstr ""
-#: templates/js/translated/stock.js:987
+#: templates/js/translated/stock.js:898
msgid "Stock item is destroyed"
msgstr ""
-#: templates/js/translated/stock.js:991
-#: templates/js/translated/table_filters.js:148
+#: templates/js/translated/stock.js:902
+#: templates/js/translated/table_filters.js:161
msgid "Depleted"
msgstr ""
-#: templates/js/translated/stock.js:1020
+#: templates/js/translated/stock.js:956
msgid "Stocktake"
msgstr ""
-#: templates/js/translated/stock.js:1073
+#: templates/js/translated/stock.js:1029
msgid "Supplier part not specified"
msgstr ""
-#: templates/js/translated/stock.js:1223
+#: templates/js/translated/stock.js:1067
+msgid "No stock items matching query"
+msgstr ""
+
+#: templates/js/translated/stock.js:1088 templates/js/translated/stock.js:1136
+msgid "items"
+msgstr ""
+
+#: templates/js/translated/stock.js:1176
+msgid "batches"
+msgstr ""
+
+#: templates/js/translated/stock.js:1203
+msgid "locations"
+msgstr ""
+
+#: templates/js/translated/stock.js:1205
+msgid "Undefined location"
+msgstr ""
+
+#: templates/js/translated/stock.js:1364
msgid "Stock Status"
msgstr ""
-#: templates/js/translated/stock.js:1238
+#: templates/js/translated/stock.js:1379
msgid "Set Stock Status"
msgstr ""
-#: templates/js/translated/stock.js:1252
+#: templates/js/translated/stock.js:1393
msgid "Select Status Code"
msgstr ""
-#: templates/js/translated/stock.js:1253
+#: templates/js/translated/stock.js:1394
msgid "Status code must be selected"
msgstr ""
-#: templates/js/translated/stock.js:1392
+#: templates/js/translated/stock.js:1533
msgid "Invalid date"
msgstr ""
-#: templates/js/translated/stock.js:1439
+#: templates/js/translated/stock.js:1580
msgid "Location no longer exists"
msgstr ""
-#: templates/js/translated/stock.js:1458
+#: templates/js/translated/stock.js:1599
msgid "Purchase order no longer exists"
msgstr ""
-#: templates/js/translated/stock.js:1477
+#: templates/js/translated/stock.js:1618
msgid "Customer no longer exists"
msgstr ""
-#: templates/js/translated/stock.js:1495
+#: templates/js/translated/stock.js:1636
msgid "Stock item no longer exists"
msgstr ""
-#: templates/js/translated/stock.js:1518
+#: templates/js/translated/stock.js:1659
msgid "Added"
msgstr ""
-#: templates/js/translated/stock.js:1526
+#: templates/js/translated/stock.js:1667
msgid "Removed"
msgstr ""
-#: templates/js/translated/stock.js:1570
+#: templates/js/translated/stock.js:1708
msgid "Edit tracking entry"
msgstr ""
-#: templates/js/translated/stock.js:1571
+#: templates/js/translated/stock.js:1709
msgid "Delete tracking entry"
msgstr ""
-#: templates/js/translated/stock.js:1715
+#: templates/js/translated/stock.js:1833
msgid "No installed items"
msgstr ""
-#: templates/js/translated/stock.js:1738
+#: templates/js/translated/stock.js:1856
msgid "Serial"
msgstr ""
-#: templates/js/translated/stock.js:1766
+#: templates/js/translated/stock.js:1884
msgid "Uninstall Stock Item"
msgstr ""
-#: templates/js/translated/table_filters.js:43
+#: templates/js/translated/table_filters.js:56
msgid "Trackable Part"
msgstr ""
-#: templates/js/translated/table_filters.js:47
+#: templates/js/translated/table_filters.js:60
msgid "Assembled Part"
msgstr ""
-#: templates/js/translated/table_filters.js:51
+#: templates/js/translated/table_filters.js:64
msgid "Validated"
msgstr ""
-#: templates/js/translated/table_filters.js:59
+#: templates/js/translated/table_filters.js:72
msgid "Allow Variant Stock"
msgstr ""
-#: templates/js/translated/table_filters.js:79
-#: templates/js/translated/table_filters.js:143
+#: templates/js/translated/table_filters.js:92
+#: templates/js/translated/table_filters.js:156
msgid "Include sublocations"
msgstr ""
-#: templates/js/translated/table_filters.js:80
+#: templates/js/translated/table_filters.js:93
msgid "Include locations"
msgstr ""
-#: templates/js/translated/table_filters.js:90
-#: templates/js/translated/table_filters.js:91
-#: templates/js/translated/table_filters.js:314
+#: templates/js/translated/table_filters.js:103
+#: templates/js/translated/table_filters.js:104
+#: templates/js/translated/table_filters.js:327
msgid "Include subcategories"
msgstr ""
-#: templates/js/translated/table_filters.js:101
-#: templates/js/translated/table_filters.js:178
+#: templates/js/translated/table_filters.js:114
+#: templates/js/translated/table_filters.js:191
msgid "Is Serialized"
msgstr ""
-#: templates/js/translated/table_filters.js:104
-#: templates/js/translated/table_filters.js:185
+#: templates/js/translated/table_filters.js:117
+#: templates/js/translated/table_filters.js:198
msgid "Serial number GTE"
msgstr ""
-#: templates/js/translated/table_filters.js:105
-#: templates/js/translated/table_filters.js:186
+#: templates/js/translated/table_filters.js:118
+#: templates/js/translated/table_filters.js:199
msgid "Serial number greater than or equal to"
msgstr ""
-#: templates/js/translated/table_filters.js:108
-#: templates/js/translated/table_filters.js:189
+#: templates/js/translated/table_filters.js:121
+#: templates/js/translated/table_filters.js:202
msgid "Serial number LTE"
msgstr ""
-#: templates/js/translated/table_filters.js:109
-#: templates/js/translated/table_filters.js:190
+#: templates/js/translated/table_filters.js:122
+#: templates/js/translated/table_filters.js:203
msgid "Serial number less than or equal to"
msgstr ""
-#: templates/js/translated/table_filters.js:112
-#: templates/js/translated/table_filters.js:113
-#: templates/js/translated/table_filters.js:181
-#: templates/js/translated/table_filters.js:182
+#: templates/js/translated/table_filters.js:125
+#: templates/js/translated/table_filters.js:126
+#: templates/js/translated/table_filters.js:194
+#: templates/js/translated/table_filters.js:195
msgid "Serial number"
msgstr ""
-#: templates/js/translated/table_filters.js:117
-#: templates/js/translated/table_filters.js:199
+#: templates/js/translated/table_filters.js:130
+#: templates/js/translated/table_filters.js:212
msgid "Batch code"
msgstr ""
-#: templates/js/translated/table_filters.js:128
-#: templates/js/translated/table_filters.js:304
+#: templates/js/translated/table_filters.js:141
+#: templates/js/translated/table_filters.js:317
msgid "Active parts"
msgstr ""
-#: templates/js/translated/table_filters.js:129
+#: templates/js/translated/table_filters.js:142
msgid "Show stock for active parts"
msgstr ""
-#: templates/js/translated/table_filters.js:134
+#: templates/js/translated/table_filters.js:147
msgid "Part is an assembly"
msgstr ""
-#: templates/js/translated/table_filters.js:138
+#: templates/js/translated/table_filters.js:151
msgid "Is allocated"
msgstr ""
-#: templates/js/translated/table_filters.js:139
+#: templates/js/translated/table_filters.js:152
msgid "Item has been allocated"
msgstr ""
-#: templates/js/translated/table_filters.js:144
+#: templates/js/translated/table_filters.js:157
msgid "Include stock in sublocations"
msgstr ""
-#: templates/js/translated/table_filters.js:149
+#: templates/js/translated/table_filters.js:162
msgid "Show stock items which are depleted"
msgstr ""
-#: templates/js/translated/table_filters.js:154
+#: templates/js/translated/table_filters.js:167
msgid "Show items which are in stock"
msgstr ""
-#: templates/js/translated/table_filters.js:158
+#: templates/js/translated/table_filters.js:171
msgid "In Production"
msgstr ""
-#: templates/js/translated/table_filters.js:159
+#: templates/js/translated/table_filters.js:172
msgid "Show items which are in production"
msgstr ""
-#: templates/js/translated/table_filters.js:163
+#: templates/js/translated/table_filters.js:176
msgid "Include Variants"
msgstr ""
-#: templates/js/translated/table_filters.js:164
+#: templates/js/translated/table_filters.js:177
msgid "Include stock items for variant parts"
msgstr ""
-#: templates/js/translated/table_filters.js:168
+#: templates/js/translated/table_filters.js:181
msgid "Installed"
msgstr ""
-#: templates/js/translated/table_filters.js:169
+#: templates/js/translated/table_filters.js:182
msgid "Show stock items which are installed in another item"
msgstr ""
-#: templates/js/translated/table_filters.js:174
+#: templates/js/translated/table_filters.js:187
msgid "Show items which have been assigned to a customer"
msgstr ""
-#: templates/js/translated/table_filters.js:194
-#: templates/js/translated/table_filters.js:195
+#: templates/js/translated/table_filters.js:207
+#: templates/js/translated/table_filters.js:208
msgid "Stock status"
msgstr ""
-#: templates/js/translated/table_filters.js:203
+#: templates/js/translated/table_filters.js:216
msgid "Has purchase price"
msgstr ""
-#: templates/js/translated/table_filters.js:204
+#: templates/js/translated/table_filters.js:217
msgid "Show stock items which have a purchase price set"
msgstr ""
-#: templates/js/translated/table_filters.js:213
+#: templates/js/translated/table_filters.js:226
msgid "Show stock items which have expired"
msgstr ""
-#: templates/js/translated/table_filters.js:219
+#: templates/js/translated/table_filters.js:232
msgid "Show stock which is close to expiring"
msgstr ""
-#: templates/js/translated/table_filters.js:250
+#: templates/js/translated/table_filters.js:263
msgid "Build status"
msgstr ""
-#: templates/js/translated/table_filters.js:269
-#: templates/js/translated/table_filters.js:286
+#: templates/js/translated/table_filters.js:282
+#: templates/js/translated/table_filters.js:299
msgid "Order status"
msgstr ""
-#: templates/js/translated/table_filters.js:274
-#: templates/js/translated/table_filters.js:291
+#: templates/js/translated/table_filters.js:287
+#: templates/js/translated/table_filters.js:304
msgid "Outstanding"
msgstr ""
-#: templates/js/translated/table_filters.js:315
+#: templates/js/translated/table_filters.js:328
msgid "Include parts in subcategories"
msgstr ""
-#: templates/js/translated/table_filters.js:319
+#: templates/js/translated/table_filters.js:332
msgid "Has IPN"
msgstr ""
-#: templates/js/translated/table_filters.js:320
+#: templates/js/translated/table_filters.js:333
msgid "Part has internal part number"
msgstr ""
-#: templates/js/translated/table_filters.js:325
+#: templates/js/translated/table_filters.js:338
msgid "Show active parts"
msgstr ""
-#: templates/js/translated/table_filters.js:333
+#: templates/js/translated/table_filters.js:346
msgid "Stock available"
msgstr ""
-#: templates/js/translated/table_filters.js:349
+#: templates/js/translated/table_filters.js:362
msgid "Starred"
msgstr ""
-#: templates/js/translated/table_filters.js:361
+#: templates/js/translated/table_filters.js:374
msgid "Purchasable"
msgstr ""
-#: templates/js/translated/tables.js:342
+#: templates/js/translated/tables.js:357
msgid "Loading data"
msgstr ""
-#: templates/js/translated/tables.js:345
+#: templates/js/translated/tables.js:360
msgid "rows per page"
msgstr ""
-#: templates/js/translated/tables.js:348
+#: templates/js/translated/tables.js:363
msgid "Showing"
msgstr ""
-#: templates/js/translated/tables.js:348
+#: templates/js/translated/tables.js:363
msgid "to"
msgstr ""
-#: templates/js/translated/tables.js:348
+#: templates/js/translated/tables.js:363
msgid "of"
msgstr ""
-#: templates/js/translated/tables.js:348
+#: templates/js/translated/tables.js:363
msgid "rows"
msgstr ""
-#: templates/js/translated/tables.js:354
+#: templates/js/translated/tables.js:369
msgid "No matching results"
msgstr ""
-#: templates/js/translated/tables.js:357
+#: templates/js/translated/tables.js:372
msgid "Hide/Show pagination"
msgstr ""
-#: templates/js/translated/tables.js:360
+#: templates/js/translated/tables.js:375
msgid "Refresh"
msgstr ""
-#: templates/js/translated/tables.js:363
+#: templates/js/translated/tables.js:378
msgid "Toggle"
msgstr ""
-#: templates/js/translated/tables.js:366
+#: templates/js/translated/tables.js:381
msgid "Columns"
msgstr ""
-#: templates/js/translated/tables.js:369
+#: templates/js/translated/tables.js:384
msgid "All"
msgstr ""
-#: templates/navbar.html:13
+#: templates/navbar.html:19
msgid "Toggle navigation"
msgstr ""
-#: templates/navbar.html:33
+#: templates/navbar.html:39
msgid "Buy"
msgstr ""
-#: templates/navbar.html:43
+#: templates/navbar.html:51
msgid "Sell"
msgstr ""
-#: templates/navbar.html:55
-msgid "Scan Barcode"
-msgstr ""
-
-#: templates/navbar.html:77 users/models.py:39
+#: templates/navbar.html:87 users/models.py:39
msgid "Admin"
msgstr ""
-#: templates/navbar.html:79
+#: templates/navbar.html:89
msgid "Logout"
msgstr ""
-#: templates/navbar.html:81 templates/registration/login.html:89
+#: templates/navbar.html:91 templates/registration/login.html:89
msgid "Login"
msgstr ""
-#: templates/navbar.html:104
+#: templates/navbar.html:114
msgid "About InvenTree"
msgstr ""
diff --git a/InvenTree/locale/ja/LC_MESSAGES/django.po b/InvenTree/locale/ja/LC_MESSAGES/django.po
index 9c938bc212..60ece0791e 100644
--- a/InvenTree/locale/ja/LC_MESSAGES/django.po
+++ b/InvenTree/locale/ja/LC_MESSAGES/django.po
@@ -2,8 +2,8 @@ msgid ""
msgstr ""
"Project-Id-Version: inventree\n"
"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2021-08-07 15:14+0000\n"
-"PO-Revision-Date: 2021-08-07 15:30\n"
+"POT-Creation-Date: 2021-09-12 13:15+0000\n"
+"PO-Revision-Date: 2021-09-12 13:44\n"
"Last-Translator: \n"
"Language-Team: Japanese\n"
"Language: ja_JP\n"
@@ -36,7 +36,7 @@ msgstr "日付を入力する"
#: InvenTree/forms.py:111 build/forms.py:102 build/forms.py:123
#: build/forms.py:145 build/forms.py:169 build/forms.py:185 build/forms.py:227
#: order/forms.py:30 order/forms.py:41 order/forms.py:52 order/forms.py:63
-#: order/forms.py:74 part/forms.py:108 templates/js/translated/forms.js:545
+#: order/forms.py:74 part/forms.py:108 templates/js/translated/forms.js:564
msgid "Confirm"
msgstr "確認"
@@ -73,7 +73,7 @@ msgstr "カテゴリの選択"
msgid "Duplicate serial: {n}"
msgstr ""
-#: InvenTree/helpers.py:408 order/models.py:315 order/models.py:425
+#: InvenTree/helpers.py:408 order/models.py:315 order/models.py:430
#: stock/views.py:1363
msgid "Invalid quantity provided"
msgstr "数量コードが無効です"
@@ -102,152 +102,181 @@ msgstr "シリアル番号が見つかりません"
msgid "Number of unique serial number ({s}) must match quantity ({q})"
msgstr ""
-#: InvenTree/models.py:61 stock/models.py:1815
+#: InvenTree/models.py:66 stock/models.py:1826
msgid "Attachment"
msgstr "添付ファイル"
-#: InvenTree/models.py:62
+#: InvenTree/models.py:67
msgid "Select file to attach"
msgstr "添付ファイルを選択"
-#: InvenTree/models.py:64 templates/js/translated/attachment.js:52
+#: InvenTree/models.py:69 templates/js/translated/attachment.js:87
msgid "Comment"
msgstr "コメント:"
-#: InvenTree/models.py:64
+#: InvenTree/models.py:69
msgid "File comment"
msgstr "ファイルコメント"
-#: InvenTree/models.py:70 InvenTree/models.py:71 common/models.py:969
-#: common/models.py:970 part/models.py:2035
+#: InvenTree/models.py:75 InvenTree/models.py:76 common/models.py:993
+#: common/models.py:994 part/models.py:2051
#: report/templates/report/inventree_test_report_base.html:91
-#: templates/js/translated/stock.js:1549
+#: templates/js/translated/stock.js:1690
msgid "User"
msgstr "ユーザー"
-#: InvenTree/models.py:74
+#: InvenTree/models.py:79
msgid "upload date"
msgstr "アップロード日時"
-#: InvenTree/models.py:113
+#: InvenTree/models.py:99
+msgid "Filename must not be empty"
+msgstr ""
+
+#: InvenTree/models.py:122
+msgid "Invalid attachment directory"
+msgstr ""
+
+#: InvenTree/models.py:132
+#, python-brace-format
+msgid "Filename contains illegal character '{c}'"
+msgstr ""
+
+#: InvenTree/models.py:135
+msgid "Filename missing extension"
+msgstr ""
+
+#: InvenTree/models.py:142
+msgid "Attachment with this filename already exists"
+msgstr ""
+
+#: InvenTree/models.py:149
+msgid "Error renaming file"
+msgstr ""
+
+#: InvenTree/models.py:184
msgid "Invalid choice"
msgstr "無効な選択です"
-#: InvenTree/models.py:129 InvenTree/models.py:130 company/models.py:412
-#: label/models.py:112 part/models.py:656 part/models.py:2196
-#: part/templates/part/part_base.html:233 report/models.py:181
+#: InvenTree/models.py:200 InvenTree/models.py:201 company/models.py:414
+#: label/models.py:112 part/models.py:658 part/models.py:2212
+#: part/templates/part/part_base.html:241 report/models.py:181
#: templates/InvenTree/search.html:137 templates/InvenTree/search.html:289
-#: templates/js/translated/company.js:583 templates/js/translated/part.js:338
-#: templates/js/translated/part.js:471 templates/js/translated/part.js:963
-#: templates/js/translated/stock.js:1342
+#: templates/js/translated/company.js:636 templates/js/translated/part.js:466
+#: templates/js/translated/part.js:603 templates/js/translated/part.js:1130
+#: templates/js/translated/stock.js:1483
msgid "Name"
msgstr "お名前"
-#: InvenTree/models.py:136 build/models.py:187
-#: build/templates/build/detail.html:24 company/models.py:351
-#: company/models.py:519 company/templates/company/manufacturer_part.html:76
+#: InvenTree/models.py:207 build/models.py:187
+#: build/templates/build/detail.html:24 company/models.py:353
+#: company/models.py:569 company/templates/company/manufacturer_part.html:76
#: company/templates/company/supplier_part.html:75 label/models.py:119
-#: order/models.py:158 order/templates/order/purchase_order_detail.html:312
-#: part/models.py:679 part/templates/part/part_base.html:238
+#: order/models.py:158 part/models.py:681
+#: part/templates/part/part_base.html:246
#: part/templates/part/set_category.html:14 report/models.py:194
#: report/models.py:551 report/models.py:590
#: report/templates/report/inventree_build_order_base.html:118
#: templates/InvenTree/search.html:144 templates/InvenTree/search.html:224
#: templates/InvenTree/search.html:296
#: templates/InvenTree/settings/header.html:9
-#: templates/js/translated/bom.js:210 templates/js/translated/build.js:868
-#: templates/js/translated/build.js:1162 templates/js/translated/company.js:299
-#: templates/js/translated/company.js:497
-#: templates/js/translated/company.js:779 templates/js/translated/order.js:267
-#: templates/js/translated/order.js:369 templates/js/translated/part.js:397
-#: templates/js/translated/part.js:581 templates/js/translated/part.js:758
-#: templates/js/translated/part.js:975 templates/js/translated/part.js:1043
-#: templates/js/translated/stock.js:926 templates/js/translated/stock.js:1354
-#: templates/js/translated/stock.js:1399
+#: templates/js/translated/bom.js:230 templates/js/translated/build.js:891
+#: templates/js/translated/build.js:1179 templates/js/translated/company.js:344
+#: templates/js/translated/company.js:546
+#: templates/js/translated/company.js:834 templates/js/translated/order.js:341
+#: templates/js/translated/order.js:486 templates/js/translated/order.js:710
+#: templates/js/translated/part.js:525 templates/js/translated/part.js:713
+#: templates/js/translated/part.js:902 templates/js/translated/part.js:1142
+#: templates/js/translated/part.js:1210 templates/js/translated/stock.js:840
+#: templates/js/translated/stock.js:1495 templates/js/translated/stock.js:1540
msgid "Description"
msgstr "説明"
-#: InvenTree/models.py:137
+#: InvenTree/models.py:208
msgid "Description (optional)"
msgstr "説明 (オプション)"
-#: InvenTree/models.py:145
+#: InvenTree/models.py:216
msgid "parent"
msgstr "親"
-#: InvenTree/serializers.py:52 part/models.py:2438
+#: InvenTree/serializers.py:55 part/models.py:2454
msgid "Must be a valid number"
msgstr "有効な数字でなければなりません"
-#: InvenTree/settings.py:518
+#: InvenTree/serializers.py:244
+msgid "Filename"
+msgstr ""
+
+#: InvenTree/settings.py:523
msgid "German"
msgstr "ドイツ語"
-#: InvenTree/settings.py:519
+#: InvenTree/settings.py:524
msgid "Greek"
msgstr ""
-#: InvenTree/settings.py:520
+#: InvenTree/settings.py:525
msgid "English"
msgstr "英語"
-#: InvenTree/settings.py:521
+#: InvenTree/settings.py:526
msgid "Spanish"
msgstr ""
-#: InvenTree/settings.py:522
+#: InvenTree/settings.py:527
msgid "French"
msgstr "フランス語"
-#: InvenTree/settings.py:523
+#: InvenTree/settings.py:528
msgid "Hebrew"
msgstr ""
-#: InvenTree/settings.py:524
+#: InvenTree/settings.py:529
msgid "Italian"
msgstr ""
-#: InvenTree/settings.py:525
+#: InvenTree/settings.py:530
msgid "Japanese"
msgstr ""
-#: InvenTree/settings.py:526
+#: InvenTree/settings.py:531
msgid "Korean"
msgstr ""
-#: InvenTree/settings.py:527
+#: InvenTree/settings.py:532
msgid "Dutch"
msgstr ""
-#: InvenTree/settings.py:528
+#: InvenTree/settings.py:533
msgid "Norwegian"
msgstr ""
-#: InvenTree/settings.py:529
+#: InvenTree/settings.py:534
msgid "Polish"
msgstr "ポーランド語"
-#: InvenTree/settings.py:530
+#: InvenTree/settings.py:535
msgid "Russian"
msgstr ""
-#: InvenTree/settings.py:531
+#: InvenTree/settings.py:536
msgid "Swedish"
msgstr ""
-#: InvenTree/settings.py:532
+#: InvenTree/settings.py:537
msgid "Thai"
msgstr ""
-#: InvenTree/settings.py:533
+#: InvenTree/settings.py:538
msgid "Turkish"
msgstr "トルコ語"
-#: InvenTree/settings.py:534
+#: InvenTree/settings.py:539
msgid "Vietnamese"
msgstr ""
-#: InvenTree/settings.py:535
+#: InvenTree/settings.py:540
msgid "Chinese"
msgstr ""
@@ -372,7 +401,7 @@ msgstr ""
msgid "Split child item"
msgstr ""
-#: InvenTree/status_codes.py:294 templates/js/translated/table_filters.js:173
+#: InvenTree/status_codes.py:294 templates/js/translated/table_filters.js:186
msgid "Sent to customer"
msgstr ""
@@ -432,27 +461,27 @@ msgstr ""
msgid "Overage must be an integer value or a percentage"
msgstr ""
-#: InvenTree/views.py:612
+#: InvenTree/views.py:610
msgid "Delete Item"
msgstr ""
-#: InvenTree/views.py:661
+#: InvenTree/views.py:659
msgid "Check box to confirm item deletion"
msgstr ""
-#: InvenTree/views.py:676 templates/InvenTree/settings/user.html:14
+#: InvenTree/views.py:674 templates/InvenTree/settings/user.html:14
msgid "Edit User Information"
msgstr ""
-#: InvenTree/views.py:687 templates/InvenTree/settings/user.html:18
+#: InvenTree/views.py:685 templates/InvenTree/settings/user.html:18
msgid "Set Password"
msgstr ""
-#: InvenTree/views.py:706
+#: InvenTree/views.py:704
msgid "Password fields must match"
msgstr ""
-#: InvenTree/views.py:907 templates/navbar.html:95
+#: InvenTree/views.py:910 templates/navbar.html:105
msgid "System Information"
msgstr ""
@@ -509,8 +538,8 @@ msgstr ""
#: order/templates/order/order_base.html:124
#: order/templates/order/sales_order_base.html:119
#: report/templates/report/inventree_build_order_base.html:126
-#: templates/js/translated/build.js:945 templates/js/translated/order.js:284
-#: templates/js/translated/order.js:387
+#: templates/js/translated/build.js:962 templates/js/translated/order.js:358
+#: templates/js/translated/order.js:728
msgid "Target Date"
msgstr ""
@@ -522,19 +551,18 @@ msgstr ""
#: build/templates/build/allocation_card.html:23
#: build/templates/build/auto_allocate.html:17
#: build/templates/build/build_base.html:133
-#: build/templates/build/detail.html:34 common/models.py:1001
+#: build/templates/build/detail.html:34 common/models.py:1025
#: company/forms.py:42 company/templates/company/supplier_part.html:226
-#: order/forms.py:120 order/forms.py:142 order/forms.py:159 order/models.py:706
-#: order/models.py:952 order/templates/order/order_wizard/match_parts.html:30
+#: order/forms.py:120 order/forms.py:142 order/forms.py:159 order/models.py:712
+#: order/models.py:964 order/templates/order/order_wizard/match_parts.html:30
#: order/templates/order/order_wizard/select_parts.html:34
-#: order/templates/order/purchase_order_detail.html:348
-#: order/templates/order/sales_order_detail.html:200
-#: order/templates/order/sales_order_detail.html:207
-#: order/templates/order/sales_order_detail.html:292
-#: order/templates/order/sales_order_detail.html:364 part/forms.py:249
-#: part/forms.py:265 part/forms.py:281 part/models.py:2340
+#: order/templates/order/sales_order_detail.html:201
+#: order/templates/order/sales_order_detail.html:208
+#: order/templates/order/sales_order_detail.html:293
+#: order/templates/order/sales_order_detail.html:365 part/forms.py:249
+#: part/forms.py:265 part/forms.py:281 part/models.py:2356
#: part/templates/part/bom_upload/match_parts.html:31
-#: part/templates/part/detail.html:940 part/templates/part/detail.html:1026
+#: part/templates/part/detail.html:973 part/templates/part/detail.html:1059
#: part/templates/part/part_pricing.html:16
#: report/templates/report/inventree_build_order_base.html:114
#: report/templates/report/inventree_po_report.html:91
@@ -542,13 +570,14 @@ msgstr ""
#: report/templates/report/inventree_test_report_base.html:77
#: stock/forms.py:140 stock/templates/stock/item_base.html:269
#: stock/templates/stock/stock_adjust.html:18
-#: templates/js/translated/barcode.js:364 templates/js/translated/bom.js:225
-#: templates/js/translated/build.js:271 templates/js/translated/build.js:606
-#: templates/js/translated/build.js:1172
-#: templates/js/translated/model_renderers.js:56
-#: templates/js/translated/order.js:482 templates/js/translated/part.js:1148
-#: templates/js/translated/part.js:1270 templates/js/translated/part.js:1326
-#: templates/js/translated/stock.js:1534 templates/js/translated/stock.js:1732
+#: templates/js/translated/barcode.js:386 templates/js/translated/bom.js:245
+#: templates/js/translated/build.js:298 templates/js/translated/build.js:629
+#: templates/js/translated/build.js:1189
+#: templates/js/translated/model_renderers.js:59
+#: templates/js/translated/order.js:522 templates/js/translated/order.js:824
+#: templates/js/translated/part.js:1317 templates/js/translated/part.js:1440
+#: templates/js/translated/part.js:1518 templates/js/translated/stock.js:1675
+#: templates/js/translated/stock.js:1850
msgid "Quantity"
msgstr ""
@@ -589,13 +618,15 @@ msgid "Mark build as complete"
msgstr ""
#: build/forms.py:210 build/templates/build/auto_allocate.html:18
-#: stock/forms.py:280 stock/templates/stock/item_base.html:299
+#: order/serializers.py:216 order/serializers.py:275 stock/forms.py:280
+#: stock/templates/stock/item_base.html:299
#: stock/templates/stock/stock_adjust.html:17
-#: templates/InvenTree/search.html:260 templates/js/translated/barcode.js:363
-#: templates/js/translated/barcode.js:531 templates/js/translated/build.js:256
-#: templates/js/translated/build.js:620 templates/js/translated/order.js:467
-#: templates/js/translated/stock.js:134 templates/js/translated/stock.js:260
-#: templates/js/translated/stock.js:1012 templates/js/translated/stock.js:1426
+#: templates/InvenTree/search.html:260 templates/js/translated/barcode.js:385
+#: templates/js/translated/barcode.js:555 templates/js/translated/build.js:283
+#: templates/js/translated/build.js:643 templates/js/translated/order.js:809
+#: templates/js/translated/part.js:174 templates/js/translated/stock.js:203
+#: templates/js/translated/stock.js:329 templates/js/translated/stock.js:942
+#: templates/js/translated/stock.js:1567
msgid "Location"
msgstr ""
@@ -604,13 +635,13 @@ msgid "Location of completed parts"
msgstr "完了したパーツの場所"
#: build/forms.py:215 build/templates/build/build_base.html:138
-#: build/templates/build/detail.html:62 order/models.py:549
-#: order/templates/order/receive_parts.html:24
+#: build/templates/build/detail.html:62 order/models.py:555
+#: order/serializers.py:230 order/templates/order/receive_parts.html:24
#: stock/templates/stock/item_base.html:422 templates/InvenTree/search.html:252
-#: templates/js/translated/barcode.js:119 templates/js/translated/build.js:902
-#: templates/js/translated/order.js:271 templates/js/translated/order.js:374
-#: templates/js/translated/stock.js:999 templates/js/translated/stock.js:1503
-#: templates/js/translated/stock.js:1748
+#: templates/js/translated/barcode.js:141 templates/js/translated/build.js:925
+#: templates/js/translated/order.js:345 templates/js/translated/order.js:715
+#: templates/js/translated/stock.js:917 templates/js/translated/stock.js:1644
+#: templates/js/translated/stock.js:1866
msgid "Status"
msgstr ""
@@ -649,7 +680,7 @@ msgstr ""
#: build/models.py:117 build/templates/build/build_base.html:9
#: build/templates/build/build_base.html:73
#: report/templates/report/inventree_build_order_base.html:106
-#: templates/js/translated/build.js:233
+#: templates/js/translated/build.js:260
msgid "Build Order"
msgstr ""
@@ -657,8 +688,8 @@ msgstr ""
#: build/templates/build/index.html:15
#: order/templates/order/sales_order_detail.html:34
#: order/templates/order/so_navbar.html:19
-#: order/templates/order/so_navbar.html:22 part/templates/part/navbar.html:42
-#: part/templates/part/navbar.html:45 templates/InvenTree/index.html:229
+#: order/templates/order/so_navbar.html:22 part/templates/part/navbar.html:50
+#: part/templates/part/navbar.html:53 templates/InvenTree/index.html:229
#: templates/InvenTree/search.html:185
#: templates/InvenTree/settings/navbar.html:101
#: templates/InvenTree/settings/navbar.html:103 users/models.py:44
@@ -669,14 +700,13 @@ msgstr ""
msgid "Build Order Reference"
msgstr ""
-#: build/models.py:179 order/models.py:246 order/models.py:533
-#: order/models.py:713 order/templates/order/purchase_order_detail.html:343
-#: order/templates/order/sales_order_detail.html:359 part/models.py:2349
-#: part/templates/part/bom_upload/match_parts.html:30
+#: build/models.py:179 order/models.py:246 order/models.py:539
+#: order/models.py:719 order/templates/order/sales_order_detail.html:360
+#: part/models.py:2365 part/templates/part/bom_upload/match_parts.html:30
#: report/templates/report/inventree_po_report.html:92
#: report/templates/report/inventree_so_report.html:92
-#: templates/js/translated/bom.js:217 templates/js/translated/build.js:695
-#: templates/js/translated/build.js:1166
+#: templates/js/translated/bom.js:237 templates/js/translated/build.js:718
+#: templates/js/translated/build.js:1183 templates/js/translated/order.js:517
msgid "Reference"
msgstr ""
@@ -695,15 +725,14 @@ msgstr ""
#: build/models.py:205 build/templates/build/auto_allocate.html:16
#: build/templates/build/build_base.html:128
-#: build/templates/build/detail.html:29 company/models.py:654
-#: order/models.py:766 order/models.py:825
+#: build/templates/build/detail.html:29 company/models.py:704
+#: order/models.py:772 order/models.py:837
#: order/templates/order/order_wizard/select_parts.html:32
-#: order/templates/order/purchase_order_detail.html:297
#: order/templates/order/receive_parts.html:19
-#: order/templates/order/sales_order_detail.html:344 part/models.py:295
-#: part/models.py:1980 part/models.py:1996 part/models.py:2015
-#: part/models.py:2033 part/models.py:2112 part/models.py:2234
-#: part/models.py:2324 part/templates/part/detail.html:199
+#: order/templates/order/sales_order_detail.html:345 part/models.py:297
+#: part/models.py:1996 part/models.py:2012 part/models.py:2031
+#: part/models.py:2049 part/models.py:2128 part/models.py:2250
+#: part/models.py:2340 part/templates/part/detail.html:199
#: part/templates/part/part_app_base.html:8
#: part/templates/part/part_pricing.html:12
#: part/templates/part/set_category.html:13
@@ -711,12 +740,13 @@ msgstr ""
#: report/templates/report/inventree_po_report.html:90
#: report/templates/report/inventree_so_report.html:90
#: templates/InvenTree/search.html:112 templates/InvenTree/search.html:210
-#: templates/js/translated/barcode.js:362 templates/js/translated/bom.js:183
-#: templates/js/translated/build.js:586 templates/js/translated/build.js:873
-#: templates/js/translated/build.js:1139 templates/js/translated/company.js:438
-#: templates/js/translated/company.js:688 templates/js/translated/part.js:562
-#: templates/js/translated/part.js:725 templates/js/translated/stock.js:132
-#: templates/js/translated/stock.js:895 templates/js/translated/stock.js:1720
+#: templates/js/translated/barcode.js:384 templates/js/translated/bom.js:203
+#: templates/js/translated/build.js:609 templates/js/translated/build.js:896
+#: templates/js/translated/build.js:1156 templates/js/translated/company.js:487
+#: templates/js/translated/company.js:743 templates/js/translated/order.js:471
+#: templates/js/translated/part.js:694 templates/js/translated/part.js:864
+#: templates/js/translated/stock.js:201 templates/js/translated/stock.js:797
+#: templates/js/translated/stock.js:1838
msgid "Part"
msgstr "パーツ"
@@ -764,7 +794,7 @@ msgstr ""
msgid "Number of stock items which have been completed"
msgstr ""
-#: build/models.py:257 part/templates/part/part_base.html:191
+#: build/models.py:257 part/templates/part/part_base.html:198
msgid "Build Status"
msgstr ""
@@ -772,7 +802,7 @@ msgstr ""
msgid "Build status code"
msgstr ""
-#: build/models.py:265 stock/models.py:507
+#: build/models.py:265 stock/models.py:513
msgid "Batch Code"
msgstr ""
@@ -780,16 +810,16 @@ msgstr ""
msgid "Batch code for this build output"
msgstr ""
-#: build/models.py:272 order/models.py:162 part/models.py:851
-#: part/templates/part/part_base.html:264 templates/js/translated/order.js:382
+#: build/models.py:272 order/models.py:162 part/models.py:853
+#: part/templates/part/part_base.html:272 templates/js/translated/order.js:723
msgid "Creation Date"
msgstr ""
-#: build/models.py:276 order/models.py:555
+#: build/models.py:276 order/models.py:561
msgid "Target completion date"
msgstr ""
-#: build/models.py:280 order/models.py:288 templates/js/translated/build.js:950
+#: build/models.py:280 order/models.py:288 templates/js/translated/build.js:967
msgid "Completion Date"
msgstr ""
@@ -797,7 +827,7 @@ msgstr ""
msgid "completed by"
msgstr ""
-#: build/models.py:294 templates/js/translated/build.js:915
+#: build/models.py:294 templates/js/translated/build.js:938
msgid "Issued by"
msgstr ""
@@ -808,9 +838,9 @@ msgstr ""
#: build/models.py:303 build/templates/build/build_base.html:184
#: build/templates/build/detail.html:108 order/models.py:176
#: order/templates/order/order_base.html:138
-#: order/templates/order/sales_order_base.html:140 part/models.py:855
+#: order/templates/order/sales_order_base.html:140 part/models.py:857
#: report/templates/report/inventree_build_order_base.html:159
-#: templates/js/translated/build.js:930
+#: templates/js/translated/build.js:950
msgid "Responsible"
msgstr ""
@@ -821,34 +851,33 @@ msgstr ""
#: build/models.py:309 build/templates/build/detail.html:94
#: company/templates/company/manufacturer_part.html:83
#: company/templates/company/supplier_part.html:82
-#: part/templates/part/part_base.html:258 stock/models.py:501
+#: part/templates/part/part_base.html:266 stock/models.py:507
#: stock/templates/stock/item_base.html:359
msgid "External Link"
msgstr ""
-#: build/models.py:310 part/models.py:713 stock/models.py:503
+#: build/models.py:310 part/models.py:715 stock/models.py:509
msgid "Link to external URL"
msgstr ""
#: build/models.py:314 build/templates/build/navbar.html:52
-#: company/models.py:139 company/models.py:526
-#: company/templates/company/navbar.html:63
-#: company/templates/company/navbar.html:66 order/models.py:180
-#: order/models.py:715 order/templates/order/po_navbar.html:38
+#: company/models.py:141 company/models.py:576
+#: company/templates/company/navbar.html:69
+#: company/templates/company/navbar.html:72 order/models.py:180
+#: order/models.py:721 order/templates/order/po_navbar.html:38
#: order/templates/order/po_navbar.html:41
-#: order/templates/order/purchase_order_detail.html:419
-#: order/templates/order/sales_order_detail.html:439
+#: order/templates/order/sales_order_detail.html:440
#: order/templates/order/so_navbar.html:33
-#: order/templates/order/so_navbar.html:36 part/models.py:840
-#: part/templates/part/detail.html:105 part/templates/part/navbar.html:108
-#: part/templates/part/navbar.html:111
+#: order/templates/order/so_navbar.html:36 part/models.py:842
+#: part/templates/part/detail.html:105 part/templates/part/navbar.html:120
+#: part/templates/part/navbar.html:123
#: report/templates/report/inventree_build_order_base.html:173
-#: stock/forms.py:138 stock/forms.py:250 stock/forms.py:282 stock/models.py:573
-#: stock/models.py:1715 stock/models.py:1821
-#: stock/templates/stock/navbar.html:57 templates/js/translated/barcode.js:37
-#: templates/js/translated/bom.js:369 templates/js/translated/company.js:784
-#: templates/js/translated/stock.js:268 templates/js/translated/stock.js:509
-#: templates/js/translated/stock.js:1090
+#: stock/forms.py:138 stock/forms.py:250 stock/forms.py:282 stock/models.py:579
+#: stock/models.py:1726 stock/models.py:1832
+#: stock/templates/stock/navbar.html:57 templates/js/translated/barcode.js:59
+#: templates/js/translated/bom.js:385 templates/js/translated/company.js:839
+#: templates/js/translated/order.js:604 templates/js/translated/stock.js:338
+#: templates/js/translated/stock.js:580 templates/js/translated/stock.js:1061
msgid "Notes"
msgstr ""
@@ -881,11 +910,11 @@ msgstr ""
msgid "Allocated quantity ({n}) must not exceed available quantity ({q})"
msgstr ""
-#: build/models.py:1244 order/models.py:926
+#: build/models.py:1244 order/models.py:938
msgid "StockItem is over-allocated"
msgstr ""
-#: build/models.py:1248 order/models.py:929
+#: build/models.py:1248 order/models.py:941
msgid "Allocation quantity must be greater than zero"
msgstr ""
@@ -899,8 +928,8 @@ msgid "Selected stock item not found in BOM for part '{p}'"
msgstr ""
#: build/models.py:1372 stock/templates/stock/item_base.html:331
-#: templates/InvenTree/search.html:183 templates/js/translated/build.js:846
-#: templates/navbar.html:29
+#: templates/InvenTree/search.html:183 templates/js/translated/build.js:869
+#: templates/navbar.html:35
msgid "Build"
msgstr ""
@@ -912,9 +941,9 @@ msgstr "パーツを割り当てるためにビルドする"
#: stock/templates/stock/item_base.html:31
#: stock/templates/stock/item_base.html:353
#: stock/templates/stock/stock_adjust.html:16
-#: templates/js/translated/build.js:244 templates/js/translated/build.js:249
-#: templates/js/translated/build.js:993 templates/js/translated/order.js:455
-#: templates/js/translated/order.js:460 templates/js/translated/stock.js:1485
+#: templates/js/translated/build.js:271 templates/js/translated/build.js:276
+#: templates/js/translated/build.js:1012 templates/js/translated/order.js:797
+#: templates/js/translated/order.js:802 templates/js/translated/stock.js:1626
msgid "Stock Item"
msgstr ""
@@ -936,12 +965,12 @@ msgstr ""
#: build/templates/build/allocation_card.html:21
#: build/templates/build/complete_output.html:46
-#: order/templates/order/sales_order_detail.html:205
-#: order/templates/order/sales_order_detail.html:290
+#: order/templates/order/sales_order_detail.html:206
+#: order/templates/order/sales_order_detail.html:291
#: report/templates/report/inventree_test_report_base.html:75
-#: stock/models.py:495 stock/templates/stock/item_base.html:251
-#: templates/js/translated/build.js:604
-#: templates/js/translated/model_renderers.js:54
+#: stock/models.py:501 stock/templates/stock/item_base.html:251
+#: templates/js/translated/build.js:627
+#: templates/js/translated/model_renderers.js:57
msgid "Serial Number"
msgstr ""
@@ -993,7 +1022,7 @@ msgstr ""
#: company/templates/company/supplier_part.html:30
#: order/templates/order/order_base.html:26
#: order/templates/order/sales_order_base.html:37
-#: part/templates/part/category.html:27 part/templates/part/part_base.html:25
+#: part/templates/part/category.html:27 part/templates/part/part_base.html:30
#: stock/templates/stock/item_base.html:62
#: stock/templates/stock/location.html:31
msgid "Admin view"
@@ -1005,9 +1034,9 @@ msgstr ""
#: order/templates/order/order_base.html:86
#: order/templates/order/sales_order_base.html:43
#: order/templates/order/sales_order_base.html:88
-#: templates/js/translated/table_filters.js:259
-#: templates/js/translated/table_filters.js:278
-#: templates/js/translated/table_filters.js:295
+#: templates/js/translated/table_filters.js:272
+#: templates/js/translated/table_filters.js:291
+#: templates/js/translated/table_filters.js:308
msgid "Overdue"
msgstr ""
@@ -1057,14 +1086,14 @@ msgid "Progress"
msgstr ""
#: build/templates/build/build_base.html:170
-#: build/templates/build/detail.html:87 order/models.py:823
+#: build/templates/build/detail.html:87 order/models.py:835
#: order/templates/order/sales_order_base.html:9
#: order/templates/order/sales_order_base.html:35
#: order/templates/order/sales_order_ship.html:25
#: report/templates/report/inventree_build_order_base.html:136
#: report/templates/report/inventree_so_report.html:77
#: stock/templates/stock/item_base.html:293
-#: templates/js/translated/order.js:329
+#: templates/js/translated/order.js:670
msgid "Sales Order"
msgstr ""
@@ -1148,7 +1177,7 @@ msgstr ""
#: build/templates/build/create_build_item.html:11
#, python-format
-msgid "The allocated stock will be installed into the following build output:
%(output)s"
+msgid "The allocated stock will be installed into the following build output:
%(output)s"
msgstr ""
#: build/templates/build/create_build_item.html:17
@@ -1172,9 +1201,9 @@ msgstr ""
msgid "Stock can be taken from any available location."
msgstr ""
-#: build/templates/build/detail.html:49 order/forms.py:88 order/models.py:782
-#: order/templates/order/purchase_order_detail.html:408
+#: build/templates/build/detail.html:49 order/forms.py:88 order/models.py:794
#: order/templates/order/receive_parts.html:25 stock/forms.py:134
+#: templates/js/translated/order.js:593
msgid "Destination"
msgstr ""
@@ -1184,16 +1213,16 @@ msgstr ""
#: build/templates/build/detail.html:73
#: stock/templates/stock/item_base.html:317
-#: templates/js/translated/stock.js:1007 templates/js/translated/stock.js:1755
-#: templates/js/translated/table_filters.js:116
-#: templates/js/translated/table_filters.js:198
+#: templates/js/translated/stock.js:931 templates/js/translated/stock.js:1873
+#: templates/js/translated/table_filters.js:129
+#: templates/js/translated/table_filters.js:211
msgid "Batch"
msgstr ""
#: build/templates/build/detail.html:119
#: order/templates/order/order_base.html:111
#: order/templates/order/sales_order_base.html:113
-#: templates/js/translated/build.js:910
+#: templates/js/translated/build.js:933
msgid "Created"
msgstr ""
@@ -1201,7 +1230,7 @@ msgstr ""
msgid "No target date set"
msgstr ""
-#: build/templates/build/detail.html:135 templates/js/translated/build.js:888
+#: build/templates/build/detail.html:135 templates/js/translated/build.js:911
msgid "Completed"
msgstr ""
@@ -1225,7 +1254,7 @@ msgstr ""
msgid "Auto Allocate"
msgstr ""
-#: build/templates/build/detail.html:175 templates/js/translated/build.js:778
+#: build/templates/build/detail.html:175 templates/js/translated/build.js:801
msgid "Unallocate stock"
msgstr ""
@@ -1238,8 +1267,8 @@ msgid "Order required parts"
msgstr "注文必須パーツ"
#: build/templates/build/detail.html:180
-#: company/templates/company/detail.html:33
-#: company/templates/company/detail.html:75 order/views.py:679
+#: company/templates/company/detail.html:32
+#: company/templates/company/detail.html:72 order/views.py:679
#: part/templates/part/category.html:140
msgid "Order Parts"
msgstr "パーツの注文"
@@ -1288,8 +1317,8 @@ msgstr ""
#: build/templates/build/navbar.html:45 order/templates/order/po_navbar.html:35
#: order/templates/order/sales_order_detail.html:43
#: order/templates/order/so_navbar.html:29 part/templates/part/detail.html:173
-#: part/templates/part/navbar.html:102 part/templates/part/navbar.html:105
-#: stock/templates/stock/item.html:87 stock/templates/stock/navbar.html:47
+#: part/templates/part/navbar.html:114 part/templates/part/navbar.html:117
+#: stock/templates/stock/item.html:88 stock/templates/stock/navbar.html:47
#: stock/templates/stock/navbar.html:50
msgid "Attachments"
msgstr ""
@@ -1298,48 +1327,48 @@ msgstr ""
msgid "Build Notes"
msgstr ""
-#: build/templates/build/detail.html:261 build/templates/build/detail.html:397
-#: company/templates/company/detail.html:173
-#: company/templates/company/detail.html:200
+#: build/templates/build/detail.html:261 build/templates/build/detail.html:398
+#: company/templates/company/detail.html:169
+#: company/templates/company/detail.html:196
#: order/templates/order/purchase_order_detail.html:62
#: order/templates/order/purchase_order_detail.html:95
#: order/templates/order/sales_order_detail.html:58
#: order/templates/order/sales_order_detail.html:85
-#: part/templates/part/detail.html:109 stock/templates/stock/item.html:102
-#: stock/templates/stock/item.html:187
+#: part/templates/part/detail.html:109 stock/templates/stock/item.html:103
+#: stock/templates/stock/item.html:188
msgid "Edit Notes"
msgstr ""
#: build/templates/build/detail.html:357
#: order/templates/order/po_attachments.html:79
-#: order/templates/order/purchase_order_detail.html:156
-#: order/templates/order/sales_order_detail.html:145
-#: part/templates/part/detail.html:802 stock/templates/stock/item.html:251
+#: order/templates/order/purchase_order_detail.html:157
+#: order/templates/order/sales_order_detail.html:146
+#: part/templates/part/detail.html:920 stock/templates/stock/item.html:253
#: templates/attachment_table.html:6
msgid "Add Attachment"
msgstr ""
-#: build/templates/build/detail.html:375
+#: build/templates/build/detail.html:376
#: order/templates/order/po_attachments.html:51
-#: order/templates/order/purchase_order_detail.html:128
-#: order/templates/order/sales_order_detail.html:118
-#: part/templates/part/detail.html:756 stock/templates/stock/item.html:219
+#: order/templates/order/purchase_order_detail.html:129
+#: order/templates/order/sales_order_detail.html:119
+#: part/templates/part/detail.html:874 stock/templates/stock/item.html:221
msgid "Edit Attachment"
msgstr ""
-#: build/templates/build/detail.html:382
+#: build/templates/build/detail.html:383
#: order/templates/order/po_attachments.html:58
-#: order/templates/order/purchase_order_detail.html:135
-#: order/templates/order/sales_order_detail.html:124
-#: part/templates/part/detail.html:765 stock/templates/stock/item.html:228
+#: order/templates/order/purchase_order_detail.html:136
+#: order/templates/order/sales_order_detail.html:125
+#: part/templates/part/detail.html:883 stock/templates/stock/item.html:230
msgid "Confirm Delete Operation"
msgstr ""
-#: build/templates/build/detail.html:383
+#: build/templates/build/detail.html:384
#: order/templates/order/po_attachments.html:59
-#: order/templates/order/purchase_order_detail.html:136
-#: order/templates/order/sales_order_detail.html:125
-#: part/templates/part/detail.html:766 stock/templates/stock/item.html:229
+#: order/templates/order/purchase_order_detail.html:137
+#: order/templates/order/sales_order_detail.html:126
+#: part/templates/part/detail.html:884 stock/templates/stock/item.html:231
msgid "Delete Attachment"
msgstr ""
@@ -1372,7 +1401,7 @@ msgid "Build Order Details"
msgstr ""
#: build/templates/build/navbar.html:15 order/templates/order/po_navbar.html:15
-#: templates/js/translated/stock.js:1414
+#: templates/js/translated/stock.js:1555
msgid "Details"
msgstr ""
@@ -1501,9 +1530,9 @@ msgstr ""
msgid "Stock item is over-allocated"
msgstr ""
-#: build/views.py:705 templates/js/translated/bom.js:250
-#: templates/js/translated/build.js:705 templates/js/translated/build.js:1000
-#: templates/js/translated/build.js:1179
+#: build/views.py:705 templates/js/translated/bom.js:269
+#: templates/js/translated/build.js:728 templates/js/translated/build.js:1019
+#: templates/js/translated/build.js:1196
msgid "Available"
msgstr ""
@@ -1539,7 +1568,7 @@ msgstr ""
msgid "Error reading file (data could be corrupted)"
msgstr ""
-#: common/forms.py:34 templates/js/translated/attachment.js:42
+#: common/forms.py:34 templates/js/translated/attachment.js:54
msgid "File"
msgstr ""
@@ -1556,546 +1585,594 @@ msgstr ""
msgid "Select {name} file to upload"
msgstr ""
-#: common/models.py:322 common/models.py:815 common/models.py:962
+#: common/models.py:308 common/models.py:839 common/models.py:986
msgid "Settings key (must be unique - case insensitive"
msgstr ""
-#: common/models.py:324
+#: common/models.py:310
msgid "Settings value"
msgstr ""
-#: common/models.py:359
+#: common/models.py:345
msgid "Must be an integer value"
msgstr ""
-#: common/models.py:382
+#: common/models.py:368
msgid "Value must be a boolean value"
msgstr ""
-#: common/models.py:393
+#: common/models.py:379
msgid "Value must be an integer value"
msgstr ""
-#: common/models.py:416
+#: common/models.py:402
msgid "Key string must be unique"
msgstr ""
-#: common/models.py:523
+#: common/models.py:509
msgid "InvenTree Instance Name"
msgstr ""
-#: common/models.py:525
+#: common/models.py:511
msgid "String descriptor for the server instance"
msgstr ""
-#: common/models.py:529
+#: common/models.py:515
msgid "Use instance name"
msgstr ""
-#: common/models.py:530
+#: common/models.py:516
msgid "Use the instance name in the title-bar"
msgstr ""
-#: common/models.py:536 company/models.py:97 company/models.py:98
+#: common/models.py:522 company/models.py:99 company/models.py:100
msgid "Company name"
msgstr ""
-#: common/models.py:537
+#: common/models.py:523
msgid "Internal company name"
msgstr ""
-#: common/models.py:542
+#: common/models.py:528
msgid "Base URL"
msgstr ""
-#: common/models.py:543
+#: common/models.py:529
msgid "Base URL for server instance"
msgstr ""
-#: common/models.py:549
+#: common/models.py:535
msgid "Default Currency"
msgstr ""
-#: common/models.py:550
+#: common/models.py:536
msgid "Default currency"
msgstr ""
-#: common/models.py:556
+#: common/models.py:542
msgid "Download from URL"
msgstr ""
-#: common/models.py:557
+#: common/models.py:543
msgid "Allow download of remote images and files from external URL"
msgstr ""
-#: common/models.py:563
+#: common/models.py:549
msgid "Barcode Support"
msgstr ""
-#: common/models.py:564
+#: common/models.py:550
msgid "Enable barcode scanner support"
msgstr ""
-#: common/models.py:570
+#: common/models.py:556
msgid "IPN Regex"
msgstr ""
-#: common/models.py:571
+#: common/models.py:557
msgid "Regular expression pattern for matching Part IPN"
msgstr ""
-#: common/models.py:575
+#: common/models.py:561
msgid "Allow Duplicate IPN"
msgstr ""
-#: common/models.py:576
+#: common/models.py:562
msgid "Allow multiple parts to share the same IPN"
msgstr ""
-#: common/models.py:582
+#: common/models.py:568
msgid "Allow Editing IPN"
msgstr ""
-#: common/models.py:583
+#: common/models.py:569
msgid "Allow changing the IPN value while editing a part"
msgstr ""
-#: common/models.py:589
+#: common/models.py:575
msgid "Copy Part BOM Data"
msgstr ""
-#: common/models.py:590
+#: common/models.py:576
msgid "Copy BOM data by default when duplicating a part"
msgstr ""
-#: common/models.py:596
+#: common/models.py:582
msgid "Copy Part Parameter Data"
msgstr ""
-#: common/models.py:597
+#: common/models.py:583
msgid "Copy parameter data by default when duplicating a part"
msgstr ""
-#: common/models.py:603
+#: common/models.py:589
msgid "Copy Part Test Data"
msgstr ""
-#: common/models.py:604
+#: common/models.py:590
msgid "Copy test data by default when duplicating a part"
msgstr ""
-#: common/models.py:610
+#: common/models.py:596
msgid "Copy Category Parameter Templates"
msgstr ""
-#: common/models.py:611
+#: common/models.py:597
msgid "Copy category parameter templates when creating a part"
msgstr ""
-#: common/models.py:617 part/models.py:2236 report/models.py:187
-#: stock/forms.py:224 templates/js/translated/table_filters.js:25
-#: templates/js/translated/table_filters.js:329
+#: common/models.py:603 part/models.py:2252 report/models.py:187
+#: stock/forms.py:224 templates/js/translated/table_filters.js:38
+#: templates/js/translated/table_filters.js:342
msgid "Template"
msgstr "テンプレート"
-#: common/models.py:618
+#: common/models.py:604
msgid "Parts are templates by default"
msgstr "パーツはデフォルトのテンプレートです"
-#: common/models.py:624 part/models.py:803
-#: templates/js/translated/table_filters.js:133
-#: templates/js/translated/table_filters.js:341
+#: common/models.py:610 part/models.py:805
+#: templates/js/translated/table_filters.js:146
+#: templates/js/translated/table_filters.js:354
msgid "Assembly"
msgstr "アセンブリ"
-#: common/models.py:625
+#: common/models.py:611
msgid "Parts can be assembled from other components by default"
msgstr "パーツはデフォルトで他のコンポーネントから組み立てることができます"
-#: common/models.py:631 part/models.py:809
-#: templates/js/translated/table_filters.js:345
+#: common/models.py:617 part/models.py:811
+#: templates/js/translated/table_filters.js:358
msgid "Component"
msgstr "コンポーネント"
-#: common/models.py:632
+#: common/models.py:618
msgid "Parts can be used as sub-components by default"
msgstr "パーツはデフォルトでサブコンポーネントとして使用できます"
-#: common/models.py:638 part/models.py:820
+#: common/models.py:624 part/models.py:822
msgid "Purchaseable"
msgstr "購入可能"
-#: common/models.py:639
+#: common/models.py:625
msgid "Parts are purchaseable by default"
msgstr "パーツはデフォルトで購入可能です"
-#: common/models.py:645 part/models.py:825
-#: templates/js/translated/table_filters.js:353
+#: common/models.py:631 part/models.py:827
+#: templates/js/translated/table_filters.js:366
msgid "Salable"
msgstr ""
-#: common/models.py:646
+#: common/models.py:632
msgid "Parts are salable by default"
msgstr "パーツはデフォルトで販売可能です"
-#: common/models.py:652 part/models.py:815
-#: templates/js/translated/table_filters.js:33
-#: templates/js/translated/table_filters.js:357
+#: common/models.py:638 part/models.py:817
+#: templates/js/translated/table_filters.js:46
+#: templates/js/translated/table_filters.js:370
msgid "Trackable"
msgstr "追跡可能"
-#: common/models.py:653
+#: common/models.py:639
msgid "Parts are trackable by default"
msgstr "パーツはデフォルトで追跡可能です"
-#: common/models.py:659 part/models.py:835
-#: part/templates/part/part_base.html:61
-#: templates/js/translated/table_filters.js:29
+#: common/models.py:645 part/models.py:837
+#: part/templates/part/part_base.html:66
+#: templates/js/translated/table_filters.js:42
msgid "Virtual"
msgstr ""
-#: common/models.py:660
+#: common/models.py:646
msgid "Parts are virtual by default"
msgstr ""
-#: common/models.py:667
+#: common/models.py:653
msgid "Show Quantity in Forms"
msgstr ""
-#: common/models.py:668
+#: common/models.py:654
msgid "Display available part quantity in some forms"
msgstr ""
-#: common/models.py:674
+#: common/models.py:660
msgid "Show Import in Views"
msgstr ""
-#: common/models.py:675
+#: common/models.py:661
msgid "Display the import wizard in some part views"
msgstr ""
-#: common/models.py:681
+#: common/models.py:667
msgid "Show Price in Forms"
msgstr ""
-#: common/models.py:682
+#: common/models.py:668
msgid "Display part price in some forms"
msgstr ""
-#: common/models.py:688
+#: common/models.py:674
msgid "Show related parts"
msgstr ""
-#: common/models.py:689
+#: common/models.py:675
msgid "Display related parts for a part"
msgstr ""
-#: common/models.py:695
+#: common/models.py:681
msgid "Create initial stock"
msgstr ""
-#: common/models.py:696
+#: common/models.py:682
msgid "Create initial stock on part creation"
msgstr ""
-#: common/models.py:702
+#: common/models.py:688
msgid "Internal Prices"
msgstr ""
-#: common/models.py:703
+#: common/models.py:689
msgid "Enable internal prices for parts"
msgstr ""
-#: common/models.py:709
+#: common/models.py:695
msgid "Internal Price as BOM-Price"
msgstr ""
-#: common/models.py:710
+#: common/models.py:696
msgid "Use the internal price (if set) in BOM-price calculations"
msgstr ""
-#: common/models.py:716 templates/stats.html:25
+#: common/models.py:702 templates/stats.html:25
msgid "Debug Mode"
msgstr ""
-#: common/models.py:717
+#: common/models.py:703
msgid "Generate reports in debug mode (HTML output)"
msgstr ""
-#: common/models.py:723
+#: common/models.py:709
msgid "Page Size"
msgstr ""
-#: common/models.py:724
+#: common/models.py:710
msgid "Default page size for PDF reports"
msgstr ""
-#: common/models.py:734
+#: common/models.py:720
msgid "Test Reports"
msgstr ""
-#: common/models.py:735
+#: common/models.py:721
msgid "Enable generation of test reports"
msgstr ""
-#: common/models.py:741
+#: common/models.py:727
msgid "Stock Expiry"
msgstr ""
-#: common/models.py:742
+#: common/models.py:728
msgid "Enable stock expiry functionality"
msgstr ""
-#: common/models.py:748
+#: common/models.py:734
msgid "Sell Expired Stock"
msgstr ""
-#: common/models.py:749
+#: common/models.py:735
msgid "Allow sale of expired stock"
msgstr ""
-#: common/models.py:755
+#: common/models.py:741
msgid "Stock Stale Time"
msgstr ""
-#: common/models.py:756
+#: common/models.py:742
msgid "Number of days stock items are considered stale before expiring"
msgstr ""
-#: common/models.py:758
+#: common/models.py:744
msgid "days"
msgstr ""
-#: common/models.py:763
+#: common/models.py:749
msgid "Build Expired Stock"
msgstr ""
-#: common/models.py:764
+#: common/models.py:750
msgid "Allow building with expired stock"
msgstr ""
-#: common/models.py:770
+#: common/models.py:756
msgid "Stock Ownership Control"
msgstr ""
-#: common/models.py:771
+#: common/models.py:757
msgid "Enable ownership control over stock locations and items"
msgstr ""
-#: common/models.py:777
+#: common/models.py:763
msgid "Group by Part"
msgstr ""
-#: common/models.py:778
+#: common/models.py:764
msgid "Group stock items by part reference in table views"
msgstr ""
-#: common/models.py:784
+#: common/models.py:770
msgid "Build Order Reference Prefix"
msgstr ""
-#: common/models.py:785
+#: common/models.py:771
msgid "Prefix value for build order reference"
msgstr ""
-#: common/models.py:790
+#: common/models.py:776
msgid "Build Order Reference Regex"
msgstr ""
-#: common/models.py:791
+#: common/models.py:777
msgid "Regular expression pattern for matching build order reference"
msgstr ""
-#: common/models.py:795
+#: common/models.py:781
msgid "Sales Order Reference Prefix"
msgstr ""
-#: common/models.py:796
+#: common/models.py:782
msgid "Prefix value for sales order reference"
msgstr ""
-#: common/models.py:801
+#: common/models.py:787
msgid "Purchase Order Reference Prefix"
msgstr ""
-#: common/models.py:802
+#: common/models.py:788
msgid "Prefix value for purchase order reference"
msgstr ""
-#: common/models.py:826
+#: common/models.py:794
+msgid "Enable build"
+msgstr ""
+
+#: common/models.py:795
+msgid "Enable build functionality in InvenTree interface"
+msgstr ""
+
+#: common/models.py:800
+msgid "Enable buy"
+msgstr ""
+
+#: common/models.py:801
+msgid "Enable buy functionality in InvenTree interface"
+msgstr ""
+
+#: common/models.py:806
+msgid "Enable sell"
+msgstr ""
+
+#: common/models.py:807
+msgid "Enable sell functionality in InvenTree interface"
+msgstr ""
+
+#: common/models.py:812
+msgid "Enable stock"
+msgstr ""
+
+#: common/models.py:813
+msgid "Enable stock functionality in InvenTree interface"
+msgstr ""
+
+#: common/models.py:818
+msgid "Enable SO"
+msgstr ""
+
+#: common/models.py:819
+msgid "Enable SO functionality in InvenTree interface"
+msgstr ""
+
+#: common/models.py:824
+msgid "Enable PO"
+msgstr ""
+
+#: common/models.py:825
+msgid "Enable PO functionality in InvenTree interface"
+msgstr ""
+
+#: common/models.py:850
msgid "Show starred parts"
msgstr ""
-#: common/models.py:827
+#: common/models.py:851
msgid "Show starred parts on the homepage"
msgstr ""
-#: common/models.py:832
+#: common/models.py:856
msgid "Show latest parts"
msgstr ""
-#: common/models.py:833
+#: common/models.py:857
msgid "Show latest parts on the homepage"
msgstr ""
-#: common/models.py:838
+#: common/models.py:862
msgid "Recent Part Count"
msgstr ""
-#: common/models.py:839
+#: common/models.py:863
msgid "Number of recent parts to display on index page"
msgstr ""
-#: common/models.py:845
+#: common/models.py:869
msgid "Show unvalidated BOMs"
msgstr ""
-#: common/models.py:846
+#: common/models.py:870
msgid "Show BOMs that await validation on the homepage"
msgstr ""
-#: common/models.py:851
+#: common/models.py:875
msgid "Show recent stock changes"
msgstr ""
-#: common/models.py:852
+#: common/models.py:876
msgid "Show recently changed stock items on the homepage"
msgstr ""
-#: common/models.py:857
+#: common/models.py:881
msgid "Recent Stock Count"
msgstr ""
-#: common/models.py:858
+#: common/models.py:882
msgid "Number of recent stock items to display on index page"
msgstr ""
-#: common/models.py:863
+#: common/models.py:887
msgid "Show low stock"
msgstr ""
-#: common/models.py:864
+#: common/models.py:888
msgid "Show low stock items on the homepage"
msgstr ""
-#: common/models.py:869
+#: common/models.py:893
msgid "Show depleted stock"
msgstr ""
-#: common/models.py:870
+#: common/models.py:894
msgid "Show depleted stock items on the homepage"
msgstr ""
-#: common/models.py:875
+#: common/models.py:899
msgid "Show needed stock"
msgstr ""
-#: common/models.py:876
+#: common/models.py:900
msgid "Show stock items needed for builds on the homepage"
msgstr ""
-#: common/models.py:881
+#: common/models.py:905
msgid "Show expired stock"
msgstr ""
-#: common/models.py:882
+#: common/models.py:906
msgid "Show expired stock items on the homepage"
msgstr ""
-#: common/models.py:887
+#: common/models.py:911
msgid "Show stale stock"
msgstr ""
-#: common/models.py:888
+#: common/models.py:912
msgid "Show stale stock items on the homepage"
msgstr ""
-#: common/models.py:893
+#: common/models.py:917
msgid "Show pending builds"
msgstr ""
-#: common/models.py:894
+#: common/models.py:918
msgid "Show pending builds on the homepage"
msgstr ""
-#: common/models.py:899
+#: common/models.py:923
msgid "Show overdue builds"
msgstr ""
-#: common/models.py:900
+#: common/models.py:924
msgid "Show overdue builds on the homepage"
msgstr ""
-#: common/models.py:905
+#: common/models.py:929
msgid "Show outstanding POs"
msgstr ""
-#: common/models.py:906
+#: common/models.py:930
msgid "Show outstanding POs on the homepage"
msgstr ""
-#: common/models.py:911
+#: common/models.py:935
msgid "Show overdue POs"
msgstr ""
-#: common/models.py:912
+#: common/models.py:936
msgid "Show overdue POs on the homepage"
msgstr ""
-#: common/models.py:917
+#: common/models.py:941
msgid "Show outstanding SOs"
msgstr ""
-#: common/models.py:918
+#: common/models.py:942
msgid "Show outstanding SOs on the homepage"
msgstr ""
-#: common/models.py:923
+#: common/models.py:947
msgid "Show overdue SOs"
msgstr ""
-#: common/models.py:924
+#: common/models.py:948
msgid "Show overdue SOs on the homepage"
msgstr ""
-#: common/models.py:930
+#: common/models.py:954
msgid "Inline label display"
msgstr ""
-#: common/models.py:931
+#: common/models.py:955
msgid "Display PDF labels in the browser, instead of downloading as a file"
msgstr ""
-#: common/models.py:937
+#: common/models.py:961
msgid "Inline report display"
msgstr ""
-#: common/models.py:938
+#: common/models.py:962
msgid "Display PDF reports in the browser, instead of downloading as a file"
msgstr ""
-#: common/models.py:944
+#: common/models.py:968
msgid "Search Preview Results"
msgstr ""
-#: common/models.py:945
+#: common/models.py:969
msgid "Number of results to show in search preview window"
msgstr ""
-#: common/models.py:1002 company/forms.py:43
+#: common/models.py:1026 company/forms.py:43
msgid "Price break quantity"
msgstr ""
-#: common/models.py:1009 company/templates/company/supplier_part.html:231
-#: templates/js/translated/part.js:1153
+#: common/models.py:1033 company/templates/company/supplier_part.html:231
+#: templates/js/translated/part.js:1322
msgid "Price"
msgstr ""
-#: common/models.py:1010
+#: common/models.py:1034
msgid "Unit price at specified quantity"
msgstr ""
-#: common/models.py:1103
+#: common/models.py:1127
msgid "Default"
msgstr ""
@@ -2123,7 +2200,7 @@ msgstr ""
#: order/templates/order/po_navbar.html:19
#: order/templates/order/po_navbar.html:22
#: order/templates/order/purchase_order_detail.html:26 order/views.py:290
-#: part/templates/part/bom_upload/upload_file.html:45
+#: part/templates/part/bom_upload/upload_file.html:65
#: part/templates/part/import_wizard/part_upload.html:45 part/views.py:268
#: part/views.py:882
msgid "Upload File"
@@ -2154,7 +2231,7 @@ msgstr ""
#: order/templates/order/order_wizard/po_upload.html:40
#: 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:43
+#: part/templates/part/bom_upload/upload_file.html:63
#: 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:43
@@ -2169,244 +2246,249 @@ msgstr ""
msgid "Image URL"
msgstr ""
-#: company/models.py:102
+#: company/models.py:104
msgid "Company description"
msgstr ""
-#: company/models.py:103
+#: company/models.py:105
msgid "Description of the company"
msgstr ""
-#: company/models.py:109 company/templates/company/company_base.html:70
-#: templates/js/translated/company.js:303
+#: company/models.py:111 company/templates/company/company_base.html:70
+#: templates/js/translated/company.js:348
msgid "Website"
msgstr ""
-#: company/models.py:110
+#: company/models.py:112
msgid "Company website URL"
msgstr ""
-#: company/models.py:114 company/templates/company/company_base.html:88
+#: company/models.py:116 company/templates/company/company_base.html:88
msgid "Address"
msgstr ""
-#: company/models.py:115
+#: company/models.py:117
msgid "Company address"
msgstr ""
-#: company/models.py:118
+#: company/models.py:120
msgid "Phone number"
msgstr ""
-#: company/models.py:119
+#: company/models.py:121
msgid "Contact phone number"
msgstr ""
-#: company/models.py:122 company/templates/company/company_base.html:102
+#: company/models.py:124 company/templates/company/company_base.html:102
msgid "Email"
msgstr ""
-#: company/models.py:122
+#: company/models.py:124
msgid "Contact email address"
msgstr ""
-#: company/models.py:125 company/templates/company/company_base.html:109
+#: company/models.py:127 company/templates/company/company_base.html:109
msgid "Contact"
msgstr ""
-#: company/models.py:126
+#: company/models.py:128
msgid "Point of contact"
msgstr ""
-#: company/models.py:128 company/models.py:345 company/models.py:513
-#: order/models.py:160 part/models.py:712
+#: company/models.py:130 company/models.py:347 company/models.py:563
+#: order/models.py:160 part/models.py:714
#: report/templates/report/inventree_build_order_base.html:165
-#: templates/js/translated/company.js:486
-#: templates/js/translated/company.js:768 templates/js/translated/part.js:819
+#: templates/js/translated/company.js:535
+#: templates/js/translated/company.js:823 templates/js/translated/part.js:972
msgid "Link"
msgstr ""
-#: company/models.py:128
+#: company/models.py:130
msgid "Link to external company information"
msgstr ""
-#: company/models.py:136 part/models.py:722
+#: company/models.py:138 part/models.py:724
msgid "Image"
msgstr ""
-#: company/models.py:141
+#: company/models.py:143
msgid "is customer"
msgstr ""
-#: company/models.py:141
+#: company/models.py:143
msgid "Do you sell items to this company?"
msgstr ""
-#: company/models.py:143
+#: company/models.py:145
msgid "is supplier"
msgstr ""
-#: company/models.py:143
+#: company/models.py:145
msgid "Do you purchase items from this company?"
msgstr ""
-#: company/models.py:145
+#: company/models.py:147
msgid "is manufacturer"
msgstr ""
-#: company/models.py:145
+#: company/models.py:147
msgid "Does this company manufacture parts?"
msgstr ""
-#: company/models.py:149 company/serializers.py:245
-#: company/templates/company/company_base.html:76
+#: company/models.py:151 company/serializers.py:264
+#: company/templates/company/company_base.html:76 stock/serializers.py:155
msgid "Currency"
msgstr ""
-#: company/models.py:152
+#: company/models.py:154
msgid "Default currency used for this company"
msgstr ""
-#: company/models.py:317 company/models.py:484 stock/models.py:448
+#: company/models.py:319 company/models.py:534 stock/models.py:454
#: stock/templates/stock/item_base.html:237
msgid "Base Part"
msgstr ""
-#: company/models.py:321 company/models.py:488 order/views.py:1082
+#: company/models.py:323 company/models.py:538 order/views.py:1082
msgid "Select part"
msgstr ""
-#: company/models.py:332 company/templates/company/company_base.html:116
+#: company/models.py:334 company/templates/company/company_base.html:116
#: company/templates/company/manufacturer_part.html:89
#: company/templates/company/supplier_part.html:98 part/bom.py:170
#: part/bom.py:241 stock/templates/stock/item_base.html:366
-#: templates/js/translated/company.js:287
-#: templates/js/translated/company.js:463
-#: templates/js/translated/company.js:739
+#: templates/js/translated/company.js:332
+#: templates/js/translated/company.js:512
+#: templates/js/translated/company.js:794 templates/js/translated/part.js:222
msgid "Manufacturer"
msgstr ""
-#: company/models.py:333
+#: company/models.py:335 templates/js/translated/part.js:223
msgid "Select manufacturer"
msgstr ""
-#: company/models.py:339 company/templates/company/manufacturer_part.html:93
-#: company/templates/company/supplier_part.html:106
-#: order/templates/order/purchase_order_detail.html:331 part/bom.py:171
-#: part/bom.py:242 templates/js/translated/company.js:479
-#: templates/js/translated/company.js:757
+#: company/models.py:341 company/templates/company/manufacturer_part.html:93
+#: company/templates/company/supplier_part.html:106 part/bom.py:171
+#: part/bom.py:242 templates/js/translated/company.js:528
+#: templates/js/translated/company.js:812 templates/js/translated/order.js:505
+#: templates/js/translated/part.js:233
msgid "MPN"
msgstr ""
-#: company/models.py:340
+#: company/models.py:342 templates/js/translated/part.js:234
msgid "Manufacturer Part Number"
msgstr ""
-#: company/models.py:346
+#: company/models.py:348
msgid "URL for external manufacturer part link"
msgstr ""
-#: company/models.py:352
+#: company/models.py:354
msgid "Manufacturer part description"
msgstr ""
-#: company/models.py:406 company/models.py:507
+#: company/models.py:408 company/models.py:557
#: company/templates/company/manufacturer_part.html:6
#: company/templates/company/manufacturer_part.html:23
#: stock/templates/stock/item_base.html:376
msgid "Manufacturer Part"
msgstr "メーカー・パーツ"
-#: company/models.py:413
+#: company/models.py:415
msgid "Parameter name"
msgstr ""
-#: company/models.py:419
+#: company/models.py:421
#: report/templates/report/inventree_test_report_base.html:90
-#: stock/models.py:1808 templates/InvenTree/settings/header.html:8
-#: templates/js/translated/company.js:589 templates/js/translated/part.js:480
-#: templates/js/translated/stock.js:505
+#: stock/models.py:1819 templates/InvenTree/settings/header.html:8
+#: templates/js/translated/company.js:642 templates/js/translated/part.js:612
+#: templates/js/translated/stock.js:576
msgid "Value"
msgstr ""
-#: company/models.py:420
+#: company/models.py:422
msgid "Parameter value"
msgstr ""
-#: company/models.py:426 part/models.py:797 part/models.py:2204
-#: templates/js/translated/company.js:595 templates/js/translated/part.js:486
+#: company/models.py:428 part/models.py:799 part/models.py:2220
+#: templates/js/translated/company.js:648 templates/js/translated/part.js:618
msgid "Units"
msgstr ""
-#: company/models.py:427
+#: company/models.py:429
msgid "Parameter units"
msgstr ""
-#: company/models.py:494 company/templates/company/company_base.html:121
+#: company/models.py:501
+msgid "Linked manufacturer part must reference the same base part"
+msgstr ""
+
+#: company/models.py:544 company/templates/company/company_base.html:121
#: company/templates/company/supplier_part.html:88 order/models.py:260
#: order/templates/order/order_base.html:92
#: order/templates/order/order_wizard/select_pos.html:30 part/bom.py:175
#: part/bom.py:286 stock/templates/stock/item_base.html:383
-#: templates/js/translated/company.js:291
-#: templates/js/translated/company.js:713 templates/js/translated/order.js:254
+#: templates/js/translated/company.js:336
+#: templates/js/translated/company.js:768 templates/js/translated/order.js:328
+#: templates/js/translated/part.js:203
msgid "Supplier"
msgstr ""
-#: company/models.py:495
+#: company/models.py:545 templates/js/translated/part.js:204
msgid "Select supplier"
msgstr ""
-#: company/models.py:500 company/templates/company/supplier_part.html:92
-#: order/templates/order/purchase_order_detail.html:318 part/bom.py:176
-#: part/bom.py:287
+#: company/models.py:550 company/templates/company/supplier_part.html:92
+#: part/bom.py:176 part/bom.py:287 templates/js/translated/order.js:492
+#: templates/js/translated/part.js:214
msgid "SKU"
msgstr ""
-#: company/models.py:501
+#: company/models.py:551 templates/js/translated/part.js:215
msgid "Supplier stock keeping unit"
msgstr ""
-#: company/models.py:508
+#: company/models.py:558
msgid "Select manufacturer part"
msgstr ""
-#: company/models.py:514
+#: company/models.py:564
msgid "URL for external supplier part link"
msgstr ""
-#: company/models.py:520
+#: company/models.py:570
msgid "Supplier part description"
msgstr ""
-#: company/models.py:525 company/templates/company/supplier_part.html:120
-#: part/models.py:2352 report/templates/report/inventree_po_report.html:93
+#: company/models.py:575 company/templates/company/supplier_part.html:120
+#: part/models.py:2368 report/templates/report/inventree_po_report.html:93
#: report/templates/report/inventree_so_report.html:93
msgid "Note"
msgstr ""
-#: company/models.py:529 part/models.py:1590
+#: company/models.py:579 part/models.py:1599
msgid "base cost"
msgstr ""
-#: company/models.py:529 part/models.py:1590
+#: company/models.py:579 part/models.py:1599
msgid "Minimum charge (e.g. stocking fee)"
msgstr ""
-#: company/models.py:531 company/templates/company/supplier_part.html:113
-#: stock/models.py:472 stock/templates/stock/item_base.html:324
-#: templates/js/translated/company.js:789 templates/js/translated/stock.js:1086
+#: company/models.py:581 company/templates/company/supplier_part.html:113
+#: stock/models.py:478 stock/templates/stock/item_base.html:324
+#: templates/js/translated/company.js:844 templates/js/translated/stock.js:1057
msgid "Packaging"
msgstr ""
-#: company/models.py:531
+#: company/models.py:581
msgid "Part packaging"
msgstr ""
-#: company/models.py:533 part/models.py:1592
+#: company/models.py:583 part/models.py:1601
msgid "multiple"
msgstr ""
-#: company/models.py:533
+#: company/models.py:583
msgid "Order multiple"
msgstr ""
@@ -2420,7 +2502,7 @@ msgstr ""
#: company/templates/company/company_base.html:9
#: company/templates/company/company_base.html:35
-#: templates/InvenTree/search.html:304 templates/js/translated/company.js:276
+#: templates/InvenTree/search.html:304 templates/js/translated/company.js:321
msgid "Company"
msgstr ""
@@ -2435,7 +2517,7 @@ msgid "Download image from URL"
msgstr ""
#: company/templates/company/company_base.html:46
-#: templates/js/translated/order.js:83
+#: templates/js/translated/order.js:117
msgid "Create Purchase Order"
msgstr ""
@@ -2460,16 +2542,16 @@ msgstr ""
msgid "Phone"
msgstr ""
-#: company/templates/company/company_base.html:126 order/models.py:544
-#: order/templates/order/sales_order_base.html:94 stock/models.py:490
-#: stock/models.py:491 stock/templates/stock/item_base.html:276
-#: templates/js/translated/company.js:283 templates/js/translated/order.js:351
-#: templates/js/translated/stock.js:1467
+#: company/templates/company/company_base.html:126 order/models.py:550
+#: order/templates/order/sales_order_base.html:94 stock/models.py:496
+#: stock/models.py:497 stock/templates/stock/item_base.html:276
+#: templates/js/translated/company.js:328 templates/js/translated/order.js:692
+#: templates/js/translated/stock.js:1608
msgid "Customer"
msgstr ""
#: company/templates/company/company_base.html:193
-#: part/templates/part/part_base.html:405
+#: part/templates/part/part_base.html:418
msgid "Upload Image"
msgstr ""
@@ -2490,8 +2572,8 @@ msgstr "新しいサプライヤー・パーツを作成"
msgid "New Supplier Part"
msgstr "新しいサプライヤー・パーツ"
-#: company/templates/company/detail.html:28
-#: company/templates/company/detail.html:70
+#: company/templates/company/detail.html:27
+#: company/templates/company/detail.html:67
#: company/templates/company/manufacturer_part.html:112
#: company/templates/company/manufacturer_part.html:136
#: part/templates/part/category.html:135 part/templates/part/detail.html:292
@@ -2499,106 +2581,106 @@ msgstr "新しいサプライヤー・パーツ"
msgid "Options"
msgstr ""
-#: company/templates/company/detail.html:33
-#: company/templates/company/detail.html:75
+#: company/templates/company/detail.html:32
+#: company/templates/company/detail.html:72
#: part/templates/part/category.html:140
msgid "Order parts"
msgstr "パーツの注文"
-#: company/templates/company/detail.html:36
-#: company/templates/company/detail.html:78
+#: company/templates/company/detail.html:35
+#: company/templates/company/detail.html:75
msgid "Delete parts"
msgstr "パーツを削除"
-#: company/templates/company/detail.html:36
-#: company/templates/company/detail.html:78
+#: company/templates/company/detail.html:35
+#: company/templates/company/detail.html:75
msgid "Delete Parts"
msgstr "パーツを削除"
-#: company/templates/company/detail.html:56 templates/InvenTree/search.html:149
+#: company/templates/company/detail.html:54 templates/InvenTree/search.html:149
msgid "Manufacturer Parts"
msgstr "メーカー・パーツ"
-#: company/templates/company/detail.html:64
+#: company/templates/company/detail.html:62
msgid "Create new manufacturer part"
msgstr "新しいメーカー・パーツを作成"
-#: company/templates/company/detail.html:65 part/templates/part/detail.html:312
+#: company/templates/company/detail.html:63 part/templates/part/detail.html:312
msgid "New Manufacturer Part"
msgstr "新しいメーカ―・パーツ"
-#: company/templates/company/detail.html:97
+#: company/templates/company/detail.html:93
msgid "Supplier Stock"
msgstr ""
-#: company/templates/company/detail.html:106
-#: company/templates/company/navbar.html:40
-#: company/templates/company/navbar.html:43
+#: company/templates/company/detail.html:102
+#: company/templates/company/navbar.html:46
+#: company/templates/company/navbar.html:49
#: order/templates/order/purchase_orders.html:8
#: order/templates/order/purchase_orders.html:13
-#: part/templates/part/detail.html:50 part/templates/part/navbar.html:71
-#: part/templates/part/navbar.html:74 templates/InvenTree/index.html:260
+#: part/templates/part/detail.html:50 part/templates/part/navbar.html:82
+#: part/templates/part/navbar.html:85 templates/InvenTree/index.html:260
#: templates/InvenTree/search.html:325
#: templates/InvenTree/settings/navbar.html:107
-#: templates/InvenTree/settings/navbar.html:109 templates/navbar.html:37
+#: templates/InvenTree/settings/navbar.html:109 templates/navbar.html:44
#: users/models.py:45
msgid "Purchase Orders"
msgstr ""
-#: company/templates/company/detail.html:112
+#: company/templates/company/detail.html:108
#: order/templates/order/purchase_orders.html:20
msgid "Create new purchase order"
msgstr ""
-#: company/templates/company/detail.html:113
+#: company/templates/company/detail.html:109
#: order/templates/order/purchase_orders.html:21
msgid "New Purchase Order"
msgstr ""
-#: company/templates/company/detail.html:128
-#: company/templates/company/navbar.html:49
-#: company/templates/company/navbar.html:52
+#: company/templates/company/detail.html:124
+#: company/templates/company/navbar.html:55
+#: company/templates/company/navbar.html:58
#: order/templates/order/sales_orders.html:8
#: order/templates/order/sales_orders.html:13
-#: part/templates/part/detail.html:71 part/templates/part/navbar.html:79
-#: part/templates/part/navbar.html:82 templates/InvenTree/index.html:291
+#: part/templates/part/detail.html:71 part/templates/part/navbar.html:91
+#: part/templates/part/navbar.html:94 templates/InvenTree/index.html:291
#: templates/InvenTree/search.html:345
#: templates/InvenTree/settings/navbar.html:113
-#: templates/InvenTree/settings/navbar.html:115 templates/navbar.html:46
+#: templates/InvenTree/settings/navbar.html:115 templates/navbar.html:55
#: users/models.py:46
msgid "Sales Orders"
msgstr ""
-#: company/templates/company/detail.html:134
+#: company/templates/company/detail.html:130
#: order/templates/order/sales_orders.html:20
msgid "Create new sales order"
msgstr ""
-#: company/templates/company/detail.html:135
+#: company/templates/company/detail.html:131
#: order/templates/order/sales_orders.html:21
msgid "New Sales Order"
msgstr ""
-#: company/templates/company/detail.html:151
-#: company/templates/company/navbar.html:55
-#: company/templates/company/navbar.html:58
-#: templates/js/translated/build.js:597
+#: company/templates/company/detail.html:147
+#: company/templates/company/navbar.html:61
+#: company/templates/company/navbar.html:64
+#: templates/js/translated/build.js:620
msgid "Assigned Stock"
msgstr ""
-#: company/templates/company/detail.html:169
+#: company/templates/company/detail.html:165
msgid "Company Notes"
msgstr ""
#: company/templates/company/detail.html:364
#: company/templates/company/manufacturer_part.html:200
-#: part/templates/part/detail.html:826
+#: part/templates/part/detail.html:357
msgid "Delete Supplier Parts?"
msgstr ""
#: company/templates/company/detail.html:365
#: company/templates/company/manufacturer_part.html:201
-#: part/templates/part/detail.html:827
+#: part/templates/part/detail.html:358
msgid "All selected supplier parts will be deleted"
msgstr ""
@@ -2609,17 +2691,17 @@ msgstr ""
#: company/templates/company/manufacturer_part.html:40
#: company/templates/company/supplier_part.html:40
#: company/templates/company/supplier_part.html:146
-#: part/templates/part/detail.html:55 part/templates/part/part_base.html:109
+#: part/templates/part/detail.html:55 part/templates/part/part_base.html:116
msgid "Order part"
msgstr "パーツの注文"
#: company/templates/company/manufacturer_part.html:45
-#: templates/js/translated/company.js:511
+#: templates/js/translated/company.js:560
msgid "Edit manufacturer part"
msgstr "メーカー・パーツの編集"
#: company/templates/company/manufacturer_part.html:49
-#: templates/js/translated/company.js:512
+#: templates/js/translated/company.js:561
msgid "Delete manufacturer part"
msgstr "メーカー・パーツを削除"
@@ -2634,9 +2716,9 @@ msgstr "内部パーツ"
#: company/templates/company/manufacturer_part.html:103
#: company/templates/company/manufacturer_part_navbar.html:21
-#: company/views.py:49 part/templates/part/navbar.html:65
-#: part/templates/part/navbar.html:68 part/templates/part/prices.html:144
-#: templates/InvenTree/search.html:316 templates/navbar.html:35
+#: company/views.py:49 part/templates/part/navbar.html:75
+#: part/templates/part/navbar.html:78 part/templates/part/prices.html:163
+#: templates/InvenTree/search.html:316 templates/navbar.html:41
msgid "Suppliers"
msgstr ""
@@ -2649,8 +2731,8 @@ msgstr ""
#: company/templates/company/manufacturer_part.html:138
#: company/templates/company/manufacturer_part.html:239
#: part/templates/part/detail.html:214 part/templates/part/detail.html:294
-#: part/templates/part/detail.html:317 templates/js/translated/company.js:377
-#: users/models.py:194
+#: part/templates/part/detail.html:317 templates/js/translated/company.js:424
+#: templates/js/translated/helpers.js:31 users/models.py:194
msgid "Delete"
msgstr ""
@@ -2659,8 +2741,8 @@ msgstr ""
#: company/templates/company/manufacturer_part_navbar.html:14
#: part/templates/part/category_navbar.html:38
#: part/templates/part/category_navbar.html:41
-#: part/templates/part/detail.html:155 part/templates/part/navbar.html:14
-#: part/templates/part/navbar.html:17
+#: part/templates/part/detail.html:155 part/templates/part/navbar.html:20
+#: part/templates/part/navbar.html:23
msgid "Parameters"
msgstr ""
@@ -2676,7 +2758,7 @@ msgid "Delete parameters"
msgstr ""
#: company/templates/company/manufacturer_part.html:176
-#: part/templates/part/detail.html:719
+#: part/templates/part/detail.html:834
msgid "Add Parameter"
msgstr ""
@@ -2693,18 +2775,18 @@ msgid "Manufacturer Part Stock"
msgstr "メーカー・パーツの在庫"
#: company/templates/company/manufacturer_part_navbar.html:29
-#: company/templates/company/navbar.html:34
+#: company/templates/company/navbar.html:39
#: company/templates/company/supplier_part_navbar.html:15
-#: part/templates/part/navbar.html:31 stock/api.py:53
+#: part/templates/part/navbar.html:38 stock/api.py:54
#: stock/templates/stock/loc_link.html:7 stock/templates/stock/location.html:36
#: stock/templates/stock/stock_app_base.html:10
#: templates/InvenTree/index.html:150 templates/InvenTree/search.html:196
#: templates/InvenTree/search.html:232
#: templates/InvenTree/settings/navbar.html:95
#: templates/InvenTree/settings/navbar.html:97
-#: templates/js/translated/part.js:401 templates/js/translated/part.js:626
-#: templates/js/translated/part.js:786 templates/js/translated/stock.js:133
-#: templates/js/translated/stock.js:935 templates/navbar.html:26
+#: templates/js/translated/part.js:529 templates/js/translated/part.js:758
+#: templates/js/translated/part.js:934 templates/js/translated/stock.js:202
+#: templates/js/translated/stock.js:850 templates/navbar.html:32
msgid "Stock"
msgstr ""
@@ -2717,41 +2799,41 @@ msgstr "メーカー・パーツの注文"
msgid "Orders"
msgstr ""
-#: company/templates/company/navbar.html:13
-#: company/templates/company/navbar.html:16
+#: company/templates/company/navbar.html:17
+#: company/templates/company/navbar.html:20
msgid "Manufactured Parts"
msgstr ""
-#: company/templates/company/navbar.html:22
-#: company/templates/company/navbar.html:25
+#: company/templates/company/navbar.html:26
+#: company/templates/company/navbar.html:29
msgid "Supplied Parts"
msgstr ""
-#: company/templates/company/navbar.html:31 part/templates/part/navbar.html:28
+#: company/templates/company/navbar.html:36 part/templates/part/navbar.html:35
#: stock/templates/stock/location.html:119
#: stock/templates/stock/location.html:134
#: stock/templates/stock/location.html:148
#: stock/templates/stock/location_navbar.html:18
#: stock/templates/stock/location_navbar.html:21
-#: templates/InvenTree/search.html:198 templates/js/translated/stock.js:1366
+#: templates/InvenTree/search.html:198 templates/js/translated/stock.js:1507
#: templates/stats.html:93 templates/stats.html:102 users/models.py:43
msgid "Stock Items"
msgstr ""
#: company/templates/company/supplier_part.html:7
-#: company/templates/company/supplier_part.html:24 stock/models.py:457
+#: company/templates/company/supplier_part.html:24 stock/models.py:463
#: stock/templates/stock/item_base.html:388
-#: templates/js/translated/company.js:729 templates/js/translated/stock.js:1058
+#: templates/js/translated/company.js:784 templates/js/translated/stock.js:1014
msgid "Supplier Part"
msgstr ""
#: company/templates/company/supplier_part.html:44
-#: templates/js/translated/company.js:802
+#: templates/js/translated/company.js:857
msgid "Edit supplier part"
msgstr ""
#: company/templates/company/supplier_part.html:48
-#: templates/js/translated/company.js:803
+#: templates/js/translated/company.js:858
msgid "Delete supplier part"
msgstr ""
@@ -2775,13 +2857,13 @@ msgid "Order Part"
msgstr ""
#: company/templates/company/supplier_part.html:158
-#: part/templates/part/navbar.html:58 part/templates/part/prices.html:7
+#: part/templates/part/navbar.html:67 part/templates/part/prices.html:7
msgid "Pricing Information"
msgstr ""
#: company/templates/company/supplier_part.html:164
#: company/templates/company/supplier_part.html:265
-#: part/templates/part/prices.html:253 part/views.py:1722
+#: part/templates/part/prices.html:271 part/views.py:1730
msgid "Add Price Break"
msgstr ""
@@ -2789,11 +2871,11 @@ msgstr ""
msgid "No price break information found"
msgstr ""
-#: company/templates/company/supplier_part.html:199 part/views.py:1784
+#: company/templates/company/supplier_part.html:199 part/views.py:1792
msgid "Delete Price Break"
msgstr ""
-#: company/templates/company/supplier_part.html:213 part/views.py:1770
+#: company/templates/company/supplier_part.html:213 part/views.py:1778
msgid "Edit Price Break"
msgstr ""
@@ -2817,8 +2899,8 @@ msgstr ""
msgid "New Supplier"
msgstr ""
-#: company/views.py:55 part/templates/part/prices.html:148
-#: templates/InvenTree/search.html:306 templates/navbar.html:36
+#: company/views.py:55 part/templates/part/prices.html:167
+#: templates/InvenTree/search.html:306 templates/navbar.html:42
msgid "Manufacturers"
msgstr ""
@@ -2827,7 +2909,7 @@ msgid "New Manufacturer"
msgstr ""
#: company/views.py:61 templates/InvenTree/search.html:336
-#: templates/navbar.html:45
+#: templates/navbar.html:53
msgid "Customers"
msgstr ""
@@ -2929,6 +3011,10 @@ msgstr ""
msgid "Part query filters (comma-separated value of key=value pairs)"
msgstr ""
+#: order/api.py:302
+msgid "Destination location must be specified"
+msgstr ""
+
#: order/forms.py:30 order/templates/order/order_base.html:47
msgid "Place order"
msgstr ""
@@ -2978,11 +3064,11 @@ msgstr ""
msgid "Order notes"
msgstr ""
-#: order/models.py:247 order/models.py:534
+#: order/models.py:247 order/models.py:540
msgid "Order reference"
msgstr ""
-#: order/models.py:252 order/models.py:549
+#: order/models.py:252 order/models.py:555
msgid "Purchase order status"
msgstr ""
@@ -2991,7 +3077,7 @@ msgid "Company from which the items are being ordered"
msgstr ""
#: order/models.py:264 order/templates/order/order_base.html:98
-#: templates/js/translated/order.js:263
+#: templates/js/translated/order.js:337
msgid "Supplier Reference"
msgstr ""
@@ -3023,7 +3109,7 @@ msgstr ""
msgid "Date order was completed"
msgstr ""
-#: order/models.py:313 stock/models.py:345 stock/models.py:1060
+#: order/models.py:313 stock/models.py:351 stock/models.py:1072
msgid "Quantity must be greater than zero"
msgstr ""
@@ -3031,150 +3117,182 @@ msgstr ""
msgid "Part supplier must match PO supplier"
msgstr ""
-#: order/models.py:416
+#: order/models.py:421
msgid "Lines can only be received against an order marked as 'Placed'"
msgstr ""
-#: order/models.py:420
+#: order/models.py:425
msgid "Quantity must be an integer"
msgstr ""
-#: order/models.py:422
+#: order/models.py:427
msgid "Quantity must be a positive number"
msgstr ""
-#: order/models.py:545
+#: order/models.py:551
msgid "Company to which the items are being sold"
msgstr ""
-#: order/models.py:551
+#: order/models.py:557
msgid "Customer Reference "
msgstr ""
-#: order/models.py:551
+#: order/models.py:557
msgid "Customer order reference code"
msgstr ""
-#: order/models.py:556
+#: order/models.py:562
msgid "Target date for order completion. Order will be overdue after this date."
msgstr ""
-#: order/models.py:559 templates/js/translated/order.js:392
+#: order/models.py:565 templates/js/translated/order.js:733
msgid "Shipment Date"
msgstr ""
-#: order/models.py:566
+#: order/models.py:572
msgid "shipped by"
msgstr ""
-#: order/models.py:610
+#: order/models.py:616
msgid "SalesOrder cannot be shipped as it is not currently pending"
msgstr ""
-#: order/models.py:707
+#: order/models.py:713
msgid "Item quantity"
msgstr ""
-#: order/models.py:713
+#: order/models.py:719
msgid "Line item reference"
msgstr ""
-#: order/models.py:715
+#: order/models.py:721
msgid "Line item notes"
msgstr ""
-#: order/models.py:745 order/models.py:823 templates/js/translated/order.js:442
+#: order/models.py:751 order/models.py:835 templates/js/translated/order.js:785
msgid "Order"
msgstr ""
-#: order/models.py:746 order/templates/order/order_base.html:9
+#: order/models.py:752 order/templates/order/order_base.html:9
#: order/templates/order/order_base.html:24
#: report/templates/report/inventree_po_report.html:77
#: stock/templates/stock/item_base.html:338
-#: templates/js/translated/order.js:232 templates/js/translated/stock.js:1037
-#: templates/js/translated/stock.js:1448
+#: templates/js/translated/order.js:306 templates/js/translated/stock.js:991
+#: templates/js/translated/stock.js:1589
msgid "Purchase Order"
msgstr ""
-#: order/models.py:767
+#: order/models.py:773
msgid "Supplier part"
msgstr ""
-#: order/models.py:770 order/templates/order/order_base.html:131
-#: order/templates/order/purchase_order_detail.html:388
+#: order/models.py:780 order/templates/order/order_base.html:131
#: order/templates/order/receive_parts.html:22
#: order/templates/order/sales_order_base.html:133
+#: templates/js/translated/order.js:573
msgid "Received"
msgstr ""
-#: order/models.py:770
+#: order/models.py:781
msgid "Number of items received"
msgstr ""
-#: order/models.py:776 part/templates/part/prices.html:157 stock/models.py:582
-#: stock/templates/stock/item_base.html:345
-#: templates/js/translated/stock.js:1081
+#: order/models.py:788 part/templates/part/prices.html:176 stock/models.py:588
+#: stock/serializers.py:147 stock/templates/stock/item_base.html:345
+#: templates/js/translated/stock.js:1045
msgid "Purchase Price"
msgstr ""
-#: order/models.py:777
+#: order/models.py:789
msgid "Unit purchase price"
msgstr ""
-#: order/models.py:785
+#: order/models.py:797
msgid "Where does the Purchaser want this item to be stored?"
msgstr ""
-#: order/models.py:831 part/templates/part/part_pricing.html:97
-#: part/templates/part/prices.html:97 part/templates/part/prices.html:266
+#: order/models.py:843 part/templates/part/part_pricing.html:112
+#: part/templates/part/prices.html:116 part/templates/part/prices.html:284
msgid "Sale Price"
msgstr ""
-#: order/models.py:832
+#: order/models.py:844
msgid "Unit sale price"
msgstr ""
-#: order/models.py:911 order/models.py:913
+#: order/models.py:923 order/models.py:925
msgid "Stock item has not been assigned"
msgstr ""
-#: order/models.py:917
+#: order/models.py:929
msgid "Cannot allocate stock item to a line with a different part"
msgstr ""
-#: order/models.py:919
+#: order/models.py:931
msgid "Cannot allocate stock to a line without a part"
msgstr ""
-#: order/models.py:922
+#: order/models.py:934
msgid "Allocation quantity cannot exceed stock quantity"
msgstr ""
-#: order/models.py:932
+#: order/models.py:944
msgid "Quantity must be 1 for serialized stock item"
msgstr ""
-#: order/models.py:937
+#: order/models.py:949
msgid "Line"
msgstr ""
-#: order/models.py:948
+#: order/models.py:960
msgid "Item"
msgstr ""
-#: order/models.py:949
+#: order/models.py:961
msgid "Select stock item to allocate"
msgstr ""
-#: order/models.py:952
+#: order/models.py:964
msgid "Enter stock allocation quantity"
msgstr ""
-#: order/serializers.py:139
+#: order/serializers.py:166
msgid "Purchase price currency"
msgstr ""
-#: order/serializers.py:360
+#: order/serializers.py:201
+msgid "Line Item"
+msgstr ""
+
+#: order/serializers.py:207
+msgid "Line item does not match purchase order"
+msgstr ""
+
+#: order/serializers.py:217 order/serializers.py:276
+msgid "Select destination location for received items"
+msgstr ""
+
+#: order/serializers.py:234
+msgid "Barcode Hash"
+msgstr ""
+
+#: order/serializers.py:235
+msgid "Unique identifier field"
+msgstr ""
+
+#: order/serializers.py:250
+msgid "Barcode is already in use"
+msgstr ""
+
+#: order/serializers.py:289
+msgid "Line items must be provided"
+msgstr ""
+
+#: order/serializers.py:299
+msgid "Supplied barcode values must be unique"
+msgstr ""
+
+#: order/serializers.py:514
msgid "Sale price currency"
msgstr ""
@@ -3227,14 +3345,12 @@ msgid "Edit Purchase Order"
msgstr ""
#: order/templates/order/order_base.html:196
-#: order/templates/order/purchase_order_detail.html:265
-#: stock/templates/stock/location.html:250
+#: stock/templates/stock/location.html:250 templates/js/translated/order.js:437
msgid "New Location"
msgstr ""
#: order/templates/order/order_base.html:197
-#: order/templates/order/purchase_order_detail.html:266
-#: stock/templates/stock/location.html:42
+#: stock/templates/stock/location.html:42 templates/js/translated/order.js:438
msgid "Create new stock location"
msgstr ""
@@ -3336,7 +3452,7 @@ msgid "Upload File for Purchase Order"
msgstr ""
#: order/templates/order/order_wizard/po_upload.html:18
-#: part/templates/part/bom_upload/upload_file.html:24
+#: part/templates/part/bom_upload/upload_file.html:34
#: part/templates/part/import_wizard/ajax_part_upload.html:10
#: part/templates/part/import_wizard/part_upload.html:21
#, python-format
@@ -3369,7 +3485,7 @@ msgstr ""
#: order/templates/order/order_wizard/select_parts.html:65
#, python-format
-msgid "Select a supplier for %(name)s"
+msgid "Select a supplier for %(name)s"
msgstr ""
#: order/templates/order/order_wizard/select_parts.html:77
@@ -3386,7 +3502,7 @@ msgid "Select existing purchase orders, or create new orders."
msgstr ""
#: order/templates/order/order_wizard/select_pos.html:31
-#: templates/js/translated/order.js:289 templates/js/translated/order.js:397
+#: templates/js/translated/order.js:363 templates/js/translated/order.js:738
msgid "Items"
msgstr ""
@@ -3425,9 +3541,9 @@ msgid "Purchase Order Items"
msgstr ""
#: order/templates/order/purchase_order_detail.html:23
-#: order/templates/order/purchase_order_detail.html:202
+#: order/templates/order/purchase_order_detail.html:203
#: order/templates/order/sales_order_detail.html:23
-#: order/templates/order/sales_order_detail.html:176
+#: order/templates/order/sales_order_detail.html:177
msgid "Add Line Item"
msgstr ""
@@ -3436,49 +3552,6 @@ msgstr ""
msgid "Order Notes"
msgstr ""
-#: order/templates/order/purchase_order_detail.html:238
-#: order/templates/order/sales_order_detail.html:518
-msgid "Edit Line Item"
-msgstr ""
-
-#: order/templates/order/purchase_order_detail.html:248
-#: order/templates/order/sales_order_detail.html:528
-msgid "Delete Line Item"
-msgstr ""
-
-#: order/templates/order/purchase_order_detail.html:279
-msgid "No line items found"
-msgstr ""
-
-#: order/templates/order/purchase_order_detail.html:307
-#: order/templates/order/sales_order_detail.html:353
-msgid "Total"
-msgstr ""
-
-#: order/templates/order/purchase_order_detail.html:360
-#: order/templates/order/sales_order_detail.html:376
-#: templates/js/translated/part.js:1128 templates/js/translated/part.js:1317
-msgid "Unit Price"
-msgstr ""
-
-#: order/templates/order/purchase_order_detail.html:367
-#: order/templates/order/sales_order_detail.html:383
-msgid "Total price"
-msgstr ""
-
-#: order/templates/order/purchase_order_detail.html:431
-#: order/templates/order/sales_order_detail.html:489
-msgid "Edit line item"
-msgstr ""
-
-#: order/templates/order/purchase_order_detail.html:432
-msgid "Delete line item"
-msgstr ""
-
-#: order/templates/order/purchase_order_detail.html:437
-msgid "Receive line item"
-msgstr ""
-
#: order/templates/order/purchase_orders.html:24
#: order/templates/order/sales_orders.html:24
msgid "Print Order Reports"
@@ -3486,18 +3559,18 @@ msgstr ""
#: order/templates/order/receive_parts.html:8
#, python-format
-msgid "Receive outstanding parts for %(order)s - %(desc)s"
-msgstr "%(order)s - %(desc)s の未処理のパーツを受け取る"
+msgid "Receive outstanding parts for %(order)s - %(desc)s"
+msgstr ""
-#: order/templates/order/receive_parts.html:14 part/api.py:49
-#: part/models.py:296 part/templates/part/cat_link.html:7
+#: order/templates/order/receive_parts.html:14 part/api.py:54
+#: part/models.py:298 part/templates/part/cat_link.html:7
#: part/templates/part/category.html:108 part/templates/part/category.html:122
#: part/templates/part/category_navbar.html:21
#: part/templates/part/category_navbar.html:24
#: templates/InvenTree/index.html:102 templates/InvenTree/search.html:114
#: templates/InvenTree/settings/navbar.html:83
#: templates/InvenTree/settings/navbar.html:85
-#: templates/js/translated/part.js:987 templates/navbar.html:23
+#: templates/js/translated/part.js:1154 templates/navbar.html:29
#: templates/stats.html:80 templates/stats.html:89 users/models.py:41
msgid "Parts"
msgstr "パーツ"
@@ -3511,7 +3584,7 @@ msgid "Order Code"
msgstr ""
#: order/templates/order/receive_parts.html:21
-#: part/templates/part/part_base.html:160 templates/js/translated/part.js:802
+#: part/templates/part/part_base.html:167 templates/js/translated/part.js:949
msgid "On Order"
msgstr ""
@@ -3540,7 +3613,7 @@ msgid "Sales Order Details"
msgstr ""
#: order/templates/order/sales_order_base.html:100
-#: templates/js/translated/order.js:364
+#: templates/js/translated/order.js:705
msgid "Customer Reference"
msgstr ""
@@ -3563,71 +3636,102 @@ msgstr ""
msgid "Sales Order Items"
msgstr ""
-#: order/templates/order/sales_order_detail.html:225
-#: templates/js/translated/bom.js:378 templates/js/translated/build.js:759
-#: templates/js/translated/build.js:1202
+#: order/templates/order/sales_order_detail.html:226
+#: templates/js/translated/bom.js:394 templates/js/translated/build.js:782
+#: templates/js/translated/build.js:1219
msgid "Actions"
msgstr ""
-#: order/templates/order/sales_order_detail.html:232
-#: templates/js/translated/build.js:645 templates/js/translated/build.js:1011
+#: order/templates/order/sales_order_detail.html:233
+#: templates/js/translated/build.js:668 templates/js/translated/build.js:1030
msgid "Edit stock allocation"
msgstr ""
-#: order/templates/order/sales_order_detail.html:233
-#: templates/js/translated/build.js:647 templates/js/translated/build.js:1012
+#: order/templates/order/sales_order_detail.html:234
+#: templates/js/translated/build.js:670 templates/js/translated/build.js:1031
msgid "Delete stock allocation"
msgstr ""
-#: order/templates/order/sales_order_detail.html:306
+#: order/templates/order/sales_order_detail.html:307
msgid "No matching line items"
msgstr ""
-#: order/templates/order/sales_order_detail.html:336
+#: order/templates/order/sales_order_detail.html:337
msgid "ID"
msgstr ""
-#: order/templates/order/sales_order_detail.html:404
-#: templates/js/translated/build.js:710 templates/js/translated/build.js:1007
+#: order/templates/order/sales_order_detail.html:354
+#: templates/js/translated/order.js:481
+msgid "Total"
+msgstr ""
+
+#: order/templates/order/sales_order_detail.html:377
+#: templates/js/translated/order.js:534 templates/js/translated/part.js:1296
+#: templates/js/translated/part.js:1507
+msgid "Unit Price"
+msgstr ""
+
+#: order/templates/order/sales_order_detail.html:384
+#: templates/js/translated/order.js:543
+msgid "Total price"
+msgstr ""
+
+#: order/templates/order/sales_order_detail.html:405
+#: templates/js/translated/build.js:733 templates/js/translated/build.js:1026
msgid "Allocated"
msgstr ""
-#: order/templates/order/sales_order_detail.html:406
+#: order/templates/order/sales_order_detail.html:407
msgid "Fulfilled"
msgstr ""
-#: order/templates/order/sales_order_detail.html:443
+#: order/templates/order/sales_order_detail.html:444
msgid "PO"
msgstr ""
-#: order/templates/order/sales_order_detail.html:473
+#: order/templates/order/sales_order_detail.html:474
msgid "Allocate serial numbers"
msgstr ""
-#: order/templates/order/sales_order_detail.html:476
-#: templates/js/translated/build.js:773
+#: order/templates/order/sales_order_detail.html:477
+#: templates/js/translated/build.js:796
msgid "Allocate stock"
msgstr ""
-#: order/templates/order/sales_order_detail.html:479
+#: order/templates/order/sales_order_detail.html:480
msgid "Purchase stock"
msgstr ""
-#: order/templates/order/sales_order_detail.html:483
-#: templates/js/translated/build.js:766 templates/js/translated/build.js:1210
+#: order/templates/order/sales_order_detail.html:484
+#: templates/js/translated/build.js:789 templates/js/translated/build.js:1227
msgid "Build stock"
msgstr ""
-#: order/templates/order/sales_order_detail.html:486
-#: order/templates/order/sales_order_detail.html:605
+#: order/templates/order/sales_order_detail.html:487
+#: order/templates/order/sales_order_detail.html:606
msgid "Calculate price"
msgstr ""
#: order/templates/order/sales_order_detail.html:490
+#: templates/js/translated/order.js:616
+msgid "Edit line item"
+msgstr ""
+
+#: order/templates/order/sales_order_detail.html:491
msgid "Delete line item "
msgstr ""
-#: order/templates/order/sales_order_detail.html:611
+#: order/templates/order/sales_order_detail.html:519
+#: templates/js/translated/order.js:403
+msgid "Edit Line Item"
+msgstr ""
+
+#: order/templates/order/sales_order_detail.html:529
+#: templates/js/translated/order.js:415
+msgid "Delete Line Item"
+msgstr ""
+
+#: order/templates/order/sales_order_detail.html:612
msgid "Update Unit Price"
msgstr ""
@@ -3814,12 +3918,28 @@ msgstr ""
msgid "Updated {part} unit-price to {price} and quantity to {qty}"
msgstr ""
-#: part/bom.py:133 part/models.py:73 part/models.py:731
-#: part/templates/part/category.html:75 part/templates/part/part_base.html:282
+#: part/api.py:700
+msgid "Must be greater than zero"
+msgstr ""
+
+#: part/api.py:704
+msgid "Must be a valid quantity"
+msgstr ""
+
+#: part/api.py:719
+msgid "Specify location for initial part stock"
+msgstr ""
+
+#: part/api.py:750 part/api.py:754 part/api.py:769 part/api.py:773
+msgid "This field is required"
+msgstr ""
+
+#: part/bom.py:133 part/models.py:75 part/models.py:733
+#: part/templates/part/category.html:75 part/templates/part/part_base.html:290
msgid "Default Location"
msgstr ""
-#: part/bom.py:134 part/templates/part/part_base.html:149
+#: part/bom.py:134 part/templates/part/part_base.html:156
msgid "Available Stock"
msgstr ""
@@ -3879,7 +3999,7 @@ msgstr ""
msgid "Include part supplier data in exported BOM"
msgstr ""
-#: part/forms.py:96 part/models.py:2234
+#: part/forms.py:96 part/models.py:2250
msgid "Parent Part"
msgstr ""
@@ -3923,391 +4043,391 @@ msgstr ""
msgid "Input quantity for price calculation"
msgstr ""
-#: part/models.py:74
+#: part/models.py:76
msgid "Default location for parts in this category"
msgstr ""
-#: part/models.py:77
+#: part/models.py:79
msgid "Default keywords"
msgstr ""
-#: part/models.py:77
+#: part/models.py:79
msgid "Default keywords for parts in this category"
msgstr ""
-#: part/models.py:87 part/models.py:2280
+#: part/models.py:89 part/models.py:2296
#: part/templates/part/part_app_base.html:10
msgid "Part Category"
msgstr ""
-#: part/models.py:88 part/templates/part/category.html:32
+#: part/models.py:90 part/templates/part/category.html:32
#: part/templates/part/category.html:103 templates/InvenTree/search.html:127
#: templates/stats.html:84 users/models.py:40
msgid "Part Categories"
msgstr ""
-#: part/models.py:381
+#: part/models.py:383
msgid "Invalid choice for parent part"
msgstr ""
-#: part/models.py:433 part/models.py:445
+#: part/models.py:435 part/models.py:447
#, python-brace-format
msgid "Part '{p1}' is used in BOM for '{p2}' (recursive)"
msgstr ""
-#: part/models.py:542
+#: part/models.py:544
msgid "Next available serial numbers are"
msgstr ""
-#: part/models.py:546
+#: part/models.py:548
msgid "Next available serial number is"
msgstr ""
-#: part/models.py:551
+#: part/models.py:553
msgid "Most recent serial number is"
msgstr ""
-#: part/models.py:630
+#: part/models.py:632
msgid "Duplicate IPN not allowed in part settings"
msgstr ""
-#: part/models.py:655
+#: part/models.py:657
msgid "Part name"
msgstr ""
-#: part/models.py:662
+#: part/models.py:664
msgid "Is Template"
msgstr ""
-#: part/models.py:663
+#: part/models.py:665
msgid "Is this part a template part?"
msgstr ""
-#: part/models.py:673
+#: part/models.py:675
msgid "Is this part a variant of another part?"
msgstr ""
-#: part/models.py:674
+#: part/models.py:676
msgid "Variant Of"
msgstr ""
-#: part/models.py:680
+#: part/models.py:682
msgid "Part description"
msgstr ""
-#: part/models.py:685 part/templates/part/category.html:82
-#: part/templates/part/part_base.html:251
+#: part/models.py:687 part/templates/part/category.html:82
+#: part/templates/part/part_base.html:259
msgid "Keywords"
msgstr ""
-#: part/models.py:686
+#: part/models.py:688
msgid "Part keywords to improve visibility in search results"
msgstr ""
-#: part/models.py:693 part/models.py:2279
+#: part/models.py:695 part/models.py:2295
#: part/templates/part/set_category.html:15
#: templates/InvenTree/settings/settings.html:167
-#: templates/js/translated/part.js:773
+#: templates/js/translated/part.js:916
msgid "Category"
msgstr ""
-#: part/models.py:694
+#: part/models.py:696
msgid "Part category"
msgstr ""
-#: part/models.py:699 part/templates/part/part_base.html:227
-#: templates/js/translated/part.js:389 templates/js/translated/part.js:617
+#: part/models.py:701 part/templates/part/part_base.html:235
+#: templates/js/translated/part.js:517 templates/js/translated/part.js:749
msgid "IPN"
msgstr ""
-#: part/models.py:700
+#: part/models.py:702
msgid "Internal Part Number"
msgstr ""
-#: part/models.py:706
+#: part/models.py:708
msgid "Part revision or version number"
msgstr ""
-#: part/models.py:707 part/templates/part/part_base.html:244
-#: report/models.py:200 templates/js/translated/part.js:393
+#: part/models.py:709 part/templates/part/part_base.html:252
+#: report/models.py:200 templates/js/translated/part.js:521
msgid "Revision"
msgstr ""
-#: part/models.py:729
+#: part/models.py:731
msgid "Where is this item normally stored?"
msgstr ""
-#: part/models.py:776 part/templates/part/part_base.html:289
+#: part/models.py:778 part/templates/part/part_base.html:297
msgid "Default Supplier"
msgstr ""
-#: part/models.py:777
+#: part/models.py:779
msgid "Default supplier part"
msgstr ""
-#: part/models.py:784
+#: part/models.py:786
msgid "Default Expiry"
msgstr ""
-#: part/models.py:785
+#: part/models.py:787
msgid "Expiry time (in days) for stock items of this part"
msgstr ""
-#: part/models.py:790
+#: part/models.py:792
msgid "Minimum Stock"
msgstr ""
-#: part/models.py:791
+#: part/models.py:793
msgid "Minimum allowed stock level"
msgstr ""
-#: part/models.py:798
+#: part/models.py:800
msgid "Stock keeping units for this part"
msgstr ""
-#: part/models.py:804
+#: part/models.py:806
msgid "Can this part be built from other parts?"
msgstr ""
-#: part/models.py:810
+#: part/models.py:812
msgid "Can this part be used to build other parts?"
msgstr ""
-#: part/models.py:816
+#: part/models.py:818
msgid "Does this part have tracking for unique items?"
msgstr ""
-#: part/models.py:821
+#: part/models.py:823
msgid "Can this part be purchased from external suppliers?"
msgstr ""
-#: part/models.py:826
+#: part/models.py:828
msgid "Can this part be sold to customers?"
msgstr ""
-#: part/models.py:830 templates/js/translated/table_filters.js:21
-#: templates/js/translated/table_filters.js:69
-#: templates/js/translated/table_filters.js:255
-#: templates/js/translated/table_filters.js:324
+#: part/models.py:832 templates/js/translated/table_filters.js:34
+#: templates/js/translated/table_filters.js:82
+#: templates/js/translated/table_filters.js:268
+#: templates/js/translated/table_filters.js:337
msgid "Active"
msgstr ""
-#: part/models.py:831
+#: part/models.py:833
msgid "Is this part active?"
msgstr ""
-#: part/models.py:836
+#: part/models.py:838
msgid "Is this a virtual part, such as a software product or license?"
msgstr ""
-#: part/models.py:841
+#: part/models.py:843
msgid "Part notes - supports Markdown formatting"
msgstr ""
-#: part/models.py:844
+#: part/models.py:846
msgid "BOM checksum"
msgstr ""
-#: part/models.py:844
+#: part/models.py:846
msgid "Stored BOM checksum"
msgstr ""
-#: part/models.py:847
+#: part/models.py:849
msgid "BOM checked by"
msgstr ""
-#: part/models.py:849
+#: part/models.py:851
msgid "BOM checked date"
msgstr ""
-#: part/models.py:853
+#: part/models.py:855
msgid "Creation User"
msgstr ""
-#: part/models.py:1592
+#: part/models.py:1601
msgid "Sell multiple"
msgstr ""
-#: part/models.py:2080
+#: part/models.py:2096
msgid "Test templates can only be created for trackable parts"
msgstr ""
-#: part/models.py:2097
+#: part/models.py:2113
msgid "Test with this name already exists for this part"
msgstr ""
-#: part/models.py:2117 templates/js/translated/part.js:1038
-#: templates/js/translated/stock.js:485
+#: part/models.py:2133 templates/js/translated/part.js:1205
+#: templates/js/translated/stock.js:556
msgid "Test Name"
msgstr ""
-#: part/models.py:2118
+#: part/models.py:2134
msgid "Enter a name for the test"
msgstr ""
-#: part/models.py:2123
+#: part/models.py:2139
msgid "Test Description"
msgstr ""
-#: part/models.py:2124
+#: part/models.py:2140
msgid "Enter description for this test"
msgstr ""
-#: part/models.py:2129 templates/js/translated/part.js:1047
-#: templates/js/translated/table_filters.js:241
+#: part/models.py:2145 templates/js/translated/part.js:1214
+#: templates/js/translated/table_filters.js:254
msgid "Required"
msgstr ""
-#: part/models.py:2130
+#: part/models.py:2146
msgid "Is this test required to pass?"
msgstr ""
-#: part/models.py:2135 templates/js/translated/part.js:1055
+#: part/models.py:2151 templates/js/translated/part.js:1222
msgid "Requires Value"
msgstr ""
-#: part/models.py:2136
+#: part/models.py:2152
msgid "Does this test require a value when adding a test result?"
msgstr ""
-#: part/models.py:2141 templates/js/translated/part.js:1062
+#: part/models.py:2157 templates/js/translated/part.js:1229
msgid "Requires Attachment"
msgstr ""
-#: part/models.py:2142
+#: part/models.py:2158
msgid "Does this test require a file attachment when adding a test result?"
msgstr ""
-#: part/models.py:2153
+#: part/models.py:2169
#, python-brace-format
msgid "Illegal character in template name ({c})"
msgstr ""
-#: part/models.py:2189
+#: part/models.py:2205
msgid "Parameter template name must be unique"
msgstr ""
-#: part/models.py:2197
+#: part/models.py:2213
msgid "Parameter Name"
msgstr ""
-#: part/models.py:2204
+#: part/models.py:2220
msgid "Parameter Units"
msgstr ""
-#: part/models.py:2236 part/models.py:2285 part/models.py:2286
+#: part/models.py:2252 part/models.py:2301 part/models.py:2302
#: templates/InvenTree/settings/settings.html:162
msgid "Parameter Template"
msgstr ""
-#: part/models.py:2238
+#: part/models.py:2254
msgid "Data"
msgstr ""
-#: part/models.py:2238
+#: part/models.py:2254
msgid "Parameter Value"
msgstr ""
-#: part/models.py:2290 templates/InvenTree/settings/settings.html:171
+#: part/models.py:2306 templates/InvenTree/settings/settings.html:171
msgid "Default Value"
msgstr ""
-#: part/models.py:2291
+#: part/models.py:2307
msgid "Default Parameter Value"
msgstr ""
-#: part/models.py:2325
+#: part/models.py:2341
msgid "Select parent part"
msgstr ""
-#: part/models.py:2333
+#: part/models.py:2349
msgid "Sub part"
msgstr ""
-#: part/models.py:2334
+#: part/models.py:2350
msgid "Select part to be used in BOM"
msgstr ""
-#: part/models.py:2340
+#: part/models.py:2356
msgid "BOM quantity for this BOM item"
msgstr ""
-#: part/models.py:2342 templates/js/translated/bom.js:236
-#: templates/js/translated/bom.js:298
+#: part/models.py:2358 templates/js/translated/bom.js:256
+#: templates/js/translated/bom.js:314
msgid "Optional"
msgstr ""
-#: part/models.py:2342
+#: part/models.py:2358
msgid "This BOM item is optional"
msgstr ""
-#: part/models.py:2345
+#: part/models.py:2361
msgid "Overage"
msgstr ""
-#: part/models.py:2346
+#: part/models.py:2362
msgid "Estimated build wastage quantity (absolute or percentage)"
msgstr ""
-#: part/models.py:2349
+#: part/models.py:2365
msgid "BOM item reference"
msgstr ""
-#: part/models.py:2352
+#: part/models.py:2368
msgid "BOM item notes"
msgstr ""
-#: part/models.py:2354
+#: part/models.py:2370
msgid "Checksum"
msgstr ""
-#: part/models.py:2354
+#: part/models.py:2370
msgid "BOM line checksum"
msgstr ""
-#: part/models.py:2358 templates/js/translated/bom.js:315
-#: templates/js/translated/bom.js:322
-#: templates/js/translated/table_filters.js:55
+#: part/models.py:2374 templates/js/translated/bom.js:331
+#: templates/js/translated/bom.js:338
+#: templates/js/translated/table_filters.js:68
msgid "Inherited"
msgstr ""
-#: part/models.py:2359
+#: part/models.py:2375
msgid "This BOM item is inherited by BOMs for variant parts"
msgstr ""
-#: part/models.py:2364 templates/js/translated/bom.js:307
+#: part/models.py:2380 templates/js/translated/bom.js:323
msgid "Allow Variants"
msgstr ""
-#: part/models.py:2365
+#: part/models.py:2381
msgid "Stock items for variant parts can be used for this BOM item"
msgstr ""
-#: part/models.py:2450 stock/models.py:335
+#: part/models.py:2466 stock/models.py:341
msgid "Quantity must be integer value for trackable parts"
msgstr ""
-#: part/models.py:2459 part/models.py:2461
+#: part/models.py:2475 part/models.py:2477
msgid "Sub part must be specified"
msgstr ""
-#: part/models.py:2464
+#: part/models.py:2480
msgid "BOM Item"
msgstr ""
-#: part/models.py:2583
+#: part/models.py:2599
msgid "Part 1"
msgstr ""
-#: part/models.py:2587
+#: part/models.py:2603
msgid "Part 2"
msgstr ""
-#: part/models.py:2587
+#: part/models.py:2603
msgid "Select Related Part"
msgstr ""
-#: part/models.py:2619
+#: part/models.py:2635
msgid "Error creating relationship: check that the part is not related to itself and that the relationship is unique"
msgstr ""
@@ -4317,17 +4437,17 @@ msgstr ""
#: part/templates/part/bom.html:14
#, python-format
-msgid "The BOM for %(part)s has changed, and must be validated.
"
+msgid "The BOM for %(part)s has changed, and must be validated.
"
msgstr ""
#: part/templates/part/bom.html:16
#, python-format
-msgid "The BOM for %(part)s was last checked by %(checker)s on %(check_date)s"
+msgid "The BOM for %(part)s was last checked by %(checker)s on %(check_date)s"
msgstr ""
#: part/templates/part/bom.html:20
#, python-format
-msgid "The BOM for %(part)s has not been validated."
+msgid "The BOM for %(part)s has not been validated."
msgstr ""
#: part/templates/part/bom.html:27
@@ -4374,33 +4494,34 @@ msgstr ""
msgid "Select Part"
msgstr ""
-#: part/templates/part/bom_upload/upload_file.html:7
-msgid "Upload BOM File"
+#: part/templates/part/bom_upload/upload_file.html:13
+#: part/templates/part/bom_upload/upload_file.html:16
+msgid "Return To BOM"
msgstr ""
-#: part/templates/part/bom_upload/upload_file.html:12
+#: part/templates/part/bom_upload/upload_file.html:27
msgid "Upload Bill of Materials"
msgstr ""
-#: part/templates/part/bom_upload/upload_file.html:16
+#: part/templates/part/bom_upload/upload_file.html:46
msgid "Requirements for BOM upload"
msgstr ""
-#: part/templates/part/bom_upload/upload_file.html:18
+#: part/templates/part/bom_upload/upload_file.html:48
msgid "The BOM file must contain the required named columns as provided in the "
msgstr ""
-#: part/templates/part/bom_upload/upload_file.html:18
+#: part/templates/part/bom_upload/upload_file.html:48
msgid "BOM Upload Template"
msgstr ""
-#: part/templates/part/bom_upload/upload_file.html:19
+#: part/templates/part/bom_upload/upload_file.html:49
msgid "Each part must already exist in the database"
msgstr ""
#: part/templates/part/bom_validate.html:6
#, python-format
-msgid "Confirm that the Bill of Materials (BOM) is valid for:
%(part)s"
+msgid "Confirm that the Bill of Materials (BOM) is valid for:
%(part)s"
msgstr ""
#: part/templates/part/bom_validate.html:9
@@ -4435,7 +4556,7 @@ msgstr ""
msgid "Category Description"
msgstr ""
-#: part/templates/part/category.html:88 part/templates/part/category.html:174
+#: part/templates/part/category.html:88 part/templates/part/category.html:175
#: part/templates/part/category_navbar.html:14
#: part/templates/part/category_navbar.html:17
msgid "Subcategories"
@@ -4449,7 +4570,7 @@ msgstr ""
msgid "Export Part Data"
msgstr ""
-#: part/templates/part/category.html:127 part/templates/part/category.html:141
+#: part/templates/part/category.html:127 part/templates/part/category.html:142
msgid "Export"
msgstr ""
@@ -4470,26 +4591,30 @@ msgid "Set Category"
msgstr ""
#: part/templates/part/category.html:141
+msgid "Print Labels"
+msgstr ""
+
+#: part/templates/part/category.html:142
msgid "Export Data"
msgstr ""
-#: part/templates/part/category.html:145
+#: part/templates/part/category.html:146
msgid "View list display"
msgstr ""
-#: part/templates/part/category.html:148
+#: part/templates/part/category.html:149
msgid "View grid display"
msgstr ""
-#: part/templates/part/category.html:164
+#: part/templates/part/category.html:165
msgid "Part Parameters"
msgstr ""
-#: part/templates/part/category.html:253
+#: part/templates/part/category.html:254
msgid "Create Part Category"
msgstr ""
-#: part/templates/part/category.html:279
+#: part/templates/part/category.html:281
msgid "Create Part"
msgstr ""
@@ -4533,7 +4658,7 @@ msgstr ""
msgid "Import Parts"
msgstr ""
-#: part/templates/part/copy_part.html:9 templates/js/translated/part.js:224
+#: part/templates/part/copy_part.html:9 templates/js/translated/part.js:352
msgid "Duplicate Part"
msgstr ""
@@ -4554,7 +4679,7 @@ msgstr ""
#: part/templates/part/create_part.html:17
#, python-format
-msgid "%(full_name)s - %(desc)s (%(match_per)s%% match)"
+msgid "%(full_name)s - %(desc)s (%(match_per)s%% match)"
msgstr ""
#: part/templates/part/detail.html:16
@@ -4563,10 +4688,10 @@ msgstr ""
#: part/templates/part/detail.html:21
#, python-format
-msgid "Showing stock for all variants of %(full_name)s"
+msgid "Showing stock for all variants of %(full_name)s"
msgstr ""
-#: part/templates/part/detail.html:30 part/templates/part/navbar.html:87
+#: part/templates/part/detail.html:30 part/templates/part/navbar.html:99
msgid "Part Test Templates"
msgstr ""
@@ -4586,7 +4711,7 @@ msgstr ""
msgid "Sales Order Allocations"
msgstr ""
-#: part/templates/part/detail.html:130 part/templates/part/navbar.html:21
+#: part/templates/part/detail.html:130 part/templates/part/navbar.html:27
msgid "Part Variants"
msgstr ""
@@ -4602,8 +4727,8 @@ msgstr ""
msgid "Add new parameter"
msgstr ""
-#: part/templates/part/detail.html:182 part/templates/part/navbar.html:95
-#: part/templates/part/navbar.html:98
+#: part/templates/part/detail.html:182 part/templates/part/navbar.html:107
+#: part/templates/part/navbar.html:110
msgid "Related Parts"
msgstr ""
@@ -4611,8 +4736,8 @@ msgstr ""
msgid "Add Related"
msgstr ""
-#: part/templates/part/detail.html:228 part/templates/part/navbar.html:35
-#: part/templates/part/navbar.html:38
+#: part/templates/part/detail.html:228 part/templates/part/navbar.html:43
+#: part/templates/part/navbar.html:46
msgid "Bill of Materials"
msgstr ""
@@ -4644,50 +4769,50 @@ msgstr ""
msgid "Delete manufacturer parts"
msgstr ""
-#: part/templates/part/detail.html:402
+#: part/templates/part/detail.html:502
msgid "Delete selected BOM items?"
msgstr ""
-#: part/templates/part/detail.html:403
+#: part/templates/part/detail.html:503
msgid "All selected BOM items will be deleted"
msgstr ""
-#: part/templates/part/detail.html:454
+#: part/templates/part/detail.html:554
msgid "Create BOM Item"
msgstr ""
-#: part/templates/part/detail.html:589
+#: part/templates/part/detail.html:699
msgid "Add Test Result Template"
msgstr ""
-#: part/templates/part/detail.html:607
+#: part/templates/part/detail.html:716
msgid "Edit Test Result Template"
msgstr ""
-#: part/templates/part/detail.html:619
+#: part/templates/part/detail.html:728
msgid "Delete Test Result Template"
msgstr ""
-#: part/templates/part/detail.html:670
+#: part/templates/part/detail.html:784
msgid "Edit Part Notes"
msgstr ""
-#: part/templates/part/detail.html:903
+#: part/templates/part/detail.html:936
#, python-format
msgid "Purchase Unit Price - %(currency)s"
msgstr ""
-#: part/templates/part/detail.html:915
+#: part/templates/part/detail.html:948
#, python-format
msgid "Unit Price-Cost Difference - %(currency)s"
msgstr ""
-#: part/templates/part/detail.html:927
+#: part/templates/part/detail.html:960
#, python-format
msgid "Supplier Unit Cost - %(currency)s"
msgstr ""
-#: part/templates/part/detail.html:1016
+#: part/templates/part/detail.html:1049
#, python-format
msgid "Unit Price - %(currency)s"
msgstr ""
@@ -4701,19 +4826,19 @@ msgstr ""
msgid "Import Parts from File"
msgstr ""
-#: part/templates/part/navbar.html:24
+#: part/templates/part/navbar.html:30
msgid "Variants"
msgstr ""
-#: part/templates/part/navbar.html:51 part/templates/part/navbar.html:54
+#: part/templates/part/navbar.html:59 part/templates/part/navbar.html:62
msgid "Used In"
msgstr ""
-#: part/templates/part/navbar.html:61
+#: part/templates/part/navbar.html:70
msgid "Prices"
msgstr ""
-#: part/templates/part/navbar.html:90
+#: part/templates/part/navbar.html:102
msgid "Test Templates"
msgstr ""
@@ -4721,195 +4846,204 @@ msgstr ""
msgid "Part List"
msgstr ""
-#: part/templates/part/part_base.html:30
+#: part/templates/part/part_base.html:35
msgid "Part is a template part (variants can be made from this part)"
msgstr ""
-#: part/templates/part/part_base.html:33
+#: part/templates/part/part_base.html:38
msgid "Part can be assembled from other parts"
msgstr ""
-#: part/templates/part/part_base.html:36
+#: part/templates/part/part_base.html:41
msgid "Part can be used in assemblies"
msgstr ""
-#: part/templates/part/part_base.html:39
+#: part/templates/part/part_base.html:44
msgid "Part stock is tracked by serial number"
msgstr ""
-#: part/templates/part/part_base.html:42
+#: part/templates/part/part_base.html:47
msgid "Part can be purchased from external suppliers"
msgstr ""
-#: part/templates/part/part_base.html:45
+#: part/templates/part/part_base.html:50
msgid "Part can be sold to customers"
msgstr ""
-#: part/templates/part/part_base.html:52 part/templates/part/part_base.html:60
+#: part/templates/part/part_base.html:57 part/templates/part/part_base.html:65
msgid "Part is virtual (not a physical part)"
msgstr ""
-#: part/templates/part/part_base.html:53 templates/js/translated/company.js:454
-#: templates/js/translated/company.js:704 templates/js/translated/part.js:304
-#: templates/js/translated/part.js:381
+#: part/templates/part/part_base.html:58 templates/js/translated/company.js:503
+#: templates/js/translated/company.js:759 templates/js/translated/part.js:432
+#: templates/js/translated/part.js:509
msgid "Inactive"
msgstr ""
-#: part/templates/part/part_base.html:68
+#: part/templates/part/part_base.html:73
msgid "Star this part"
msgstr ""
-#: part/templates/part/part_base.html:75
+#: part/templates/part/part_base.html:80
#: stock/templates/stock/item_base.html:75
#: stock/templates/stock/location.html:51
msgid "Barcode actions"
msgstr ""
-#: part/templates/part/part_base.html:77
+#: part/templates/part/part_base.html:82
#: stock/templates/stock/item_base.html:77
#: stock/templates/stock/location.html:53 templates/qr_button.html:1
msgid "Show QR Code"
msgstr ""
-#: part/templates/part/part_base.html:78
+#: part/templates/part/part_base.html:83
#: stock/templates/stock/item_base.html:93
#: stock/templates/stock/location.html:54
msgid "Print Label"
msgstr ""
-#: part/templates/part/part_base.html:83
+#: part/templates/part/part_base.html:89
msgid "Show pricing information"
msgstr ""
-#: part/templates/part/part_base.html:88
+#: part/templates/part/part_base.html:95
#: stock/templates/stock/item_base.html:142
#: stock/templates/stock/location.html:62
msgid "Stock actions"
msgstr ""
-#: part/templates/part/part_base.html:95
+#: part/templates/part/part_base.html:102
msgid "Count part stock"
msgstr ""
-#: part/templates/part/part_base.html:101
+#: part/templates/part/part_base.html:108
msgid "Transfer part stock"
msgstr ""
-#: part/templates/part/part_base.html:118
+#: part/templates/part/part_base.html:125
msgid "Part actions"
msgstr ""
-#: part/templates/part/part_base.html:121
+#: part/templates/part/part_base.html:128
msgid "Duplicate part"
msgstr ""
-#: part/templates/part/part_base.html:124
+#: part/templates/part/part_base.html:131
msgid "Edit part"
msgstr ""
-#: part/templates/part/part_base.html:127
+#: part/templates/part/part_base.html:134
msgid "Delete part"
msgstr ""
-#: part/templates/part/part_base.html:139
+#: part/templates/part/part_base.html:146
#, python-format
msgid "This part is a variant of %(link)s"
msgstr ""
-#: part/templates/part/part_base.html:154
-#: templates/js/translated/table_filters.js:153
+#: part/templates/part/part_base.html:161
+#: templates/js/translated/table_filters.js:166
msgid "In Stock"
msgstr ""
-#: part/templates/part/part_base.html:167 templates/InvenTree/index.html:186
+#: part/templates/part/part_base.html:174 templates/InvenTree/index.html:186
msgid "Required for Build Orders"
msgstr ""
-#: part/templates/part/part_base.html:174
+#: part/templates/part/part_base.html:181
msgid "Required for Sales Orders"
msgstr ""
-#: part/templates/part/part_base.html:181
+#: part/templates/part/part_base.html:188
msgid "Allocated to Orders"
msgstr ""
-#: part/templates/part/part_base.html:196 templates/js/translated/bom.js:336
+#: part/templates/part/part_base.html:203 templates/js/translated/bom.js:352
msgid "Can Build"
msgstr ""
-#: part/templates/part/part_base.html:202 templates/js/translated/part.js:633
-#: templates/js/translated/part.js:806
+#: part/templates/part/part_base.html:209 templates/js/translated/part.js:765
+#: templates/js/translated/part.js:953
msgid "Building"
msgstr ""
-#: part/templates/part/part_base.html:275
+#: part/templates/part/part_base.html:223
+#: part/templates/part/part_base.html:524
+#: part/templates/part/part_base.html:550
+msgid "Show Part Details"
+msgstr ""
+
+#: part/templates/part/part_base.html:283
msgid "Latest Serial Number"
msgstr ""
-#: part/templates/part/part_base.html:383 part/templates/part/prices.html:125
+#: part/templates/part/part_base.html:396 part/templates/part/prices.html:144
msgid "Calculate"
msgstr ""
-#: part/templates/part/part_base.html:426
+#: part/templates/part/part_base.html:439
msgid "No matching images found"
msgstr ""
-#: part/templates/part/part_base.html:506
-#: part/templates/part/part_base.html:531
+#: part/templates/part/part_base.html:519
+#: part/templates/part/part_base.html:544
msgid "Hide Part Details"
msgstr ""
-#: part/templates/part/part_base.html:511
-#: part/templates/part/part_base.html:537
-msgid "Show Part Details"
-msgstr ""
-
#: part/templates/part/part_pricing.html:22 part/templates/part/prices.html:21
msgid "Supplier Pricing"
msgstr ""
#: part/templates/part/part_pricing.html:26
#: part/templates/part/part_pricing.html:52
-#: part/templates/part/part_pricing.html:85
-#: part/templates/part/part_pricing.html:100 part/templates/part/prices.html:25
-#: part/templates/part/prices.html:52 part/templates/part/prices.html:84
-#: part/templates/part/prices.html:101
+#: part/templates/part/part_pricing.html:100
+#: part/templates/part/part_pricing.html:115 part/templates/part/prices.html:25
+#: part/templates/part/prices.html:52 part/templates/part/prices.html:103
+#: part/templates/part/prices.html:120
msgid "Unit Cost"
msgstr ""
#: part/templates/part/part_pricing.html:32
#: part/templates/part/part_pricing.html:58
-#: part/templates/part/part_pricing.html:89
-#: part/templates/part/part_pricing.html:104 part/templates/part/prices.html:32
-#: part/templates/part/prices.html:59 part/templates/part/prices.html:89
-#: part/templates/part/prices.html:106
+#: part/templates/part/part_pricing.html:104
+#: part/templates/part/part_pricing.html:119 part/templates/part/prices.html:32
+#: part/templates/part/prices.html:59 part/templates/part/prices.html:108
+#: part/templates/part/prices.html:125
msgid "Total Cost"
msgstr ""
#: part/templates/part/part_pricing.html:40 part/templates/part/prices.html:40
-#: templates/js/translated/bom.js:291
+#: templates/js/translated/bom.js:307
msgid "No supplier pricing available"
msgstr ""
#: part/templates/part/part_pricing.html:48 part/templates/part/prices.html:49
-#: part/templates/part/prices.html:225
+#: part/templates/part/prices.html:243
msgid "BOM Pricing"
msgstr ""
-#: part/templates/part/part_pricing.html:66 part/templates/part/prices.html:67
+#: part/templates/part/part_pricing.html:65 part/templates/part/prices.html:69
+msgid "Unit Purchase Price"
+msgstr ""
+
+#: part/templates/part/part_pricing.html:71 part/templates/part/prices.html:76
+msgid "Total Purchase Price"
+msgstr ""
+
+#: part/templates/part/part_pricing.html:81 part/templates/part/prices.html:86
msgid "Note: BOM pricing is incomplete for this part"
msgstr ""
-#: part/templates/part/part_pricing.html:73 part/templates/part/prices.html:74
+#: part/templates/part/part_pricing.html:88 part/templates/part/prices.html:93
msgid "No BOM pricing available"
msgstr ""
-#: part/templates/part/part_pricing.html:82 part/templates/part/prices.html:83
+#: part/templates/part/part_pricing.html:97 part/templates/part/prices.html:102
msgid "Internal Price"
msgstr ""
-#: part/templates/part/part_pricing.html:113
-#: part/templates/part/prices.html:115
+#: part/templates/part/part_pricing.html:128
+#: part/templates/part/prices.html:134
msgid "No pricing information is available for this part."
msgstr ""
@@ -4919,7 +5053,7 @@ msgstr ""
#: part/templates/part/partial_delete.html:7
#, python-format
-msgid "Are you sure you want to delete part '%(full_name)s'?"
+msgid "Are you sure you want to delete part '%(full_name)s'?"
msgstr ""
#: part/templates/part/partial_delete.html:12
@@ -4963,53 +5097,53 @@ msgstr ""
msgid "Show BOM cost"
msgstr ""
-#: part/templates/part/prices.html:98
+#: part/templates/part/prices.html:117
msgid "Show sale cost"
msgstr ""
-#: part/templates/part/prices.html:99
+#: part/templates/part/prices.html:118
msgid "Show sale price"
msgstr ""
-#: part/templates/part/prices.html:121
+#: part/templates/part/prices.html:140
msgid "Calculation parameters"
msgstr ""
-#: part/templates/part/prices.html:136 templates/js/translated/bom.js:285
+#: part/templates/part/prices.html:155 templates/js/translated/bom.js:301
msgid "Supplier Cost"
msgstr ""
-#: part/templates/part/prices.html:137 part/templates/part/prices.html:158
-#: part/templates/part/prices.html:183 part/templates/part/prices.html:213
-#: part/templates/part/prices.html:239 part/templates/part/prices.html:267
+#: part/templates/part/prices.html:156 part/templates/part/prices.html:177
+#: part/templates/part/prices.html:201 part/templates/part/prices.html:231
+#: part/templates/part/prices.html:257 part/templates/part/prices.html:285
msgid "Jump to overview"
msgstr ""
-#: part/templates/part/prices.html:162
+#: part/templates/part/prices.html:181
msgid "Stock Pricing"
msgstr ""
-#: part/templates/part/prices.html:172
+#: part/templates/part/prices.html:190
msgid "No stock pricing history is available for this part."
msgstr ""
-#: part/templates/part/prices.html:182
+#: part/templates/part/prices.html:200
msgid "Internal Cost"
msgstr ""
-#: part/templates/part/prices.html:197 part/views.py:1793
+#: part/templates/part/prices.html:215 part/views.py:1801
msgid "Add Internal Price Break"
msgstr ""
-#: part/templates/part/prices.html:212
+#: part/templates/part/prices.html:230
msgid "BOM Cost"
msgstr ""
-#: part/templates/part/prices.html:238
+#: part/templates/part/prices.html:256
msgid "Sale Cost"
msgstr ""
-#: part/templates/part/prices.html:278
+#: part/templates/part/prices.html:296
msgid "No sale pice history available for this part."
msgstr ""
@@ -5017,8 +5151,8 @@ msgstr ""
msgid "Set category for the following parts"
msgstr ""
-#: part/templates/part/stock_count.html:7 templates/js/translated/bom.js:259
-#: templates/js/translated/part.js:623 templates/js/translated/part.js:810
+#: part/templates/part/stock_count.html:7 templates/js/translated/bom.js:278
+#: templates/js/translated/part.js:755 templates/js/translated/part.js:957
msgid "No Stock"
msgstr ""
@@ -5032,10 +5166,10 @@ msgstr ""
#: part/templates/part/variant_part.html:10
#, python-format
-msgid "Create a new variant of template '%(full_name)s'."
+msgid "Create a new variant of template '%(full_name)s'."
msgstr ""
-#: part/templatetags/inventree_extras.py:105
+#: part/templatetags/inventree_extras.py:106
msgid "Unknown database"
msgstr ""
@@ -5116,51 +5250,51 @@ msgstr ""
msgid "Part Pricing"
msgstr ""
-#: part/views.py:1429
+#: part/views.py:1437
msgid "Create Part Parameter Template"
msgstr ""
-#: part/views.py:1439
+#: part/views.py:1447
msgid "Edit Part Parameter Template"
msgstr ""
-#: part/views.py:1446
+#: part/views.py:1454
msgid "Delete Part Parameter Template"
msgstr ""
-#: part/views.py:1494 templates/js/translated/part.js:179
+#: part/views.py:1502 templates/js/translated/part.js:303
msgid "Edit Part Category"
msgstr ""
-#: part/views.py:1532
+#: part/views.py:1540
msgid "Delete Part Category"
msgstr ""
-#: part/views.py:1538
+#: part/views.py:1546
msgid "Part category was deleted"
msgstr ""
-#: part/views.py:1547
+#: part/views.py:1555
msgid "Create Category Parameter Template"
msgstr ""
-#: part/views.py:1648
+#: part/views.py:1656
msgid "Edit Category Parameter Template"
msgstr ""
-#: part/views.py:1704
+#: part/views.py:1712
msgid "Delete Category Parameter Template"
msgstr ""
-#: part/views.py:1726
+#: part/views.py:1734
msgid "Added new price break"
msgstr ""
-#: part/views.py:1802
+#: part/views.py:1810
msgid "Edit Internal Price Break"
msgstr ""
-#: part/views.py:1810
+#: part/views.py:1818
msgid "Delete Internal Price Break"
msgstr ""
@@ -5266,17 +5400,17 @@ msgid "Test Results"
msgstr ""
#: report/templates/report/inventree_test_report_base.html:88
-#: stock/models.py:1796
+#: stock/models.py:1807
msgid "Test"
msgstr ""
#: report/templates/report/inventree_test_report_base.html:89
-#: stock/models.py:1802
+#: stock/models.py:1813
msgid "Result"
msgstr ""
#: report/templates/report/inventree_test_report_base.html:92
-#: templates/js/translated/order.js:279 templates/js/translated/stock.js:1382
+#: templates/js/translated/order.js:353 templates/js/translated/stock.js:1523
msgid "Date"
msgstr ""
@@ -5288,51 +5422,51 @@ msgstr ""
msgid "Fail"
msgstr ""
-#: stock/api.py:145
+#: stock/api.py:146
msgid "Request must contain list of stock items"
msgstr ""
-#: stock/api.py:153
+#: stock/api.py:154
msgid "Improperly formatted data"
msgstr ""
-#: stock/api.py:161
+#: stock/api.py:162
msgid "Each entry must contain a valid integer primary-key"
msgstr ""
-#: stock/api.py:167
+#: stock/api.py:168
msgid "Primary key does not match valid stock item"
msgstr ""
-#: stock/api.py:177
+#: stock/api.py:178
msgid "Invalid quantity value"
msgstr ""
-#: stock/api.py:182
+#: stock/api.py:183
msgid "Quantity must not be less than zero"
msgstr ""
-#: stock/api.py:210
+#: stock/api.py:211
#, python-brace-format
msgid "Updated stock for {n} items"
msgstr ""
-#: stock/api.py:246 stock/api.py:279
+#: stock/api.py:247 stock/api.py:280
msgid "Specified quantity exceeds stock quantity"
msgstr ""
-#: stock/api.py:269
+#: stock/api.py:270
msgid "Valid location must be specified"
msgstr ""
-#: stock/api.py:289
+#: stock/api.py:290
#, python-brace-format
msgid "Moved {n} parts to {loc}"
msgstr ""
-#: stock/forms.py:79 stock/forms.py:307 stock/models.py:550
+#: stock/forms.py:79 stock/forms.py:307 stock/models.py:556
#: stock/templates/stock/item_base.html:395
-#: templates/js/translated/stock.js:1025
+#: templates/js/translated/stock.js:967
msgid "Expiry Date"
msgstr ""
@@ -5384,258 +5518,266 @@ msgstr ""
msgid "Confirm removal of installed stock items"
msgstr ""
-#: stock/models.py:57 stock/models.py:587
+#: stock/models.py:57 stock/models.py:593
msgid "Owner"
msgstr ""
-#: stock/models.py:58 stock/models.py:588
+#: stock/models.py:58 stock/models.py:594
msgid "Select Owner"
msgstr ""
-#: stock/models.py:316
+#: stock/models.py:322
msgid "StockItem with this serial number already exists"
msgstr ""
-#: stock/models.py:352
+#: stock/models.py:358
#, python-brace-format
msgid "Part type ('{pf}') must be {pe}"
msgstr ""
-#: stock/models.py:362 stock/models.py:371
+#: stock/models.py:368 stock/models.py:377
msgid "Quantity must be 1 for item with a serial number"
msgstr ""
-#: stock/models.py:363
+#: stock/models.py:369
msgid "Serial number cannot be set if quantity greater than 1"
msgstr ""
-#: stock/models.py:385
+#: stock/models.py:391
msgid "Item cannot belong to itself"
msgstr ""
-#: stock/models.py:391
+#: stock/models.py:397
msgid "Item must have a build reference if is_building=True"
msgstr ""
-#: stock/models.py:398
+#: stock/models.py:404
msgid "Build reference does not point to the same part object"
msgstr ""
-#: stock/models.py:440
+#: stock/models.py:446
msgid "Parent Stock Item"
msgstr ""
-#: stock/models.py:449
+#: stock/models.py:455
msgid "Base part"
msgstr ""
-#: stock/models.py:458
+#: stock/models.py:464
msgid "Select a matching supplier part for this stock item"
msgstr ""
-#: stock/models.py:463 stock/templates/stock/stock_app_base.html:8
+#: stock/models.py:469 stock/templates/stock/stock_app_base.html:8
msgid "Stock Location"
msgstr ""
-#: stock/models.py:466
+#: stock/models.py:472
msgid "Where is this stock item located?"
msgstr ""
-#: stock/models.py:473
+#: stock/models.py:479
msgid "Packaging this stock item is stored in"
msgstr ""
-#: stock/models.py:478 stock/templates/stock/item_base.html:284
+#: stock/models.py:484 stock/templates/stock/item_base.html:284
msgid "Installed In"
msgstr ""
-#: stock/models.py:481
+#: stock/models.py:487
msgid "Is this item installed in another item?"
msgstr ""
-#: stock/models.py:497
+#: stock/models.py:503
msgid "Serial number for this item"
msgstr ""
-#: stock/models.py:509
+#: stock/models.py:515
msgid "Batch code for this stock item"
msgstr ""
-#: stock/models.py:513
+#: stock/models.py:519
msgid "Stock Quantity"
msgstr ""
-#: stock/models.py:522
+#: stock/models.py:528
msgid "Source Build"
msgstr ""
-#: stock/models.py:524
+#: stock/models.py:530
msgid "Build for this stock item"
msgstr ""
-#: stock/models.py:535
+#: stock/models.py:541
msgid "Source Purchase Order"
msgstr ""
-#: stock/models.py:538
+#: stock/models.py:544
msgid "Purchase order for this stock item"
msgstr ""
-#: stock/models.py:544
+#: stock/models.py:550
msgid "Destination Sales Order"
msgstr ""
-#: stock/models.py:551
+#: stock/models.py:557
msgid "Expiry date for stock item. Stock will be considered expired after this date"
msgstr ""
-#: stock/models.py:564
+#: stock/models.py:570
msgid "Delete on deplete"
msgstr ""
-#: stock/models.py:564
+#: stock/models.py:570
msgid "Delete this Stock Item when stock is depleted"
msgstr ""
-#: stock/models.py:574 stock/templates/stock/item.html:98
+#: stock/models.py:580 stock/templates/stock/item.html:99
#: stock/templates/stock/navbar.html:54
msgid "Stock Item Notes"
msgstr ""
-#: stock/models.py:583
+#: stock/models.py:589
msgid "Single unit purchase price at time of purchase"
msgstr ""
-#: stock/models.py:1051
-msgid "Part is not set as trackable"
+#: stock/models.py:599
+msgid "Scheduled for deletion"
msgstr ""
-#: stock/models.py:1057
-msgid "Quantity must be integer"
+#: stock/models.py:600
+msgid "This StockItem will be deleted by the background worker"
msgstr ""
#: stock/models.py:1063
+msgid "Part is not set as trackable"
+msgstr ""
+
+#: stock/models.py:1069
+msgid "Quantity must be integer"
+msgstr ""
+
+#: stock/models.py:1075
#, python-brace-format
msgid "Quantity must not exceed available stock quantity ({n})"
msgstr ""
-#: stock/models.py:1066
+#: stock/models.py:1078
msgid "Serial numbers must be a list of integers"
msgstr ""
-#: stock/models.py:1069
+#: stock/models.py:1081
msgid "Quantity does not match serial numbers"
msgstr ""
-#: stock/models.py:1076
+#: stock/models.py:1088
#, python-brace-format
msgid "Serial numbers already exist: {exists}"
msgstr ""
-#: stock/models.py:1234
+#: stock/models.py:1246
msgid "StockItem cannot be moved as it is not in stock"
msgstr ""
-#: stock/models.py:1716
+#: stock/models.py:1727
msgid "Entry notes"
msgstr ""
-#: stock/models.py:1773
+#: stock/models.py:1784
msgid "Value must be provided for this test"
msgstr ""
-#: stock/models.py:1779
+#: stock/models.py:1790
msgid "Attachment must be uploaded for this test"
msgstr ""
-#: stock/models.py:1797
+#: stock/models.py:1808
msgid "Test name"
msgstr ""
-#: stock/models.py:1803 templates/js/translated/table_filters.js:231
+#: stock/models.py:1814 templates/js/translated/table_filters.js:244
msgid "Test result"
msgstr ""
-#: stock/models.py:1809
+#: stock/models.py:1820
msgid "Test output value"
msgstr ""
-#: stock/models.py:1816
+#: stock/models.py:1827
msgid "Test result attachment"
msgstr ""
-#: stock/models.py:1822
+#: stock/models.py:1833
msgid "Test notes"
msgstr ""
-#: stock/templates/stock/item.html:16
+#: stock/templates/stock/item.html:17
msgid "Stock Tracking Information"
msgstr ""
-#: stock/templates/stock/item.html:29
+#: stock/templates/stock/item.html:30
msgid "New Entry"
msgstr ""
-#: stock/templates/stock/item.html:42
+#: stock/templates/stock/item.html:43
msgid "Child Stock Items"
msgstr ""
-#: stock/templates/stock/item.html:49
+#: stock/templates/stock/item.html:50
msgid "This stock item does not have any child items"
msgstr ""
-#: stock/templates/stock/item.html:57 stock/templates/stock/navbar.html:19
+#: stock/templates/stock/item.html:58 stock/templates/stock/navbar.html:19
#: stock/templates/stock/navbar.html:22
msgid "Test Data"
msgstr ""
-#: stock/templates/stock/item.html:65
+#: stock/templates/stock/item.html:66
msgid "Delete Test Data"
msgstr ""
-#: stock/templates/stock/item.html:69
+#: stock/templates/stock/item.html:70
msgid "Add Test Data"
msgstr ""
-#: stock/templates/stock/item.html:72 stock/templates/stock/item_base.html:95
+#: stock/templates/stock/item.html:73 stock/templates/stock/item_base.html:95
msgid "Test Report"
msgstr ""
-#: stock/templates/stock/item.html:119 stock/templates/stock/navbar.html:27
+#: stock/templates/stock/item.html:120 stock/templates/stock/navbar.html:27
msgid "Installed Stock Items"
msgstr ""
-#: stock/templates/stock/item.html:124 stock/views.py:534
+#: stock/templates/stock/item.html:125 stock/views.py:534
msgid "Install Stock Item"
msgstr ""
-#: stock/templates/stock/item.html:299 stock/templates/stock/item.html:324
+#: stock/templates/stock/item.html:301 stock/templates/stock/item.html:326
msgid "Add Test Result"
msgstr ""
-#: stock/templates/stock/item.html:344
+#: stock/templates/stock/item.html:346
msgid "Edit Test Result"
msgstr ""
-#: stock/templates/stock/item.html:358
+#: stock/templates/stock/item.html:360
msgid "Delete Test Result"
msgstr ""
#: stock/templates/stock/item_base.html:33
#: stock/templates/stock/item_base.html:399
-#: templates/js/translated/table_filters.js:212
+#: templates/js/translated/table_filters.js:225
msgid "Expired"
msgstr ""
#: stock/templates/stock/item_base.html:43
#: stock/templates/stock/item_base.html:401
-#: templates/js/translated/table_filters.js:218
+#: templates/js/translated/table_filters.js:231
msgid "Stale"
msgstr ""
#: stock/templates/stock/item_base.html:80
-#: templates/js/translated/barcode.js:309
-#: templates/js/translated/barcode.js:314
+#: templates/js/translated/barcode.js:331
+#: templates/js/translated/barcode.js:336
msgid "Unlink Barcode"
msgstr ""
@@ -5768,7 +5910,7 @@ msgid "next page"
msgstr ""
#: stock/templates/stock/item_base.html:303
-#: templates/js/translated/build.js:628
+#: templates/js/translated/build.js:651
msgid "No location set"
msgstr ""
@@ -5795,7 +5937,7 @@ msgid "This StockItem expires on %(item.expiry_date)s"
msgstr ""
#: stock/templates/stock/item_base.html:408
-#: templates/js/translated/stock.js:1032
+#: templates/js/translated/stock.js:980
msgid "Last Updated"
msgstr ""
@@ -5825,7 +5967,7 @@ msgstr ""
#: stock/templates/stock/item_delete.html:12
#, python-format
-msgid "This will remove %(qty)s units of %(full_name)s from stock."
+msgid "This will remove %(qty)s units of %(full_name)s from stock."
msgstr ""
#: stock/templates/stock/item_install.html:8
@@ -5975,7 +6117,7 @@ msgstr ""
#: stock/templates/stock/stockitem_convert.html:8
#, python-format
-msgid "This stock item is current an instance of %(part)s"
+msgid "This stock item is current an instance of %(part)s"
msgstr ""
#: stock/templates/stock/stockitem_convert.html:9
@@ -6039,7 +6181,7 @@ msgstr ""
msgid "Uninstall Stock Items"
msgstr ""
-#: stock/views.py:780 templates/js/translated/stock.js:282
+#: stock/views.py:780 templates/js/translated/stock.js:353
msgid "Confirm stock adjustment"
msgstr ""
@@ -6059,7 +6201,7 @@ msgstr ""
msgid "Serialize Stock"
msgstr ""
-#: stock/views.py:1143 templates/js/translated/build.js:365
+#: stock/views.py:1143 templates/js/translated/build.js:392
msgid "Create new Stock Item"
msgstr ""
@@ -6171,11 +6313,11 @@ msgstr ""
msgid "Enter a search query"
msgstr ""
-#: templates/InvenTree/search.html:268 templates/js/translated/stock.js:629
+#: templates/InvenTree/search.html:268 templates/js/translated/stock.js:699
msgid "Shipped to customer"
msgstr ""
-#: templates/InvenTree/search.html:271 templates/js/translated/stock.js:639
+#: templates/InvenTree/search.html:271 templates/js/translated/stock.js:709
msgid "No stock location set"
msgstr ""
@@ -6240,7 +6382,7 @@ msgstr ""
#: templates/InvenTree/settings/navbar.html:27
#: templates/InvenTree/settings/navbar.html:29
-#: templates/js/translated/tables.js:351 templates/search_form.html:6
+#: templates/js/translated/tables.js:366 templates/search_form.html:6
#: templates/search_form.html:8
msgid "Search"
msgstr ""
@@ -6257,7 +6399,7 @@ msgstr ""
#: templates/InvenTree/settings/navbar.html:46
#: templates/InvenTree/settings/navbar.html:48
-#: templates/InvenTree/settings/settings.html:8 templates/navbar.html:84
+#: templates/InvenTree/settings/settings.html:8 templates/navbar.html:94
msgid "Settings"
msgstr ""
@@ -6332,16 +6474,16 @@ msgid "No category parameter templates found"
msgstr ""
#: templates/InvenTree/settings/settings.html:174
-#: templates/InvenTree/settings/settings.html:271
+#: templates/InvenTree/settings/settings.html:273
msgid "Edit Template"
msgstr ""
#: templates/InvenTree/settings/settings.html:175
-#: templates/InvenTree/settings/settings.html:272
+#: templates/InvenTree/settings/settings.html:274
msgid "Delete Template"
msgstr ""
-#: templates/InvenTree/settings/settings.html:251
+#: templates/InvenTree/settings/settings.html:253
msgid "No part parameter templates found"
msgstr ""
@@ -6358,6 +6500,7 @@ msgid "Account Settings"
msgstr ""
#: templates/InvenTree/settings/user.html:15
+#: templates/js/translated/helpers.js:26
msgid "Edit"
msgstr ""
@@ -6436,65 +6579,69 @@ msgstr ""
msgid "InvenTree Version"
msgstr ""
-#: templates/about.html:26
+#: templates/about.html:27
+msgid "Development Version"
+msgstr ""
+
+#: templates/about.html:30
msgid "Up to Date"
msgstr ""
-#: templates/about.html:28
+#: templates/about.html:32
msgid "Update Available"
msgstr ""
-#: templates/about.html:34
-msgid "API Version"
-msgstr ""
-
-#: templates/about.html:39
-msgid "Python Version"
-msgstr ""
-
-#: templates/about.html:44
-msgid "Django Version"
-msgstr ""
-
-#: templates/about.html:51
+#: templates/about.html:42
msgid "Commit Hash"
msgstr ""
-#: templates/about.html:58
+#: templates/about.html:49
msgid "Commit Date"
msgstr ""
-#: templates/about.html:63
+#: templates/about.html:55
msgid "InvenTree Documentation"
msgstr ""
-#: templates/about.html:68
+#: templates/about.html:60
+msgid "API Version"
+msgstr ""
+
+#: templates/about.html:65
+msgid "Python Version"
+msgstr ""
+
+#: templates/about.html:70
+msgid "Django Version"
+msgstr ""
+
+#: templates/about.html:75
msgid "View Code on GitHub"
msgstr ""
-#: templates/about.html:73
+#: templates/about.html:80
msgid "Credits"
msgstr ""
-#: templates/about.html:78
+#: templates/about.html:85
msgid "Mobile App"
msgstr ""
-#: templates/about.html:83
+#: templates/about.html:90
msgid "Submit Bug Report"
msgstr ""
-#: templates/about.html:90 templates/clip.html:4
+#: templates/about.html:97 templates/clip.html:4
msgid "copy to clipboard"
msgstr ""
-#: templates/about.html:90
+#: templates/about.html:97
msgid "copy version information"
msgstr ""
-#: templates/about.html:100 templates/js/translated/modals.js:33
-#: templates/js/translated/modals.js:567 templates/js/translated/modals.js:661
-#: templates/js/translated/modals.js:957 templates/modals.html:29
+#: templates/about.html:107 templates/js/translated/modals.js:50
+#: templates/js/translated/modals.js:584 templates/js/translated/modals.js:678
+#: templates/js/translated/modals.js:971 templates/modals.html:29
#: templates/modals.html:54
msgid "Close"
msgstr ""
@@ -6515,1358 +6662,1390 @@ msgstr ""
msgid "Remote image must not exceed maximum allowable file size"
msgstr ""
-#: templates/js/report.js:47 templates/js/translated/report.js:47
+#: templates/js/report.js:47 templates/js/translated/report.js:67
msgid "items selected"
msgstr ""
-#: templates/js/report.js:55 templates/js/translated/report.js:55
+#: templates/js/report.js:55 templates/js/translated/report.js:75
msgid "Select Report Template"
msgstr ""
-#: templates/js/report.js:70 templates/js/translated/report.js:70
+#: templates/js/report.js:70 templates/js/translated/report.js:90
msgid "Select Test Report Template"
msgstr ""
-#: templates/js/report.js:98 templates/js/translated/label.js:10
-#: templates/js/translated/report.js:98 templates/js/translated/stock.js:244
+#: templates/js/report.js:98 templates/js/translated/label.js:29
+#: templates/js/translated/report.js:118 templates/js/translated/stock.js:313
msgid "Select Stock Items"
msgstr ""
-#: templates/js/report.js:99 templates/js/translated/report.js:99
+#: templates/js/report.js:99 templates/js/translated/report.js:119
msgid "Stock item(s) must be selected before printing reports"
msgstr ""
#: templates/js/report.js:116 templates/js/report.js:169
#: templates/js/report.js:223 templates/js/report.js:277
-#: templates/js/report.js:331 templates/js/translated/report.js:116
-#: templates/js/translated/report.js:169 templates/js/translated/report.js:223
-#: templates/js/translated/report.js:277 templates/js/translated/report.js:331
+#: templates/js/report.js:331 templates/js/translated/report.js:136
+#: templates/js/translated/report.js:189 templates/js/translated/report.js:243
+#: templates/js/translated/report.js:297 templates/js/translated/report.js:351
msgid "No Reports Found"
msgstr ""
-#: templates/js/report.js:117 templates/js/translated/report.js:117
+#: templates/js/report.js:117 templates/js/translated/report.js:137
msgid "No report templates found which match selected stock item(s)"
msgstr ""
-#: templates/js/report.js:152 templates/js/translated/report.js:152
+#: templates/js/report.js:152 templates/js/translated/report.js:172
msgid "Select Builds"
msgstr ""
-#: templates/js/report.js:153 templates/js/translated/report.js:153
+#: templates/js/report.js:153 templates/js/translated/report.js:173
msgid "Build(s) must be selected before printing reports"
msgstr ""
-#: templates/js/report.js:170 templates/js/translated/report.js:170
+#: templates/js/report.js:170 templates/js/translated/report.js:190
msgid "No report templates found which match selected build(s)"
msgstr ""
-#: templates/js/report.js:205 templates/js/translated/label.js:115
-#: templates/js/translated/report.js:205
+#: templates/js/report.js:205 templates/js/translated/label.js:134
+#: templates/js/translated/report.js:225
msgid "Select Parts"
msgstr ""
-#: templates/js/report.js:206 templates/js/translated/report.js:206
+#: templates/js/report.js:206 templates/js/translated/report.js:226
msgid "Part(s) must be selected before printing reports"
msgstr ""
-#: templates/js/report.js:224 templates/js/translated/report.js:224
+#: templates/js/report.js:224 templates/js/translated/report.js:244
msgid "No report templates found which match selected part(s)"
msgstr ""
-#: templates/js/report.js:259 templates/js/translated/report.js:259
+#: templates/js/report.js:259 templates/js/translated/report.js:279
msgid "Select Purchase Orders"
msgstr ""
-#: templates/js/report.js:260 templates/js/translated/report.js:260
+#: templates/js/report.js:260 templates/js/translated/report.js:280
msgid "Purchase Order(s) must be selected before printing report"
msgstr ""
#: templates/js/report.js:278 templates/js/report.js:332
-#: templates/js/translated/report.js:278 templates/js/translated/report.js:332
+#: templates/js/translated/report.js:298 templates/js/translated/report.js:352
msgid "No report templates found which match selected orders"
msgstr ""
-#: templates/js/report.js:313 templates/js/translated/report.js:313
+#: templates/js/report.js:313 templates/js/translated/report.js:333
msgid "Select Sales Orders"
msgstr ""
-#: templates/js/report.js:314 templates/js/translated/report.js:314
+#: templates/js/report.js:314 templates/js/translated/report.js:334
msgid "Sales Order(s) must be selected before printing report"
msgstr ""
-#: templates/js/translated/api.js:161 templates/js/translated/modals.js:1027
+#: templates/js/translated/api.js:174 templates/js/translated/modals.js:1041
msgid "No Response"
msgstr ""
-#: templates/js/translated/api.js:162 templates/js/translated/modals.js:1028
+#: templates/js/translated/api.js:175 templates/js/translated/modals.js:1042
msgid "No response from the InvenTree server"
msgstr ""
-#: templates/js/translated/api.js:167
+#: templates/js/translated/api.js:181
msgid "Error 400: Bad request"
msgstr ""
-#: templates/js/translated/api.js:168
+#: templates/js/translated/api.js:182
msgid "API request returned error code 400"
msgstr ""
-#: templates/js/translated/api.js:171 templates/js/translated/modals.js:1037
+#: templates/js/translated/api.js:186 templates/js/translated/modals.js:1051
msgid "Error 401: Not Authenticated"
msgstr ""
-#: templates/js/translated/api.js:172 templates/js/translated/modals.js:1038
+#: templates/js/translated/api.js:187 templates/js/translated/modals.js:1052
msgid "Authentication credentials not supplied"
msgstr ""
-#: templates/js/translated/api.js:175 templates/js/translated/modals.js:1042
+#: templates/js/translated/api.js:191 templates/js/translated/modals.js:1056
msgid "Error 403: Permission Denied"
msgstr ""
-#: templates/js/translated/api.js:176 templates/js/translated/modals.js:1043
+#: templates/js/translated/api.js:192 templates/js/translated/modals.js:1057
msgid "You do not have the required permissions to access this function"
msgstr ""
-#: templates/js/translated/api.js:179 templates/js/translated/modals.js:1047
+#: templates/js/translated/api.js:196 templates/js/translated/modals.js:1061
msgid "Error 404: Resource Not Found"
msgstr ""
-#: templates/js/translated/api.js:180 templates/js/translated/modals.js:1048
+#: templates/js/translated/api.js:197 templates/js/translated/modals.js:1062
msgid "The requested resource could not be located on the server"
msgstr ""
-#: templates/js/translated/api.js:183 templates/js/translated/modals.js:1052
+#: templates/js/translated/api.js:201 templates/js/translated/modals.js:1066
msgid "Error 408: Timeout"
msgstr ""
-#: templates/js/translated/api.js:184 templates/js/translated/modals.js:1053
+#: templates/js/translated/api.js:202 templates/js/translated/modals.js:1067
msgid "Connection timeout while requesting data from server"
msgstr ""
-#: templates/js/translated/api.js:187
+#: templates/js/translated/api.js:205
msgid "Unhandled Error Code"
msgstr ""
-#: templates/js/translated/api.js:188
+#: templates/js/translated/api.js:206
msgid "Error code"
msgstr ""
-#: templates/js/translated/attachment.js:16
+#: templates/js/translated/attachment.js:27
msgid "No attachments found"
msgstr ""
-#: templates/js/translated/attachment.js:56
+#: templates/js/translated/attachment.js:91
msgid "Upload Date"
msgstr ""
-#: templates/js/translated/attachment.js:69
+#: templates/js/translated/attachment.js:104
msgid "Edit attachment"
msgstr ""
-#: templates/js/translated/attachment.js:76
+#: templates/js/translated/attachment.js:111
msgid "Delete attachment"
msgstr ""
-#: templates/js/translated/barcode.js:8
+#: templates/js/translated/barcode.js:30
msgid "Scan barcode data here using wedge scanner"
msgstr ""
-#: templates/js/translated/barcode.js:10
+#: templates/js/translated/barcode.js:32
msgid "Enter barcode data"
msgstr ""
-#: templates/js/translated/barcode.js:14
+#: templates/js/translated/barcode.js:36
msgid "Barcode"
msgstr ""
-#: templates/js/translated/barcode.js:32
+#: templates/js/translated/barcode.js:54
msgid "Enter optional notes for stock transfer"
msgstr ""
-#: templates/js/translated/barcode.js:33
+#: templates/js/translated/barcode.js:55
msgid "Enter notes"
msgstr ""
-#: templates/js/translated/barcode.js:71
+#: templates/js/translated/barcode.js:93
msgid "Server error"
msgstr ""
-#: templates/js/translated/barcode.js:92
+#: templates/js/translated/barcode.js:114
msgid "Unknown response from server"
msgstr ""
-#: templates/js/translated/barcode.js:119
-#: templates/js/translated/modals.js:1017
+#: templates/js/translated/barcode.js:141
+#: templates/js/translated/modals.js:1031
msgid "Invalid server response"
msgstr ""
-#: templates/js/translated/barcode.js:212
+#: templates/js/translated/barcode.js:234
msgid "Scan barcode data below"
msgstr ""
-#: templates/js/translated/barcode.js:270
+#: templates/js/translated/barcode.js:281 templates/navbar.html:65
+msgid "Scan Barcode"
+msgstr ""
+
+#: templates/js/translated/barcode.js:292
msgid "No URL in response"
msgstr ""
-#: templates/js/translated/barcode.js:288
+#: templates/js/translated/barcode.js:310
msgid "Link Barcode to Stock Item"
msgstr ""
-#: templates/js/translated/barcode.js:311
+#: templates/js/translated/barcode.js:333
msgid "This will remove the association between this stock item and the barcode"
msgstr ""
-#: templates/js/translated/barcode.js:317
+#: templates/js/translated/barcode.js:339
msgid "Unlink"
msgstr ""
-#: templates/js/translated/barcode.js:376 templates/js/translated/stock.js:220
+#: templates/js/translated/barcode.js:398 templates/js/translated/stock.js:289
msgid "Remove stock item"
msgstr ""
-#: templates/js/translated/barcode.js:418
+#: templates/js/translated/barcode.js:440
msgid "Check Stock Items into Location"
msgstr ""
-#: templates/js/translated/barcode.js:422
-#: templates/js/translated/barcode.js:547
+#: templates/js/translated/barcode.js:444
+#: templates/js/translated/barcode.js:571
msgid "Check In"
msgstr ""
-#: templates/js/translated/barcode.js:462
-#: templates/js/translated/barcode.js:586
+#: templates/js/translated/barcode.js:486
+#: templates/js/translated/barcode.js:610
msgid "Error transferring stock"
msgstr ""
-#: templates/js/translated/barcode.js:481
+#: templates/js/translated/barcode.js:505
msgid "Stock Item already scanned"
msgstr ""
-#: templates/js/translated/barcode.js:485
+#: templates/js/translated/barcode.js:509
msgid "Stock Item already in this location"
msgstr ""
-#: templates/js/translated/barcode.js:492
+#: templates/js/translated/barcode.js:516
msgid "Added stock item"
msgstr ""
-#: templates/js/translated/barcode.js:499
+#: templates/js/translated/barcode.js:523
msgid "Barcode does not match Stock Item"
msgstr ""
-#: templates/js/translated/barcode.js:542
+#: templates/js/translated/barcode.js:566
msgid "Check Into Location"
msgstr ""
-#: templates/js/translated/barcode.js:605
+#: templates/js/translated/barcode.js:629
msgid "Barcode does not match a valid location"
msgstr ""
-#: templates/js/translated/bom.js:195 templates/js/translated/build.js:1152
+#: templates/js/translated/bom.js:215 templates/js/translated/build.js:1169
msgid "Open subassembly"
msgstr ""
-#: templates/js/translated/bom.js:269
+#: templates/js/translated/bom.js:287
msgid "Purchase Price Range"
msgstr ""
-#: templates/js/translated/bom.js:277
+#: templates/js/translated/bom.js:294
msgid "Purchase Price Average"
msgstr ""
-#: templates/js/translated/bom.js:326 templates/js/translated/bom.js:412
+#: templates/js/translated/bom.js:342 templates/js/translated/bom.js:428
msgid "View BOM"
msgstr ""
-#: templates/js/translated/bom.js:386
+#: templates/js/translated/bom.js:402
msgid "Validate BOM Item"
msgstr ""
-#: templates/js/translated/bom.js:388
+#: templates/js/translated/bom.js:404
msgid "This line has been validated"
msgstr ""
-#: templates/js/translated/bom.js:390 templates/js/translated/bom.js:555
+#: templates/js/translated/bom.js:406 templates/js/translated/bom.js:569
msgid "Edit BOM Item"
msgstr ""
-#: templates/js/translated/bom.js:392 templates/js/translated/bom.js:539
+#: templates/js/translated/bom.js:408 templates/js/translated/bom.js:554
msgid "Delete BOM Item"
msgstr ""
-#: templates/js/translated/bom.js:483 templates/js/translated/build.js:458
-#: templates/js/translated/build.js:1250
+#: templates/js/translated/bom.js:499 templates/js/translated/build.js:483
+#: templates/js/translated/build.js:1267
msgid "No BOM items found"
msgstr ""
-#: templates/js/translated/build.js:42
+#: templates/js/translated/build.js:69
msgid "Edit Build Order"
msgstr ""
-#: templates/js/translated/build.js:68
+#: templates/js/translated/build.js:95
msgid "Create Build Order"
msgstr ""
-#: templates/js/translated/build.js:100
+#: templates/js/translated/build.js:127
msgid "Auto-allocate stock items to this output"
msgstr ""
-#: templates/js/translated/build.js:108
+#: templates/js/translated/build.js:135
msgid "Unallocate stock from build output"
msgstr ""
-#: templates/js/translated/build.js:118
+#: templates/js/translated/build.js:145
msgid "Complete build output"
msgstr ""
-#: templates/js/translated/build.js:127
+#: templates/js/translated/build.js:154
msgid "Delete build output"
msgstr ""
-#: templates/js/translated/build.js:222
+#: templates/js/translated/build.js:249
msgid "No build order allocations found"
msgstr ""
-#: templates/js/translated/build.js:260 templates/js/translated/order.js:471
+#: templates/js/translated/build.js:287 templates/js/translated/order.js:813
msgid "Location not specified"
msgstr ""
-#: templates/js/translated/build.js:364 templates/stock_table.html:20
+#: templates/js/translated/build.js:391 templates/stock_table.html:20
msgid "New Stock Item"
msgstr ""
-#: templates/js/translated/build.js:679
+#: templates/js/translated/build.js:702
msgid "Required Part"
msgstr ""
-#: templates/js/translated/build.js:700
+#: templates/js/translated/build.js:723
msgid "Quantity Per"
msgstr ""
-#: templates/js/translated/build.js:770 templates/js/translated/build.js:1214
+#: templates/js/translated/build.js:793 templates/js/translated/build.js:1231
#: templates/stock_table.html:59
msgid "Order stock"
msgstr ""
-#: templates/js/translated/build.js:823
+#: templates/js/translated/build.js:846
msgid "No builds matching query"
msgstr ""
-#: templates/js/translated/build.js:840 templates/js/translated/part.js:711
-#: templates/js/translated/part.js:956 templates/js/translated/stock.js:883
-#: templates/js/translated/stock.js:1336
+#: templates/js/translated/build.js:863 templates/js/translated/part.js:845
+#: templates/js/translated/part.js:1123 templates/js/translated/stock.js:783
+#: templates/js/translated/stock.js:1477
msgid "Select"
msgstr ""
-#: templates/js/translated/build.js:860
+#: templates/js/translated/build.js:883
msgid "Build order is overdue"
msgstr ""
-#: templates/js/translated/build.js:924 templates/js/translated/stock.js:1558
+#: templates/js/translated/build.js:944 templates/js/translated/stock.js:1696
msgid "No user information"
msgstr ""
-#: templates/js/translated/build.js:939
+#: templates/js/translated/build.js:956
msgid "No information"
msgstr ""
-#: templates/js/translated/build.js:989
+#: templates/js/translated/build.js:1007
msgid "No parts allocated for"
msgstr ""
-#: templates/js/translated/company.js:34
+#: templates/js/translated/company.js:65
msgid "Add Manufacturer"
msgstr ""
-#: templates/js/translated/company.js:47 templates/js/translated/company.js:136
+#: templates/js/translated/company.js:78 templates/js/translated/company.js:176
msgid "Add Manufacturer Part"
msgstr ""
-#: templates/js/translated/company.js:59
+#: templates/js/translated/company.js:99
msgid "Edit Manufacturer Part"
msgstr "メーカー・パーツの編集"
-#: templates/js/translated/company.js:68
+#: templates/js/translated/company.js:108
msgid "Delete Manufacturer Part"
msgstr "メーカー・パーツを削除"
-#: templates/js/translated/company.js:124 templates/js/translated/order.js:58
+#: templates/js/translated/company.js:164 templates/js/translated/order.js:86
msgid "Add Supplier"
msgstr ""
-#: templates/js/translated/company.js:152
+#: templates/js/translated/company.js:192
msgid "Add Supplier Part"
msgstr ""
-#: templates/js/translated/company.js:162
+#: templates/js/translated/company.js:207
msgid "Edit Supplier Part"
msgstr ""
-#: templates/js/translated/company.js:172
+#: templates/js/translated/company.js:217
msgid "Delete Supplier Part"
msgstr ""
-#: templates/js/translated/company.js:219
+#: templates/js/translated/company.js:264
msgid "Edit Company"
msgstr ""
-#: templates/js/translated/company.js:240
+#: templates/js/translated/company.js:285
msgid "Add new Company"
msgstr ""
-#: templates/js/translated/company.js:317
+#: templates/js/translated/company.js:362
msgid "Parts Supplied"
msgstr ""
-#: templates/js/translated/company.js:326
+#: templates/js/translated/company.js:371
msgid "Parts Manufactured"
msgstr ""
-#: templates/js/translated/company.js:339
+#: templates/js/translated/company.js:385
msgid "No company information found"
msgstr ""
-#: templates/js/translated/company.js:357
+#: templates/js/translated/company.js:404
msgid "The following manufacturer parts will be deleted"
msgstr ""
-#: templates/js/translated/company.js:374
+#: templates/js/translated/company.js:421
msgid "Delete Manufacturer Parts"
msgstr ""
-#: templates/js/translated/company.js:427
+#: templates/js/translated/company.js:475
msgid "No manufacturer parts found"
msgstr ""
-#: templates/js/translated/company.js:446
-#: templates/js/translated/company.js:696 templates/js/translated/part.js:288
-#: templates/js/translated/part.js:373
+#: templates/js/translated/company.js:495
+#: templates/js/translated/company.js:751 templates/js/translated/part.js:416
+#: templates/js/translated/part.js:501
msgid "Template part"
msgstr ""
-#: templates/js/translated/company.js:450
-#: templates/js/translated/company.js:700 templates/js/translated/part.js:292
-#: templates/js/translated/part.js:377
+#: templates/js/translated/company.js:499
+#: templates/js/translated/company.js:755 templates/js/translated/part.js:420
+#: templates/js/translated/part.js:505
msgid "Assembled part"
msgstr ""
-#: templates/js/translated/company.js:574 templates/js/translated/part.js:462
+#: templates/js/translated/company.js:626 templates/js/translated/part.js:593
msgid "No parameters found"
msgstr ""
-#: templates/js/translated/company.js:610 templates/js/translated/part.js:503
+#: templates/js/translated/company.js:663 templates/js/translated/part.js:635
msgid "Edit parameter"
msgstr ""
-#: templates/js/translated/company.js:611 templates/js/translated/part.js:504
+#: templates/js/translated/company.js:664 templates/js/translated/part.js:636
msgid "Delete parameter"
msgstr ""
-#: templates/js/translated/company.js:630 templates/js/translated/part.js:521
+#: templates/js/translated/company.js:683 templates/js/translated/part.js:653
msgid "Edit Parameter"
msgstr ""
-#: templates/js/translated/company.js:641 templates/js/translated/part.js:533
+#: templates/js/translated/company.js:694 templates/js/translated/part.js:665
msgid "Delete Parameter"
msgstr ""
-#: templates/js/translated/company.js:677
+#: templates/js/translated/company.js:731
msgid "No supplier parts found"
msgstr ""
-#: templates/js/translated/filters.js:167
-#: templates/js/translated/filters.js:404
+#: templates/js/translated/filters.js:178
+#: templates/js/translated/filters.js:402
msgid "true"
msgstr ""
-#: templates/js/translated/filters.js:171
-#: templates/js/translated/filters.js:405
+#: templates/js/translated/filters.js:182
+#: templates/js/translated/filters.js:403
msgid "false"
msgstr ""
-#: templates/js/translated/filters.js:193
+#: templates/js/translated/filters.js:204
msgid "Select filter"
msgstr ""
-#: templates/js/translated/filters.js:268
+#: templates/js/translated/filters.js:279
msgid "Reload data"
msgstr ""
-#: templates/js/translated/filters.js:270
+#: templates/js/translated/filters.js:281
msgid "Add new filter"
msgstr ""
-#: templates/js/translated/filters.js:273
+#: templates/js/translated/filters.js:284
msgid "Clear all filters"
msgstr ""
-#: templates/js/translated/filters.js:303
+#: templates/js/translated/filters.js:312
msgid "Create filter"
msgstr ""
-#: templates/js/translated/forms.js:289 templates/js/translated/forms.js:302
-#: templates/js/translated/forms.js:314 templates/js/translated/forms.js:326
+#: templates/js/translated/forms.js:323 templates/js/translated/forms.js:336
+#: templates/js/translated/forms.js:348 templates/js/translated/forms.js:360
msgid "Action Prohibited"
msgstr ""
-#: templates/js/translated/forms.js:290
+#: templates/js/translated/forms.js:324
msgid "Create operation not allowed"
msgstr ""
-#: templates/js/translated/forms.js:303
+#: templates/js/translated/forms.js:337
msgid "Update operation not allowed"
msgstr ""
-#: templates/js/translated/forms.js:315
+#: templates/js/translated/forms.js:349
msgid "Delete operation not allowed"
msgstr ""
-#: templates/js/translated/forms.js:327
+#: templates/js/translated/forms.js:361
msgid "View operation not allowed"
msgstr ""
-#: templates/js/translated/forms.js:865 templates/modals.html:21
+#: templates/js/translated/forms.js:889 templates/modals.html:21
#: templates/modals.html:47
msgid "Form errors exist"
msgstr ""
-#: templates/js/translated/forms.js:1258
+#: templates/js/translated/forms.js:1379
msgid "Searching"
msgstr ""
-#: templates/js/translated/forms.js:1423
+#: templates/js/translated/forms.js:1593
msgid "Clear input"
msgstr ""
-#: templates/js/translated/label.js:11
-msgid "Stock item(s) must be selected before printing labels"
+#: templates/js/translated/helpers.js:19
+msgid "YES"
msgstr ""
-#: templates/js/translated/label.js:29 templates/js/translated/label.js:79
-#: templates/js/translated/label.js:134
-msgid "No Labels Found"
+#: templates/js/translated/helpers.js:21
+msgid "NO"
msgstr ""
#: templates/js/translated/label.js:30
+msgid "Stock item(s) must be selected before printing labels"
+msgstr ""
+
+#: templates/js/translated/label.js:48 templates/js/translated/label.js:98
+#: templates/js/translated/label.js:153
+msgid "No Labels Found"
+msgstr ""
+
+#: templates/js/translated/label.js:49
msgid "No labels found which match selected stock item(s)"
msgstr ""
-#: templates/js/translated/label.js:61
+#: templates/js/translated/label.js:80
msgid "Select Stock Locations"
msgstr ""
-#: templates/js/translated/label.js:62
+#: templates/js/translated/label.js:81
msgid "Stock location(s) must be selected before printing labels"
msgstr ""
-#: templates/js/translated/label.js:80
+#: templates/js/translated/label.js:99
msgid "No labels found which match selected stock location(s)"
msgstr ""
-#: templates/js/translated/label.js:116
+#: templates/js/translated/label.js:135
msgid "Part(s) must be selected before printing labels"
msgstr ""
-#: templates/js/translated/label.js:135
+#: templates/js/translated/label.js:154
msgid "No labels found which match the selected part(s)"
msgstr ""
-#: templates/js/translated/label.js:209
+#: templates/js/translated/label.js:228
msgid "stock items selected"
msgstr ""
-#: templates/js/translated/label.js:217
+#: templates/js/translated/label.js:236
msgid "Select Label"
msgstr ""
-#: templates/js/translated/label.js:232
+#: templates/js/translated/label.js:251
msgid "Select Label Template"
msgstr ""
-#: templates/js/translated/modals.js:59 templates/js/translated/modals.js:103
-#: templates/js/translated/modals.js:593
+#: templates/js/translated/modals.js:76 templates/js/translated/modals.js:120
+#: templates/js/translated/modals.js:610
msgid "Cancel"
msgstr ""
-#: templates/js/translated/modals.js:60 templates/js/translated/modals.js:102
-#: templates/js/translated/modals.js:660 templates/js/translated/modals.js:956
+#: templates/js/translated/modals.js:77 templates/js/translated/modals.js:119
+#: templates/js/translated/modals.js:677 templates/js/translated/modals.js:970
#: templates/modals.html:30 templates/modals.html:55
msgid "Submit"
msgstr ""
-#: templates/js/translated/modals.js:101
+#: templates/js/translated/modals.js:118
msgid "Form Title"
msgstr ""
-#: templates/js/translated/modals.js:380
+#: templates/js/translated/modals.js:397
msgid "Waiting for server..."
msgstr ""
-#: templates/js/translated/modals.js:539
+#: templates/js/translated/modals.js:556
msgid "Show Error Information"
msgstr ""
-#: templates/js/translated/modals.js:592
+#: templates/js/translated/modals.js:609
msgid "Accept"
msgstr ""
-#: templates/js/translated/modals.js:649
+#: templates/js/translated/modals.js:666
msgid "Loading Data"
msgstr ""
-#: templates/js/translated/modals.js:907
+#: templates/js/translated/modals.js:922
msgid "Invalid response from server"
msgstr ""
-#: templates/js/translated/modals.js:907
+#: templates/js/translated/modals.js:922
msgid "Form data missing from server response"
msgstr ""
-#: templates/js/translated/modals.js:920
+#: templates/js/translated/modals.js:934
msgid "Error posting form data"
msgstr ""
-#: templates/js/translated/modals.js:1017
+#: templates/js/translated/modals.js:1031
msgid "JSON response missing form data"
msgstr ""
-#: templates/js/translated/modals.js:1032
+#: templates/js/translated/modals.js:1046
msgid "Error 400: Bad Request"
msgstr ""
-#: templates/js/translated/modals.js:1033
+#: templates/js/translated/modals.js:1047
msgid "Server returned error code 400"
msgstr ""
-#: templates/js/translated/modals.js:1056
+#: templates/js/translated/modals.js:1070
msgid "Error requesting form data"
msgstr ""
-#: templates/js/translated/model_renderers.js:38
+#: templates/js/translated/model_renderers.js:40
msgid "Company ID"
msgstr ""
-#: templates/js/translated/model_renderers.js:78
+#: templates/js/translated/model_renderers.js:82
msgid "Location ID"
msgstr ""
-#: templates/js/translated/model_renderers.js:95
+#: templates/js/translated/model_renderers.js:99
msgid "Build ID"
msgstr ""
-#: templates/js/translated/model_renderers.js:114
+#: templates/js/translated/model_renderers.js:119
msgid "Part ID"
msgstr ""
-#: templates/js/translated/model_renderers.js:163
+#: templates/js/translated/model_renderers.js:171
msgid "Category ID"
msgstr ""
-#: templates/js/translated/model_renderers.js:199
+#: templates/js/translated/model_renderers.js:208
msgid "Manufacturer Part ID"
msgstr ""
-#: templates/js/translated/model_renderers.js:227
+#: templates/js/translated/model_renderers.js:237
msgid "Supplier Part ID"
msgstr ""
-#: templates/js/translated/order.js:17
+#: templates/js/translated/order.js:45
msgid "Add Customer"
msgstr ""
-#: templates/js/translated/order.js:42
+#: templates/js/translated/order.js:70
msgid "Create Sales Order"
msgstr ""
-#: templates/js/translated/order.js:222
+#: templates/js/translated/order.js:295
msgid "No purchase orders found"
msgstr ""
-#: templates/js/translated/order.js:246 templates/js/translated/order.js:341
+#: templates/js/translated/order.js:320 templates/js/translated/order.js:682
msgid "Order is overdue"
msgstr ""
-#: templates/js/translated/order.js:318
+#: templates/js/translated/order.js:452
+msgid "No line items found"
+msgstr ""
+
+#: templates/js/translated/order.js:617
+msgid "Delete line item"
+msgstr ""
+
+#: templates/js/translated/order.js:621
+msgid "Receive line item"
+msgstr ""
+
+#: templates/js/translated/order.js:658
msgid "No sales orders found"
msgstr ""
-#: templates/js/translated/order.js:355
+#: templates/js/translated/order.js:696
msgid "Invalid Customer"
msgstr ""
-#: templates/js/translated/order.js:432
+#: templates/js/translated/order.js:774
msgid "No sales order allocations found"
msgstr ""
-#: templates/js/translated/part.js:10
-msgid "YES"
-msgstr ""
-
-#: templates/js/translated/part.js:12
-msgid "NO"
-msgstr ""
-
-#: templates/js/translated/part.js:22
-msgid "Add Part Category"
-msgstr ""
-
-#: templates/js/translated/part.js:53
+#: templates/js/translated/part.js:49
msgid "Part Attributes"
msgstr ""
-#: templates/js/translated/part.js:96
+#: templates/js/translated/part.js:53
msgid "Part Creation Options"
msgstr ""
-#: templates/js/translated/part.js:102
-msgid "Initial Stock Quantity"
-msgstr ""
-
-#: templates/js/translated/part.js:103
-msgid "Initialize part stock with specified quantity"
-msgstr ""
-
-#: templates/js/translated/part.js:109
-msgid "Copy Category Parameters"
-msgstr ""
-
-#: templates/js/translated/part.js:110
-msgid "Copy parameter templates from selected part category"
-msgstr ""
-
-#: templates/js/translated/part.js:120
+#: templates/js/translated/part.js:57
msgid "Part Duplication Options"
msgstr ""
-#: templates/js/translated/part.js:131
-msgid "Copy Image"
+#: templates/js/translated/part.js:61
+msgid "Supplier Options"
msgstr ""
-#: templates/js/translated/part.js:132
-msgid "Copy image from original part"
+#: templates/js/translated/part.js:75
+msgid "Add Part Category"
msgstr ""
-#: templates/js/translated/part.js:138
-msgid "Copy BOM"
+#: templates/js/translated/part.js:159
+msgid "Create Initial Stock"
msgstr ""
-#: templates/js/translated/part.js:139
-msgid "Copy bill of materials from original part"
+#: templates/js/translated/part.js:160
+msgid "Create an initial stock item for this part"
msgstr ""
-#: templates/js/translated/part.js:145
-msgid "Copy Parameters"
+#: templates/js/translated/part.js:167
+msgid "Initial Stock Quantity"
msgstr ""
-#: templates/js/translated/part.js:146
-msgid "Copy parameter data from original part"
+#: templates/js/translated/part.js:168
+msgid "Specify initial stock quantity for this part"
msgstr ""
-#: templates/js/translated/part.js:158
-msgid "Parent part category"
+#: templates/js/translated/part.js:175 templates/js/translated/stock.js:330
+msgid "Select destination stock location"
+msgstr ""
+
+#: templates/js/translated/part.js:186
+msgid "Copy Category Parameters"
+msgstr ""
+
+#: templates/js/translated/part.js:187
+msgid "Copy parameter templates from selected part category"
+msgstr ""
+
+#: templates/js/translated/part.js:195
+msgid "Add Supplier Data"
msgstr ""
#: templates/js/translated/part.js:196
+msgid "Create initial supplier data for this part"
+msgstr ""
+
+#: templates/js/translated/part.js:252
+msgid "Copy Image"
+msgstr ""
+
+#: templates/js/translated/part.js:253
+msgid "Copy image from original part"
+msgstr ""
+
+#: templates/js/translated/part.js:260
+msgid "Copy BOM"
+msgstr ""
+
+#: templates/js/translated/part.js:261
+msgid "Copy bill of materials from original part"
+msgstr ""
+
+#: templates/js/translated/part.js:268
+msgid "Copy Parameters"
+msgstr ""
+
+#: templates/js/translated/part.js:269
+msgid "Copy parameter data from original part"
+msgstr ""
+
+#: templates/js/translated/part.js:282
+msgid "Parent part category"
+msgstr ""
+
+#: templates/js/translated/part.js:323
msgid "Edit Part"
msgstr ""
-#: templates/js/translated/part.js:280 templates/js/translated/part.js:365
+#: templates/js/translated/part.js:408 templates/js/translated/part.js:493
msgid "Trackable part"
msgstr ""
-#: templates/js/translated/part.js:284 templates/js/translated/part.js:369
+#: templates/js/translated/part.js:412 templates/js/translated/part.js:497
msgid "Virtual part"
msgstr ""
-#: templates/js/translated/part.js:296
+#: templates/js/translated/part.js:424
msgid "Starred part"
msgstr ""
-#: templates/js/translated/part.js:300
+#: templates/js/translated/part.js:428
msgid "Salable part"
msgstr ""
-#: templates/js/translated/part.js:414
+#: templates/js/translated/part.js:543
msgid "No variants found"
msgstr ""
-#: templates/js/translated/part.js:601 templates/js/translated/part.js:840
+#: templates/js/translated/part.js:732 templates/js/translated/part.js:994
msgid "No parts found"
msgstr ""
-#: templates/js/translated/part.js:779
+#: templates/js/translated/part.js:921
msgid "No category"
msgstr ""
-#: templates/js/translated/part.js:797
-#: templates/js/translated/table_filters.js:337
+#: templates/js/translated/part.js:944
+#: templates/js/translated/table_filters.js:350
msgid "Low stock"
msgstr ""
-#: templates/js/translated/part.js:981 templates/js/translated/stock.js:1360
+#: templates/js/translated/part.js:1148 templates/js/translated/stock.js:1501
msgid "Path"
msgstr ""
-#: templates/js/translated/part.js:1024
+#: templates/js/translated/part.js:1191
msgid "No test templates matching query"
msgstr ""
-#: templates/js/translated/part.js:1075 templates/js/translated/stock.js:443
+#: templates/js/translated/part.js:1242 templates/js/translated/stock.js:514
msgid "Edit test result"
msgstr ""
-#: templates/js/translated/part.js:1076 templates/js/translated/stock.js:444
+#: templates/js/translated/part.js:1243 templates/js/translated/stock.js:515
msgid "Delete test result"
msgstr ""
-#: templates/js/translated/part.js:1082
+#: templates/js/translated/part.js:1249
msgid "This test is defined for a parent part"
msgstr ""
-#: templates/js/translated/part.js:1107
+#: templates/js/translated/part.js:1274
#, python-brace-format
msgid "No ${human_name} information found"
msgstr ""
-#: templates/js/translated/part.js:1160
+#: templates/js/translated/part.js:1329
#, python-brace-format
msgid "Edit ${human_name}"
msgstr ""
-#: templates/js/translated/part.js:1161
+#: templates/js/translated/part.js:1330
#, python-brace-format
msgid "Delete ${human_name}"
msgstr ""
-#: templates/js/translated/part.js:1261
+#: templates/js/translated/part.js:1431
msgid "Single Price"
msgstr ""
-#: templates/js/translated/part.js:1280
+#: templates/js/translated/part.js:1450
msgid "Single Price Difference"
msgstr ""
-#: templates/js/translated/stock.js:9
+#: templates/js/translated/stock.js:66
msgid "Parent stock location"
msgstr ""
-#: templates/js/translated/stock.js:39
+#: templates/js/translated/stock.js:96
msgid "Export Stock"
msgstr ""
-#: templates/js/translated/stock.js:42
+#: templates/js/translated/stock.js:99
msgid "Format"
msgstr ""
-#: templates/js/translated/stock.js:43
+#: templates/js/translated/stock.js:100
msgid "Select file format"
msgstr ""
-#: templates/js/translated/stock.js:55
+#: templates/js/translated/stock.js:124
msgid "Include Sublocations"
msgstr ""
-#: templates/js/translated/stock.js:56
+#: templates/js/translated/stock.js:125
msgid "Include stock items in sublocations"
msgstr ""
-#: templates/js/translated/stock.js:98
+#: templates/js/translated/stock.js:167
msgid "Transfer Stock"
msgstr ""
-#: templates/js/translated/stock.js:99
+#: templates/js/translated/stock.js:168
msgid "Move"
msgstr ""
-#: templates/js/translated/stock.js:105
+#: templates/js/translated/stock.js:174
msgid "Count Stock"
msgstr ""
-#: templates/js/translated/stock.js:106
+#: templates/js/translated/stock.js:175
msgid "Count"
msgstr ""
-#: templates/js/translated/stock.js:110
+#: templates/js/translated/stock.js:179
msgid "Remove Stock"
msgstr ""
-#: templates/js/translated/stock.js:111
+#: templates/js/translated/stock.js:180
msgid "Take"
msgstr ""
-#: templates/js/translated/stock.js:115
+#: templates/js/translated/stock.js:184
msgid "Add Stock"
msgstr ""
-#: templates/js/translated/stock.js:116 users/models.py:190
+#: templates/js/translated/stock.js:185 users/models.py:190
msgid "Add"
msgstr ""
-#: templates/js/translated/stock.js:120 templates/stock_table.html:63
+#: templates/js/translated/stock.js:189 templates/stock_table.html:63
msgid "Delete Stock"
msgstr ""
-#: templates/js/translated/stock.js:209
+#: templates/js/translated/stock.js:278
msgid "Quantity cannot be adjusted for serialized stock"
msgstr ""
-#: templates/js/translated/stock.js:209
+#: templates/js/translated/stock.js:278
msgid "Specify stock quantity"
msgstr ""
-#: templates/js/translated/stock.js:245
+#: templates/js/translated/stock.js:314
msgid "You must select at least one available stock item"
msgstr ""
-#: templates/js/translated/stock.js:261
-msgid "Select destination stock location"
-msgstr ""
-
-#: templates/js/translated/stock.js:269
+#: templates/js/translated/stock.js:339
msgid "Stock transaction notes"
msgstr ""
-#: templates/js/translated/stock.js:406
+#: templates/js/translated/stock.js:477
msgid "PASS"
msgstr ""
-#: templates/js/translated/stock.js:408
+#: templates/js/translated/stock.js:479
msgid "FAIL"
msgstr ""
-#: templates/js/translated/stock.js:413
+#: templates/js/translated/stock.js:484
msgid "NO RESULT"
msgstr ""
-#: templates/js/translated/stock.js:439
+#: templates/js/translated/stock.js:510
msgid "Add test result"
msgstr ""
-#: templates/js/translated/stock.js:465
+#: templates/js/translated/stock.js:536
msgid "No test results found"
msgstr ""
-#: templates/js/translated/stock.js:513
+#: templates/js/translated/stock.js:584
msgid "Test Date"
msgstr ""
-#: templates/js/translated/stock.js:621
+#: templates/js/translated/stock.js:691
msgid "In production"
msgstr ""
-#: templates/js/translated/stock.js:625
+#: templates/js/translated/stock.js:695
msgid "Installed in Stock Item"
msgstr ""
-#: templates/js/translated/stock.js:633
+#: templates/js/translated/stock.js:703
msgid "Assigned to Sales Order"
msgstr ""
-#: templates/js/translated/stock.js:709
-msgid "No stock items matching query"
-msgstr ""
-
-#: templates/js/translated/stock.js:729
-msgid "items"
-msgstr ""
-
-#: templates/js/translated/stock.js:821
-msgid "batches"
-msgstr ""
-
-#: templates/js/translated/stock.js:848
-msgid "locations"
-msgstr ""
-
-#: templates/js/translated/stock.js:850
-msgid "Undefined location"
-msgstr ""
-
-#: templates/js/translated/stock.js:951
+#: templates/js/translated/stock.js:865
msgid "Stock item is in production"
msgstr ""
-#: templates/js/translated/stock.js:956
+#: templates/js/translated/stock.js:870
msgid "Stock item assigned to sales order"
msgstr ""
-#: templates/js/translated/stock.js:959
+#: templates/js/translated/stock.js:873
msgid "Stock item assigned to customer"
msgstr ""
-#: templates/js/translated/stock.js:963
+#: templates/js/translated/stock.js:877
msgid "Stock item has expired"
msgstr ""
-#: templates/js/translated/stock.js:965
+#: templates/js/translated/stock.js:879
msgid "Stock item will expire soon"
msgstr ""
-#: templates/js/translated/stock.js:969
+#: templates/js/translated/stock.js:883
msgid "Stock item has been allocated"
msgstr ""
-#: templates/js/translated/stock.js:973
+#: templates/js/translated/stock.js:887
msgid "Stock item has been installed in another item"
msgstr ""
-#: templates/js/translated/stock.js:980
+#: templates/js/translated/stock.js:894
msgid "Stock item has been rejected"
msgstr ""
-#: templates/js/translated/stock.js:984
+#: templates/js/translated/stock.js:896
msgid "Stock item is lost"
msgstr ""
-#: templates/js/translated/stock.js:987
+#: templates/js/translated/stock.js:898
msgid "Stock item is destroyed"
msgstr ""
-#: templates/js/translated/stock.js:991
-#: templates/js/translated/table_filters.js:148
+#: templates/js/translated/stock.js:902
+#: templates/js/translated/table_filters.js:161
msgid "Depleted"
msgstr ""
-#: templates/js/translated/stock.js:1020
+#: templates/js/translated/stock.js:956
msgid "Stocktake"
msgstr ""
-#: templates/js/translated/stock.js:1073
+#: templates/js/translated/stock.js:1029
msgid "Supplier part not specified"
msgstr ""
-#: templates/js/translated/stock.js:1223
+#: templates/js/translated/stock.js:1067
+msgid "No stock items matching query"
+msgstr ""
+
+#: templates/js/translated/stock.js:1088 templates/js/translated/stock.js:1136
+msgid "items"
+msgstr ""
+
+#: templates/js/translated/stock.js:1176
+msgid "batches"
+msgstr ""
+
+#: templates/js/translated/stock.js:1203
+msgid "locations"
+msgstr ""
+
+#: templates/js/translated/stock.js:1205
+msgid "Undefined location"
+msgstr ""
+
+#: templates/js/translated/stock.js:1364
msgid "Stock Status"
msgstr ""
-#: templates/js/translated/stock.js:1238
+#: templates/js/translated/stock.js:1379
msgid "Set Stock Status"
msgstr ""
-#: templates/js/translated/stock.js:1252
+#: templates/js/translated/stock.js:1393
msgid "Select Status Code"
msgstr ""
-#: templates/js/translated/stock.js:1253
+#: templates/js/translated/stock.js:1394
msgid "Status code must be selected"
msgstr ""
-#: templates/js/translated/stock.js:1392
+#: templates/js/translated/stock.js:1533
msgid "Invalid date"
msgstr ""
-#: templates/js/translated/stock.js:1439
+#: templates/js/translated/stock.js:1580
msgid "Location no longer exists"
msgstr ""
-#: templates/js/translated/stock.js:1458
+#: templates/js/translated/stock.js:1599
msgid "Purchase order no longer exists"
msgstr ""
-#: templates/js/translated/stock.js:1477
+#: templates/js/translated/stock.js:1618
msgid "Customer no longer exists"
msgstr ""
-#: templates/js/translated/stock.js:1495
+#: templates/js/translated/stock.js:1636
msgid "Stock item no longer exists"
msgstr ""
-#: templates/js/translated/stock.js:1518
+#: templates/js/translated/stock.js:1659
msgid "Added"
msgstr ""
-#: templates/js/translated/stock.js:1526
+#: templates/js/translated/stock.js:1667
msgid "Removed"
msgstr ""
-#: templates/js/translated/stock.js:1570
+#: templates/js/translated/stock.js:1708
msgid "Edit tracking entry"
msgstr ""
-#: templates/js/translated/stock.js:1571
+#: templates/js/translated/stock.js:1709
msgid "Delete tracking entry"
msgstr ""
-#: templates/js/translated/stock.js:1715
+#: templates/js/translated/stock.js:1833
msgid "No installed items"
msgstr ""
-#: templates/js/translated/stock.js:1738
+#: templates/js/translated/stock.js:1856
msgid "Serial"
msgstr ""
-#: templates/js/translated/stock.js:1766
+#: templates/js/translated/stock.js:1884
msgid "Uninstall Stock Item"
msgstr ""
-#: templates/js/translated/table_filters.js:43
+#: templates/js/translated/table_filters.js:56
msgid "Trackable Part"
msgstr ""
-#: templates/js/translated/table_filters.js:47
+#: templates/js/translated/table_filters.js:60
msgid "Assembled Part"
msgstr ""
-#: templates/js/translated/table_filters.js:51
+#: templates/js/translated/table_filters.js:64
msgid "Validated"
msgstr ""
-#: templates/js/translated/table_filters.js:59
+#: templates/js/translated/table_filters.js:72
msgid "Allow Variant Stock"
msgstr ""
-#: templates/js/translated/table_filters.js:79
-#: templates/js/translated/table_filters.js:143
+#: templates/js/translated/table_filters.js:92
+#: templates/js/translated/table_filters.js:156
msgid "Include sublocations"
msgstr ""
-#: templates/js/translated/table_filters.js:80
+#: templates/js/translated/table_filters.js:93
msgid "Include locations"
msgstr ""
-#: templates/js/translated/table_filters.js:90
-#: templates/js/translated/table_filters.js:91
-#: templates/js/translated/table_filters.js:314
+#: templates/js/translated/table_filters.js:103
+#: templates/js/translated/table_filters.js:104
+#: templates/js/translated/table_filters.js:327
msgid "Include subcategories"
msgstr ""
-#: templates/js/translated/table_filters.js:101
-#: templates/js/translated/table_filters.js:178
+#: templates/js/translated/table_filters.js:114
+#: templates/js/translated/table_filters.js:191
msgid "Is Serialized"
msgstr ""
-#: templates/js/translated/table_filters.js:104
-#: templates/js/translated/table_filters.js:185
+#: templates/js/translated/table_filters.js:117
+#: templates/js/translated/table_filters.js:198
msgid "Serial number GTE"
msgstr ""
-#: templates/js/translated/table_filters.js:105
-#: templates/js/translated/table_filters.js:186
+#: templates/js/translated/table_filters.js:118
+#: templates/js/translated/table_filters.js:199
msgid "Serial number greater than or equal to"
msgstr ""
-#: templates/js/translated/table_filters.js:108
-#: templates/js/translated/table_filters.js:189
+#: templates/js/translated/table_filters.js:121
+#: templates/js/translated/table_filters.js:202
msgid "Serial number LTE"
msgstr ""
-#: templates/js/translated/table_filters.js:109
-#: templates/js/translated/table_filters.js:190
+#: templates/js/translated/table_filters.js:122
+#: templates/js/translated/table_filters.js:203
msgid "Serial number less than or equal to"
msgstr ""
-#: templates/js/translated/table_filters.js:112
-#: templates/js/translated/table_filters.js:113
-#: templates/js/translated/table_filters.js:181
-#: templates/js/translated/table_filters.js:182
+#: templates/js/translated/table_filters.js:125
+#: templates/js/translated/table_filters.js:126
+#: templates/js/translated/table_filters.js:194
+#: templates/js/translated/table_filters.js:195
msgid "Serial number"
msgstr ""
-#: templates/js/translated/table_filters.js:117
-#: templates/js/translated/table_filters.js:199
+#: templates/js/translated/table_filters.js:130
+#: templates/js/translated/table_filters.js:212
msgid "Batch code"
msgstr ""
-#: templates/js/translated/table_filters.js:128
-#: templates/js/translated/table_filters.js:304
+#: templates/js/translated/table_filters.js:141
+#: templates/js/translated/table_filters.js:317
msgid "Active parts"
msgstr ""
-#: templates/js/translated/table_filters.js:129
+#: templates/js/translated/table_filters.js:142
msgid "Show stock for active parts"
msgstr ""
-#: templates/js/translated/table_filters.js:134
+#: templates/js/translated/table_filters.js:147
msgid "Part is an assembly"
msgstr ""
-#: templates/js/translated/table_filters.js:138
+#: templates/js/translated/table_filters.js:151
msgid "Is allocated"
msgstr ""
-#: templates/js/translated/table_filters.js:139
+#: templates/js/translated/table_filters.js:152
msgid "Item has been allocated"
msgstr ""
-#: templates/js/translated/table_filters.js:144
+#: templates/js/translated/table_filters.js:157
msgid "Include stock in sublocations"
msgstr ""
-#: templates/js/translated/table_filters.js:149
+#: templates/js/translated/table_filters.js:162
msgid "Show stock items which are depleted"
msgstr ""
-#: templates/js/translated/table_filters.js:154
+#: templates/js/translated/table_filters.js:167
msgid "Show items which are in stock"
msgstr ""
-#: templates/js/translated/table_filters.js:158
+#: templates/js/translated/table_filters.js:171
msgid "In Production"
msgstr ""
-#: templates/js/translated/table_filters.js:159
+#: templates/js/translated/table_filters.js:172
msgid "Show items which are in production"
msgstr ""
-#: templates/js/translated/table_filters.js:163
+#: templates/js/translated/table_filters.js:176
msgid "Include Variants"
msgstr ""
-#: templates/js/translated/table_filters.js:164
+#: templates/js/translated/table_filters.js:177
msgid "Include stock items for variant parts"
msgstr ""
-#: templates/js/translated/table_filters.js:168
+#: templates/js/translated/table_filters.js:181
msgid "Installed"
msgstr ""
-#: templates/js/translated/table_filters.js:169
+#: templates/js/translated/table_filters.js:182
msgid "Show stock items which are installed in another item"
msgstr ""
-#: templates/js/translated/table_filters.js:174
+#: templates/js/translated/table_filters.js:187
msgid "Show items which have been assigned to a customer"
msgstr ""
-#: templates/js/translated/table_filters.js:194
-#: templates/js/translated/table_filters.js:195
+#: templates/js/translated/table_filters.js:207
+#: templates/js/translated/table_filters.js:208
msgid "Stock status"
msgstr ""
-#: templates/js/translated/table_filters.js:203
+#: templates/js/translated/table_filters.js:216
msgid "Has purchase price"
msgstr ""
-#: templates/js/translated/table_filters.js:204
+#: templates/js/translated/table_filters.js:217
msgid "Show stock items which have a purchase price set"
msgstr ""
-#: templates/js/translated/table_filters.js:213
+#: templates/js/translated/table_filters.js:226
msgid "Show stock items which have expired"
msgstr ""
-#: templates/js/translated/table_filters.js:219
+#: templates/js/translated/table_filters.js:232
msgid "Show stock which is close to expiring"
msgstr ""
-#: templates/js/translated/table_filters.js:250
+#: templates/js/translated/table_filters.js:263
msgid "Build status"
msgstr ""
-#: templates/js/translated/table_filters.js:269
-#: templates/js/translated/table_filters.js:286
+#: templates/js/translated/table_filters.js:282
+#: templates/js/translated/table_filters.js:299
msgid "Order status"
msgstr ""
-#: templates/js/translated/table_filters.js:274
-#: templates/js/translated/table_filters.js:291
+#: templates/js/translated/table_filters.js:287
+#: templates/js/translated/table_filters.js:304
msgid "Outstanding"
msgstr ""
-#: templates/js/translated/table_filters.js:315
+#: templates/js/translated/table_filters.js:328
msgid "Include parts in subcategories"
msgstr ""
-#: templates/js/translated/table_filters.js:319
+#: templates/js/translated/table_filters.js:332
msgid "Has IPN"
msgstr ""
-#: templates/js/translated/table_filters.js:320
+#: templates/js/translated/table_filters.js:333
msgid "Part has internal part number"
msgstr ""
-#: templates/js/translated/table_filters.js:325
+#: templates/js/translated/table_filters.js:338
msgid "Show active parts"
msgstr ""
-#: templates/js/translated/table_filters.js:333
+#: templates/js/translated/table_filters.js:346
msgid "Stock available"
msgstr ""
-#: templates/js/translated/table_filters.js:349
+#: templates/js/translated/table_filters.js:362
msgid "Starred"
msgstr ""
-#: templates/js/translated/table_filters.js:361
+#: templates/js/translated/table_filters.js:374
msgid "Purchasable"
msgstr ""
-#: templates/js/translated/tables.js:342
+#: templates/js/translated/tables.js:357
msgid "Loading data"
msgstr ""
-#: templates/js/translated/tables.js:345
+#: templates/js/translated/tables.js:360
msgid "rows per page"
msgstr ""
-#: templates/js/translated/tables.js:348
+#: templates/js/translated/tables.js:363
msgid "Showing"
msgstr ""
-#: templates/js/translated/tables.js:348
+#: templates/js/translated/tables.js:363
msgid "to"
msgstr ""
-#: templates/js/translated/tables.js:348
+#: templates/js/translated/tables.js:363
msgid "of"
msgstr ""
-#: templates/js/translated/tables.js:348
+#: templates/js/translated/tables.js:363
msgid "rows"
msgstr ""
-#: templates/js/translated/tables.js:354
+#: templates/js/translated/tables.js:369
msgid "No matching results"
msgstr ""
-#: templates/js/translated/tables.js:357
+#: templates/js/translated/tables.js:372
msgid "Hide/Show pagination"
msgstr ""
-#: templates/js/translated/tables.js:360
+#: templates/js/translated/tables.js:375
msgid "Refresh"
msgstr ""
-#: templates/js/translated/tables.js:363
+#: templates/js/translated/tables.js:378
msgid "Toggle"
msgstr ""
-#: templates/js/translated/tables.js:366
+#: templates/js/translated/tables.js:381
msgid "Columns"
msgstr ""
-#: templates/js/translated/tables.js:369
+#: templates/js/translated/tables.js:384
msgid "All"
msgstr ""
-#: templates/navbar.html:13
+#: templates/navbar.html:19
msgid "Toggle navigation"
msgstr ""
-#: templates/navbar.html:33
+#: templates/navbar.html:39
msgid "Buy"
msgstr ""
-#: templates/navbar.html:43
+#: templates/navbar.html:51
msgid "Sell"
msgstr ""
-#: templates/navbar.html:55
-msgid "Scan Barcode"
-msgstr ""
-
-#: templates/navbar.html:77 users/models.py:39
+#: templates/navbar.html:87 users/models.py:39
msgid "Admin"
msgstr ""
-#: templates/navbar.html:79
+#: templates/navbar.html:89
msgid "Logout"
msgstr ""
-#: templates/navbar.html:81 templates/registration/login.html:89
+#: templates/navbar.html:91 templates/registration/login.html:89
msgid "Login"
msgstr ""
-#: templates/navbar.html:104
+#: templates/navbar.html:114
msgid "About InvenTree"
msgstr ""
diff --git a/InvenTree/locale/ko/LC_MESSAGES/django.po b/InvenTree/locale/ko/LC_MESSAGES/django.po
index 900a659884..c0b31fe815 100644
--- a/InvenTree/locale/ko/LC_MESSAGES/django.po
+++ b/InvenTree/locale/ko/LC_MESSAGES/django.po
@@ -2,8 +2,8 @@ msgid ""
msgstr ""
"Project-Id-Version: inventree\n"
"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2021-08-07 15:14+0000\n"
-"PO-Revision-Date: 2021-08-07 15:30\n"
+"POT-Creation-Date: 2021-09-12 13:15+0000\n"
+"PO-Revision-Date: 2021-09-12 13:44\n"
"Last-Translator: \n"
"Language-Team: Korean\n"
"Language: ko_KR\n"
@@ -36,7 +36,7 @@ msgstr ""
#: InvenTree/forms.py:111 build/forms.py:102 build/forms.py:123
#: build/forms.py:145 build/forms.py:169 build/forms.py:185 build/forms.py:227
#: order/forms.py:30 order/forms.py:41 order/forms.py:52 order/forms.py:63
-#: order/forms.py:74 part/forms.py:108 templates/js/translated/forms.js:545
+#: order/forms.py:74 part/forms.py:108 templates/js/translated/forms.js:564
msgid "Confirm"
msgstr ""
@@ -73,7 +73,7 @@ msgstr ""
msgid "Duplicate serial: {n}"
msgstr ""
-#: InvenTree/helpers.py:408 order/models.py:315 order/models.py:425
+#: InvenTree/helpers.py:408 order/models.py:315 order/models.py:430
#: stock/views.py:1363
msgid "Invalid quantity provided"
msgstr ""
@@ -102,152 +102,181 @@ msgstr ""
msgid "Number of unique serial number ({s}) must match quantity ({q})"
msgstr ""
-#: InvenTree/models.py:61 stock/models.py:1815
+#: InvenTree/models.py:66 stock/models.py:1826
msgid "Attachment"
msgstr ""
-#: InvenTree/models.py:62
+#: InvenTree/models.py:67
msgid "Select file to attach"
msgstr ""
-#: InvenTree/models.py:64 templates/js/translated/attachment.js:52
+#: InvenTree/models.py:69 templates/js/translated/attachment.js:87
msgid "Comment"
msgstr ""
-#: InvenTree/models.py:64
+#: InvenTree/models.py:69
msgid "File comment"
msgstr ""
-#: InvenTree/models.py:70 InvenTree/models.py:71 common/models.py:969
-#: common/models.py:970 part/models.py:2035
+#: InvenTree/models.py:75 InvenTree/models.py:76 common/models.py:993
+#: common/models.py:994 part/models.py:2051
#: report/templates/report/inventree_test_report_base.html:91
-#: templates/js/translated/stock.js:1549
+#: templates/js/translated/stock.js:1690
msgid "User"
msgstr ""
-#: InvenTree/models.py:74
+#: InvenTree/models.py:79
msgid "upload date"
msgstr ""
-#: InvenTree/models.py:113
+#: InvenTree/models.py:99
+msgid "Filename must not be empty"
+msgstr ""
+
+#: InvenTree/models.py:122
+msgid "Invalid attachment directory"
+msgstr ""
+
+#: InvenTree/models.py:132
+#, python-brace-format
+msgid "Filename contains illegal character '{c}'"
+msgstr ""
+
+#: InvenTree/models.py:135
+msgid "Filename missing extension"
+msgstr ""
+
+#: InvenTree/models.py:142
+msgid "Attachment with this filename already exists"
+msgstr ""
+
+#: InvenTree/models.py:149
+msgid "Error renaming file"
+msgstr ""
+
+#: InvenTree/models.py:184
msgid "Invalid choice"
msgstr ""
-#: InvenTree/models.py:129 InvenTree/models.py:130 company/models.py:412
-#: label/models.py:112 part/models.py:656 part/models.py:2196
-#: part/templates/part/part_base.html:233 report/models.py:181
+#: InvenTree/models.py:200 InvenTree/models.py:201 company/models.py:414
+#: label/models.py:112 part/models.py:658 part/models.py:2212
+#: part/templates/part/part_base.html:241 report/models.py:181
#: templates/InvenTree/search.html:137 templates/InvenTree/search.html:289
-#: templates/js/translated/company.js:583 templates/js/translated/part.js:338
-#: templates/js/translated/part.js:471 templates/js/translated/part.js:963
-#: templates/js/translated/stock.js:1342
+#: templates/js/translated/company.js:636 templates/js/translated/part.js:466
+#: templates/js/translated/part.js:603 templates/js/translated/part.js:1130
+#: templates/js/translated/stock.js:1483
msgid "Name"
msgstr ""
-#: InvenTree/models.py:136 build/models.py:187
-#: build/templates/build/detail.html:24 company/models.py:351
-#: company/models.py:519 company/templates/company/manufacturer_part.html:76
+#: InvenTree/models.py:207 build/models.py:187
+#: build/templates/build/detail.html:24 company/models.py:353
+#: company/models.py:569 company/templates/company/manufacturer_part.html:76
#: company/templates/company/supplier_part.html:75 label/models.py:119
-#: order/models.py:158 order/templates/order/purchase_order_detail.html:312
-#: part/models.py:679 part/templates/part/part_base.html:238
+#: order/models.py:158 part/models.py:681
+#: part/templates/part/part_base.html:246
#: part/templates/part/set_category.html:14 report/models.py:194
#: report/models.py:551 report/models.py:590
#: report/templates/report/inventree_build_order_base.html:118
#: templates/InvenTree/search.html:144 templates/InvenTree/search.html:224
#: templates/InvenTree/search.html:296
#: templates/InvenTree/settings/header.html:9
-#: templates/js/translated/bom.js:210 templates/js/translated/build.js:868
-#: templates/js/translated/build.js:1162 templates/js/translated/company.js:299
-#: templates/js/translated/company.js:497
-#: templates/js/translated/company.js:779 templates/js/translated/order.js:267
-#: templates/js/translated/order.js:369 templates/js/translated/part.js:397
-#: templates/js/translated/part.js:581 templates/js/translated/part.js:758
-#: templates/js/translated/part.js:975 templates/js/translated/part.js:1043
-#: templates/js/translated/stock.js:926 templates/js/translated/stock.js:1354
-#: templates/js/translated/stock.js:1399
+#: templates/js/translated/bom.js:230 templates/js/translated/build.js:891
+#: templates/js/translated/build.js:1179 templates/js/translated/company.js:344
+#: templates/js/translated/company.js:546
+#: templates/js/translated/company.js:834 templates/js/translated/order.js:341
+#: templates/js/translated/order.js:486 templates/js/translated/order.js:710
+#: templates/js/translated/part.js:525 templates/js/translated/part.js:713
+#: templates/js/translated/part.js:902 templates/js/translated/part.js:1142
+#: templates/js/translated/part.js:1210 templates/js/translated/stock.js:840
+#: templates/js/translated/stock.js:1495 templates/js/translated/stock.js:1540
msgid "Description"
msgstr ""
-#: InvenTree/models.py:137
+#: InvenTree/models.py:208
msgid "Description (optional)"
msgstr ""
-#: InvenTree/models.py:145
+#: InvenTree/models.py:216
msgid "parent"
msgstr ""
-#: InvenTree/serializers.py:52 part/models.py:2438
+#: InvenTree/serializers.py:55 part/models.py:2454
msgid "Must be a valid number"
msgstr ""
-#: InvenTree/settings.py:518
-msgid "German"
-msgstr ""
-
-#: InvenTree/settings.py:519
-msgid "Greek"
-msgstr ""
-
-#: InvenTree/settings.py:520
-msgid "English"
-msgstr ""
-
-#: InvenTree/settings.py:521
-msgid "Spanish"
-msgstr ""
-
-#: InvenTree/settings.py:522
-msgid "French"
+#: InvenTree/serializers.py:244
+msgid "Filename"
msgstr ""
#: InvenTree/settings.py:523
-msgid "Hebrew"
+msgid "German"
msgstr ""
#: InvenTree/settings.py:524
-msgid "Italian"
+msgid "Greek"
msgstr ""
#: InvenTree/settings.py:525
-msgid "Japanese"
+msgid "English"
msgstr ""
#: InvenTree/settings.py:526
-msgid "Korean"
+msgid "Spanish"
msgstr ""
#: InvenTree/settings.py:527
-msgid "Dutch"
+msgid "French"
msgstr ""
#: InvenTree/settings.py:528
-msgid "Norwegian"
+msgid "Hebrew"
msgstr ""
#: InvenTree/settings.py:529
-msgid "Polish"
+msgid "Italian"
msgstr ""
#: InvenTree/settings.py:530
-msgid "Russian"
+msgid "Japanese"
msgstr ""
#: InvenTree/settings.py:531
-msgid "Swedish"
+msgid "Korean"
msgstr ""
#: InvenTree/settings.py:532
-msgid "Thai"
+msgid "Dutch"
msgstr ""
#: InvenTree/settings.py:533
-msgid "Turkish"
+msgid "Norwegian"
msgstr ""
#: InvenTree/settings.py:534
-msgid "Vietnamese"
+msgid "Polish"
msgstr ""
#: InvenTree/settings.py:535
+msgid "Russian"
+msgstr ""
+
+#: InvenTree/settings.py:536
+msgid "Swedish"
+msgstr ""
+
+#: InvenTree/settings.py:537
+msgid "Thai"
+msgstr ""
+
+#: InvenTree/settings.py:538
+msgid "Turkish"
+msgstr ""
+
+#: InvenTree/settings.py:539
+msgid "Vietnamese"
+msgstr ""
+
+#: InvenTree/settings.py:540
msgid "Chinese"
msgstr ""
@@ -372,7 +401,7 @@ msgstr ""
msgid "Split child item"
msgstr ""
-#: InvenTree/status_codes.py:294 templates/js/translated/table_filters.js:173
+#: InvenTree/status_codes.py:294 templates/js/translated/table_filters.js:186
msgid "Sent to customer"
msgstr ""
@@ -432,27 +461,27 @@ msgstr ""
msgid "Overage must be an integer value or a percentage"
msgstr ""
-#: InvenTree/views.py:612
+#: InvenTree/views.py:610
msgid "Delete Item"
msgstr ""
-#: InvenTree/views.py:661
+#: InvenTree/views.py:659
msgid "Check box to confirm item deletion"
msgstr ""
-#: InvenTree/views.py:676 templates/InvenTree/settings/user.html:14
+#: InvenTree/views.py:674 templates/InvenTree/settings/user.html:14
msgid "Edit User Information"
msgstr ""
-#: InvenTree/views.py:687 templates/InvenTree/settings/user.html:18
+#: InvenTree/views.py:685 templates/InvenTree/settings/user.html:18
msgid "Set Password"
msgstr ""
-#: InvenTree/views.py:706
+#: InvenTree/views.py:704
msgid "Password fields must match"
msgstr ""
-#: InvenTree/views.py:907 templates/navbar.html:95
+#: InvenTree/views.py:910 templates/navbar.html:105
msgid "System Information"
msgstr ""
@@ -509,8 +538,8 @@ msgstr ""
#: order/templates/order/order_base.html:124
#: order/templates/order/sales_order_base.html:119
#: report/templates/report/inventree_build_order_base.html:126
-#: templates/js/translated/build.js:945 templates/js/translated/order.js:284
-#: templates/js/translated/order.js:387
+#: templates/js/translated/build.js:962 templates/js/translated/order.js:358
+#: templates/js/translated/order.js:728
msgid "Target Date"
msgstr ""
@@ -522,19 +551,18 @@ msgstr ""
#: build/templates/build/allocation_card.html:23
#: build/templates/build/auto_allocate.html:17
#: build/templates/build/build_base.html:133
-#: build/templates/build/detail.html:34 common/models.py:1001
+#: build/templates/build/detail.html:34 common/models.py:1025
#: company/forms.py:42 company/templates/company/supplier_part.html:226
-#: order/forms.py:120 order/forms.py:142 order/forms.py:159 order/models.py:706
-#: order/models.py:952 order/templates/order/order_wizard/match_parts.html:30
+#: order/forms.py:120 order/forms.py:142 order/forms.py:159 order/models.py:712
+#: order/models.py:964 order/templates/order/order_wizard/match_parts.html:30
#: order/templates/order/order_wizard/select_parts.html:34
-#: order/templates/order/purchase_order_detail.html:348
-#: order/templates/order/sales_order_detail.html:200
-#: order/templates/order/sales_order_detail.html:207
-#: order/templates/order/sales_order_detail.html:292
-#: order/templates/order/sales_order_detail.html:364 part/forms.py:249
-#: part/forms.py:265 part/forms.py:281 part/models.py:2340
+#: order/templates/order/sales_order_detail.html:201
+#: order/templates/order/sales_order_detail.html:208
+#: order/templates/order/sales_order_detail.html:293
+#: order/templates/order/sales_order_detail.html:365 part/forms.py:249
+#: part/forms.py:265 part/forms.py:281 part/models.py:2356
#: part/templates/part/bom_upload/match_parts.html:31
-#: part/templates/part/detail.html:940 part/templates/part/detail.html:1026
+#: part/templates/part/detail.html:973 part/templates/part/detail.html:1059
#: part/templates/part/part_pricing.html:16
#: report/templates/report/inventree_build_order_base.html:114
#: report/templates/report/inventree_po_report.html:91
@@ -542,13 +570,14 @@ msgstr ""
#: report/templates/report/inventree_test_report_base.html:77
#: stock/forms.py:140 stock/templates/stock/item_base.html:269
#: stock/templates/stock/stock_adjust.html:18
-#: templates/js/translated/barcode.js:364 templates/js/translated/bom.js:225
-#: templates/js/translated/build.js:271 templates/js/translated/build.js:606
-#: templates/js/translated/build.js:1172
-#: templates/js/translated/model_renderers.js:56
-#: templates/js/translated/order.js:482 templates/js/translated/part.js:1148
-#: templates/js/translated/part.js:1270 templates/js/translated/part.js:1326
-#: templates/js/translated/stock.js:1534 templates/js/translated/stock.js:1732
+#: templates/js/translated/barcode.js:386 templates/js/translated/bom.js:245
+#: templates/js/translated/build.js:298 templates/js/translated/build.js:629
+#: templates/js/translated/build.js:1189
+#: templates/js/translated/model_renderers.js:59
+#: templates/js/translated/order.js:522 templates/js/translated/order.js:824
+#: templates/js/translated/part.js:1317 templates/js/translated/part.js:1440
+#: templates/js/translated/part.js:1518 templates/js/translated/stock.js:1675
+#: templates/js/translated/stock.js:1850
msgid "Quantity"
msgstr ""
@@ -589,13 +618,15 @@ msgid "Mark build as complete"
msgstr ""
#: build/forms.py:210 build/templates/build/auto_allocate.html:18
-#: stock/forms.py:280 stock/templates/stock/item_base.html:299
+#: order/serializers.py:216 order/serializers.py:275 stock/forms.py:280
+#: stock/templates/stock/item_base.html:299
#: stock/templates/stock/stock_adjust.html:17
-#: templates/InvenTree/search.html:260 templates/js/translated/barcode.js:363
-#: templates/js/translated/barcode.js:531 templates/js/translated/build.js:256
-#: templates/js/translated/build.js:620 templates/js/translated/order.js:467
-#: templates/js/translated/stock.js:134 templates/js/translated/stock.js:260
-#: templates/js/translated/stock.js:1012 templates/js/translated/stock.js:1426
+#: templates/InvenTree/search.html:260 templates/js/translated/barcode.js:385
+#: templates/js/translated/barcode.js:555 templates/js/translated/build.js:283
+#: templates/js/translated/build.js:643 templates/js/translated/order.js:809
+#: templates/js/translated/part.js:174 templates/js/translated/stock.js:203
+#: templates/js/translated/stock.js:329 templates/js/translated/stock.js:942
+#: templates/js/translated/stock.js:1567
msgid "Location"
msgstr ""
@@ -604,13 +635,13 @@ msgid "Location of completed parts"
msgstr ""
#: build/forms.py:215 build/templates/build/build_base.html:138
-#: build/templates/build/detail.html:62 order/models.py:549
-#: order/templates/order/receive_parts.html:24
+#: build/templates/build/detail.html:62 order/models.py:555
+#: order/serializers.py:230 order/templates/order/receive_parts.html:24
#: stock/templates/stock/item_base.html:422 templates/InvenTree/search.html:252
-#: templates/js/translated/barcode.js:119 templates/js/translated/build.js:902
-#: templates/js/translated/order.js:271 templates/js/translated/order.js:374
-#: templates/js/translated/stock.js:999 templates/js/translated/stock.js:1503
-#: templates/js/translated/stock.js:1748
+#: templates/js/translated/barcode.js:141 templates/js/translated/build.js:925
+#: templates/js/translated/order.js:345 templates/js/translated/order.js:715
+#: templates/js/translated/stock.js:917 templates/js/translated/stock.js:1644
+#: templates/js/translated/stock.js:1866
msgid "Status"
msgstr ""
@@ -649,7 +680,7 @@ msgstr ""
#: build/models.py:117 build/templates/build/build_base.html:9
#: build/templates/build/build_base.html:73
#: report/templates/report/inventree_build_order_base.html:106
-#: templates/js/translated/build.js:233
+#: templates/js/translated/build.js:260
msgid "Build Order"
msgstr ""
@@ -657,8 +688,8 @@ msgstr ""
#: build/templates/build/index.html:15
#: order/templates/order/sales_order_detail.html:34
#: order/templates/order/so_navbar.html:19
-#: order/templates/order/so_navbar.html:22 part/templates/part/navbar.html:42
-#: part/templates/part/navbar.html:45 templates/InvenTree/index.html:229
+#: order/templates/order/so_navbar.html:22 part/templates/part/navbar.html:50
+#: part/templates/part/navbar.html:53 templates/InvenTree/index.html:229
#: templates/InvenTree/search.html:185
#: templates/InvenTree/settings/navbar.html:101
#: templates/InvenTree/settings/navbar.html:103 users/models.py:44
@@ -669,14 +700,13 @@ msgstr ""
msgid "Build Order Reference"
msgstr ""
-#: build/models.py:179 order/models.py:246 order/models.py:533
-#: order/models.py:713 order/templates/order/purchase_order_detail.html:343
-#: order/templates/order/sales_order_detail.html:359 part/models.py:2349
-#: part/templates/part/bom_upload/match_parts.html:30
+#: build/models.py:179 order/models.py:246 order/models.py:539
+#: order/models.py:719 order/templates/order/sales_order_detail.html:360
+#: part/models.py:2365 part/templates/part/bom_upload/match_parts.html:30
#: report/templates/report/inventree_po_report.html:92
#: report/templates/report/inventree_so_report.html:92
-#: templates/js/translated/bom.js:217 templates/js/translated/build.js:695
-#: templates/js/translated/build.js:1166
+#: templates/js/translated/bom.js:237 templates/js/translated/build.js:718
+#: templates/js/translated/build.js:1183 templates/js/translated/order.js:517
msgid "Reference"
msgstr ""
@@ -695,15 +725,14 @@ msgstr ""
#: build/models.py:205 build/templates/build/auto_allocate.html:16
#: build/templates/build/build_base.html:128
-#: build/templates/build/detail.html:29 company/models.py:654
-#: order/models.py:766 order/models.py:825
+#: build/templates/build/detail.html:29 company/models.py:704
+#: order/models.py:772 order/models.py:837
#: order/templates/order/order_wizard/select_parts.html:32
-#: order/templates/order/purchase_order_detail.html:297
#: order/templates/order/receive_parts.html:19
-#: order/templates/order/sales_order_detail.html:344 part/models.py:295
-#: part/models.py:1980 part/models.py:1996 part/models.py:2015
-#: part/models.py:2033 part/models.py:2112 part/models.py:2234
-#: part/models.py:2324 part/templates/part/detail.html:199
+#: order/templates/order/sales_order_detail.html:345 part/models.py:297
+#: part/models.py:1996 part/models.py:2012 part/models.py:2031
+#: part/models.py:2049 part/models.py:2128 part/models.py:2250
+#: part/models.py:2340 part/templates/part/detail.html:199
#: part/templates/part/part_app_base.html:8
#: part/templates/part/part_pricing.html:12
#: part/templates/part/set_category.html:13
@@ -711,12 +740,13 @@ msgstr ""
#: report/templates/report/inventree_po_report.html:90
#: report/templates/report/inventree_so_report.html:90
#: templates/InvenTree/search.html:112 templates/InvenTree/search.html:210
-#: templates/js/translated/barcode.js:362 templates/js/translated/bom.js:183
-#: templates/js/translated/build.js:586 templates/js/translated/build.js:873
-#: templates/js/translated/build.js:1139 templates/js/translated/company.js:438
-#: templates/js/translated/company.js:688 templates/js/translated/part.js:562
-#: templates/js/translated/part.js:725 templates/js/translated/stock.js:132
-#: templates/js/translated/stock.js:895 templates/js/translated/stock.js:1720
+#: templates/js/translated/barcode.js:384 templates/js/translated/bom.js:203
+#: templates/js/translated/build.js:609 templates/js/translated/build.js:896
+#: templates/js/translated/build.js:1156 templates/js/translated/company.js:487
+#: templates/js/translated/company.js:743 templates/js/translated/order.js:471
+#: templates/js/translated/part.js:694 templates/js/translated/part.js:864
+#: templates/js/translated/stock.js:201 templates/js/translated/stock.js:797
+#: templates/js/translated/stock.js:1838
msgid "Part"
msgstr ""
@@ -764,7 +794,7 @@ msgstr ""
msgid "Number of stock items which have been completed"
msgstr ""
-#: build/models.py:257 part/templates/part/part_base.html:191
+#: build/models.py:257 part/templates/part/part_base.html:198
msgid "Build Status"
msgstr ""
@@ -772,7 +802,7 @@ msgstr ""
msgid "Build status code"
msgstr ""
-#: build/models.py:265 stock/models.py:507
+#: build/models.py:265 stock/models.py:513
msgid "Batch Code"
msgstr ""
@@ -780,16 +810,16 @@ msgstr ""
msgid "Batch code for this build output"
msgstr ""
-#: build/models.py:272 order/models.py:162 part/models.py:851
-#: part/templates/part/part_base.html:264 templates/js/translated/order.js:382
+#: build/models.py:272 order/models.py:162 part/models.py:853
+#: part/templates/part/part_base.html:272 templates/js/translated/order.js:723
msgid "Creation Date"
msgstr ""
-#: build/models.py:276 order/models.py:555
+#: build/models.py:276 order/models.py:561
msgid "Target completion date"
msgstr ""
-#: build/models.py:280 order/models.py:288 templates/js/translated/build.js:950
+#: build/models.py:280 order/models.py:288 templates/js/translated/build.js:967
msgid "Completion Date"
msgstr ""
@@ -797,7 +827,7 @@ msgstr ""
msgid "completed by"
msgstr ""
-#: build/models.py:294 templates/js/translated/build.js:915
+#: build/models.py:294 templates/js/translated/build.js:938
msgid "Issued by"
msgstr ""
@@ -808,9 +838,9 @@ msgstr ""
#: build/models.py:303 build/templates/build/build_base.html:184
#: build/templates/build/detail.html:108 order/models.py:176
#: order/templates/order/order_base.html:138
-#: order/templates/order/sales_order_base.html:140 part/models.py:855
+#: order/templates/order/sales_order_base.html:140 part/models.py:857
#: report/templates/report/inventree_build_order_base.html:159
-#: templates/js/translated/build.js:930
+#: templates/js/translated/build.js:950
msgid "Responsible"
msgstr ""
@@ -821,34 +851,33 @@ msgstr ""
#: build/models.py:309 build/templates/build/detail.html:94
#: company/templates/company/manufacturer_part.html:83
#: company/templates/company/supplier_part.html:82
-#: part/templates/part/part_base.html:258 stock/models.py:501
+#: part/templates/part/part_base.html:266 stock/models.py:507
#: stock/templates/stock/item_base.html:359
msgid "External Link"
msgstr ""
-#: build/models.py:310 part/models.py:713 stock/models.py:503
+#: build/models.py:310 part/models.py:715 stock/models.py:509
msgid "Link to external URL"
msgstr ""
#: build/models.py:314 build/templates/build/navbar.html:52
-#: company/models.py:139 company/models.py:526
-#: company/templates/company/navbar.html:63
-#: company/templates/company/navbar.html:66 order/models.py:180
-#: order/models.py:715 order/templates/order/po_navbar.html:38
+#: company/models.py:141 company/models.py:576
+#: company/templates/company/navbar.html:69
+#: company/templates/company/navbar.html:72 order/models.py:180
+#: order/models.py:721 order/templates/order/po_navbar.html:38
#: order/templates/order/po_navbar.html:41
-#: order/templates/order/purchase_order_detail.html:419
-#: order/templates/order/sales_order_detail.html:439
+#: order/templates/order/sales_order_detail.html:440
#: order/templates/order/so_navbar.html:33
-#: order/templates/order/so_navbar.html:36 part/models.py:840
-#: part/templates/part/detail.html:105 part/templates/part/navbar.html:108
-#: part/templates/part/navbar.html:111
+#: order/templates/order/so_navbar.html:36 part/models.py:842
+#: part/templates/part/detail.html:105 part/templates/part/navbar.html:120
+#: part/templates/part/navbar.html:123
#: report/templates/report/inventree_build_order_base.html:173
-#: stock/forms.py:138 stock/forms.py:250 stock/forms.py:282 stock/models.py:573
-#: stock/models.py:1715 stock/models.py:1821
-#: stock/templates/stock/navbar.html:57 templates/js/translated/barcode.js:37
-#: templates/js/translated/bom.js:369 templates/js/translated/company.js:784
-#: templates/js/translated/stock.js:268 templates/js/translated/stock.js:509
-#: templates/js/translated/stock.js:1090
+#: stock/forms.py:138 stock/forms.py:250 stock/forms.py:282 stock/models.py:579
+#: stock/models.py:1726 stock/models.py:1832
+#: stock/templates/stock/navbar.html:57 templates/js/translated/barcode.js:59
+#: templates/js/translated/bom.js:385 templates/js/translated/company.js:839
+#: templates/js/translated/order.js:604 templates/js/translated/stock.js:338
+#: templates/js/translated/stock.js:580 templates/js/translated/stock.js:1061
msgid "Notes"
msgstr ""
@@ -881,11 +910,11 @@ msgstr ""
msgid "Allocated quantity ({n}) must not exceed available quantity ({q})"
msgstr ""
-#: build/models.py:1244 order/models.py:926
+#: build/models.py:1244 order/models.py:938
msgid "StockItem is over-allocated"
msgstr ""
-#: build/models.py:1248 order/models.py:929
+#: build/models.py:1248 order/models.py:941
msgid "Allocation quantity must be greater than zero"
msgstr ""
@@ -899,8 +928,8 @@ msgid "Selected stock item not found in BOM for part '{p}'"
msgstr ""
#: build/models.py:1372 stock/templates/stock/item_base.html:331
-#: templates/InvenTree/search.html:183 templates/js/translated/build.js:846
-#: templates/navbar.html:29
+#: templates/InvenTree/search.html:183 templates/js/translated/build.js:869
+#: templates/navbar.html:35
msgid "Build"
msgstr ""
@@ -912,9 +941,9 @@ msgstr ""
#: stock/templates/stock/item_base.html:31
#: stock/templates/stock/item_base.html:353
#: stock/templates/stock/stock_adjust.html:16
-#: templates/js/translated/build.js:244 templates/js/translated/build.js:249
-#: templates/js/translated/build.js:993 templates/js/translated/order.js:455
-#: templates/js/translated/order.js:460 templates/js/translated/stock.js:1485
+#: templates/js/translated/build.js:271 templates/js/translated/build.js:276
+#: templates/js/translated/build.js:1012 templates/js/translated/order.js:797
+#: templates/js/translated/order.js:802 templates/js/translated/stock.js:1626
msgid "Stock Item"
msgstr ""
@@ -936,12 +965,12 @@ msgstr ""
#: build/templates/build/allocation_card.html:21
#: build/templates/build/complete_output.html:46
-#: order/templates/order/sales_order_detail.html:205
-#: order/templates/order/sales_order_detail.html:290
+#: order/templates/order/sales_order_detail.html:206
+#: order/templates/order/sales_order_detail.html:291
#: report/templates/report/inventree_test_report_base.html:75
-#: stock/models.py:495 stock/templates/stock/item_base.html:251
-#: templates/js/translated/build.js:604
-#: templates/js/translated/model_renderers.js:54
+#: stock/models.py:501 stock/templates/stock/item_base.html:251
+#: templates/js/translated/build.js:627
+#: templates/js/translated/model_renderers.js:57
msgid "Serial Number"
msgstr ""
@@ -993,7 +1022,7 @@ msgstr ""
#: company/templates/company/supplier_part.html:30
#: order/templates/order/order_base.html:26
#: order/templates/order/sales_order_base.html:37
-#: part/templates/part/category.html:27 part/templates/part/part_base.html:25
+#: part/templates/part/category.html:27 part/templates/part/part_base.html:30
#: stock/templates/stock/item_base.html:62
#: stock/templates/stock/location.html:31
msgid "Admin view"
@@ -1005,9 +1034,9 @@ msgstr ""
#: order/templates/order/order_base.html:86
#: order/templates/order/sales_order_base.html:43
#: order/templates/order/sales_order_base.html:88
-#: templates/js/translated/table_filters.js:259
-#: templates/js/translated/table_filters.js:278
-#: templates/js/translated/table_filters.js:295
+#: templates/js/translated/table_filters.js:272
+#: templates/js/translated/table_filters.js:291
+#: templates/js/translated/table_filters.js:308
msgid "Overdue"
msgstr ""
@@ -1057,14 +1086,14 @@ msgid "Progress"
msgstr ""
#: build/templates/build/build_base.html:170
-#: build/templates/build/detail.html:87 order/models.py:823
+#: build/templates/build/detail.html:87 order/models.py:835
#: order/templates/order/sales_order_base.html:9
#: order/templates/order/sales_order_base.html:35
#: order/templates/order/sales_order_ship.html:25
#: report/templates/report/inventree_build_order_base.html:136
#: report/templates/report/inventree_so_report.html:77
#: stock/templates/stock/item_base.html:293
-#: templates/js/translated/order.js:329
+#: templates/js/translated/order.js:670
msgid "Sales Order"
msgstr ""
@@ -1148,7 +1177,7 @@ msgstr ""
#: build/templates/build/create_build_item.html:11
#, python-format
-msgid "The allocated stock will be installed into the following build output:
%(output)s"
+msgid "The allocated stock will be installed into the following build output:
%(output)s"
msgstr ""
#: build/templates/build/create_build_item.html:17
@@ -1172,9 +1201,9 @@ msgstr ""
msgid "Stock can be taken from any available location."
msgstr ""
-#: build/templates/build/detail.html:49 order/forms.py:88 order/models.py:782
-#: order/templates/order/purchase_order_detail.html:408
+#: build/templates/build/detail.html:49 order/forms.py:88 order/models.py:794
#: order/templates/order/receive_parts.html:25 stock/forms.py:134
+#: templates/js/translated/order.js:593
msgid "Destination"
msgstr ""
@@ -1184,16 +1213,16 @@ msgstr ""
#: build/templates/build/detail.html:73
#: stock/templates/stock/item_base.html:317
-#: templates/js/translated/stock.js:1007 templates/js/translated/stock.js:1755
-#: templates/js/translated/table_filters.js:116
-#: templates/js/translated/table_filters.js:198
+#: templates/js/translated/stock.js:931 templates/js/translated/stock.js:1873
+#: templates/js/translated/table_filters.js:129
+#: templates/js/translated/table_filters.js:211
msgid "Batch"
msgstr ""
#: build/templates/build/detail.html:119
#: order/templates/order/order_base.html:111
#: order/templates/order/sales_order_base.html:113
-#: templates/js/translated/build.js:910
+#: templates/js/translated/build.js:933
msgid "Created"
msgstr ""
@@ -1201,7 +1230,7 @@ msgstr ""
msgid "No target date set"
msgstr ""
-#: build/templates/build/detail.html:135 templates/js/translated/build.js:888
+#: build/templates/build/detail.html:135 templates/js/translated/build.js:911
msgid "Completed"
msgstr ""
@@ -1225,7 +1254,7 @@ msgstr ""
msgid "Auto Allocate"
msgstr ""
-#: build/templates/build/detail.html:175 templates/js/translated/build.js:778
+#: build/templates/build/detail.html:175 templates/js/translated/build.js:801
msgid "Unallocate stock"
msgstr ""
@@ -1238,8 +1267,8 @@ msgid "Order required parts"
msgstr ""
#: build/templates/build/detail.html:180
-#: company/templates/company/detail.html:33
-#: company/templates/company/detail.html:75 order/views.py:679
+#: company/templates/company/detail.html:32
+#: company/templates/company/detail.html:72 order/views.py:679
#: part/templates/part/category.html:140
msgid "Order Parts"
msgstr ""
@@ -1288,8 +1317,8 @@ msgstr ""
#: build/templates/build/navbar.html:45 order/templates/order/po_navbar.html:35
#: order/templates/order/sales_order_detail.html:43
#: order/templates/order/so_navbar.html:29 part/templates/part/detail.html:173
-#: part/templates/part/navbar.html:102 part/templates/part/navbar.html:105
-#: stock/templates/stock/item.html:87 stock/templates/stock/navbar.html:47
+#: part/templates/part/navbar.html:114 part/templates/part/navbar.html:117
+#: stock/templates/stock/item.html:88 stock/templates/stock/navbar.html:47
#: stock/templates/stock/navbar.html:50
msgid "Attachments"
msgstr ""
@@ -1298,48 +1327,48 @@ msgstr ""
msgid "Build Notes"
msgstr ""
-#: build/templates/build/detail.html:261 build/templates/build/detail.html:397
-#: company/templates/company/detail.html:173
-#: company/templates/company/detail.html:200
+#: build/templates/build/detail.html:261 build/templates/build/detail.html:398
+#: company/templates/company/detail.html:169
+#: company/templates/company/detail.html:196
#: order/templates/order/purchase_order_detail.html:62
#: order/templates/order/purchase_order_detail.html:95
#: order/templates/order/sales_order_detail.html:58
#: order/templates/order/sales_order_detail.html:85
-#: part/templates/part/detail.html:109 stock/templates/stock/item.html:102
-#: stock/templates/stock/item.html:187
+#: part/templates/part/detail.html:109 stock/templates/stock/item.html:103
+#: stock/templates/stock/item.html:188
msgid "Edit Notes"
msgstr ""
#: build/templates/build/detail.html:357
#: order/templates/order/po_attachments.html:79
-#: order/templates/order/purchase_order_detail.html:156
-#: order/templates/order/sales_order_detail.html:145
-#: part/templates/part/detail.html:802 stock/templates/stock/item.html:251
+#: order/templates/order/purchase_order_detail.html:157
+#: order/templates/order/sales_order_detail.html:146
+#: part/templates/part/detail.html:920 stock/templates/stock/item.html:253
#: templates/attachment_table.html:6
msgid "Add Attachment"
msgstr ""
-#: build/templates/build/detail.html:375
+#: build/templates/build/detail.html:376
#: order/templates/order/po_attachments.html:51
-#: order/templates/order/purchase_order_detail.html:128
-#: order/templates/order/sales_order_detail.html:118
-#: part/templates/part/detail.html:756 stock/templates/stock/item.html:219
+#: order/templates/order/purchase_order_detail.html:129
+#: order/templates/order/sales_order_detail.html:119
+#: part/templates/part/detail.html:874 stock/templates/stock/item.html:221
msgid "Edit Attachment"
msgstr ""
-#: build/templates/build/detail.html:382
+#: build/templates/build/detail.html:383
#: order/templates/order/po_attachments.html:58
-#: order/templates/order/purchase_order_detail.html:135
-#: order/templates/order/sales_order_detail.html:124
-#: part/templates/part/detail.html:765 stock/templates/stock/item.html:228
+#: order/templates/order/purchase_order_detail.html:136
+#: order/templates/order/sales_order_detail.html:125
+#: part/templates/part/detail.html:883 stock/templates/stock/item.html:230
msgid "Confirm Delete Operation"
msgstr ""
-#: build/templates/build/detail.html:383
+#: build/templates/build/detail.html:384
#: order/templates/order/po_attachments.html:59
-#: order/templates/order/purchase_order_detail.html:136
-#: order/templates/order/sales_order_detail.html:125
-#: part/templates/part/detail.html:766 stock/templates/stock/item.html:229
+#: order/templates/order/purchase_order_detail.html:137
+#: order/templates/order/sales_order_detail.html:126
+#: part/templates/part/detail.html:884 stock/templates/stock/item.html:231
msgid "Delete Attachment"
msgstr ""
@@ -1372,7 +1401,7 @@ msgid "Build Order Details"
msgstr ""
#: build/templates/build/navbar.html:15 order/templates/order/po_navbar.html:15
-#: templates/js/translated/stock.js:1414
+#: templates/js/translated/stock.js:1555
msgid "Details"
msgstr ""
@@ -1501,9 +1530,9 @@ msgstr ""
msgid "Stock item is over-allocated"
msgstr ""
-#: build/views.py:705 templates/js/translated/bom.js:250
-#: templates/js/translated/build.js:705 templates/js/translated/build.js:1000
-#: templates/js/translated/build.js:1179
+#: build/views.py:705 templates/js/translated/bom.js:269
+#: templates/js/translated/build.js:728 templates/js/translated/build.js:1019
+#: templates/js/translated/build.js:1196
msgid "Available"
msgstr ""
@@ -1539,7 +1568,7 @@ msgstr ""
msgid "Error reading file (data could be corrupted)"
msgstr ""
-#: common/forms.py:34 templates/js/translated/attachment.js:42
+#: common/forms.py:34 templates/js/translated/attachment.js:54
msgid "File"
msgstr ""
@@ -1556,546 +1585,594 @@ msgstr ""
msgid "Select {name} file to upload"
msgstr ""
-#: common/models.py:322 common/models.py:815 common/models.py:962
+#: common/models.py:308 common/models.py:839 common/models.py:986
msgid "Settings key (must be unique - case insensitive"
msgstr ""
-#: common/models.py:324
+#: common/models.py:310
msgid "Settings value"
msgstr ""
-#: common/models.py:359
+#: common/models.py:345
msgid "Must be an integer value"
msgstr ""
-#: common/models.py:382
+#: common/models.py:368
msgid "Value must be a boolean value"
msgstr ""
-#: common/models.py:393
+#: common/models.py:379
msgid "Value must be an integer value"
msgstr ""
-#: common/models.py:416
+#: common/models.py:402
msgid "Key string must be unique"
msgstr ""
-#: common/models.py:523
+#: common/models.py:509
msgid "InvenTree Instance Name"
msgstr ""
-#: common/models.py:525
+#: common/models.py:511
msgid "String descriptor for the server instance"
msgstr ""
-#: common/models.py:529
+#: common/models.py:515
msgid "Use instance name"
msgstr ""
-#: common/models.py:530
+#: common/models.py:516
msgid "Use the instance name in the title-bar"
msgstr ""
-#: common/models.py:536 company/models.py:97 company/models.py:98
+#: common/models.py:522 company/models.py:99 company/models.py:100
msgid "Company name"
msgstr ""
-#: common/models.py:537
+#: common/models.py:523
msgid "Internal company name"
msgstr ""
-#: common/models.py:542
+#: common/models.py:528
msgid "Base URL"
msgstr ""
-#: common/models.py:543
+#: common/models.py:529
msgid "Base URL for server instance"
msgstr ""
-#: common/models.py:549
+#: common/models.py:535
msgid "Default Currency"
msgstr ""
-#: common/models.py:550
+#: common/models.py:536
msgid "Default currency"
msgstr ""
-#: common/models.py:556
+#: common/models.py:542
msgid "Download from URL"
msgstr ""
-#: common/models.py:557
+#: common/models.py:543
msgid "Allow download of remote images and files from external URL"
msgstr ""
-#: common/models.py:563
+#: common/models.py:549
msgid "Barcode Support"
msgstr ""
-#: common/models.py:564
+#: common/models.py:550
msgid "Enable barcode scanner support"
msgstr ""
-#: common/models.py:570
+#: common/models.py:556
msgid "IPN Regex"
msgstr ""
-#: common/models.py:571
+#: common/models.py:557
msgid "Regular expression pattern for matching Part IPN"
msgstr ""
-#: common/models.py:575
+#: common/models.py:561
msgid "Allow Duplicate IPN"
msgstr ""
-#: common/models.py:576
+#: common/models.py:562
msgid "Allow multiple parts to share the same IPN"
msgstr ""
-#: common/models.py:582
+#: common/models.py:568
msgid "Allow Editing IPN"
msgstr ""
-#: common/models.py:583
+#: common/models.py:569
msgid "Allow changing the IPN value while editing a part"
msgstr ""
-#: common/models.py:589
+#: common/models.py:575
msgid "Copy Part BOM Data"
msgstr ""
-#: common/models.py:590
+#: common/models.py:576
msgid "Copy BOM data by default when duplicating a part"
msgstr ""
-#: common/models.py:596
+#: common/models.py:582
msgid "Copy Part Parameter Data"
msgstr ""
-#: common/models.py:597
+#: common/models.py:583
msgid "Copy parameter data by default when duplicating a part"
msgstr ""
-#: common/models.py:603
+#: common/models.py:589
msgid "Copy Part Test Data"
msgstr ""
-#: common/models.py:604
+#: common/models.py:590
msgid "Copy test data by default when duplicating a part"
msgstr ""
-#: common/models.py:610
+#: common/models.py:596
msgid "Copy Category Parameter Templates"
msgstr ""
-#: common/models.py:611
+#: common/models.py:597
msgid "Copy category parameter templates when creating a part"
msgstr ""
-#: common/models.py:617 part/models.py:2236 report/models.py:187
-#: stock/forms.py:224 templates/js/translated/table_filters.js:25
-#: templates/js/translated/table_filters.js:329
+#: common/models.py:603 part/models.py:2252 report/models.py:187
+#: stock/forms.py:224 templates/js/translated/table_filters.js:38
+#: templates/js/translated/table_filters.js:342
msgid "Template"
msgstr ""
-#: common/models.py:618
+#: common/models.py:604
msgid "Parts are templates by default"
msgstr ""
-#: common/models.py:624 part/models.py:803
-#: templates/js/translated/table_filters.js:133
-#: templates/js/translated/table_filters.js:341
+#: common/models.py:610 part/models.py:805
+#: templates/js/translated/table_filters.js:146
+#: templates/js/translated/table_filters.js:354
msgid "Assembly"
msgstr ""
-#: common/models.py:625
+#: common/models.py:611
msgid "Parts can be assembled from other components by default"
msgstr ""
-#: common/models.py:631 part/models.py:809
-#: templates/js/translated/table_filters.js:345
+#: common/models.py:617 part/models.py:811
+#: templates/js/translated/table_filters.js:358
msgid "Component"
msgstr ""
-#: common/models.py:632
+#: common/models.py:618
msgid "Parts can be used as sub-components by default"
msgstr ""
-#: common/models.py:638 part/models.py:820
+#: common/models.py:624 part/models.py:822
msgid "Purchaseable"
msgstr ""
-#: common/models.py:639
+#: common/models.py:625
msgid "Parts are purchaseable by default"
msgstr ""
-#: common/models.py:645 part/models.py:825
-#: templates/js/translated/table_filters.js:353
+#: common/models.py:631 part/models.py:827
+#: templates/js/translated/table_filters.js:366
msgid "Salable"
msgstr ""
-#: common/models.py:646
+#: common/models.py:632
msgid "Parts are salable by default"
msgstr ""
-#: common/models.py:652 part/models.py:815
-#: templates/js/translated/table_filters.js:33
-#: templates/js/translated/table_filters.js:357
+#: common/models.py:638 part/models.py:817
+#: templates/js/translated/table_filters.js:46
+#: templates/js/translated/table_filters.js:370
msgid "Trackable"
msgstr ""
-#: common/models.py:653
+#: common/models.py:639
msgid "Parts are trackable by default"
msgstr ""
-#: common/models.py:659 part/models.py:835
-#: part/templates/part/part_base.html:61
-#: templates/js/translated/table_filters.js:29
+#: common/models.py:645 part/models.py:837
+#: part/templates/part/part_base.html:66
+#: templates/js/translated/table_filters.js:42
msgid "Virtual"
msgstr ""
-#: common/models.py:660
+#: common/models.py:646
msgid "Parts are virtual by default"
msgstr ""
-#: common/models.py:667
+#: common/models.py:653
msgid "Show Quantity in Forms"
msgstr ""
-#: common/models.py:668
+#: common/models.py:654
msgid "Display available part quantity in some forms"
msgstr ""
-#: common/models.py:674
+#: common/models.py:660
msgid "Show Import in Views"
msgstr ""
-#: common/models.py:675
+#: common/models.py:661
msgid "Display the import wizard in some part views"
msgstr ""
-#: common/models.py:681
+#: common/models.py:667
msgid "Show Price in Forms"
msgstr ""
-#: common/models.py:682
+#: common/models.py:668
msgid "Display part price in some forms"
msgstr ""
-#: common/models.py:688
+#: common/models.py:674
msgid "Show related parts"
msgstr ""
-#: common/models.py:689
+#: common/models.py:675
msgid "Display related parts for a part"
msgstr ""
-#: common/models.py:695
+#: common/models.py:681
msgid "Create initial stock"
msgstr ""
-#: common/models.py:696
+#: common/models.py:682
msgid "Create initial stock on part creation"
msgstr ""
-#: common/models.py:702
+#: common/models.py:688
msgid "Internal Prices"
msgstr ""
-#: common/models.py:703
+#: common/models.py:689
msgid "Enable internal prices for parts"
msgstr ""
-#: common/models.py:709
+#: common/models.py:695
msgid "Internal Price as BOM-Price"
msgstr ""
-#: common/models.py:710
+#: common/models.py:696
msgid "Use the internal price (if set) in BOM-price calculations"
msgstr ""
-#: common/models.py:716 templates/stats.html:25
+#: common/models.py:702 templates/stats.html:25
msgid "Debug Mode"
msgstr ""
-#: common/models.py:717
+#: common/models.py:703
msgid "Generate reports in debug mode (HTML output)"
msgstr ""
-#: common/models.py:723
+#: common/models.py:709
msgid "Page Size"
msgstr ""
-#: common/models.py:724
+#: common/models.py:710
msgid "Default page size for PDF reports"
msgstr ""
-#: common/models.py:734
+#: common/models.py:720
msgid "Test Reports"
msgstr ""
-#: common/models.py:735
+#: common/models.py:721
msgid "Enable generation of test reports"
msgstr ""
-#: common/models.py:741
+#: common/models.py:727
msgid "Stock Expiry"
msgstr ""
-#: common/models.py:742
+#: common/models.py:728
msgid "Enable stock expiry functionality"
msgstr ""
-#: common/models.py:748
+#: common/models.py:734
msgid "Sell Expired Stock"
msgstr ""
-#: common/models.py:749
+#: common/models.py:735
msgid "Allow sale of expired stock"
msgstr ""
-#: common/models.py:755
+#: common/models.py:741
msgid "Stock Stale Time"
msgstr ""
-#: common/models.py:756
+#: common/models.py:742
msgid "Number of days stock items are considered stale before expiring"
msgstr ""
-#: common/models.py:758
+#: common/models.py:744
msgid "days"
msgstr ""
-#: common/models.py:763
+#: common/models.py:749
msgid "Build Expired Stock"
msgstr ""
-#: common/models.py:764
+#: common/models.py:750
msgid "Allow building with expired stock"
msgstr ""
-#: common/models.py:770
+#: common/models.py:756
msgid "Stock Ownership Control"
msgstr ""
-#: common/models.py:771
+#: common/models.py:757
msgid "Enable ownership control over stock locations and items"
msgstr ""
-#: common/models.py:777
+#: common/models.py:763
msgid "Group by Part"
msgstr ""
-#: common/models.py:778
+#: common/models.py:764
msgid "Group stock items by part reference in table views"
msgstr ""
-#: common/models.py:784
+#: common/models.py:770
msgid "Build Order Reference Prefix"
msgstr ""
-#: common/models.py:785
+#: common/models.py:771
msgid "Prefix value for build order reference"
msgstr ""
-#: common/models.py:790
+#: common/models.py:776
msgid "Build Order Reference Regex"
msgstr ""
-#: common/models.py:791
+#: common/models.py:777
msgid "Regular expression pattern for matching build order reference"
msgstr ""
-#: common/models.py:795
+#: common/models.py:781
msgid "Sales Order Reference Prefix"
msgstr ""
-#: common/models.py:796
+#: common/models.py:782
msgid "Prefix value for sales order reference"
msgstr ""
-#: common/models.py:801
+#: common/models.py:787
msgid "Purchase Order Reference Prefix"
msgstr ""
-#: common/models.py:802
+#: common/models.py:788
msgid "Prefix value for purchase order reference"
msgstr ""
-#: common/models.py:826
+#: common/models.py:794
+msgid "Enable build"
+msgstr ""
+
+#: common/models.py:795
+msgid "Enable build functionality in InvenTree interface"
+msgstr ""
+
+#: common/models.py:800
+msgid "Enable buy"
+msgstr ""
+
+#: common/models.py:801
+msgid "Enable buy functionality in InvenTree interface"
+msgstr ""
+
+#: common/models.py:806
+msgid "Enable sell"
+msgstr ""
+
+#: common/models.py:807
+msgid "Enable sell functionality in InvenTree interface"
+msgstr ""
+
+#: common/models.py:812
+msgid "Enable stock"
+msgstr ""
+
+#: common/models.py:813
+msgid "Enable stock functionality in InvenTree interface"
+msgstr ""
+
+#: common/models.py:818
+msgid "Enable SO"
+msgstr ""
+
+#: common/models.py:819
+msgid "Enable SO functionality in InvenTree interface"
+msgstr ""
+
+#: common/models.py:824
+msgid "Enable PO"
+msgstr ""
+
+#: common/models.py:825
+msgid "Enable PO functionality in InvenTree interface"
+msgstr ""
+
+#: common/models.py:850
msgid "Show starred parts"
msgstr ""
-#: common/models.py:827
+#: common/models.py:851
msgid "Show starred parts on the homepage"
msgstr ""
-#: common/models.py:832
+#: common/models.py:856
msgid "Show latest parts"
msgstr ""
-#: common/models.py:833
+#: common/models.py:857
msgid "Show latest parts on the homepage"
msgstr ""
-#: common/models.py:838
+#: common/models.py:862
msgid "Recent Part Count"
msgstr ""
-#: common/models.py:839
+#: common/models.py:863
msgid "Number of recent parts to display on index page"
msgstr ""
-#: common/models.py:845
+#: common/models.py:869
msgid "Show unvalidated BOMs"
msgstr ""
-#: common/models.py:846
+#: common/models.py:870
msgid "Show BOMs that await validation on the homepage"
msgstr ""
-#: common/models.py:851
+#: common/models.py:875
msgid "Show recent stock changes"
msgstr ""
-#: common/models.py:852
+#: common/models.py:876
msgid "Show recently changed stock items on the homepage"
msgstr ""
-#: common/models.py:857
+#: common/models.py:881
msgid "Recent Stock Count"
msgstr ""
-#: common/models.py:858
+#: common/models.py:882
msgid "Number of recent stock items to display on index page"
msgstr ""
-#: common/models.py:863
+#: common/models.py:887
msgid "Show low stock"
msgstr ""
-#: common/models.py:864
+#: common/models.py:888
msgid "Show low stock items on the homepage"
msgstr ""
-#: common/models.py:869
+#: common/models.py:893
msgid "Show depleted stock"
msgstr ""
-#: common/models.py:870
+#: common/models.py:894
msgid "Show depleted stock items on the homepage"
msgstr ""
-#: common/models.py:875
+#: common/models.py:899
msgid "Show needed stock"
msgstr ""
-#: common/models.py:876
+#: common/models.py:900
msgid "Show stock items needed for builds on the homepage"
msgstr ""
-#: common/models.py:881
+#: common/models.py:905
msgid "Show expired stock"
msgstr ""
-#: common/models.py:882
+#: common/models.py:906
msgid "Show expired stock items on the homepage"
msgstr ""
-#: common/models.py:887
+#: common/models.py:911
msgid "Show stale stock"
msgstr ""
-#: common/models.py:888
+#: common/models.py:912
msgid "Show stale stock items on the homepage"
msgstr ""
-#: common/models.py:893
+#: common/models.py:917
msgid "Show pending builds"
msgstr ""
-#: common/models.py:894
+#: common/models.py:918
msgid "Show pending builds on the homepage"
msgstr ""
-#: common/models.py:899
+#: common/models.py:923
msgid "Show overdue builds"
msgstr ""
-#: common/models.py:900
+#: common/models.py:924
msgid "Show overdue builds on the homepage"
msgstr ""
-#: common/models.py:905
+#: common/models.py:929
msgid "Show outstanding POs"
msgstr ""
-#: common/models.py:906
+#: common/models.py:930
msgid "Show outstanding POs on the homepage"
msgstr ""
-#: common/models.py:911
+#: common/models.py:935
msgid "Show overdue POs"
msgstr ""
-#: common/models.py:912
+#: common/models.py:936
msgid "Show overdue POs on the homepage"
msgstr ""
-#: common/models.py:917
+#: common/models.py:941
msgid "Show outstanding SOs"
msgstr ""
-#: common/models.py:918
+#: common/models.py:942
msgid "Show outstanding SOs on the homepage"
msgstr ""
-#: common/models.py:923
+#: common/models.py:947
msgid "Show overdue SOs"
msgstr ""
-#: common/models.py:924
+#: common/models.py:948
msgid "Show overdue SOs on the homepage"
msgstr ""
-#: common/models.py:930
+#: common/models.py:954
msgid "Inline label display"
msgstr ""
-#: common/models.py:931
+#: common/models.py:955
msgid "Display PDF labels in the browser, instead of downloading as a file"
msgstr ""
-#: common/models.py:937
+#: common/models.py:961
msgid "Inline report display"
msgstr ""
-#: common/models.py:938
+#: common/models.py:962
msgid "Display PDF reports in the browser, instead of downloading as a file"
msgstr ""
-#: common/models.py:944
+#: common/models.py:968
msgid "Search Preview Results"
msgstr ""
-#: common/models.py:945
+#: common/models.py:969
msgid "Number of results to show in search preview window"
msgstr ""
-#: common/models.py:1002 company/forms.py:43
+#: common/models.py:1026 company/forms.py:43
msgid "Price break quantity"
msgstr ""
-#: common/models.py:1009 company/templates/company/supplier_part.html:231
-#: templates/js/translated/part.js:1153
+#: common/models.py:1033 company/templates/company/supplier_part.html:231
+#: templates/js/translated/part.js:1322
msgid "Price"
msgstr ""
-#: common/models.py:1010
+#: common/models.py:1034
msgid "Unit price at specified quantity"
msgstr ""
-#: common/models.py:1103
+#: common/models.py:1127
msgid "Default"
msgstr ""
@@ -2123,7 +2200,7 @@ msgstr ""
#: order/templates/order/po_navbar.html:19
#: order/templates/order/po_navbar.html:22
#: order/templates/order/purchase_order_detail.html:26 order/views.py:290
-#: part/templates/part/bom_upload/upload_file.html:45
+#: part/templates/part/bom_upload/upload_file.html:65
#: part/templates/part/import_wizard/part_upload.html:45 part/views.py:268
#: part/views.py:882
msgid "Upload File"
@@ -2154,7 +2231,7 @@ msgstr ""
#: order/templates/order/order_wizard/po_upload.html:40
#: 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:43
+#: part/templates/part/bom_upload/upload_file.html:63
#: 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:43
@@ -2169,244 +2246,249 @@ msgstr ""
msgid "Image URL"
msgstr ""
-#: company/models.py:102
+#: company/models.py:104
msgid "Company description"
msgstr ""
-#: company/models.py:103
+#: company/models.py:105
msgid "Description of the company"
msgstr ""
-#: company/models.py:109 company/templates/company/company_base.html:70
-#: templates/js/translated/company.js:303
+#: company/models.py:111 company/templates/company/company_base.html:70
+#: templates/js/translated/company.js:348
msgid "Website"
msgstr ""
-#: company/models.py:110
+#: company/models.py:112
msgid "Company website URL"
msgstr ""
-#: company/models.py:114 company/templates/company/company_base.html:88
+#: company/models.py:116 company/templates/company/company_base.html:88
msgid "Address"
msgstr ""
-#: company/models.py:115
+#: company/models.py:117
msgid "Company address"
msgstr ""
-#: company/models.py:118
+#: company/models.py:120
msgid "Phone number"
msgstr ""
-#: company/models.py:119
+#: company/models.py:121
msgid "Contact phone number"
msgstr ""
-#: company/models.py:122 company/templates/company/company_base.html:102
+#: company/models.py:124 company/templates/company/company_base.html:102
msgid "Email"
msgstr ""
-#: company/models.py:122
+#: company/models.py:124
msgid "Contact email address"
msgstr ""
-#: company/models.py:125 company/templates/company/company_base.html:109
+#: company/models.py:127 company/templates/company/company_base.html:109
msgid "Contact"
msgstr ""
-#: company/models.py:126
+#: company/models.py:128
msgid "Point of contact"
msgstr ""
-#: company/models.py:128 company/models.py:345 company/models.py:513
-#: order/models.py:160 part/models.py:712
+#: company/models.py:130 company/models.py:347 company/models.py:563
+#: order/models.py:160 part/models.py:714
#: report/templates/report/inventree_build_order_base.html:165
-#: templates/js/translated/company.js:486
-#: templates/js/translated/company.js:768 templates/js/translated/part.js:819
+#: templates/js/translated/company.js:535
+#: templates/js/translated/company.js:823 templates/js/translated/part.js:972
msgid "Link"
msgstr ""
-#: company/models.py:128
+#: company/models.py:130
msgid "Link to external company information"
msgstr ""
-#: company/models.py:136 part/models.py:722
+#: company/models.py:138 part/models.py:724
msgid "Image"
msgstr ""
-#: company/models.py:141
+#: company/models.py:143
msgid "is customer"
msgstr ""
-#: company/models.py:141
+#: company/models.py:143
msgid "Do you sell items to this company?"
msgstr ""
-#: company/models.py:143
+#: company/models.py:145
msgid "is supplier"
msgstr ""
-#: company/models.py:143
+#: company/models.py:145
msgid "Do you purchase items from this company?"
msgstr ""
-#: company/models.py:145
+#: company/models.py:147
msgid "is manufacturer"
msgstr ""
-#: company/models.py:145
+#: company/models.py:147
msgid "Does this company manufacture parts?"
msgstr ""
-#: company/models.py:149 company/serializers.py:245
-#: company/templates/company/company_base.html:76
+#: company/models.py:151 company/serializers.py:264
+#: company/templates/company/company_base.html:76 stock/serializers.py:155
msgid "Currency"
msgstr ""
-#: company/models.py:152
+#: company/models.py:154
msgid "Default currency used for this company"
msgstr ""
-#: company/models.py:317 company/models.py:484 stock/models.py:448
+#: company/models.py:319 company/models.py:534 stock/models.py:454
#: stock/templates/stock/item_base.html:237
msgid "Base Part"
msgstr ""
-#: company/models.py:321 company/models.py:488 order/views.py:1082
+#: company/models.py:323 company/models.py:538 order/views.py:1082
msgid "Select part"
msgstr ""
-#: company/models.py:332 company/templates/company/company_base.html:116
+#: company/models.py:334 company/templates/company/company_base.html:116
#: company/templates/company/manufacturer_part.html:89
#: company/templates/company/supplier_part.html:98 part/bom.py:170
#: part/bom.py:241 stock/templates/stock/item_base.html:366
-#: templates/js/translated/company.js:287
-#: templates/js/translated/company.js:463
-#: templates/js/translated/company.js:739
+#: templates/js/translated/company.js:332
+#: templates/js/translated/company.js:512
+#: templates/js/translated/company.js:794 templates/js/translated/part.js:222
msgid "Manufacturer"
msgstr ""
-#: company/models.py:333
+#: company/models.py:335 templates/js/translated/part.js:223
msgid "Select manufacturer"
msgstr ""
-#: company/models.py:339 company/templates/company/manufacturer_part.html:93
-#: company/templates/company/supplier_part.html:106
-#: order/templates/order/purchase_order_detail.html:331 part/bom.py:171
-#: part/bom.py:242 templates/js/translated/company.js:479
-#: templates/js/translated/company.js:757
+#: company/models.py:341 company/templates/company/manufacturer_part.html:93
+#: company/templates/company/supplier_part.html:106 part/bom.py:171
+#: part/bom.py:242 templates/js/translated/company.js:528
+#: templates/js/translated/company.js:812 templates/js/translated/order.js:505
+#: templates/js/translated/part.js:233
msgid "MPN"
msgstr ""
-#: company/models.py:340
+#: company/models.py:342 templates/js/translated/part.js:234
msgid "Manufacturer Part Number"
msgstr ""
-#: company/models.py:346
+#: company/models.py:348
msgid "URL for external manufacturer part link"
msgstr ""
-#: company/models.py:352
+#: company/models.py:354
msgid "Manufacturer part description"
msgstr ""
-#: company/models.py:406 company/models.py:507
+#: company/models.py:408 company/models.py:557
#: company/templates/company/manufacturer_part.html:6
#: company/templates/company/manufacturer_part.html:23
#: stock/templates/stock/item_base.html:376
msgid "Manufacturer Part"
msgstr ""
-#: company/models.py:413
+#: company/models.py:415
msgid "Parameter name"
msgstr ""
-#: company/models.py:419
+#: company/models.py:421
#: report/templates/report/inventree_test_report_base.html:90
-#: stock/models.py:1808 templates/InvenTree/settings/header.html:8
-#: templates/js/translated/company.js:589 templates/js/translated/part.js:480
-#: templates/js/translated/stock.js:505
+#: stock/models.py:1819 templates/InvenTree/settings/header.html:8
+#: templates/js/translated/company.js:642 templates/js/translated/part.js:612
+#: templates/js/translated/stock.js:576
msgid "Value"
msgstr ""
-#: company/models.py:420
+#: company/models.py:422
msgid "Parameter value"
msgstr ""
-#: company/models.py:426 part/models.py:797 part/models.py:2204
-#: templates/js/translated/company.js:595 templates/js/translated/part.js:486
+#: company/models.py:428 part/models.py:799 part/models.py:2220
+#: templates/js/translated/company.js:648 templates/js/translated/part.js:618
msgid "Units"
msgstr ""
-#: company/models.py:427
+#: company/models.py:429
msgid "Parameter units"
msgstr ""
-#: company/models.py:494 company/templates/company/company_base.html:121
+#: company/models.py:501
+msgid "Linked manufacturer part must reference the same base part"
+msgstr ""
+
+#: company/models.py:544 company/templates/company/company_base.html:121
#: company/templates/company/supplier_part.html:88 order/models.py:260
#: order/templates/order/order_base.html:92
#: order/templates/order/order_wizard/select_pos.html:30 part/bom.py:175
#: part/bom.py:286 stock/templates/stock/item_base.html:383
-#: templates/js/translated/company.js:291
-#: templates/js/translated/company.js:713 templates/js/translated/order.js:254
+#: templates/js/translated/company.js:336
+#: templates/js/translated/company.js:768 templates/js/translated/order.js:328
+#: templates/js/translated/part.js:203
msgid "Supplier"
msgstr ""
-#: company/models.py:495
+#: company/models.py:545 templates/js/translated/part.js:204
msgid "Select supplier"
msgstr ""
-#: company/models.py:500 company/templates/company/supplier_part.html:92
-#: order/templates/order/purchase_order_detail.html:318 part/bom.py:176
-#: part/bom.py:287
+#: company/models.py:550 company/templates/company/supplier_part.html:92
+#: part/bom.py:176 part/bom.py:287 templates/js/translated/order.js:492
+#: templates/js/translated/part.js:214
msgid "SKU"
msgstr ""
-#: company/models.py:501
+#: company/models.py:551 templates/js/translated/part.js:215
msgid "Supplier stock keeping unit"
msgstr ""
-#: company/models.py:508
+#: company/models.py:558
msgid "Select manufacturer part"
msgstr ""
-#: company/models.py:514
+#: company/models.py:564
msgid "URL for external supplier part link"
msgstr ""
-#: company/models.py:520
+#: company/models.py:570
msgid "Supplier part description"
msgstr ""
-#: company/models.py:525 company/templates/company/supplier_part.html:120
-#: part/models.py:2352 report/templates/report/inventree_po_report.html:93
+#: company/models.py:575 company/templates/company/supplier_part.html:120
+#: part/models.py:2368 report/templates/report/inventree_po_report.html:93
#: report/templates/report/inventree_so_report.html:93
msgid "Note"
msgstr ""
-#: company/models.py:529 part/models.py:1590
+#: company/models.py:579 part/models.py:1599
msgid "base cost"
msgstr ""
-#: company/models.py:529 part/models.py:1590
+#: company/models.py:579 part/models.py:1599
msgid "Minimum charge (e.g. stocking fee)"
msgstr ""
-#: company/models.py:531 company/templates/company/supplier_part.html:113
-#: stock/models.py:472 stock/templates/stock/item_base.html:324
-#: templates/js/translated/company.js:789 templates/js/translated/stock.js:1086
+#: company/models.py:581 company/templates/company/supplier_part.html:113
+#: stock/models.py:478 stock/templates/stock/item_base.html:324
+#: templates/js/translated/company.js:844 templates/js/translated/stock.js:1057
msgid "Packaging"
msgstr ""
-#: company/models.py:531
+#: company/models.py:581
msgid "Part packaging"
msgstr ""
-#: company/models.py:533 part/models.py:1592
+#: company/models.py:583 part/models.py:1601
msgid "multiple"
msgstr ""
-#: company/models.py:533
+#: company/models.py:583
msgid "Order multiple"
msgstr ""
@@ -2420,7 +2502,7 @@ msgstr ""
#: company/templates/company/company_base.html:9
#: company/templates/company/company_base.html:35
-#: templates/InvenTree/search.html:304 templates/js/translated/company.js:276
+#: templates/InvenTree/search.html:304 templates/js/translated/company.js:321
msgid "Company"
msgstr ""
@@ -2435,7 +2517,7 @@ msgid "Download image from URL"
msgstr ""
#: company/templates/company/company_base.html:46
-#: templates/js/translated/order.js:83
+#: templates/js/translated/order.js:117
msgid "Create Purchase Order"
msgstr ""
@@ -2460,16 +2542,16 @@ msgstr ""
msgid "Phone"
msgstr ""
-#: company/templates/company/company_base.html:126 order/models.py:544
-#: order/templates/order/sales_order_base.html:94 stock/models.py:490
-#: stock/models.py:491 stock/templates/stock/item_base.html:276
-#: templates/js/translated/company.js:283 templates/js/translated/order.js:351
-#: templates/js/translated/stock.js:1467
+#: company/templates/company/company_base.html:126 order/models.py:550
+#: order/templates/order/sales_order_base.html:94 stock/models.py:496
+#: stock/models.py:497 stock/templates/stock/item_base.html:276
+#: templates/js/translated/company.js:328 templates/js/translated/order.js:692
+#: templates/js/translated/stock.js:1608
msgid "Customer"
msgstr ""
#: company/templates/company/company_base.html:193
-#: part/templates/part/part_base.html:405
+#: part/templates/part/part_base.html:418
msgid "Upload Image"
msgstr ""
@@ -2490,8 +2572,8 @@ msgstr ""
msgid "New Supplier Part"
msgstr ""
-#: company/templates/company/detail.html:28
-#: company/templates/company/detail.html:70
+#: company/templates/company/detail.html:27
+#: company/templates/company/detail.html:67
#: company/templates/company/manufacturer_part.html:112
#: company/templates/company/manufacturer_part.html:136
#: part/templates/part/category.html:135 part/templates/part/detail.html:292
@@ -2499,106 +2581,106 @@ msgstr ""
msgid "Options"
msgstr ""
-#: company/templates/company/detail.html:33
-#: company/templates/company/detail.html:75
+#: company/templates/company/detail.html:32
+#: company/templates/company/detail.html:72
#: part/templates/part/category.html:140
msgid "Order parts"
msgstr ""
-#: company/templates/company/detail.html:36
-#: company/templates/company/detail.html:78
+#: company/templates/company/detail.html:35
+#: company/templates/company/detail.html:75
msgid "Delete parts"
msgstr ""
-#: company/templates/company/detail.html:36
-#: company/templates/company/detail.html:78
+#: company/templates/company/detail.html:35
+#: company/templates/company/detail.html:75
msgid "Delete Parts"
msgstr ""
-#: company/templates/company/detail.html:56 templates/InvenTree/search.html:149
+#: company/templates/company/detail.html:54 templates/InvenTree/search.html:149
msgid "Manufacturer Parts"
msgstr ""
-#: company/templates/company/detail.html:64
+#: company/templates/company/detail.html:62
msgid "Create new manufacturer part"
msgstr ""
-#: company/templates/company/detail.html:65 part/templates/part/detail.html:312
+#: company/templates/company/detail.html:63 part/templates/part/detail.html:312
msgid "New Manufacturer Part"
msgstr ""
-#: company/templates/company/detail.html:97
+#: company/templates/company/detail.html:93
msgid "Supplier Stock"
msgstr ""
-#: company/templates/company/detail.html:106
-#: company/templates/company/navbar.html:40
-#: company/templates/company/navbar.html:43
+#: company/templates/company/detail.html:102
+#: company/templates/company/navbar.html:46
+#: company/templates/company/navbar.html:49
#: order/templates/order/purchase_orders.html:8
#: order/templates/order/purchase_orders.html:13
-#: part/templates/part/detail.html:50 part/templates/part/navbar.html:71
-#: part/templates/part/navbar.html:74 templates/InvenTree/index.html:260
+#: part/templates/part/detail.html:50 part/templates/part/navbar.html:82
+#: part/templates/part/navbar.html:85 templates/InvenTree/index.html:260
#: templates/InvenTree/search.html:325
#: templates/InvenTree/settings/navbar.html:107
-#: templates/InvenTree/settings/navbar.html:109 templates/navbar.html:37
+#: templates/InvenTree/settings/navbar.html:109 templates/navbar.html:44
#: users/models.py:45
msgid "Purchase Orders"
msgstr ""
-#: company/templates/company/detail.html:112
+#: company/templates/company/detail.html:108
#: order/templates/order/purchase_orders.html:20
msgid "Create new purchase order"
msgstr ""
-#: company/templates/company/detail.html:113
+#: company/templates/company/detail.html:109
#: order/templates/order/purchase_orders.html:21
msgid "New Purchase Order"
msgstr ""
-#: company/templates/company/detail.html:128
-#: company/templates/company/navbar.html:49
-#: company/templates/company/navbar.html:52
+#: company/templates/company/detail.html:124
+#: company/templates/company/navbar.html:55
+#: company/templates/company/navbar.html:58
#: order/templates/order/sales_orders.html:8
#: order/templates/order/sales_orders.html:13
-#: part/templates/part/detail.html:71 part/templates/part/navbar.html:79
-#: part/templates/part/navbar.html:82 templates/InvenTree/index.html:291
+#: part/templates/part/detail.html:71 part/templates/part/navbar.html:91
+#: part/templates/part/navbar.html:94 templates/InvenTree/index.html:291
#: templates/InvenTree/search.html:345
#: templates/InvenTree/settings/navbar.html:113
-#: templates/InvenTree/settings/navbar.html:115 templates/navbar.html:46
+#: templates/InvenTree/settings/navbar.html:115 templates/navbar.html:55
#: users/models.py:46
msgid "Sales Orders"
msgstr ""
-#: company/templates/company/detail.html:134
+#: company/templates/company/detail.html:130
#: order/templates/order/sales_orders.html:20
msgid "Create new sales order"
msgstr ""
-#: company/templates/company/detail.html:135
+#: company/templates/company/detail.html:131
#: order/templates/order/sales_orders.html:21
msgid "New Sales Order"
msgstr ""
-#: company/templates/company/detail.html:151
-#: company/templates/company/navbar.html:55
-#: company/templates/company/navbar.html:58
-#: templates/js/translated/build.js:597
+#: company/templates/company/detail.html:147
+#: company/templates/company/navbar.html:61
+#: company/templates/company/navbar.html:64
+#: templates/js/translated/build.js:620
msgid "Assigned Stock"
msgstr ""
-#: company/templates/company/detail.html:169
+#: company/templates/company/detail.html:165
msgid "Company Notes"
msgstr ""
#: company/templates/company/detail.html:364
#: company/templates/company/manufacturer_part.html:200
-#: part/templates/part/detail.html:826
+#: part/templates/part/detail.html:357
msgid "Delete Supplier Parts?"
msgstr ""
#: company/templates/company/detail.html:365
#: company/templates/company/manufacturer_part.html:201
-#: part/templates/part/detail.html:827
+#: part/templates/part/detail.html:358
msgid "All selected supplier parts will be deleted"
msgstr ""
@@ -2609,17 +2691,17 @@ msgstr ""
#: company/templates/company/manufacturer_part.html:40
#: company/templates/company/supplier_part.html:40
#: company/templates/company/supplier_part.html:146
-#: part/templates/part/detail.html:55 part/templates/part/part_base.html:109
+#: part/templates/part/detail.html:55 part/templates/part/part_base.html:116
msgid "Order part"
msgstr ""
#: company/templates/company/manufacturer_part.html:45
-#: templates/js/translated/company.js:511
+#: templates/js/translated/company.js:560
msgid "Edit manufacturer part"
msgstr ""
#: company/templates/company/manufacturer_part.html:49
-#: templates/js/translated/company.js:512
+#: templates/js/translated/company.js:561
msgid "Delete manufacturer part"
msgstr ""
@@ -2634,9 +2716,9 @@ msgstr ""
#: company/templates/company/manufacturer_part.html:103
#: company/templates/company/manufacturer_part_navbar.html:21
-#: company/views.py:49 part/templates/part/navbar.html:65
-#: part/templates/part/navbar.html:68 part/templates/part/prices.html:144
-#: templates/InvenTree/search.html:316 templates/navbar.html:35
+#: company/views.py:49 part/templates/part/navbar.html:75
+#: part/templates/part/navbar.html:78 part/templates/part/prices.html:163
+#: templates/InvenTree/search.html:316 templates/navbar.html:41
msgid "Suppliers"
msgstr ""
@@ -2649,8 +2731,8 @@ msgstr ""
#: company/templates/company/manufacturer_part.html:138
#: company/templates/company/manufacturer_part.html:239
#: part/templates/part/detail.html:214 part/templates/part/detail.html:294
-#: part/templates/part/detail.html:317 templates/js/translated/company.js:377
-#: users/models.py:194
+#: part/templates/part/detail.html:317 templates/js/translated/company.js:424
+#: templates/js/translated/helpers.js:31 users/models.py:194
msgid "Delete"
msgstr ""
@@ -2659,8 +2741,8 @@ msgstr ""
#: company/templates/company/manufacturer_part_navbar.html:14
#: part/templates/part/category_navbar.html:38
#: part/templates/part/category_navbar.html:41
-#: part/templates/part/detail.html:155 part/templates/part/navbar.html:14
-#: part/templates/part/navbar.html:17
+#: part/templates/part/detail.html:155 part/templates/part/navbar.html:20
+#: part/templates/part/navbar.html:23
msgid "Parameters"
msgstr ""
@@ -2676,7 +2758,7 @@ msgid "Delete parameters"
msgstr ""
#: company/templates/company/manufacturer_part.html:176
-#: part/templates/part/detail.html:719
+#: part/templates/part/detail.html:834
msgid "Add Parameter"
msgstr ""
@@ -2693,18 +2775,18 @@ msgid "Manufacturer Part Stock"
msgstr ""
#: company/templates/company/manufacturer_part_navbar.html:29
-#: company/templates/company/navbar.html:34
+#: company/templates/company/navbar.html:39
#: company/templates/company/supplier_part_navbar.html:15
-#: part/templates/part/navbar.html:31 stock/api.py:53
+#: part/templates/part/navbar.html:38 stock/api.py:54
#: stock/templates/stock/loc_link.html:7 stock/templates/stock/location.html:36
#: stock/templates/stock/stock_app_base.html:10
#: templates/InvenTree/index.html:150 templates/InvenTree/search.html:196
#: templates/InvenTree/search.html:232
#: templates/InvenTree/settings/navbar.html:95
#: templates/InvenTree/settings/navbar.html:97
-#: templates/js/translated/part.js:401 templates/js/translated/part.js:626
-#: templates/js/translated/part.js:786 templates/js/translated/stock.js:133
-#: templates/js/translated/stock.js:935 templates/navbar.html:26
+#: templates/js/translated/part.js:529 templates/js/translated/part.js:758
+#: templates/js/translated/part.js:934 templates/js/translated/stock.js:202
+#: templates/js/translated/stock.js:850 templates/navbar.html:32
msgid "Stock"
msgstr ""
@@ -2717,41 +2799,41 @@ msgstr ""
msgid "Orders"
msgstr ""
-#: company/templates/company/navbar.html:13
-#: company/templates/company/navbar.html:16
+#: company/templates/company/navbar.html:17
+#: company/templates/company/navbar.html:20
msgid "Manufactured Parts"
msgstr ""
-#: company/templates/company/navbar.html:22
-#: company/templates/company/navbar.html:25
+#: company/templates/company/navbar.html:26
+#: company/templates/company/navbar.html:29
msgid "Supplied Parts"
msgstr ""
-#: company/templates/company/navbar.html:31 part/templates/part/navbar.html:28
+#: company/templates/company/navbar.html:36 part/templates/part/navbar.html:35
#: stock/templates/stock/location.html:119
#: stock/templates/stock/location.html:134
#: stock/templates/stock/location.html:148
#: stock/templates/stock/location_navbar.html:18
#: stock/templates/stock/location_navbar.html:21
-#: templates/InvenTree/search.html:198 templates/js/translated/stock.js:1366
+#: templates/InvenTree/search.html:198 templates/js/translated/stock.js:1507
#: templates/stats.html:93 templates/stats.html:102 users/models.py:43
msgid "Stock Items"
msgstr ""
#: company/templates/company/supplier_part.html:7
-#: company/templates/company/supplier_part.html:24 stock/models.py:457
+#: company/templates/company/supplier_part.html:24 stock/models.py:463
#: stock/templates/stock/item_base.html:388
-#: templates/js/translated/company.js:729 templates/js/translated/stock.js:1058
+#: templates/js/translated/company.js:784 templates/js/translated/stock.js:1014
msgid "Supplier Part"
msgstr ""
#: company/templates/company/supplier_part.html:44
-#: templates/js/translated/company.js:802
+#: templates/js/translated/company.js:857
msgid "Edit supplier part"
msgstr ""
#: company/templates/company/supplier_part.html:48
-#: templates/js/translated/company.js:803
+#: templates/js/translated/company.js:858
msgid "Delete supplier part"
msgstr ""
@@ -2775,13 +2857,13 @@ msgid "Order Part"
msgstr ""
#: company/templates/company/supplier_part.html:158
-#: part/templates/part/navbar.html:58 part/templates/part/prices.html:7
+#: part/templates/part/navbar.html:67 part/templates/part/prices.html:7
msgid "Pricing Information"
msgstr ""
#: company/templates/company/supplier_part.html:164
#: company/templates/company/supplier_part.html:265
-#: part/templates/part/prices.html:253 part/views.py:1722
+#: part/templates/part/prices.html:271 part/views.py:1730
msgid "Add Price Break"
msgstr ""
@@ -2789,11 +2871,11 @@ msgstr ""
msgid "No price break information found"
msgstr ""
-#: company/templates/company/supplier_part.html:199 part/views.py:1784
+#: company/templates/company/supplier_part.html:199 part/views.py:1792
msgid "Delete Price Break"
msgstr ""
-#: company/templates/company/supplier_part.html:213 part/views.py:1770
+#: company/templates/company/supplier_part.html:213 part/views.py:1778
msgid "Edit Price Break"
msgstr ""
@@ -2817,8 +2899,8 @@ msgstr ""
msgid "New Supplier"
msgstr ""
-#: company/views.py:55 part/templates/part/prices.html:148
-#: templates/InvenTree/search.html:306 templates/navbar.html:36
+#: company/views.py:55 part/templates/part/prices.html:167
+#: templates/InvenTree/search.html:306 templates/navbar.html:42
msgid "Manufacturers"
msgstr ""
@@ -2827,7 +2909,7 @@ msgid "New Manufacturer"
msgstr ""
#: company/views.py:61 templates/InvenTree/search.html:336
-#: templates/navbar.html:45
+#: templates/navbar.html:53
msgid "Customers"
msgstr ""
@@ -2929,6 +3011,10 @@ msgstr ""
msgid "Part query filters (comma-separated value of key=value pairs)"
msgstr ""
+#: order/api.py:302
+msgid "Destination location must be specified"
+msgstr ""
+
#: order/forms.py:30 order/templates/order/order_base.html:47
msgid "Place order"
msgstr ""
@@ -2978,11 +3064,11 @@ msgstr ""
msgid "Order notes"
msgstr ""
-#: order/models.py:247 order/models.py:534
+#: order/models.py:247 order/models.py:540
msgid "Order reference"
msgstr ""
-#: order/models.py:252 order/models.py:549
+#: order/models.py:252 order/models.py:555
msgid "Purchase order status"
msgstr ""
@@ -2991,7 +3077,7 @@ msgid "Company from which the items are being ordered"
msgstr ""
#: order/models.py:264 order/templates/order/order_base.html:98
-#: templates/js/translated/order.js:263
+#: templates/js/translated/order.js:337
msgid "Supplier Reference"
msgstr ""
@@ -3023,7 +3109,7 @@ msgstr ""
msgid "Date order was completed"
msgstr ""
-#: order/models.py:313 stock/models.py:345 stock/models.py:1060
+#: order/models.py:313 stock/models.py:351 stock/models.py:1072
msgid "Quantity must be greater than zero"
msgstr ""
@@ -3031,150 +3117,182 @@ msgstr ""
msgid "Part supplier must match PO supplier"
msgstr ""
-#: order/models.py:416
+#: order/models.py:421
msgid "Lines can only be received against an order marked as 'Placed'"
msgstr ""
-#: order/models.py:420
+#: order/models.py:425
msgid "Quantity must be an integer"
msgstr ""
-#: order/models.py:422
+#: order/models.py:427
msgid "Quantity must be a positive number"
msgstr ""
-#: order/models.py:545
+#: order/models.py:551
msgid "Company to which the items are being sold"
msgstr ""
-#: order/models.py:551
+#: order/models.py:557
msgid "Customer Reference "
msgstr ""
-#: order/models.py:551
+#: order/models.py:557
msgid "Customer order reference code"
msgstr ""
-#: order/models.py:556
+#: order/models.py:562
msgid "Target date for order completion. Order will be overdue after this date."
msgstr ""
-#: order/models.py:559 templates/js/translated/order.js:392
+#: order/models.py:565 templates/js/translated/order.js:733
msgid "Shipment Date"
msgstr ""
-#: order/models.py:566
+#: order/models.py:572
msgid "shipped by"
msgstr ""
-#: order/models.py:610
+#: order/models.py:616
msgid "SalesOrder cannot be shipped as it is not currently pending"
msgstr ""
-#: order/models.py:707
+#: order/models.py:713
msgid "Item quantity"
msgstr ""
-#: order/models.py:713
+#: order/models.py:719
msgid "Line item reference"
msgstr ""
-#: order/models.py:715
+#: order/models.py:721
msgid "Line item notes"
msgstr ""
-#: order/models.py:745 order/models.py:823 templates/js/translated/order.js:442
+#: order/models.py:751 order/models.py:835 templates/js/translated/order.js:785
msgid "Order"
msgstr ""
-#: order/models.py:746 order/templates/order/order_base.html:9
+#: order/models.py:752 order/templates/order/order_base.html:9
#: order/templates/order/order_base.html:24
#: report/templates/report/inventree_po_report.html:77
#: stock/templates/stock/item_base.html:338
-#: templates/js/translated/order.js:232 templates/js/translated/stock.js:1037
-#: templates/js/translated/stock.js:1448
+#: templates/js/translated/order.js:306 templates/js/translated/stock.js:991
+#: templates/js/translated/stock.js:1589
msgid "Purchase Order"
msgstr ""
-#: order/models.py:767
+#: order/models.py:773
msgid "Supplier part"
msgstr ""
-#: order/models.py:770 order/templates/order/order_base.html:131
-#: order/templates/order/purchase_order_detail.html:388
+#: order/models.py:780 order/templates/order/order_base.html:131
#: order/templates/order/receive_parts.html:22
#: order/templates/order/sales_order_base.html:133
+#: templates/js/translated/order.js:573
msgid "Received"
msgstr ""
-#: order/models.py:770
+#: order/models.py:781
msgid "Number of items received"
msgstr ""
-#: order/models.py:776 part/templates/part/prices.html:157 stock/models.py:582
-#: stock/templates/stock/item_base.html:345
-#: templates/js/translated/stock.js:1081
+#: order/models.py:788 part/templates/part/prices.html:176 stock/models.py:588
+#: stock/serializers.py:147 stock/templates/stock/item_base.html:345
+#: templates/js/translated/stock.js:1045
msgid "Purchase Price"
msgstr ""
-#: order/models.py:777
+#: order/models.py:789
msgid "Unit purchase price"
msgstr ""
-#: order/models.py:785
+#: order/models.py:797
msgid "Where does the Purchaser want this item to be stored?"
msgstr ""
-#: order/models.py:831 part/templates/part/part_pricing.html:97
-#: part/templates/part/prices.html:97 part/templates/part/prices.html:266
+#: order/models.py:843 part/templates/part/part_pricing.html:112
+#: part/templates/part/prices.html:116 part/templates/part/prices.html:284
msgid "Sale Price"
msgstr ""
-#: order/models.py:832
+#: order/models.py:844
msgid "Unit sale price"
msgstr ""
-#: order/models.py:911 order/models.py:913
+#: order/models.py:923 order/models.py:925
msgid "Stock item has not been assigned"
msgstr ""
-#: order/models.py:917
+#: order/models.py:929
msgid "Cannot allocate stock item to a line with a different part"
msgstr ""
-#: order/models.py:919
+#: order/models.py:931
msgid "Cannot allocate stock to a line without a part"
msgstr ""
-#: order/models.py:922
+#: order/models.py:934
msgid "Allocation quantity cannot exceed stock quantity"
msgstr ""
-#: order/models.py:932
+#: order/models.py:944
msgid "Quantity must be 1 for serialized stock item"
msgstr ""
-#: order/models.py:937
+#: order/models.py:949
msgid "Line"
msgstr ""
-#: order/models.py:948
+#: order/models.py:960
msgid "Item"
msgstr ""
-#: order/models.py:949
+#: order/models.py:961
msgid "Select stock item to allocate"
msgstr ""
-#: order/models.py:952
+#: order/models.py:964
msgid "Enter stock allocation quantity"
msgstr ""
-#: order/serializers.py:139
+#: order/serializers.py:166
msgid "Purchase price currency"
msgstr ""
-#: order/serializers.py:360
+#: order/serializers.py:201
+msgid "Line Item"
+msgstr ""
+
+#: order/serializers.py:207
+msgid "Line item does not match purchase order"
+msgstr ""
+
+#: order/serializers.py:217 order/serializers.py:276
+msgid "Select destination location for received items"
+msgstr ""
+
+#: order/serializers.py:234
+msgid "Barcode Hash"
+msgstr ""
+
+#: order/serializers.py:235
+msgid "Unique identifier field"
+msgstr ""
+
+#: order/serializers.py:250
+msgid "Barcode is already in use"
+msgstr ""
+
+#: order/serializers.py:289
+msgid "Line items must be provided"
+msgstr ""
+
+#: order/serializers.py:299
+msgid "Supplied barcode values must be unique"
+msgstr ""
+
+#: order/serializers.py:514
msgid "Sale price currency"
msgstr ""
@@ -3227,14 +3345,12 @@ msgid "Edit Purchase Order"
msgstr ""
#: order/templates/order/order_base.html:196
-#: order/templates/order/purchase_order_detail.html:265
-#: stock/templates/stock/location.html:250
+#: stock/templates/stock/location.html:250 templates/js/translated/order.js:437
msgid "New Location"
msgstr ""
#: order/templates/order/order_base.html:197
-#: order/templates/order/purchase_order_detail.html:266
-#: stock/templates/stock/location.html:42
+#: stock/templates/stock/location.html:42 templates/js/translated/order.js:438
msgid "Create new stock location"
msgstr ""
@@ -3336,7 +3452,7 @@ msgid "Upload File for Purchase Order"
msgstr ""
#: order/templates/order/order_wizard/po_upload.html:18
-#: part/templates/part/bom_upload/upload_file.html:24
+#: part/templates/part/bom_upload/upload_file.html:34
#: part/templates/part/import_wizard/ajax_part_upload.html:10
#: part/templates/part/import_wizard/part_upload.html:21
#, python-format
@@ -3369,7 +3485,7 @@ msgstr ""
#: order/templates/order/order_wizard/select_parts.html:65
#, python-format
-msgid "Select a supplier for %(name)s"
+msgid "Select a supplier for %(name)s"
msgstr ""
#: order/templates/order/order_wizard/select_parts.html:77
@@ -3386,7 +3502,7 @@ msgid "Select existing purchase orders, or create new orders."
msgstr ""
#: order/templates/order/order_wizard/select_pos.html:31
-#: templates/js/translated/order.js:289 templates/js/translated/order.js:397
+#: templates/js/translated/order.js:363 templates/js/translated/order.js:738
msgid "Items"
msgstr ""
@@ -3425,9 +3541,9 @@ msgid "Purchase Order Items"
msgstr ""
#: order/templates/order/purchase_order_detail.html:23
-#: order/templates/order/purchase_order_detail.html:202
+#: order/templates/order/purchase_order_detail.html:203
#: order/templates/order/sales_order_detail.html:23
-#: order/templates/order/sales_order_detail.html:176
+#: order/templates/order/sales_order_detail.html:177
msgid "Add Line Item"
msgstr ""
@@ -3436,49 +3552,6 @@ msgstr ""
msgid "Order Notes"
msgstr ""
-#: order/templates/order/purchase_order_detail.html:238
-#: order/templates/order/sales_order_detail.html:518
-msgid "Edit Line Item"
-msgstr ""
-
-#: order/templates/order/purchase_order_detail.html:248
-#: order/templates/order/sales_order_detail.html:528
-msgid "Delete Line Item"
-msgstr ""
-
-#: order/templates/order/purchase_order_detail.html:279
-msgid "No line items found"
-msgstr ""
-
-#: order/templates/order/purchase_order_detail.html:307
-#: order/templates/order/sales_order_detail.html:353
-msgid "Total"
-msgstr ""
-
-#: order/templates/order/purchase_order_detail.html:360
-#: order/templates/order/sales_order_detail.html:376
-#: templates/js/translated/part.js:1128 templates/js/translated/part.js:1317
-msgid "Unit Price"
-msgstr ""
-
-#: order/templates/order/purchase_order_detail.html:367
-#: order/templates/order/sales_order_detail.html:383
-msgid "Total price"
-msgstr ""
-
-#: order/templates/order/purchase_order_detail.html:431
-#: order/templates/order/sales_order_detail.html:489
-msgid "Edit line item"
-msgstr ""
-
-#: order/templates/order/purchase_order_detail.html:432
-msgid "Delete line item"
-msgstr ""
-
-#: order/templates/order/purchase_order_detail.html:437
-msgid "Receive line item"
-msgstr ""
-
#: order/templates/order/purchase_orders.html:24
#: order/templates/order/sales_orders.html:24
msgid "Print Order Reports"
@@ -3486,18 +3559,18 @@ msgstr ""
#: order/templates/order/receive_parts.html:8
#, python-format
-msgid "Receive outstanding parts for %(order)s - %(desc)s"
+msgid "Receive outstanding parts for %(order)s - %(desc)s"
msgstr ""
-#: order/templates/order/receive_parts.html:14 part/api.py:49
-#: part/models.py:296 part/templates/part/cat_link.html:7
+#: order/templates/order/receive_parts.html:14 part/api.py:54
+#: part/models.py:298 part/templates/part/cat_link.html:7
#: part/templates/part/category.html:108 part/templates/part/category.html:122
#: part/templates/part/category_navbar.html:21
#: part/templates/part/category_navbar.html:24
#: templates/InvenTree/index.html:102 templates/InvenTree/search.html:114
#: templates/InvenTree/settings/navbar.html:83
#: templates/InvenTree/settings/navbar.html:85
-#: templates/js/translated/part.js:987 templates/navbar.html:23
+#: templates/js/translated/part.js:1154 templates/navbar.html:29
#: templates/stats.html:80 templates/stats.html:89 users/models.py:41
msgid "Parts"
msgstr ""
@@ -3511,7 +3584,7 @@ msgid "Order Code"
msgstr ""
#: order/templates/order/receive_parts.html:21
-#: part/templates/part/part_base.html:160 templates/js/translated/part.js:802
+#: part/templates/part/part_base.html:167 templates/js/translated/part.js:949
msgid "On Order"
msgstr ""
@@ -3540,7 +3613,7 @@ msgid "Sales Order Details"
msgstr ""
#: order/templates/order/sales_order_base.html:100
-#: templates/js/translated/order.js:364
+#: templates/js/translated/order.js:705
msgid "Customer Reference"
msgstr ""
@@ -3563,71 +3636,102 @@ msgstr ""
msgid "Sales Order Items"
msgstr ""
-#: order/templates/order/sales_order_detail.html:225
-#: templates/js/translated/bom.js:378 templates/js/translated/build.js:759
-#: templates/js/translated/build.js:1202
+#: order/templates/order/sales_order_detail.html:226
+#: templates/js/translated/bom.js:394 templates/js/translated/build.js:782
+#: templates/js/translated/build.js:1219
msgid "Actions"
msgstr ""
-#: order/templates/order/sales_order_detail.html:232
-#: templates/js/translated/build.js:645 templates/js/translated/build.js:1011
+#: order/templates/order/sales_order_detail.html:233
+#: templates/js/translated/build.js:668 templates/js/translated/build.js:1030
msgid "Edit stock allocation"
msgstr ""
-#: order/templates/order/sales_order_detail.html:233
-#: templates/js/translated/build.js:647 templates/js/translated/build.js:1012
+#: order/templates/order/sales_order_detail.html:234
+#: templates/js/translated/build.js:670 templates/js/translated/build.js:1031
msgid "Delete stock allocation"
msgstr ""
-#: order/templates/order/sales_order_detail.html:306
+#: order/templates/order/sales_order_detail.html:307
msgid "No matching line items"
msgstr ""
-#: order/templates/order/sales_order_detail.html:336
+#: order/templates/order/sales_order_detail.html:337
msgid "ID"
msgstr ""
-#: order/templates/order/sales_order_detail.html:404
-#: templates/js/translated/build.js:710 templates/js/translated/build.js:1007
+#: order/templates/order/sales_order_detail.html:354
+#: templates/js/translated/order.js:481
+msgid "Total"
+msgstr ""
+
+#: order/templates/order/sales_order_detail.html:377
+#: templates/js/translated/order.js:534 templates/js/translated/part.js:1296
+#: templates/js/translated/part.js:1507
+msgid "Unit Price"
+msgstr ""
+
+#: order/templates/order/sales_order_detail.html:384
+#: templates/js/translated/order.js:543
+msgid "Total price"
+msgstr ""
+
+#: order/templates/order/sales_order_detail.html:405
+#: templates/js/translated/build.js:733 templates/js/translated/build.js:1026
msgid "Allocated"
msgstr ""
-#: order/templates/order/sales_order_detail.html:406
+#: order/templates/order/sales_order_detail.html:407
msgid "Fulfilled"
msgstr ""
-#: order/templates/order/sales_order_detail.html:443
+#: order/templates/order/sales_order_detail.html:444
msgid "PO"
msgstr ""
-#: order/templates/order/sales_order_detail.html:473
+#: order/templates/order/sales_order_detail.html:474
msgid "Allocate serial numbers"
msgstr ""
-#: order/templates/order/sales_order_detail.html:476
-#: templates/js/translated/build.js:773
+#: order/templates/order/sales_order_detail.html:477
+#: templates/js/translated/build.js:796
msgid "Allocate stock"
msgstr ""
-#: order/templates/order/sales_order_detail.html:479
+#: order/templates/order/sales_order_detail.html:480
msgid "Purchase stock"
msgstr ""
-#: order/templates/order/sales_order_detail.html:483
-#: templates/js/translated/build.js:766 templates/js/translated/build.js:1210
+#: order/templates/order/sales_order_detail.html:484
+#: templates/js/translated/build.js:789 templates/js/translated/build.js:1227
msgid "Build stock"
msgstr ""
-#: order/templates/order/sales_order_detail.html:486
-#: order/templates/order/sales_order_detail.html:605
+#: order/templates/order/sales_order_detail.html:487
+#: order/templates/order/sales_order_detail.html:606
msgid "Calculate price"
msgstr ""
#: order/templates/order/sales_order_detail.html:490
+#: templates/js/translated/order.js:616
+msgid "Edit line item"
+msgstr ""
+
+#: order/templates/order/sales_order_detail.html:491
msgid "Delete line item "
msgstr ""
-#: order/templates/order/sales_order_detail.html:611
+#: order/templates/order/sales_order_detail.html:519
+#: templates/js/translated/order.js:403
+msgid "Edit Line Item"
+msgstr ""
+
+#: order/templates/order/sales_order_detail.html:529
+#: templates/js/translated/order.js:415
+msgid "Delete Line Item"
+msgstr ""
+
+#: order/templates/order/sales_order_detail.html:612
msgid "Update Unit Price"
msgstr ""
@@ -3814,12 +3918,28 @@ msgstr ""
msgid "Updated {part} unit-price to {price} and quantity to {qty}"
msgstr ""
-#: part/bom.py:133 part/models.py:73 part/models.py:731
-#: part/templates/part/category.html:75 part/templates/part/part_base.html:282
+#: part/api.py:700
+msgid "Must be greater than zero"
+msgstr ""
+
+#: part/api.py:704
+msgid "Must be a valid quantity"
+msgstr ""
+
+#: part/api.py:719
+msgid "Specify location for initial part stock"
+msgstr ""
+
+#: part/api.py:750 part/api.py:754 part/api.py:769 part/api.py:773
+msgid "This field is required"
+msgstr ""
+
+#: part/bom.py:133 part/models.py:75 part/models.py:733
+#: part/templates/part/category.html:75 part/templates/part/part_base.html:290
msgid "Default Location"
msgstr ""
-#: part/bom.py:134 part/templates/part/part_base.html:149
+#: part/bom.py:134 part/templates/part/part_base.html:156
msgid "Available Stock"
msgstr ""
@@ -3879,7 +3999,7 @@ msgstr ""
msgid "Include part supplier data in exported BOM"
msgstr ""
-#: part/forms.py:96 part/models.py:2234
+#: part/forms.py:96 part/models.py:2250
msgid "Parent Part"
msgstr ""
@@ -3923,391 +4043,391 @@ msgstr ""
msgid "Input quantity for price calculation"
msgstr ""
-#: part/models.py:74
+#: part/models.py:76
msgid "Default location for parts in this category"
msgstr ""
-#: part/models.py:77
+#: part/models.py:79
msgid "Default keywords"
msgstr ""
-#: part/models.py:77
+#: part/models.py:79
msgid "Default keywords for parts in this category"
msgstr ""
-#: part/models.py:87 part/models.py:2280
+#: part/models.py:89 part/models.py:2296
#: part/templates/part/part_app_base.html:10
msgid "Part Category"
msgstr ""
-#: part/models.py:88 part/templates/part/category.html:32
+#: part/models.py:90 part/templates/part/category.html:32
#: part/templates/part/category.html:103 templates/InvenTree/search.html:127
#: templates/stats.html:84 users/models.py:40
msgid "Part Categories"
msgstr ""
-#: part/models.py:381
+#: part/models.py:383
msgid "Invalid choice for parent part"
msgstr ""
-#: part/models.py:433 part/models.py:445
+#: part/models.py:435 part/models.py:447
#, python-brace-format
msgid "Part '{p1}' is used in BOM for '{p2}' (recursive)"
msgstr ""
-#: part/models.py:542
+#: part/models.py:544
msgid "Next available serial numbers are"
msgstr ""
-#: part/models.py:546
+#: part/models.py:548
msgid "Next available serial number is"
msgstr ""
-#: part/models.py:551
+#: part/models.py:553
msgid "Most recent serial number is"
msgstr ""
-#: part/models.py:630
+#: part/models.py:632
msgid "Duplicate IPN not allowed in part settings"
msgstr ""
-#: part/models.py:655
+#: part/models.py:657
msgid "Part name"
msgstr ""
-#: part/models.py:662
+#: part/models.py:664
msgid "Is Template"
msgstr ""
-#: part/models.py:663
+#: part/models.py:665
msgid "Is this part a template part?"
msgstr ""
-#: part/models.py:673
+#: part/models.py:675
msgid "Is this part a variant of another part?"
msgstr ""
-#: part/models.py:674
+#: part/models.py:676
msgid "Variant Of"
msgstr ""
-#: part/models.py:680
+#: part/models.py:682
msgid "Part description"
msgstr ""
-#: part/models.py:685 part/templates/part/category.html:82
-#: part/templates/part/part_base.html:251
+#: part/models.py:687 part/templates/part/category.html:82
+#: part/templates/part/part_base.html:259
msgid "Keywords"
msgstr ""
-#: part/models.py:686
+#: part/models.py:688
msgid "Part keywords to improve visibility in search results"
msgstr ""
-#: part/models.py:693 part/models.py:2279
+#: part/models.py:695 part/models.py:2295
#: part/templates/part/set_category.html:15
#: templates/InvenTree/settings/settings.html:167
-#: templates/js/translated/part.js:773
+#: templates/js/translated/part.js:916
msgid "Category"
msgstr ""
-#: part/models.py:694
+#: part/models.py:696
msgid "Part category"
msgstr ""
-#: part/models.py:699 part/templates/part/part_base.html:227
-#: templates/js/translated/part.js:389 templates/js/translated/part.js:617
+#: part/models.py:701 part/templates/part/part_base.html:235
+#: templates/js/translated/part.js:517 templates/js/translated/part.js:749
msgid "IPN"
msgstr ""
-#: part/models.py:700
+#: part/models.py:702
msgid "Internal Part Number"
msgstr ""
-#: part/models.py:706
+#: part/models.py:708
msgid "Part revision or version number"
msgstr ""
-#: part/models.py:707 part/templates/part/part_base.html:244
-#: report/models.py:200 templates/js/translated/part.js:393
+#: part/models.py:709 part/templates/part/part_base.html:252
+#: report/models.py:200 templates/js/translated/part.js:521
msgid "Revision"
msgstr ""
-#: part/models.py:729
+#: part/models.py:731
msgid "Where is this item normally stored?"
msgstr ""
-#: part/models.py:776 part/templates/part/part_base.html:289
+#: part/models.py:778 part/templates/part/part_base.html:297
msgid "Default Supplier"
msgstr ""
-#: part/models.py:777
+#: part/models.py:779
msgid "Default supplier part"
msgstr ""
-#: part/models.py:784
+#: part/models.py:786
msgid "Default Expiry"
msgstr ""
-#: part/models.py:785
+#: part/models.py:787
msgid "Expiry time (in days) for stock items of this part"
msgstr ""
-#: part/models.py:790
+#: part/models.py:792
msgid "Minimum Stock"
msgstr ""
-#: part/models.py:791
+#: part/models.py:793
msgid "Minimum allowed stock level"
msgstr ""
-#: part/models.py:798
+#: part/models.py:800
msgid "Stock keeping units for this part"
msgstr ""
-#: part/models.py:804
+#: part/models.py:806
msgid "Can this part be built from other parts?"
msgstr ""
-#: part/models.py:810
+#: part/models.py:812
msgid "Can this part be used to build other parts?"
msgstr ""
-#: part/models.py:816
+#: part/models.py:818
msgid "Does this part have tracking for unique items?"
msgstr ""
-#: part/models.py:821
+#: part/models.py:823
msgid "Can this part be purchased from external suppliers?"
msgstr ""
-#: part/models.py:826
+#: part/models.py:828
msgid "Can this part be sold to customers?"
msgstr ""
-#: part/models.py:830 templates/js/translated/table_filters.js:21
-#: templates/js/translated/table_filters.js:69
-#: templates/js/translated/table_filters.js:255
-#: templates/js/translated/table_filters.js:324
+#: part/models.py:832 templates/js/translated/table_filters.js:34
+#: templates/js/translated/table_filters.js:82
+#: templates/js/translated/table_filters.js:268
+#: templates/js/translated/table_filters.js:337
msgid "Active"
msgstr ""
-#: part/models.py:831
+#: part/models.py:833
msgid "Is this part active?"
msgstr ""
-#: part/models.py:836
+#: part/models.py:838
msgid "Is this a virtual part, such as a software product or license?"
msgstr ""
-#: part/models.py:841
+#: part/models.py:843
msgid "Part notes - supports Markdown formatting"
msgstr ""
-#: part/models.py:844
+#: part/models.py:846
msgid "BOM checksum"
msgstr ""
-#: part/models.py:844
+#: part/models.py:846
msgid "Stored BOM checksum"
msgstr ""
-#: part/models.py:847
+#: part/models.py:849
msgid "BOM checked by"
msgstr ""
-#: part/models.py:849
+#: part/models.py:851
msgid "BOM checked date"
msgstr ""
-#: part/models.py:853
+#: part/models.py:855
msgid "Creation User"
msgstr ""
-#: part/models.py:1592
+#: part/models.py:1601
msgid "Sell multiple"
msgstr ""
-#: part/models.py:2080
+#: part/models.py:2096
msgid "Test templates can only be created for trackable parts"
msgstr ""
-#: part/models.py:2097
+#: part/models.py:2113
msgid "Test with this name already exists for this part"
msgstr ""
-#: part/models.py:2117 templates/js/translated/part.js:1038
-#: templates/js/translated/stock.js:485
+#: part/models.py:2133 templates/js/translated/part.js:1205
+#: templates/js/translated/stock.js:556
msgid "Test Name"
msgstr ""
-#: part/models.py:2118
+#: part/models.py:2134
msgid "Enter a name for the test"
msgstr ""
-#: part/models.py:2123
+#: part/models.py:2139
msgid "Test Description"
msgstr ""
-#: part/models.py:2124
+#: part/models.py:2140
msgid "Enter description for this test"
msgstr ""
-#: part/models.py:2129 templates/js/translated/part.js:1047
-#: templates/js/translated/table_filters.js:241
+#: part/models.py:2145 templates/js/translated/part.js:1214
+#: templates/js/translated/table_filters.js:254
msgid "Required"
msgstr ""
-#: part/models.py:2130
+#: part/models.py:2146
msgid "Is this test required to pass?"
msgstr ""
-#: part/models.py:2135 templates/js/translated/part.js:1055
+#: part/models.py:2151 templates/js/translated/part.js:1222
msgid "Requires Value"
msgstr ""
-#: part/models.py:2136
+#: part/models.py:2152
msgid "Does this test require a value when adding a test result?"
msgstr ""
-#: part/models.py:2141 templates/js/translated/part.js:1062
+#: part/models.py:2157 templates/js/translated/part.js:1229
msgid "Requires Attachment"
msgstr ""
-#: part/models.py:2142
+#: part/models.py:2158
msgid "Does this test require a file attachment when adding a test result?"
msgstr ""
-#: part/models.py:2153
+#: part/models.py:2169
#, python-brace-format
msgid "Illegal character in template name ({c})"
msgstr ""
-#: part/models.py:2189
+#: part/models.py:2205
msgid "Parameter template name must be unique"
msgstr ""
-#: part/models.py:2197
+#: part/models.py:2213
msgid "Parameter Name"
msgstr ""
-#: part/models.py:2204
+#: part/models.py:2220
msgid "Parameter Units"
msgstr ""
-#: part/models.py:2236 part/models.py:2285 part/models.py:2286
+#: part/models.py:2252 part/models.py:2301 part/models.py:2302
#: templates/InvenTree/settings/settings.html:162
msgid "Parameter Template"
msgstr ""
-#: part/models.py:2238
+#: part/models.py:2254
msgid "Data"
msgstr ""
-#: part/models.py:2238
+#: part/models.py:2254
msgid "Parameter Value"
msgstr ""
-#: part/models.py:2290 templates/InvenTree/settings/settings.html:171
+#: part/models.py:2306 templates/InvenTree/settings/settings.html:171
msgid "Default Value"
msgstr ""
-#: part/models.py:2291
+#: part/models.py:2307
msgid "Default Parameter Value"
msgstr ""
-#: part/models.py:2325
+#: part/models.py:2341
msgid "Select parent part"
msgstr ""
-#: part/models.py:2333
+#: part/models.py:2349
msgid "Sub part"
msgstr ""
-#: part/models.py:2334
+#: part/models.py:2350
msgid "Select part to be used in BOM"
msgstr ""
-#: part/models.py:2340
+#: part/models.py:2356
msgid "BOM quantity for this BOM item"
msgstr ""
-#: part/models.py:2342 templates/js/translated/bom.js:236
-#: templates/js/translated/bom.js:298
+#: part/models.py:2358 templates/js/translated/bom.js:256
+#: templates/js/translated/bom.js:314
msgid "Optional"
msgstr ""
-#: part/models.py:2342
+#: part/models.py:2358
msgid "This BOM item is optional"
msgstr ""
-#: part/models.py:2345
+#: part/models.py:2361
msgid "Overage"
msgstr ""
-#: part/models.py:2346
+#: part/models.py:2362
msgid "Estimated build wastage quantity (absolute or percentage)"
msgstr ""
-#: part/models.py:2349
+#: part/models.py:2365
msgid "BOM item reference"
msgstr ""
-#: part/models.py:2352
+#: part/models.py:2368
msgid "BOM item notes"
msgstr ""
-#: part/models.py:2354
+#: part/models.py:2370
msgid "Checksum"
msgstr ""
-#: part/models.py:2354
+#: part/models.py:2370
msgid "BOM line checksum"
msgstr ""
-#: part/models.py:2358 templates/js/translated/bom.js:315
-#: templates/js/translated/bom.js:322
-#: templates/js/translated/table_filters.js:55
+#: part/models.py:2374 templates/js/translated/bom.js:331
+#: templates/js/translated/bom.js:338
+#: templates/js/translated/table_filters.js:68
msgid "Inherited"
msgstr ""
-#: part/models.py:2359
+#: part/models.py:2375
msgid "This BOM item is inherited by BOMs for variant parts"
msgstr ""
-#: part/models.py:2364 templates/js/translated/bom.js:307
+#: part/models.py:2380 templates/js/translated/bom.js:323
msgid "Allow Variants"
msgstr ""
-#: part/models.py:2365
+#: part/models.py:2381
msgid "Stock items for variant parts can be used for this BOM item"
msgstr ""
-#: part/models.py:2450 stock/models.py:335
+#: part/models.py:2466 stock/models.py:341
msgid "Quantity must be integer value for trackable parts"
msgstr ""
-#: part/models.py:2459 part/models.py:2461
+#: part/models.py:2475 part/models.py:2477
msgid "Sub part must be specified"
msgstr ""
-#: part/models.py:2464
+#: part/models.py:2480
msgid "BOM Item"
msgstr ""
-#: part/models.py:2583
+#: part/models.py:2599
msgid "Part 1"
msgstr ""
-#: part/models.py:2587
+#: part/models.py:2603
msgid "Part 2"
msgstr ""
-#: part/models.py:2587
+#: part/models.py:2603
msgid "Select Related Part"
msgstr ""
-#: part/models.py:2619
+#: part/models.py:2635
msgid "Error creating relationship: check that the part is not related to itself and that the relationship is unique"
msgstr ""
@@ -4317,17 +4437,17 @@ msgstr ""
#: part/templates/part/bom.html:14
#, python-format
-msgid "The BOM for %(part)s has changed, and must be validated.
"
+msgid "The BOM for %(part)s has changed, and must be validated.
"
msgstr ""
#: part/templates/part/bom.html:16
#, python-format
-msgid "The BOM for %(part)s was last checked by %(checker)s on %(check_date)s"
+msgid "The BOM for %(part)s was last checked by %(checker)s on %(check_date)s"
msgstr ""
#: part/templates/part/bom.html:20
#, python-format
-msgid "The BOM for %(part)s has not been validated."
+msgid "The BOM for %(part)s has not been validated."
msgstr ""
#: part/templates/part/bom.html:27
@@ -4374,33 +4494,34 @@ msgstr ""
msgid "Select Part"
msgstr ""
-#: part/templates/part/bom_upload/upload_file.html:7
-msgid "Upload BOM File"
+#: part/templates/part/bom_upload/upload_file.html:13
+#: part/templates/part/bom_upload/upload_file.html:16
+msgid "Return To BOM"
msgstr ""
-#: part/templates/part/bom_upload/upload_file.html:12
+#: part/templates/part/bom_upload/upload_file.html:27
msgid "Upload Bill of Materials"
msgstr ""
-#: part/templates/part/bom_upload/upload_file.html:16
+#: part/templates/part/bom_upload/upload_file.html:46
msgid "Requirements for BOM upload"
msgstr ""
-#: part/templates/part/bom_upload/upload_file.html:18
+#: part/templates/part/bom_upload/upload_file.html:48
msgid "The BOM file must contain the required named columns as provided in the "
msgstr ""
-#: part/templates/part/bom_upload/upload_file.html:18
+#: part/templates/part/bom_upload/upload_file.html:48
msgid "BOM Upload Template"
msgstr ""
-#: part/templates/part/bom_upload/upload_file.html:19
+#: part/templates/part/bom_upload/upload_file.html:49
msgid "Each part must already exist in the database"
msgstr ""
#: part/templates/part/bom_validate.html:6
#, python-format
-msgid "Confirm that the Bill of Materials (BOM) is valid for:
%(part)s"
+msgid "Confirm that the Bill of Materials (BOM) is valid for:
%(part)s"
msgstr ""
#: part/templates/part/bom_validate.html:9
@@ -4435,7 +4556,7 @@ msgstr ""
msgid "Category Description"
msgstr ""
-#: part/templates/part/category.html:88 part/templates/part/category.html:174
+#: part/templates/part/category.html:88 part/templates/part/category.html:175
#: part/templates/part/category_navbar.html:14
#: part/templates/part/category_navbar.html:17
msgid "Subcategories"
@@ -4449,7 +4570,7 @@ msgstr ""
msgid "Export Part Data"
msgstr ""
-#: part/templates/part/category.html:127 part/templates/part/category.html:141
+#: part/templates/part/category.html:127 part/templates/part/category.html:142
msgid "Export"
msgstr ""
@@ -4470,26 +4591,30 @@ msgid "Set Category"
msgstr ""
#: part/templates/part/category.html:141
+msgid "Print Labels"
+msgstr ""
+
+#: part/templates/part/category.html:142
msgid "Export Data"
msgstr ""
-#: part/templates/part/category.html:145
+#: part/templates/part/category.html:146
msgid "View list display"
msgstr ""
-#: part/templates/part/category.html:148
+#: part/templates/part/category.html:149
msgid "View grid display"
msgstr ""
-#: part/templates/part/category.html:164
+#: part/templates/part/category.html:165
msgid "Part Parameters"
msgstr ""
-#: part/templates/part/category.html:253
+#: part/templates/part/category.html:254
msgid "Create Part Category"
msgstr ""
-#: part/templates/part/category.html:279
+#: part/templates/part/category.html:281
msgid "Create Part"
msgstr ""
@@ -4533,7 +4658,7 @@ msgstr ""
msgid "Import Parts"
msgstr ""
-#: part/templates/part/copy_part.html:9 templates/js/translated/part.js:224
+#: part/templates/part/copy_part.html:9 templates/js/translated/part.js:352
msgid "Duplicate Part"
msgstr ""
@@ -4554,7 +4679,7 @@ msgstr ""
#: part/templates/part/create_part.html:17
#, python-format
-msgid "%(full_name)s - %(desc)s (%(match_per)s%% match)"
+msgid "%(full_name)s - %(desc)s (%(match_per)s%% match)"
msgstr ""
#: part/templates/part/detail.html:16
@@ -4563,10 +4688,10 @@ msgstr ""
#: part/templates/part/detail.html:21
#, python-format
-msgid "Showing stock for all variants of %(full_name)s"
+msgid "Showing stock for all variants of %(full_name)s"
msgstr ""
-#: part/templates/part/detail.html:30 part/templates/part/navbar.html:87
+#: part/templates/part/detail.html:30 part/templates/part/navbar.html:99
msgid "Part Test Templates"
msgstr ""
@@ -4586,7 +4711,7 @@ msgstr ""
msgid "Sales Order Allocations"
msgstr ""
-#: part/templates/part/detail.html:130 part/templates/part/navbar.html:21
+#: part/templates/part/detail.html:130 part/templates/part/navbar.html:27
msgid "Part Variants"
msgstr ""
@@ -4602,8 +4727,8 @@ msgstr ""
msgid "Add new parameter"
msgstr ""
-#: part/templates/part/detail.html:182 part/templates/part/navbar.html:95
-#: part/templates/part/navbar.html:98
+#: part/templates/part/detail.html:182 part/templates/part/navbar.html:107
+#: part/templates/part/navbar.html:110
msgid "Related Parts"
msgstr ""
@@ -4611,8 +4736,8 @@ msgstr ""
msgid "Add Related"
msgstr ""
-#: part/templates/part/detail.html:228 part/templates/part/navbar.html:35
-#: part/templates/part/navbar.html:38
+#: part/templates/part/detail.html:228 part/templates/part/navbar.html:43
+#: part/templates/part/navbar.html:46
msgid "Bill of Materials"
msgstr ""
@@ -4644,50 +4769,50 @@ msgstr ""
msgid "Delete manufacturer parts"
msgstr ""
-#: part/templates/part/detail.html:402
+#: part/templates/part/detail.html:502
msgid "Delete selected BOM items?"
msgstr ""
-#: part/templates/part/detail.html:403
+#: part/templates/part/detail.html:503
msgid "All selected BOM items will be deleted"
msgstr ""
-#: part/templates/part/detail.html:454
+#: part/templates/part/detail.html:554
msgid "Create BOM Item"
msgstr ""
-#: part/templates/part/detail.html:589
+#: part/templates/part/detail.html:699
msgid "Add Test Result Template"
msgstr ""
-#: part/templates/part/detail.html:607
+#: part/templates/part/detail.html:716
msgid "Edit Test Result Template"
msgstr ""
-#: part/templates/part/detail.html:619
+#: part/templates/part/detail.html:728
msgid "Delete Test Result Template"
msgstr ""
-#: part/templates/part/detail.html:670
+#: part/templates/part/detail.html:784
msgid "Edit Part Notes"
msgstr ""
-#: part/templates/part/detail.html:903
+#: part/templates/part/detail.html:936
#, python-format
msgid "Purchase Unit Price - %(currency)s"
msgstr ""
-#: part/templates/part/detail.html:915
+#: part/templates/part/detail.html:948
#, python-format
msgid "Unit Price-Cost Difference - %(currency)s"
msgstr ""
-#: part/templates/part/detail.html:927
+#: part/templates/part/detail.html:960
#, python-format
msgid "Supplier Unit Cost - %(currency)s"
msgstr ""
-#: part/templates/part/detail.html:1016
+#: part/templates/part/detail.html:1049
#, python-format
msgid "Unit Price - %(currency)s"
msgstr ""
@@ -4701,19 +4826,19 @@ msgstr ""
msgid "Import Parts from File"
msgstr ""
-#: part/templates/part/navbar.html:24
+#: part/templates/part/navbar.html:30
msgid "Variants"
msgstr ""
-#: part/templates/part/navbar.html:51 part/templates/part/navbar.html:54
+#: part/templates/part/navbar.html:59 part/templates/part/navbar.html:62
msgid "Used In"
msgstr ""
-#: part/templates/part/navbar.html:61
+#: part/templates/part/navbar.html:70
msgid "Prices"
msgstr ""
-#: part/templates/part/navbar.html:90
+#: part/templates/part/navbar.html:102
msgid "Test Templates"
msgstr ""
@@ -4721,195 +4846,204 @@ msgstr ""
msgid "Part List"
msgstr ""
-#: part/templates/part/part_base.html:30
+#: part/templates/part/part_base.html:35
msgid "Part is a template part (variants can be made from this part)"
msgstr ""
-#: part/templates/part/part_base.html:33
+#: part/templates/part/part_base.html:38
msgid "Part can be assembled from other parts"
msgstr ""
-#: part/templates/part/part_base.html:36
+#: part/templates/part/part_base.html:41
msgid "Part can be used in assemblies"
msgstr ""
-#: part/templates/part/part_base.html:39
+#: part/templates/part/part_base.html:44
msgid "Part stock is tracked by serial number"
msgstr ""
-#: part/templates/part/part_base.html:42
+#: part/templates/part/part_base.html:47
msgid "Part can be purchased from external suppliers"
msgstr ""
-#: part/templates/part/part_base.html:45
+#: part/templates/part/part_base.html:50
msgid "Part can be sold to customers"
msgstr ""
-#: part/templates/part/part_base.html:52 part/templates/part/part_base.html:60
+#: part/templates/part/part_base.html:57 part/templates/part/part_base.html:65
msgid "Part is virtual (not a physical part)"
msgstr ""
-#: part/templates/part/part_base.html:53 templates/js/translated/company.js:454
-#: templates/js/translated/company.js:704 templates/js/translated/part.js:304
-#: templates/js/translated/part.js:381
+#: part/templates/part/part_base.html:58 templates/js/translated/company.js:503
+#: templates/js/translated/company.js:759 templates/js/translated/part.js:432
+#: templates/js/translated/part.js:509
msgid "Inactive"
msgstr ""
-#: part/templates/part/part_base.html:68
+#: part/templates/part/part_base.html:73
msgid "Star this part"
msgstr ""
-#: part/templates/part/part_base.html:75
+#: part/templates/part/part_base.html:80
#: stock/templates/stock/item_base.html:75
#: stock/templates/stock/location.html:51
msgid "Barcode actions"
msgstr ""
-#: part/templates/part/part_base.html:77
+#: part/templates/part/part_base.html:82
#: stock/templates/stock/item_base.html:77
#: stock/templates/stock/location.html:53 templates/qr_button.html:1
msgid "Show QR Code"
msgstr ""
-#: part/templates/part/part_base.html:78
+#: part/templates/part/part_base.html:83
#: stock/templates/stock/item_base.html:93
#: stock/templates/stock/location.html:54
msgid "Print Label"
msgstr ""
-#: part/templates/part/part_base.html:83
+#: part/templates/part/part_base.html:89
msgid "Show pricing information"
msgstr ""
-#: part/templates/part/part_base.html:88
+#: part/templates/part/part_base.html:95
#: stock/templates/stock/item_base.html:142
#: stock/templates/stock/location.html:62
msgid "Stock actions"
msgstr ""
-#: part/templates/part/part_base.html:95
+#: part/templates/part/part_base.html:102
msgid "Count part stock"
msgstr ""
-#: part/templates/part/part_base.html:101
+#: part/templates/part/part_base.html:108
msgid "Transfer part stock"
msgstr ""
-#: part/templates/part/part_base.html:118
+#: part/templates/part/part_base.html:125
msgid "Part actions"
msgstr ""
-#: part/templates/part/part_base.html:121
+#: part/templates/part/part_base.html:128
msgid "Duplicate part"
msgstr ""
-#: part/templates/part/part_base.html:124
+#: part/templates/part/part_base.html:131
msgid "Edit part"
msgstr ""
-#: part/templates/part/part_base.html:127
+#: part/templates/part/part_base.html:134
msgid "Delete part"
msgstr ""
-#: part/templates/part/part_base.html:139
+#: part/templates/part/part_base.html:146
#, python-format
msgid "This part is a variant of %(link)s"
msgstr ""
-#: part/templates/part/part_base.html:154
-#: templates/js/translated/table_filters.js:153
+#: part/templates/part/part_base.html:161
+#: templates/js/translated/table_filters.js:166
msgid "In Stock"
msgstr ""
-#: part/templates/part/part_base.html:167 templates/InvenTree/index.html:186
+#: part/templates/part/part_base.html:174 templates/InvenTree/index.html:186
msgid "Required for Build Orders"
msgstr ""
-#: part/templates/part/part_base.html:174
+#: part/templates/part/part_base.html:181
msgid "Required for Sales Orders"
msgstr ""
-#: part/templates/part/part_base.html:181
+#: part/templates/part/part_base.html:188
msgid "Allocated to Orders"
msgstr ""
-#: part/templates/part/part_base.html:196 templates/js/translated/bom.js:336
+#: part/templates/part/part_base.html:203 templates/js/translated/bom.js:352
msgid "Can Build"
msgstr ""
-#: part/templates/part/part_base.html:202 templates/js/translated/part.js:633
-#: templates/js/translated/part.js:806
+#: part/templates/part/part_base.html:209 templates/js/translated/part.js:765
+#: templates/js/translated/part.js:953
msgid "Building"
msgstr ""
-#: part/templates/part/part_base.html:275
+#: part/templates/part/part_base.html:223
+#: part/templates/part/part_base.html:524
+#: part/templates/part/part_base.html:550
+msgid "Show Part Details"
+msgstr ""
+
+#: part/templates/part/part_base.html:283
msgid "Latest Serial Number"
msgstr ""
-#: part/templates/part/part_base.html:383 part/templates/part/prices.html:125
+#: part/templates/part/part_base.html:396 part/templates/part/prices.html:144
msgid "Calculate"
msgstr ""
-#: part/templates/part/part_base.html:426
+#: part/templates/part/part_base.html:439
msgid "No matching images found"
msgstr ""
-#: part/templates/part/part_base.html:506
-#: part/templates/part/part_base.html:531
+#: part/templates/part/part_base.html:519
+#: part/templates/part/part_base.html:544
msgid "Hide Part Details"
msgstr ""
-#: part/templates/part/part_base.html:511
-#: part/templates/part/part_base.html:537
-msgid "Show Part Details"
-msgstr ""
-
#: part/templates/part/part_pricing.html:22 part/templates/part/prices.html:21
msgid "Supplier Pricing"
msgstr ""
#: part/templates/part/part_pricing.html:26
#: part/templates/part/part_pricing.html:52
-#: part/templates/part/part_pricing.html:85
-#: part/templates/part/part_pricing.html:100 part/templates/part/prices.html:25
-#: part/templates/part/prices.html:52 part/templates/part/prices.html:84
-#: part/templates/part/prices.html:101
+#: part/templates/part/part_pricing.html:100
+#: part/templates/part/part_pricing.html:115 part/templates/part/prices.html:25
+#: part/templates/part/prices.html:52 part/templates/part/prices.html:103
+#: part/templates/part/prices.html:120
msgid "Unit Cost"
msgstr ""
#: part/templates/part/part_pricing.html:32
#: part/templates/part/part_pricing.html:58
-#: part/templates/part/part_pricing.html:89
-#: part/templates/part/part_pricing.html:104 part/templates/part/prices.html:32
-#: part/templates/part/prices.html:59 part/templates/part/prices.html:89
-#: part/templates/part/prices.html:106
+#: part/templates/part/part_pricing.html:104
+#: part/templates/part/part_pricing.html:119 part/templates/part/prices.html:32
+#: part/templates/part/prices.html:59 part/templates/part/prices.html:108
+#: part/templates/part/prices.html:125
msgid "Total Cost"
msgstr ""
#: part/templates/part/part_pricing.html:40 part/templates/part/prices.html:40
-#: templates/js/translated/bom.js:291
+#: templates/js/translated/bom.js:307
msgid "No supplier pricing available"
msgstr ""
#: part/templates/part/part_pricing.html:48 part/templates/part/prices.html:49
-#: part/templates/part/prices.html:225
+#: part/templates/part/prices.html:243
msgid "BOM Pricing"
msgstr ""
-#: part/templates/part/part_pricing.html:66 part/templates/part/prices.html:67
+#: part/templates/part/part_pricing.html:65 part/templates/part/prices.html:69
+msgid "Unit Purchase Price"
+msgstr ""
+
+#: part/templates/part/part_pricing.html:71 part/templates/part/prices.html:76
+msgid "Total Purchase Price"
+msgstr ""
+
+#: part/templates/part/part_pricing.html:81 part/templates/part/prices.html:86
msgid "Note: BOM pricing is incomplete for this part"
msgstr ""
-#: part/templates/part/part_pricing.html:73 part/templates/part/prices.html:74
+#: part/templates/part/part_pricing.html:88 part/templates/part/prices.html:93
msgid "No BOM pricing available"
msgstr ""
-#: part/templates/part/part_pricing.html:82 part/templates/part/prices.html:83
+#: part/templates/part/part_pricing.html:97 part/templates/part/prices.html:102
msgid "Internal Price"
msgstr ""
-#: part/templates/part/part_pricing.html:113
-#: part/templates/part/prices.html:115
+#: part/templates/part/part_pricing.html:128
+#: part/templates/part/prices.html:134
msgid "No pricing information is available for this part."
msgstr ""
@@ -4919,7 +5053,7 @@ msgstr ""
#: part/templates/part/partial_delete.html:7
#, python-format
-msgid "Are you sure you want to delete part '%(full_name)s'?"
+msgid "Are you sure you want to delete part '%(full_name)s'?"
msgstr ""
#: part/templates/part/partial_delete.html:12
@@ -4963,53 +5097,53 @@ msgstr ""
msgid "Show BOM cost"
msgstr ""
-#: part/templates/part/prices.html:98
+#: part/templates/part/prices.html:117
msgid "Show sale cost"
msgstr ""
-#: part/templates/part/prices.html:99
+#: part/templates/part/prices.html:118
msgid "Show sale price"
msgstr ""
-#: part/templates/part/prices.html:121
+#: part/templates/part/prices.html:140
msgid "Calculation parameters"
msgstr ""
-#: part/templates/part/prices.html:136 templates/js/translated/bom.js:285
+#: part/templates/part/prices.html:155 templates/js/translated/bom.js:301
msgid "Supplier Cost"
msgstr ""
-#: part/templates/part/prices.html:137 part/templates/part/prices.html:158
-#: part/templates/part/prices.html:183 part/templates/part/prices.html:213
-#: part/templates/part/prices.html:239 part/templates/part/prices.html:267
+#: part/templates/part/prices.html:156 part/templates/part/prices.html:177
+#: part/templates/part/prices.html:201 part/templates/part/prices.html:231
+#: part/templates/part/prices.html:257 part/templates/part/prices.html:285
msgid "Jump to overview"
msgstr ""
-#: part/templates/part/prices.html:162
+#: part/templates/part/prices.html:181
msgid "Stock Pricing"
msgstr ""
-#: part/templates/part/prices.html:172
+#: part/templates/part/prices.html:190
msgid "No stock pricing history is available for this part."
msgstr ""
-#: part/templates/part/prices.html:182
+#: part/templates/part/prices.html:200
msgid "Internal Cost"
msgstr ""
-#: part/templates/part/prices.html:197 part/views.py:1793
+#: part/templates/part/prices.html:215 part/views.py:1801
msgid "Add Internal Price Break"
msgstr ""
-#: part/templates/part/prices.html:212
+#: part/templates/part/prices.html:230
msgid "BOM Cost"
msgstr ""
-#: part/templates/part/prices.html:238
+#: part/templates/part/prices.html:256
msgid "Sale Cost"
msgstr ""
-#: part/templates/part/prices.html:278
+#: part/templates/part/prices.html:296
msgid "No sale pice history available for this part."
msgstr ""
@@ -5017,8 +5151,8 @@ msgstr ""
msgid "Set category for the following parts"
msgstr ""
-#: part/templates/part/stock_count.html:7 templates/js/translated/bom.js:259
-#: templates/js/translated/part.js:623 templates/js/translated/part.js:810
+#: part/templates/part/stock_count.html:7 templates/js/translated/bom.js:278
+#: templates/js/translated/part.js:755 templates/js/translated/part.js:957
msgid "No Stock"
msgstr ""
@@ -5032,10 +5166,10 @@ msgstr ""
#: part/templates/part/variant_part.html:10
#, python-format
-msgid "Create a new variant of template '%(full_name)s'."
+msgid "Create a new variant of template '%(full_name)s'."
msgstr ""
-#: part/templatetags/inventree_extras.py:105
+#: part/templatetags/inventree_extras.py:106
msgid "Unknown database"
msgstr ""
@@ -5116,51 +5250,51 @@ msgstr ""
msgid "Part Pricing"
msgstr ""
-#: part/views.py:1429
+#: part/views.py:1437
msgid "Create Part Parameter Template"
msgstr ""
-#: part/views.py:1439
+#: part/views.py:1447
msgid "Edit Part Parameter Template"
msgstr ""
-#: part/views.py:1446
+#: part/views.py:1454
msgid "Delete Part Parameter Template"
msgstr ""
-#: part/views.py:1494 templates/js/translated/part.js:179
+#: part/views.py:1502 templates/js/translated/part.js:303
msgid "Edit Part Category"
msgstr ""
-#: part/views.py:1532
+#: part/views.py:1540
msgid "Delete Part Category"
msgstr ""
-#: part/views.py:1538
+#: part/views.py:1546
msgid "Part category was deleted"
msgstr ""
-#: part/views.py:1547
+#: part/views.py:1555
msgid "Create Category Parameter Template"
msgstr ""
-#: part/views.py:1648
+#: part/views.py:1656
msgid "Edit Category Parameter Template"
msgstr ""
-#: part/views.py:1704
+#: part/views.py:1712
msgid "Delete Category Parameter Template"
msgstr ""
-#: part/views.py:1726
+#: part/views.py:1734
msgid "Added new price break"
msgstr ""
-#: part/views.py:1802
+#: part/views.py:1810
msgid "Edit Internal Price Break"
msgstr ""
-#: part/views.py:1810
+#: part/views.py:1818
msgid "Delete Internal Price Break"
msgstr ""
@@ -5266,17 +5400,17 @@ msgid "Test Results"
msgstr ""
#: report/templates/report/inventree_test_report_base.html:88
-#: stock/models.py:1796
+#: stock/models.py:1807
msgid "Test"
msgstr ""
#: report/templates/report/inventree_test_report_base.html:89
-#: stock/models.py:1802
+#: stock/models.py:1813
msgid "Result"
msgstr ""
#: report/templates/report/inventree_test_report_base.html:92
-#: templates/js/translated/order.js:279 templates/js/translated/stock.js:1382
+#: templates/js/translated/order.js:353 templates/js/translated/stock.js:1523
msgid "Date"
msgstr ""
@@ -5288,51 +5422,51 @@ msgstr ""
msgid "Fail"
msgstr ""
-#: stock/api.py:145
+#: stock/api.py:146
msgid "Request must contain list of stock items"
msgstr ""
-#: stock/api.py:153
+#: stock/api.py:154
msgid "Improperly formatted data"
msgstr ""
-#: stock/api.py:161
+#: stock/api.py:162
msgid "Each entry must contain a valid integer primary-key"
msgstr ""
-#: stock/api.py:167
+#: stock/api.py:168
msgid "Primary key does not match valid stock item"
msgstr ""
-#: stock/api.py:177
+#: stock/api.py:178
msgid "Invalid quantity value"
msgstr ""
-#: stock/api.py:182
+#: stock/api.py:183
msgid "Quantity must not be less than zero"
msgstr ""
-#: stock/api.py:210
+#: stock/api.py:211
#, python-brace-format
msgid "Updated stock for {n} items"
msgstr ""
-#: stock/api.py:246 stock/api.py:279
+#: stock/api.py:247 stock/api.py:280
msgid "Specified quantity exceeds stock quantity"
msgstr ""
-#: stock/api.py:269
+#: stock/api.py:270
msgid "Valid location must be specified"
msgstr ""
-#: stock/api.py:289
+#: stock/api.py:290
#, python-brace-format
msgid "Moved {n} parts to {loc}"
msgstr ""
-#: stock/forms.py:79 stock/forms.py:307 stock/models.py:550
+#: stock/forms.py:79 stock/forms.py:307 stock/models.py:556
#: stock/templates/stock/item_base.html:395
-#: templates/js/translated/stock.js:1025
+#: templates/js/translated/stock.js:967
msgid "Expiry Date"
msgstr ""
@@ -5384,258 +5518,266 @@ msgstr ""
msgid "Confirm removal of installed stock items"
msgstr ""
-#: stock/models.py:57 stock/models.py:587
+#: stock/models.py:57 stock/models.py:593
msgid "Owner"
msgstr ""
-#: stock/models.py:58 stock/models.py:588
+#: stock/models.py:58 stock/models.py:594
msgid "Select Owner"
msgstr ""
-#: stock/models.py:316
+#: stock/models.py:322
msgid "StockItem with this serial number already exists"
msgstr ""
-#: stock/models.py:352
+#: stock/models.py:358
#, python-brace-format
msgid "Part type ('{pf}') must be {pe}"
msgstr ""
-#: stock/models.py:362 stock/models.py:371
+#: stock/models.py:368 stock/models.py:377
msgid "Quantity must be 1 for item with a serial number"
msgstr ""
-#: stock/models.py:363
+#: stock/models.py:369
msgid "Serial number cannot be set if quantity greater than 1"
msgstr ""
-#: stock/models.py:385
+#: stock/models.py:391
msgid "Item cannot belong to itself"
msgstr ""
-#: stock/models.py:391
+#: stock/models.py:397
msgid "Item must have a build reference if is_building=True"
msgstr ""
-#: stock/models.py:398
+#: stock/models.py:404
msgid "Build reference does not point to the same part object"
msgstr ""
-#: stock/models.py:440
+#: stock/models.py:446
msgid "Parent Stock Item"
msgstr ""
-#: stock/models.py:449
+#: stock/models.py:455
msgid "Base part"
msgstr ""
-#: stock/models.py:458
+#: stock/models.py:464
msgid "Select a matching supplier part for this stock item"
msgstr ""
-#: stock/models.py:463 stock/templates/stock/stock_app_base.html:8
+#: stock/models.py:469 stock/templates/stock/stock_app_base.html:8
msgid "Stock Location"
msgstr ""
-#: stock/models.py:466
+#: stock/models.py:472
msgid "Where is this stock item located?"
msgstr ""
-#: stock/models.py:473
+#: stock/models.py:479
msgid "Packaging this stock item is stored in"
msgstr ""
-#: stock/models.py:478 stock/templates/stock/item_base.html:284
+#: stock/models.py:484 stock/templates/stock/item_base.html:284
msgid "Installed In"
msgstr ""
-#: stock/models.py:481
+#: stock/models.py:487
msgid "Is this item installed in another item?"
msgstr ""
-#: stock/models.py:497
+#: stock/models.py:503
msgid "Serial number for this item"
msgstr ""
-#: stock/models.py:509
+#: stock/models.py:515
msgid "Batch code for this stock item"
msgstr ""
-#: stock/models.py:513
+#: stock/models.py:519
msgid "Stock Quantity"
msgstr ""
-#: stock/models.py:522
+#: stock/models.py:528
msgid "Source Build"
msgstr ""
-#: stock/models.py:524
+#: stock/models.py:530
msgid "Build for this stock item"
msgstr ""
-#: stock/models.py:535
+#: stock/models.py:541
msgid "Source Purchase Order"
msgstr ""
-#: stock/models.py:538
+#: stock/models.py:544
msgid "Purchase order for this stock item"
msgstr ""
-#: stock/models.py:544
+#: stock/models.py:550
msgid "Destination Sales Order"
msgstr ""
-#: stock/models.py:551
+#: stock/models.py:557
msgid "Expiry date for stock item. Stock will be considered expired after this date"
msgstr ""
-#: stock/models.py:564
+#: stock/models.py:570
msgid "Delete on deplete"
msgstr ""
-#: stock/models.py:564
+#: stock/models.py:570
msgid "Delete this Stock Item when stock is depleted"
msgstr ""
-#: stock/models.py:574 stock/templates/stock/item.html:98
+#: stock/models.py:580 stock/templates/stock/item.html:99
#: stock/templates/stock/navbar.html:54
msgid "Stock Item Notes"
msgstr ""
-#: stock/models.py:583
+#: stock/models.py:589
msgid "Single unit purchase price at time of purchase"
msgstr ""
-#: stock/models.py:1051
-msgid "Part is not set as trackable"
+#: stock/models.py:599
+msgid "Scheduled for deletion"
msgstr ""
-#: stock/models.py:1057
-msgid "Quantity must be integer"
+#: stock/models.py:600
+msgid "This StockItem will be deleted by the background worker"
msgstr ""
#: stock/models.py:1063
+msgid "Part is not set as trackable"
+msgstr ""
+
+#: stock/models.py:1069
+msgid "Quantity must be integer"
+msgstr ""
+
+#: stock/models.py:1075
#, python-brace-format
msgid "Quantity must not exceed available stock quantity ({n})"
msgstr ""
-#: stock/models.py:1066
+#: stock/models.py:1078
msgid "Serial numbers must be a list of integers"
msgstr ""
-#: stock/models.py:1069
+#: stock/models.py:1081
msgid "Quantity does not match serial numbers"
msgstr ""
-#: stock/models.py:1076
+#: stock/models.py:1088
#, python-brace-format
msgid "Serial numbers already exist: {exists}"
msgstr ""
-#: stock/models.py:1234
+#: stock/models.py:1246
msgid "StockItem cannot be moved as it is not in stock"
msgstr ""
-#: stock/models.py:1716
+#: stock/models.py:1727
msgid "Entry notes"
msgstr ""
-#: stock/models.py:1773
+#: stock/models.py:1784
msgid "Value must be provided for this test"
msgstr ""
-#: stock/models.py:1779
+#: stock/models.py:1790
msgid "Attachment must be uploaded for this test"
msgstr ""
-#: stock/models.py:1797
+#: stock/models.py:1808
msgid "Test name"
msgstr ""
-#: stock/models.py:1803 templates/js/translated/table_filters.js:231
+#: stock/models.py:1814 templates/js/translated/table_filters.js:244
msgid "Test result"
msgstr ""
-#: stock/models.py:1809
+#: stock/models.py:1820
msgid "Test output value"
msgstr ""
-#: stock/models.py:1816
+#: stock/models.py:1827
msgid "Test result attachment"
msgstr ""
-#: stock/models.py:1822
+#: stock/models.py:1833
msgid "Test notes"
msgstr ""
-#: stock/templates/stock/item.html:16
+#: stock/templates/stock/item.html:17
msgid "Stock Tracking Information"
msgstr ""
-#: stock/templates/stock/item.html:29
+#: stock/templates/stock/item.html:30
msgid "New Entry"
msgstr ""
-#: stock/templates/stock/item.html:42
+#: stock/templates/stock/item.html:43
msgid "Child Stock Items"
msgstr ""
-#: stock/templates/stock/item.html:49
+#: stock/templates/stock/item.html:50
msgid "This stock item does not have any child items"
msgstr ""
-#: stock/templates/stock/item.html:57 stock/templates/stock/navbar.html:19
+#: stock/templates/stock/item.html:58 stock/templates/stock/navbar.html:19
#: stock/templates/stock/navbar.html:22
msgid "Test Data"
msgstr ""
-#: stock/templates/stock/item.html:65
+#: stock/templates/stock/item.html:66
msgid "Delete Test Data"
msgstr ""
-#: stock/templates/stock/item.html:69
+#: stock/templates/stock/item.html:70
msgid "Add Test Data"
msgstr ""
-#: stock/templates/stock/item.html:72 stock/templates/stock/item_base.html:95
+#: stock/templates/stock/item.html:73 stock/templates/stock/item_base.html:95
msgid "Test Report"
msgstr ""
-#: stock/templates/stock/item.html:119 stock/templates/stock/navbar.html:27
+#: stock/templates/stock/item.html:120 stock/templates/stock/navbar.html:27
msgid "Installed Stock Items"
msgstr ""
-#: stock/templates/stock/item.html:124 stock/views.py:534
+#: stock/templates/stock/item.html:125 stock/views.py:534
msgid "Install Stock Item"
msgstr ""
-#: stock/templates/stock/item.html:299 stock/templates/stock/item.html:324
+#: stock/templates/stock/item.html:301 stock/templates/stock/item.html:326
msgid "Add Test Result"
msgstr ""
-#: stock/templates/stock/item.html:344
+#: stock/templates/stock/item.html:346
msgid "Edit Test Result"
msgstr ""
-#: stock/templates/stock/item.html:358
+#: stock/templates/stock/item.html:360
msgid "Delete Test Result"
msgstr ""
#: stock/templates/stock/item_base.html:33
#: stock/templates/stock/item_base.html:399
-#: templates/js/translated/table_filters.js:212
+#: templates/js/translated/table_filters.js:225
msgid "Expired"
msgstr ""
#: stock/templates/stock/item_base.html:43
#: stock/templates/stock/item_base.html:401
-#: templates/js/translated/table_filters.js:218
+#: templates/js/translated/table_filters.js:231
msgid "Stale"
msgstr ""
#: stock/templates/stock/item_base.html:80
-#: templates/js/translated/barcode.js:309
-#: templates/js/translated/barcode.js:314
+#: templates/js/translated/barcode.js:331
+#: templates/js/translated/barcode.js:336
msgid "Unlink Barcode"
msgstr ""
@@ -5768,7 +5910,7 @@ msgid "next page"
msgstr ""
#: stock/templates/stock/item_base.html:303
-#: templates/js/translated/build.js:628
+#: templates/js/translated/build.js:651
msgid "No location set"
msgstr ""
@@ -5795,7 +5937,7 @@ msgid "This StockItem expires on %(item.expiry_date)s"
msgstr ""
#: stock/templates/stock/item_base.html:408
-#: templates/js/translated/stock.js:1032
+#: templates/js/translated/stock.js:980
msgid "Last Updated"
msgstr ""
@@ -5825,7 +5967,7 @@ msgstr ""
#: stock/templates/stock/item_delete.html:12
#, python-format
-msgid "This will remove %(qty)s units of %(full_name)s from stock."
+msgid "This will remove %(qty)s units of %(full_name)s from stock."
msgstr ""
#: stock/templates/stock/item_install.html:8
@@ -5975,7 +6117,7 @@ msgstr ""
#: stock/templates/stock/stockitem_convert.html:8
#, python-format
-msgid "This stock item is current an instance of %(part)s"
+msgid "This stock item is current an instance of %(part)s"
msgstr ""
#: stock/templates/stock/stockitem_convert.html:9
@@ -6039,7 +6181,7 @@ msgstr ""
msgid "Uninstall Stock Items"
msgstr ""
-#: stock/views.py:780 templates/js/translated/stock.js:282
+#: stock/views.py:780 templates/js/translated/stock.js:353
msgid "Confirm stock adjustment"
msgstr ""
@@ -6059,7 +6201,7 @@ msgstr ""
msgid "Serialize Stock"
msgstr ""
-#: stock/views.py:1143 templates/js/translated/build.js:365
+#: stock/views.py:1143 templates/js/translated/build.js:392
msgid "Create new Stock Item"
msgstr ""
@@ -6171,11 +6313,11 @@ msgstr ""
msgid "Enter a search query"
msgstr ""
-#: templates/InvenTree/search.html:268 templates/js/translated/stock.js:629
+#: templates/InvenTree/search.html:268 templates/js/translated/stock.js:699
msgid "Shipped to customer"
msgstr ""
-#: templates/InvenTree/search.html:271 templates/js/translated/stock.js:639
+#: templates/InvenTree/search.html:271 templates/js/translated/stock.js:709
msgid "No stock location set"
msgstr ""
@@ -6240,7 +6382,7 @@ msgstr ""
#: templates/InvenTree/settings/navbar.html:27
#: templates/InvenTree/settings/navbar.html:29
-#: templates/js/translated/tables.js:351 templates/search_form.html:6
+#: templates/js/translated/tables.js:366 templates/search_form.html:6
#: templates/search_form.html:8
msgid "Search"
msgstr ""
@@ -6257,7 +6399,7 @@ msgstr ""
#: templates/InvenTree/settings/navbar.html:46
#: templates/InvenTree/settings/navbar.html:48
-#: templates/InvenTree/settings/settings.html:8 templates/navbar.html:84
+#: templates/InvenTree/settings/settings.html:8 templates/navbar.html:94
msgid "Settings"
msgstr ""
@@ -6332,16 +6474,16 @@ msgid "No category parameter templates found"
msgstr ""
#: templates/InvenTree/settings/settings.html:174
-#: templates/InvenTree/settings/settings.html:271
+#: templates/InvenTree/settings/settings.html:273
msgid "Edit Template"
msgstr ""
#: templates/InvenTree/settings/settings.html:175
-#: templates/InvenTree/settings/settings.html:272
+#: templates/InvenTree/settings/settings.html:274
msgid "Delete Template"
msgstr ""
-#: templates/InvenTree/settings/settings.html:251
+#: templates/InvenTree/settings/settings.html:253
msgid "No part parameter templates found"
msgstr ""
@@ -6358,6 +6500,7 @@ msgid "Account Settings"
msgstr ""
#: templates/InvenTree/settings/user.html:15
+#: templates/js/translated/helpers.js:26
msgid "Edit"
msgstr ""
@@ -6436,65 +6579,69 @@ msgstr ""
msgid "InvenTree Version"
msgstr ""
-#: templates/about.html:26
+#: templates/about.html:27
+msgid "Development Version"
+msgstr ""
+
+#: templates/about.html:30
msgid "Up to Date"
msgstr ""
-#: templates/about.html:28
+#: templates/about.html:32
msgid "Update Available"
msgstr ""
-#: templates/about.html:34
-msgid "API Version"
-msgstr ""
-
-#: templates/about.html:39
-msgid "Python Version"
-msgstr ""
-
-#: templates/about.html:44
-msgid "Django Version"
-msgstr ""
-
-#: templates/about.html:51
+#: templates/about.html:42
msgid "Commit Hash"
msgstr ""
-#: templates/about.html:58
+#: templates/about.html:49
msgid "Commit Date"
msgstr ""
-#: templates/about.html:63
+#: templates/about.html:55
msgid "InvenTree Documentation"
msgstr ""
-#: templates/about.html:68
+#: templates/about.html:60
+msgid "API Version"
+msgstr ""
+
+#: templates/about.html:65
+msgid "Python Version"
+msgstr ""
+
+#: templates/about.html:70
+msgid "Django Version"
+msgstr ""
+
+#: templates/about.html:75
msgid "View Code on GitHub"
msgstr ""
-#: templates/about.html:73
+#: templates/about.html:80
msgid "Credits"
msgstr ""
-#: templates/about.html:78
+#: templates/about.html:85
msgid "Mobile App"
msgstr ""
-#: templates/about.html:83
+#: templates/about.html:90
msgid "Submit Bug Report"
msgstr ""
-#: templates/about.html:90 templates/clip.html:4
+#: templates/about.html:97 templates/clip.html:4
msgid "copy to clipboard"
msgstr ""
-#: templates/about.html:90
+#: templates/about.html:97
msgid "copy version information"
msgstr ""
-#: templates/about.html:100 templates/js/translated/modals.js:33
-#: templates/js/translated/modals.js:567 templates/js/translated/modals.js:661
-#: templates/js/translated/modals.js:957 templates/modals.html:29
+#: templates/about.html:107 templates/js/translated/modals.js:50
+#: templates/js/translated/modals.js:584 templates/js/translated/modals.js:678
+#: templates/js/translated/modals.js:971 templates/modals.html:29
#: templates/modals.html:54
msgid "Close"
msgstr ""
@@ -6515,1358 +6662,1390 @@ msgstr ""
msgid "Remote image must not exceed maximum allowable file size"
msgstr ""
-#: templates/js/report.js:47 templates/js/translated/report.js:47
+#: templates/js/report.js:47 templates/js/translated/report.js:67
msgid "items selected"
msgstr ""
-#: templates/js/report.js:55 templates/js/translated/report.js:55
+#: templates/js/report.js:55 templates/js/translated/report.js:75
msgid "Select Report Template"
msgstr ""
-#: templates/js/report.js:70 templates/js/translated/report.js:70
+#: templates/js/report.js:70 templates/js/translated/report.js:90
msgid "Select Test Report Template"
msgstr ""
-#: templates/js/report.js:98 templates/js/translated/label.js:10
-#: templates/js/translated/report.js:98 templates/js/translated/stock.js:244
+#: templates/js/report.js:98 templates/js/translated/label.js:29
+#: templates/js/translated/report.js:118 templates/js/translated/stock.js:313
msgid "Select Stock Items"
msgstr ""
-#: templates/js/report.js:99 templates/js/translated/report.js:99
+#: templates/js/report.js:99 templates/js/translated/report.js:119
msgid "Stock item(s) must be selected before printing reports"
msgstr ""
#: templates/js/report.js:116 templates/js/report.js:169
#: templates/js/report.js:223 templates/js/report.js:277
-#: templates/js/report.js:331 templates/js/translated/report.js:116
-#: templates/js/translated/report.js:169 templates/js/translated/report.js:223
-#: templates/js/translated/report.js:277 templates/js/translated/report.js:331
+#: templates/js/report.js:331 templates/js/translated/report.js:136
+#: templates/js/translated/report.js:189 templates/js/translated/report.js:243
+#: templates/js/translated/report.js:297 templates/js/translated/report.js:351
msgid "No Reports Found"
msgstr ""
-#: templates/js/report.js:117 templates/js/translated/report.js:117
+#: templates/js/report.js:117 templates/js/translated/report.js:137
msgid "No report templates found which match selected stock item(s)"
msgstr ""
-#: templates/js/report.js:152 templates/js/translated/report.js:152
+#: templates/js/report.js:152 templates/js/translated/report.js:172
msgid "Select Builds"
msgstr ""
-#: templates/js/report.js:153 templates/js/translated/report.js:153
+#: templates/js/report.js:153 templates/js/translated/report.js:173
msgid "Build(s) must be selected before printing reports"
msgstr ""
-#: templates/js/report.js:170 templates/js/translated/report.js:170
+#: templates/js/report.js:170 templates/js/translated/report.js:190
msgid "No report templates found which match selected build(s)"
msgstr ""
-#: templates/js/report.js:205 templates/js/translated/label.js:115
-#: templates/js/translated/report.js:205
+#: templates/js/report.js:205 templates/js/translated/label.js:134
+#: templates/js/translated/report.js:225
msgid "Select Parts"
msgstr ""
-#: templates/js/report.js:206 templates/js/translated/report.js:206
+#: templates/js/report.js:206 templates/js/translated/report.js:226
msgid "Part(s) must be selected before printing reports"
msgstr ""
-#: templates/js/report.js:224 templates/js/translated/report.js:224
+#: templates/js/report.js:224 templates/js/translated/report.js:244
msgid "No report templates found which match selected part(s)"
msgstr ""
-#: templates/js/report.js:259 templates/js/translated/report.js:259
+#: templates/js/report.js:259 templates/js/translated/report.js:279
msgid "Select Purchase Orders"
msgstr ""
-#: templates/js/report.js:260 templates/js/translated/report.js:260
+#: templates/js/report.js:260 templates/js/translated/report.js:280
msgid "Purchase Order(s) must be selected before printing report"
msgstr ""
#: templates/js/report.js:278 templates/js/report.js:332
-#: templates/js/translated/report.js:278 templates/js/translated/report.js:332
+#: templates/js/translated/report.js:298 templates/js/translated/report.js:352
msgid "No report templates found which match selected orders"
msgstr ""
-#: templates/js/report.js:313 templates/js/translated/report.js:313
+#: templates/js/report.js:313 templates/js/translated/report.js:333
msgid "Select Sales Orders"
msgstr ""
-#: templates/js/report.js:314 templates/js/translated/report.js:314
+#: templates/js/report.js:314 templates/js/translated/report.js:334
msgid "Sales Order(s) must be selected before printing report"
msgstr ""
-#: templates/js/translated/api.js:161 templates/js/translated/modals.js:1027
+#: templates/js/translated/api.js:174 templates/js/translated/modals.js:1041
msgid "No Response"
msgstr ""
-#: templates/js/translated/api.js:162 templates/js/translated/modals.js:1028
+#: templates/js/translated/api.js:175 templates/js/translated/modals.js:1042
msgid "No response from the InvenTree server"
msgstr ""
-#: templates/js/translated/api.js:167
+#: templates/js/translated/api.js:181
msgid "Error 400: Bad request"
msgstr ""
-#: templates/js/translated/api.js:168
+#: templates/js/translated/api.js:182
msgid "API request returned error code 400"
msgstr ""
-#: templates/js/translated/api.js:171 templates/js/translated/modals.js:1037
+#: templates/js/translated/api.js:186 templates/js/translated/modals.js:1051
msgid "Error 401: Not Authenticated"
msgstr ""
-#: templates/js/translated/api.js:172 templates/js/translated/modals.js:1038
+#: templates/js/translated/api.js:187 templates/js/translated/modals.js:1052
msgid "Authentication credentials not supplied"
msgstr ""
-#: templates/js/translated/api.js:175 templates/js/translated/modals.js:1042
+#: templates/js/translated/api.js:191 templates/js/translated/modals.js:1056
msgid "Error 403: Permission Denied"
msgstr ""
-#: templates/js/translated/api.js:176 templates/js/translated/modals.js:1043
+#: templates/js/translated/api.js:192 templates/js/translated/modals.js:1057
msgid "You do not have the required permissions to access this function"
msgstr ""
-#: templates/js/translated/api.js:179 templates/js/translated/modals.js:1047
+#: templates/js/translated/api.js:196 templates/js/translated/modals.js:1061
msgid "Error 404: Resource Not Found"
msgstr ""
-#: templates/js/translated/api.js:180 templates/js/translated/modals.js:1048
+#: templates/js/translated/api.js:197 templates/js/translated/modals.js:1062
msgid "The requested resource could not be located on the server"
msgstr ""
-#: templates/js/translated/api.js:183 templates/js/translated/modals.js:1052
+#: templates/js/translated/api.js:201 templates/js/translated/modals.js:1066
msgid "Error 408: Timeout"
msgstr ""
-#: templates/js/translated/api.js:184 templates/js/translated/modals.js:1053
+#: templates/js/translated/api.js:202 templates/js/translated/modals.js:1067
msgid "Connection timeout while requesting data from server"
msgstr ""
-#: templates/js/translated/api.js:187
+#: templates/js/translated/api.js:205
msgid "Unhandled Error Code"
msgstr ""
-#: templates/js/translated/api.js:188
+#: templates/js/translated/api.js:206
msgid "Error code"
msgstr ""
-#: templates/js/translated/attachment.js:16
+#: templates/js/translated/attachment.js:27
msgid "No attachments found"
msgstr ""
-#: templates/js/translated/attachment.js:56
+#: templates/js/translated/attachment.js:91
msgid "Upload Date"
msgstr ""
-#: templates/js/translated/attachment.js:69
+#: templates/js/translated/attachment.js:104
msgid "Edit attachment"
msgstr ""
-#: templates/js/translated/attachment.js:76
+#: templates/js/translated/attachment.js:111
msgid "Delete attachment"
msgstr ""
-#: templates/js/translated/barcode.js:8
+#: templates/js/translated/barcode.js:30
msgid "Scan barcode data here using wedge scanner"
msgstr ""
-#: templates/js/translated/barcode.js:10
+#: templates/js/translated/barcode.js:32
msgid "Enter barcode data"
msgstr ""
-#: templates/js/translated/barcode.js:14
+#: templates/js/translated/barcode.js:36
msgid "Barcode"
msgstr ""
-#: templates/js/translated/barcode.js:32
+#: templates/js/translated/barcode.js:54
msgid "Enter optional notes for stock transfer"
msgstr ""
-#: templates/js/translated/barcode.js:33
+#: templates/js/translated/barcode.js:55
msgid "Enter notes"
msgstr ""
-#: templates/js/translated/barcode.js:71
+#: templates/js/translated/barcode.js:93
msgid "Server error"
msgstr ""
-#: templates/js/translated/barcode.js:92
+#: templates/js/translated/barcode.js:114
msgid "Unknown response from server"
msgstr ""
-#: templates/js/translated/barcode.js:119
-#: templates/js/translated/modals.js:1017
+#: templates/js/translated/barcode.js:141
+#: templates/js/translated/modals.js:1031
msgid "Invalid server response"
msgstr ""
-#: templates/js/translated/barcode.js:212
+#: templates/js/translated/barcode.js:234
msgid "Scan barcode data below"
msgstr ""
-#: templates/js/translated/barcode.js:270
+#: templates/js/translated/barcode.js:281 templates/navbar.html:65
+msgid "Scan Barcode"
+msgstr ""
+
+#: templates/js/translated/barcode.js:292
msgid "No URL in response"
msgstr ""
-#: templates/js/translated/barcode.js:288
+#: templates/js/translated/barcode.js:310
msgid "Link Barcode to Stock Item"
msgstr ""
-#: templates/js/translated/barcode.js:311
+#: templates/js/translated/barcode.js:333
msgid "This will remove the association between this stock item and the barcode"
msgstr ""
-#: templates/js/translated/barcode.js:317
+#: templates/js/translated/barcode.js:339
msgid "Unlink"
msgstr ""
-#: templates/js/translated/barcode.js:376 templates/js/translated/stock.js:220
+#: templates/js/translated/barcode.js:398 templates/js/translated/stock.js:289
msgid "Remove stock item"
msgstr ""
-#: templates/js/translated/barcode.js:418
+#: templates/js/translated/barcode.js:440
msgid "Check Stock Items into Location"
msgstr ""
-#: templates/js/translated/barcode.js:422
-#: templates/js/translated/barcode.js:547
+#: templates/js/translated/barcode.js:444
+#: templates/js/translated/barcode.js:571
msgid "Check In"
msgstr ""
-#: templates/js/translated/barcode.js:462
-#: templates/js/translated/barcode.js:586
+#: templates/js/translated/barcode.js:486
+#: templates/js/translated/barcode.js:610
msgid "Error transferring stock"
msgstr ""
-#: templates/js/translated/barcode.js:481
+#: templates/js/translated/barcode.js:505
msgid "Stock Item already scanned"
msgstr ""
-#: templates/js/translated/barcode.js:485
+#: templates/js/translated/barcode.js:509
msgid "Stock Item already in this location"
msgstr ""
-#: templates/js/translated/barcode.js:492
+#: templates/js/translated/barcode.js:516
msgid "Added stock item"
msgstr ""
-#: templates/js/translated/barcode.js:499
+#: templates/js/translated/barcode.js:523
msgid "Barcode does not match Stock Item"
msgstr ""
-#: templates/js/translated/barcode.js:542
+#: templates/js/translated/barcode.js:566
msgid "Check Into Location"
msgstr ""
-#: templates/js/translated/barcode.js:605
+#: templates/js/translated/barcode.js:629
msgid "Barcode does not match a valid location"
msgstr ""
-#: templates/js/translated/bom.js:195 templates/js/translated/build.js:1152
+#: templates/js/translated/bom.js:215 templates/js/translated/build.js:1169
msgid "Open subassembly"
msgstr ""
-#: templates/js/translated/bom.js:269
+#: templates/js/translated/bom.js:287
msgid "Purchase Price Range"
msgstr ""
-#: templates/js/translated/bom.js:277
+#: templates/js/translated/bom.js:294
msgid "Purchase Price Average"
msgstr ""
-#: templates/js/translated/bom.js:326 templates/js/translated/bom.js:412
+#: templates/js/translated/bom.js:342 templates/js/translated/bom.js:428
msgid "View BOM"
msgstr ""
-#: templates/js/translated/bom.js:386
+#: templates/js/translated/bom.js:402
msgid "Validate BOM Item"
msgstr ""
-#: templates/js/translated/bom.js:388
+#: templates/js/translated/bom.js:404
msgid "This line has been validated"
msgstr ""
-#: templates/js/translated/bom.js:390 templates/js/translated/bom.js:555
+#: templates/js/translated/bom.js:406 templates/js/translated/bom.js:569
msgid "Edit BOM Item"
msgstr ""
-#: templates/js/translated/bom.js:392 templates/js/translated/bom.js:539
+#: templates/js/translated/bom.js:408 templates/js/translated/bom.js:554
msgid "Delete BOM Item"
msgstr ""
-#: templates/js/translated/bom.js:483 templates/js/translated/build.js:458
-#: templates/js/translated/build.js:1250
+#: templates/js/translated/bom.js:499 templates/js/translated/build.js:483
+#: templates/js/translated/build.js:1267
msgid "No BOM items found"
msgstr ""
-#: templates/js/translated/build.js:42
+#: templates/js/translated/build.js:69
msgid "Edit Build Order"
msgstr ""
-#: templates/js/translated/build.js:68
+#: templates/js/translated/build.js:95
msgid "Create Build Order"
msgstr ""
-#: templates/js/translated/build.js:100
+#: templates/js/translated/build.js:127
msgid "Auto-allocate stock items to this output"
msgstr ""
-#: templates/js/translated/build.js:108
+#: templates/js/translated/build.js:135
msgid "Unallocate stock from build output"
msgstr ""
-#: templates/js/translated/build.js:118
+#: templates/js/translated/build.js:145
msgid "Complete build output"
msgstr ""
-#: templates/js/translated/build.js:127
+#: templates/js/translated/build.js:154
msgid "Delete build output"
msgstr ""
-#: templates/js/translated/build.js:222
+#: templates/js/translated/build.js:249
msgid "No build order allocations found"
msgstr ""
-#: templates/js/translated/build.js:260 templates/js/translated/order.js:471
+#: templates/js/translated/build.js:287 templates/js/translated/order.js:813
msgid "Location not specified"
msgstr ""
-#: templates/js/translated/build.js:364 templates/stock_table.html:20
+#: templates/js/translated/build.js:391 templates/stock_table.html:20
msgid "New Stock Item"
msgstr ""
-#: templates/js/translated/build.js:679
+#: templates/js/translated/build.js:702
msgid "Required Part"
msgstr ""
-#: templates/js/translated/build.js:700
+#: templates/js/translated/build.js:723
msgid "Quantity Per"
msgstr ""
-#: templates/js/translated/build.js:770 templates/js/translated/build.js:1214
+#: templates/js/translated/build.js:793 templates/js/translated/build.js:1231
#: templates/stock_table.html:59
msgid "Order stock"
msgstr ""
-#: templates/js/translated/build.js:823
+#: templates/js/translated/build.js:846
msgid "No builds matching query"
msgstr ""
-#: templates/js/translated/build.js:840 templates/js/translated/part.js:711
-#: templates/js/translated/part.js:956 templates/js/translated/stock.js:883
-#: templates/js/translated/stock.js:1336
+#: templates/js/translated/build.js:863 templates/js/translated/part.js:845
+#: templates/js/translated/part.js:1123 templates/js/translated/stock.js:783
+#: templates/js/translated/stock.js:1477
msgid "Select"
msgstr ""
-#: templates/js/translated/build.js:860
+#: templates/js/translated/build.js:883
msgid "Build order is overdue"
msgstr ""
-#: templates/js/translated/build.js:924 templates/js/translated/stock.js:1558
+#: templates/js/translated/build.js:944 templates/js/translated/stock.js:1696
msgid "No user information"
msgstr ""
-#: templates/js/translated/build.js:939
+#: templates/js/translated/build.js:956
msgid "No information"
msgstr ""
-#: templates/js/translated/build.js:989
+#: templates/js/translated/build.js:1007
msgid "No parts allocated for"
msgstr ""
-#: templates/js/translated/company.js:34
+#: templates/js/translated/company.js:65
msgid "Add Manufacturer"
msgstr ""
-#: templates/js/translated/company.js:47 templates/js/translated/company.js:136
+#: templates/js/translated/company.js:78 templates/js/translated/company.js:176
msgid "Add Manufacturer Part"
msgstr ""
-#: templates/js/translated/company.js:59
+#: templates/js/translated/company.js:99
msgid "Edit Manufacturer Part"
msgstr ""
-#: templates/js/translated/company.js:68
+#: templates/js/translated/company.js:108
msgid "Delete Manufacturer Part"
msgstr ""
-#: templates/js/translated/company.js:124 templates/js/translated/order.js:58
+#: templates/js/translated/company.js:164 templates/js/translated/order.js:86
msgid "Add Supplier"
msgstr ""
-#: templates/js/translated/company.js:152
+#: templates/js/translated/company.js:192
msgid "Add Supplier Part"
msgstr ""
-#: templates/js/translated/company.js:162
+#: templates/js/translated/company.js:207
msgid "Edit Supplier Part"
msgstr ""
-#: templates/js/translated/company.js:172
+#: templates/js/translated/company.js:217
msgid "Delete Supplier Part"
msgstr ""
-#: templates/js/translated/company.js:219
+#: templates/js/translated/company.js:264
msgid "Edit Company"
msgstr ""
-#: templates/js/translated/company.js:240
+#: templates/js/translated/company.js:285
msgid "Add new Company"
msgstr ""
-#: templates/js/translated/company.js:317
+#: templates/js/translated/company.js:362
msgid "Parts Supplied"
msgstr ""
-#: templates/js/translated/company.js:326
+#: templates/js/translated/company.js:371
msgid "Parts Manufactured"
msgstr ""
-#: templates/js/translated/company.js:339
+#: templates/js/translated/company.js:385
msgid "No company information found"
msgstr ""
-#: templates/js/translated/company.js:357
+#: templates/js/translated/company.js:404
msgid "The following manufacturer parts will be deleted"
msgstr ""
-#: templates/js/translated/company.js:374
+#: templates/js/translated/company.js:421
msgid "Delete Manufacturer Parts"
msgstr ""
-#: templates/js/translated/company.js:427
+#: templates/js/translated/company.js:475
msgid "No manufacturer parts found"
msgstr ""
-#: templates/js/translated/company.js:446
-#: templates/js/translated/company.js:696 templates/js/translated/part.js:288
-#: templates/js/translated/part.js:373
+#: templates/js/translated/company.js:495
+#: templates/js/translated/company.js:751 templates/js/translated/part.js:416
+#: templates/js/translated/part.js:501
msgid "Template part"
msgstr ""
-#: templates/js/translated/company.js:450
-#: templates/js/translated/company.js:700 templates/js/translated/part.js:292
-#: templates/js/translated/part.js:377
+#: templates/js/translated/company.js:499
+#: templates/js/translated/company.js:755 templates/js/translated/part.js:420
+#: templates/js/translated/part.js:505
msgid "Assembled part"
msgstr ""
-#: templates/js/translated/company.js:574 templates/js/translated/part.js:462
+#: templates/js/translated/company.js:626 templates/js/translated/part.js:593
msgid "No parameters found"
msgstr ""
-#: templates/js/translated/company.js:610 templates/js/translated/part.js:503
+#: templates/js/translated/company.js:663 templates/js/translated/part.js:635
msgid "Edit parameter"
msgstr ""
-#: templates/js/translated/company.js:611 templates/js/translated/part.js:504
+#: templates/js/translated/company.js:664 templates/js/translated/part.js:636
msgid "Delete parameter"
msgstr ""
-#: templates/js/translated/company.js:630 templates/js/translated/part.js:521
+#: templates/js/translated/company.js:683 templates/js/translated/part.js:653
msgid "Edit Parameter"
msgstr ""
-#: templates/js/translated/company.js:641 templates/js/translated/part.js:533
+#: templates/js/translated/company.js:694 templates/js/translated/part.js:665
msgid "Delete Parameter"
msgstr ""
-#: templates/js/translated/company.js:677
+#: templates/js/translated/company.js:731
msgid "No supplier parts found"
msgstr ""
-#: templates/js/translated/filters.js:167
-#: templates/js/translated/filters.js:404
+#: templates/js/translated/filters.js:178
+#: templates/js/translated/filters.js:402
msgid "true"
msgstr ""
-#: templates/js/translated/filters.js:171
-#: templates/js/translated/filters.js:405
+#: templates/js/translated/filters.js:182
+#: templates/js/translated/filters.js:403
msgid "false"
msgstr ""
-#: templates/js/translated/filters.js:193
+#: templates/js/translated/filters.js:204
msgid "Select filter"
msgstr ""
-#: templates/js/translated/filters.js:268
+#: templates/js/translated/filters.js:279
msgid "Reload data"
msgstr ""
-#: templates/js/translated/filters.js:270
+#: templates/js/translated/filters.js:281
msgid "Add new filter"
msgstr ""
-#: templates/js/translated/filters.js:273
+#: templates/js/translated/filters.js:284
msgid "Clear all filters"
msgstr ""
-#: templates/js/translated/filters.js:303
+#: templates/js/translated/filters.js:312
msgid "Create filter"
msgstr ""
-#: templates/js/translated/forms.js:289 templates/js/translated/forms.js:302
-#: templates/js/translated/forms.js:314 templates/js/translated/forms.js:326
+#: templates/js/translated/forms.js:323 templates/js/translated/forms.js:336
+#: templates/js/translated/forms.js:348 templates/js/translated/forms.js:360
msgid "Action Prohibited"
msgstr ""
-#: templates/js/translated/forms.js:290
+#: templates/js/translated/forms.js:324
msgid "Create operation not allowed"
msgstr ""
-#: templates/js/translated/forms.js:303
+#: templates/js/translated/forms.js:337
msgid "Update operation not allowed"
msgstr ""
-#: templates/js/translated/forms.js:315
+#: templates/js/translated/forms.js:349
msgid "Delete operation not allowed"
msgstr ""
-#: templates/js/translated/forms.js:327
+#: templates/js/translated/forms.js:361
msgid "View operation not allowed"
msgstr ""
-#: templates/js/translated/forms.js:865 templates/modals.html:21
+#: templates/js/translated/forms.js:889 templates/modals.html:21
#: templates/modals.html:47
msgid "Form errors exist"
msgstr ""
-#: templates/js/translated/forms.js:1258
+#: templates/js/translated/forms.js:1379
msgid "Searching"
msgstr ""
-#: templates/js/translated/forms.js:1423
+#: templates/js/translated/forms.js:1593
msgid "Clear input"
msgstr ""
-#: templates/js/translated/label.js:11
-msgid "Stock item(s) must be selected before printing labels"
+#: templates/js/translated/helpers.js:19
+msgid "YES"
msgstr ""
-#: templates/js/translated/label.js:29 templates/js/translated/label.js:79
-#: templates/js/translated/label.js:134
-msgid "No Labels Found"
+#: templates/js/translated/helpers.js:21
+msgid "NO"
msgstr ""
#: templates/js/translated/label.js:30
+msgid "Stock item(s) must be selected before printing labels"
+msgstr ""
+
+#: templates/js/translated/label.js:48 templates/js/translated/label.js:98
+#: templates/js/translated/label.js:153
+msgid "No Labels Found"
+msgstr ""
+
+#: templates/js/translated/label.js:49
msgid "No labels found which match selected stock item(s)"
msgstr ""
-#: templates/js/translated/label.js:61
+#: templates/js/translated/label.js:80
msgid "Select Stock Locations"
msgstr ""
-#: templates/js/translated/label.js:62
+#: templates/js/translated/label.js:81
msgid "Stock location(s) must be selected before printing labels"
msgstr ""
-#: templates/js/translated/label.js:80
+#: templates/js/translated/label.js:99
msgid "No labels found which match selected stock location(s)"
msgstr ""
-#: templates/js/translated/label.js:116
+#: templates/js/translated/label.js:135
msgid "Part(s) must be selected before printing labels"
msgstr ""
-#: templates/js/translated/label.js:135
+#: templates/js/translated/label.js:154
msgid "No labels found which match the selected part(s)"
msgstr ""
-#: templates/js/translated/label.js:209
+#: templates/js/translated/label.js:228
msgid "stock items selected"
msgstr ""
-#: templates/js/translated/label.js:217
+#: templates/js/translated/label.js:236
msgid "Select Label"
msgstr ""
-#: templates/js/translated/label.js:232
+#: templates/js/translated/label.js:251
msgid "Select Label Template"
msgstr ""
-#: templates/js/translated/modals.js:59 templates/js/translated/modals.js:103
-#: templates/js/translated/modals.js:593
+#: templates/js/translated/modals.js:76 templates/js/translated/modals.js:120
+#: templates/js/translated/modals.js:610
msgid "Cancel"
msgstr ""
-#: templates/js/translated/modals.js:60 templates/js/translated/modals.js:102
-#: templates/js/translated/modals.js:660 templates/js/translated/modals.js:956
+#: templates/js/translated/modals.js:77 templates/js/translated/modals.js:119
+#: templates/js/translated/modals.js:677 templates/js/translated/modals.js:970
#: templates/modals.html:30 templates/modals.html:55
msgid "Submit"
msgstr ""
-#: templates/js/translated/modals.js:101
+#: templates/js/translated/modals.js:118
msgid "Form Title"
msgstr ""
-#: templates/js/translated/modals.js:380
+#: templates/js/translated/modals.js:397
msgid "Waiting for server..."
msgstr ""
-#: templates/js/translated/modals.js:539
+#: templates/js/translated/modals.js:556
msgid "Show Error Information"
msgstr ""
-#: templates/js/translated/modals.js:592
+#: templates/js/translated/modals.js:609
msgid "Accept"
msgstr ""
-#: templates/js/translated/modals.js:649
+#: templates/js/translated/modals.js:666
msgid "Loading Data"
msgstr ""
-#: templates/js/translated/modals.js:907
+#: templates/js/translated/modals.js:922
msgid "Invalid response from server"
msgstr ""
-#: templates/js/translated/modals.js:907
+#: templates/js/translated/modals.js:922
msgid "Form data missing from server response"
msgstr ""
-#: templates/js/translated/modals.js:920
+#: templates/js/translated/modals.js:934
msgid "Error posting form data"
msgstr ""
-#: templates/js/translated/modals.js:1017
+#: templates/js/translated/modals.js:1031
msgid "JSON response missing form data"
msgstr ""
-#: templates/js/translated/modals.js:1032
+#: templates/js/translated/modals.js:1046
msgid "Error 400: Bad Request"
msgstr ""
-#: templates/js/translated/modals.js:1033
+#: templates/js/translated/modals.js:1047
msgid "Server returned error code 400"
msgstr ""
-#: templates/js/translated/modals.js:1056
+#: templates/js/translated/modals.js:1070
msgid "Error requesting form data"
msgstr ""
-#: templates/js/translated/model_renderers.js:38
+#: templates/js/translated/model_renderers.js:40
msgid "Company ID"
msgstr ""
-#: templates/js/translated/model_renderers.js:78
+#: templates/js/translated/model_renderers.js:82
msgid "Location ID"
msgstr ""
-#: templates/js/translated/model_renderers.js:95
+#: templates/js/translated/model_renderers.js:99
msgid "Build ID"
msgstr ""
-#: templates/js/translated/model_renderers.js:114
+#: templates/js/translated/model_renderers.js:119
msgid "Part ID"
msgstr ""
-#: templates/js/translated/model_renderers.js:163
+#: templates/js/translated/model_renderers.js:171
msgid "Category ID"
msgstr ""
-#: templates/js/translated/model_renderers.js:199
+#: templates/js/translated/model_renderers.js:208
msgid "Manufacturer Part ID"
msgstr ""
-#: templates/js/translated/model_renderers.js:227
+#: templates/js/translated/model_renderers.js:237
msgid "Supplier Part ID"
msgstr ""
-#: templates/js/translated/order.js:17
+#: templates/js/translated/order.js:45
msgid "Add Customer"
msgstr ""
-#: templates/js/translated/order.js:42
+#: templates/js/translated/order.js:70
msgid "Create Sales Order"
msgstr ""
-#: templates/js/translated/order.js:222
+#: templates/js/translated/order.js:295
msgid "No purchase orders found"
msgstr ""
-#: templates/js/translated/order.js:246 templates/js/translated/order.js:341
+#: templates/js/translated/order.js:320 templates/js/translated/order.js:682
msgid "Order is overdue"
msgstr ""
-#: templates/js/translated/order.js:318
+#: templates/js/translated/order.js:452
+msgid "No line items found"
+msgstr ""
+
+#: templates/js/translated/order.js:617
+msgid "Delete line item"
+msgstr ""
+
+#: templates/js/translated/order.js:621
+msgid "Receive line item"
+msgstr ""
+
+#: templates/js/translated/order.js:658
msgid "No sales orders found"
msgstr ""
-#: templates/js/translated/order.js:355
+#: templates/js/translated/order.js:696
msgid "Invalid Customer"
msgstr ""
-#: templates/js/translated/order.js:432
+#: templates/js/translated/order.js:774
msgid "No sales order allocations found"
msgstr ""
-#: templates/js/translated/part.js:10
-msgid "YES"
-msgstr ""
-
-#: templates/js/translated/part.js:12
-msgid "NO"
-msgstr ""
-
-#: templates/js/translated/part.js:22
-msgid "Add Part Category"
-msgstr ""
-
-#: templates/js/translated/part.js:53
+#: templates/js/translated/part.js:49
msgid "Part Attributes"
msgstr ""
-#: templates/js/translated/part.js:96
+#: templates/js/translated/part.js:53
msgid "Part Creation Options"
msgstr ""
-#: templates/js/translated/part.js:102
-msgid "Initial Stock Quantity"
-msgstr ""
-
-#: templates/js/translated/part.js:103
-msgid "Initialize part stock with specified quantity"
-msgstr ""
-
-#: templates/js/translated/part.js:109
-msgid "Copy Category Parameters"
-msgstr ""
-
-#: templates/js/translated/part.js:110
-msgid "Copy parameter templates from selected part category"
-msgstr ""
-
-#: templates/js/translated/part.js:120
+#: templates/js/translated/part.js:57
msgid "Part Duplication Options"
msgstr ""
-#: templates/js/translated/part.js:131
-msgid "Copy Image"
+#: templates/js/translated/part.js:61
+msgid "Supplier Options"
msgstr ""
-#: templates/js/translated/part.js:132
-msgid "Copy image from original part"
+#: templates/js/translated/part.js:75
+msgid "Add Part Category"
msgstr ""
-#: templates/js/translated/part.js:138
-msgid "Copy BOM"
+#: templates/js/translated/part.js:159
+msgid "Create Initial Stock"
msgstr ""
-#: templates/js/translated/part.js:139
-msgid "Copy bill of materials from original part"
+#: templates/js/translated/part.js:160
+msgid "Create an initial stock item for this part"
msgstr ""
-#: templates/js/translated/part.js:145
-msgid "Copy Parameters"
+#: templates/js/translated/part.js:167
+msgid "Initial Stock Quantity"
msgstr ""
-#: templates/js/translated/part.js:146
-msgid "Copy parameter data from original part"
+#: templates/js/translated/part.js:168
+msgid "Specify initial stock quantity for this part"
msgstr ""
-#: templates/js/translated/part.js:158
-msgid "Parent part category"
+#: templates/js/translated/part.js:175 templates/js/translated/stock.js:330
+msgid "Select destination stock location"
+msgstr ""
+
+#: templates/js/translated/part.js:186
+msgid "Copy Category Parameters"
+msgstr ""
+
+#: templates/js/translated/part.js:187
+msgid "Copy parameter templates from selected part category"
+msgstr ""
+
+#: templates/js/translated/part.js:195
+msgid "Add Supplier Data"
msgstr ""
#: templates/js/translated/part.js:196
+msgid "Create initial supplier data for this part"
+msgstr ""
+
+#: templates/js/translated/part.js:252
+msgid "Copy Image"
+msgstr ""
+
+#: templates/js/translated/part.js:253
+msgid "Copy image from original part"
+msgstr ""
+
+#: templates/js/translated/part.js:260
+msgid "Copy BOM"
+msgstr ""
+
+#: templates/js/translated/part.js:261
+msgid "Copy bill of materials from original part"
+msgstr ""
+
+#: templates/js/translated/part.js:268
+msgid "Copy Parameters"
+msgstr ""
+
+#: templates/js/translated/part.js:269
+msgid "Copy parameter data from original part"
+msgstr ""
+
+#: templates/js/translated/part.js:282
+msgid "Parent part category"
+msgstr ""
+
+#: templates/js/translated/part.js:323
msgid "Edit Part"
msgstr ""
-#: templates/js/translated/part.js:280 templates/js/translated/part.js:365
+#: templates/js/translated/part.js:408 templates/js/translated/part.js:493
msgid "Trackable part"
msgstr ""
-#: templates/js/translated/part.js:284 templates/js/translated/part.js:369
+#: templates/js/translated/part.js:412 templates/js/translated/part.js:497
msgid "Virtual part"
msgstr ""
-#: templates/js/translated/part.js:296
+#: templates/js/translated/part.js:424
msgid "Starred part"
msgstr ""
-#: templates/js/translated/part.js:300
+#: templates/js/translated/part.js:428
msgid "Salable part"
msgstr ""
-#: templates/js/translated/part.js:414
+#: templates/js/translated/part.js:543
msgid "No variants found"
msgstr ""
-#: templates/js/translated/part.js:601 templates/js/translated/part.js:840
+#: templates/js/translated/part.js:732 templates/js/translated/part.js:994
msgid "No parts found"
msgstr ""
-#: templates/js/translated/part.js:779
+#: templates/js/translated/part.js:921
msgid "No category"
msgstr ""
-#: templates/js/translated/part.js:797
-#: templates/js/translated/table_filters.js:337
+#: templates/js/translated/part.js:944
+#: templates/js/translated/table_filters.js:350
msgid "Low stock"
msgstr ""
-#: templates/js/translated/part.js:981 templates/js/translated/stock.js:1360
+#: templates/js/translated/part.js:1148 templates/js/translated/stock.js:1501
msgid "Path"
msgstr ""
-#: templates/js/translated/part.js:1024
+#: templates/js/translated/part.js:1191
msgid "No test templates matching query"
msgstr ""
-#: templates/js/translated/part.js:1075 templates/js/translated/stock.js:443
+#: templates/js/translated/part.js:1242 templates/js/translated/stock.js:514
msgid "Edit test result"
msgstr ""
-#: templates/js/translated/part.js:1076 templates/js/translated/stock.js:444
+#: templates/js/translated/part.js:1243 templates/js/translated/stock.js:515
msgid "Delete test result"
msgstr ""
-#: templates/js/translated/part.js:1082
+#: templates/js/translated/part.js:1249
msgid "This test is defined for a parent part"
msgstr ""
-#: templates/js/translated/part.js:1107
+#: templates/js/translated/part.js:1274
#, python-brace-format
msgid "No ${human_name} information found"
msgstr ""
-#: templates/js/translated/part.js:1160
+#: templates/js/translated/part.js:1329
#, python-brace-format
msgid "Edit ${human_name}"
msgstr ""
-#: templates/js/translated/part.js:1161
+#: templates/js/translated/part.js:1330
#, python-brace-format
msgid "Delete ${human_name}"
msgstr ""
-#: templates/js/translated/part.js:1261
+#: templates/js/translated/part.js:1431
msgid "Single Price"
msgstr ""
-#: templates/js/translated/part.js:1280
+#: templates/js/translated/part.js:1450
msgid "Single Price Difference"
msgstr ""
-#: templates/js/translated/stock.js:9
+#: templates/js/translated/stock.js:66
msgid "Parent stock location"
msgstr ""
-#: templates/js/translated/stock.js:39
+#: templates/js/translated/stock.js:96
msgid "Export Stock"
msgstr ""
-#: templates/js/translated/stock.js:42
+#: templates/js/translated/stock.js:99
msgid "Format"
msgstr ""
-#: templates/js/translated/stock.js:43
+#: templates/js/translated/stock.js:100
msgid "Select file format"
msgstr ""
-#: templates/js/translated/stock.js:55
+#: templates/js/translated/stock.js:124
msgid "Include Sublocations"
msgstr ""
-#: templates/js/translated/stock.js:56
+#: templates/js/translated/stock.js:125
msgid "Include stock items in sublocations"
msgstr ""
-#: templates/js/translated/stock.js:98
+#: templates/js/translated/stock.js:167
msgid "Transfer Stock"
msgstr ""
-#: templates/js/translated/stock.js:99
+#: templates/js/translated/stock.js:168
msgid "Move"
msgstr ""
-#: templates/js/translated/stock.js:105
+#: templates/js/translated/stock.js:174
msgid "Count Stock"
msgstr ""
-#: templates/js/translated/stock.js:106
+#: templates/js/translated/stock.js:175
msgid "Count"
msgstr ""
-#: templates/js/translated/stock.js:110
+#: templates/js/translated/stock.js:179
msgid "Remove Stock"
msgstr ""
-#: templates/js/translated/stock.js:111
+#: templates/js/translated/stock.js:180
msgid "Take"
msgstr ""
-#: templates/js/translated/stock.js:115
+#: templates/js/translated/stock.js:184
msgid "Add Stock"
msgstr ""
-#: templates/js/translated/stock.js:116 users/models.py:190
+#: templates/js/translated/stock.js:185 users/models.py:190
msgid "Add"
msgstr ""
-#: templates/js/translated/stock.js:120 templates/stock_table.html:63
+#: templates/js/translated/stock.js:189 templates/stock_table.html:63
msgid "Delete Stock"
msgstr ""
-#: templates/js/translated/stock.js:209
+#: templates/js/translated/stock.js:278
msgid "Quantity cannot be adjusted for serialized stock"
msgstr ""
-#: templates/js/translated/stock.js:209
+#: templates/js/translated/stock.js:278
msgid "Specify stock quantity"
msgstr ""
-#: templates/js/translated/stock.js:245
+#: templates/js/translated/stock.js:314
msgid "You must select at least one available stock item"
msgstr ""
-#: templates/js/translated/stock.js:261
-msgid "Select destination stock location"
-msgstr ""
-
-#: templates/js/translated/stock.js:269
+#: templates/js/translated/stock.js:339
msgid "Stock transaction notes"
msgstr ""
-#: templates/js/translated/stock.js:406
+#: templates/js/translated/stock.js:477
msgid "PASS"
msgstr ""
-#: templates/js/translated/stock.js:408
+#: templates/js/translated/stock.js:479
msgid "FAIL"
msgstr ""
-#: templates/js/translated/stock.js:413
+#: templates/js/translated/stock.js:484
msgid "NO RESULT"
msgstr ""
-#: templates/js/translated/stock.js:439
+#: templates/js/translated/stock.js:510
msgid "Add test result"
msgstr ""
-#: templates/js/translated/stock.js:465
+#: templates/js/translated/stock.js:536
msgid "No test results found"
msgstr ""
-#: templates/js/translated/stock.js:513
+#: templates/js/translated/stock.js:584
msgid "Test Date"
msgstr ""
-#: templates/js/translated/stock.js:621
+#: templates/js/translated/stock.js:691
msgid "In production"
msgstr ""
-#: templates/js/translated/stock.js:625
+#: templates/js/translated/stock.js:695
msgid "Installed in Stock Item"
msgstr ""
-#: templates/js/translated/stock.js:633
+#: templates/js/translated/stock.js:703
msgid "Assigned to Sales Order"
msgstr ""
-#: templates/js/translated/stock.js:709
-msgid "No stock items matching query"
-msgstr ""
-
-#: templates/js/translated/stock.js:729
-msgid "items"
-msgstr ""
-
-#: templates/js/translated/stock.js:821
-msgid "batches"
-msgstr ""
-
-#: templates/js/translated/stock.js:848
-msgid "locations"
-msgstr ""
-
-#: templates/js/translated/stock.js:850
-msgid "Undefined location"
-msgstr ""
-
-#: templates/js/translated/stock.js:951
+#: templates/js/translated/stock.js:865
msgid "Stock item is in production"
msgstr ""
-#: templates/js/translated/stock.js:956
+#: templates/js/translated/stock.js:870
msgid "Stock item assigned to sales order"
msgstr ""
-#: templates/js/translated/stock.js:959
+#: templates/js/translated/stock.js:873
msgid "Stock item assigned to customer"
msgstr ""
-#: templates/js/translated/stock.js:963
+#: templates/js/translated/stock.js:877
msgid "Stock item has expired"
msgstr ""
-#: templates/js/translated/stock.js:965
+#: templates/js/translated/stock.js:879
msgid "Stock item will expire soon"
msgstr ""
-#: templates/js/translated/stock.js:969
+#: templates/js/translated/stock.js:883
msgid "Stock item has been allocated"
msgstr ""
-#: templates/js/translated/stock.js:973
+#: templates/js/translated/stock.js:887
msgid "Stock item has been installed in another item"
msgstr ""
-#: templates/js/translated/stock.js:980
+#: templates/js/translated/stock.js:894
msgid "Stock item has been rejected"
msgstr ""
-#: templates/js/translated/stock.js:984
+#: templates/js/translated/stock.js:896
msgid "Stock item is lost"
msgstr ""
-#: templates/js/translated/stock.js:987
+#: templates/js/translated/stock.js:898
msgid "Stock item is destroyed"
msgstr ""
-#: templates/js/translated/stock.js:991
-#: templates/js/translated/table_filters.js:148
+#: templates/js/translated/stock.js:902
+#: templates/js/translated/table_filters.js:161
msgid "Depleted"
msgstr ""
-#: templates/js/translated/stock.js:1020
+#: templates/js/translated/stock.js:956
msgid "Stocktake"
msgstr ""
-#: templates/js/translated/stock.js:1073
+#: templates/js/translated/stock.js:1029
msgid "Supplier part not specified"
msgstr ""
-#: templates/js/translated/stock.js:1223
+#: templates/js/translated/stock.js:1067
+msgid "No stock items matching query"
+msgstr ""
+
+#: templates/js/translated/stock.js:1088 templates/js/translated/stock.js:1136
+msgid "items"
+msgstr ""
+
+#: templates/js/translated/stock.js:1176
+msgid "batches"
+msgstr ""
+
+#: templates/js/translated/stock.js:1203
+msgid "locations"
+msgstr ""
+
+#: templates/js/translated/stock.js:1205
+msgid "Undefined location"
+msgstr ""
+
+#: templates/js/translated/stock.js:1364
msgid "Stock Status"
msgstr ""
-#: templates/js/translated/stock.js:1238
+#: templates/js/translated/stock.js:1379
msgid "Set Stock Status"
msgstr ""
-#: templates/js/translated/stock.js:1252
+#: templates/js/translated/stock.js:1393
msgid "Select Status Code"
msgstr ""
-#: templates/js/translated/stock.js:1253
+#: templates/js/translated/stock.js:1394
msgid "Status code must be selected"
msgstr ""
-#: templates/js/translated/stock.js:1392
+#: templates/js/translated/stock.js:1533
msgid "Invalid date"
msgstr ""
-#: templates/js/translated/stock.js:1439
+#: templates/js/translated/stock.js:1580
msgid "Location no longer exists"
msgstr ""
-#: templates/js/translated/stock.js:1458
+#: templates/js/translated/stock.js:1599
msgid "Purchase order no longer exists"
msgstr ""
-#: templates/js/translated/stock.js:1477
+#: templates/js/translated/stock.js:1618
msgid "Customer no longer exists"
msgstr ""
-#: templates/js/translated/stock.js:1495
+#: templates/js/translated/stock.js:1636
msgid "Stock item no longer exists"
msgstr ""
-#: templates/js/translated/stock.js:1518
+#: templates/js/translated/stock.js:1659
msgid "Added"
msgstr ""
-#: templates/js/translated/stock.js:1526
+#: templates/js/translated/stock.js:1667
msgid "Removed"
msgstr ""
-#: templates/js/translated/stock.js:1570
+#: templates/js/translated/stock.js:1708
msgid "Edit tracking entry"
msgstr ""
-#: templates/js/translated/stock.js:1571
+#: templates/js/translated/stock.js:1709
msgid "Delete tracking entry"
msgstr ""
-#: templates/js/translated/stock.js:1715
+#: templates/js/translated/stock.js:1833
msgid "No installed items"
msgstr ""
-#: templates/js/translated/stock.js:1738
+#: templates/js/translated/stock.js:1856
msgid "Serial"
msgstr ""
-#: templates/js/translated/stock.js:1766
+#: templates/js/translated/stock.js:1884
msgid "Uninstall Stock Item"
msgstr ""
-#: templates/js/translated/table_filters.js:43
+#: templates/js/translated/table_filters.js:56
msgid "Trackable Part"
msgstr ""
-#: templates/js/translated/table_filters.js:47
+#: templates/js/translated/table_filters.js:60
msgid "Assembled Part"
msgstr ""
-#: templates/js/translated/table_filters.js:51
+#: templates/js/translated/table_filters.js:64
msgid "Validated"
msgstr ""
-#: templates/js/translated/table_filters.js:59
+#: templates/js/translated/table_filters.js:72
msgid "Allow Variant Stock"
msgstr ""
-#: templates/js/translated/table_filters.js:79
-#: templates/js/translated/table_filters.js:143
+#: templates/js/translated/table_filters.js:92
+#: templates/js/translated/table_filters.js:156
msgid "Include sublocations"
msgstr ""
-#: templates/js/translated/table_filters.js:80
+#: templates/js/translated/table_filters.js:93
msgid "Include locations"
msgstr ""
-#: templates/js/translated/table_filters.js:90
-#: templates/js/translated/table_filters.js:91
-#: templates/js/translated/table_filters.js:314
+#: templates/js/translated/table_filters.js:103
+#: templates/js/translated/table_filters.js:104
+#: templates/js/translated/table_filters.js:327
msgid "Include subcategories"
msgstr ""
-#: templates/js/translated/table_filters.js:101
-#: templates/js/translated/table_filters.js:178
+#: templates/js/translated/table_filters.js:114
+#: templates/js/translated/table_filters.js:191
msgid "Is Serialized"
msgstr ""
-#: templates/js/translated/table_filters.js:104
-#: templates/js/translated/table_filters.js:185
+#: templates/js/translated/table_filters.js:117
+#: templates/js/translated/table_filters.js:198
msgid "Serial number GTE"
msgstr ""
-#: templates/js/translated/table_filters.js:105
-#: templates/js/translated/table_filters.js:186
+#: templates/js/translated/table_filters.js:118
+#: templates/js/translated/table_filters.js:199
msgid "Serial number greater than or equal to"
msgstr ""
-#: templates/js/translated/table_filters.js:108
-#: templates/js/translated/table_filters.js:189
+#: templates/js/translated/table_filters.js:121
+#: templates/js/translated/table_filters.js:202
msgid "Serial number LTE"
msgstr ""
-#: templates/js/translated/table_filters.js:109
-#: templates/js/translated/table_filters.js:190
+#: templates/js/translated/table_filters.js:122
+#: templates/js/translated/table_filters.js:203
msgid "Serial number less than or equal to"
msgstr ""
-#: templates/js/translated/table_filters.js:112
-#: templates/js/translated/table_filters.js:113
-#: templates/js/translated/table_filters.js:181
-#: templates/js/translated/table_filters.js:182
+#: templates/js/translated/table_filters.js:125
+#: templates/js/translated/table_filters.js:126
+#: templates/js/translated/table_filters.js:194
+#: templates/js/translated/table_filters.js:195
msgid "Serial number"
msgstr ""
-#: templates/js/translated/table_filters.js:117
-#: templates/js/translated/table_filters.js:199
+#: templates/js/translated/table_filters.js:130
+#: templates/js/translated/table_filters.js:212
msgid "Batch code"
msgstr ""
-#: templates/js/translated/table_filters.js:128
-#: templates/js/translated/table_filters.js:304
+#: templates/js/translated/table_filters.js:141
+#: templates/js/translated/table_filters.js:317
msgid "Active parts"
msgstr ""
-#: templates/js/translated/table_filters.js:129
+#: templates/js/translated/table_filters.js:142
msgid "Show stock for active parts"
msgstr ""
-#: templates/js/translated/table_filters.js:134
+#: templates/js/translated/table_filters.js:147
msgid "Part is an assembly"
msgstr ""
-#: templates/js/translated/table_filters.js:138
+#: templates/js/translated/table_filters.js:151
msgid "Is allocated"
msgstr ""
-#: templates/js/translated/table_filters.js:139
+#: templates/js/translated/table_filters.js:152
msgid "Item has been allocated"
msgstr ""
-#: templates/js/translated/table_filters.js:144
+#: templates/js/translated/table_filters.js:157
msgid "Include stock in sublocations"
msgstr ""
-#: templates/js/translated/table_filters.js:149
+#: templates/js/translated/table_filters.js:162
msgid "Show stock items which are depleted"
msgstr ""
-#: templates/js/translated/table_filters.js:154
+#: templates/js/translated/table_filters.js:167
msgid "Show items which are in stock"
msgstr ""
-#: templates/js/translated/table_filters.js:158
+#: templates/js/translated/table_filters.js:171
msgid "In Production"
msgstr ""
-#: templates/js/translated/table_filters.js:159
+#: templates/js/translated/table_filters.js:172
msgid "Show items which are in production"
msgstr ""
-#: templates/js/translated/table_filters.js:163
+#: templates/js/translated/table_filters.js:176
msgid "Include Variants"
msgstr ""
-#: templates/js/translated/table_filters.js:164
+#: templates/js/translated/table_filters.js:177
msgid "Include stock items for variant parts"
msgstr ""
-#: templates/js/translated/table_filters.js:168
+#: templates/js/translated/table_filters.js:181
msgid "Installed"
msgstr ""
-#: templates/js/translated/table_filters.js:169
+#: templates/js/translated/table_filters.js:182
msgid "Show stock items which are installed in another item"
msgstr ""
-#: templates/js/translated/table_filters.js:174
+#: templates/js/translated/table_filters.js:187
msgid "Show items which have been assigned to a customer"
msgstr ""
-#: templates/js/translated/table_filters.js:194
-#: templates/js/translated/table_filters.js:195
+#: templates/js/translated/table_filters.js:207
+#: templates/js/translated/table_filters.js:208
msgid "Stock status"
msgstr ""
-#: templates/js/translated/table_filters.js:203
+#: templates/js/translated/table_filters.js:216
msgid "Has purchase price"
msgstr ""
-#: templates/js/translated/table_filters.js:204
+#: templates/js/translated/table_filters.js:217
msgid "Show stock items which have a purchase price set"
msgstr ""
-#: templates/js/translated/table_filters.js:213
+#: templates/js/translated/table_filters.js:226
msgid "Show stock items which have expired"
msgstr ""
-#: templates/js/translated/table_filters.js:219
+#: templates/js/translated/table_filters.js:232
msgid "Show stock which is close to expiring"
msgstr ""
-#: templates/js/translated/table_filters.js:250
+#: templates/js/translated/table_filters.js:263
msgid "Build status"
msgstr ""
-#: templates/js/translated/table_filters.js:269
-#: templates/js/translated/table_filters.js:286
+#: templates/js/translated/table_filters.js:282
+#: templates/js/translated/table_filters.js:299
msgid "Order status"
msgstr ""
-#: templates/js/translated/table_filters.js:274
-#: templates/js/translated/table_filters.js:291
+#: templates/js/translated/table_filters.js:287
+#: templates/js/translated/table_filters.js:304
msgid "Outstanding"
msgstr ""
-#: templates/js/translated/table_filters.js:315
+#: templates/js/translated/table_filters.js:328
msgid "Include parts in subcategories"
msgstr ""
-#: templates/js/translated/table_filters.js:319
+#: templates/js/translated/table_filters.js:332
msgid "Has IPN"
msgstr ""
-#: templates/js/translated/table_filters.js:320
+#: templates/js/translated/table_filters.js:333
msgid "Part has internal part number"
msgstr ""
-#: templates/js/translated/table_filters.js:325
+#: templates/js/translated/table_filters.js:338
msgid "Show active parts"
msgstr ""
-#: templates/js/translated/table_filters.js:333
+#: templates/js/translated/table_filters.js:346
msgid "Stock available"
msgstr ""
-#: templates/js/translated/table_filters.js:349
+#: templates/js/translated/table_filters.js:362
msgid "Starred"
msgstr ""
-#: templates/js/translated/table_filters.js:361
+#: templates/js/translated/table_filters.js:374
msgid "Purchasable"
msgstr ""
-#: templates/js/translated/tables.js:342
+#: templates/js/translated/tables.js:357
msgid "Loading data"
msgstr ""
-#: templates/js/translated/tables.js:345
+#: templates/js/translated/tables.js:360
msgid "rows per page"
msgstr ""
-#: templates/js/translated/tables.js:348
+#: templates/js/translated/tables.js:363
msgid "Showing"
msgstr ""
-#: templates/js/translated/tables.js:348
+#: templates/js/translated/tables.js:363
msgid "to"
msgstr ""
-#: templates/js/translated/tables.js:348
+#: templates/js/translated/tables.js:363
msgid "of"
msgstr ""
-#: templates/js/translated/tables.js:348
+#: templates/js/translated/tables.js:363
msgid "rows"
msgstr ""
-#: templates/js/translated/tables.js:354
+#: templates/js/translated/tables.js:369
msgid "No matching results"
msgstr ""
-#: templates/js/translated/tables.js:357
+#: templates/js/translated/tables.js:372
msgid "Hide/Show pagination"
msgstr ""
-#: templates/js/translated/tables.js:360
+#: templates/js/translated/tables.js:375
msgid "Refresh"
msgstr ""
-#: templates/js/translated/tables.js:363
+#: templates/js/translated/tables.js:378
msgid "Toggle"
msgstr ""
-#: templates/js/translated/tables.js:366
+#: templates/js/translated/tables.js:381
msgid "Columns"
msgstr ""
-#: templates/js/translated/tables.js:369
+#: templates/js/translated/tables.js:384
msgid "All"
msgstr ""
-#: templates/navbar.html:13
+#: templates/navbar.html:19
msgid "Toggle navigation"
msgstr ""
-#: templates/navbar.html:33
+#: templates/navbar.html:39
msgid "Buy"
msgstr ""
-#: templates/navbar.html:43
+#: templates/navbar.html:51
msgid "Sell"
msgstr ""
-#: templates/navbar.html:55
-msgid "Scan Barcode"
-msgstr ""
-
-#: templates/navbar.html:77 users/models.py:39
+#: templates/navbar.html:87 users/models.py:39
msgid "Admin"
msgstr ""
-#: templates/navbar.html:79
+#: templates/navbar.html:89
msgid "Logout"
msgstr ""
-#: templates/navbar.html:81 templates/registration/login.html:89
+#: templates/navbar.html:91 templates/registration/login.html:89
msgid "Login"
msgstr ""
-#: templates/navbar.html:104
+#: templates/navbar.html:114
msgid "About InvenTree"
msgstr ""
diff --git a/InvenTree/locale/nl/LC_MESSAGES/django.po b/InvenTree/locale/nl/LC_MESSAGES/django.po
index 13d7b460c0..8a14f3628d 100644
--- a/InvenTree/locale/nl/LC_MESSAGES/django.po
+++ b/InvenTree/locale/nl/LC_MESSAGES/django.po
@@ -2,8 +2,8 @@ msgid ""
msgstr ""
"Project-Id-Version: inventree\n"
"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2021-08-07 15:14+0000\n"
-"PO-Revision-Date: 2021-08-07 15:30\n"
+"POT-Creation-Date: 2021-09-12 13:15+0000\n"
+"PO-Revision-Date: 2021-09-12 13:44\n"
"Last-Translator: \n"
"Language-Team: Dutch\n"
"Language: nl_NL\n"
@@ -19,7 +19,7 @@ msgstr ""
#: InvenTree/api.py:64
msgid "API endpoint not found"
-msgstr ""
+msgstr "API eindpunt niet gevonden"
#: InvenTree/api.py:110
msgid "No action specified"
@@ -36,7 +36,7 @@ msgstr "Voer datum in"
#: InvenTree/forms.py:111 build/forms.py:102 build/forms.py:123
#: build/forms.py:145 build/forms.py:169 build/forms.py:185 build/forms.py:227
#: order/forms.py:30 order/forms.py:41 order/forms.py:52 order/forms.py:63
-#: order/forms.py:74 part/forms.py:108 templates/js/translated/forms.js:545
+#: order/forms.py:74 part/forms.py:108 templates/js/translated/forms.js:564
msgid "Confirm"
msgstr "Bevestigen"
@@ -71,16 +71,16 @@ msgstr "Categorie selecteren"
#: InvenTree/helpers.py:401
#, python-brace-format
msgid "Duplicate serial: {n}"
-msgstr ""
+msgstr "Dubbel serienummer: {n}"
-#: InvenTree/helpers.py:408 order/models.py:315 order/models.py:425
+#: InvenTree/helpers.py:408 order/models.py:315 order/models.py:430
#: stock/views.py:1363
msgid "Invalid quantity provided"
msgstr "Ongeldige hoeveeldheid ingevoerd"
#: InvenTree/helpers.py:411
msgid "Empty serial number string"
-msgstr ""
+msgstr "Leeg serienummer"
#: InvenTree/helpers.py:433 InvenTree/helpers.py:436 InvenTree/helpers.py:439
#: InvenTree/helpers.py:464
@@ -91,7 +91,7 @@ msgstr "Ongeldige groep: {g}"
#: InvenTree/helpers.py:469
#, python-brace-format
msgid "Duplicate serial: {g}"
-msgstr ""
+msgstr "Dubbel serienummer: {g}"
#: InvenTree/helpers.py:477
msgid "No serial numbers found"
@@ -102,152 +102,181 @@ 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:61 stock/models.py:1815
+#: InvenTree/models.py:66 stock/models.py:1826
msgid "Attachment"
msgstr "Bijlage"
-#: InvenTree/models.py:62
+#: InvenTree/models.py:67
msgid "Select file to attach"
msgstr "Bestand als bijlage selecteren"
-#: InvenTree/models.py:64 templates/js/translated/attachment.js:52
+#: InvenTree/models.py:69 templates/js/translated/attachment.js:87
msgid "Comment"
msgstr "Opmerking"
-#: InvenTree/models.py:64
+#: InvenTree/models.py:69
msgid "File comment"
msgstr "Bijlage opmerking"
-#: InvenTree/models.py:70 InvenTree/models.py:71 common/models.py:969
-#: common/models.py:970 part/models.py:2035
+#: InvenTree/models.py:75 InvenTree/models.py:76 common/models.py:993
+#: common/models.py:994 part/models.py:2051
#: report/templates/report/inventree_test_report_base.html:91
-#: templates/js/translated/stock.js:1549
+#: templates/js/translated/stock.js:1690
msgid "User"
msgstr "Gebruiker"
-#: InvenTree/models.py:74
+#: InvenTree/models.py:79
msgid "upload date"
msgstr "uploaddatum"
-#: InvenTree/models.py:113
+#: InvenTree/models.py:99
+msgid "Filename must not be empty"
+msgstr "Bestandsnaam mag niet leeg zijn"
+
+#: InvenTree/models.py:122
+msgid "Invalid attachment directory"
+msgstr "Fout bijlagemap"
+
+#: InvenTree/models.py:132
+#, python-brace-format
+msgid "Filename contains illegal character '{c}'"
+msgstr "Bestandsnaam bevat illegale teken '{c}'"
+
+#: InvenTree/models.py:135
+msgid "Filename missing extension"
+msgstr "Bestandsnaam mist extensie"
+
+#: InvenTree/models.py:142
+msgid "Attachment with this filename already exists"
+msgstr "Bijlage met deze bestandsnaam bestaat al"
+
+#: InvenTree/models.py:149
+msgid "Error renaming file"
+msgstr "Fout bij hernoemen bestand"
+
+#: InvenTree/models.py:184
msgid "Invalid choice"
msgstr "Ongeldige keuze"
-#: InvenTree/models.py:129 InvenTree/models.py:130 company/models.py:412
-#: label/models.py:112 part/models.py:656 part/models.py:2196
-#: part/templates/part/part_base.html:233 report/models.py:181
+#: InvenTree/models.py:200 InvenTree/models.py:201 company/models.py:414
+#: label/models.py:112 part/models.py:658 part/models.py:2212
+#: part/templates/part/part_base.html:241 report/models.py:181
#: templates/InvenTree/search.html:137 templates/InvenTree/search.html:289
-#: templates/js/translated/company.js:583 templates/js/translated/part.js:338
-#: templates/js/translated/part.js:471 templates/js/translated/part.js:963
-#: templates/js/translated/stock.js:1342
+#: templates/js/translated/company.js:636 templates/js/translated/part.js:466
+#: templates/js/translated/part.js:603 templates/js/translated/part.js:1130
+#: templates/js/translated/stock.js:1483
msgid "Name"
msgstr "Naam"
-#: InvenTree/models.py:136 build/models.py:187
-#: build/templates/build/detail.html:24 company/models.py:351
-#: company/models.py:519 company/templates/company/manufacturer_part.html:76
+#: InvenTree/models.py:207 build/models.py:187
+#: build/templates/build/detail.html:24 company/models.py:353
+#: company/models.py:569 company/templates/company/manufacturer_part.html:76
#: company/templates/company/supplier_part.html:75 label/models.py:119
-#: order/models.py:158 order/templates/order/purchase_order_detail.html:312
-#: part/models.py:679 part/templates/part/part_base.html:238
+#: order/models.py:158 part/models.py:681
+#: part/templates/part/part_base.html:246
#: part/templates/part/set_category.html:14 report/models.py:194
#: report/models.py:551 report/models.py:590
#: report/templates/report/inventree_build_order_base.html:118
#: templates/InvenTree/search.html:144 templates/InvenTree/search.html:224
#: templates/InvenTree/search.html:296
#: templates/InvenTree/settings/header.html:9
-#: templates/js/translated/bom.js:210 templates/js/translated/build.js:868
-#: templates/js/translated/build.js:1162 templates/js/translated/company.js:299
-#: templates/js/translated/company.js:497
-#: templates/js/translated/company.js:779 templates/js/translated/order.js:267
-#: templates/js/translated/order.js:369 templates/js/translated/part.js:397
-#: templates/js/translated/part.js:581 templates/js/translated/part.js:758
-#: templates/js/translated/part.js:975 templates/js/translated/part.js:1043
-#: templates/js/translated/stock.js:926 templates/js/translated/stock.js:1354
-#: templates/js/translated/stock.js:1399
+#: templates/js/translated/bom.js:230 templates/js/translated/build.js:891
+#: templates/js/translated/build.js:1179 templates/js/translated/company.js:344
+#: templates/js/translated/company.js:546
+#: templates/js/translated/company.js:834 templates/js/translated/order.js:341
+#: templates/js/translated/order.js:486 templates/js/translated/order.js:710
+#: templates/js/translated/part.js:525 templates/js/translated/part.js:713
+#: templates/js/translated/part.js:902 templates/js/translated/part.js:1142
+#: templates/js/translated/part.js:1210 templates/js/translated/stock.js:840
+#: templates/js/translated/stock.js:1495 templates/js/translated/stock.js:1540
msgid "Description"
msgstr "Omschrijving"
-#: InvenTree/models.py:137
+#: InvenTree/models.py:208
msgid "Description (optional)"
msgstr "Omschrijving (optioneel)"
-#: InvenTree/models.py:145
+#: InvenTree/models.py:216
msgid "parent"
msgstr "overkoepelend"
-#: InvenTree/serializers.py:52 part/models.py:2438
+#: InvenTree/serializers.py:55 part/models.py:2454
msgid "Must be a valid number"
msgstr "Moet een geldig nummer zijn"
-#: InvenTree/settings.py:518
+#: InvenTree/serializers.py:244
+msgid "Filename"
+msgstr "Bestandsnaam"
+
+#: InvenTree/settings.py:523
msgid "German"
msgstr "Duits"
-#: InvenTree/settings.py:519
+#: InvenTree/settings.py:524
msgid "Greek"
msgstr "Grieks"
-#: InvenTree/settings.py:520
+#: InvenTree/settings.py:525
msgid "English"
msgstr "Engels"
-#: InvenTree/settings.py:521
+#: InvenTree/settings.py:526
msgid "Spanish"
msgstr "Spaans"
-#: InvenTree/settings.py:522
+#: InvenTree/settings.py:527
msgid "French"
msgstr "Frans"
-#: InvenTree/settings.py:523
+#: InvenTree/settings.py:528
msgid "Hebrew"
msgstr "Hebreeuws"
-#: InvenTree/settings.py:524
+#: InvenTree/settings.py:529
msgid "Italian"
msgstr "Italiaans"
-#: InvenTree/settings.py:525
+#: InvenTree/settings.py:530
msgid "Japanese"
msgstr "Japans"
-#: InvenTree/settings.py:526
+#: InvenTree/settings.py:531
msgid "Korean"
msgstr "Koreaans"
-#: InvenTree/settings.py:527
+#: InvenTree/settings.py:532
msgid "Dutch"
msgstr "Nederlands"
-#: InvenTree/settings.py:528
+#: InvenTree/settings.py:533
msgid "Norwegian"
msgstr "Noors"
-#: InvenTree/settings.py:529
+#: InvenTree/settings.py:534
msgid "Polish"
msgstr "Pools"
-#: InvenTree/settings.py:530
+#: InvenTree/settings.py:535
msgid "Russian"
msgstr "Russisch"
-#: InvenTree/settings.py:531
+#: InvenTree/settings.py:536
msgid "Swedish"
msgstr "Zweeds"
-#: InvenTree/settings.py:532
+#: InvenTree/settings.py:537
msgid "Thai"
msgstr "Thais"
-#: InvenTree/settings.py:533
+#: InvenTree/settings.py:538
msgid "Turkish"
msgstr "Turks"
-#: InvenTree/settings.py:534
+#: InvenTree/settings.py:539
msgid "Vietnamese"
msgstr "Vietnamees"
-#: InvenTree/settings.py:535
+#: InvenTree/settings.py:540
msgid "Chinese"
msgstr "Chinees"
@@ -261,168 +290,168 @@ msgstr "E-mailbackend niet geconfigureerd"
#: InvenTree/status.py:101
msgid "InvenTree system health checks failed"
-msgstr ""
+msgstr "Inventree gezondsheidscheck faalt"
#: InvenTree/status_codes.py:104 InvenTree/status_codes.py:145
#: InvenTree/status_codes.py:314
msgid "Pending"
-msgstr ""
+msgstr "Bezig"
#: InvenTree/status_codes.py:105
msgid "Placed"
-msgstr ""
+msgstr "Geplaatst"
#: InvenTree/status_codes.py:106 InvenTree/status_codes.py:317
msgid "Complete"
-msgstr ""
+msgstr "Voltooid"
#: InvenTree/status_codes.py:107 InvenTree/status_codes.py:147
#: InvenTree/status_codes.py:316
msgid "Cancelled"
-msgstr ""
+msgstr "Geannuleerd"
#: InvenTree/status_codes.py:108 InvenTree/status_codes.py:148
#: InvenTree/status_codes.py:190
msgid "Lost"
-msgstr ""
+msgstr "Kwijt"
#: InvenTree/status_codes.py:109 InvenTree/status_codes.py:149
#: InvenTree/status_codes.py:192
msgid "Returned"
-msgstr ""
+msgstr "Retour"
#: InvenTree/status_codes.py:146
#: order/templates/order/sales_order_base.html:126
msgid "Shipped"
-msgstr ""
+msgstr "Verzonden"
#: InvenTree/status_codes.py:186
msgid "OK"
-msgstr ""
+msgstr "OK"
#: InvenTree/status_codes.py:187
msgid "Attention needed"
-msgstr ""
+msgstr "Aandacht nodig"
#: InvenTree/status_codes.py:188
msgid "Damaged"
-msgstr ""
+msgstr "Beschadigd"
#: InvenTree/status_codes.py:189
msgid "Destroyed"
-msgstr ""
+msgstr "Verwoest"
#: InvenTree/status_codes.py:191
msgid "Rejected"
-msgstr ""
+msgstr "Afgewezen"
#: InvenTree/status_codes.py:272
msgid "Legacy stock tracking entry"
-msgstr ""
+msgstr "Verouderde trackingscode"
#: InvenTree/status_codes.py:274
msgid "Stock item created"
-msgstr ""
+msgstr "Voorraaditem gemaakt"
#: InvenTree/status_codes.py:276
msgid "Edited stock item"
-msgstr ""
+msgstr "Bewerken voorraaditem"
#: InvenTree/status_codes.py:277
msgid "Assigned serial number"
-msgstr ""
+msgstr "Serienummer toegewezen"
#: InvenTree/status_codes.py:279
msgid "Stock counted"
-msgstr ""
+msgstr "Voorraad geteld"
#: InvenTree/status_codes.py:280
msgid "Stock manually added"
-msgstr ""
+msgstr "Voorraad handmatig toegevoegd"
#: InvenTree/status_codes.py:281
msgid "Stock manually removed"
-msgstr ""
+msgstr "Voorraad handmatig verwijderd"
#: InvenTree/status_codes.py:283
msgid "Location changed"
-msgstr ""
+msgstr "Locatie veranderd"
#: InvenTree/status_codes.py:285
msgid "Installed into assembly"
-msgstr ""
+msgstr "Gemonteerd"
#: InvenTree/status_codes.py:286
msgid "Removed from assembly"
-msgstr ""
+msgstr "Gedemonteerd"
#: InvenTree/status_codes.py:288
msgid "Installed component item"
-msgstr ""
+msgstr "Gemonteerd item"
#: InvenTree/status_codes.py:289
msgid "Removed component item"
-msgstr ""
+msgstr "Gedemonteerd item"
#: InvenTree/status_codes.py:291
msgid "Split from parent item"
-msgstr ""
+msgstr "Splits van bovenliggend item"
#: InvenTree/status_codes.py:292
msgid "Split child item"
-msgstr ""
+msgstr "Splits onderliggende item"
-#: InvenTree/status_codes.py:294 templates/js/translated/table_filters.js:173
+#: InvenTree/status_codes.py:294 templates/js/translated/table_filters.js:186
msgid "Sent to customer"
-msgstr ""
+msgstr "Naar klant verzonden"
#: InvenTree/status_codes.py:295
msgid "Returned from customer"
-msgstr ""
+msgstr "Geretourneerd door klant"
#: InvenTree/status_codes.py:297
msgid "Build order output created"
-msgstr ""
+msgstr "Montageopdracht gecreëerd"
#: InvenTree/status_codes.py:298
msgid "Build order output completed"
-msgstr ""
+msgstr "Montageopdracht voltooid"
#: InvenTree/status_codes.py:300
msgid "Received against purchase order"
-msgstr ""
+msgstr "Ontvangen tegen inkoopopdracht"
#: InvenTree/status_codes.py:315
msgid "Production"
-msgstr ""
+msgstr "Productie"
#: InvenTree/validators.py:22
msgid "Not a valid currency code"
-msgstr ""
+msgstr "Foute valutacode"
#: InvenTree/validators.py:50
msgid "Invalid character in part name"
-msgstr ""
+msgstr "Foute letter in onderdeelnaam"
#: InvenTree/validators.py:63
#, python-brace-format
msgid "IPN must match regex pattern {pat}"
-msgstr ""
+msgstr "IPN moet overeenkomen met regex-patroon {pat}"
#: InvenTree/validators.py:77 InvenTree/validators.py:91
#: InvenTree/validators.py:105
#, python-brace-format
msgid "Reference must match pattern {pattern}"
-msgstr ""
+msgstr "Refernetie moet overeenkomen met patroon {pattern}"
#: InvenTree/validators.py:113
#, python-brace-format
msgid "Illegal character in name ({x})"
-msgstr ""
+msgstr "Illegale letter in naam ({x})"
#: InvenTree/validators.py:132 InvenTree/validators.py:148
msgid "Overage value must not be negative"
-msgstr ""
+msgstr "Overschrijdingswaarde mag niet negatief zijn"
#: InvenTree/validators.py:150
msgid "Overage must not exceed 100%"
@@ -432,27 +461,27 @@ msgstr ""
msgid "Overage must be an integer value or a percentage"
msgstr ""
-#: InvenTree/views.py:612
+#: InvenTree/views.py:610
msgid "Delete Item"
-msgstr ""
+msgstr "Verwijder item"
-#: InvenTree/views.py:661
+#: InvenTree/views.py:659
msgid "Check box to confirm item deletion"
-msgstr ""
+msgstr "Selectievakje aanvinken om de verwijdering van items te bevestigen"
-#: InvenTree/views.py:676 templates/InvenTree/settings/user.html:14
+#: InvenTree/views.py:674 templates/InvenTree/settings/user.html:14
msgid "Edit User Information"
-msgstr ""
+msgstr "Gebruikersgegevens bewerken"
-#: InvenTree/views.py:687 templates/InvenTree/settings/user.html:18
+#: InvenTree/views.py:685 templates/InvenTree/settings/user.html:18
msgid "Set Password"
-msgstr ""
+msgstr "Wachtwoord instellen"
-#: InvenTree/views.py:706
+#: InvenTree/views.py:704
msgid "Password fields must match"
-msgstr ""
+msgstr "Wachtwoordvelden komen niet overeen"
-#: InvenTree/views.py:907 templates/navbar.html:95
+#: InvenTree/views.py:910 templates/navbar.html:105
msgid "System Information"
msgstr "Systeeminformatie"
@@ -498,7 +527,7 @@ msgstr "Barcode gekoppeld aan StockItem"
#: build/forms.py:37
msgid "Build Order reference"
-msgstr ""
+msgstr "Bouwopdracht referentie"
#: build/forms.py:38
msgid "Order target date"
@@ -509,8 +538,8 @@ msgstr "Order streefdatum"
#: order/templates/order/order_base.html:124
#: order/templates/order/sales_order_base.html:119
#: report/templates/report/inventree_build_order_base.html:126
-#: templates/js/translated/build.js:945 templates/js/translated/order.js:284
-#: templates/js/translated/order.js:387
+#: templates/js/translated/build.js:962 templates/js/translated/order.js:358
+#: templates/js/translated/order.js:728
msgid "Target Date"
msgstr "Streefdatum"
@@ -522,19 +551,18 @@ msgstr ""
#: build/templates/build/allocation_card.html:23
#: build/templates/build/auto_allocate.html:17
#: build/templates/build/build_base.html:133
-#: build/templates/build/detail.html:34 common/models.py:1001
+#: build/templates/build/detail.html:34 common/models.py:1025
#: company/forms.py:42 company/templates/company/supplier_part.html:226
-#: order/forms.py:120 order/forms.py:142 order/forms.py:159 order/models.py:706
-#: order/models.py:952 order/templates/order/order_wizard/match_parts.html:30
+#: order/forms.py:120 order/forms.py:142 order/forms.py:159 order/models.py:712
+#: order/models.py:964 order/templates/order/order_wizard/match_parts.html:30
#: order/templates/order/order_wizard/select_parts.html:34
-#: order/templates/order/purchase_order_detail.html:348
-#: order/templates/order/sales_order_detail.html:200
-#: order/templates/order/sales_order_detail.html:207
-#: order/templates/order/sales_order_detail.html:292
-#: order/templates/order/sales_order_detail.html:364 part/forms.py:249
-#: part/forms.py:265 part/forms.py:281 part/models.py:2340
+#: order/templates/order/sales_order_detail.html:201
+#: order/templates/order/sales_order_detail.html:208
+#: order/templates/order/sales_order_detail.html:293
+#: order/templates/order/sales_order_detail.html:365 part/forms.py:249
+#: part/forms.py:265 part/forms.py:281 part/models.py:2356
#: part/templates/part/bom_upload/match_parts.html:31
-#: part/templates/part/detail.html:940 part/templates/part/detail.html:1026
+#: part/templates/part/detail.html:973 part/templates/part/detail.html:1059
#: part/templates/part/part_pricing.html:16
#: report/templates/report/inventree_build_order_base.html:114
#: report/templates/report/inventree_po_report.html:91
@@ -542,13 +570,14 @@ msgstr ""
#: report/templates/report/inventree_test_report_base.html:77
#: stock/forms.py:140 stock/templates/stock/item_base.html:269
#: stock/templates/stock/stock_adjust.html:18
-#: templates/js/translated/barcode.js:364 templates/js/translated/bom.js:225
-#: templates/js/translated/build.js:271 templates/js/translated/build.js:606
-#: templates/js/translated/build.js:1172
-#: templates/js/translated/model_renderers.js:56
-#: templates/js/translated/order.js:482 templates/js/translated/part.js:1148
-#: templates/js/translated/part.js:1270 templates/js/translated/part.js:1326
-#: templates/js/translated/stock.js:1534 templates/js/translated/stock.js:1732
+#: templates/js/translated/barcode.js:386 templates/js/translated/bom.js:245
+#: templates/js/translated/build.js:298 templates/js/translated/build.js:629
+#: templates/js/translated/build.js:1189
+#: templates/js/translated/model_renderers.js:59
+#: templates/js/translated/order.js:522 templates/js/translated/order.js:824
+#: templates/js/translated/part.js:1317 templates/js/translated/part.js:1440
+#: templates/js/translated/part.js:1518 templates/js/translated/stock.js:1675
+#: templates/js/translated/stock.js:1850
msgid "Quantity"
msgstr "Aantal"
@@ -589,13 +618,15 @@ msgid "Mark build as complete"
msgstr "Markeer build als voltooid"
#: build/forms.py:210 build/templates/build/auto_allocate.html:18
-#: stock/forms.py:280 stock/templates/stock/item_base.html:299
+#: order/serializers.py:216 order/serializers.py:275 stock/forms.py:280
+#: stock/templates/stock/item_base.html:299
#: stock/templates/stock/stock_adjust.html:17
-#: templates/InvenTree/search.html:260 templates/js/translated/barcode.js:363
-#: templates/js/translated/barcode.js:531 templates/js/translated/build.js:256
-#: templates/js/translated/build.js:620 templates/js/translated/order.js:467
-#: templates/js/translated/stock.js:134 templates/js/translated/stock.js:260
-#: templates/js/translated/stock.js:1012 templates/js/translated/stock.js:1426
+#: templates/InvenTree/search.html:260 templates/js/translated/barcode.js:385
+#: templates/js/translated/barcode.js:555 templates/js/translated/build.js:283
+#: templates/js/translated/build.js:643 templates/js/translated/order.js:809
+#: templates/js/translated/part.js:174 templates/js/translated/stock.js:203
+#: templates/js/translated/stock.js:329 templates/js/translated/stock.js:942
+#: templates/js/translated/stock.js:1567
msgid "Location"
msgstr "Locatie"
@@ -604,13 +635,13 @@ msgid "Location of completed parts"
msgstr "Locatie van voltooide onderdelen"
#: build/forms.py:215 build/templates/build/build_base.html:138
-#: build/templates/build/detail.html:62 order/models.py:549
-#: order/templates/order/receive_parts.html:24
+#: build/templates/build/detail.html:62 order/models.py:555
+#: order/serializers.py:230 order/templates/order/receive_parts.html:24
#: stock/templates/stock/item_base.html:422 templates/InvenTree/search.html:252
-#: templates/js/translated/barcode.js:119 templates/js/translated/build.js:902
-#: templates/js/translated/order.js:271 templates/js/translated/order.js:374
-#: templates/js/translated/stock.js:999 templates/js/translated/stock.js:1503
-#: templates/js/translated/stock.js:1748
+#: templates/js/translated/barcode.js:141 templates/js/translated/build.js:925
+#: templates/js/translated/order.js:345 templates/js/translated/order.js:715
+#: templates/js/translated/stock.js:917 templates/js/translated/stock.js:1644
+#: templates/js/translated/stock.js:1866
msgid "Status"
msgstr "Status"
@@ -649,34 +680,33 @@ msgstr "Ongeldige keuze voor bovenliggende build"
#: build/models.py:117 build/templates/build/build_base.html:9
#: build/templates/build/build_base.html:73
#: report/templates/report/inventree_build_order_base.html:106
-#: templates/js/translated/build.js:233
+#: templates/js/translated/build.js:260
msgid "Build Order"
-msgstr ""
+msgstr "Bouwopdracht"
#: build/models.py:118 build/templates/build/index.html:8
#: build/templates/build/index.html:15
#: order/templates/order/sales_order_detail.html:34
#: order/templates/order/so_navbar.html:19
-#: order/templates/order/so_navbar.html:22 part/templates/part/navbar.html:42
-#: part/templates/part/navbar.html:45 templates/InvenTree/index.html:229
+#: order/templates/order/so_navbar.html:22 part/templates/part/navbar.html:50
+#: part/templates/part/navbar.html:53 templates/InvenTree/index.html:229
#: templates/InvenTree/search.html:185
#: templates/InvenTree/settings/navbar.html:101
#: templates/InvenTree/settings/navbar.html:103 users/models.py:44
msgid "Build Orders"
-msgstr ""
+msgstr "Bouwopdrachten"
#: build/models.py:178
msgid "Build Order Reference"
-msgstr ""
+msgstr "Bouwopdracht referentie"
-#: build/models.py:179 order/models.py:246 order/models.py:533
-#: order/models.py:713 order/templates/order/purchase_order_detail.html:343
-#: order/templates/order/sales_order_detail.html:359 part/models.py:2349
-#: part/templates/part/bom_upload/match_parts.html:30
+#: build/models.py:179 order/models.py:246 order/models.py:539
+#: order/models.py:719 order/templates/order/sales_order_detail.html:360
+#: part/models.py:2365 part/templates/part/bom_upload/match_parts.html:30
#: report/templates/report/inventree_po_report.html:92
#: report/templates/report/inventree_so_report.html:92
-#: templates/js/translated/bom.js:217 templates/js/translated/build.js:695
-#: templates/js/translated/build.js:1166
+#: templates/js/translated/bom.js:237 templates/js/translated/build.js:718
+#: templates/js/translated/build.js:1183 templates/js/translated/order.js:517
msgid "Reference"
msgstr "Referentie"
@@ -687,7 +717,7 @@ msgstr "Korte beschrijving van de build"
#: build/models.py:199 build/templates/build/build_base.html:163
#: build/templates/build/detail.html:80
msgid "Parent Build"
-msgstr ""
+msgstr "Bovenliggende bouw"
#: build/models.py:200
msgid "BuildOrder to which this build is allocated"
@@ -695,15 +725,14 @@ msgstr "BuildOrder waaraan deze build is toegewezen"
#: build/models.py:205 build/templates/build/auto_allocate.html:16
#: build/templates/build/build_base.html:128
-#: build/templates/build/detail.html:29 company/models.py:654
-#: order/models.py:766 order/models.py:825
+#: build/templates/build/detail.html:29 company/models.py:704
+#: order/models.py:772 order/models.py:837
#: order/templates/order/order_wizard/select_parts.html:32
-#: order/templates/order/purchase_order_detail.html:297
#: order/templates/order/receive_parts.html:19
-#: order/templates/order/sales_order_detail.html:344 part/models.py:295
-#: part/models.py:1980 part/models.py:1996 part/models.py:2015
-#: part/models.py:2033 part/models.py:2112 part/models.py:2234
-#: part/models.py:2324 part/templates/part/detail.html:199
+#: order/templates/order/sales_order_detail.html:345 part/models.py:297
+#: part/models.py:1996 part/models.py:2012 part/models.py:2031
+#: part/models.py:2049 part/models.py:2128 part/models.py:2250
+#: part/models.py:2340 part/templates/part/detail.html:199
#: part/templates/part/part_app_base.html:8
#: part/templates/part/part_pricing.html:12
#: part/templates/part/set_category.html:13
@@ -711,12 +740,13 @@ msgstr "BuildOrder waaraan deze build is toegewezen"
#: report/templates/report/inventree_po_report.html:90
#: report/templates/report/inventree_so_report.html:90
#: templates/InvenTree/search.html:112 templates/InvenTree/search.html:210
-#: templates/js/translated/barcode.js:362 templates/js/translated/bom.js:183
-#: templates/js/translated/build.js:586 templates/js/translated/build.js:873
-#: templates/js/translated/build.js:1139 templates/js/translated/company.js:438
-#: templates/js/translated/company.js:688 templates/js/translated/part.js:562
-#: templates/js/translated/part.js:725 templates/js/translated/stock.js:132
-#: templates/js/translated/stock.js:895 templates/js/translated/stock.js:1720
+#: templates/js/translated/barcode.js:384 templates/js/translated/bom.js:203
+#: templates/js/translated/build.js:609 templates/js/translated/build.js:896
+#: templates/js/translated/build.js:1156 templates/js/translated/company.js:487
+#: templates/js/translated/company.js:743 templates/js/translated/order.js:471
+#: templates/js/translated/part.js:694 templates/js/translated/part.js:864
+#: templates/js/translated/stock.js:201 templates/js/translated/stock.js:797
+#: templates/js/translated/stock.js:1838
msgid "Part"
msgstr "Onderdeel"
@@ -746,11 +776,11 @@ msgstr "Bestemmings Locatie"
#: build/models.py:240
msgid "Select location where the completed items will be stored"
-msgstr ""
+msgstr "Selecteer locatie waar de voltooide items zullen worden opgeslagen"
#: build/models.py:244
msgid "Build Quantity"
-msgstr ""
+msgstr "Bouwkwaliteit"
#: build/models.py:247
msgid "Number of stock items to build"
@@ -758,21 +788,21 @@ msgstr ""
#: build/models.py:251
msgid "Completed items"
-msgstr ""
+msgstr "Voltooide voorraadartikelen"
#: build/models.py:253
msgid "Number of stock items which have been completed"
-msgstr ""
+msgstr "Aantal voorraadartikelen die zijn voltooid"
-#: build/models.py:257 part/templates/part/part_base.html:191
+#: build/models.py:257 part/templates/part/part_base.html:198
msgid "Build Status"
-msgstr ""
+msgstr "Bouwstatus"
#: build/models.py:261
msgid "Build status code"
-msgstr ""
+msgstr "Bouwstatuscode"
-#: build/models.py:265 stock/models.py:507
+#: build/models.py:265 stock/models.py:513
msgid "Batch Code"
msgstr ""
@@ -780,93 +810,92 @@ msgstr ""
msgid "Batch code for this build output"
msgstr ""
-#: build/models.py:272 order/models.py:162 part/models.py:851
-#: part/templates/part/part_base.html:264 templates/js/translated/order.js:382
+#: build/models.py:272 order/models.py:162 part/models.py:853
+#: part/templates/part/part_base.html:272 templates/js/translated/order.js:723
msgid "Creation Date"
-msgstr ""
+msgstr "Aanmaakdatum"
-#: build/models.py:276 order/models.py:555
+#: build/models.py:276 order/models.py:561
msgid "Target completion date"
-msgstr ""
+msgstr "Verwachte voltooiingsdatum"
-#: build/models.py:280 order/models.py:288 templates/js/translated/build.js:950
+#: build/models.py:280 order/models.py:288 templates/js/translated/build.js:967
msgid "Completion Date"
-msgstr ""
+msgstr "Voltooiingsdatum"
#: build/models.py:286
msgid "completed by"
-msgstr ""
+msgstr "voltooid door"
-#: build/models.py:294 templates/js/translated/build.js:915
+#: build/models.py:294 templates/js/translated/build.js:938
msgid "Issued by"
msgstr ""
#: build/models.py:295
msgid "User who issued this build order"
-msgstr ""
+msgstr "Gebruiker die bouwopdracht heeft gegeven"
#: build/models.py:303 build/templates/build/build_base.html:184
#: build/templates/build/detail.html:108 order/models.py:176
#: order/templates/order/order_base.html:138
-#: order/templates/order/sales_order_base.html:140 part/models.py:855
+#: order/templates/order/sales_order_base.html:140 part/models.py:857
#: report/templates/report/inventree_build_order_base.html:159
-#: templates/js/translated/build.js:930
+#: templates/js/translated/build.js:950
msgid "Responsible"
-msgstr ""
+msgstr "Verantwoordelijke"
#: build/models.py:304
msgid "User responsible for this build order"
-msgstr ""
+msgstr "Gebruiker verantwoordelijk voor deze bouwopdracht"
#: build/models.py:309 build/templates/build/detail.html:94
#: company/templates/company/manufacturer_part.html:83
#: company/templates/company/supplier_part.html:82
-#: part/templates/part/part_base.html:258 stock/models.py:501
+#: part/templates/part/part_base.html:266 stock/models.py:507
#: stock/templates/stock/item_base.html:359
msgid "External Link"
-msgstr ""
+msgstr "Externe Link"
-#: build/models.py:310 part/models.py:713 stock/models.py:503
+#: build/models.py:310 part/models.py:715 stock/models.py:509
msgid "Link to external URL"
-msgstr ""
+msgstr "Link naar externe URL"
#: build/models.py:314 build/templates/build/navbar.html:52
-#: company/models.py:139 company/models.py:526
-#: company/templates/company/navbar.html:63
-#: company/templates/company/navbar.html:66 order/models.py:180
-#: order/models.py:715 order/templates/order/po_navbar.html:38
+#: company/models.py:141 company/models.py:576
+#: company/templates/company/navbar.html:69
+#: company/templates/company/navbar.html:72 order/models.py:180
+#: order/models.py:721 order/templates/order/po_navbar.html:38
#: order/templates/order/po_navbar.html:41
-#: order/templates/order/purchase_order_detail.html:419
-#: order/templates/order/sales_order_detail.html:439
+#: order/templates/order/sales_order_detail.html:440
#: order/templates/order/so_navbar.html:33
-#: order/templates/order/so_navbar.html:36 part/models.py:840
-#: part/templates/part/detail.html:105 part/templates/part/navbar.html:108
-#: part/templates/part/navbar.html:111
+#: order/templates/order/so_navbar.html:36 part/models.py:842
+#: part/templates/part/detail.html:105 part/templates/part/navbar.html:120
+#: part/templates/part/navbar.html:123
#: report/templates/report/inventree_build_order_base.html:173
-#: stock/forms.py:138 stock/forms.py:250 stock/forms.py:282 stock/models.py:573
-#: stock/models.py:1715 stock/models.py:1821
-#: stock/templates/stock/navbar.html:57 templates/js/translated/barcode.js:37
-#: templates/js/translated/bom.js:369 templates/js/translated/company.js:784
-#: templates/js/translated/stock.js:268 templates/js/translated/stock.js:509
-#: templates/js/translated/stock.js:1090
+#: stock/forms.py:138 stock/forms.py:250 stock/forms.py:282 stock/models.py:579
+#: stock/models.py:1726 stock/models.py:1832
+#: stock/templates/stock/navbar.html:57 templates/js/translated/barcode.js:59
+#: templates/js/translated/bom.js:385 templates/js/translated/company.js:839
+#: templates/js/translated/order.js:604 templates/js/translated/stock.js:338
+#: templates/js/translated/stock.js:580 templates/js/translated/stock.js:1061
msgid "Notes"
-msgstr ""
+msgstr "Opmerkingen"
#: build/models.py:315
msgid "Extra build notes"
-msgstr ""
+msgstr "Opmerkingen over de bouw"
#: build/models.py:792
msgid "No build output specified"
-msgstr ""
+msgstr "Geen bouwuitvoer opgegeven"
#: build/models.py:795
msgid "Build output is already completed"
-msgstr ""
+msgstr "Bouwuitvoer is al voltooid"
#: build/models.py:798
msgid "Build output does not match Build Order"
-msgstr ""
+msgstr "Bouwuitvoer komt niet overeen met bouwopdracht"
#: build/models.py:1208
msgid "BuildItem must be unique for build, stock_item and install_into"
@@ -881,11 +910,11 @@ msgstr ""
msgid "Allocated quantity ({n}) must not exceed available quantity ({q})"
msgstr ""
-#: build/models.py:1244 order/models.py:926
+#: build/models.py:1244 order/models.py:938
msgid "StockItem is over-allocated"
msgstr ""
-#: build/models.py:1248 order/models.py:929
+#: build/models.py:1248 order/models.py:941
msgid "Allocation quantity must be greater than zero"
msgstr ""
@@ -896,96 +925,96 @@ msgstr ""
#: build/models.py:1312
#, python-brace-format
msgid "Selected stock item not found in BOM for part '{p}'"
-msgstr ""
+msgstr "Geselecteerde voorraadartikel niet gevonden in stuklijst voor onderdeel '{p}'"
#: build/models.py:1372 stock/templates/stock/item_base.html:331
-#: templates/InvenTree/search.html:183 templates/js/translated/build.js:846
-#: templates/navbar.html:29
+#: templates/InvenTree/search.html:183 templates/js/translated/build.js:869
+#: templates/navbar.html:35
msgid "Build"
-msgstr ""
+msgstr "Product"
#: build/models.py:1373
msgid "Build to allocate parts"
-msgstr ""
+msgstr "Bouw om onderdelen toe te wijzen"
#: build/models.py:1389 stock/templates/stock/item_base.html:8
#: stock/templates/stock/item_base.html:31
#: stock/templates/stock/item_base.html:353
#: stock/templates/stock/stock_adjust.html:16
-#: templates/js/translated/build.js:244 templates/js/translated/build.js:249
-#: templates/js/translated/build.js:993 templates/js/translated/order.js:455
-#: templates/js/translated/order.js:460 templates/js/translated/stock.js:1485
+#: templates/js/translated/build.js:271 templates/js/translated/build.js:276
+#: templates/js/translated/build.js:1012 templates/js/translated/order.js:797
+#: templates/js/translated/order.js:802 templates/js/translated/stock.js:1626
msgid "Stock Item"
-msgstr ""
+msgstr "Voorraadartikel"
#: build/models.py:1390
msgid "Source stock item"
-msgstr ""
+msgstr "Bron voorraadartikel"
#: build/models.py:1403
msgid "Stock quantity to allocate to build"
-msgstr ""
+msgstr "Voorraad hoeveelheid te alloceren aan bouw"
#: build/models.py:1411
msgid "Install into"
-msgstr ""
+msgstr "Installeren in"
#: build/models.py:1412
msgid "Destination stock item"
-msgstr ""
+msgstr "Bestemming voorraadartikel"
#: build/templates/build/allocation_card.html:21
#: build/templates/build/complete_output.html:46
-#: order/templates/order/sales_order_detail.html:205
-#: order/templates/order/sales_order_detail.html:290
+#: order/templates/order/sales_order_detail.html:206
+#: order/templates/order/sales_order_detail.html:291
#: report/templates/report/inventree_test_report_base.html:75
-#: stock/models.py:495 stock/templates/stock/item_base.html:251
-#: templates/js/translated/build.js:604
-#: templates/js/translated/model_renderers.js:54
+#: stock/models.py:501 stock/templates/stock/item_base.html:251
+#: templates/js/translated/build.js:627
+#: templates/js/translated/model_renderers.js:57
msgid "Serial Number"
-msgstr ""
+msgstr "Serienummer"
#: build/templates/build/auto_allocate.html:9
msgid "Automatically Allocate Stock"
-msgstr ""
+msgstr "Automatisch voorraad toewijzen"
#: build/templates/build/auto_allocate.html:10
msgid "The following stock items will be allocated to the specified build output"
-msgstr ""
+msgstr "De volgende voorraadartikelen zullen worden toegewezen aan het opgegeven product"
#: build/templates/build/auto_allocate.html:37
msgid "No stock items found that can be automatically allocated to this build"
-msgstr ""
+msgstr "Geen voorraadartikelen gevonden die automatisch aan dit product toegewezen kunnen worden"
#: build/templates/build/auto_allocate.html:39
msgid "Stock items will have to be manually allocated"
-msgstr ""
+msgstr "Voorraad items zullen handmatig moeten worden toegewezen"
#: build/templates/build/build_base.html:18
#, python-format
msgid "This Build Order is allocated to Sales Order %(link)s"
-msgstr ""
+msgstr "Deze bouwopdracht is toegewezen aan verkooporder %(link)s"
#: build/templates/build/build_base.html:25
#, python-format
msgid "This Build Order is a child of Build Order %(link)s"
-msgstr ""
+msgstr "Deze bouwopdracht is een onderdeel van bouwopdracht %(link)s"
#: build/templates/build/build_base.html:32
msgid "Build Order is ready to mark as completed"
-msgstr ""
+msgstr "Bouwopdracht is gereed om te markeren als voltooid"
#: build/templates/build/build_base.html:37
msgid "Build Order cannot be completed as outstanding outputs remain"
-msgstr ""
+msgstr "Bouwopdracht kan niet worden voltooid omdat openstaande outputs blijven"
#: build/templates/build/build_base.html:42
msgid "Required build quantity has not yet been completed"
-msgstr ""
+msgstr "Vereiste bouwhoeveelheid is nog niet bereikt"
#: build/templates/build/build_base.html:47
msgid "Stock has not been fully allocated to this Build Order"
-msgstr ""
+msgstr "Voorraad is niet volledig toegewezen aan deze bouwopdracht"
#: build/templates/build/build_base.html:75
#: company/templates/company/company_base.html:40
@@ -993,7 +1022,7 @@ msgstr ""
#: company/templates/company/supplier_part.html:30
#: order/templates/order/order_base.html:26
#: order/templates/order/sales_order_base.html:37
-#: part/templates/part/category.html:27 part/templates/part/part_base.html:25
+#: part/templates/part/category.html:27 part/templates/part/part_base.html:30
#: stock/templates/stock/item_base.html:62
#: stock/templates/stock/location.html:31
msgid "Admin view"
@@ -1005,9 +1034,9 @@ msgstr "Beheerder weergave"
#: order/templates/order/order_base.html:86
#: order/templates/order/sales_order_base.html:43
#: order/templates/order/sales_order_base.html:88
-#: templates/js/translated/table_filters.js:259
-#: templates/js/translated/table_filters.js:278
-#: templates/js/translated/table_filters.js:295
+#: templates/js/translated/table_filters.js:272
+#: templates/js/translated/table_filters.js:291
+#: templates/js/translated/table_filters.js:308
msgid "Overdue"
msgstr "Achterstallig"
@@ -1039,7 +1068,7 @@ msgstr "Annuleer Build"
#: build/templates/build/build_base.html:114
msgid "Delete Build"
-msgstr ""
+msgstr "Verwijder bouw"
#: build/templates/build/build_base.html:124
#: build/templates/build/detail.html:15
@@ -1049,7 +1078,7 @@ msgstr "Build details"
#: build/templates/build/build_base.html:150
#, python-format
msgid "This build was due on %(target)s"
-msgstr ""
+msgstr "Deze bouw was verwacht op %(target)s"
#: build/templates/build/build_base.html:157
#: build/templates/build/detail.html:67
@@ -1057,14 +1086,14 @@ msgid "Progress"
msgstr "Voortgang"
#: build/templates/build/build_base.html:170
-#: build/templates/build/detail.html:87 order/models.py:823
+#: build/templates/build/detail.html:87 order/models.py:835
#: order/templates/order/sales_order_base.html:9
#: order/templates/order/sales_order_base.html:35
#: order/templates/order/sales_order_ship.html:25
#: report/templates/report/inventree_build_order_base.html:136
#: report/templates/report/inventree_so_report.html:77
#: stock/templates/stock/item_base.html:293
-#: templates/js/translated/order.js:329
+#: templates/js/translated/order.js:670
msgid "Sales Order"
msgstr "Verkoop Order"
@@ -1076,15 +1105,15 @@ msgstr "Uitgegeven door"
#: build/templates/build/build_base.html:214
msgid "Incomplete Outputs"
-msgstr ""
+msgstr "Onvolledige bouwuitvoer"
#: build/templates/build/build_base.html:215
msgid "Build Order cannot be completed as incomplete build outputs remain"
-msgstr ""
+msgstr "Bouwopdracht kan niet worden voltooid omdat onvolledige bouwuitvoer blijft bestaan"
#: build/templates/build/build_output_create.html:7
msgid "The Bill of Materials contains trackable parts"
-msgstr ""
+msgstr "De stuklijst bevat traceerbare onderdelen"
#: build/templates/build/build_output_create.html:8
msgid "Build outputs must be generated individually."
@@ -1096,27 +1125,27 @@ msgstr ""
#: build/templates/build/build_output_create.html:15
msgid "Trackable parts can have serial numbers specified"
-msgstr ""
+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 ""
+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 ""
+msgstr "Weet je zeker dat je de bouw wilt annuleren?"
#: build/templates/build/complete.html:8
msgid "Build Order is complete"
-msgstr ""
+msgstr "Bouwopdracht is voltooid"
#: build/templates/build/complete.html:12
msgid "Build Order is incomplete"
-msgstr ""
+msgstr "Bouwopdracht is onvolledig"
#: build/templates/build/complete.html:15
msgid "Incompleted build outputs remain"
-msgstr ""
+msgstr "Onvoltooide bouw outputs blijven"
#: build/templates/build/complete.html:18
msgid "Required build quantity has not been completed"
@@ -1148,7 +1177,7 @@ msgstr ""
#: build/templates/build/create_build_item.html:11
#, python-format
-msgid "The allocated stock will be installed into the following build output:
%(output)s"
+msgid "The allocated stock will be installed into the following build output:
%(output)s"
msgstr ""
#: build/templates/build/create_build_item.html:17
@@ -1166,15 +1195,15 @@ msgstr ""
#: build/templates/build/detail.html:38
msgid "Stock Source"
-msgstr ""
+msgstr "Voorraadbron"
#: build/templates/build/detail.html:43
msgid "Stock can be taken from any available location."
msgstr ""
-#: build/templates/build/detail.html:49 order/forms.py:88 order/models.py:782
-#: order/templates/order/purchase_order_detail.html:408
+#: build/templates/build/detail.html:49 order/forms.py:88 order/models.py:794
#: order/templates/order/receive_parts.html:25 stock/forms.py:134
+#: templates/js/translated/order.js:593
msgid "Destination"
msgstr ""
@@ -1184,24 +1213,24 @@ msgstr ""
#: build/templates/build/detail.html:73
#: stock/templates/stock/item_base.html:317
-#: templates/js/translated/stock.js:1007 templates/js/translated/stock.js:1755
-#: templates/js/translated/table_filters.js:116
-#: templates/js/translated/table_filters.js:198
+#: templates/js/translated/stock.js:931 templates/js/translated/stock.js:1873
+#: templates/js/translated/table_filters.js:129
+#: templates/js/translated/table_filters.js:211
msgid "Batch"
-msgstr ""
+msgstr "Batch"
#: build/templates/build/detail.html:119
#: order/templates/order/order_base.html:111
#: order/templates/order/sales_order_base.html:113
-#: templates/js/translated/build.js:910
+#: templates/js/translated/build.js:933
msgid "Created"
-msgstr ""
+msgstr "Gecreëerd"
#: build/templates/build/detail.html:130
msgid "No target date set"
-msgstr ""
+msgstr "Geen doeldatum ingesteld"
-#: build/templates/build/detail.html:135 templates/js/translated/build.js:888
+#: build/templates/build/detail.html:135 templates/js/translated/build.js:911
msgid "Completed"
msgstr ""
@@ -1223,26 +1252,26 @@ msgstr ""
#: build/templates/build/detail.html:173
msgid "Auto Allocate"
-msgstr ""
+msgstr "Automatisch toewijzen"
-#: build/templates/build/detail.html:175 templates/js/translated/build.js:778
+#: build/templates/build/detail.html:175 templates/js/translated/build.js:801
msgid "Unallocate stock"
-msgstr ""
+msgstr "Niet toegewezen voorraad"
#: build/templates/build/detail.html:176 build/views.py:318 build/views.py:638
msgid "Unallocate Stock"
-msgstr ""
+msgstr "Niet toegewezen voorraad"
#: build/templates/build/detail.html:179
msgid "Order required parts"
msgstr ""
#: build/templates/build/detail.html:180
-#: company/templates/company/detail.html:33
-#: company/templates/company/detail.html:75 order/views.py:679
+#: company/templates/company/detail.html:32
+#: company/templates/company/detail.html:72 order/views.py:679
#: part/templates/part/category.html:140
msgid "Order Parts"
-msgstr ""
+msgstr "Bestel onderdelen"
#: build/templates/build/detail.html:186
msgid "Untracked stock has been fully allocated for this Build Order"
@@ -1288,58 +1317,58 @@ msgstr ""
#: build/templates/build/navbar.html:45 order/templates/order/po_navbar.html:35
#: order/templates/order/sales_order_detail.html:43
#: order/templates/order/so_navbar.html:29 part/templates/part/detail.html:173
-#: part/templates/part/navbar.html:102 part/templates/part/navbar.html:105
-#: stock/templates/stock/item.html:87 stock/templates/stock/navbar.html:47
+#: part/templates/part/navbar.html:114 part/templates/part/navbar.html:117
+#: stock/templates/stock/item.html:88 stock/templates/stock/navbar.html:47
#: stock/templates/stock/navbar.html:50
msgid "Attachments"
-msgstr ""
+msgstr "Bijlagen"
#: build/templates/build/detail.html:257
msgid "Build Notes"
-msgstr ""
+msgstr "Bouw notities"
-#: build/templates/build/detail.html:261 build/templates/build/detail.html:397
-#: company/templates/company/detail.html:173
-#: company/templates/company/detail.html:200
+#: build/templates/build/detail.html:261 build/templates/build/detail.html:398
+#: company/templates/company/detail.html:169
+#: company/templates/company/detail.html:196
#: order/templates/order/purchase_order_detail.html:62
#: order/templates/order/purchase_order_detail.html:95
#: order/templates/order/sales_order_detail.html:58
#: order/templates/order/sales_order_detail.html:85
-#: part/templates/part/detail.html:109 stock/templates/stock/item.html:102
-#: stock/templates/stock/item.html:187
+#: part/templates/part/detail.html:109 stock/templates/stock/item.html:103
+#: stock/templates/stock/item.html:188
msgid "Edit Notes"
-msgstr ""
+msgstr "Notities Bewerken"
#: build/templates/build/detail.html:357
#: order/templates/order/po_attachments.html:79
-#: order/templates/order/purchase_order_detail.html:156
-#: order/templates/order/sales_order_detail.html:145
-#: part/templates/part/detail.html:802 stock/templates/stock/item.html:251
+#: order/templates/order/purchase_order_detail.html:157
+#: order/templates/order/sales_order_detail.html:146
+#: part/templates/part/detail.html:920 stock/templates/stock/item.html:253
#: templates/attachment_table.html:6
msgid "Add Attachment"
msgstr ""
-#: build/templates/build/detail.html:375
+#: build/templates/build/detail.html:376
#: order/templates/order/po_attachments.html:51
-#: order/templates/order/purchase_order_detail.html:128
-#: order/templates/order/sales_order_detail.html:118
-#: part/templates/part/detail.html:756 stock/templates/stock/item.html:219
+#: order/templates/order/purchase_order_detail.html:129
+#: order/templates/order/sales_order_detail.html:119
+#: part/templates/part/detail.html:874 stock/templates/stock/item.html:221
msgid "Edit Attachment"
msgstr ""
-#: build/templates/build/detail.html:382
+#: build/templates/build/detail.html:383
#: order/templates/order/po_attachments.html:58
-#: order/templates/order/purchase_order_detail.html:135
-#: order/templates/order/sales_order_detail.html:124
-#: part/templates/part/detail.html:765 stock/templates/stock/item.html:228
+#: order/templates/order/purchase_order_detail.html:136
+#: order/templates/order/sales_order_detail.html:125
+#: part/templates/part/detail.html:883 stock/templates/stock/item.html:230
msgid "Confirm Delete Operation"
msgstr ""
-#: build/templates/build/detail.html:383
+#: build/templates/build/detail.html:384
#: order/templates/order/po_attachments.html:59
-#: order/templates/order/purchase_order_detail.html:136
-#: order/templates/order/sales_order_detail.html:125
-#: part/templates/part/detail.html:766 stock/templates/stock/item.html:229
+#: order/templates/order/purchase_order_detail.html:137
+#: order/templates/order/sales_order_detail.html:126
+#: part/templates/part/detail.html:884 stock/templates/stock/item.html:231
msgid "Delete Attachment"
msgstr ""
@@ -1372,7 +1401,7 @@ msgid "Build Order Details"
msgstr ""
#: build/templates/build/navbar.html:15 order/templates/order/po_navbar.html:15
-#: templates/js/translated/stock.js:1414
+#: templates/js/translated/stock.js:1555
msgid "Details"
msgstr ""
@@ -1501,9 +1530,9 @@ msgstr ""
msgid "Stock item is over-allocated"
msgstr ""
-#: build/views.py:705 templates/js/translated/bom.js:250
-#: templates/js/translated/build.js:705 templates/js/translated/build.js:1000
-#: templates/js/translated/build.js:1179
+#: build/views.py:705 templates/js/translated/bom.js:269
+#: templates/js/translated/build.js:728 templates/js/translated/build.js:1019
+#: templates/js/translated/build.js:1196
msgid "Available"
msgstr ""
@@ -1539,7 +1568,7 @@ msgstr ""
msgid "Error reading file (data could be corrupted)"
msgstr ""
-#: common/forms.py:34 templates/js/translated/attachment.js:42
+#: common/forms.py:34 templates/js/translated/attachment.js:54
msgid "File"
msgstr ""
@@ -1556,546 +1585,594 @@ msgstr ""
msgid "Select {name} file to upload"
msgstr ""
-#: common/models.py:322 common/models.py:815 common/models.py:962
+#: common/models.py:308 common/models.py:839 common/models.py:986
msgid "Settings key (must be unique - case insensitive"
-msgstr ""
+msgstr "Instellingssleutel (moet uniek zijn - hoofdletter ongevoelig"
-#: common/models.py:324
+#: common/models.py:310
msgid "Settings value"
-msgstr ""
+msgstr "Waarde van de instelling"
-#: common/models.py:359
+#: common/models.py:345
msgid "Must be an integer value"
-msgstr ""
+msgstr "Moet een geheel getal zijn"
-#: common/models.py:382
+#: common/models.py:368
msgid "Value must be a boolean value"
-msgstr ""
+msgstr "Waarde moet een booleaanse waarde zijn"
-#: common/models.py:393
+#: common/models.py:379
msgid "Value must be an integer value"
-msgstr ""
+msgstr "Waarde moet een geheel getal zijn"
-#: common/models.py:416
+#: common/models.py:402
msgid "Key string must be unique"
-msgstr ""
+msgstr "Sleutelreeks moet uniek zijn"
+
+#: common/models.py:509
+msgid "InvenTree Instance Name"
+msgstr "Inventree Instantie Naam"
+
+#: common/models.py:511
+msgid "String descriptor for the server instance"
+msgstr "String-beschrijving voor de server instantie"
+
+#: common/models.py:515
+msgid "Use instance name"
+msgstr "Gebruik de instantie naam"
+
+#: common/models.py:516
+msgid "Use the instance name in the title-bar"
+msgstr "Gebruik de naam van de instantie in de titelbalk"
+
+#: common/models.py:522 company/models.py:99 company/models.py:100
+msgid "Company name"
+msgstr "Bedrijfsnaam"
#: common/models.py:523
-msgid "InvenTree Instance Name"
-msgstr ""
+msgid "Internal company name"
+msgstr "Interne bedrijfsnaam"
-#: common/models.py:525
-msgid "String descriptor for the server instance"
-msgstr ""
+#: common/models.py:528
+msgid "Base URL"
+msgstr "Basis URL"
#: common/models.py:529
-msgid "Use instance name"
-msgstr ""
+msgid "Base URL for server instance"
+msgstr "Basis URL voor serverinstantie"
-#: common/models.py:530
-msgid "Use the instance name in the title-bar"
-msgstr ""
+#: common/models.py:535
+msgid "Default Currency"
+msgstr "Standaard valuta"
-#: common/models.py:536 company/models.py:97 company/models.py:98
-msgid "Company name"
-msgstr ""
-
-#: common/models.py:537
-msgid "Internal company name"
-msgstr ""
+#: common/models.py:536
+msgid "Default currency"
+msgstr "Standaard valuta"
#: common/models.py:542
-msgid "Base URL"
-msgstr ""
+msgid "Download from URL"
+msgstr "Download van URL"
#: common/models.py:543
-msgid "Base URL for server instance"
-msgstr ""
+msgid "Allow download of remote images and files from external URL"
+msgstr "Download van afbeeldingen en bestanden vanaf een externe URL toestaan"
#: common/models.py:549
-msgid "Default Currency"
-msgstr ""
+msgid "Barcode Support"
+msgstr "Barcode ondersteuning"
#: common/models.py:550
-msgid "Default currency"
-msgstr ""
+msgid "Enable barcode scanner support"
+msgstr "Barcodescanner ondersteuning inschakelen"
#: common/models.py:556
-msgid "Download from URL"
-msgstr ""
+msgid "IPN Regex"
+msgstr "IPN Regex"
#: common/models.py:557
-msgid "Allow download of remote images and files from external URL"
-msgstr ""
-
-#: common/models.py:563
-msgid "Barcode Support"
-msgstr ""
-
-#: common/models.py:564
-msgid "Enable barcode scanner support"
-msgstr ""
-
-#: common/models.py:570
-msgid "IPN Regex"
-msgstr ""
-
-#: common/models.py:571
msgid "Regular expression pattern for matching Part IPN"
-msgstr ""
+msgstr "Reguliere expressiepatroon voor het corresponderen van deel IPN"
+
+#: common/models.py:561
+msgid "Allow Duplicate IPN"
+msgstr "Dubbele IPN toestaan"
+
+#: common/models.py:562
+msgid "Allow multiple parts to share the same IPN"
+msgstr "Toestaan dat meerdere onderdelen dezelfde IPN gebruiken"
+
+#: common/models.py:568
+msgid "Allow Editing IPN"
+msgstr "Bewerken IPN toestaan"
+
+#: common/models.py:569
+msgid "Allow changing the IPN value while editing a part"
+msgstr "Sta het wijzigen van de IPN toe tijdens het bewerken van een onderdeel"
#: common/models.py:575
-msgid "Allow Duplicate IPN"
-msgstr ""
-
-#: common/models.py:576
-msgid "Allow multiple parts to share the same IPN"
-msgstr ""
-
-#: common/models.py:582
-msgid "Allow Editing IPN"
-msgstr ""
-
-#: common/models.py:583
-msgid "Allow changing the IPN value while editing a part"
-msgstr ""
-
-#: common/models.py:589
msgid "Copy Part BOM Data"
msgstr ""
-#: common/models.py:590
+#: common/models.py:576
msgid "Copy BOM data by default when duplicating a part"
msgstr ""
-#: common/models.py:596
+#: common/models.py:582
msgid "Copy Part Parameter Data"
msgstr ""
-#: common/models.py:597
+#: common/models.py:583
msgid "Copy parameter data by default when duplicating a part"
msgstr ""
-#: common/models.py:603
+#: common/models.py:589
msgid "Copy Part Test Data"
msgstr ""
-#: common/models.py:604
+#: common/models.py:590
msgid "Copy test data by default when duplicating a part"
msgstr ""
-#: common/models.py:610
+#: common/models.py:596
msgid "Copy Category Parameter Templates"
msgstr ""
-#: common/models.py:611
+#: common/models.py:597
msgid "Copy category parameter templates when creating a part"
msgstr ""
-#: common/models.py:617 part/models.py:2236 report/models.py:187
-#: stock/forms.py:224 templates/js/translated/table_filters.js:25
-#: templates/js/translated/table_filters.js:329
+#: common/models.py:603 part/models.py:2252 report/models.py:187
+#: stock/forms.py:224 templates/js/translated/table_filters.js:38
+#: templates/js/translated/table_filters.js:342
msgid "Template"
msgstr ""
-#: common/models.py:618
+#: common/models.py:604
msgid "Parts are templates by default"
msgstr ""
-#: common/models.py:624 part/models.py:803
-#: templates/js/translated/table_filters.js:133
-#: templates/js/translated/table_filters.js:341
+#: common/models.py:610 part/models.py:805
+#: templates/js/translated/table_filters.js:146
+#: templates/js/translated/table_filters.js:354
msgid "Assembly"
msgstr ""
-#: common/models.py:625
+#: common/models.py:611
msgid "Parts can be assembled from other components by default"
msgstr ""
-#: common/models.py:631 part/models.py:809
-#: templates/js/translated/table_filters.js:345
+#: common/models.py:617 part/models.py:811
+#: templates/js/translated/table_filters.js:358
msgid "Component"
msgstr ""
-#: common/models.py:632
+#: common/models.py:618
msgid "Parts can be used as sub-components by default"
msgstr ""
-#: common/models.py:638 part/models.py:820
+#: common/models.py:624 part/models.py:822
msgid "Purchaseable"
msgstr ""
-#: common/models.py:639
+#: common/models.py:625
msgid "Parts are purchaseable by default"
msgstr ""
-#: common/models.py:645 part/models.py:825
-#: templates/js/translated/table_filters.js:353
+#: common/models.py:631 part/models.py:827
+#: templates/js/translated/table_filters.js:366
msgid "Salable"
msgstr ""
-#: common/models.py:646
+#: common/models.py:632
msgid "Parts are salable by default"
msgstr ""
-#: common/models.py:652 part/models.py:815
-#: templates/js/translated/table_filters.js:33
-#: templates/js/translated/table_filters.js:357
+#: common/models.py:638 part/models.py:817
+#: templates/js/translated/table_filters.js:46
+#: templates/js/translated/table_filters.js:370
msgid "Trackable"
msgstr ""
-#: common/models.py:653
+#: common/models.py:639
msgid "Parts are trackable by default"
msgstr ""
-#: common/models.py:659 part/models.py:835
-#: part/templates/part/part_base.html:61
-#: templates/js/translated/table_filters.js:29
+#: common/models.py:645 part/models.py:837
+#: part/templates/part/part_base.html:66
+#: templates/js/translated/table_filters.js:42
msgid "Virtual"
msgstr ""
-#: common/models.py:660
+#: common/models.py:646
msgid "Parts are virtual by default"
msgstr ""
-#: common/models.py:667
+#: common/models.py:653
msgid "Show Quantity in Forms"
msgstr ""
-#: common/models.py:668
+#: common/models.py:654
msgid "Display available part quantity in some forms"
msgstr ""
-#: common/models.py:674
+#: common/models.py:660
msgid "Show Import in Views"
msgstr ""
-#: common/models.py:675
+#: common/models.py:661
msgid "Display the import wizard in some part views"
msgstr ""
-#: common/models.py:681
+#: common/models.py:667
msgid "Show Price in Forms"
msgstr ""
-#: common/models.py:682
+#: common/models.py:668
msgid "Display part price in some forms"
msgstr ""
-#: common/models.py:688
+#: common/models.py:674
msgid "Show related parts"
msgstr ""
-#: common/models.py:689
+#: common/models.py:675
msgid "Display related parts for a part"
msgstr ""
-#: common/models.py:695
+#: common/models.py:681
msgid "Create initial stock"
msgstr ""
-#: common/models.py:696
+#: common/models.py:682
msgid "Create initial stock on part creation"
msgstr ""
-#: common/models.py:702
+#: common/models.py:688
msgid "Internal Prices"
-msgstr ""
+msgstr "Interne prijzen"
-#: common/models.py:703
+#: common/models.py:689
msgid "Enable internal prices for parts"
msgstr ""
-#: common/models.py:709
+#: common/models.py:695
msgid "Internal Price as BOM-Price"
msgstr ""
-#: common/models.py:710
+#: common/models.py:696
msgid "Use the internal price (if set) in BOM-price calculations"
msgstr ""
-#: common/models.py:716 templates/stats.html:25
+#: common/models.py:702 templates/stats.html:25
msgid "Debug Mode"
-msgstr ""
+msgstr "Foutopsporingsmodus"
-#: common/models.py:717
+#: common/models.py:703
msgid "Generate reports in debug mode (HTML output)"
msgstr ""
-#: common/models.py:723
+#: common/models.py:709
msgid "Page Size"
-msgstr ""
+msgstr "Paginagrootte"
-#: common/models.py:724
+#: common/models.py:710
msgid "Default page size for PDF reports"
msgstr ""
-#: common/models.py:734
+#: common/models.py:720
msgid "Test Reports"
-msgstr ""
+msgstr "Testrapport"
-#: common/models.py:735
+#: common/models.py:721
msgid "Enable generation of test reports"
msgstr ""
-#: common/models.py:741
+#: common/models.py:727
msgid "Stock Expiry"
-msgstr ""
+msgstr "Verlopen voorraad"
-#: common/models.py:742
+#: common/models.py:728
msgid "Enable stock expiry functionality"
-msgstr ""
+msgstr "Verlopen voorraad functionaliteit inschakelen"
-#: common/models.py:748
+#: common/models.py:734
msgid "Sell Expired Stock"
-msgstr ""
+msgstr "Verkoop verlopen voorraad"
-#: common/models.py:749
+#: common/models.py:735
msgid "Allow sale of expired stock"
-msgstr ""
+msgstr "Verkoop verlopen voorraad toestaan"
-#: common/models.py:755
+#: common/models.py:741
msgid "Stock Stale Time"
msgstr ""
-#: common/models.py:756
+#: common/models.py:742
msgid "Number of days stock items are considered stale before expiring"
msgstr ""
-#: common/models.py:758
+#: common/models.py:744
msgid "days"
-msgstr ""
+msgstr "dagen"
-#: common/models.py:763
+#: common/models.py:749
msgid "Build Expired Stock"
msgstr ""
-#: common/models.py:764
+#: common/models.py:750
msgid "Allow building with expired stock"
msgstr ""
-#: common/models.py:770
+#: common/models.py:756
msgid "Stock Ownership Control"
msgstr ""
-#: common/models.py:771
+#: common/models.py:757
msgid "Enable ownership control over stock locations and items"
msgstr ""
-#: common/models.py:777
+#: common/models.py:763
msgid "Group by Part"
msgstr ""
-#: common/models.py:778
+#: common/models.py:764
msgid "Group stock items by part reference in table views"
msgstr ""
-#: common/models.py:784
+#: common/models.py:770
msgid "Build Order Reference Prefix"
msgstr ""
-#: common/models.py:785
+#: common/models.py:771
msgid "Prefix value for build order reference"
msgstr ""
-#: common/models.py:790
+#: common/models.py:776
msgid "Build Order Reference Regex"
msgstr ""
-#: common/models.py:791
+#: common/models.py:777
msgid "Regular expression pattern for matching build order reference"
msgstr ""
-#: common/models.py:795
+#: common/models.py:781
msgid "Sales Order Reference Prefix"
msgstr ""
-#: common/models.py:796
+#: common/models.py:782
msgid "Prefix value for sales order reference"
msgstr ""
-#: common/models.py:801
+#: common/models.py:787
msgid "Purchase Order Reference Prefix"
msgstr ""
-#: common/models.py:802
+#: common/models.py:788
msgid "Prefix value for purchase order reference"
msgstr ""
-#: common/models.py:826
+#: common/models.py:794
+msgid "Enable build"
+msgstr ""
+
+#: common/models.py:795
+msgid "Enable build functionality in InvenTree interface"
+msgstr ""
+
+#: common/models.py:800
+msgid "Enable buy"
+msgstr ""
+
+#: common/models.py:801
+msgid "Enable buy functionality in InvenTree interface"
+msgstr ""
+
+#: common/models.py:806
+msgid "Enable sell"
+msgstr ""
+
+#: common/models.py:807
+msgid "Enable sell functionality in InvenTree interface"
+msgstr ""
+
+#: common/models.py:812
+msgid "Enable stock"
+msgstr ""
+
+#: common/models.py:813
+msgid "Enable stock functionality in InvenTree interface"
+msgstr ""
+
+#: common/models.py:818
+msgid "Enable SO"
+msgstr ""
+
+#: common/models.py:819
+msgid "Enable SO functionality in InvenTree interface"
+msgstr ""
+
+#: common/models.py:824
+msgid "Enable PO"
+msgstr ""
+
+#: common/models.py:825
+msgid "Enable PO functionality in InvenTree interface"
+msgstr ""
+
+#: common/models.py:850
msgid "Show starred parts"
msgstr ""
-#: common/models.py:827
+#: common/models.py:851
msgid "Show starred parts on the homepage"
msgstr ""
-#: common/models.py:832
+#: common/models.py:856
msgid "Show latest parts"
msgstr ""
-#: common/models.py:833
+#: common/models.py:857
msgid "Show latest parts on the homepage"
msgstr ""
-#: common/models.py:838
+#: common/models.py:862
msgid "Recent Part Count"
msgstr ""
-#: common/models.py:839
+#: common/models.py:863
msgid "Number of recent parts to display on index page"
msgstr ""
-#: common/models.py:845
+#: common/models.py:869
msgid "Show unvalidated BOMs"
msgstr ""
-#: common/models.py:846
+#: common/models.py:870
msgid "Show BOMs that await validation on the homepage"
msgstr ""
-#: common/models.py:851
+#: common/models.py:875
msgid "Show recent stock changes"
msgstr ""
-#: common/models.py:852
+#: common/models.py:876
msgid "Show recently changed stock items on the homepage"
msgstr ""
-#: common/models.py:857
+#: common/models.py:881
msgid "Recent Stock Count"
msgstr ""
-#: common/models.py:858
+#: common/models.py:882
msgid "Number of recent stock items to display on index page"
msgstr ""
-#: common/models.py:863
+#: common/models.py:887
msgid "Show low stock"
msgstr ""
-#: common/models.py:864
+#: common/models.py:888
msgid "Show low stock items on the homepage"
msgstr ""
-#: common/models.py:869
+#: common/models.py:893
msgid "Show depleted stock"
msgstr ""
-#: common/models.py:870
+#: common/models.py:894
msgid "Show depleted stock items on the homepage"
msgstr ""
-#: common/models.py:875
+#: common/models.py:899
msgid "Show needed stock"
msgstr ""
-#: common/models.py:876
+#: common/models.py:900
msgid "Show stock items needed for builds on the homepage"
msgstr ""
-#: common/models.py:881
+#: common/models.py:905
msgid "Show expired stock"
msgstr ""
-#: common/models.py:882
+#: common/models.py:906
msgid "Show expired stock items on the homepage"
msgstr ""
-#: common/models.py:887
+#: common/models.py:911
msgid "Show stale stock"
msgstr ""
-#: common/models.py:888
+#: common/models.py:912
msgid "Show stale stock items on the homepage"
msgstr ""
-#: common/models.py:893
+#: common/models.py:917
msgid "Show pending builds"
msgstr ""
-#: common/models.py:894
+#: common/models.py:918
msgid "Show pending builds on the homepage"
msgstr ""
-#: common/models.py:899
+#: common/models.py:923
msgid "Show overdue builds"
msgstr ""
-#: common/models.py:900
+#: common/models.py:924
msgid "Show overdue builds on the homepage"
msgstr ""
-#: common/models.py:905
+#: common/models.py:929
msgid "Show outstanding POs"
msgstr ""
-#: common/models.py:906
+#: common/models.py:930
msgid "Show outstanding POs on the homepage"
msgstr ""
-#: common/models.py:911
+#: common/models.py:935
msgid "Show overdue POs"
msgstr ""
-#: common/models.py:912
+#: common/models.py:936
msgid "Show overdue POs on the homepage"
msgstr ""
-#: common/models.py:917
+#: common/models.py:941
msgid "Show outstanding SOs"
msgstr ""
-#: common/models.py:918
+#: common/models.py:942
msgid "Show outstanding SOs on the homepage"
msgstr ""
-#: common/models.py:923
+#: common/models.py:947
msgid "Show overdue SOs"
msgstr ""
-#: common/models.py:924
+#: common/models.py:948
msgid "Show overdue SOs on the homepage"
msgstr ""
-#: common/models.py:930
+#: common/models.py:954
msgid "Inline label display"
msgstr ""
-#: common/models.py:931
+#: common/models.py:955
msgid "Display PDF labels in the browser, instead of downloading as a file"
msgstr ""
-#: common/models.py:937
+#: common/models.py:961
msgid "Inline report display"
msgstr ""
-#: common/models.py:938
+#: common/models.py:962
msgid "Display PDF reports in the browser, instead of downloading as a file"
msgstr ""
-#: common/models.py:944
+#: common/models.py:968
msgid "Search Preview Results"
msgstr ""
-#: common/models.py:945
+#: common/models.py:969
msgid "Number of results to show in search preview window"
msgstr ""
-#: common/models.py:1002 company/forms.py:43
+#: common/models.py:1026 company/forms.py:43
msgid "Price break quantity"
msgstr ""
-#: common/models.py:1009 company/templates/company/supplier_part.html:231
-#: templates/js/translated/part.js:1153
+#: common/models.py:1033 company/templates/company/supplier_part.html:231
+#: templates/js/translated/part.js:1322
msgid "Price"
msgstr ""
-#: common/models.py:1010
+#: common/models.py:1034
msgid "Unit price at specified quantity"
msgstr ""
-#: common/models.py:1103
+#: common/models.py:1127
msgid "Default"
msgstr ""
@@ -2123,7 +2200,7 @@ msgstr ""
#: order/templates/order/po_navbar.html:19
#: order/templates/order/po_navbar.html:22
#: order/templates/order/purchase_order_detail.html:26 order/views.py:290
-#: part/templates/part/bom_upload/upload_file.html:45
+#: part/templates/part/bom_upload/upload_file.html:65
#: part/templates/part/import_wizard/part_upload.html:45 part/views.py:268
#: part/views.py:882
msgid "Upload File"
@@ -2154,7 +2231,7 @@ msgstr ""
#: order/templates/order/order_wizard/po_upload.html:40
#: 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:43
+#: part/templates/part/bom_upload/upload_file.html:63
#: 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:43
@@ -2169,244 +2246,249 @@ msgstr ""
msgid "Image URL"
msgstr ""
-#: company/models.py:102
+#: company/models.py:104
msgid "Company description"
msgstr ""
-#: company/models.py:103
+#: company/models.py:105
msgid "Description of the company"
msgstr ""
-#: company/models.py:109 company/templates/company/company_base.html:70
-#: templates/js/translated/company.js:303
+#: company/models.py:111 company/templates/company/company_base.html:70
+#: templates/js/translated/company.js:348
msgid "Website"
msgstr ""
-#: company/models.py:110
+#: company/models.py:112
msgid "Company website URL"
msgstr ""
-#: company/models.py:114 company/templates/company/company_base.html:88
+#: company/models.py:116 company/templates/company/company_base.html:88
msgid "Address"
msgstr ""
-#: company/models.py:115
+#: company/models.py:117
msgid "Company address"
msgstr ""
-#: company/models.py:118
+#: company/models.py:120
msgid "Phone number"
msgstr ""
-#: company/models.py:119
+#: company/models.py:121
msgid "Contact phone number"
msgstr ""
-#: company/models.py:122 company/templates/company/company_base.html:102
+#: company/models.py:124 company/templates/company/company_base.html:102
msgid "Email"
msgstr ""
-#: company/models.py:122
+#: company/models.py:124
msgid "Contact email address"
msgstr ""
-#: company/models.py:125 company/templates/company/company_base.html:109
+#: company/models.py:127 company/templates/company/company_base.html:109
msgid "Contact"
msgstr ""
-#: company/models.py:126
+#: company/models.py:128
msgid "Point of contact"
msgstr ""
-#: company/models.py:128 company/models.py:345 company/models.py:513
-#: order/models.py:160 part/models.py:712
+#: company/models.py:130 company/models.py:347 company/models.py:563
+#: order/models.py:160 part/models.py:714
#: report/templates/report/inventree_build_order_base.html:165
-#: templates/js/translated/company.js:486
-#: templates/js/translated/company.js:768 templates/js/translated/part.js:819
+#: templates/js/translated/company.js:535
+#: templates/js/translated/company.js:823 templates/js/translated/part.js:972
msgid "Link"
msgstr ""
-#: company/models.py:128
+#: company/models.py:130
msgid "Link to external company information"
msgstr ""
-#: company/models.py:136 part/models.py:722
+#: company/models.py:138 part/models.py:724
msgid "Image"
msgstr ""
-#: company/models.py:141
+#: company/models.py:143
msgid "is customer"
msgstr ""
-#: company/models.py:141
+#: company/models.py:143
msgid "Do you sell items to this company?"
msgstr ""
-#: company/models.py:143
+#: company/models.py:145
msgid "is supplier"
msgstr ""
-#: company/models.py:143
+#: company/models.py:145
msgid "Do you purchase items from this company?"
msgstr ""
-#: company/models.py:145
+#: company/models.py:147
msgid "is manufacturer"
msgstr ""
-#: company/models.py:145
+#: company/models.py:147
msgid "Does this company manufacture parts?"
msgstr ""
-#: company/models.py:149 company/serializers.py:245
-#: company/templates/company/company_base.html:76
+#: company/models.py:151 company/serializers.py:264
+#: company/templates/company/company_base.html:76 stock/serializers.py:155
msgid "Currency"
msgstr ""
-#: company/models.py:152
+#: company/models.py:154
msgid "Default currency used for this company"
msgstr ""
-#: company/models.py:317 company/models.py:484 stock/models.py:448
+#: company/models.py:319 company/models.py:534 stock/models.py:454
#: stock/templates/stock/item_base.html:237
msgid "Base Part"
msgstr ""
-#: company/models.py:321 company/models.py:488 order/views.py:1082
+#: company/models.py:323 company/models.py:538 order/views.py:1082
msgid "Select part"
msgstr ""
-#: company/models.py:332 company/templates/company/company_base.html:116
+#: company/models.py:334 company/templates/company/company_base.html:116
#: company/templates/company/manufacturer_part.html:89
#: company/templates/company/supplier_part.html:98 part/bom.py:170
#: part/bom.py:241 stock/templates/stock/item_base.html:366
-#: templates/js/translated/company.js:287
-#: templates/js/translated/company.js:463
-#: templates/js/translated/company.js:739
+#: templates/js/translated/company.js:332
+#: templates/js/translated/company.js:512
+#: templates/js/translated/company.js:794 templates/js/translated/part.js:222
msgid "Manufacturer"
msgstr ""
-#: company/models.py:333
+#: company/models.py:335 templates/js/translated/part.js:223
msgid "Select manufacturer"
msgstr ""
-#: company/models.py:339 company/templates/company/manufacturer_part.html:93
-#: company/templates/company/supplier_part.html:106
-#: order/templates/order/purchase_order_detail.html:331 part/bom.py:171
-#: part/bom.py:242 templates/js/translated/company.js:479
-#: templates/js/translated/company.js:757
+#: company/models.py:341 company/templates/company/manufacturer_part.html:93
+#: company/templates/company/supplier_part.html:106 part/bom.py:171
+#: part/bom.py:242 templates/js/translated/company.js:528
+#: templates/js/translated/company.js:812 templates/js/translated/order.js:505
+#: templates/js/translated/part.js:233
msgid "MPN"
msgstr ""
-#: company/models.py:340
+#: company/models.py:342 templates/js/translated/part.js:234
msgid "Manufacturer Part Number"
msgstr ""
-#: company/models.py:346
+#: company/models.py:348
msgid "URL for external manufacturer part link"
msgstr ""
-#: company/models.py:352
+#: company/models.py:354
msgid "Manufacturer part description"
msgstr ""
-#: company/models.py:406 company/models.py:507
+#: company/models.py:408 company/models.py:557
#: company/templates/company/manufacturer_part.html:6
#: company/templates/company/manufacturer_part.html:23
#: stock/templates/stock/item_base.html:376
msgid "Manufacturer Part"
msgstr ""
-#: company/models.py:413
+#: company/models.py:415
msgid "Parameter name"
msgstr ""
-#: company/models.py:419
+#: company/models.py:421
#: report/templates/report/inventree_test_report_base.html:90
-#: stock/models.py:1808 templates/InvenTree/settings/header.html:8
-#: templates/js/translated/company.js:589 templates/js/translated/part.js:480
-#: templates/js/translated/stock.js:505
+#: stock/models.py:1819 templates/InvenTree/settings/header.html:8
+#: templates/js/translated/company.js:642 templates/js/translated/part.js:612
+#: templates/js/translated/stock.js:576
msgid "Value"
msgstr ""
-#: company/models.py:420
+#: company/models.py:422
msgid "Parameter value"
msgstr ""
-#: company/models.py:426 part/models.py:797 part/models.py:2204
-#: templates/js/translated/company.js:595 templates/js/translated/part.js:486
+#: company/models.py:428 part/models.py:799 part/models.py:2220
+#: templates/js/translated/company.js:648 templates/js/translated/part.js:618
msgid "Units"
msgstr ""
-#: company/models.py:427
+#: company/models.py:429
msgid "Parameter units"
msgstr ""
-#: company/models.py:494 company/templates/company/company_base.html:121
+#: company/models.py:501
+msgid "Linked manufacturer part must reference the same base part"
+msgstr ""
+
+#: company/models.py:544 company/templates/company/company_base.html:121
#: company/templates/company/supplier_part.html:88 order/models.py:260
#: order/templates/order/order_base.html:92
#: order/templates/order/order_wizard/select_pos.html:30 part/bom.py:175
#: part/bom.py:286 stock/templates/stock/item_base.html:383
-#: templates/js/translated/company.js:291
-#: templates/js/translated/company.js:713 templates/js/translated/order.js:254
+#: templates/js/translated/company.js:336
+#: templates/js/translated/company.js:768 templates/js/translated/order.js:328
+#: templates/js/translated/part.js:203
msgid "Supplier"
msgstr ""
-#: company/models.py:495
+#: company/models.py:545 templates/js/translated/part.js:204
msgid "Select supplier"
msgstr ""
-#: company/models.py:500 company/templates/company/supplier_part.html:92
-#: order/templates/order/purchase_order_detail.html:318 part/bom.py:176
-#: part/bom.py:287
+#: company/models.py:550 company/templates/company/supplier_part.html:92
+#: part/bom.py:176 part/bom.py:287 templates/js/translated/order.js:492
+#: templates/js/translated/part.js:214
msgid "SKU"
msgstr ""
-#: company/models.py:501
+#: company/models.py:551 templates/js/translated/part.js:215
msgid "Supplier stock keeping unit"
msgstr ""
-#: company/models.py:508
+#: company/models.py:558
msgid "Select manufacturer part"
msgstr ""
-#: company/models.py:514
+#: company/models.py:564
msgid "URL for external supplier part link"
msgstr ""
-#: company/models.py:520
+#: company/models.py:570
msgid "Supplier part description"
msgstr ""
-#: company/models.py:525 company/templates/company/supplier_part.html:120
-#: part/models.py:2352 report/templates/report/inventree_po_report.html:93
+#: company/models.py:575 company/templates/company/supplier_part.html:120
+#: part/models.py:2368 report/templates/report/inventree_po_report.html:93
#: report/templates/report/inventree_so_report.html:93
msgid "Note"
msgstr ""
-#: company/models.py:529 part/models.py:1590
+#: company/models.py:579 part/models.py:1599
msgid "base cost"
msgstr ""
-#: company/models.py:529 part/models.py:1590
+#: company/models.py:579 part/models.py:1599
msgid "Minimum charge (e.g. stocking fee)"
msgstr ""
-#: company/models.py:531 company/templates/company/supplier_part.html:113
-#: stock/models.py:472 stock/templates/stock/item_base.html:324
-#: templates/js/translated/company.js:789 templates/js/translated/stock.js:1086
+#: company/models.py:581 company/templates/company/supplier_part.html:113
+#: stock/models.py:478 stock/templates/stock/item_base.html:324
+#: templates/js/translated/company.js:844 templates/js/translated/stock.js:1057
msgid "Packaging"
msgstr ""
-#: company/models.py:531
+#: company/models.py:581
msgid "Part packaging"
msgstr ""
-#: company/models.py:533 part/models.py:1592
+#: company/models.py:583 part/models.py:1601
msgid "multiple"
msgstr ""
-#: company/models.py:533
+#: company/models.py:583
msgid "Order multiple"
msgstr ""
@@ -2420,7 +2502,7 @@ msgstr ""
#: company/templates/company/company_base.html:9
#: company/templates/company/company_base.html:35
-#: templates/InvenTree/search.html:304 templates/js/translated/company.js:276
+#: templates/InvenTree/search.html:304 templates/js/translated/company.js:321
msgid "Company"
msgstr ""
@@ -2435,7 +2517,7 @@ msgid "Download image from URL"
msgstr ""
#: company/templates/company/company_base.html:46
-#: templates/js/translated/order.js:83
+#: templates/js/translated/order.js:117
msgid "Create Purchase Order"
msgstr ""
@@ -2460,16 +2542,16 @@ msgstr ""
msgid "Phone"
msgstr ""
-#: company/templates/company/company_base.html:126 order/models.py:544
-#: order/templates/order/sales_order_base.html:94 stock/models.py:490
-#: stock/models.py:491 stock/templates/stock/item_base.html:276
-#: templates/js/translated/company.js:283 templates/js/translated/order.js:351
-#: templates/js/translated/stock.js:1467
+#: company/templates/company/company_base.html:126 order/models.py:550
+#: order/templates/order/sales_order_base.html:94 stock/models.py:496
+#: stock/models.py:497 stock/templates/stock/item_base.html:276
+#: templates/js/translated/company.js:328 templates/js/translated/order.js:692
+#: templates/js/translated/stock.js:1608
msgid "Customer"
msgstr ""
#: company/templates/company/company_base.html:193
-#: part/templates/part/part_base.html:405
+#: part/templates/part/part_base.html:418
msgid "Upload Image"
msgstr ""
@@ -2490,8 +2572,8 @@ msgstr ""
msgid "New Supplier Part"
msgstr ""
-#: company/templates/company/detail.html:28
-#: company/templates/company/detail.html:70
+#: company/templates/company/detail.html:27
+#: company/templates/company/detail.html:67
#: company/templates/company/manufacturer_part.html:112
#: company/templates/company/manufacturer_part.html:136
#: part/templates/part/category.html:135 part/templates/part/detail.html:292
@@ -2499,106 +2581,106 @@ msgstr ""
msgid "Options"
msgstr ""
-#: company/templates/company/detail.html:33
-#: company/templates/company/detail.html:75
+#: company/templates/company/detail.html:32
+#: company/templates/company/detail.html:72
#: part/templates/part/category.html:140
msgid "Order parts"
msgstr ""
-#: company/templates/company/detail.html:36
-#: company/templates/company/detail.html:78
+#: company/templates/company/detail.html:35
+#: company/templates/company/detail.html:75
msgid "Delete parts"
msgstr ""
-#: company/templates/company/detail.html:36
-#: company/templates/company/detail.html:78
+#: company/templates/company/detail.html:35
+#: company/templates/company/detail.html:75
msgid "Delete Parts"
msgstr ""
-#: company/templates/company/detail.html:56 templates/InvenTree/search.html:149
+#: company/templates/company/detail.html:54 templates/InvenTree/search.html:149
msgid "Manufacturer Parts"
msgstr ""
-#: company/templates/company/detail.html:64
+#: company/templates/company/detail.html:62
msgid "Create new manufacturer part"
msgstr ""
-#: company/templates/company/detail.html:65 part/templates/part/detail.html:312
+#: company/templates/company/detail.html:63 part/templates/part/detail.html:312
msgid "New Manufacturer Part"
msgstr ""
-#: company/templates/company/detail.html:97
+#: company/templates/company/detail.html:93
msgid "Supplier Stock"
msgstr ""
-#: company/templates/company/detail.html:106
-#: company/templates/company/navbar.html:40
-#: company/templates/company/navbar.html:43
+#: company/templates/company/detail.html:102
+#: company/templates/company/navbar.html:46
+#: company/templates/company/navbar.html:49
#: order/templates/order/purchase_orders.html:8
#: order/templates/order/purchase_orders.html:13
-#: part/templates/part/detail.html:50 part/templates/part/navbar.html:71
-#: part/templates/part/navbar.html:74 templates/InvenTree/index.html:260
+#: part/templates/part/detail.html:50 part/templates/part/navbar.html:82
+#: part/templates/part/navbar.html:85 templates/InvenTree/index.html:260
#: templates/InvenTree/search.html:325
#: templates/InvenTree/settings/navbar.html:107
-#: templates/InvenTree/settings/navbar.html:109 templates/navbar.html:37
+#: templates/InvenTree/settings/navbar.html:109 templates/navbar.html:44
#: users/models.py:45
msgid "Purchase Orders"
msgstr ""
-#: company/templates/company/detail.html:112
+#: company/templates/company/detail.html:108
#: order/templates/order/purchase_orders.html:20
msgid "Create new purchase order"
msgstr ""
-#: company/templates/company/detail.html:113
+#: company/templates/company/detail.html:109
#: order/templates/order/purchase_orders.html:21
msgid "New Purchase Order"
msgstr ""
-#: company/templates/company/detail.html:128
-#: company/templates/company/navbar.html:49
-#: company/templates/company/navbar.html:52
+#: company/templates/company/detail.html:124
+#: company/templates/company/navbar.html:55
+#: company/templates/company/navbar.html:58
#: order/templates/order/sales_orders.html:8
#: order/templates/order/sales_orders.html:13
-#: part/templates/part/detail.html:71 part/templates/part/navbar.html:79
-#: part/templates/part/navbar.html:82 templates/InvenTree/index.html:291
+#: part/templates/part/detail.html:71 part/templates/part/navbar.html:91
+#: part/templates/part/navbar.html:94 templates/InvenTree/index.html:291
#: templates/InvenTree/search.html:345
#: templates/InvenTree/settings/navbar.html:113
-#: templates/InvenTree/settings/navbar.html:115 templates/navbar.html:46
+#: templates/InvenTree/settings/navbar.html:115 templates/navbar.html:55
#: users/models.py:46
msgid "Sales Orders"
msgstr ""
-#: company/templates/company/detail.html:134
+#: company/templates/company/detail.html:130
#: order/templates/order/sales_orders.html:20
msgid "Create new sales order"
msgstr ""
-#: company/templates/company/detail.html:135
+#: company/templates/company/detail.html:131
#: order/templates/order/sales_orders.html:21
msgid "New Sales Order"
msgstr ""
-#: company/templates/company/detail.html:151
-#: company/templates/company/navbar.html:55
-#: company/templates/company/navbar.html:58
-#: templates/js/translated/build.js:597
+#: company/templates/company/detail.html:147
+#: company/templates/company/navbar.html:61
+#: company/templates/company/navbar.html:64
+#: templates/js/translated/build.js:620
msgid "Assigned Stock"
msgstr ""
-#: company/templates/company/detail.html:169
+#: company/templates/company/detail.html:165
msgid "Company Notes"
msgstr ""
#: company/templates/company/detail.html:364
#: company/templates/company/manufacturer_part.html:200
-#: part/templates/part/detail.html:826
+#: part/templates/part/detail.html:357
msgid "Delete Supplier Parts?"
msgstr ""
#: company/templates/company/detail.html:365
#: company/templates/company/manufacturer_part.html:201
-#: part/templates/part/detail.html:827
+#: part/templates/part/detail.html:358
msgid "All selected supplier parts will be deleted"
msgstr ""
@@ -2609,17 +2691,17 @@ msgstr ""
#: company/templates/company/manufacturer_part.html:40
#: company/templates/company/supplier_part.html:40
#: company/templates/company/supplier_part.html:146
-#: part/templates/part/detail.html:55 part/templates/part/part_base.html:109
+#: part/templates/part/detail.html:55 part/templates/part/part_base.html:116
msgid "Order part"
msgstr ""
#: company/templates/company/manufacturer_part.html:45
-#: templates/js/translated/company.js:511
+#: templates/js/translated/company.js:560
msgid "Edit manufacturer part"
msgstr ""
#: company/templates/company/manufacturer_part.html:49
-#: templates/js/translated/company.js:512
+#: templates/js/translated/company.js:561
msgid "Delete manufacturer part"
msgstr ""
@@ -2634,9 +2716,9 @@ msgstr ""
#: company/templates/company/manufacturer_part.html:103
#: company/templates/company/manufacturer_part_navbar.html:21
-#: company/views.py:49 part/templates/part/navbar.html:65
-#: part/templates/part/navbar.html:68 part/templates/part/prices.html:144
-#: templates/InvenTree/search.html:316 templates/navbar.html:35
+#: company/views.py:49 part/templates/part/navbar.html:75
+#: part/templates/part/navbar.html:78 part/templates/part/prices.html:163
+#: templates/InvenTree/search.html:316 templates/navbar.html:41
msgid "Suppliers"
msgstr ""
@@ -2649,8 +2731,8 @@ msgstr ""
#: company/templates/company/manufacturer_part.html:138
#: company/templates/company/manufacturer_part.html:239
#: part/templates/part/detail.html:214 part/templates/part/detail.html:294
-#: part/templates/part/detail.html:317 templates/js/translated/company.js:377
-#: users/models.py:194
+#: part/templates/part/detail.html:317 templates/js/translated/company.js:424
+#: templates/js/translated/helpers.js:31 users/models.py:194
msgid "Delete"
msgstr ""
@@ -2659,8 +2741,8 @@ msgstr ""
#: company/templates/company/manufacturer_part_navbar.html:14
#: part/templates/part/category_navbar.html:38
#: part/templates/part/category_navbar.html:41
-#: part/templates/part/detail.html:155 part/templates/part/navbar.html:14
-#: part/templates/part/navbar.html:17
+#: part/templates/part/detail.html:155 part/templates/part/navbar.html:20
+#: part/templates/part/navbar.html:23
msgid "Parameters"
msgstr ""
@@ -2676,7 +2758,7 @@ msgid "Delete parameters"
msgstr ""
#: company/templates/company/manufacturer_part.html:176
-#: part/templates/part/detail.html:719
+#: part/templates/part/detail.html:834
msgid "Add Parameter"
msgstr ""
@@ -2693,18 +2775,18 @@ msgid "Manufacturer Part Stock"
msgstr ""
#: company/templates/company/manufacturer_part_navbar.html:29
-#: company/templates/company/navbar.html:34
+#: company/templates/company/navbar.html:39
#: company/templates/company/supplier_part_navbar.html:15
-#: part/templates/part/navbar.html:31 stock/api.py:53
+#: part/templates/part/navbar.html:38 stock/api.py:54
#: stock/templates/stock/loc_link.html:7 stock/templates/stock/location.html:36
#: stock/templates/stock/stock_app_base.html:10
#: templates/InvenTree/index.html:150 templates/InvenTree/search.html:196
#: templates/InvenTree/search.html:232
#: templates/InvenTree/settings/navbar.html:95
#: templates/InvenTree/settings/navbar.html:97
-#: templates/js/translated/part.js:401 templates/js/translated/part.js:626
-#: templates/js/translated/part.js:786 templates/js/translated/stock.js:133
-#: templates/js/translated/stock.js:935 templates/navbar.html:26
+#: templates/js/translated/part.js:529 templates/js/translated/part.js:758
+#: templates/js/translated/part.js:934 templates/js/translated/stock.js:202
+#: templates/js/translated/stock.js:850 templates/navbar.html:32
msgid "Stock"
msgstr ""
@@ -2717,41 +2799,41 @@ msgstr ""
msgid "Orders"
msgstr ""
-#: company/templates/company/navbar.html:13
-#: company/templates/company/navbar.html:16
+#: company/templates/company/navbar.html:17
+#: company/templates/company/navbar.html:20
msgid "Manufactured Parts"
msgstr ""
-#: company/templates/company/navbar.html:22
-#: company/templates/company/navbar.html:25
+#: company/templates/company/navbar.html:26
+#: company/templates/company/navbar.html:29
msgid "Supplied Parts"
msgstr ""
-#: company/templates/company/navbar.html:31 part/templates/part/navbar.html:28
+#: company/templates/company/navbar.html:36 part/templates/part/navbar.html:35
#: stock/templates/stock/location.html:119
#: stock/templates/stock/location.html:134
#: stock/templates/stock/location.html:148
#: stock/templates/stock/location_navbar.html:18
#: stock/templates/stock/location_navbar.html:21
-#: templates/InvenTree/search.html:198 templates/js/translated/stock.js:1366
+#: templates/InvenTree/search.html:198 templates/js/translated/stock.js:1507
#: templates/stats.html:93 templates/stats.html:102 users/models.py:43
msgid "Stock Items"
msgstr ""
#: company/templates/company/supplier_part.html:7
-#: company/templates/company/supplier_part.html:24 stock/models.py:457
+#: company/templates/company/supplier_part.html:24 stock/models.py:463
#: stock/templates/stock/item_base.html:388
-#: templates/js/translated/company.js:729 templates/js/translated/stock.js:1058
+#: templates/js/translated/company.js:784 templates/js/translated/stock.js:1014
msgid "Supplier Part"
msgstr ""
#: company/templates/company/supplier_part.html:44
-#: templates/js/translated/company.js:802
+#: templates/js/translated/company.js:857
msgid "Edit supplier part"
msgstr ""
#: company/templates/company/supplier_part.html:48
-#: templates/js/translated/company.js:803
+#: templates/js/translated/company.js:858
msgid "Delete supplier part"
msgstr ""
@@ -2775,13 +2857,13 @@ msgid "Order Part"
msgstr ""
#: company/templates/company/supplier_part.html:158
-#: part/templates/part/navbar.html:58 part/templates/part/prices.html:7
+#: part/templates/part/navbar.html:67 part/templates/part/prices.html:7
msgid "Pricing Information"
msgstr ""
#: company/templates/company/supplier_part.html:164
#: company/templates/company/supplier_part.html:265
-#: part/templates/part/prices.html:253 part/views.py:1722
+#: part/templates/part/prices.html:271 part/views.py:1730
msgid "Add Price Break"
msgstr ""
@@ -2789,11 +2871,11 @@ msgstr ""
msgid "No price break information found"
msgstr ""
-#: company/templates/company/supplier_part.html:199 part/views.py:1784
+#: company/templates/company/supplier_part.html:199 part/views.py:1792
msgid "Delete Price Break"
msgstr ""
-#: company/templates/company/supplier_part.html:213 part/views.py:1770
+#: company/templates/company/supplier_part.html:213 part/views.py:1778
msgid "Edit Price Break"
msgstr ""
@@ -2817,8 +2899,8 @@ msgstr ""
msgid "New Supplier"
msgstr ""
-#: company/views.py:55 part/templates/part/prices.html:148
-#: templates/InvenTree/search.html:306 templates/navbar.html:36
+#: company/views.py:55 part/templates/part/prices.html:167
+#: templates/InvenTree/search.html:306 templates/navbar.html:42
msgid "Manufacturers"
msgstr ""
@@ -2827,7 +2909,7 @@ msgid "New Manufacturer"
msgstr ""
#: company/views.py:61 templates/InvenTree/search.html:336
-#: templates/navbar.html:45
+#: templates/navbar.html:53
msgid "Customers"
msgstr ""
@@ -2929,6 +3011,10 @@ msgstr ""
msgid "Part query filters (comma-separated value of key=value pairs)"
msgstr ""
+#: order/api.py:302
+msgid "Destination location must be specified"
+msgstr ""
+
#: order/forms.py:30 order/templates/order/order_base.html:47
msgid "Place order"
msgstr ""
@@ -2978,11 +3064,11 @@ msgstr ""
msgid "Order notes"
msgstr ""
-#: order/models.py:247 order/models.py:534
+#: order/models.py:247 order/models.py:540
msgid "Order reference"
msgstr ""
-#: order/models.py:252 order/models.py:549
+#: order/models.py:252 order/models.py:555
msgid "Purchase order status"
msgstr ""
@@ -2991,7 +3077,7 @@ msgid "Company from which the items are being ordered"
msgstr ""
#: order/models.py:264 order/templates/order/order_base.html:98
-#: templates/js/translated/order.js:263
+#: templates/js/translated/order.js:337
msgid "Supplier Reference"
msgstr ""
@@ -3023,7 +3109,7 @@ msgstr ""
msgid "Date order was completed"
msgstr ""
-#: order/models.py:313 stock/models.py:345 stock/models.py:1060
+#: order/models.py:313 stock/models.py:351 stock/models.py:1072
msgid "Quantity must be greater than zero"
msgstr ""
@@ -3031,150 +3117,182 @@ msgstr ""
msgid "Part supplier must match PO supplier"
msgstr ""
-#: order/models.py:416
+#: order/models.py:421
msgid "Lines can only be received against an order marked as 'Placed'"
msgstr ""
-#: order/models.py:420
+#: order/models.py:425
msgid "Quantity must be an integer"
msgstr ""
-#: order/models.py:422
+#: order/models.py:427
msgid "Quantity must be a positive number"
msgstr ""
-#: order/models.py:545
+#: order/models.py:551
msgid "Company to which the items are being sold"
msgstr ""
-#: order/models.py:551
+#: order/models.py:557
msgid "Customer Reference "
msgstr ""
-#: order/models.py:551
+#: order/models.py:557
msgid "Customer order reference code"
msgstr ""
-#: order/models.py:556
+#: order/models.py:562
msgid "Target date for order completion. Order will be overdue after this date."
msgstr ""
-#: order/models.py:559 templates/js/translated/order.js:392
+#: order/models.py:565 templates/js/translated/order.js:733
msgid "Shipment Date"
msgstr ""
-#: order/models.py:566
+#: order/models.py:572
msgid "shipped by"
msgstr ""
-#: order/models.py:610
+#: order/models.py:616
msgid "SalesOrder cannot be shipped as it is not currently pending"
msgstr ""
-#: order/models.py:707
+#: order/models.py:713
msgid "Item quantity"
msgstr ""
-#: order/models.py:713
+#: order/models.py:719
msgid "Line item reference"
msgstr ""
-#: order/models.py:715
+#: order/models.py:721
msgid "Line item notes"
msgstr ""
-#: order/models.py:745 order/models.py:823 templates/js/translated/order.js:442
+#: order/models.py:751 order/models.py:835 templates/js/translated/order.js:785
msgid "Order"
msgstr ""
-#: order/models.py:746 order/templates/order/order_base.html:9
+#: order/models.py:752 order/templates/order/order_base.html:9
#: order/templates/order/order_base.html:24
#: report/templates/report/inventree_po_report.html:77
#: stock/templates/stock/item_base.html:338
-#: templates/js/translated/order.js:232 templates/js/translated/stock.js:1037
-#: templates/js/translated/stock.js:1448
+#: templates/js/translated/order.js:306 templates/js/translated/stock.js:991
+#: templates/js/translated/stock.js:1589
msgid "Purchase Order"
msgstr ""
-#: order/models.py:767
+#: order/models.py:773
msgid "Supplier part"
msgstr ""
-#: order/models.py:770 order/templates/order/order_base.html:131
-#: order/templates/order/purchase_order_detail.html:388
+#: order/models.py:780 order/templates/order/order_base.html:131
#: order/templates/order/receive_parts.html:22
#: order/templates/order/sales_order_base.html:133
+#: templates/js/translated/order.js:573
msgid "Received"
msgstr ""
-#: order/models.py:770
+#: order/models.py:781
msgid "Number of items received"
msgstr ""
-#: order/models.py:776 part/templates/part/prices.html:157 stock/models.py:582
-#: stock/templates/stock/item_base.html:345
-#: templates/js/translated/stock.js:1081
+#: order/models.py:788 part/templates/part/prices.html:176 stock/models.py:588
+#: stock/serializers.py:147 stock/templates/stock/item_base.html:345
+#: templates/js/translated/stock.js:1045
msgid "Purchase Price"
msgstr ""
-#: order/models.py:777
+#: order/models.py:789
msgid "Unit purchase price"
msgstr ""
-#: order/models.py:785
+#: order/models.py:797
msgid "Where does the Purchaser want this item to be stored?"
msgstr ""
-#: order/models.py:831 part/templates/part/part_pricing.html:97
-#: part/templates/part/prices.html:97 part/templates/part/prices.html:266
+#: order/models.py:843 part/templates/part/part_pricing.html:112
+#: part/templates/part/prices.html:116 part/templates/part/prices.html:284
msgid "Sale Price"
msgstr ""
-#: order/models.py:832
+#: order/models.py:844
msgid "Unit sale price"
msgstr ""
-#: order/models.py:911 order/models.py:913
+#: order/models.py:923 order/models.py:925
msgid "Stock item has not been assigned"
msgstr ""
-#: order/models.py:917
+#: order/models.py:929
msgid "Cannot allocate stock item to a line with a different part"
msgstr ""
-#: order/models.py:919
+#: order/models.py:931
msgid "Cannot allocate stock to a line without a part"
msgstr ""
-#: order/models.py:922
+#: order/models.py:934
msgid "Allocation quantity cannot exceed stock quantity"
msgstr ""
-#: order/models.py:932
+#: order/models.py:944
msgid "Quantity must be 1 for serialized stock item"
msgstr ""
-#: order/models.py:937
+#: order/models.py:949
msgid "Line"
msgstr ""
-#: order/models.py:948
+#: order/models.py:960
msgid "Item"
msgstr ""
-#: order/models.py:949
+#: order/models.py:961
msgid "Select stock item to allocate"
msgstr ""
-#: order/models.py:952
+#: order/models.py:964
msgid "Enter stock allocation quantity"
msgstr ""
-#: order/serializers.py:139
+#: order/serializers.py:166
msgid "Purchase price currency"
msgstr ""
-#: order/serializers.py:360
+#: order/serializers.py:201
+msgid "Line Item"
+msgstr ""
+
+#: order/serializers.py:207
+msgid "Line item does not match purchase order"
+msgstr ""
+
+#: order/serializers.py:217 order/serializers.py:276
+msgid "Select destination location for received items"
+msgstr ""
+
+#: order/serializers.py:234
+msgid "Barcode Hash"
+msgstr ""
+
+#: order/serializers.py:235
+msgid "Unique identifier field"
+msgstr ""
+
+#: order/serializers.py:250
+msgid "Barcode is already in use"
+msgstr ""
+
+#: order/serializers.py:289
+msgid "Line items must be provided"
+msgstr ""
+
+#: order/serializers.py:299
+msgid "Supplied barcode values must be unique"
+msgstr ""
+
+#: order/serializers.py:514
msgid "Sale price currency"
msgstr ""
@@ -3227,16 +3345,14 @@ msgid "Edit Purchase Order"
msgstr ""
#: order/templates/order/order_base.html:196
-#: order/templates/order/purchase_order_detail.html:265
-#: stock/templates/stock/location.html:250
+#: stock/templates/stock/location.html:250 templates/js/translated/order.js:437
msgid "New Location"
-msgstr ""
+msgstr "Nieuwe locatie"
#: order/templates/order/order_base.html:197
-#: order/templates/order/purchase_order_detail.html:266
-#: stock/templates/stock/location.html:42
+#: stock/templates/stock/location.html:42 templates/js/translated/order.js:438
msgid "Create new stock location"
-msgstr ""
+msgstr "Maak nieuwe voorraadlocatie"
#: order/templates/order/order_cancel.html:8
msgid "Cancelling this order means that the order and line items will no longer be editable."
@@ -3336,7 +3452,7 @@ msgid "Upload File for Purchase Order"
msgstr ""
#: order/templates/order/order_wizard/po_upload.html:18
-#: part/templates/part/bom_upload/upload_file.html:24
+#: part/templates/part/bom_upload/upload_file.html:34
#: part/templates/part/import_wizard/ajax_part_upload.html:10
#: part/templates/part/import_wizard/part_upload.html:21
#, python-format
@@ -3369,7 +3485,7 @@ msgstr ""
#: order/templates/order/order_wizard/select_parts.html:65
#, python-format
-msgid "Select a supplier for %(name)s"
+msgid "Select a supplier for %(name)s"
msgstr ""
#: order/templates/order/order_wizard/select_parts.html:77
@@ -3386,7 +3502,7 @@ msgid "Select existing purchase orders, or create new orders."
msgstr ""
#: order/templates/order/order_wizard/select_pos.html:31
-#: templates/js/translated/order.js:289 templates/js/translated/order.js:397
+#: templates/js/translated/order.js:363 templates/js/translated/order.js:738
msgid "Items"
msgstr ""
@@ -3425,9 +3541,9 @@ msgid "Purchase Order Items"
msgstr ""
#: order/templates/order/purchase_order_detail.html:23
-#: order/templates/order/purchase_order_detail.html:202
+#: order/templates/order/purchase_order_detail.html:203
#: order/templates/order/sales_order_detail.html:23
-#: order/templates/order/sales_order_detail.html:176
+#: order/templates/order/sales_order_detail.html:177
msgid "Add Line Item"
msgstr ""
@@ -3436,49 +3552,6 @@ msgstr ""
msgid "Order Notes"
msgstr ""
-#: order/templates/order/purchase_order_detail.html:238
-#: order/templates/order/sales_order_detail.html:518
-msgid "Edit Line Item"
-msgstr ""
-
-#: order/templates/order/purchase_order_detail.html:248
-#: order/templates/order/sales_order_detail.html:528
-msgid "Delete Line Item"
-msgstr ""
-
-#: order/templates/order/purchase_order_detail.html:279
-msgid "No line items found"
-msgstr ""
-
-#: order/templates/order/purchase_order_detail.html:307
-#: order/templates/order/sales_order_detail.html:353
-msgid "Total"
-msgstr ""
-
-#: order/templates/order/purchase_order_detail.html:360
-#: order/templates/order/sales_order_detail.html:376
-#: templates/js/translated/part.js:1128 templates/js/translated/part.js:1317
-msgid "Unit Price"
-msgstr ""
-
-#: order/templates/order/purchase_order_detail.html:367
-#: order/templates/order/sales_order_detail.html:383
-msgid "Total price"
-msgstr ""
-
-#: order/templates/order/purchase_order_detail.html:431
-#: order/templates/order/sales_order_detail.html:489
-msgid "Edit line item"
-msgstr ""
-
-#: order/templates/order/purchase_order_detail.html:432
-msgid "Delete line item"
-msgstr ""
-
-#: order/templates/order/purchase_order_detail.html:437
-msgid "Receive line item"
-msgstr ""
-
#: order/templates/order/purchase_orders.html:24
#: order/templates/order/sales_orders.html:24
msgid "Print Order Reports"
@@ -3486,18 +3559,18 @@ msgstr ""
#: order/templates/order/receive_parts.html:8
#, python-format
-msgid "Receive outstanding parts for %(order)s - %(desc)s"
+msgid "Receive outstanding parts for %(order)s - %(desc)s"
msgstr ""
-#: order/templates/order/receive_parts.html:14 part/api.py:49
-#: part/models.py:296 part/templates/part/cat_link.html:7
+#: order/templates/order/receive_parts.html:14 part/api.py:54
+#: part/models.py:298 part/templates/part/cat_link.html:7
#: part/templates/part/category.html:108 part/templates/part/category.html:122
#: part/templates/part/category_navbar.html:21
#: part/templates/part/category_navbar.html:24
#: templates/InvenTree/index.html:102 templates/InvenTree/search.html:114
#: templates/InvenTree/settings/navbar.html:83
#: templates/InvenTree/settings/navbar.html:85
-#: templates/js/translated/part.js:987 templates/navbar.html:23
+#: templates/js/translated/part.js:1154 templates/navbar.html:29
#: templates/stats.html:80 templates/stats.html:89 users/models.py:41
msgid "Parts"
msgstr ""
@@ -3511,7 +3584,7 @@ msgid "Order Code"
msgstr ""
#: order/templates/order/receive_parts.html:21
-#: part/templates/part/part_base.html:160 templates/js/translated/part.js:802
+#: part/templates/part/part_base.html:167 templates/js/translated/part.js:949
msgid "On Order"
msgstr ""
@@ -3540,7 +3613,7 @@ msgid "Sales Order Details"
msgstr ""
#: order/templates/order/sales_order_base.html:100
-#: templates/js/translated/order.js:364
+#: templates/js/translated/order.js:705
msgid "Customer Reference"
msgstr ""
@@ -3563,71 +3636,102 @@ msgstr ""
msgid "Sales Order Items"
msgstr ""
-#: order/templates/order/sales_order_detail.html:225
-#: templates/js/translated/bom.js:378 templates/js/translated/build.js:759
-#: templates/js/translated/build.js:1202
+#: order/templates/order/sales_order_detail.html:226
+#: templates/js/translated/bom.js:394 templates/js/translated/build.js:782
+#: templates/js/translated/build.js:1219
msgid "Actions"
msgstr ""
-#: order/templates/order/sales_order_detail.html:232
-#: templates/js/translated/build.js:645 templates/js/translated/build.js:1011
+#: order/templates/order/sales_order_detail.html:233
+#: templates/js/translated/build.js:668 templates/js/translated/build.js:1030
msgid "Edit stock allocation"
msgstr ""
-#: order/templates/order/sales_order_detail.html:233
-#: templates/js/translated/build.js:647 templates/js/translated/build.js:1012
+#: order/templates/order/sales_order_detail.html:234
+#: templates/js/translated/build.js:670 templates/js/translated/build.js:1031
msgid "Delete stock allocation"
msgstr ""
-#: order/templates/order/sales_order_detail.html:306
+#: order/templates/order/sales_order_detail.html:307
msgid "No matching line items"
msgstr ""
-#: order/templates/order/sales_order_detail.html:336
+#: order/templates/order/sales_order_detail.html:337
msgid "ID"
msgstr ""
-#: order/templates/order/sales_order_detail.html:404
-#: templates/js/translated/build.js:710 templates/js/translated/build.js:1007
+#: order/templates/order/sales_order_detail.html:354
+#: templates/js/translated/order.js:481
+msgid "Total"
+msgstr ""
+
+#: order/templates/order/sales_order_detail.html:377
+#: templates/js/translated/order.js:534 templates/js/translated/part.js:1296
+#: templates/js/translated/part.js:1507
+msgid "Unit Price"
+msgstr ""
+
+#: order/templates/order/sales_order_detail.html:384
+#: templates/js/translated/order.js:543
+msgid "Total price"
+msgstr ""
+
+#: order/templates/order/sales_order_detail.html:405
+#: templates/js/translated/build.js:733 templates/js/translated/build.js:1026
msgid "Allocated"
msgstr ""
-#: order/templates/order/sales_order_detail.html:406
+#: order/templates/order/sales_order_detail.html:407
msgid "Fulfilled"
msgstr ""
-#: order/templates/order/sales_order_detail.html:443
+#: order/templates/order/sales_order_detail.html:444
msgid "PO"
msgstr ""
-#: order/templates/order/sales_order_detail.html:473
+#: order/templates/order/sales_order_detail.html:474
msgid "Allocate serial numbers"
msgstr ""
-#: order/templates/order/sales_order_detail.html:476
-#: templates/js/translated/build.js:773
+#: order/templates/order/sales_order_detail.html:477
+#: templates/js/translated/build.js:796
msgid "Allocate stock"
msgstr ""
-#: order/templates/order/sales_order_detail.html:479
+#: order/templates/order/sales_order_detail.html:480
msgid "Purchase stock"
msgstr ""
-#: order/templates/order/sales_order_detail.html:483
-#: templates/js/translated/build.js:766 templates/js/translated/build.js:1210
+#: order/templates/order/sales_order_detail.html:484
+#: templates/js/translated/build.js:789 templates/js/translated/build.js:1227
msgid "Build stock"
msgstr ""
-#: order/templates/order/sales_order_detail.html:486
-#: order/templates/order/sales_order_detail.html:605
+#: order/templates/order/sales_order_detail.html:487
+#: order/templates/order/sales_order_detail.html:606
msgid "Calculate price"
msgstr ""
#: order/templates/order/sales_order_detail.html:490
+#: templates/js/translated/order.js:616
+msgid "Edit line item"
+msgstr ""
+
+#: order/templates/order/sales_order_detail.html:491
msgid "Delete line item "
msgstr ""
-#: order/templates/order/sales_order_detail.html:611
+#: order/templates/order/sales_order_detail.html:519
+#: templates/js/translated/order.js:403
+msgid "Edit Line Item"
+msgstr ""
+
+#: order/templates/order/sales_order_detail.html:529
+#: templates/js/translated/order.js:415
+msgid "Delete Line Item"
+msgstr ""
+
+#: order/templates/order/sales_order_detail.html:612
msgid "Update Unit Price"
msgstr ""
@@ -3814,12 +3918,28 @@ msgstr ""
msgid "Updated {part} unit-price to {price} and quantity to {qty}"
msgstr ""
-#: part/bom.py:133 part/models.py:73 part/models.py:731
-#: part/templates/part/category.html:75 part/templates/part/part_base.html:282
-msgid "Default Location"
+#: part/api.py:700
+msgid "Must be greater than zero"
msgstr ""
-#: part/bom.py:134 part/templates/part/part_base.html:149
+#: part/api.py:704
+msgid "Must be a valid quantity"
+msgstr ""
+
+#: part/api.py:719
+msgid "Specify location for initial part stock"
+msgstr ""
+
+#: part/api.py:750 part/api.py:754 part/api.py:769 part/api.py:773
+msgid "This field is required"
+msgstr ""
+
+#: part/bom.py:133 part/models.py:75 part/models.py:733
+#: part/templates/part/category.html:75 part/templates/part/part_base.html:290
+msgid "Default Location"
+msgstr "Standaard locatie"
+
+#: part/bom.py:134 part/templates/part/part_base.html:156
msgid "Available Stock"
msgstr ""
@@ -3879,13 +3999,13 @@ msgstr ""
msgid "Include part supplier data in exported BOM"
msgstr ""
-#: part/forms.py:96 part/models.py:2234
+#: part/forms.py:96 part/models.py:2250
msgid "Parent Part"
msgstr ""
#: part/forms.py:97 part/templates/part/bom_duplicate.html:7
msgid "Select parent part to copy BOM from"
-msgstr ""
+msgstr "Selecteer bovenliggend onderdeel om stuklijst van te kopiëren"
#: part/forms.py:103
msgid "Clear existing BOM items"
@@ -3923,411 +4043,411 @@ msgstr ""
msgid "Input quantity for price calculation"
msgstr ""
-#: part/models.py:74
+#: part/models.py:76
msgid "Default location for parts in this category"
-msgstr ""
+msgstr "Standaard locatie voor onderdelen in deze categorie"
-#: part/models.py:77
+#: part/models.py:79
msgid "Default keywords"
msgstr ""
-#: part/models.py:77
+#: part/models.py:79
msgid "Default keywords for parts in this category"
msgstr ""
-#: part/models.py:87 part/models.py:2280
+#: part/models.py:89 part/models.py:2296
#: part/templates/part/part_app_base.html:10
msgid "Part Category"
msgstr ""
-#: part/models.py:88 part/templates/part/category.html:32
+#: part/models.py:90 part/templates/part/category.html:32
#: part/templates/part/category.html:103 templates/InvenTree/search.html:127
#: templates/stats.html:84 users/models.py:40
msgid "Part Categories"
msgstr ""
-#: part/models.py:381
+#: part/models.py:383
msgid "Invalid choice for parent part"
msgstr ""
-#: part/models.py:433 part/models.py:445
+#: part/models.py:435 part/models.py:447
#, python-brace-format
msgid "Part '{p1}' is used in BOM for '{p2}' (recursive)"
msgstr ""
-#: part/models.py:542
+#: part/models.py:544
msgid "Next available serial numbers are"
msgstr ""
-#: part/models.py:546
+#: part/models.py:548
msgid "Next available serial number is"
msgstr ""
-#: part/models.py:551
+#: part/models.py:553
msgid "Most recent serial number is"
msgstr ""
-#: part/models.py:630
+#: part/models.py:632
msgid "Duplicate IPN not allowed in part settings"
msgstr ""
-#: part/models.py:655
+#: part/models.py:657
msgid "Part name"
msgstr ""
-#: part/models.py:662
+#: part/models.py:664
msgid "Is Template"
msgstr ""
-#: part/models.py:663
+#: part/models.py:665
msgid "Is this part a template part?"
msgstr ""
-#: part/models.py:673
+#: part/models.py:675
msgid "Is this part a variant of another part?"
msgstr ""
-#: part/models.py:674
+#: part/models.py:676
msgid "Variant Of"
msgstr ""
-#: part/models.py:680
+#: part/models.py:682
msgid "Part description"
msgstr ""
-#: part/models.py:685 part/templates/part/category.html:82
-#: part/templates/part/part_base.html:251
+#: part/models.py:687 part/templates/part/category.html:82
+#: part/templates/part/part_base.html:259
msgid "Keywords"
msgstr ""
-#: part/models.py:686
+#: part/models.py:688
msgid "Part keywords to improve visibility in search results"
msgstr ""
-#: part/models.py:693 part/models.py:2279
+#: part/models.py:695 part/models.py:2295
#: part/templates/part/set_category.html:15
#: templates/InvenTree/settings/settings.html:167
-#: templates/js/translated/part.js:773
+#: templates/js/translated/part.js:916
msgid "Category"
msgstr ""
-#: part/models.py:694
+#: part/models.py:696
msgid "Part category"
msgstr ""
-#: part/models.py:699 part/templates/part/part_base.html:227
-#: templates/js/translated/part.js:389 templates/js/translated/part.js:617
+#: part/models.py:701 part/templates/part/part_base.html:235
+#: templates/js/translated/part.js:517 templates/js/translated/part.js:749
msgid "IPN"
msgstr ""
-#: part/models.py:700
+#: part/models.py:702
msgid "Internal Part Number"
msgstr ""
-#: part/models.py:706
+#: part/models.py:708
msgid "Part revision or version number"
msgstr ""
-#: part/models.py:707 part/templates/part/part_base.html:244
-#: report/models.py:200 templates/js/translated/part.js:393
+#: part/models.py:709 part/templates/part/part_base.html:252
+#: report/models.py:200 templates/js/translated/part.js:521
msgid "Revision"
msgstr ""
-#: part/models.py:729
+#: part/models.py:731
msgid "Where is this item normally stored?"
msgstr ""
-#: part/models.py:776 part/templates/part/part_base.html:289
+#: part/models.py:778 part/templates/part/part_base.html:297
msgid "Default Supplier"
msgstr ""
-#: part/models.py:777
+#: part/models.py:779
msgid "Default supplier part"
msgstr ""
-#: part/models.py:784
+#: part/models.py:786
msgid "Default Expiry"
msgstr ""
-#: part/models.py:785
+#: part/models.py:787
msgid "Expiry time (in days) for stock items of this part"
msgstr ""
-#: part/models.py:790
+#: part/models.py:792
msgid "Minimum Stock"
msgstr ""
-#: part/models.py:791
+#: part/models.py:793
msgid "Minimum allowed stock level"
msgstr ""
-#: part/models.py:798
+#: part/models.py:800
msgid "Stock keeping units for this part"
msgstr ""
-#: part/models.py:804
+#: part/models.py:806
msgid "Can this part be built from other parts?"
msgstr ""
-#: part/models.py:810
+#: part/models.py:812
msgid "Can this part be used to build other parts?"
msgstr ""
-#: part/models.py:816
+#: part/models.py:818
msgid "Does this part have tracking for unique items?"
msgstr ""
-#: part/models.py:821
+#: part/models.py:823
msgid "Can this part be purchased from external suppliers?"
msgstr ""
-#: part/models.py:826
+#: part/models.py:828
msgid "Can this part be sold to customers?"
msgstr ""
-#: part/models.py:830 templates/js/translated/table_filters.js:21
-#: templates/js/translated/table_filters.js:69
-#: templates/js/translated/table_filters.js:255
-#: templates/js/translated/table_filters.js:324
+#: part/models.py:832 templates/js/translated/table_filters.js:34
+#: templates/js/translated/table_filters.js:82
+#: templates/js/translated/table_filters.js:268
+#: templates/js/translated/table_filters.js:337
msgid "Active"
msgstr ""
-#: part/models.py:831
+#: part/models.py:833
msgid "Is this part active?"
msgstr ""
-#: part/models.py:836
+#: part/models.py:838
msgid "Is this a virtual part, such as a software product or license?"
msgstr ""
-#: part/models.py:841
+#: part/models.py:843
msgid "Part notes - supports Markdown formatting"
msgstr ""
-#: part/models.py:844
+#: part/models.py:846
msgid "BOM checksum"
msgstr ""
-#: part/models.py:844
+#: part/models.py:846
msgid "Stored BOM checksum"
msgstr ""
-#: part/models.py:847
+#: part/models.py:849
msgid "BOM checked by"
msgstr ""
-#: part/models.py:849
+#: part/models.py:851
msgid "BOM checked date"
msgstr ""
-#: part/models.py:853
+#: part/models.py:855
msgid "Creation User"
msgstr ""
-#: part/models.py:1592
+#: part/models.py:1601
msgid "Sell multiple"
msgstr ""
-#: part/models.py:2080
+#: part/models.py:2096
msgid "Test templates can only be created for trackable parts"
msgstr ""
-#: part/models.py:2097
+#: part/models.py:2113
msgid "Test with this name already exists for this part"
msgstr ""
-#: part/models.py:2117 templates/js/translated/part.js:1038
-#: templates/js/translated/stock.js:485
+#: part/models.py:2133 templates/js/translated/part.js:1205
+#: templates/js/translated/stock.js:556
msgid "Test Name"
msgstr ""
-#: part/models.py:2118
+#: part/models.py:2134
msgid "Enter a name for the test"
msgstr ""
-#: part/models.py:2123
+#: part/models.py:2139
msgid "Test Description"
msgstr ""
-#: part/models.py:2124
+#: part/models.py:2140
msgid "Enter description for this test"
msgstr ""
-#: part/models.py:2129 templates/js/translated/part.js:1047
-#: templates/js/translated/table_filters.js:241
+#: part/models.py:2145 templates/js/translated/part.js:1214
+#: templates/js/translated/table_filters.js:254
msgid "Required"
msgstr ""
-#: part/models.py:2130
+#: part/models.py:2146
msgid "Is this test required to pass?"
msgstr ""
-#: part/models.py:2135 templates/js/translated/part.js:1055
+#: part/models.py:2151 templates/js/translated/part.js:1222
msgid "Requires Value"
msgstr ""
-#: part/models.py:2136
+#: part/models.py:2152
msgid "Does this test require a value when adding a test result?"
msgstr ""
-#: part/models.py:2141 templates/js/translated/part.js:1062
+#: part/models.py:2157 templates/js/translated/part.js:1229
msgid "Requires Attachment"
msgstr ""
-#: part/models.py:2142
+#: part/models.py:2158
msgid "Does this test require a file attachment when adding a test result?"
msgstr ""
-#: part/models.py:2153
+#: part/models.py:2169
#, python-brace-format
msgid "Illegal character in template name ({c})"
msgstr ""
-#: part/models.py:2189
+#: part/models.py:2205
msgid "Parameter template name must be unique"
msgstr ""
-#: part/models.py:2197
+#: part/models.py:2213
msgid "Parameter Name"
msgstr ""
-#: part/models.py:2204
+#: part/models.py:2220
msgid "Parameter Units"
msgstr ""
-#: part/models.py:2236 part/models.py:2285 part/models.py:2286
+#: part/models.py:2252 part/models.py:2301 part/models.py:2302
#: templates/InvenTree/settings/settings.html:162
msgid "Parameter Template"
msgstr ""
-#: part/models.py:2238
+#: part/models.py:2254
msgid "Data"
msgstr ""
-#: part/models.py:2238
+#: part/models.py:2254
msgid "Parameter Value"
msgstr ""
-#: part/models.py:2290 templates/InvenTree/settings/settings.html:171
+#: part/models.py:2306 templates/InvenTree/settings/settings.html:171
msgid "Default Value"
msgstr ""
-#: part/models.py:2291
+#: part/models.py:2307
msgid "Default Parameter Value"
msgstr ""
-#: part/models.py:2325
+#: part/models.py:2341
msgid "Select parent part"
msgstr ""
-#: part/models.py:2333
+#: part/models.py:2349
msgid "Sub part"
msgstr ""
-#: part/models.py:2334
+#: part/models.py:2350
msgid "Select part to be used in BOM"
msgstr ""
-#: part/models.py:2340
+#: part/models.py:2356
msgid "BOM quantity for this BOM item"
msgstr ""
-#: part/models.py:2342 templates/js/translated/bom.js:236
-#: templates/js/translated/bom.js:298
+#: part/models.py:2358 templates/js/translated/bom.js:256
+#: templates/js/translated/bom.js:314
msgid "Optional"
msgstr ""
-#: part/models.py:2342
+#: part/models.py:2358
msgid "This BOM item is optional"
msgstr ""
-#: part/models.py:2345
+#: part/models.py:2361
msgid "Overage"
msgstr ""
-#: part/models.py:2346
+#: part/models.py:2362
msgid "Estimated build wastage quantity (absolute or percentage)"
msgstr ""
-#: part/models.py:2349
+#: part/models.py:2365
msgid "BOM item reference"
msgstr ""
-#: part/models.py:2352
+#: part/models.py:2368
msgid "BOM item notes"
msgstr ""
-#: part/models.py:2354
+#: part/models.py:2370
msgid "Checksum"
msgstr ""
-#: part/models.py:2354
+#: part/models.py:2370
msgid "BOM line checksum"
msgstr ""
-#: part/models.py:2358 templates/js/translated/bom.js:315
-#: templates/js/translated/bom.js:322
-#: templates/js/translated/table_filters.js:55
+#: part/models.py:2374 templates/js/translated/bom.js:331
+#: templates/js/translated/bom.js:338
+#: templates/js/translated/table_filters.js:68
msgid "Inherited"
msgstr ""
-#: part/models.py:2359
+#: part/models.py:2375
msgid "This BOM item is inherited by BOMs for variant parts"
msgstr ""
-#: part/models.py:2364 templates/js/translated/bom.js:307
+#: part/models.py:2380 templates/js/translated/bom.js:323
msgid "Allow Variants"
msgstr ""
-#: part/models.py:2365
+#: part/models.py:2381
msgid "Stock items for variant parts can be used for this BOM item"
msgstr ""
-#: part/models.py:2450 stock/models.py:335
+#: part/models.py:2466 stock/models.py:341
msgid "Quantity must be integer value for trackable parts"
msgstr ""
-#: part/models.py:2459 part/models.py:2461
+#: part/models.py:2475 part/models.py:2477
msgid "Sub part must be specified"
msgstr ""
-#: part/models.py:2464
+#: part/models.py:2480
msgid "BOM Item"
msgstr ""
-#: part/models.py:2583
+#: part/models.py:2599
msgid "Part 1"
msgstr ""
-#: part/models.py:2587
+#: part/models.py:2603
msgid "Part 2"
msgstr ""
-#: part/models.py:2587
+#: part/models.py:2603
msgid "Select Related Part"
msgstr ""
-#: part/models.py:2619
+#: part/models.py:2635
msgid "Error creating relationship: check that the part is not related to itself and that the relationship is unique"
msgstr ""
#: part/templates/part/bom.html:6
msgid "You do not have permission to edit the BOM."
-msgstr ""
+msgstr "U heeft geen toestemming om de stuklijst te bewerken."
#: part/templates/part/bom.html:14
#, python-format
-msgid "The BOM for %(part)s has changed, and must be validated.
"
+msgid "The BOM for %(part)s has changed, and must be validated.
"
msgstr ""
#: part/templates/part/bom.html:16
#, python-format
-msgid "The BOM for %(part)s was last checked by %(checker)s on %(check_date)s"
+msgid "The BOM for %(part)s was last checked by %(checker)s on %(check_date)s"
msgstr ""
#: part/templates/part/bom.html:20
#, python-format
-msgid "The BOM for %(part)s has not been validated."
+msgid "The BOM for %(part)s has not been validated."
msgstr ""
#: part/templates/part/bom.html:27
@@ -4344,7 +4464,7 @@ msgstr ""
#: part/templates/part/bom.html:38
msgid "New BOM Item"
-msgstr ""
+msgstr "Nieuw stuklijstitem"
#: part/templates/part/bom.html:41
msgid "Finish Editing"
@@ -4352,7 +4472,7 @@ msgstr ""
#: part/templates/part/bom.html:46
msgid "Edit BOM"
-msgstr ""
+msgstr "Bewerk stuklijst"
#: part/templates/part/bom.html:50
msgid "Validate Bill of Materials"
@@ -4374,33 +4494,34 @@ msgstr ""
msgid "Select Part"
msgstr ""
-#: part/templates/part/bom_upload/upload_file.html:7
-msgid "Upload BOM File"
+#: part/templates/part/bom_upload/upload_file.html:13
+#: part/templates/part/bom_upload/upload_file.html:16
+msgid "Return To BOM"
msgstr ""
-#: part/templates/part/bom_upload/upload_file.html:12
+#: part/templates/part/bom_upload/upload_file.html:27
msgid "Upload Bill of Materials"
msgstr ""
-#: part/templates/part/bom_upload/upload_file.html:16
+#: part/templates/part/bom_upload/upload_file.html:46
msgid "Requirements for BOM upload"
msgstr ""
-#: part/templates/part/bom_upload/upload_file.html:18
+#: part/templates/part/bom_upload/upload_file.html:48
msgid "The BOM file must contain the required named columns as provided in the "
msgstr ""
-#: part/templates/part/bom_upload/upload_file.html:18
+#: part/templates/part/bom_upload/upload_file.html:48
msgid "BOM Upload Template"
msgstr ""
-#: part/templates/part/bom_upload/upload_file.html:19
+#: part/templates/part/bom_upload/upload_file.html:49
msgid "Each part must already exist in the database"
msgstr ""
#: part/templates/part/bom_validate.html:6
#, python-format
-msgid "Confirm that the Bill of Materials (BOM) is valid for:
%(part)s"
+msgid "Confirm that the Bill of Materials (BOM) is valid for:
%(part)s"
msgstr ""
#: part/templates/part/bom_validate.html:9
@@ -4435,7 +4556,7 @@ msgstr ""
msgid "Category Description"
msgstr ""
-#: part/templates/part/category.html:88 part/templates/part/category.html:174
+#: part/templates/part/category.html:88 part/templates/part/category.html:175
#: part/templates/part/category_navbar.html:14
#: part/templates/part/category_navbar.html:17
msgid "Subcategories"
@@ -4449,7 +4570,7 @@ msgstr ""
msgid "Export Part Data"
msgstr ""
-#: part/templates/part/category.html:127 part/templates/part/category.html:141
+#: part/templates/part/category.html:127 part/templates/part/category.html:142
msgid "Export"
msgstr ""
@@ -4470,26 +4591,30 @@ msgid "Set Category"
msgstr ""
#: part/templates/part/category.html:141
+msgid "Print Labels"
+msgstr ""
+
+#: part/templates/part/category.html:142
msgid "Export Data"
msgstr ""
-#: part/templates/part/category.html:145
+#: part/templates/part/category.html:146
msgid "View list display"
msgstr ""
-#: part/templates/part/category.html:148
+#: part/templates/part/category.html:149
msgid "View grid display"
msgstr ""
-#: part/templates/part/category.html:164
+#: part/templates/part/category.html:165
msgid "Part Parameters"
msgstr ""
-#: part/templates/part/category.html:253
+#: part/templates/part/category.html:254
msgid "Create Part Category"
msgstr ""
-#: part/templates/part/category.html:279
+#: part/templates/part/category.html:281
msgid "Create Part"
msgstr ""
@@ -4533,7 +4658,7 @@ msgstr ""
msgid "Import Parts"
msgstr ""
-#: part/templates/part/copy_part.html:9 templates/js/translated/part.js:224
+#: part/templates/part/copy_part.html:9 templates/js/translated/part.js:352
msgid "Duplicate Part"
msgstr ""
@@ -4554,7 +4679,7 @@ msgstr ""
#: part/templates/part/create_part.html:17
#, python-format
-msgid "%(full_name)s - %(desc)s (%(match_per)s%% match)"
+msgid "%(full_name)s - %(desc)s (%(match_per)s%% match)"
msgstr ""
#: part/templates/part/detail.html:16
@@ -4563,10 +4688,10 @@ msgstr ""
#: part/templates/part/detail.html:21
#, python-format
-msgid "Showing stock for all variants of %(full_name)s"
+msgid "Showing stock for all variants of %(full_name)s"
msgstr ""
-#: part/templates/part/detail.html:30 part/templates/part/navbar.html:87
+#: part/templates/part/detail.html:30 part/templates/part/navbar.html:99
msgid "Part Test Templates"
msgstr ""
@@ -4584,9 +4709,9 @@ msgstr ""
#: part/templates/part/detail.html:90
msgid "Sales Order Allocations"
-msgstr ""
+msgstr "Toewijzingen verkoopopdracht"
-#: part/templates/part/detail.html:130 part/templates/part/navbar.html:21
+#: part/templates/part/detail.html:130 part/templates/part/navbar.html:27
msgid "Part Variants"
msgstr ""
@@ -4602,8 +4727,8 @@ msgstr ""
msgid "Add new parameter"
msgstr ""
-#: part/templates/part/detail.html:182 part/templates/part/navbar.html:95
-#: part/templates/part/navbar.html:98
+#: part/templates/part/detail.html:182 part/templates/part/navbar.html:107
+#: part/templates/part/navbar.html:110
msgid "Related Parts"
msgstr ""
@@ -4611,8 +4736,8 @@ msgstr ""
msgid "Add Related"
msgstr ""
-#: part/templates/part/detail.html:228 part/templates/part/navbar.html:35
-#: part/templates/part/navbar.html:38
+#: part/templates/part/detail.html:228 part/templates/part/navbar.html:43
+#: part/templates/part/navbar.html:46
msgid "Bill of Materials"
msgstr ""
@@ -4630,7 +4755,7 @@ msgstr ""
#: part/templates/part/detail.html:274
msgid "Build Order Allocations"
-msgstr ""
+msgstr "Toewijzingen bouwopdracht"
#: part/templates/part/detail.html:283
msgid "Part Suppliers"
@@ -4644,50 +4769,50 @@ msgstr ""
msgid "Delete manufacturer parts"
msgstr ""
-#: part/templates/part/detail.html:402
+#: part/templates/part/detail.html:502
msgid "Delete selected BOM items?"
msgstr ""
-#: part/templates/part/detail.html:403
+#: part/templates/part/detail.html:503
msgid "All selected BOM items will be deleted"
msgstr ""
-#: part/templates/part/detail.html:454
+#: part/templates/part/detail.html:554
msgid "Create BOM Item"
msgstr ""
-#: part/templates/part/detail.html:589
+#: part/templates/part/detail.html:699
msgid "Add Test Result Template"
msgstr ""
-#: part/templates/part/detail.html:607
+#: part/templates/part/detail.html:716
msgid "Edit Test Result Template"
msgstr ""
-#: part/templates/part/detail.html:619
+#: part/templates/part/detail.html:728
msgid "Delete Test Result Template"
msgstr ""
-#: part/templates/part/detail.html:670
+#: part/templates/part/detail.html:784
msgid "Edit Part Notes"
msgstr ""
-#: part/templates/part/detail.html:903
+#: part/templates/part/detail.html:936
#, python-format
msgid "Purchase Unit Price - %(currency)s"
msgstr ""
-#: part/templates/part/detail.html:915
+#: part/templates/part/detail.html:948
#, python-format
msgid "Unit Price-Cost Difference - %(currency)s"
msgstr ""
-#: part/templates/part/detail.html:927
+#: part/templates/part/detail.html:960
#, python-format
msgid "Supplier Unit Cost - %(currency)s"
msgstr ""
-#: part/templates/part/detail.html:1016
+#: part/templates/part/detail.html:1049
#, python-format
msgid "Unit Price - %(currency)s"
msgstr ""
@@ -4701,19 +4826,19 @@ msgstr ""
msgid "Import Parts from File"
msgstr ""
-#: part/templates/part/navbar.html:24
+#: part/templates/part/navbar.html:30
msgid "Variants"
msgstr ""
-#: part/templates/part/navbar.html:51 part/templates/part/navbar.html:54
+#: part/templates/part/navbar.html:59 part/templates/part/navbar.html:62
msgid "Used In"
msgstr ""
-#: part/templates/part/navbar.html:61
+#: part/templates/part/navbar.html:70
msgid "Prices"
msgstr ""
-#: part/templates/part/navbar.html:90
+#: part/templates/part/navbar.html:102
msgid "Test Templates"
msgstr ""
@@ -4721,195 +4846,204 @@ msgstr ""
msgid "Part List"
msgstr ""
-#: part/templates/part/part_base.html:30
+#: part/templates/part/part_base.html:35
msgid "Part is a template part (variants can be made from this part)"
msgstr ""
-#: part/templates/part/part_base.html:33
+#: part/templates/part/part_base.html:38
msgid "Part can be assembled from other parts"
msgstr ""
-#: part/templates/part/part_base.html:36
+#: part/templates/part/part_base.html:41
msgid "Part can be used in assemblies"
msgstr ""
-#: part/templates/part/part_base.html:39
+#: part/templates/part/part_base.html:44
msgid "Part stock is tracked by serial number"
msgstr ""
-#: part/templates/part/part_base.html:42
+#: part/templates/part/part_base.html:47
msgid "Part can be purchased from external suppliers"
msgstr ""
-#: part/templates/part/part_base.html:45
+#: part/templates/part/part_base.html:50
msgid "Part can be sold to customers"
msgstr ""
-#: part/templates/part/part_base.html:52 part/templates/part/part_base.html:60
+#: part/templates/part/part_base.html:57 part/templates/part/part_base.html:65
msgid "Part is virtual (not a physical part)"
msgstr ""
-#: part/templates/part/part_base.html:53 templates/js/translated/company.js:454
-#: templates/js/translated/company.js:704 templates/js/translated/part.js:304
-#: templates/js/translated/part.js:381
+#: part/templates/part/part_base.html:58 templates/js/translated/company.js:503
+#: templates/js/translated/company.js:759 templates/js/translated/part.js:432
+#: templates/js/translated/part.js:509
msgid "Inactive"
msgstr ""
-#: part/templates/part/part_base.html:68
+#: part/templates/part/part_base.html:73
msgid "Star this part"
msgstr ""
-#: part/templates/part/part_base.html:75
+#: part/templates/part/part_base.html:80
#: stock/templates/stock/item_base.html:75
#: stock/templates/stock/location.html:51
msgid "Barcode actions"
msgstr ""
-#: part/templates/part/part_base.html:77
+#: part/templates/part/part_base.html:82
#: stock/templates/stock/item_base.html:77
#: stock/templates/stock/location.html:53 templates/qr_button.html:1
msgid "Show QR Code"
-msgstr ""
+msgstr "QR-code weergeven"
-#: part/templates/part/part_base.html:78
+#: part/templates/part/part_base.html:83
#: stock/templates/stock/item_base.html:93
#: stock/templates/stock/location.html:54
msgid "Print Label"
-msgstr ""
+msgstr "Label afdrukken"
-#: part/templates/part/part_base.html:83
+#: part/templates/part/part_base.html:89
msgid "Show pricing information"
msgstr ""
-#: part/templates/part/part_base.html:88
+#: part/templates/part/part_base.html:95
#: stock/templates/stock/item_base.html:142
#: stock/templates/stock/location.html:62
msgid "Stock actions"
-msgstr ""
+msgstr "Voorraad acties"
-#: part/templates/part/part_base.html:95
+#: part/templates/part/part_base.html:102
msgid "Count part stock"
msgstr ""
-#: part/templates/part/part_base.html:101
+#: part/templates/part/part_base.html:108
msgid "Transfer part stock"
msgstr ""
-#: part/templates/part/part_base.html:118
+#: part/templates/part/part_base.html:125
msgid "Part actions"
msgstr ""
-#: part/templates/part/part_base.html:121
+#: part/templates/part/part_base.html:128
msgid "Duplicate part"
msgstr ""
-#: part/templates/part/part_base.html:124
+#: part/templates/part/part_base.html:131
msgid "Edit part"
msgstr ""
-#: part/templates/part/part_base.html:127
+#: part/templates/part/part_base.html:134
msgid "Delete part"
msgstr ""
-#: part/templates/part/part_base.html:139
+#: part/templates/part/part_base.html:146
#, python-format
msgid "This part is a variant of %(link)s"
msgstr ""
-#: part/templates/part/part_base.html:154
-#: templates/js/translated/table_filters.js:153
+#: part/templates/part/part_base.html:161
+#: templates/js/translated/table_filters.js:166
msgid "In Stock"
msgstr ""
-#: part/templates/part/part_base.html:167 templates/InvenTree/index.html:186
+#: part/templates/part/part_base.html:174 templates/InvenTree/index.html:186
msgid "Required for Build Orders"
msgstr ""
-#: part/templates/part/part_base.html:174
+#: part/templates/part/part_base.html:181
msgid "Required for Sales Orders"
msgstr ""
-#: part/templates/part/part_base.html:181
+#: part/templates/part/part_base.html:188
msgid "Allocated to Orders"
msgstr ""
-#: part/templates/part/part_base.html:196 templates/js/translated/bom.js:336
+#: part/templates/part/part_base.html:203 templates/js/translated/bom.js:352
msgid "Can Build"
msgstr ""
-#: part/templates/part/part_base.html:202 templates/js/translated/part.js:633
-#: templates/js/translated/part.js:806
+#: part/templates/part/part_base.html:209 templates/js/translated/part.js:765
+#: templates/js/translated/part.js:953
msgid "Building"
msgstr ""
-#: part/templates/part/part_base.html:275
+#: part/templates/part/part_base.html:223
+#: part/templates/part/part_base.html:524
+#: part/templates/part/part_base.html:550
+msgid "Show Part Details"
+msgstr ""
+
+#: part/templates/part/part_base.html:283
msgid "Latest Serial Number"
msgstr ""
-#: part/templates/part/part_base.html:383 part/templates/part/prices.html:125
+#: part/templates/part/part_base.html:396 part/templates/part/prices.html:144
msgid "Calculate"
msgstr ""
-#: part/templates/part/part_base.html:426
+#: part/templates/part/part_base.html:439
msgid "No matching images found"
msgstr ""
-#: part/templates/part/part_base.html:506
-#: part/templates/part/part_base.html:531
+#: part/templates/part/part_base.html:519
+#: part/templates/part/part_base.html:544
msgid "Hide Part Details"
msgstr ""
-#: part/templates/part/part_base.html:511
-#: part/templates/part/part_base.html:537
-msgid "Show Part Details"
-msgstr ""
-
#: part/templates/part/part_pricing.html:22 part/templates/part/prices.html:21
msgid "Supplier Pricing"
msgstr ""
#: part/templates/part/part_pricing.html:26
#: part/templates/part/part_pricing.html:52
-#: part/templates/part/part_pricing.html:85
-#: part/templates/part/part_pricing.html:100 part/templates/part/prices.html:25
-#: part/templates/part/prices.html:52 part/templates/part/prices.html:84
-#: part/templates/part/prices.html:101
+#: part/templates/part/part_pricing.html:100
+#: part/templates/part/part_pricing.html:115 part/templates/part/prices.html:25
+#: part/templates/part/prices.html:52 part/templates/part/prices.html:103
+#: part/templates/part/prices.html:120
msgid "Unit Cost"
msgstr ""
#: part/templates/part/part_pricing.html:32
#: part/templates/part/part_pricing.html:58
-#: part/templates/part/part_pricing.html:89
-#: part/templates/part/part_pricing.html:104 part/templates/part/prices.html:32
-#: part/templates/part/prices.html:59 part/templates/part/prices.html:89
-#: part/templates/part/prices.html:106
+#: part/templates/part/part_pricing.html:104
+#: part/templates/part/part_pricing.html:119 part/templates/part/prices.html:32
+#: part/templates/part/prices.html:59 part/templates/part/prices.html:108
+#: part/templates/part/prices.html:125
msgid "Total Cost"
msgstr ""
#: part/templates/part/part_pricing.html:40 part/templates/part/prices.html:40
-#: templates/js/translated/bom.js:291
+#: templates/js/translated/bom.js:307
msgid "No supplier pricing available"
msgstr ""
#: part/templates/part/part_pricing.html:48 part/templates/part/prices.html:49
-#: part/templates/part/prices.html:225
+#: part/templates/part/prices.html:243
msgid "BOM Pricing"
msgstr ""
-#: part/templates/part/part_pricing.html:66 part/templates/part/prices.html:67
+#: part/templates/part/part_pricing.html:65 part/templates/part/prices.html:69
+msgid "Unit Purchase Price"
+msgstr ""
+
+#: part/templates/part/part_pricing.html:71 part/templates/part/prices.html:76
+msgid "Total Purchase Price"
+msgstr ""
+
+#: part/templates/part/part_pricing.html:81 part/templates/part/prices.html:86
msgid "Note: BOM pricing is incomplete for this part"
msgstr ""
-#: part/templates/part/part_pricing.html:73 part/templates/part/prices.html:74
+#: part/templates/part/part_pricing.html:88 part/templates/part/prices.html:93
msgid "No BOM pricing available"
msgstr ""
-#: part/templates/part/part_pricing.html:82 part/templates/part/prices.html:83
+#: part/templates/part/part_pricing.html:97 part/templates/part/prices.html:102
msgid "Internal Price"
msgstr ""
-#: part/templates/part/part_pricing.html:113
-#: part/templates/part/prices.html:115
+#: part/templates/part/part_pricing.html:128
+#: part/templates/part/prices.html:134
msgid "No pricing information is available for this part."
msgstr ""
@@ -4919,7 +5053,7 @@ msgstr ""
#: part/templates/part/partial_delete.html:7
#, python-format
-msgid "Are you sure you want to delete part '%(full_name)s'?"
+msgid "Are you sure you want to delete part '%(full_name)s'?"
msgstr ""
#: part/templates/part/partial_delete.html:12
@@ -4963,53 +5097,53 @@ msgstr ""
msgid "Show BOM cost"
msgstr ""
-#: part/templates/part/prices.html:98
+#: part/templates/part/prices.html:117
msgid "Show sale cost"
msgstr ""
-#: part/templates/part/prices.html:99
+#: part/templates/part/prices.html:118
msgid "Show sale price"
msgstr ""
-#: part/templates/part/prices.html:121
+#: part/templates/part/prices.html:140
msgid "Calculation parameters"
msgstr ""
-#: part/templates/part/prices.html:136 templates/js/translated/bom.js:285
+#: part/templates/part/prices.html:155 templates/js/translated/bom.js:301
msgid "Supplier Cost"
msgstr ""
-#: part/templates/part/prices.html:137 part/templates/part/prices.html:158
-#: part/templates/part/prices.html:183 part/templates/part/prices.html:213
-#: part/templates/part/prices.html:239 part/templates/part/prices.html:267
+#: part/templates/part/prices.html:156 part/templates/part/prices.html:177
+#: part/templates/part/prices.html:201 part/templates/part/prices.html:231
+#: part/templates/part/prices.html:257 part/templates/part/prices.html:285
msgid "Jump to overview"
msgstr ""
-#: part/templates/part/prices.html:162
+#: part/templates/part/prices.html:181
msgid "Stock Pricing"
msgstr ""
-#: part/templates/part/prices.html:172
+#: part/templates/part/prices.html:190
msgid "No stock pricing history is available for this part."
msgstr ""
-#: part/templates/part/prices.html:182
+#: part/templates/part/prices.html:200
msgid "Internal Cost"
msgstr ""
-#: part/templates/part/prices.html:197 part/views.py:1793
+#: part/templates/part/prices.html:215 part/views.py:1801
msgid "Add Internal Price Break"
msgstr ""
-#: part/templates/part/prices.html:212
+#: part/templates/part/prices.html:230
msgid "BOM Cost"
msgstr ""
-#: part/templates/part/prices.html:238
+#: part/templates/part/prices.html:256
msgid "Sale Cost"
msgstr ""
-#: part/templates/part/prices.html:278
+#: part/templates/part/prices.html:296
msgid "No sale pice history available for this part."
msgstr ""
@@ -5017,8 +5151,8 @@ msgstr ""
msgid "Set category for the following parts"
msgstr ""
-#: part/templates/part/stock_count.html:7 templates/js/translated/bom.js:259
-#: templates/js/translated/part.js:623 templates/js/translated/part.js:810
+#: part/templates/part/stock_count.html:7 templates/js/translated/bom.js:278
+#: templates/js/translated/part.js:755 templates/js/translated/part.js:957
msgid "No Stock"
msgstr ""
@@ -5032,10 +5166,10 @@ msgstr ""
#: part/templates/part/variant_part.html:10
#, python-format
-msgid "Create a new variant of template '%(full_name)s'."
+msgid "Create a new variant of template '%(full_name)s'."
msgstr ""
-#: part/templatetags/inventree_extras.py:105
+#: part/templatetags/inventree_extras.py:106
msgid "Unknown database"
msgstr ""
@@ -5116,51 +5250,51 @@ msgstr ""
msgid "Part Pricing"
msgstr ""
-#: part/views.py:1429
+#: part/views.py:1437
msgid "Create Part Parameter Template"
msgstr ""
-#: part/views.py:1439
+#: part/views.py:1447
msgid "Edit Part Parameter Template"
msgstr ""
-#: part/views.py:1446
+#: part/views.py:1454
msgid "Delete Part Parameter Template"
msgstr ""
-#: part/views.py:1494 templates/js/translated/part.js:179
+#: part/views.py:1502 templates/js/translated/part.js:303
msgid "Edit Part Category"
msgstr ""
-#: part/views.py:1532
+#: part/views.py:1540
msgid "Delete Part Category"
msgstr ""
-#: part/views.py:1538
+#: part/views.py:1546
msgid "Part category was deleted"
msgstr ""
-#: part/views.py:1547
+#: part/views.py:1555
msgid "Create Category Parameter Template"
msgstr ""
-#: part/views.py:1648
+#: part/views.py:1656
msgid "Edit Category Parameter Template"
msgstr ""
-#: part/views.py:1704
+#: part/views.py:1712
msgid "Delete Category Parameter Template"
msgstr ""
-#: part/views.py:1726
+#: part/views.py:1734
msgid "Added new price break"
msgstr ""
-#: part/views.py:1802
+#: part/views.py:1810
msgid "Edit Internal Price Break"
msgstr ""
-#: part/views.py:1810
+#: part/views.py:1818
msgid "Delete Internal Price Break"
msgstr ""
@@ -5266,17 +5400,17 @@ msgid "Test Results"
msgstr ""
#: report/templates/report/inventree_test_report_base.html:88
-#: stock/models.py:1796
+#: stock/models.py:1807
msgid "Test"
msgstr ""
#: report/templates/report/inventree_test_report_base.html:89
-#: stock/models.py:1802
+#: stock/models.py:1813
msgid "Result"
msgstr ""
#: report/templates/report/inventree_test_report_base.html:92
-#: templates/js/translated/order.js:279 templates/js/translated/stock.js:1382
+#: templates/js/translated/order.js:353 templates/js/translated/stock.js:1523
msgid "Date"
msgstr ""
@@ -5288,51 +5422,51 @@ msgstr ""
msgid "Fail"
msgstr ""
-#: stock/api.py:145
+#: stock/api.py:146
msgid "Request must contain list of stock items"
msgstr ""
-#: stock/api.py:153
+#: stock/api.py:154
msgid "Improperly formatted data"
msgstr ""
-#: stock/api.py:161
+#: stock/api.py:162
msgid "Each entry must contain a valid integer primary-key"
msgstr ""
-#: stock/api.py:167
+#: stock/api.py:168
msgid "Primary key does not match valid stock item"
msgstr ""
-#: stock/api.py:177
+#: stock/api.py:178
msgid "Invalid quantity value"
msgstr ""
-#: stock/api.py:182
+#: stock/api.py:183
msgid "Quantity must not be less than zero"
msgstr ""
-#: stock/api.py:210
+#: stock/api.py:211
#, python-brace-format
msgid "Updated stock for {n} items"
msgstr ""
-#: stock/api.py:246 stock/api.py:279
+#: stock/api.py:247 stock/api.py:280
msgid "Specified quantity exceeds stock quantity"
msgstr ""
-#: stock/api.py:269
+#: stock/api.py:270
msgid "Valid location must be specified"
msgstr ""
-#: stock/api.py:289
+#: stock/api.py:290
#, python-brace-format
msgid "Moved {n} parts to {loc}"
msgstr ""
-#: stock/forms.py:79 stock/forms.py:307 stock/models.py:550
+#: stock/forms.py:79 stock/forms.py:307 stock/models.py:556
#: stock/templates/stock/item_base.html:395
-#: templates/js/translated/stock.js:1025
+#: templates/js/translated/stock.js:967
msgid "Expiry Date"
msgstr ""
@@ -5384,258 +5518,266 @@ msgstr ""
msgid "Confirm removal of installed stock items"
msgstr ""
-#: stock/models.py:57 stock/models.py:587
+#: stock/models.py:57 stock/models.py:593
msgid "Owner"
msgstr ""
-#: stock/models.py:58 stock/models.py:588
+#: stock/models.py:58 stock/models.py:594
msgid "Select Owner"
msgstr ""
-#: stock/models.py:316
+#: stock/models.py:322
msgid "StockItem with this serial number already exists"
msgstr ""
-#: stock/models.py:352
+#: stock/models.py:358
#, python-brace-format
msgid "Part type ('{pf}') must be {pe}"
msgstr ""
-#: stock/models.py:362 stock/models.py:371
+#: stock/models.py:368 stock/models.py:377
msgid "Quantity must be 1 for item with a serial number"
msgstr ""
-#: stock/models.py:363
+#: stock/models.py:369
msgid "Serial number cannot be set if quantity greater than 1"
msgstr ""
-#: stock/models.py:385
+#: stock/models.py:391
msgid "Item cannot belong to itself"
msgstr ""
-#: stock/models.py:391
+#: stock/models.py:397
msgid "Item must have a build reference if is_building=True"
msgstr ""
-#: stock/models.py:398
+#: stock/models.py:404
msgid "Build reference does not point to the same part object"
msgstr ""
-#: stock/models.py:440
+#: stock/models.py:446
msgid "Parent Stock Item"
msgstr ""
-#: stock/models.py:449
+#: stock/models.py:455
msgid "Base part"
msgstr ""
-#: stock/models.py:458
+#: stock/models.py:464
msgid "Select a matching supplier part for this stock item"
msgstr ""
-#: stock/models.py:463 stock/templates/stock/stock_app_base.html:8
+#: stock/models.py:469 stock/templates/stock/stock_app_base.html:8
msgid "Stock Location"
-msgstr ""
+msgstr "Voorraadlocatie"
-#: stock/models.py:466
+#: stock/models.py:472
msgid "Where is this stock item located?"
msgstr ""
-#: stock/models.py:473
+#: stock/models.py:479
msgid "Packaging this stock item is stored in"
msgstr ""
-#: stock/models.py:478 stock/templates/stock/item_base.html:284
+#: stock/models.py:484 stock/templates/stock/item_base.html:284
msgid "Installed In"
msgstr ""
-#: stock/models.py:481
+#: stock/models.py:487
msgid "Is this item installed in another item?"
msgstr ""
-#: stock/models.py:497
+#: stock/models.py:503
msgid "Serial number for this item"
msgstr ""
-#: stock/models.py:509
+#: stock/models.py:515
msgid "Batch code for this stock item"
msgstr ""
-#: stock/models.py:513
+#: stock/models.py:519
msgid "Stock Quantity"
msgstr ""
-#: stock/models.py:522
+#: stock/models.py:528
msgid "Source Build"
msgstr ""
-#: stock/models.py:524
+#: stock/models.py:530
msgid "Build for this stock item"
msgstr ""
-#: stock/models.py:535
+#: stock/models.py:541
msgid "Source Purchase Order"
msgstr ""
-#: stock/models.py:538
+#: stock/models.py:544
msgid "Purchase order for this stock item"
msgstr ""
-#: stock/models.py:544
+#: stock/models.py:550
msgid "Destination Sales Order"
msgstr ""
-#: stock/models.py:551
+#: stock/models.py:557
msgid "Expiry date for stock item. Stock will be considered expired after this date"
msgstr ""
-#: stock/models.py:564
+#: stock/models.py:570
msgid "Delete on deplete"
msgstr ""
-#: stock/models.py:564
+#: stock/models.py:570
msgid "Delete this Stock Item when stock is depleted"
msgstr ""
-#: stock/models.py:574 stock/templates/stock/item.html:98
+#: stock/models.py:580 stock/templates/stock/item.html:99
#: stock/templates/stock/navbar.html:54
msgid "Stock Item Notes"
msgstr ""
-#: stock/models.py:583
+#: stock/models.py:589
msgid "Single unit purchase price at time of purchase"
msgstr ""
-#: stock/models.py:1051
-msgid "Part is not set as trackable"
+#: stock/models.py:599
+msgid "Scheduled for deletion"
msgstr ""
-#: stock/models.py:1057
-msgid "Quantity must be integer"
+#: stock/models.py:600
+msgid "This StockItem will be deleted by the background worker"
msgstr ""
#: stock/models.py:1063
+msgid "Part is not set as trackable"
+msgstr ""
+
+#: stock/models.py:1069
+msgid "Quantity must be integer"
+msgstr ""
+
+#: stock/models.py:1075
#, python-brace-format
msgid "Quantity must not exceed available stock quantity ({n})"
msgstr ""
-#: stock/models.py:1066
+#: stock/models.py:1078
msgid "Serial numbers must be a list of integers"
msgstr ""
-#: stock/models.py:1069
+#: stock/models.py:1081
msgid "Quantity does not match serial numbers"
msgstr ""
-#: stock/models.py:1076
+#: stock/models.py:1088
#, python-brace-format
msgid "Serial numbers already exist: {exists}"
msgstr ""
-#: stock/models.py:1234
+#: stock/models.py:1246
msgid "StockItem cannot be moved as it is not in stock"
msgstr ""
-#: stock/models.py:1716
+#: stock/models.py:1727
msgid "Entry notes"
msgstr ""
-#: stock/models.py:1773
+#: stock/models.py:1784
msgid "Value must be provided for this test"
msgstr ""
-#: stock/models.py:1779
+#: stock/models.py:1790
msgid "Attachment must be uploaded for this test"
msgstr ""
-#: stock/models.py:1797
+#: stock/models.py:1808
msgid "Test name"
msgstr ""
-#: stock/models.py:1803 templates/js/translated/table_filters.js:231
+#: stock/models.py:1814 templates/js/translated/table_filters.js:244
msgid "Test result"
msgstr ""
-#: stock/models.py:1809
+#: stock/models.py:1820
msgid "Test output value"
msgstr ""
-#: stock/models.py:1816
+#: stock/models.py:1827
msgid "Test result attachment"
msgstr ""
-#: stock/models.py:1822
+#: stock/models.py:1833
msgid "Test notes"
msgstr ""
-#: stock/templates/stock/item.html:16
+#: stock/templates/stock/item.html:17
msgid "Stock Tracking Information"
msgstr ""
-#: stock/templates/stock/item.html:29
+#: stock/templates/stock/item.html:30
msgid "New Entry"
msgstr ""
-#: stock/templates/stock/item.html:42
+#: stock/templates/stock/item.html:43
msgid "Child Stock Items"
msgstr ""
-#: stock/templates/stock/item.html:49
+#: stock/templates/stock/item.html:50
msgid "This stock item does not have any child items"
msgstr ""
-#: stock/templates/stock/item.html:57 stock/templates/stock/navbar.html:19
+#: stock/templates/stock/item.html:58 stock/templates/stock/navbar.html:19
#: stock/templates/stock/navbar.html:22
msgid "Test Data"
msgstr ""
-#: stock/templates/stock/item.html:65
+#: stock/templates/stock/item.html:66
msgid "Delete Test Data"
msgstr ""
-#: stock/templates/stock/item.html:69
+#: stock/templates/stock/item.html:70
msgid "Add Test Data"
msgstr ""
-#: stock/templates/stock/item.html:72 stock/templates/stock/item_base.html:95
+#: stock/templates/stock/item.html:73 stock/templates/stock/item_base.html:95
msgid "Test Report"
msgstr ""
-#: stock/templates/stock/item.html:119 stock/templates/stock/navbar.html:27
+#: stock/templates/stock/item.html:120 stock/templates/stock/navbar.html:27
msgid "Installed Stock Items"
msgstr ""
-#: stock/templates/stock/item.html:124 stock/views.py:534
+#: stock/templates/stock/item.html:125 stock/views.py:534
msgid "Install Stock Item"
msgstr ""
-#: stock/templates/stock/item.html:299 stock/templates/stock/item.html:324
+#: stock/templates/stock/item.html:301 stock/templates/stock/item.html:326
msgid "Add Test Result"
msgstr ""
-#: stock/templates/stock/item.html:344
+#: stock/templates/stock/item.html:346
msgid "Edit Test Result"
msgstr ""
-#: stock/templates/stock/item.html:358
+#: stock/templates/stock/item.html:360
msgid "Delete Test Result"
msgstr ""
#: stock/templates/stock/item_base.html:33
#: stock/templates/stock/item_base.html:399
-#: templates/js/translated/table_filters.js:212
+#: templates/js/translated/table_filters.js:225
msgid "Expired"
msgstr ""
#: stock/templates/stock/item_base.html:43
#: stock/templates/stock/item_base.html:401
-#: templates/js/translated/table_filters.js:218
+#: templates/js/translated/table_filters.js:231
msgid "Stale"
msgstr ""
#: stock/templates/stock/item_base.html:80
-#: templates/js/translated/barcode.js:309
-#: templates/js/translated/barcode.js:314
+#: templates/js/translated/barcode.js:331
+#: templates/js/translated/barcode.js:336
msgid "Unlink Barcode"
msgstr ""
@@ -5645,7 +5787,7 @@ msgstr ""
#: stock/templates/stock/item_base.html:84 templates/stock_table.html:31
msgid "Scan to Location"
-msgstr ""
+msgstr "Scan naar locatie"
#: stock/templates/stock/item_base.html:91
msgid "Printing actions"
@@ -5658,7 +5800,7 @@ msgstr ""
#: stock/templates/stock/item_base.html:108
#: stock/templates/stock/location.html:69 templates/stock_table.html:57
msgid "Count stock"
-msgstr ""
+msgstr "Voorraad tellen"
#: stock/templates/stock/item_base.html:111 templates/stock_table.html:55
msgid "Add stock"
@@ -5675,7 +5817,7 @@ msgstr ""
#: stock/templates/stock/item_base.html:121
#: stock/templates/stock/location.html:75
msgid "Transfer stock"
-msgstr ""
+msgstr "Voorraad overzetten"
#: stock/templates/stock/item_base.html:124
msgid "Assign to customer"
@@ -5768,9 +5910,9 @@ msgid "next page"
msgstr ""
#: stock/templates/stock/item_base.html:303
-#: templates/js/translated/build.js:628
+#: templates/js/translated/build.js:651
msgid "No location set"
-msgstr ""
+msgstr "Geen Locatie ingesteld"
#: stock/templates/stock/item_base.html:310
msgid "Barcode Identifier"
@@ -5795,7 +5937,7 @@ msgid "This StockItem expires on %(item.expiry_date)s"
msgstr ""
#: stock/templates/stock/item_base.html:408
-#: templates/js/translated/stock.js:1032
+#: templates/js/translated/stock.js:980
msgid "Last Updated"
msgstr ""
@@ -5825,7 +5967,7 @@ msgstr ""
#: stock/templates/stock/item_delete.html:12
#, python-format
-msgid "This will remove %(qty)s units of %(full_name)s from stock."
+msgid "This will remove %(qty)s units of %(full_name)s from stock."
msgstr ""
#: stock/templates/stock/item_install.html:8
@@ -5871,11 +6013,11 @@ msgstr ""
#: stock/templates/stock/location.html:20
msgid "You are not in the list of owners of this location. This stock location cannot be edited."
-msgstr ""
+msgstr "U staat niet in de lijst van eigenaars van deze locatie. Deze voorraadlocatie kan niet worden bewerkt."
#: stock/templates/stock/location.html:37
msgid "All stock items"
-msgstr ""
+msgstr "Alle voorraadartikelen"
#: stock/templates/stock/location.html:55
msgid "Check-in Items"
@@ -5883,19 +6025,19 @@ msgstr ""
#: stock/templates/stock/location.html:83
msgid "Location actions"
-msgstr ""
+msgstr "Locatie acties"
#: stock/templates/stock/location.html:85
msgid "Edit location"
-msgstr ""
+msgstr "Bewerk locatie"
#: stock/templates/stock/location.html:87
msgid "Delete location"
-msgstr ""
+msgstr "Verwijder locatie"
#: stock/templates/stock/location.html:99
msgid "Location Details"
-msgstr ""
+msgstr "Locatiegegevens"
#: stock/templates/stock/location.html:104
msgid "Location Path"
@@ -5903,35 +6045,35 @@ msgstr ""
#: stock/templates/stock/location.html:109
msgid "Location Description"
-msgstr ""
+msgstr "Locatieomschrijving"
#: stock/templates/stock/location.html:114
#: stock/templates/stock/location.html:155
#: stock/templates/stock/location_navbar.html:11
#: stock/templates/stock/location_navbar.html:14
msgid "Sublocations"
-msgstr ""
+msgstr "Sublocaties"
#: stock/templates/stock/location.html:124
msgid "Stock Details"
-msgstr ""
+msgstr "Voorraadgegevens"
#: stock/templates/stock/location.html:129 templates/InvenTree/search.html:279
#: templates/stats.html:97 users/models.py:42
msgid "Stock Locations"
-msgstr ""
+msgstr "Voorraadlocaties"
#: stock/templates/stock/location.html:162 templates/stock_table.html:37
msgid "Printing Actions"
-msgstr ""
+msgstr "Afdrukacties"
#: stock/templates/stock/location.html:166 templates/stock_table.html:41
msgid "Print labels"
-msgstr ""
+msgstr "Labels afdrukken"
#: stock/templates/stock/location.html:251
msgid "Create new location"
-msgstr ""
+msgstr "Maak nieuwe locatie"
#: stock/templates/stock/location_delete.html:7
msgid "Are you sure you want to delete this stock location?"
@@ -5975,7 +6117,7 @@ msgstr ""
#: stock/templates/stock/stockitem_convert.html:8
#, python-format
-msgid "This stock item is current an instance of %(part)s"
+msgid "This stock item is current an instance of %(part)s"
msgstr ""
#: stock/templates/stock/stockitem_convert.html:9
@@ -5992,7 +6134,7 @@ msgstr ""
#: stock/views.py:181
msgid "Edit Stock Location"
-msgstr ""
+msgstr "Bewerk voorraadlocatie"
#: stock/views.py:288 stock/views.py:911 stock/views.py:1033
#: stock/views.py:1398
@@ -6001,7 +6143,7 @@ msgstr ""
#: stock/views.py:303
msgid "Stock Location QR code"
-msgstr ""
+msgstr "QR-code voor voorraadlocatie"
#: stock/views.py:322
msgid "Assign to Customer"
@@ -6017,7 +6159,7 @@ msgstr ""
#: stock/views.py:364
msgid "Specify a valid location"
-msgstr ""
+msgstr "Specificeer een geldige locatie"
#: stock/views.py:375
msgid "Stock item returned from customer"
@@ -6039,7 +6181,7 @@ msgstr ""
msgid "Uninstall Stock Items"
msgstr ""
-#: stock/views.py:780 templates/js/translated/stock.js:282
+#: stock/views.py:780 templates/js/translated/stock.js:353
msgid "Confirm stock adjustment"
msgstr ""
@@ -6053,13 +6195,13 @@ msgstr ""
#: stock/views.py:959
msgid "Create new Stock Location"
-msgstr ""
+msgstr "Maak nieuwe voorraadlocatie"
#: stock/views.py:1050
msgid "Serialize Stock"
msgstr ""
-#: stock/views.py:1143 templates/js/translated/build.js:365
+#: stock/views.py:1143 templates/js/translated/build.js:392
msgid "Create new Stock Item"
msgstr ""
@@ -6073,7 +6215,7 @@ msgstr ""
#: stock/views.py:1467
msgid "Delete Stock Location"
-msgstr ""
+msgstr "Verwijder voorraadlocatie"
#: stock/views.py:1480
msgid "Delete Stock Item"
@@ -6171,13 +6313,13 @@ msgstr ""
msgid "Enter a search query"
msgstr ""
-#: templates/InvenTree/search.html:268 templates/js/translated/stock.js:629
+#: templates/InvenTree/search.html:268 templates/js/translated/stock.js:699
msgid "Shipped to customer"
msgstr ""
-#: templates/InvenTree/search.html:271 templates/js/translated/stock.js:639
+#: templates/InvenTree/search.html:271 templates/js/translated/stock.js:709
msgid "No stock location set"
-msgstr ""
+msgstr "Geen voorraadlocatie ingesteld"
#: templates/InvenTree/settings/barcode.html:8
msgid "Barcode Settings"
@@ -6240,7 +6382,7 @@ msgstr ""
#: templates/InvenTree/settings/navbar.html:27
#: templates/InvenTree/settings/navbar.html:29
-#: templates/js/translated/tables.js:351 templates/search_form.html:6
+#: templates/js/translated/tables.js:366 templates/search_form.html:6
#: templates/search_form.html:8
msgid "Search"
msgstr ""
@@ -6257,7 +6399,7 @@ msgstr ""
#: templates/InvenTree/settings/navbar.html:46
#: templates/InvenTree/settings/navbar.html:48
-#: templates/InvenTree/settings/settings.html:8 templates/navbar.html:84
+#: templates/InvenTree/settings/settings.html:8 templates/navbar.html:94
msgid "Settings"
msgstr ""
@@ -6332,16 +6474,16 @@ msgid "No category parameter templates found"
msgstr ""
#: templates/InvenTree/settings/settings.html:174
-#: templates/InvenTree/settings/settings.html:271
+#: templates/InvenTree/settings/settings.html:273
msgid "Edit Template"
msgstr ""
#: templates/InvenTree/settings/settings.html:175
-#: templates/InvenTree/settings/settings.html:272
+#: templates/InvenTree/settings/settings.html:274
msgid "Delete Template"
msgstr ""
-#: templates/InvenTree/settings/settings.html:251
+#: templates/InvenTree/settings/settings.html:253
msgid "No part parameter templates found"
msgstr ""
@@ -6358,6 +6500,7 @@ msgid "Account Settings"
msgstr ""
#: templates/InvenTree/settings/user.html:15
+#: templates/js/translated/helpers.js:26
msgid "Edit"
msgstr ""
@@ -6436,65 +6579,69 @@ msgstr ""
msgid "InvenTree Version"
msgstr ""
-#: templates/about.html:26
+#: templates/about.html:27
+msgid "Development Version"
+msgstr ""
+
+#: templates/about.html:30
msgid "Up to Date"
msgstr ""
-#: templates/about.html:28
+#: templates/about.html:32
msgid "Update Available"
msgstr ""
-#: templates/about.html:34
-msgid "API Version"
-msgstr ""
-
-#: templates/about.html:39
-msgid "Python Version"
-msgstr ""
-
-#: templates/about.html:44
-msgid "Django Version"
-msgstr ""
-
-#: templates/about.html:51
+#: templates/about.html:42
msgid "Commit Hash"
msgstr ""
-#: templates/about.html:58
+#: templates/about.html:49
msgid "Commit Date"
msgstr ""
-#: templates/about.html:63
+#: templates/about.html:55
msgid "InvenTree Documentation"
msgstr ""
-#: templates/about.html:68
+#: templates/about.html:60
+msgid "API Version"
+msgstr ""
+
+#: templates/about.html:65
+msgid "Python Version"
+msgstr ""
+
+#: templates/about.html:70
+msgid "Django Version"
+msgstr ""
+
+#: templates/about.html:75
msgid "View Code on GitHub"
msgstr ""
-#: templates/about.html:73
+#: templates/about.html:80
msgid "Credits"
msgstr ""
-#: templates/about.html:78
+#: templates/about.html:85
msgid "Mobile App"
msgstr ""
-#: templates/about.html:83
+#: templates/about.html:90
msgid "Submit Bug Report"
msgstr ""
-#: templates/about.html:90 templates/clip.html:4
+#: templates/about.html:97 templates/clip.html:4
msgid "copy to clipboard"
msgstr ""
-#: templates/about.html:90
+#: templates/about.html:97
msgid "copy version information"
msgstr ""
-#: templates/about.html:100 templates/js/translated/modals.js:33
-#: templates/js/translated/modals.js:567 templates/js/translated/modals.js:661
-#: templates/js/translated/modals.js:957 templates/modals.html:29
+#: templates/about.html:107 templates/js/translated/modals.js:50
+#: templates/js/translated/modals.js:584 templates/js/translated/modals.js:678
+#: templates/js/translated/modals.js:971 templates/modals.html:29
#: templates/modals.html:54
msgid "Close"
msgstr ""
@@ -6515,1358 +6662,1390 @@ msgstr ""
msgid "Remote image must not exceed maximum allowable file size"
msgstr ""
-#: templates/js/report.js:47 templates/js/translated/report.js:47
+#: templates/js/report.js:47 templates/js/translated/report.js:67
msgid "items selected"
msgstr ""
-#: templates/js/report.js:55 templates/js/translated/report.js:55
+#: templates/js/report.js:55 templates/js/translated/report.js:75
msgid "Select Report Template"
msgstr ""
-#: templates/js/report.js:70 templates/js/translated/report.js:70
+#: templates/js/report.js:70 templates/js/translated/report.js:90
msgid "Select Test Report Template"
msgstr ""
-#: templates/js/report.js:98 templates/js/translated/label.js:10
-#: templates/js/translated/report.js:98 templates/js/translated/stock.js:244
+#: templates/js/report.js:98 templates/js/translated/label.js:29
+#: templates/js/translated/report.js:118 templates/js/translated/stock.js:313
msgid "Select Stock Items"
msgstr ""
-#: templates/js/report.js:99 templates/js/translated/report.js:99
+#: templates/js/report.js:99 templates/js/translated/report.js:119
msgid "Stock item(s) must be selected before printing reports"
msgstr ""
#: templates/js/report.js:116 templates/js/report.js:169
#: templates/js/report.js:223 templates/js/report.js:277
-#: templates/js/report.js:331 templates/js/translated/report.js:116
-#: templates/js/translated/report.js:169 templates/js/translated/report.js:223
-#: templates/js/translated/report.js:277 templates/js/translated/report.js:331
+#: templates/js/report.js:331 templates/js/translated/report.js:136
+#: templates/js/translated/report.js:189 templates/js/translated/report.js:243
+#: templates/js/translated/report.js:297 templates/js/translated/report.js:351
msgid "No Reports Found"
msgstr ""
-#: templates/js/report.js:117 templates/js/translated/report.js:117
+#: templates/js/report.js:117 templates/js/translated/report.js:137
msgid "No report templates found which match selected stock item(s)"
msgstr ""
-#: templates/js/report.js:152 templates/js/translated/report.js:152
+#: templates/js/report.js:152 templates/js/translated/report.js:172
msgid "Select Builds"
msgstr ""
-#: templates/js/report.js:153 templates/js/translated/report.js:153
+#: templates/js/report.js:153 templates/js/translated/report.js:173
msgid "Build(s) must be selected before printing reports"
msgstr ""
-#: templates/js/report.js:170 templates/js/translated/report.js:170
+#: templates/js/report.js:170 templates/js/translated/report.js:190
msgid "No report templates found which match selected build(s)"
msgstr ""
-#: templates/js/report.js:205 templates/js/translated/label.js:115
-#: templates/js/translated/report.js:205
+#: templates/js/report.js:205 templates/js/translated/label.js:134
+#: templates/js/translated/report.js:225
msgid "Select Parts"
msgstr ""
-#: templates/js/report.js:206 templates/js/translated/report.js:206
+#: templates/js/report.js:206 templates/js/translated/report.js:226
msgid "Part(s) must be selected before printing reports"
msgstr ""
-#: templates/js/report.js:224 templates/js/translated/report.js:224
+#: templates/js/report.js:224 templates/js/translated/report.js:244
msgid "No report templates found which match selected part(s)"
msgstr ""
-#: templates/js/report.js:259 templates/js/translated/report.js:259
+#: templates/js/report.js:259 templates/js/translated/report.js:279
msgid "Select Purchase Orders"
msgstr ""
-#: templates/js/report.js:260 templates/js/translated/report.js:260
+#: templates/js/report.js:260 templates/js/translated/report.js:280
msgid "Purchase Order(s) must be selected before printing report"
msgstr ""
#: templates/js/report.js:278 templates/js/report.js:332
-#: templates/js/translated/report.js:278 templates/js/translated/report.js:332
+#: templates/js/translated/report.js:298 templates/js/translated/report.js:352
msgid "No report templates found which match selected orders"
msgstr ""
-#: templates/js/report.js:313 templates/js/translated/report.js:313
+#: templates/js/report.js:313 templates/js/translated/report.js:333
msgid "Select Sales Orders"
msgstr ""
-#: templates/js/report.js:314 templates/js/translated/report.js:314
+#: templates/js/report.js:314 templates/js/translated/report.js:334
msgid "Sales Order(s) must be selected before printing report"
msgstr ""
-#: templates/js/translated/api.js:161 templates/js/translated/modals.js:1027
+#: templates/js/translated/api.js:174 templates/js/translated/modals.js:1041
msgid "No Response"
msgstr ""
-#: templates/js/translated/api.js:162 templates/js/translated/modals.js:1028
+#: templates/js/translated/api.js:175 templates/js/translated/modals.js:1042
msgid "No response from the InvenTree server"
msgstr ""
-#: templates/js/translated/api.js:167
+#: templates/js/translated/api.js:181
msgid "Error 400: Bad request"
msgstr ""
-#: templates/js/translated/api.js:168
+#: templates/js/translated/api.js:182
msgid "API request returned error code 400"
msgstr ""
-#: templates/js/translated/api.js:171 templates/js/translated/modals.js:1037
+#: templates/js/translated/api.js:186 templates/js/translated/modals.js:1051
msgid "Error 401: Not Authenticated"
msgstr ""
-#: templates/js/translated/api.js:172 templates/js/translated/modals.js:1038
+#: templates/js/translated/api.js:187 templates/js/translated/modals.js:1052
msgid "Authentication credentials not supplied"
msgstr ""
-#: templates/js/translated/api.js:175 templates/js/translated/modals.js:1042
+#: templates/js/translated/api.js:191 templates/js/translated/modals.js:1056
msgid "Error 403: Permission Denied"
msgstr ""
-#: templates/js/translated/api.js:176 templates/js/translated/modals.js:1043
+#: templates/js/translated/api.js:192 templates/js/translated/modals.js:1057
msgid "You do not have the required permissions to access this function"
msgstr ""
-#: templates/js/translated/api.js:179 templates/js/translated/modals.js:1047
+#: templates/js/translated/api.js:196 templates/js/translated/modals.js:1061
msgid "Error 404: Resource Not Found"
msgstr ""
-#: templates/js/translated/api.js:180 templates/js/translated/modals.js:1048
+#: templates/js/translated/api.js:197 templates/js/translated/modals.js:1062
msgid "The requested resource could not be located on the server"
msgstr ""
-#: templates/js/translated/api.js:183 templates/js/translated/modals.js:1052
+#: templates/js/translated/api.js:201 templates/js/translated/modals.js:1066
msgid "Error 408: Timeout"
msgstr ""
-#: templates/js/translated/api.js:184 templates/js/translated/modals.js:1053
+#: templates/js/translated/api.js:202 templates/js/translated/modals.js:1067
msgid "Connection timeout while requesting data from server"
msgstr ""
-#: templates/js/translated/api.js:187
+#: templates/js/translated/api.js:205
msgid "Unhandled Error Code"
msgstr ""
-#: templates/js/translated/api.js:188
+#: templates/js/translated/api.js:206
msgid "Error code"
msgstr ""
-#: templates/js/translated/attachment.js:16
+#: templates/js/translated/attachment.js:27
msgid "No attachments found"
msgstr ""
-#: templates/js/translated/attachment.js:56
+#: templates/js/translated/attachment.js:91
msgid "Upload Date"
msgstr ""
-#: templates/js/translated/attachment.js:69
+#: templates/js/translated/attachment.js:104
msgid "Edit attachment"
msgstr ""
-#: templates/js/translated/attachment.js:76
+#: templates/js/translated/attachment.js:111
msgid "Delete attachment"
msgstr ""
-#: templates/js/translated/barcode.js:8
+#: templates/js/translated/barcode.js:30
msgid "Scan barcode data here using wedge scanner"
msgstr ""
-#: templates/js/translated/barcode.js:10
+#: templates/js/translated/barcode.js:32
msgid "Enter barcode data"
msgstr ""
-#: templates/js/translated/barcode.js:14
+#: templates/js/translated/barcode.js:36
msgid "Barcode"
msgstr ""
-#: templates/js/translated/barcode.js:32
+#: templates/js/translated/barcode.js:54
msgid "Enter optional notes for stock transfer"
msgstr ""
-#: templates/js/translated/barcode.js:33
+#: templates/js/translated/barcode.js:55
msgid "Enter notes"
msgstr ""
-#: templates/js/translated/barcode.js:71
+#: templates/js/translated/barcode.js:93
msgid "Server error"
msgstr ""
-#: templates/js/translated/barcode.js:92
+#: templates/js/translated/barcode.js:114
msgid "Unknown response from server"
msgstr ""
-#: templates/js/translated/barcode.js:119
-#: templates/js/translated/modals.js:1017
+#: templates/js/translated/barcode.js:141
+#: templates/js/translated/modals.js:1031
msgid "Invalid server response"
msgstr ""
-#: templates/js/translated/barcode.js:212
+#: templates/js/translated/barcode.js:234
msgid "Scan barcode data below"
msgstr ""
-#: templates/js/translated/barcode.js:270
+#: templates/js/translated/barcode.js:281 templates/navbar.html:65
+msgid "Scan Barcode"
+msgstr ""
+
+#: templates/js/translated/barcode.js:292
msgid "No URL in response"
msgstr ""
-#: templates/js/translated/barcode.js:288
+#: templates/js/translated/barcode.js:310
msgid "Link Barcode to Stock Item"
msgstr ""
-#: templates/js/translated/barcode.js:311
+#: templates/js/translated/barcode.js:333
msgid "This will remove the association between this stock item and the barcode"
msgstr ""
-#: templates/js/translated/barcode.js:317
+#: templates/js/translated/barcode.js:339
msgid "Unlink"
msgstr ""
-#: templates/js/translated/barcode.js:376 templates/js/translated/stock.js:220
+#: templates/js/translated/barcode.js:398 templates/js/translated/stock.js:289
msgid "Remove stock item"
msgstr ""
-#: templates/js/translated/barcode.js:418
+#: templates/js/translated/barcode.js:440
msgid "Check Stock Items into Location"
msgstr ""
-#: templates/js/translated/barcode.js:422
-#: templates/js/translated/barcode.js:547
+#: templates/js/translated/barcode.js:444
+#: templates/js/translated/barcode.js:571
msgid "Check In"
msgstr ""
-#: templates/js/translated/barcode.js:462
-#: templates/js/translated/barcode.js:586
+#: templates/js/translated/barcode.js:486
+#: templates/js/translated/barcode.js:610
msgid "Error transferring stock"
msgstr ""
-#: templates/js/translated/barcode.js:481
+#: templates/js/translated/barcode.js:505
msgid "Stock Item already scanned"
msgstr ""
-#: templates/js/translated/barcode.js:485
+#: templates/js/translated/barcode.js:509
msgid "Stock Item already in this location"
msgstr ""
-#: templates/js/translated/barcode.js:492
+#: templates/js/translated/barcode.js:516
msgid "Added stock item"
msgstr ""
-#: templates/js/translated/barcode.js:499
+#: templates/js/translated/barcode.js:523
msgid "Barcode does not match Stock Item"
msgstr ""
-#: templates/js/translated/barcode.js:542
+#: templates/js/translated/barcode.js:566
msgid "Check Into Location"
msgstr ""
-#: templates/js/translated/barcode.js:605
+#: templates/js/translated/barcode.js:629
msgid "Barcode does not match a valid location"
msgstr ""
-#: templates/js/translated/bom.js:195 templates/js/translated/build.js:1152
+#: templates/js/translated/bom.js:215 templates/js/translated/build.js:1169
msgid "Open subassembly"
msgstr ""
-#: templates/js/translated/bom.js:269
+#: templates/js/translated/bom.js:287
msgid "Purchase Price Range"
msgstr ""
-#: templates/js/translated/bom.js:277
+#: templates/js/translated/bom.js:294
msgid "Purchase Price Average"
msgstr ""
-#: templates/js/translated/bom.js:326 templates/js/translated/bom.js:412
+#: templates/js/translated/bom.js:342 templates/js/translated/bom.js:428
msgid "View BOM"
msgstr ""
-#: templates/js/translated/bom.js:386
+#: templates/js/translated/bom.js:402
msgid "Validate BOM Item"
msgstr ""
-#: templates/js/translated/bom.js:388
+#: templates/js/translated/bom.js:404
msgid "This line has been validated"
msgstr ""
-#: templates/js/translated/bom.js:390 templates/js/translated/bom.js:555
+#: templates/js/translated/bom.js:406 templates/js/translated/bom.js:569
msgid "Edit BOM Item"
msgstr ""
-#: templates/js/translated/bom.js:392 templates/js/translated/bom.js:539
+#: templates/js/translated/bom.js:408 templates/js/translated/bom.js:554
msgid "Delete BOM Item"
msgstr ""
-#: templates/js/translated/bom.js:483 templates/js/translated/build.js:458
-#: templates/js/translated/build.js:1250
+#: templates/js/translated/bom.js:499 templates/js/translated/build.js:483
+#: templates/js/translated/build.js:1267
msgid "No BOM items found"
msgstr ""
-#: templates/js/translated/build.js:42
+#: templates/js/translated/build.js:69
msgid "Edit Build Order"
msgstr ""
-#: templates/js/translated/build.js:68
+#: templates/js/translated/build.js:95
msgid "Create Build Order"
msgstr ""
-#: templates/js/translated/build.js:100
+#: templates/js/translated/build.js:127
msgid "Auto-allocate stock items to this output"
msgstr ""
-#: templates/js/translated/build.js:108
+#: templates/js/translated/build.js:135
msgid "Unallocate stock from build output"
msgstr ""
-#: templates/js/translated/build.js:118
+#: templates/js/translated/build.js:145
msgid "Complete build output"
msgstr ""
-#: templates/js/translated/build.js:127
+#: templates/js/translated/build.js:154
msgid "Delete build output"
msgstr ""
-#: templates/js/translated/build.js:222
+#: templates/js/translated/build.js:249
msgid "No build order allocations found"
msgstr ""
-#: templates/js/translated/build.js:260 templates/js/translated/order.js:471
+#: templates/js/translated/build.js:287 templates/js/translated/order.js:813
msgid "Location not specified"
msgstr ""
-#: templates/js/translated/build.js:364 templates/stock_table.html:20
+#: templates/js/translated/build.js:391 templates/stock_table.html:20
msgid "New Stock Item"
msgstr ""
-#: templates/js/translated/build.js:679
+#: templates/js/translated/build.js:702
msgid "Required Part"
msgstr ""
-#: templates/js/translated/build.js:700
+#: templates/js/translated/build.js:723
msgid "Quantity Per"
msgstr ""
-#: templates/js/translated/build.js:770 templates/js/translated/build.js:1214
+#: templates/js/translated/build.js:793 templates/js/translated/build.js:1231
#: templates/stock_table.html:59
msgid "Order stock"
msgstr ""
-#: templates/js/translated/build.js:823
+#: templates/js/translated/build.js:846
msgid "No builds matching query"
msgstr ""
-#: templates/js/translated/build.js:840 templates/js/translated/part.js:711
-#: templates/js/translated/part.js:956 templates/js/translated/stock.js:883
-#: templates/js/translated/stock.js:1336
+#: templates/js/translated/build.js:863 templates/js/translated/part.js:845
+#: templates/js/translated/part.js:1123 templates/js/translated/stock.js:783
+#: templates/js/translated/stock.js:1477
msgid "Select"
msgstr ""
-#: templates/js/translated/build.js:860
+#: templates/js/translated/build.js:883
msgid "Build order is overdue"
msgstr ""
-#: templates/js/translated/build.js:924 templates/js/translated/stock.js:1558
+#: templates/js/translated/build.js:944 templates/js/translated/stock.js:1696
msgid "No user information"
msgstr ""
-#: templates/js/translated/build.js:939
+#: templates/js/translated/build.js:956
msgid "No information"
msgstr ""
-#: templates/js/translated/build.js:989
+#: templates/js/translated/build.js:1007
msgid "No parts allocated for"
msgstr ""
-#: templates/js/translated/company.js:34
+#: templates/js/translated/company.js:65
msgid "Add Manufacturer"
msgstr ""
-#: templates/js/translated/company.js:47 templates/js/translated/company.js:136
+#: templates/js/translated/company.js:78 templates/js/translated/company.js:176
msgid "Add Manufacturer Part"
msgstr ""
-#: templates/js/translated/company.js:59
+#: templates/js/translated/company.js:99
msgid "Edit Manufacturer Part"
msgstr ""
-#: templates/js/translated/company.js:68
+#: templates/js/translated/company.js:108
msgid "Delete Manufacturer Part"
msgstr ""
-#: templates/js/translated/company.js:124 templates/js/translated/order.js:58
+#: templates/js/translated/company.js:164 templates/js/translated/order.js:86
msgid "Add Supplier"
msgstr ""
-#: templates/js/translated/company.js:152
+#: templates/js/translated/company.js:192
msgid "Add Supplier Part"
msgstr ""
-#: templates/js/translated/company.js:162
+#: templates/js/translated/company.js:207
msgid "Edit Supplier Part"
msgstr ""
-#: templates/js/translated/company.js:172
+#: templates/js/translated/company.js:217
msgid "Delete Supplier Part"
msgstr ""
-#: templates/js/translated/company.js:219
+#: templates/js/translated/company.js:264
msgid "Edit Company"
msgstr ""
-#: templates/js/translated/company.js:240
+#: templates/js/translated/company.js:285
msgid "Add new Company"
msgstr ""
-#: templates/js/translated/company.js:317
+#: templates/js/translated/company.js:362
msgid "Parts Supplied"
msgstr ""
-#: templates/js/translated/company.js:326
+#: templates/js/translated/company.js:371
msgid "Parts Manufactured"
msgstr ""
-#: templates/js/translated/company.js:339
+#: templates/js/translated/company.js:385
msgid "No company information found"
msgstr ""
-#: templates/js/translated/company.js:357
+#: templates/js/translated/company.js:404
msgid "The following manufacturer parts will be deleted"
msgstr ""
-#: templates/js/translated/company.js:374
+#: templates/js/translated/company.js:421
msgid "Delete Manufacturer Parts"
msgstr ""
-#: templates/js/translated/company.js:427
+#: templates/js/translated/company.js:475
msgid "No manufacturer parts found"
msgstr ""
-#: templates/js/translated/company.js:446
-#: templates/js/translated/company.js:696 templates/js/translated/part.js:288
-#: templates/js/translated/part.js:373
+#: templates/js/translated/company.js:495
+#: templates/js/translated/company.js:751 templates/js/translated/part.js:416
+#: templates/js/translated/part.js:501
msgid "Template part"
msgstr ""
-#: templates/js/translated/company.js:450
-#: templates/js/translated/company.js:700 templates/js/translated/part.js:292
-#: templates/js/translated/part.js:377
+#: templates/js/translated/company.js:499
+#: templates/js/translated/company.js:755 templates/js/translated/part.js:420
+#: templates/js/translated/part.js:505
msgid "Assembled part"
msgstr ""
-#: templates/js/translated/company.js:574 templates/js/translated/part.js:462
+#: templates/js/translated/company.js:626 templates/js/translated/part.js:593
msgid "No parameters found"
msgstr ""
-#: templates/js/translated/company.js:610 templates/js/translated/part.js:503
+#: templates/js/translated/company.js:663 templates/js/translated/part.js:635
msgid "Edit parameter"
msgstr ""
-#: templates/js/translated/company.js:611 templates/js/translated/part.js:504
+#: templates/js/translated/company.js:664 templates/js/translated/part.js:636
msgid "Delete parameter"
msgstr ""
-#: templates/js/translated/company.js:630 templates/js/translated/part.js:521
+#: templates/js/translated/company.js:683 templates/js/translated/part.js:653
msgid "Edit Parameter"
msgstr ""
-#: templates/js/translated/company.js:641 templates/js/translated/part.js:533
+#: templates/js/translated/company.js:694 templates/js/translated/part.js:665
msgid "Delete Parameter"
msgstr ""
-#: templates/js/translated/company.js:677
+#: templates/js/translated/company.js:731
msgid "No supplier parts found"
msgstr ""
-#: templates/js/translated/filters.js:167
-#: templates/js/translated/filters.js:404
+#: templates/js/translated/filters.js:178
+#: templates/js/translated/filters.js:402
msgid "true"
msgstr ""
-#: templates/js/translated/filters.js:171
-#: templates/js/translated/filters.js:405
+#: templates/js/translated/filters.js:182
+#: templates/js/translated/filters.js:403
msgid "false"
msgstr ""
-#: templates/js/translated/filters.js:193
+#: templates/js/translated/filters.js:204
msgid "Select filter"
msgstr ""
-#: templates/js/translated/filters.js:268
+#: templates/js/translated/filters.js:279
msgid "Reload data"
msgstr ""
-#: templates/js/translated/filters.js:270
+#: templates/js/translated/filters.js:281
msgid "Add new filter"
msgstr ""
-#: templates/js/translated/filters.js:273
+#: templates/js/translated/filters.js:284
msgid "Clear all filters"
msgstr ""
-#: templates/js/translated/filters.js:303
+#: templates/js/translated/filters.js:312
msgid "Create filter"
msgstr ""
-#: templates/js/translated/forms.js:289 templates/js/translated/forms.js:302
-#: templates/js/translated/forms.js:314 templates/js/translated/forms.js:326
+#: templates/js/translated/forms.js:323 templates/js/translated/forms.js:336
+#: templates/js/translated/forms.js:348 templates/js/translated/forms.js:360
msgid "Action Prohibited"
msgstr ""
-#: templates/js/translated/forms.js:290
+#: templates/js/translated/forms.js:324
msgid "Create operation not allowed"
msgstr ""
-#: templates/js/translated/forms.js:303
+#: templates/js/translated/forms.js:337
msgid "Update operation not allowed"
msgstr ""
-#: templates/js/translated/forms.js:315
+#: templates/js/translated/forms.js:349
msgid "Delete operation not allowed"
msgstr ""
-#: templates/js/translated/forms.js:327
+#: templates/js/translated/forms.js:361
msgid "View operation not allowed"
msgstr ""
-#: templates/js/translated/forms.js:865 templates/modals.html:21
+#: templates/js/translated/forms.js:889 templates/modals.html:21
#: templates/modals.html:47
msgid "Form errors exist"
msgstr ""
-#: templates/js/translated/forms.js:1258
+#: templates/js/translated/forms.js:1379
msgid "Searching"
msgstr ""
-#: templates/js/translated/forms.js:1423
+#: templates/js/translated/forms.js:1593
msgid "Clear input"
msgstr ""
-#: templates/js/translated/label.js:11
-msgid "Stock item(s) must be selected before printing labels"
+#: templates/js/translated/helpers.js:19
+msgid "YES"
msgstr ""
-#: templates/js/translated/label.js:29 templates/js/translated/label.js:79
-#: templates/js/translated/label.js:134
-msgid "No Labels Found"
+#: templates/js/translated/helpers.js:21
+msgid "NO"
msgstr ""
#: templates/js/translated/label.js:30
+msgid "Stock item(s) must be selected before printing labels"
+msgstr ""
+
+#: templates/js/translated/label.js:48 templates/js/translated/label.js:98
+#: templates/js/translated/label.js:153
+msgid "No Labels Found"
+msgstr ""
+
+#: templates/js/translated/label.js:49
msgid "No labels found which match selected stock item(s)"
msgstr ""
-#: templates/js/translated/label.js:61
+#: templates/js/translated/label.js:80
msgid "Select Stock Locations"
msgstr ""
-#: templates/js/translated/label.js:62
+#: templates/js/translated/label.js:81
msgid "Stock location(s) must be selected before printing labels"
msgstr ""
-#: templates/js/translated/label.js:80
+#: templates/js/translated/label.js:99
msgid "No labels found which match selected stock location(s)"
msgstr ""
-#: templates/js/translated/label.js:116
+#: templates/js/translated/label.js:135
msgid "Part(s) must be selected before printing labels"
msgstr ""
-#: templates/js/translated/label.js:135
+#: templates/js/translated/label.js:154
msgid "No labels found which match the selected part(s)"
msgstr ""
-#: templates/js/translated/label.js:209
+#: templates/js/translated/label.js:228
msgid "stock items selected"
msgstr ""
-#: templates/js/translated/label.js:217
+#: templates/js/translated/label.js:236
msgid "Select Label"
msgstr ""
-#: templates/js/translated/label.js:232
+#: templates/js/translated/label.js:251
msgid "Select Label Template"
msgstr ""
-#: templates/js/translated/modals.js:59 templates/js/translated/modals.js:103
-#: templates/js/translated/modals.js:593
+#: templates/js/translated/modals.js:76 templates/js/translated/modals.js:120
+#: templates/js/translated/modals.js:610
msgid "Cancel"
msgstr ""
-#: templates/js/translated/modals.js:60 templates/js/translated/modals.js:102
-#: templates/js/translated/modals.js:660 templates/js/translated/modals.js:956
+#: templates/js/translated/modals.js:77 templates/js/translated/modals.js:119
+#: templates/js/translated/modals.js:677 templates/js/translated/modals.js:970
#: templates/modals.html:30 templates/modals.html:55
msgid "Submit"
msgstr ""
-#: templates/js/translated/modals.js:101
+#: templates/js/translated/modals.js:118
msgid "Form Title"
msgstr ""
-#: templates/js/translated/modals.js:380
+#: templates/js/translated/modals.js:397
msgid "Waiting for server..."
msgstr ""
-#: templates/js/translated/modals.js:539
+#: templates/js/translated/modals.js:556
msgid "Show Error Information"
msgstr ""
-#: templates/js/translated/modals.js:592
+#: templates/js/translated/modals.js:609
msgid "Accept"
msgstr ""
-#: templates/js/translated/modals.js:649
+#: templates/js/translated/modals.js:666
msgid "Loading Data"
msgstr ""
-#: templates/js/translated/modals.js:907
+#: templates/js/translated/modals.js:922
msgid "Invalid response from server"
msgstr ""
-#: templates/js/translated/modals.js:907
+#: templates/js/translated/modals.js:922
msgid "Form data missing from server response"
msgstr ""
-#: templates/js/translated/modals.js:920
+#: templates/js/translated/modals.js:934
msgid "Error posting form data"
msgstr ""
-#: templates/js/translated/modals.js:1017
+#: templates/js/translated/modals.js:1031
msgid "JSON response missing form data"
msgstr ""
-#: templates/js/translated/modals.js:1032
+#: templates/js/translated/modals.js:1046
msgid "Error 400: Bad Request"
msgstr ""
-#: templates/js/translated/modals.js:1033
+#: templates/js/translated/modals.js:1047
msgid "Server returned error code 400"
msgstr ""
-#: templates/js/translated/modals.js:1056
+#: templates/js/translated/modals.js:1070
msgid "Error requesting form data"
msgstr ""
-#: templates/js/translated/model_renderers.js:38
+#: templates/js/translated/model_renderers.js:40
msgid "Company ID"
msgstr ""
-#: templates/js/translated/model_renderers.js:78
+#: templates/js/translated/model_renderers.js:82
msgid "Location ID"
msgstr ""
-#: templates/js/translated/model_renderers.js:95
+#: templates/js/translated/model_renderers.js:99
msgid "Build ID"
msgstr ""
-#: templates/js/translated/model_renderers.js:114
+#: templates/js/translated/model_renderers.js:119
msgid "Part ID"
msgstr ""
-#: templates/js/translated/model_renderers.js:163
+#: templates/js/translated/model_renderers.js:171
msgid "Category ID"
msgstr ""
-#: templates/js/translated/model_renderers.js:199
+#: templates/js/translated/model_renderers.js:208
msgid "Manufacturer Part ID"
msgstr ""
-#: templates/js/translated/model_renderers.js:227
+#: templates/js/translated/model_renderers.js:237
msgid "Supplier Part ID"
msgstr ""
-#: templates/js/translated/order.js:17
+#: templates/js/translated/order.js:45
msgid "Add Customer"
msgstr ""
-#: templates/js/translated/order.js:42
+#: templates/js/translated/order.js:70
msgid "Create Sales Order"
msgstr ""
-#: templates/js/translated/order.js:222
+#: templates/js/translated/order.js:295
msgid "No purchase orders found"
msgstr ""
-#: templates/js/translated/order.js:246 templates/js/translated/order.js:341
+#: templates/js/translated/order.js:320 templates/js/translated/order.js:682
msgid "Order is overdue"
msgstr ""
-#: templates/js/translated/order.js:318
+#: templates/js/translated/order.js:452
+msgid "No line items found"
+msgstr ""
+
+#: templates/js/translated/order.js:617
+msgid "Delete line item"
+msgstr ""
+
+#: templates/js/translated/order.js:621
+msgid "Receive line item"
+msgstr ""
+
+#: templates/js/translated/order.js:658
msgid "No sales orders found"
msgstr ""
-#: templates/js/translated/order.js:355
+#: templates/js/translated/order.js:696
msgid "Invalid Customer"
msgstr ""
-#: templates/js/translated/order.js:432
+#: templates/js/translated/order.js:774
msgid "No sales order allocations found"
msgstr ""
-#: templates/js/translated/part.js:10
-msgid "YES"
-msgstr ""
-
-#: templates/js/translated/part.js:12
-msgid "NO"
-msgstr ""
-
-#: templates/js/translated/part.js:22
-msgid "Add Part Category"
-msgstr ""
-
-#: templates/js/translated/part.js:53
+#: templates/js/translated/part.js:49
msgid "Part Attributes"
msgstr ""
-#: templates/js/translated/part.js:96
+#: templates/js/translated/part.js:53
msgid "Part Creation Options"
msgstr ""
-#: templates/js/translated/part.js:102
-msgid "Initial Stock Quantity"
-msgstr ""
-
-#: templates/js/translated/part.js:103
-msgid "Initialize part stock with specified quantity"
-msgstr ""
-
-#: templates/js/translated/part.js:109
-msgid "Copy Category Parameters"
-msgstr ""
-
-#: templates/js/translated/part.js:110
-msgid "Copy parameter templates from selected part category"
-msgstr ""
-
-#: templates/js/translated/part.js:120
+#: templates/js/translated/part.js:57
msgid "Part Duplication Options"
msgstr ""
-#: templates/js/translated/part.js:131
-msgid "Copy Image"
+#: templates/js/translated/part.js:61
+msgid "Supplier Options"
msgstr ""
-#: templates/js/translated/part.js:132
-msgid "Copy image from original part"
+#: templates/js/translated/part.js:75
+msgid "Add Part Category"
msgstr ""
-#: templates/js/translated/part.js:138
-msgid "Copy BOM"
+#: templates/js/translated/part.js:159
+msgid "Create Initial Stock"
msgstr ""
-#: templates/js/translated/part.js:139
-msgid "Copy bill of materials from original part"
+#: templates/js/translated/part.js:160
+msgid "Create an initial stock item for this part"
msgstr ""
-#: templates/js/translated/part.js:145
-msgid "Copy Parameters"
+#: templates/js/translated/part.js:167
+msgid "Initial Stock Quantity"
msgstr ""
-#: templates/js/translated/part.js:146
-msgid "Copy parameter data from original part"
+#: templates/js/translated/part.js:168
+msgid "Specify initial stock quantity for this part"
msgstr ""
-#: templates/js/translated/part.js:158
-msgid "Parent part category"
+#: templates/js/translated/part.js:175 templates/js/translated/stock.js:330
+msgid "Select destination stock location"
+msgstr ""
+
+#: templates/js/translated/part.js:186
+msgid "Copy Category Parameters"
+msgstr ""
+
+#: templates/js/translated/part.js:187
+msgid "Copy parameter templates from selected part category"
+msgstr ""
+
+#: templates/js/translated/part.js:195
+msgid "Add Supplier Data"
msgstr ""
#: templates/js/translated/part.js:196
+msgid "Create initial supplier data for this part"
+msgstr ""
+
+#: templates/js/translated/part.js:252
+msgid "Copy Image"
+msgstr ""
+
+#: templates/js/translated/part.js:253
+msgid "Copy image from original part"
+msgstr ""
+
+#: templates/js/translated/part.js:260
+msgid "Copy BOM"
+msgstr ""
+
+#: templates/js/translated/part.js:261
+msgid "Copy bill of materials from original part"
+msgstr ""
+
+#: templates/js/translated/part.js:268
+msgid "Copy Parameters"
+msgstr ""
+
+#: templates/js/translated/part.js:269
+msgid "Copy parameter data from original part"
+msgstr ""
+
+#: templates/js/translated/part.js:282
+msgid "Parent part category"
+msgstr ""
+
+#: templates/js/translated/part.js:323
msgid "Edit Part"
msgstr ""
-#: templates/js/translated/part.js:280 templates/js/translated/part.js:365
+#: templates/js/translated/part.js:408 templates/js/translated/part.js:493
msgid "Trackable part"
msgstr ""
-#: templates/js/translated/part.js:284 templates/js/translated/part.js:369
+#: templates/js/translated/part.js:412 templates/js/translated/part.js:497
msgid "Virtual part"
msgstr ""
-#: templates/js/translated/part.js:296
+#: templates/js/translated/part.js:424
msgid "Starred part"
msgstr ""
-#: templates/js/translated/part.js:300
+#: templates/js/translated/part.js:428
msgid "Salable part"
msgstr ""
-#: templates/js/translated/part.js:414
+#: templates/js/translated/part.js:543
msgid "No variants found"
msgstr ""
-#: templates/js/translated/part.js:601 templates/js/translated/part.js:840
+#: templates/js/translated/part.js:732 templates/js/translated/part.js:994
msgid "No parts found"
msgstr ""
-#: templates/js/translated/part.js:779
+#: templates/js/translated/part.js:921
msgid "No category"
msgstr ""
-#: templates/js/translated/part.js:797
-#: templates/js/translated/table_filters.js:337
+#: templates/js/translated/part.js:944
+#: templates/js/translated/table_filters.js:350
msgid "Low stock"
msgstr ""
-#: templates/js/translated/part.js:981 templates/js/translated/stock.js:1360
+#: templates/js/translated/part.js:1148 templates/js/translated/stock.js:1501
msgid "Path"
msgstr ""
-#: templates/js/translated/part.js:1024
+#: templates/js/translated/part.js:1191
msgid "No test templates matching query"
msgstr ""
-#: templates/js/translated/part.js:1075 templates/js/translated/stock.js:443
+#: templates/js/translated/part.js:1242 templates/js/translated/stock.js:514
msgid "Edit test result"
msgstr ""
-#: templates/js/translated/part.js:1076 templates/js/translated/stock.js:444
+#: templates/js/translated/part.js:1243 templates/js/translated/stock.js:515
msgid "Delete test result"
msgstr ""
-#: templates/js/translated/part.js:1082
+#: templates/js/translated/part.js:1249
msgid "This test is defined for a parent part"
msgstr ""
-#: templates/js/translated/part.js:1107
+#: templates/js/translated/part.js:1274
#, python-brace-format
msgid "No ${human_name} information found"
msgstr ""
-#: templates/js/translated/part.js:1160
+#: templates/js/translated/part.js:1329
#, python-brace-format
msgid "Edit ${human_name}"
msgstr ""
-#: templates/js/translated/part.js:1161
+#: templates/js/translated/part.js:1330
#, python-brace-format
msgid "Delete ${human_name}"
msgstr ""
-#: templates/js/translated/part.js:1261
+#: templates/js/translated/part.js:1431
msgid "Single Price"
msgstr ""
-#: templates/js/translated/part.js:1280
+#: templates/js/translated/part.js:1450
msgid "Single Price Difference"
msgstr ""
-#: templates/js/translated/stock.js:9
+#: templates/js/translated/stock.js:66
msgid "Parent stock location"
msgstr ""
-#: templates/js/translated/stock.js:39
+#: templates/js/translated/stock.js:96
msgid "Export Stock"
msgstr ""
-#: templates/js/translated/stock.js:42
+#: templates/js/translated/stock.js:99
msgid "Format"
msgstr ""
-#: templates/js/translated/stock.js:43
+#: templates/js/translated/stock.js:100
msgid "Select file format"
msgstr ""
-#: templates/js/translated/stock.js:55
+#: templates/js/translated/stock.js:124
msgid "Include Sublocations"
msgstr ""
-#: templates/js/translated/stock.js:56
+#: templates/js/translated/stock.js:125
msgid "Include stock items in sublocations"
msgstr ""
-#: templates/js/translated/stock.js:98
+#: templates/js/translated/stock.js:167
msgid "Transfer Stock"
msgstr ""
-#: templates/js/translated/stock.js:99
+#: templates/js/translated/stock.js:168
msgid "Move"
msgstr ""
-#: templates/js/translated/stock.js:105
+#: templates/js/translated/stock.js:174
msgid "Count Stock"
msgstr ""
-#: templates/js/translated/stock.js:106
+#: templates/js/translated/stock.js:175
msgid "Count"
msgstr ""
-#: templates/js/translated/stock.js:110
+#: templates/js/translated/stock.js:179
msgid "Remove Stock"
msgstr ""
-#: templates/js/translated/stock.js:111
+#: templates/js/translated/stock.js:180
msgid "Take"
msgstr ""
-#: templates/js/translated/stock.js:115
+#: templates/js/translated/stock.js:184
msgid "Add Stock"
msgstr ""
-#: templates/js/translated/stock.js:116 users/models.py:190
+#: templates/js/translated/stock.js:185 users/models.py:190
msgid "Add"
msgstr ""
-#: templates/js/translated/stock.js:120 templates/stock_table.html:63
+#: templates/js/translated/stock.js:189 templates/stock_table.html:63
msgid "Delete Stock"
msgstr ""
-#: templates/js/translated/stock.js:209
+#: templates/js/translated/stock.js:278
msgid "Quantity cannot be adjusted for serialized stock"
msgstr ""
-#: templates/js/translated/stock.js:209
+#: templates/js/translated/stock.js:278
msgid "Specify stock quantity"
msgstr ""
-#: templates/js/translated/stock.js:245
+#: templates/js/translated/stock.js:314
msgid "You must select at least one available stock item"
msgstr ""
-#: templates/js/translated/stock.js:261
-msgid "Select destination stock location"
-msgstr ""
-
-#: templates/js/translated/stock.js:269
+#: templates/js/translated/stock.js:339
msgid "Stock transaction notes"
msgstr ""
-#: templates/js/translated/stock.js:406
+#: templates/js/translated/stock.js:477
msgid "PASS"
msgstr ""
-#: templates/js/translated/stock.js:408
+#: templates/js/translated/stock.js:479
msgid "FAIL"
msgstr ""
-#: templates/js/translated/stock.js:413
+#: templates/js/translated/stock.js:484
msgid "NO RESULT"
msgstr ""
-#: templates/js/translated/stock.js:439
+#: templates/js/translated/stock.js:510
msgid "Add test result"
msgstr ""
-#: templates/js/translated/stock.js:465
+#: templates/js/translated/stock.js:536
msgid "No test results found"
msgstr ""
-#: templates/js/translated/stock.js:513
+#: templates/js/translated/stock.js:584
msgid "Test Date"
msgstr ""
-#: templates/js/translated/stock.js:621
+#: templates/js/translated/stock.js:691
msgid "In production"
msgstr ""
-#: templates/js/translated/stock.js:625
+#: templates/js/translated/stock.js:695
msgid "Installed in Stock Item"
msgstr ""
-#: templates/js/translated/stock.js:633
+#: templates/js/translated/stock.js:703
msgid "Assigned to Sales Order"
msgstr ""
-#: templates/js/translated/stock.js:709
-msgid "No stock items matching query"
-msgstr ""
-
-#: templates/js/translated/stock.js:729
-msgid "items"
-msgstr ""
-
-#: templates/js/translated/stock.js:821
-msgid "batches"
-msgstr ""
-
-#: templates/js/translated/stock.js:848
-msgid "locations"
-msgstr ""
-
-#: templates/js/translated/stock.js:850
-msgid "Undefined location"
-msgstr ""
-
-#: templates/js/translated/stock.js:951
+#: templates/js/translated/stock.js:865
msgid "Stock item is in production"
msgstr ""
-#: templates/js/translated/stock.js:956
+#: templates/js/translated/stock.js:870
msgid "Stock item assigned to sales order"
msgstr ""
-#: templates/js/translated/stock.js:959
+#: templates/js/translated/stock.js:873
msgid "Stock item assigned to customer"
msgstr ""
-#: templates/js/translated/stock.js:963
+#: templates/js/translated/stock.js:877
msgid "Stock item has expired"
msgstr ""
-#: templates/js/translated/stock.js:965
+#: templates/js/translated/stock.js:879
msgid "Stock item will expire soon"
msgstr ""
-#: templates/js/translated/stock.js:969
+#: templates/js/translated/stock.js:883
msgid "Stock item has been allocated"
msgstr ""
-#: templates/js/translated/stock.js:973
+#: templates/js/translated/stock.js:887
msgid "Stock item has been installed in another item"
msgstr ""
-#: templates/js/translated/stock.js:980
+#: templates/js/translated/stock.js:894
msgid "Stock item has been rejected"
msgstr ""
-#: templates/js/translated/stock.js:984
+#: templates/js/translated/stock.js:896
msgid "Stock item is lost"
msgstr ""
-#: templates/js/translated/stock.js:987
+#: templates/js/translated/stock.js:898
msgid "Stock item is destroyed"
msgstr ""
-#: templates/js/translated/stock.js:991
-#: templates/js/translated/table_filters.js:148
+#: templates/js/translated/stock.js:902
+#: templates/js/translated/table_filters.js:161
msgid "Depleted"
msgstr ""
-#: templates/js/translated/stock.js:1020
+#: templates/js/translated/stock.js:956
msgid "Stocktake"
msgstr ""
-#: templates/js/translated/stock.js:1073
+#: templates/js/translated/stock.js:1029
msgid "Supplier part not specified"
msgstr ""
-#: templates/js/translated/stock.js:1223
+#: templates/js/translated/stock.js:1067
+msgid "No stock items matching query"
+msgstr ""
+
+#: templates/js/translated/stock.js:1088 templates/js/translated/stock.js:1136
+msgid "items"
+msgstr ""
+
+#: templates/js/translated/stock.js:1176
+msgid "batches"
+msgstr ""
+
+#: templates/js/translated/stock.js:1203
+msgid "locations"
+msgstr ""
+
+#: templates/js/translated/stock.js:1205
+msgid "Undefined location"
+msgstr ""
+
+#: templates/js/translated/stock.js:1364
msgid "Stock Status"
msgstr ""
-#: templates/js/translated/stock.js:1238
+#: templates/js/translated/stock.js:1379
msgid "Set Stock Status"
msgstr ""
-#: templates/js/translated/stock.js:1252
+#: templates/js/translated/stock.js:1393
msgid "Select Status Code"
msgstr ""
-#: templates/js/translated/stock.js:1253
+#: templates/js/translated/stock.js:1394
msgid "Status code must be selected"
msgstr ""
-#: templates/js/translated/stock.js:1392
+#: templates/js/translated/stock.js:1533
msgid "Invalid date"
msgstr ""
-#: templates/js/translated/stock.js:1439
+#: templates/js/translated/stock.js:1580
msgid "Location no longer exists"
msgstr ""
-#: templates/js/translated/stock.js:1458
+#: templates/js/translated/stock.js:1599
msgid "Purchase order no longer exists"
msgstr ""
-#: templates/js/translated/stock.js:1477
+#: templates/js/translated/stock.js:1618
msgid "Customer no longer exists"
msgstr ""
-#: templates/js/translated/stock.js:1495
+#: templates/js/translated/stock.js:1636
msgid "Stock item no longer exists"
msgstr ""
-#: templates/js/translated/stock.js:1518
+#: templates/js/translated/stock.js:1659
msgid "Added"
msgstr ""
-#: templates/js/translated/stock.js:1526
+#: templates/js/translated/stock.js:1667
msgid "Removed"
msgstr ""
-#: templates/js/translated/stock.js:1570
+#: templates/js/translated/stock.js:1708
msgid "Edit tracking entry"
msgstr ""
-#: templates/js/translated/stock.js:1571
+#: templates/js/translated/stock.js:1709
msgid "Delete tracking entry"
msgstr ""
-#: templates/js/translated/stock.js:1715
+#: templates/js/translated/stock.js:1833
msgid "No installed items"
msgstr ""
-#: templates/js/translated/stock.js:1738
+#: templates/js/translated/stock.js:1856
msgid "Serial"
msgstr ""
-#: templates/js/translated/stock.js:1766
+#: templates/js/translated/stock.js:1884
msgid "Uninstall Stock Item"
msgstr ""
-#: templates/js/translated/table_filters.js:43
+#: templates/js/translated/table_filters.js:56
msgid "Trackable Part"
msgstr ""
-#: templates/js/translated/table_filters.js:47
+#: templates/js/translated/table_filters.js:60
msgid "Assembled Part"
msgstr ""
-#: templates/js/translated/table_filters.js:51
+#: templates/js/translated/table_filters.js:64
msgid "Validated"
msgstr ""
-#: templates/js/translated/table_filters.js:59
+#: templates/js/translated/table_filters.js:72
msgid "Allow Variant Stock"
msgstr ""
-#: templates/js/translated/table_filters.js:79
-#: templates/js/translated/table_filters.js:143
+#: templates/js/translated/table_filters.js:92
+#: templates/js/translated/table_filters.js:156
msgid "Include sublocations"
msgstr ""
-#: templates/js/translated/table_filters.js:80
+#: templates/js/translated/table_filters.js:93
msgid "Include locations"
msgstr ""
-#: templates/js/translated/table_filters.js:90
-#: templates/js/translated/table_filters.js:91
-#: templates/js/translated/table_filters.js:314
+#: templates/js/translated/table_filters.js:103
+#: templates/js/translated/table_filters.js:104
+#: templates/js/translated/table_filters.js:327
msgid "Include subcategories"
msgstr ""
-#: templates/js/translated/table_filters.js:101
-#: templates/js/translated/table_filters.js:178
+#: templates/js/translated/table_filters.js:114
+#: templates/js/translated/table_filters.js:191
msgid "Is Serialized"
msgstr ""
-#: templates/js/translated/table_filters.js:104
-#: templates/js/translated/table_filters.js:185
+#: templates/js/translated/table_filters.js:117
+#: templates/js/translated/table_filters.js:198
msgid "Serial number GTE"
msgstr ""
-#: templates/js/translated/table_filters.js:105
-#: templates/js/translated/table_filters.js:186
+#: templates/js/translated/table_filters.js:118
+#: templates/js/translated/table_filters.js:199
msgid "Serial number greater than or equal to"
msgstr ""
-#: templates/js/translated/table_filters.js:108
-#: templates/js/translated/table_filters.js:189
+#: templates/js/translated/table_filters.js:121
+#: templates/js/translated/table_filters.js:202
msgid "Serial number LTE"
msgstr ""
-#: templates/js/translated/table_filters.js:109
-#: templates/js/translated/table_filters.js:190
+#: templates/js/translated/table_filters.js:122
+#: templates/js/translated/table_filters.js:203
msgid "Serial number less than or equal to"
msgstr ""
-#: templates/js/translated/table_filters.js:112
-#: templates/js/translated/table_filters.js:113
-#: templates/js/translated/table_filters.js:181
-#: templates/js/translated/table_filters.js:182
+#: templates/js/translated/table_filters.js:125
+#: templates/js/translated/table_filters.js:126
+#: templates/js/translated/table_filters.js:194
+#: templates/js/translated/table_filters.js:195
msgid "Serial number"
msgstr ""
-#: templates/js/translated/table_filters.js:117
-#: templates/js/translated/table_filters.js:199
+#: templates/js/translated/table_filters.js:130
+#: templates/js/translated/table_filters.js:212
msgid "Batch code"
msgstr ""
-#: templates/js/translated/table_filters.js:128
-#: templates/js/translated/table_filters.js:304
+#: templates/js/translated/table_filters.js:141
+#: templates/js/translated/table_filters.js:317
msgid "Active parts"
msgstr ""
-#: templates/js/translated/table_filters.js:129
+#: templates/js/translated/table_filters.js:142
msgid "Show stock for active parts"
msgstr ""
-#: templates/js/translated/table_filters.js:134
+#: templates/js/translated/table_filters.js:147
msgid "Part is an assembly"
msgstr ""
-#: templates/js/translated/table_filters.js:138
+#: templates/js/translated/table_filters.js:151
msgid "Is allocated"
msgstr ""
-#: templates/js/translated/table_filters.js:139
+#: templates/js/translated/table_filters.js:152
msgid "Item has been allocated"
msgstr ""
-#: templates/js/translated/table_filters.js:144
+#: templates/js/translated/table_filters.js:157
msgid "Include stock in sublocations"
msgstr ""
-#: templates/js/translated/table_filters.js:149
+#: templates/js/translated/table_filters.js:162
msgid "Show stock items which are depleted"
msgstr ""
-#: templates/js/translated/table_filters.js:154
+#: templates/js/translated/table_filters.js:167
msgid "Show items which are in stock"
msgstr ""
-#: templates/js/translated/table_filters.js:158
+#: templates/js/translated/table_filters.js:171
msgid "In Production"
msgstr ""
-#: templates/js/translated/table_filters.js:159
+#: templates/js/translated/table_filters.js:172
msgid "Show items which are in production"
msgstr ""
-#: templates/js/translated/table_filters.js:163
+#: templates/js/translated/table_filters.js:176
msgid "Include Variants"
msgstr ""
-#: templates/js/translated/table_filters.js:164
+#: templates/js/translated/table_filters.js:177
msgid "Include stock items for variant parts"
msgstr ""
-#: templates/js/translated/table_filters.js:168
+#: templates/js/translated/table_filters.js:181
msgid "Installed"
msgstr ""
-#: templates/js/translated/table_filters.js:169
+#: templates/js/translated/table_filters.js:182
msgid "Show stock items which are installed in another item"
msgstr ""
-#: templates/js/translated/table_filters.js:174
+#: templates/js/translated/table_filters.js:187
msgid "Show items which have been assigned to a customer"
msgstr ""
-#: templates/js/translated/table_filters.js:194
-#: templates/js/translated/table_filters.js:195
+#: templates/js/translated/table_filters.js:207
+#: templates/js/translated/table_filters.js:208
msgid "Stock status"
msgstr ""
-#: templates/js/translated/table_filters.js:203
+#: templates/js/translated/table_filters.js:216
msgid "Has purchase price"
msgstr ""
-#: templates/js/translated/table_filters.js:204
+#: templates/js/translated/table_filters.js:217
msgid "Show stock items which have a purchase price set"
msgstr ""
-#: templates/js/translated/table_filters.js:213
+#: templates/js/translated/table_filters.js:226
msgid "Show stock items which have expired"
msgstr ""
-#: templates/js/translated/table_filters.js:219
+#: templates/js/translated/table_filters.js:232
msgid "Show stock which is close to expiring"
msgstr ""
-#: templates/js/translated/table_filters.js:250
+#: templates/js/translated/table_filters.js:263
msgid "Build status"
msgstr ""
-#: templates/js/translated/table_filters.js:269
-#: templates/js/translated/table_filters.js:286
+#: templates/js/translated/table_filters.js:282
+#: templates/js/translated/table_filters.js:299
msgid "Order status"
msgstr ""
-#: templates/js/translated/table_filters.js:274
-#: templates/js/translated/table_filters.js:291
+#: templates/js/translated/table_filters.js:287
+#: templates/js/translated/table_filters.js:304
msgid "Outstanding"
msgstr ""
-#: templates/js/translated/table_filters.js:315
+#: templates/js/translated/table_filters.js:328
msgid "Include parts in subcategories"
msgstr ""
-#: templates/js/translated/table_filters.js:319
+#: templates/js/translated/table_filters.js:332
msgid "Has IPN"
msgstr ""
-#: templates/js/translated/table_filters.js:320
+#: templates/js/translated/table_filters.js:333
msgid "Part has internal part number"
msgstr ""
-#: templates/js/translated/table_filters.js:325
+#: templates/js/translated/table_filters.js:338
msgid "Show active parts"
msgstr ""
-#: templates/js/translated/table_filters.js:333
+#: templates/js/translated/table_filters.js:346
msgid "Stock available"
msgstr ""
-#: templates/js/translated/table_filters.js:349
+#: templates/js/translated/table_filters.js:362
msgid "Starred"
msgstr ""
-#: templates/js/translated/table_filters.js:361
+#: templates/js/translated/table_filters.js:374
msgid "Purchasable"
msgstr ""
-#: templates/js/translated/tables.js:342
+#: templates/js/translated/tables.js:357
msgid "Loading data"
msgstr ""
-#: templates/js/translated/tables.js:345
+#: templates/js/translated/tables.js:360
msgid "rows per page"
msgstr ""
-#: templates/js/translated/tables.js:348
+#: templates/js/translated/tables.js:363
msgid "Showing"
msgstr ""
-#: templates/js/translated/tables.js:348
+#: templates/js/translated/tables.js:363
msgid "to"
msgstr ""
-#: templates/js/translated/tables.js:348
+#: templates/js/translated/tables.js:363
msgid "of"
msgstr ""
-#: templates/js/translated/tables.js:348
+#: templates/js/translated/tables.js:363
msgid "rows"
msgstr ""
-#: templates/js/translated/tables.js:354
+#: templates/js/translated/tables.js:369
msgid "No matching results"
msgstr ""
-#: templates/js/translated/tables.js:357
+#: templates/js/translated/tables.js:372
msgid "Hide/Show pagination"
msgstr ""
-#: templates/js/translated/tables.js:360
+#: templates/js/translated/tables.js:375
msgid "Refresh"
msgstr ""
-#: templates/js/translated/tables.js:363
+#: templates/js/translated/tables.js:378
msgid "Toggle"
msgstr ""
-#: templates/js/translated/tables.js:366
+#: templates/js/translated/tables.js:381
msgid "Columns"
msgstr ""
-#: templates/js/translated/tables.js:369
+#: templates/js/translated/tables.js:384
msgid "All"
msgstr ""
-#: templates/navbar.html:13
+#: templates/navbar.html:19
msgid "Toggle navigation"
msgstr ""
-#: templates/navbar.html:33
+#: templates/navbar.html:39
msgid "Buy"
-msgstr ""
+msgstr "Inkoop"
-#: templates/navbar.html:43
+#: templates/navbar.html:51
msgid "Sell"
-msgstr ""
+msgstr "Verkoop"
-#: templates/navbar.html:55
-msgid "Scan Barcode"
-msgstr ""
-
-#: templates/navbar.html:77 users/models.py:39
+#: templates/navbar.html:87 users/models.py:39
msgid "Admin"
msgstr ""
-#: templates/navbar.html:79
+#: templates/navbar.html:89
msgid "Logout"
msgstr ""
-#: templates/navbar.html:81 templates/registration/login.html:89
+#: templates/navbar.html:91 templates/registration/login.html:89
msgid "Login"
msgstr ""
-#: templates/navbar.html:104
+#: templates/navbar.html:114
msgid "About InvenTree"
msgstr ""
diff --git a/InvenTree/locale/no/LC_MESSAGES/django.po b/InvenTree/locale/no/LC_MESSAGES/django.po
index 3c021ab051..391caec1d4 100644
--- a/InvenTree/locale/no/LC_MESSAGES/django.po
+++ b/InvenTree/locale/no/LC_MESSAGES/django.po
@@ -2,8 +2,8 @@ msgid ""
msgstr ""
"Project-Id-Version: inventree\n"
"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2021-08-07 15:14+0000\n"
-"PO-Revision-Date: 2021-08-07 15:30\n"
+"POT-Creation-Date: 2021-09-12 13:15+0000\n"
+"PO-Revision-Date: 2021-09-12 13:44\n"
"Last-Translator: \n"
"Language-Team: Norwegian\n"
"Language: no_NO\n"
@@ -36,7 +36,7 @@ msgstr "Oppgi dato"
#: InvenTree/forms.py:111 build/forms.py:102 build/forms.py:123
#: build/forms.py:145 build/forms.py:169 build/forms.py:185 build/forms.py:227
#: order/forms.py:30 order/forms.py:41 order/forms.py:52 order/forms.py:63
-#: order/forms.py:74 part/forms.py:108 templates/js/translated/forms.js:545
+#: order/forms.py:74 part/forms.py:108 templates/js/translated/forms.js:564
msgid "Confirm"
msgstr "Bekreft"
@@ -73,7 +73,7 @@ msgstr "Velg kategori"
msgid "Duplicate serial: {n}"
msgstr "Dupliser serie: {n}"
-#: InvenTree/helpers.py:408 order/models.py:315 order/models.py:425
+#: InvenTree/helpers.py:408 order/models.py:315 order/models.py:430
#: stock/views.py:1363
msgid "Invalid quantity provided"
msgstr "Ugyldig mengde oppgitt"
@@ -102,152 +102,181 @@ 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:61 stock/models.py:1815
+#: InvenTree/models.py:66 stock/models.py:1826
msgid "Attachment"
msgstr "Vedlegg"
-#: InvenTree/models.py:62
+#: InvenTree/models.py:67
msgid "Select file to attach"
msgstr "Velg fil å legge ved"
-#: InvenTree/models.py:64 templates/js/translated/attachment.js:52
+#: InvenTree/models.py:69 templates/js/translated/attachment.js:87
msgid "Comment"
msgstr "Kommenter"
-#: InvenTree/models.py:64
+#: InvenTree/models.py:69
msgid "File comment"
msgstr "Kommentar til fil"
-#: InvenTree/models.py:70 InvenTree/models.py:71 common/models.py:969
-#: common/models.py:970 part/models.py:2035
+#: InvenTree/models.py:75 InvenTree/models.py:76 common/models.py:993
+#: common/models.py:994 part/models.py:2051
#: report/templates/report/inventree_test_report_base.html:91
-#: templates/js/translated/stock.js:1549
+#: templates/js/translated/stock.js:1690
msgid "User"
msgstr "Bruker"
-#: InvenTree/models.py:74
+#: InvenTree/models.py:79
msgid "upload date"
msgstr "opplastet dato"
-#: InvenTree/models.py:113
+#: InvenTree/models.py:99
+msgid "Filename must not be empty"
+msgstr ""
+
+#: InvenTree/models.py:122
+msgid "Invalid attachment directory"
+msgstr ""
+
+#: InvenTree/models.py:132
+#, python-brace-format
+msgid "Filename contains illegal character '{c}'"
+msgstr ""
+
+#: InvenTree/models.py:135
+msgid "Filename missing extension"
+msgstr ""
+
+#: InvenTree/models.py:142
+msgid "Attachment with this filename already exists"
+msgstr ""
+
+#: InvenTree/models.py:149
+msgid "Error renaming file"
+msgstr ""
+
+#: InvenTree/models.py:184
msgid "Invalid choice"
msgstr "Ugyldig valg"
-#: InvenTree/models.py:129 InvenTree/models.py:130 company/models.py:412
-#: label/models.py:112 part/models.py:656 part/models.py:2196
-#: part/templates/part/part_base.html:233 report/models.py:181
+#: InvenTree/models.py:200 InvenTree/models.py:201 company/models.py:414
+#: label/models.py:112 part/models.py:658 part/models.py:2212
+#: part/templates/part/part_base.html:241 report/models.py:181
#: templates/InvenTree/search.html:137 templates/InvenTree/search.html:289
-#: templates/js/translated/company.js:583 templates/js/translated/part.js:338
-#: templates/js/translated/part.js:471 templates/js/translated/part.js:963
-#: templates/js/translated/stock.js:1342
+#: templates/js/translated/company.js:636 templates/js/translated/part.js:466
+#: templates/js/translated/part.js:603 templates/js/translated/part.js:1130
+#: templates/js/translated/stock.js:1483
msgid "Name"
msgstr "Navn"
-#: InvenTree/models.py:136 build/models.py:187
-#: build/templates/build/detail.html:24 company/models.py:351
-#: company/models.py:519 company/templates/company/manufacturer_part.html:76
+#: InvenTree/models.py:207 build/models.py:187
+#: build/templates/build/detail.html:24 company/models.py:353
+#: company/models.py:569 company/templates/company/manufacturer_part.html:76
#: company/templates/company/supplier_part.html:75 label/models.py:119
-#: order/models.py:158 order/templates/order/purchase_order_detail.html:312
-#: part/models.py:679 part/templates/part/part_base.html:238
+#: order/models.py:158 part/models.py:681
+#: part/templates/part/part_base.html:246
#: part/templates/part/set_category.html:14 report/models.py:194
#: report/models.py:551 report/models.py:590
#: report/templates/report/inventree_build_order_base.html:118
#: templates/InvenTree/search.html:144 templates/InvenTree/search.html:224
#: templates/InvenTree/search.html:296
#: templates/InvenTree/settings/header.html:9
-#: templates/js/translated/bom.js:210 templates/js/translated/build.js:868
-#: templates/js/translated/build.js:1162 templates/js/translated/company.js:299
-#: templates/js/translated/company.js:497
-#: templates/js/translated/company.js:779 templates/js/translated/order.js:267
-#: templates/js/translated/order.js:369 templates/js/translated/part.js:397
-#: templates/js/translated/part.js:581 templates/js/translated/part.js:758
-#: templates/js/translated/part.js:975 templates/js/translated/part.js:1043
-#: templates/js/translated/stock.js:926 templates/js/translated/stock.js:1354
-#: templates/js/translated/stock.js:1399
+#: templates/js/translated/bom.js:230 templates/js/translated/build.js:891
+#: templates/js/translated/build.js:1179 templates/js/translated/company.js:344
+#: templates/js/translated/company.js:546
+#: templates/js/translated/company.js:834 templates/js/translated/order.js:341
+#: templates/js/translated/order.js:486 templates/js/translated/order.js:710
+#: templates/js/translated/part.js:525 templates/js/translated/part.js:713
+#: templates/js/translated/part.js:902 templates/js/translated/part.js:1142
+#: templates/js/translated/part.js:1210 templates/js/translated/stock.js:840
+#: templates/js/translated/stock.js:1495 templates/js/translated/stock.js:1540
msgid "Description"
msgstr "Beskrivelse"
-#: InvenTree/models.py:137
+#: InvenTree/models.py:208
msgid "Description (optional)"
msgstr "Beskrivelse (valgfritt)"
-#: InvenTree/models.py:145
+#: InvenTree/models.py:216
msgid "parent"
msgstr ""
-#: InvenTree/serializers.py:52 part/models.py:2438
+#: InvenTree/serializers.py:55 part/models.py:2454
msgid "Must be a valid number"
msgstr "Nummer må være gyldig"
-#: InvenTree/settings.py:518
+#: InvenTree/serializers.py:244
+msgid "Filename"
+msgstr ""
+
+#: InvenTree/settings.py:523
msgid "German"
msgstr "Tysk"
-#: InvenTree/settings.py:519
+#: InvenTree/settings.py:524
msgid "Greek"
msgstr "Gresk"
-#: InvenTree/settings.py:520
+#: InvenTree/settings.py:525
msgid "English"
msgstr "Engelsk"
-#: InvenTree/settings.py:521
+#: InvenTree/settings.py:526
msgid "Spanish"
msgstr "Spansk"
-#: InvenTree/settings.py:522
+#: InvenTree/settings.py:527
msgid "French"
msgstr "Fransk"
-#: InvenTree/settings.py:523
+#: InvenTree/settings.py:528
msgid "Hebrew"
msgstr "Hebraisk"
-#: InvenTree/settings.py:524
+#: InvenTree/settings.py:529
msgid "Italian"
msgstr "Italiensk"
-#: InvenTree/settings.py:525
+#: InvenTree/settings.py:530
msgid "Japanese"
msgstr "Japansk"
-#: InvenTree/settings.py:526
+#: InvenTree/settings.py:531
msgid "Korean"
msgstr "Koreansk"
-#: InvenTree/settings.py:527
+#: InvenTree/settings.py:532
msgid "Dutch"
msgstr "Nederlandsk"
-#: InvenTree/settings.py:528
+#: InvenTree/settings.py:533
msgid "Norwegian"
msgstr "Norsk"
-#: InvenTree/settings.py:529
+#: InvenTree/settings.py:534
msgid "Polish"
msgstr "Polsk"
-#: InvenTree/settings.py:530
+#: InvenTree/settings.py:535
msgid "Russian"
msgstr "Russisk"
-#: InvenTree/settings.py:531
+#: InvenTree/settings.py:536
msgid "Swedish"
msgstr "Svensk"
-#: InvenTree/settings.py:532
+#: InvenTree/settings.py:537
msgid "Thai"
msgstr "Thailandsk"
-#: InvenTree/settings.py:533
+#: InvenTree/settings.py:538
msgid "Turkish"
msgstr "Tyrkisk"
-#: InvenTree/settings.py:534
+#: InvenTree/settings.py:539
msgid "Vietnamese"
msgstr "Vietnamesisk"
-#: InvenTree/settings.py:535
+#: InvenTree/settings.py:540
msgid "Chinese"
msgstr "Kinesisk"
@@ -372,7 +401,7 @@ msgstr ""
msgid "Split child item"
msgstr ""
-#: InvenTree/status_codes.py:294 templates/js/translated/table_filters.js:173
+#: InvenTree/status_codes.py:294 templates/js/translated/table_filters.js:186
msgid "Sent to customer"
msgstr ""
@@ -432,27 +461,27 @@ msgstr ""
msgid "Overage must be an integer value or a percentage"
msgstr ""
-#: InvenTree/views.py:612
+#: InvenTree/views.py:610
msgid "Delete Item"
msgstr ""
-#: InvenTree/views.py:661
+#: InvenTree/views.py:659
msgid "Check box to confirm item deletion"
msgstr ""
-#: InvenTree/views.py:676 templates/InvenTree/settings/user.html:14
+#: InvenTree/views.py:674 templates/InvenTree/settings/user.html:14
msgid "Edit User Information"
msgstr ""
-#: InvenTree/views.py:687 templates/InvenTree/settings/user.html:18
+#: InvenTree/views.py:685 templates/InvenTree/settings/user.html:18
msgid "Set Password"
msgstr ""
-#: InvenTree/views.py:706
+#: InvenTree/views.py:704
msgid "Password fields must match"
msgstr ""
-#: InvenTree/views.py:907 templates/navbar.html:95
+#: InvenTree/views.py:910 templates/navbar.html:105
msgid "System Information"
msgstr ""
@@ -509,8 +538,8 @@ msgstr ""
#: order/templates/order/order_base.html:124
#: order/templates/order/sales_order_base.html:119
#: report/templates/report/inventree_build_order_base.html:126
-#: templates/js/translated/build.js:945 templates/js/translated/order.js:284
-#: templates/js/translated/order.js:387
+#: templates/js/translated/build.js:962 templates/js/translated/order.js:358
+#: templates/js/translated/order.js:728
msgid "Target Date"
msgstr ""
@@ -522,19 +551,18 @@ msgstr ""
#: build/templates/build/allocation_card.html:23
#: build/templates/build/auto_allocate.html:17
#: build/templates/build/build_base.html:133
-#: build/templates/build/detail.html:34 common/models.py:1001
+#: build/templates/build/detail.html:34 common/models.py:1025
#: company/forms.py:42 company/templates/company/supplier_part.html:226
-#: order/forms.py:120 order/forms.py:142 order/forms.py:159 order/models.py:706
-#: order/models.py:952 order/templates/order/order_wizard/match_parts.html:30
+#: order/forms.py:120 order/forms.py:142 order/forms.py:159 order/models.py:712
+#: order/models.py:964 order/templates/order/order_wizard/match_parts.html:30
#: order/templates/order/order_wizard/select_parts.html:34
-#: order/templates/order/purchase_order_detail.html:348
-#: order/templates/order/sales_order_detail.html:200
-#: order/templates/order/sales_order_detail.html:207
-#: order/templates/order/sales_order_detail.html:292
-#: order/templates/order/sales_order_detail.html:364 part/forms.py:249
-#: part/forms.py:265 part/forms.py:281 part/models.py:2340
+#: order/templates/order/sales_order_detail.html:201
+#: order/templates/order/sales_order_detail.html:208
+#: order/templates/order/sales_order_detail.html:293
+#: order/templates/order/sales_order_detail.html:365 part/forms.py:249
+#: part/forms.py:265 part/forms.py:281 part/models.py:2356
#: part/templates/part/bom_upload/match_parts.html:31
-#: part/templates/part/detail.html:940 part/templates/part/detail.html:1026
+#: part/templates/part/detail.html:973 part/templates/part/detail.html:1059
#: part/templates/part/part_pricing.html:16
#: report/templates/report/inventree_build_order_base.html:114
#: report/templates/report/inventree_po_report.html:91
@@ -542,13 +570,14 @@ msgstr ""
#: report/templates/report/inventree_test_report_base.html:77
#: stock/forms.py:140 stock/templates/stock/item_base.html:269
#: stock/templates/stock/stock_adjust.html:18
-#: templates/js/translated/barcode.js:364 templates/js/translated/bom.js:225
-#: templates/js/translated/build.js:271 templates/js/translated/build.js:606
-#: templates/js/translated/build.js:1172
-#: templates/js/translated/model_renderers.js:56
-#: templates/js/translated/order.js:482 templates/js/translated/part.js:1148
-#: templates/js/translated/part.js:1270 templates/js/translated/part.js:1326
-#: templates/js/translated/stock.js:1534 templates/js/translated/stock.js:1732
+#: templates/js/translated/barcode.js:386 templates/js/translated/bom.js:245
+#: templates/js/translated/build.js:298 templates/js/translated/build.js:629
+#: templates/js/translated/build.js:1189
+#: templates/js/translated/model_renderers.js:59
+#: templates/js/translated/order.js:522 templates/js/translated/order.js:824
+#: templates/js/translated/part.js:1317 templates/js/translated/part.js:1440
+#: templates/js/translated/part.js:1518 templates/js/translated/stock.js:1675
+#: templates/js/translated/stock.js:1850
msgid "Quantity"
msgstr ""
@@ -589,13 +618,15 @@ msgid "Mark build as complete"
msgstr ""
#: build/forms.py:210 build/templates/build/auto_allocate.html:18
-#: stock/forms.py:280 stock/templates/stock/item_base.html:299
+#: order/serializers.py:216 order/serializers.py:275 stock/forms.py:280
+#: stock/templates/stock/item_base.html:299
#: stock/templates/stock/stock_adjust.html:17
-#: templates/InvenTree/search.html:260 templates/js/translated/barcode.js:363
-#: templates/js/translated/barcode.js:531 templates/js/translated/build.js:256
-#: templates/js/translated/build.js:620 templates/js/translated/order.js:467
-#: templates/js/translated/stock.js:134 templates/js/translated/stock.js:260
-#: templates/js/translated/stock.js:1012 templates/js/translated/stock.js:1426
+#: templates/InvenTree/search.html:260 templates/js/translated/barcode.js:385
+#: templates/js/translated/barcode.js:555 templates/js/translated/build.js:283
+#: templates/js/translated/build.js:643 templates/js/translated/order.js:809
+#: templates/js/translated/part.js:174 templates/js/translated/stock.js:203
+#: templates/js/translated/stock.js:329 templates/js/translated/stock.js:942
+#: templates/js/translated/stock.js:1567
msgid "Location"
msgstr ""
@@ -604,13 +635,13 @@ msgid "Location of completed parts"
msgstr ""
#: build/forms.py:215 build/templates/build/build_base.html:138
-#: build/templates/build/detail.html:62 order/models.py:549
-#: order/templates/order/receive_parts.html:24
+#: build/templates/build/detail.html:62 order/models.py:555
+#: order/serializers.py:230 order/templates/order/receive_parts.html:24
#: stock/templates/stock/item_base.html:422 templates/InvenTree/search.html:252
-#: templates/js/translated/barcode.js:119 templates/js/translated/build.js:902
-#: templates/js/translated/order.js:271 templates/js/translated/order.js:374
-#: templates/js/translated/stock.js:999 templates/js/translated/stock.js:1503
-#: templates/js/translated/stock.js:1748
+#: templates/js/translated/barcode.js:141 templates/js/translated/build.js:925
+#: templates/js/translated/order.js:345 templates/js/translated/order.js:715
+#: templates/js/translated/stock.js:917 templates/js/translated/stock.js:1644
+#: templates/js/translated/stock.js:1866
msgid "Status"
msgstr ""
@@ -649,7 +680,7 @@ msgstr ""
#: build/models.py:117 build/templates/build/build_base.html:9
#: build/templates/build/build_base.html:73
#: report/templates/report/inventree_build_order_base.html:106
-#: templates/js/translated/build.js:233
+#: templates/js/translated/build.js:260
msgid "Build Order"
msgstr ""
@@ -657,8 +688,8 @@ msgstr ""
#: build/templates/build/index.html:15
#: order/templates/order/sales_order_detail.html:34
#: order/templates/order/so_navbar.html:19
-#: order/templates/order/so_navbar.html:22 part/templates/part/navbar.html:42
-#: part/templates/part/navbar.html:45 templates/InvenTree/index.html:229
+#: order/templates/order/so_navbar.html:22 part/templates/part/navbar.html:50
+#: part/templates/part/navbar.html:53 templates/InvenTree/index.html:229
#: templates/InvenTree/search.html:185
#: templates/InvenTree/settings/navbar.html:101
#: templates/InvenTree/settings/navbar.html:103 users/models.py:44
@@ -669,14 +700,13 @@ msgstr ""
msgid "Build Order Reference"
msgstr ""
-#: build/models.py:179 order/models.py:246 order/models.py:533
-#: order/models.py:713 order/templates/order/purchase_order_detail.html:343
-#: order/templates/order/sales_order_detail.html:359 part/models.py:2349
-#: part/templates/part/bom_upload/match_parts.html:30
+#: build/models.py:179 order/models.py:246 order/models.py:539
+#: order/models.py:719 order/templates/order/sales_order_detail.html:360
+#: part/models.py:2365 part/templates/part/bom_upload/match_parts.html:30
#: report/templates/report/inventree_po_report.html:92
#: report/templates/report/inventree_so_report.html:92
-#: templates/js/translated/bom.js:217 templates/js/translated/build.js:695
-#: templates/js/translated/build.js:1166
+#: templates/js/translated/bom.js:237 templates/js/translated/build.js:718
+#: templates/js/translated/build.js:1183 templates/js/translated/order.js:517
msgid "Reference"
msgstr ""
@@ -695,15 +725,14 @@ msgstr ""
#: build/models.py:205 build/templates/build/auto_allocate.html:16
#: build/templates/build/build_base.html:128
-#: build/templates/build/detail.html:29 company/models.py:654
-#: order/models.py:766 order/models.py:825
+#: build/templates/build/detail.html:29 company/models.py:704
+#: order/models.py:772 order/models.py:837
#: order/templates/order/order_wizard/select_parts.html:32
-#: order/templates/order/purchase_order_detail.html:297
#: order/templates/order/receive_parts.html:19
-#: order/templates/order/sales_order_detail.html:344 part/models.py:295
-#: part/models.py:1980 part/models.py:1996 part/models.py:2015
-#: part/models.py:2033 part/models.py:2112 part/models.py:2234
-#: part/models.py:2324 part/templates/part/detail.html:199
+#: order/templates/order/sales_order_detail.html:345 part/models.py:297
+#: part/models.py:1996 part/models.py:2012 part/models.py:2031
+#: part/models.py:2049 part/models.py:2128 part/models.py:2250
+#: part/models.py:2340 part/templates/part/detail.html:199
#: part/templates/part/part_app_base.html:8
#: part/templates/part/part_pricing.html:12
#: part/templates/part/set_category.html:13
@@ -711,12 +740,13 @@ msgstr ""
#: report/templates/report/inventree_po_report.html:90
#: report/templates/report/inventree_so_report.html:90
#: templates/InvenTree/search.html:112 templates/InvenTree/search.html:210
-#: templates/js/translated/barcode.js:362 templates/js/translated/bom.js:183
-#: templates/js/translated/build.js:586 templates/js/translated/build.js:873
-#: templates/js/translated/build.js:1139 templates/js/translated/company.js:438
-#: templates/js/translated/company.js:688 templates/js/translated/part.js:562
-#: templates/js/translated/part.js:725 templates/js/translated/stock.js:132
-#: templates/js/translated/stock.js:895 templates/js/translated/stock.js:1720
+#: templates/js/translated/barcode.js:384 templates/js/translated/bom.js:203
+#: templates/js/translated/build.js:609 templates/js/translated/build.js:896
+#: templates/js/translated/build.js:1156 templates/js/translated/company.js:487
+#: templates/js/translated/company.js:743 templates/js/translated/order.js:471
+#: templates/js/translated/part.js:694 templates/js/translated/part.js:864
+#: templates/js/translated/stock.js:201 templates/js/translated/stock.js:797
+#: templates/js/translated/stock.js:1838
msgid "Part"
msgstr ""
@@ -764,7 +794,7 @@ msgstr ""
msgid "Number of stock items which have been completed"
msgstr ""
-#: build/models.py:257 part/templates/part/part_base.html:191
+#: build/models.py:257 part/templates/part/part_base.html:198
msgid "Build Status"
msgstr ""
@@ -772,7 +802,7 @@ msgstr ""
msgid "Build status code"
msgstr ""
-#: build/models.py:265 stock/models.py:507
+#: build/models.py:265 stock/models.py:513
msgid "Batch Code"
msgstr ""
@@ -780,16 +810,16 @@ msgstr ""
msgid "Batch code for this build output"
msgstr ""
-#: build/models.py:272 order/models.py:162 part/models.py:851
-#: part/templates/part/part_base.html:264 templates/js/translated/order.js:382
+#: build/models.py:272 order/models.py:162 part/models.py:853
+#: part/templates/part/part_base.html:272 templates/js/translated/order.js:723
msgid "Creation Date"
msgstr ""
-#: build/models.py:276 order/models.py:555
+#: build/models.py:276 order/models.py:561
msgid "Target completion date"
msgstr ""
-#: build/models.py:280 order/models.py:288 templates/js/translated/build.js:950
+#: build/models.py:280 order/models.py:288 templates/js/translated/build.js:967
msgid "Completion Date"
msgstr ""
@@ -797,7 +827,7 @@ msgstr ""
msgid "completed by"
msgstr ""
-#: build/models.py:294 templates/js/translated/build.js:915
+#: build/models.py:294 templates/js/translated/build.js:938
msgid "Issued by"
msgstr ""
@@ -808,9 +838,9 @@ msgstr ""
#: build/models.py:303 build/templates/build/build_base.html:184
#: build/templates/build/detail.html:108 order/models.py:176
#: order/templates/order/order_base.html:138
-#: order/templates/order/sales_order_base.html:140 part/models.py:855
+#: order/templates/order/sales_order_base.html:140 part/models.py:857
#: report/templates/report/inventree_build_order_base.html:159
-#: templates/js/translated/build.js:930
+#: templates/js/translated/build.js:950
msgid "Responsible"
msgstr ""
@@ -821,34 +851,33 @@ msgstr ""
#: build/models.py:309 build/templates/build/detail.html:94
#: company/templates/company/manufacturer_part.html:83
#: company/templates/company/supplier_part.html:82
-#: part/templates/part/part_base.html:258 stock/models.py:501
+#: part/templates/part/part_base.html:266 stock/models.py:507
#: stock/templates/stock/item_base.html:359
msgid "External Link"
msgstr ""
-#: build/models.py:310 part/models.py:713 stock/models.py:503
+#: build/models.py:310 part/models.py:715 stock/models.py:509
msgid "Link to external URL"
msgstr ""
#: build/models.py:314 build/templates/build/navbar.html:52
-#: company/models.py:139 company/models.py:526
-#: company/templates/company/navbar.html:63
-#: company/templates/company/navbar.html:66 order/models.py:180
-#: order/models.py:715 order/templates/order/po_navbar.html:38
+#: company/models.py:141 company/models.py:576
+#: company/templates/company/navbar.html:69
+#: company/templates/company/navbar.html:72 order/models.py:180
+#: order/models.py:721 order/templates/order/po_navbar.html:38
#: order/templates/order/po_navbar.html:41
-#: order/templates/order/purchase_order_detail.html:419
-#: order/templates/order/sales_order_detail.html:439
+#: order/templates/order/sales_order_detail.html:440
#: order/templates/order/so_navbar.html:33
-#: order/templates/order/so_navbar.html:36 part/models.py:840
-#: part/templates/part/detail.html:105 part/templates/part/navbar.html:108
-#: part/templates/part/navbar.html:111
+#: order/templates/order/so_navbar.html:36 part/models.py:842
+#: part/templates/part/detail.html:105 part/templates/part/navbar.html:120
+#: part/templates/part/navbar.html:123
#: report/templates/report/inventree_build_order_base.html:173
-#: stock/forms.py:138 stock/forms.py:250 stock/forms.py:282 stock/models.py:573
-#: stock/models.py:1715 stock/models.py:1821
-#: stock/templates/stock/navbar.html:57 templates/js/translated/barcode.js:37
-#: templates/js/translated/bom.js:369 templates/js/translated/company.js:784
-#: templates/js/translated/stock.js:268 templates/js/translated/stock.js:509
-#: templates/js/translated/stock.js:1090
+#: stock/forms.py:138 stock/forms.py:250 stock/forms.py:282 stock/models.py:579
+#: stock/models.py:1726 stock/models.py:1832
+#: stock/templates/stock/navbar.html:57 templates/js/translated/barcode.js:59
+#: templates/js/translated/bom.js:385 templates/js/translated/company.js:839
+#: templates/js/translated/order.js:604 templates/js/translated/stock.js:338
+#: templates/js/translated/stock.js:580 templates/js/translated/stock.js:1061
msgid "Notes"
msgstr ""
@@ -881,11 +910,11 @@ msgstr ""
msgid "Allocated quantity ({n}) must not exceed available quantity ({q})"
msgstr ""
-#: build/models.py:1244 order/models.py:926
+#: build/models.py:1244 order/models.py:938
msgid "StockItem is over-allocated"
msgstr ""
-#: build/models.py:1248 order/models.py:929
+#: build/models.py:1248 order/models.py:941
msgid "Allocation quantity must be greater than zero"
msgstr ""
@@ -899,8 +928,8 @@ msgid "Selected stock item not found in BOM for part '{p}'"
msgstr ""
#: build/models.py:1372 stock/templates/stock/item_base.html:331
-#: templates/InvenTree/search.html:183 templates/js/translated/build.js:846
-#: templates/navbar.html:29
+#: templates/InvenTree/search.html:183 templates/js/translated/build.js:869
+#: templates/navbar.html:35
msgid "Build"
msgstr ""
@@ -912,9 +941,9 @@ msgstr ""
#: stock/templates/stock/item_base.html:31
#: stock/templates/stock/item_base.html:353
#: stock/templates/stock/stock_adjust.html:16
-#: templates/js/translated/build.js:244 templates/js/translated/build.js:249
-#: templates/js/translated/build.js:993 templates/js/translated/order.js:455
-#: templates/js/translated/order.js:460 templates/js/translated/stock.js:1485
+#: templates/js/translated/build.js:271 templates/js/translated/build.js:276
+#: templates/js/translated/build.js:1012 templates/js/translated/order.js:797
+#: templates/js/translated/order.js:802 templates/js/translated/stock.js:1626
msgid "Stock Item"
msgstr ""
@@ -936,12 +965,12 @@ msgstr ""
#: build/templates/build/allocation_card.html:21
#: build/templates/build/complete_output.html:46
-#: order/templates/order/sales_order_detail.html:205
-#: order/templates/order/sales_order_detail.html:290
+#: order/templates/order/sales_order_detail.html:206
+#: order/templates/order/sales_order_detail.html:291
#: report/templates/report/inventree_test_report_base.html:75
-#: stock/models.py:495 stock/templates/stock/item_base.html:251
-#: templates/js/translated/build.js:604
-#: templates/js/translated/model_renderers.js:54
+#: stock/models.py:501 stock/templates/stock/item_base.html:251
+#: templates/js/translated/build.js:627
+#: templates/js/translated/model_renderers.js:57
msgid "Serial Number"
msgstr ""
@@ -993,7 +1022,7 @@ msgstr ""
#: company/templates/company/supplier_part.html:30
#: order/templates/order/order_base.html:26
#: order/templates/order/sales_order_base.html:37
-#: part/templates/part/category.html:27 part/templates/part/part_base.html:25
+#: part/templates/part/category.html:27 part/templates/part/part_base.html:30
#: stock/templates/stock/item_base.html:62
#: stock/templates/stock/location.html:31
msgid "Admin view"
@@ -1005,9 +1034,9 @@ msgstr ""
#: order/templates/order/order_base.html:86
#: order/templates/order/sales_order_base.html:43
#: order/templates/order/sales_order_base.html:88
-#: templates/js/translated/table_filters.js:259
-#: templates/js/translated/table_filters.js:278
-#: templates/js/translated/table_filters.js:295
+#: templates/js/translated/table_filters.js:272
+#: templates/js/translated/table_filters.js:291
+#: templates/js/translated/table_filters.js:308
msgid "Overdue"
msgstr ""
@@ -1057,14 +1086,14 @@ msgid "Progress"
msgstr ""
#: build/templates/build/build_base.html:170
-#: build/templates/build/detail.html:87 order/models.py:823
+#: build/templates/build/detail.html:87 order/models.py:835
#: order/templates/order/sales_order_base.html:9
#: order/templates/order/sales_order_base.html:35
#: order/templates/order/sales_order_ship.html:25
#: report/templates/report/inventree_build_order_base.html:136
#: report/templates/report/inventree_so_report.html:77
#: stock/templates/stock/item_base.html:293
-#: templates/js/translated/order.js:329
+#: templates/js/translated/order.js:670
msgid "Sales Order"
msgstr ""
@@ -1148,7 +1177,7 @@ msgstr ""
#: build/templates/build/create_build_item.html:11
#, python-format
-msgid "The allocated stock will be installed into the following build output:
%(output)s"
+msgid "The allocated stock will be installed into the following build output:
%(output)s"
msgstr ""
#: build/templates/build/create_build_item.html:17
@@ -1172,9 +1201,9 @@ msgstr ""
msgid "Stock can be taken from any available location."
msgstr ""
-#: build/templates/build/detail.html:49 order/forms.py:88 order/models.py:782
-#: order/templates/order/purchase_order_detail.html:408
+#: build/templates/build/detail.html:49 order/forms.py:88 order/models.py:794
#: order/templates/order/receive_parts.html:25 stock/forms.py:134
+#: templates/js/translated/order.js:593
msgid "Destination"
msgstr ""
@@ -1184,16 +1213,16 @@ msgstr ""
#: build/templates/build/detail.html:73
#: stock/templates/stock/item_base.html:317
-#: templates/js/translated/stock.js:1007 templates/js/translated/stock.js:1755
-#: templates/js/translated/table_filters.js:116
-#: templates/js/translated/table_filters.js:198
+#: templates/js/translated/stock.js:931 templates/js/translated/stock.js:1873
+#: templates/js/translated/table_filters.js:129
+#: templates/js/translated/table_filters.js:211
msgid "Batch"
msgstr ""
#: build/templates/build/detail.html:119
#: order/templates/order/order_base.html:111
#: order/templates/order/sales_order_base.html:113
-#: templates/js/translated/build.js:910
+#: templates/js/translated/build.js:933
msgid "Created"
msgstr ""
@@ -1201,7 +1230,7 @@ msgstr ""
msgid "No target date set"
msgstr ""
-#: build/templates/build/detail.html:135 templates/js/translated/build.js:888
+#: build/templates/build/detail.html:135 templates/js/translated/build.js:911
msgid "Completed"
msgstr ""
@@ -1225,7 +1254,7 @@ msgstr ""
msgid "Auto Allocate"
msgstr ""
-#: build/templates/build/detail.html:175 templates/js/translated/build.js:778
+#: build/templates/build/detail.html:175 templates/js/translated/build.js:801
msgid "Unallocate stock"
msgstr ""
@@ -1238,8 +1267,8 @@ msgid "Order required parts"
msgstr ""
#: build/templates/build/detail.html:180
-#: company/templates/company/detail.html:33
-#: company/templates/company/detail.html:75 order/views.py:679
+#: company/templates/company/detail.html:32
+#: company/templates/company/detail.html:72 order/views.py:679
#: part/templates/part/category.html:140
msgid "Order Parts"
msgstr ""
@@ -1288,8 +1317,8 @@ msgstr ""
#: build/templates/build/navbar.html:45 order/templates/order/po_navbar.html:35
#: order/templates/order/sales_order_detail.html:43
#: order/templates/order/so_navbar.html:29 part/templates/part/detail.html:173
-#: part/templates/part/navbar.html:102 part/templates/part/navbar.html:105
-#: stock/templates/stock/item.html:87 stock/templates/stock/navbar.html:47
+#: part/templates/part/navbar.html:114 part/templates/part/navbar.html:117
+#: stock/templates/stock/item.html:88 stock/templates/stock/navbar.html:47
#: stock/templates/stock/navbar.html:50
msgid "Attachments"
msgstr ""
@@ -1298,48 +1327,48 @@ msgstr ""
msgid "Build Notes"
msgstr ""
-#: build/templates/build/detail.html:261 build/templates/build/detail.html:397
-#: company/templates/company/detail.html:173
-#: company/templates/company/detail.html:200
+#: build/templates/build/detail.html:261 build/templates/build/detail.html:398
+#: company/templates/company/detail.html:169
+#: company/templates/company/detail.html:196
#: order/templates/order/purchase_order_detail.html:62
#: order/templates/order/purchase_order_detail.html:95
#: order/templates/order/sales_order_detail.html:58
#: order/templates/order/sales_order_detail.html:85
-#: part/templates/part/detail.html:109 stock/templates/stock/item.html:102
-#: stock/templates/stock/item.html:187
+#: part/templates/part/detail.html:109 stock/templates/stock/item.html:103
+#: stock/templates/stock/item.html:188
msgid "Edit Notes"
msgstr ""
#: build/templates/build/detail.html:357
#: order/templates/order/po_attachments.html:79
-#: order/templates/order/purchase_order_detail.html:156
-#: order/templates/order/sales_order_detail.html:145
-#: part/templates/part/detail.html:802 stock/templates/stock/item.html:251
+#: order/templates/order/purchase_order_detail.html:157
+#: order/templates/order/sales_order_detail.html:146
+#: part/templates/part/detail.html:920 stock/templates/stock/item.html:253
#: templates/attachment_table.html:6
msgid "Add Attachment"
msgstr ""
-#: build/templates/build/detail.html:375
+#: build/templates/build/detail.html:376
#: order/templates/order/po_attachments.html:51
-#: order/templates/order/purchase_order_detail.html:128
-#: order/templates/order/sales_order_detail.html:118
-#: part/templates/part/detail.html:756 stock/templates/stock/item.html:219
+#: order/templates/order/purchase_order_detail.html:129
+#: order/templates/order/sales_order_detail.html:119
+#: part/templates/part/detail.html:874 stock/templates/stock/item.html:221
msgid "Edit Attachment"
msgstr ""
-#: build/templates/build/detail.html:382
+#: build/templates/build/detail.html:383
#: order/templates/order/po_attachments.html:58
-#: order/templates/order/purchase_order_detail.html:135
-#: order/templates/order/sales_order_detail.html:124
-#: part/templates/part/detail.html:765 stock/templates/stock/item.html:228
+#: order/templates/order/purchase_order_detail.html:136
+#: order/templates/order/sales_order_detail.html:125
+#: part/templates/part/detail.html:883 stock/templates/stock/item.html:230
msgid "Confirm Delete Operation"
msgstr ""
-#: build/templates/build/detail.html:383
+#: build/templates/build/detail.html:384
#: order/templates/order/po_attachments.html:59
-#: order/templates/order/purchase_order_detail.html:136
-#: order/templates/order/sales_order_detail.html:125
-#: part/templates/part/detail.html:766 stock/templates/stock/item.html:229
+#: order/templates/order/purchase_order_detail.html:137
+#: order/templates/order/sales_order_detail.html:126
+#: part/templates/part/detail.html:884 stock/templates/stock/item.html:231
msgid "Delete Attachment"
msgstr ""
@@ -1372,7 +1401,7 @@ msgid "Build Order Details"
msgstr ""
#: build/templates/build/navbar.html:15 order/templates/order/po_navbar.html:15
-#: templates/js/translated/stock.js:1414
+#: templates/js/translated/stock.js:1555
msgid "Details"
msgstr ""
@@ -1501,9 +1530,9 @@ msgstr ""
msgid "Stock item is over-allocated"
msgstr ""
-#: build/views.py:705 templates/js/translated/bom.js:250
-#: templates/js/translated/build.js:705 templates/js/translated/build.js:1000
-#: templates/js/translated/build.js:1179
+#: build/views.py:705 templates/js/translated/bom.js:269
+#: templates/js/translated/build.js:728 templates/js/translated/build.js:1019
+#: templates/js/translated/build.js:1196
msgid "Available"
msgstr ""
@@ -1539,7 +1568,7 @@ msgstr ""
msgid "Error reading file (data could be corrupted)"
msgstr ""
-#: common/forms.py:34 templates/js/translated/attachment.js:42
+#: common/forms.py:34 templates/js/translated/attachment.js:54
msgid "File"
msgstr ""
@@ -1556,546 +1585,594 @@ msgstr ""
msgid "Select {name} file to upload"
msgstr ""
-#: common/models.py:322 common/models.py:815 common/models.py:962
+#: common/models.py:308 common/models.py:839 common/models.py:986
msgid "Settings key (must be unique - case insensitive"
msgstr ""
-#: common/models.py:324
+#: common/models.py:310
msgid "Settings value"
msgstr ""
-#: common/models.py:359
+#: common/models.py:345
msgid "Must be an integer value"
msgstr ""
-#: common/models.py:382
+#: common/models.py:368
msgid "Value must be a boolean value"
msgstr ""
-#: common/models.py:393
+#: common/models.py:379
msgid "Value must be an integer value"
msgstr ""
-#: common/models.py:416
+#: common/models.py:402
msgid "Key string must be unique"
msgstr ""
-#: common/models.py:523
+#: common/models.py:509
msgid "InvenTree Instance Name"
msgstr ""
-#: common/models.py:525
+#: common/models.py:511
msgid "String descriptor for the server instance"
msgstr ""
-#: common/models.py:529
+#: common/models.py:515
msgid "Use instance name"
msgstr ""
-#: common/models.py:530
+#: common/models.py:516
msgid "Use the instance name in the title-bar"
msgstr ""
-#: common/models.py:536 company/models.py:97 company/models.py:98
+#: common/models.py:522 company/models.py:99 company/models.py:100
msgid "Company name"
msgstr ""
-#: common/models.py:537
+#: common/models.py:523
msgid "Internal company name"
msgstr ""
-#: common/models.py:542
+#: common/models.py:528
msgid "Base URL"
msgstr ""
-#: common/models.py:543
+#: common/models.py:529
msgid "Base URL for server instance"
msgstr ""
-#: common/models.py:549
+#: common/models.py:535
msgid "Default Currency"
msgstr ""
-#: common/models.py:550
+#: common/models.py:536
msgid "Default currency"
msgstr ""
-#: common/models.py:556
+#: common/models.py:542
msgid "Download from URL"
msgstr ""
-#: common/models.py:557
+#: common/models.py:543
msgid "Allow download of remote images and files from external URL"
msgstr ""
-#: common/models.py:563
+#: common/models.py:549
msgid "Barcode Support"
msgstr ""
-#: common/models.py:564
+#: common/models.py:550
msgid "Enable barcode scanner support"
msgstr ""
-#: common/models.py:570
+#: common/models.py:556
msgid "IPN Regex"
msgstr ""
-#: common/models.py:571
+#: common/models.py:557
msgid "Regular expression pattern for matching Part IPN"
msgstr ""
-#: common/models.py:575
+#: common/models.py:561
msgid "Allow Duplicate IPN"
msgstr ""
-#: common/models.py:576
+#: common/models.py:562
msgid "Allow multiple parts to share the same IPN"
msgstr ""
-#: common/models.py:582
+#: common/models.py:568
msgid "Allow Editing IPN"
msgstr ""
-#: common/models.py:583
+#: common/models.py:569
msgid "Allow changing the IPN value while editing a part"
msgstr ""
-#: common/models.py:589
+#: common/models.py:575
msgid "Copy Part BOM Data"
msgstr ""
-#: common/models.py:590
+#: common/models.py:576
msgid "Copy BOM data by default when duplicating a part"
msgstr ""
-#: common/models.py:596
+#: common/models.py:582
msgid "Copy Part Parameter Data"
msgstr ""
-#: common/models.py:597
+#: common/models.py:583
msgid "Copy parameter data by default when duplicating a part"
msgstr ""
-#: common/models.py:603
+#: common/models.py:589
msgid "Copy Part Test Data"
msgstr ""
-#: common/models.py:604
+#: common/models.py:590
msgid "Copy test data by default when duplicating a part"
msgstr ""
-#: common/models.py:610
+#: common/models.py:596
msgid "Copy Category Parameter Templates"
msgstr ""
-#: common/models.py:611
+#: common/models.py:597
msgid "Copy category parameter templates when creating a part"
msgstr ""
-#: common/models.py:617 part/models.py:2236 report/models.py:187
-#: stock/forms.py:224 templates/js/translated/table_filters.js:25
-#: templates/js/translated/table_filters.js:329
+#: common/models.py:603 part/models.py:2252 report/models.py:187
+#: stock/forms.py:224 templates/js/translated/table_filters.js:38
+#: templates/js/translated/table_filters.js:342
msgid "Template"
msgstr ""
-#: common/models.py:618
+#: common/models.py:604
msgid "Parts are templates by default"
msgstr ""
-#: common/models.py:624 part/models.py:803
-#: templates/js/translated/table_filters.js:133
-#: templates/js/translated/table_filters.js:341
+#: common/models.py:610 part/models.py:805
+#: templates/js/translated/table_filters.js:146
+#: templates/js/translated/table_filters.js:354
msgid "Assembly"
msgstr ""
-#: common/models.py:625
+#: common/models.py:611
msgid "Parts can be assembled from other components by default"
msgstr ""
-#: common/models.py:631 part/models.py:809
-#: templates/js/translated/table_filters.js:345
+#: common/models.py:617 part/models.py:811
+#: templates/js/translated/table_filters.js:358
msgid "Component"
msgstr ""
-#: common/models.py:632
+#: common/models.py:618
msgid "Parts can be used as sub-components by default"
msgstr ""
-#: common/models.py:638 part/models.py:820
+#: common/models.py:624 part/models.py:822
msgid "Purchaseable"
msgstr ""
-#: common/models.py:639
+#: common/models.py:625
msgid "Parts are purchaseable by default"
msgstr ""
-#: common/models.py:645 part/models.py:825
-#: templates/js/translated/table_filters.js:353
+#: common/models.py:631 part/models.py:827
+#: templates/js/translated/table_filters.js:366
msgid "Salable"
msgstr ""
-#: common/models.py:646
+#: common/models.py:632
msgid "Parts are salable by default"
msgstr ""
-#: common/models.py:652 part/models.py:815
-#: templates/js/translated/table_filters.js:33
-#: templates/js/translated/table_filters.js:357
+#: common/models.py:638 part/models.py:817
+#: templates/js/translated/table_filters.js:46
+#: templates/js/translated/table_filters.js:370
msgid "Trackable"
msgstr ""
-#: common/models.py:653
+#: common/models.py:639
msgid "Parts are trackable by default"
msgstr ""
-#: common/models.py:659 part/models.py:835
-#: part/templates/part/part_base.html:61
-#: templates/js/translated/table_filters.js:29
+#: common/models.py:645 part/models.py:837
+#: part/templates/part/part_base.html:66
+#: templates/js/translated/table_filters.js:42
msgid "Virtual"
msgstr ""
-#: common/models.py:660
+#: common/models.py:646
msgid "Parts are virtual by default"
msgstr ""
-#: common/models.py:667
+#: common/models.py:653
msgid "Show Quantity in Forms"
msgstr ""
-#: common/models.py:668
+#: common/models.py:654
msgid "Display available part quantity in some forms"
msgstr ""
-#: common/models.py:674
+#: common/models.py:660
msgid "Show Import in Views"
msgstr ""
-#: common/models.py:675
+#: common/models.py:661
msgid "Display the import wizard in some part views"
msgstr ""
-#: common/models.py:681
+#: common/models.py:667
msgid "Show Price in Forms"
msgstr ""
-#: common/models.py:682
+#: common/models.py:668
msgid "Display part price in some forms"
msgstr ""
-#: common/models.py:688
+#: common/models.py:674
msgid "Show related parts"
msgstr ""
-#: common/models.py:689
+#: common/models.py:675
msgid "Display related parts for a part"
msgstr ""
-#: common/models.py:695
+#: common/models.py:681
msgid "Create initial stock"
msgstr ""
-#: common/models.py:696
+#: common/models.py:682
msgid "Create initial stock on part creation"
msgstr ""
-#: common/models.py:702
+#: common/models.py:688
msgid "Internal Prices"
msgstr ""
-#: common/models.py:703
+#: common/models.py:689
msgid "Enable internal prices for parts"
msgstr ""
-#: common/models.py:709
+#: common/models.py:695
msgid "Internal Price as BOM-Price"
msgstr ""
-#: common/models.py:710
+#: common/models.py:696
msgid "Use the internal price (if set) in BOM-price calculations"
msgstr ""
-#: common/models.py:716 templates/stats.html:25
+#: common/models.py:702 templates/stats.html:25
msgid "Debug Mode"
msgstr ""
-#: common/models.py:717
+#: common/models.py:703
msgid "Generate reports in debug mode (HTML output)"
msgstr ""
-#: common/models.py:723
+#: common/models.py:709
msgid "Page Size"
msgstr ""
-#: common/models.py:724
+#: common/models.py:710
msgid "Default page size for PDF reports"
msgstr ""
-#: common/models.py:734
+#: common/models.py:720
msgid "Test Reports"
msgstr ""
-#: common/models.py:735
+#: common/models.py:721
msgid "Enable generation of test reports"
msgstr ""
-#: common/models.py:741
+#: common/models.py:727
msgid "Stock Expiry"
msgstr ""
-#: common/models.py:742
+#: common/models.py:728
msgid "Enable stock expiry functionality"
msgstr ""
-#: common/models.py:748
+#: common/models.py:734
msgid "Sell Expired Stock"
msgstr ""
-#: common/models.py:749
+#: common/models.py:735
msgid "Allow sale of expired stock"
msgstr ""
-#: common/models.py:755
+#: common/models.py:741
msgid "Stock Stale Time"
msgstr ""
-#: common/models.py:756
+#: common/models.py:742
msgid "Number of days stock items are considered stale before expiring"
msgstr ""
-#: common/models.py:758
+#: common/models.py:744
msgid "days"
msgstr ""
-#: common/models.py:763
+#: common/models.py:749
msgid "Build Expired Stock"
msgstr ""
-#: common/models.py:764
+#: common/models.py:750
msgid "Allow building with expired stock"
msgstr ""
-#: common/models.py:770
+#: common/models.py:756
msgid "Stock Ownership Control"
msgstr ""
-#: common/models.py:771
+#: common/models.py:757
msgid "Enable ownership control over stock locations and items"
msgstr ""
-#: common/models.py:777
+#: common/models.py:763
msgid "Group by Part"
msgstr ""
-#: common/models.py:778
+#: common/models.py:764
msgid "Group stock items by part reference in table views"
msgstr ""
-#: common/models.py:784
+#: common/models.py:770
msgid "Build Order Reference Prefix"
msgstr ""
-#: common/models.py:785
+#: common/models.py:771
msgid "Prefix value for build order reference"
msgstr ""
-#: common/models.py:790
+#: common/models.py:776
msgid "Build Order Reference Regex"
msgstr ""
-#: common/models.py:791
+#: common/models.py:777
msgid "Regular expression pattern for matching build order reference"
msgstr ""
-#: common/models.py:795
+#: common/models.py:781
msgid "Sales Order Reference Prefix"
msgstr ""
-#: common/models.py:796
+#: common/models.py:782
msgid "Prefix value for sales order reference"
msgstr ""
-#: common/models.py:801
+#: common/models.py:787
msgid "Purchase Order Reference Prefix"
msgstr ""
-#: common/models.py:802
+#: common/models.py:788
msgid "Prefix value for purchase order reference"
msgstr ""
-#: common/models.py:826
+#: common/models.py:794
+msgid "Enable build"
+msgstr ""
+
+#: common/models.py:795
+msgid "Enable build functionality in InvenTree interface"
+msgstr ""
+
+#: common/models.py:800
+msgid "Enable buy"
+msgstr ""
+
+#: common/models.py:801
+msgid "Enable buy functionality in InvenTree interface"
+msgstr ""
+
+#: common/models.py:806
+msgid "Enable sell"
+msgstr ""
+
+#: common/models.py:807
+msgid "Enable sell functionality in InvenTree interface"
+msgstr ""
+
+#: common/models.py:812
+msgid "Enable stock"
+msgstr ""
+
+#: common/models.py:813
+msgid "Enable stock functionality in InvenTree interface"
+msgstr ""
+
+#: common/models.py:818
+msgid "Enable SO"
+msgstr ""
+
+#: common/models.py:819
+msgid "Enable SO functionality in InvenTree interface"
+msgstr ""
+
+#: common/models.py:824
+msgid "Enable PO"
+msgstr ""
+
+#: common/models.py:825
+msgid "Enable PO functionality in InvenTree interface"
+msgstr ""
+
+#: common/models.py:850
msgid "Show starred parts"
msgstr ""
-#: common/models.py:827
+#: common/models.py:851
msgid "Show starred parts on the homepage"
msgstr ""
-#: common/models.py:832
+#: common/models.py:856
msgid "Show latest parts"
msgstr ""
-#: common/models.py:833
+#: common/models.py:857
msgid "Show latest parts on the homepage"
msgstr ""
-#: common/models.py:838
+#: common/models.py:862
msgid "Recent Part Count"
msgstr ""
-#: common/models.py:839
+#: common/models.py:863
msgid "Number of recent parts to display on index page"
msgstr ""
-#: common/models.py:845
+#: common/models.py:869
msgid "Show unvalidated BOMs"
msgstr ""
-#: common/models.py:846
+#: common/models.py:870
msgid "Show BOMs that await validation on the homepage"
msgstr ""
-#: common/models.py:851
+#: common/models.py:875
msgid "Show recent stock changes"
msgstr ""
-#: common/models.py:852
+#: common/models.py:876
msgid "Show recently changed stock items on the homepage"
msgstr ""
-#: common/models.py:857
+#: common/models.py:881
msgid "Recent Stock Count"
msgstr ""
-#: common/models.py:858
+#: common/models.py:882
msgid "Number of recent stock items to display on index page"
msgstr ""
-#: common/models.py:863
+#: common/models.py:887
msgid "Show low stock"
msgstr ""
-#: common/models.py:864
+#: common/models.py:888
msgid "Show low stock items on the homepage"
msgstr ""
-#: common/models.py:869
+#: common/models.py:893
msgid "Show depleted stock"
msgstr ""
-#: common/models.py:870
+#: common/models.py:894
msgid "Show depleted stock items on the homepage"
msgstr ""
-#: common/models.py:875
+#: common/models.py:899
msgid "Show needed stock"
msgstr ""
-#: common/models.py:876
+#: common/models.py:900
msgid "Show stock items needed for builds on the homepage"
msgstr ""
-#: common/models.py:881
+#: common/models.py:905
msgid "Show expired stock"
msgstr ""
-#: common/models.py:882
+#: common/models.py:906
msgid "Show expired stock items on the homepage"
msgstr ""
-#: common/models.py:887
+#: common/models.py:911
msgid "Show stale stock"
msgstr ""
-#: common/models.py:888
+#: common/models.py:912
msgid "Show stale stock items on the homepage"
msgstr ""
-#: common/models.py:893
+#: common/models.py:917
msgid "Show pending builds"
msgstr ""
-#: common/models.py:894
+#: common/models.py:918
msgid "Show pending builds on the homepage"
msgstr ""
-#: common/models.py:899
+#: common/models.py:923
msgid "Show overdue builds"
msgstr ""
-#: common/models.py:900
+#: common/models.py:924
msgid "Show overdue builds on the homepage"
msgstr ""
-#: common/models.py:905
+#: common/models.py:929
msgid "Show outstanding POs"
msgstr ""
-#: common/models.py:906
+#: common/models.py:930
msgid "Show outstanding POs on the homepage"
msgstr ""
-#: common/models.py:911
+#: common/models.py:935
msgid "Show overdue POs"
msgstr ""
-#: common/models.py:912
+#: common/models.py:936
msgid "Show overdue POs on the homepage"
msgstr ""
-#: common/models.py:917
+#: common/models.py:941
msgid "Show outstanding SOs"
msgstr ""
-#: common/models.py:918
+#: common/models.py:942
msgid "Show outstanding SOs on the homepage"
msgstr ""
-#: common/models.py:923
+#: common/models.py:947
msgid "Show overdue SOs"
msgstr ""
-#: common/models.py:924
+#: common/models.py:948
msgid "Show overdue SOs on the homepage"
msgstr ""
-#: common/models.py:930
+#: common/models.py:954
msgid "Inline label display"
msgstr ""
-#: common/models.py:931
+#: common/models.py:955
msgid "Display PDF labels in the browser, instead of downloading as a file"
msgstr ""
-#: common/models.py:937
+#: common/models.py:961
msgid "Inline report display"
msgstr ""
-#: common/models.py:938
+#: common/models.py:962
msgid "Display PDF reports in the browser, instead of downloading as a file"
msgstr ""
-#: common/models.py:944
+#: common/models.py:968
msgid "Search Preview Results"
msgstr ""
-#: common/models.py:945
+#: common/models.py:969
msgid "Number of results to show in search preview window"
msgstr ""
-#: common/models.py:1002 company/forms.py:43
+#: common/models.py:1026 company/forms.py:43
msgid "Price break quantity"
msgstr ""
-#: common/models.py:1009 company/templates/company/supplier_part.html:231
-#: templates/js/translated/part.js:1153
+#: common/models.py:1033 company/templates/company/supplier_part.html:231
+#: templates/js/translated/part.js:1322
msgid "Price"
msgstr ""
-#: common/models.py:1010
+#: common/models.py:1034
msgid "Unit price at specified quantity"
msgstr ""
-#: common/models.py:1103
+#: common/models.py:1127
msgid "Default"
msgstr ""
@@ -2123,7 +2200,7 @@ msgstr ""
#: order/templates/order/po_navbar.html:19
#: order/templates/order/po_navbar.html:22
#: order/templates/order/purchase_order_detail.html:26 order/views.py:290
-#: part/templates/part/bom_upload/upload_file.html:45
+#: part/templates/part/bom_upload/upload_file.html:65
#: part/templates/part/import_wizard/part_upload.html:45 part/views.py:268
#: part/views.py:882
msgid "Upload File"
@@ -2154,7 +2231,7 @@ msgstr ""
#: order/templates/order/order_wizard/po_upload.html:40
#: 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:43
+#: part/templates/part/bom_upload/upload_file.html:63
#: 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:43
@@ -2169,244 +2246,249 @@ msgstr ""
msgid "Image URL"
msgstr ""
-#: company/models.py:102
+#: company/models.py:104
msgid "Company description"
msgstr ""
-#: company/models.py:103
+#: company/models.py:105
msgid "Description of the company"
msgstr ""
-#: company/models.py:109 company/templates/company/company_base.html:70
-#: templates/js/translated/company.js:303
+#: company/models.py:111 company/templates/company/company_base.html:70
+#: templates/js/translated/company.js:348
msgid "Website"
msgstr ""
-#: company/models.py:110
+#: company/models.py:112
msgid "Company website URL"
msgstr ""
-#: company/models.py:114 company/templates/company/company_base.html:88
+#: company/models.py:116 company/templates/company/company_base.html:88
msgid "Address"
msgstr ""
-#: company/models.py:115
+#: company/models.py:117
msgid "Company address"
msgstr ""
-#: company/models.py:118
+#: company/models.py:120
msgid "Phone number"
msgstr ""
-#: company/models.py:119
+#: company/models.py:121
msgid "Contact phone number"
msgstr ""
-#: company/models.py:122 company/templates/company/company_base.html:102
+#: company/models.py:124 company/templates/company/company_base.html:102
msgid "Email"
msgstr ""
-#: company/models.py:122
+#: company/models.py:124
msgid "Contact email address"
msgstr ""
-#: company/models.py:125 company/templates/company/company_base.html:109
+#: company/models.py:127 company/templates/company/company_base.html:109
msgid "Contact"
msgstr ""
-#: company/models.py:126
+#: company/models.py:128
msgid "Point of contact"
msgstr ""
-#: company/models.py:128 company/models.py:345 company/models.py:513
-#: order/models.py:160 part/models.py:712
+#: company/models.py:130 company/models.py:347 company/models.py:563
+#: order/models.py:160 part/models.py:714
#: report/templates/report/inventree_build_order_base.html:165
-#: templates/js/translated/company.js:486
-#: templates/js/translated/company.js:768 templates/js/translated/part.js:819
+#: templates/js/translated/company.js:535
+#: templates/js/translated/company.js:823 templates/js/translated/part.js:972
msgid "Link"
msgstr ""
-#: company/models.py:128
+#: company/models.py:130
msgid "Link to external company information"
msgstr ""
-#: company/models.py:136 part/models.py:722
+#: company/models.py:138 part/models.py:724
msgid "Image"
msgstr ""
-#: company/models.py:141
+#: company/models.py:143
msgid "is customer"
msgstr ""
-#: company/models.py:141
+#: company/models.py:143
msgid "Do you sell items to this company?"
msgstr ""
-#: company/models.py:143
+#: company/models.py:145
msgid "is supplier"
msgstr ""
-#: company/models.py:143
+#: company/models.py:145
msgid "Do you purchase items from this company?"
msgstr ""
-#: company/models.py:145
+#: company/models.py:147
msgid "is manufacturer"
msgstr ""
-#: company/models.py:145
+#: company/models.py:147
msgid "Does this company manufacture parts?"
msgstr ""
-#: company/models.py:149 company/serializers.py:245
-#: company/templates/company/company_base.html:76
+#: company/models.py:151 company/serializers.py:264
+#: company/templates/company/company_base.html:76 stock/serializers.py:155
msgid "Currency"
msgstr ""
-#: company/models.py:152
+#: company/models.py:154
msgid "Default currency used for this company"
msgstr ""
-#: company/models.py:317 company/models.py:484 stock/models.py:448
+#: company/models.py:319 company/models.py:534 stock/models.py:454
#: stock/templates/stock/item_base.html:237
msgid "Base Part"
msgstr ""
-#: company/models.py:321 company/models.py:488 order/views.py:1082
+#: company/models.py:323 company/models.py:538 order/views.py:1082
msgid "Select part"
msgstr ""
-#: company/models.py:332 company/templates/company/company_base.html:116
+#: company/models.py:334 company/templates/company/company_base.html:116
#: company/templates/company/manufacturer_part.html:89
#: company/templates/company/supplier_part.html:98 part/bom.py:170
#: part/bom.py:241 stock/templates/stock/item_base.html:366
-#: templates/js/translated/company.js:287
-#: templates/js/translated/company.js:463
-#: templates/js/translated/company.js:739
+#: templates/js/translated/company.js:332
+#: templates/js/translated/company.js:512
+#: templates/js/translated/company.js:794 templates/js/translated/part.js:222
msgid "Manufacturer"
msgstr ""
-#: company/models.py:333
+#: company/models.py:335 templates/js/translated/part.js:223
msgid "Select manufacturer"
msgstr ""
-#: company/models.py:339 company/templates/company/manufacturer_part.html:93
-#: company/templates/company/supplier_part.html:106
-#: order/templates/order/purchase_order_detail.html:331 part/bom.py:171
-#: part/bom.py:242 templates/js/translated/company.js:479
-#: templates/js/translated/company.js:757
+#: company/models.py:341 company/templates/company/manufacturer_part.html:93
+#: company/templates/company/supplier_part.html:106 part/bom.py:171
+#: part/bom.py:242 templates/js/translated/company.js:528
+#: templates/js/translated/company.js:812 templates/js/translated/order.js:505
+#: templates/js/translated/part.js:233
msgid "MPN"
msgstr ""
-#: company/models.py:340
+#: company/models.py:342 templates/js/translated/part.js:234
msgid "Manufacturer Part Number"
msgstr ""
-#: company/models.py:346
+#: company/models.py:348
msgid "URL for external manufacturer part link"
msgstr ""
-#: company/models.py:352
+#: company/models.py:354
msgid "Manufacturer part description"
msgstr ""
-#: company/models.py:406 company/models.py:507
+#: company/models.py:408 company/models.py:557
#: company/templates/company/manufacturer_part.html:6
#: company/templates/company/manufacturer_part.html:23
#: stock/templates/stock/item_base.html:376
msgid "Manufacturer Part"
msgstr ""
-#: company/models.py:413
+#: company/models.py:415
msgid "Parameter name"
msgstr ""
-#: company/models.py:419
+#: company/models.py:421
#: report/templates/report/inventree_test_report_base.html:90
-#: stock/models.py:1808 templates/InvenTree/settings/header.html:8
-#: templates/js/translated/company.js:589 templates/js/translated/part.js:480
-#: templates/js/translated/stock.js:505
+#: stock/models.py:1819 templates/InvenTree/settings/header.html:8
+#: templates/js/translated/company.js:642 templates/js/translated/part.js:612
+#: templates/js/translated/stock.js:576
msgid "Value"
msgstr ""
-#: company/models.py:420
+#: company/models.py:422
msgid "Parameter value"
msgstr ""
-#: company/models.py:426 part/models.py:797 part/models.py:2204
-#: templates/js/translated/company.js:595 templates/js/translated/part.js:486
+#: company/models.py:428 part/models.py:799 part/models.py:2220
+#: templates/js/translated/company.js:648 templates/js/translated/part.js:618
msgid "Units"
msgstr ""
-#: company/models.py:427
+#: company/models.py:429
msgid "Parameter units"
msgstr ""
-#: company/models.py:494 company/templates/company/company_base.html:121
+#: company/models.py:501
+msgid "Linked manufacturer part must reference the same base part"
+msgstr ""
+
+#: company/models.py:544 company/templates/company/company_base.html:121
#: company/templates/company/supplier_part.html:88 order/models.py:260
#: order/templates/order/order_base.html:92
#: order/templates/order/order_wizard/select_pos.html:30 part/bom.py:175
#: part/bom.py:286 stock/templates/stock/item_base.html:383
-#: templates/js/translated/company.js:291
-#: templates/js/translated/company.js:713 templates/js/translated/order.js:254
+#: templates/js/translated/company.js:336
+#: templates/js/translated/company.js:768 templates/js/translated/order.js:328
+#: templates/js/translated/part.js:203
msgid "Supplier"
msgstr ""
-#: company/models.py:495
+#: company/models.py:545 templates/js/translated/part.js:204
msgid "Select supplier"
msgstr ""
-#: company/models.py:500 company/templates/company/supplier_part.html:92
-#: order/templates/order/purchase_order_detail.html:318 part/bom.py:176
-#: part/bom.py:287
+#: company/models.py:550 company/templates/company/supplier_part.html:92
+#: part/bom.py:176 part/bom.py:287 templates/js/translated/order.js:492
+#: templates/js/translated/part.js:214
msgid "SKU"
msgstr ""
-#: company/models.py:501
+#: company/models.py:551 templates/js/translated/part.js:215
msgid "Supplier stock keeping unit"
msgstr ""
-#: company/models.py:508
+#: company/models.py:558
msgid "Select manufacturer part"
msgstr ""
-#: company/models.py:514
+#: company/models.py:564
msgid "URL for external supplier part link"
msgstr ""
-#: company/models.py:520
+#: company/models.py:570
msgid "Supplier part description"
msgstr ""
-#: company/models.py:525 company/templates/company/supplier_part.html:120
-#: part/models.py:2352 report/templates/report/inventree_po_report.html:93
+#: company/models.py:575 company/templates/company/supplier_part.html:120
+#: part/models.py:2368 report/templates/report/inventree_po_report.html:93
#: report/templates/report/inventree_so_report.html:93
msgid "Note"
msgstr ""
-#: company/models.py:529 part/models.py:1590
+#: company/models.py:579 part/models.py:1599
msgid "base cost"
msgstr ""
-#: company/models.py:529 part/models.py:1590
+#: company/models.py:579 part/models.py:1599
msgid "Minimum charge (e.g. stocking fee)"
msgstr ""
-#: company/models.py:531 company/templates/company/supplier_part.html:113
-#: stock/models.py:472 stock/templates/stock/item_base.html:324
-#: templates/js/translated/company.js:789 templates/js/translated/stock.js:1086
+#: company/models.py:581 company/templates/company/supplier_part.html:113
+#: stock/models.py:478 stock/templates/stock/item_base.html:324
+#: templates/js/translated/company.js:844 templates/js/translated/stock.js:1057
msgid "Packaging"
msgstr ""
-#: company/models.py:531
+#: company/models.py:581
msgid "Part packaging"
msgstr ""
-#: company/models.py:533 part/models.py:1592
+#: company/models.py:583 part/models.py:1601
msgid "multiple"
msgstr ""
-#: company/models.py:533
+#: company/models.py:583
msgid "Order multiple"
msgstr ""
@@ -2420,7 +2502,7 @@ msgstr ""
#: company/templates/company/company_base.html:9
#: company/templates/company/company_base.html:35
-#: templates/InvenTree/search.html:304 templates/js/translated/company.js:276
+#: templates/InvenTree/search.html:304 templates/js/translated/company.js:321
msgid "Company"
msgstr ""
@@ -2435,7 +2517,7 @@ msgid "Download image from URL"
msgstr ""
#: company/templates/company/company_base.html:46
-#: templates/js/translated/order.js:83
+#: templates/js/translated/order.js:117
msgid "Create Purchase Order"
msgstr ""
@@ -2460,16 +2542,16 @@ msgstr ""
msgid "Phone"
msgstr ""
-#: company/templates/company/company_base.html:126 order/models.py:544
-#: order/templates/order/sales_order_base.html:94 stock/models.py:490
-#: stock/models.py:491 stock/templates/stock/item_base.html:276
-#: templates/js/translated/company.js:283 templates/js/translated/order.js:351
-#: templates/js/translated/stock.js:1467
+#: company/templates/company/company_base.html:126 order/models.py:550
+#: order/templates/order/sales_order_base.html:94 stock/models.py:496
+#: stock/models.py:497 stock/templates/stock/item_base.html:276
+#: templates/js/translated/company.js:328 templates/js/translated/order.js:692
+#: templates/js/translated/stock.js:1608
msgid "Customer"
msgstr ""
#: company/templates/company/company_base.html:193
-#: part/templates/part/part_base.html:405
+#: part/templates/part/part_base.html:418
msgid "Upload Image"
msgstr ""
@@ -2490,8 +2572,8 @@ msgstr ""
msgid "New Supplier Part"
msgstr ""
-#: company/templates/company/detail.html:28
-#: company/templates/company/detail.html:70
+#: company/templates/company/detail.html:27
+#: company/templates/company/detail.html:67
#: company/templates/company/manufacturer_part.html:112
#: company/templates/company/manufacturer_part.html:136
#: part/templates/part/category.html:135 part/templates/part/detail.html:292
@@ -2499,106 +2581,106 @@ msgstr ""
msgid "Options"
msgstr ""
-#: company/templates/company/detail.html:33
-#: company/templates/company/detail.html:75
+#: company/templates/company/detail.html:32
+#: company/templates/company/detail.html:72
#: part/templates/part/category.html:140
msgid "Order parts"
msgstr ""
-#: company/templates/company/detail.html:36
-#: company/templates/company/detail.html:78
+#: company/templates/company/detail.html:35
+#: company/templates/company/detail.html:75
msgid "Delete parts"
msgstr ""
-#: company/templates/company/detail.html:36
-#: company/templates/company/detail.html:78
+#: company/templates/company/detail.html:35
+#: company/templates/company/detail.html:75
msgid "Delete Parts"
msgstr ""
-#: company/templates/company/detail.html:56 templates/InvenTree/search.html:149
+#: company/templates/company/detail.html:54 templates/InvenTree/search.html:149
msgid "Manufacturer Parts"
msgstr ""
-#: company/templates/company/detail.html:64
+#: company/templates/company/detail.html:62
msgid "Create new manufacturer part"
msgstr ""
-#: company/templates/company/detail.html:65 part/templates/part/detail.html:312
+#: company/templates/company/detail.html:63 part/templates/part/detail.html:312
msgid "New Manufacturer Part"
msgstr ""
-#: company/templates/company/detail.html:97
+#: company/templates/company/detail.html:93
msgid "Supplier Stock"
msgstr ""
-#: company/templates/company/detail.html:106
-#: company/templates/company/navbar.html:40
-#: company/templates/company/navbar.html:43
+#: company/templates/company/detail.html:102
+#: company/templates/company/navbar.html:46
+#: company/templates/company/navbar.html:49
#: order/templates/order/purchase_orders.html:8
#: order/templates/order/purchase_orders.html:13
-#: part/templates/part/detail.html:50 part/templates/part/navbar.html:71
-#: part/templates/part/navbar.html:74 templates/InvenTree/index.html:260
+#: part/templates/part/detail.html:50 part/templates/part/navbar.html:82
+#: part/templates/part/navbar.html:85 templates/InvenTree/index.html:260
#: templates/InvenTree/search.html:325
#: templates/InvenTree/settings/navbar.html:107
-#: templates/InvenTree/settings/navbar.html:109 templates/navbar.html:37
+#: templates/InvenTree/settings/navbar.html:109 templates/navbar.html:44
#: users/models.py:45
msgid "Purchase Orders"
msgstr ""
-#: company/templates/company/detail.html:112
+#: company/templates/company/detail.html:108
#: order/templates/order/purchase_orders.html:20
msgid "Create new purchase order"
msgstr ""
-#: company/templates/company/detail.html:113
+#: company/templates/company/detail.html:109
#: order/templates/order/purchase_orders.html:21
msgid "New Purchase Order"
msgstr ""
-#: company/templates/company/detail.html:128
-#: company/templates/company/navbar.html:49
-#: company/templates/company/navbar.html:52
+#: company/templates/company/detail.html:124
+#: company/templates/company/navbar.html:55
+#: company/templates/company/navbar.html:58
#: order/templates/order/sales_orders.html:8
#: order/templates/order/sales_orders.html:13
-#: part/templates/part/detail.html:71 part/templates/part/navbar.html:79
-#: part/templates/part/navbar.html:82 templates/InvenTree/index.html:291
+#: part/templates/part/detail.html:71 part/templates/part/navbar.html:91
+#: part/templates/part/navbar.html:94 templates/InvenTree/index.html:291
#: templates/InvenTree/search.html:345
#: templates/InvenTree/settings/navbar.html:113
-#: templates/InvenTree/settings/navbar.html:115 templates/navbar.html:46
+#: templates/InvenTree/settings/navbar.html:115 templates/navbar.html:55
#: users/models.py:46
msgid "Sales Orders"
msgstr ""
-#: company/templates/company/detail.html:134
+#: company/templates/company/detail.html:130
#: order/templates/order/sales_orders.html:20
msgid "Create new sales order"
msgstr ""
-#: company/templates/company/detail.html:135
+#: company/templates/company/detail.html:131
#: order/templates/order/sales_orders.html:21
msgid "New Sales Order"
msgstr ""
-#: company/templates/company/detail.html:151
-#: company/templates/company/navbar.html:55
-#: company/templates/company/navbar.html:58
-#: templates/js/translated/build.js:597
+#: company/templates/company/detail.html:147
+#: company/templates/company/navbar.html:61
+#: company/templates/company/navbar.html:64
+#: templates/js/translated/build.js:620
msgid "Assigned Stock"
msgstr ""
-#: company/templates/company/detail.html:169
+#: company/templates/company/detail.html:165
msgid "Company Notes"
msgstr ""
#: company/templates/company/detail.html:364
#: company/templates/company/manufacturer_part.html:200
-#: part/templates/part/detail.html:826
+#: part/templates/part/detail.html:357
msgid "Delete Supplier Parts?"
msgstr ""
#: company/templates/company/detail.html:365
#: company/templates/company/manufacturer_part.html:201
-#: part/templates/part/detail.html:827
+#: part/templates/part/detail.html:358
msgid "All selected supplier parts will be deleted"
msgstr ""
@@ -2609,17 +2691,17 @@ msgstr ""
#: company/templates/company/manufacturer_part.html:40
#: company/templates/company/supplier_part.html:40
#: company/templates/company/supplier_part.html:146
-#: part/templates/part/detail.html:55 part/templates/part/part_base.html:109
+#: part/templates/part/detail.html:55 part/templates/part/part_base.html:116
msgid "Order part"
msgstr ""
#: company/templates/company/manufacturer_part.html:45
-#: templates/js/translated/company.js:511
+#: templates/js/translated/company.js:560
msgid "Edit manufacturer part"
msgstr ""
#: company/templates/company/manufacturer_part.html:49
-#: templates/js/translated/company.js:512
+#: templates/js/translated/company.js:561
msgid "Delete manufacturer part"
msgstr ""
@@ -2634,9 +2716,9 @@ msgstr ""
#: company/templates/company/manufacturer_part.html:103
#: company/templates/company/manufacturer_part_navbar.html:21
-#: company/views.py:49 part/templates/part/navbar.html:65
-#: part/templates/part/navbar.html:68 part/templates/part/prices.html:144
-#: templates/InvenTree/search.html:316 templates/navbar.html:35
+#: company/views.py:49 part/templates/part/navbar.html:75
+#: part/templates/part/navbar.html:78 part/templates/part/prices.html:163
+#: templates/InvenTree/search.html:316 templates/navbar.html:41
msgid "Suppliers"
msgstr ""
@@ -2649,8 +2731,8 @@ msgstr ""
#: company/templates/company/manufacturer_part.html:138
#: company/templates/company/manufacturer_part.html:239
#: part/templates/part/detail.html:214 part/templates/part/detail.html:294
-#: part/templates/part/detail.html:317 templates/js/translated/company.js:377
-#: users/models.py:194
+#: part/templates/part/detail.html:317 templates/js/translated/company.js:424
+#: templates/js/translated/helpers.js:31 users/models.py:194
msgid "Delete"
msgstr ""
@@ -2659,8 +2741,8 @@ msgstr ""
#: company/templates/company/manufacturer_part_navbar.html:14
#: part/templates/part/category_navbar.html:38
#: part/templates/part/category_navbar.html:41
-#: part/templates/part/detail.html:155 part/templates/part/navbar.html:14
-#: part/templates/part/navbar.html:17
+#: part/templates/part/detail.html:155 part/templates/part/navbar.html:20
+#: part/templates/part/navbar.html:23
msgid "Parameters"
msgstr ""
@@ -2676,7 +2758,7 @@ msgid "Delete parameters"
msgstr ""
#: company/templates/company/manufacturer_part.html:176
-#: part/templates/part/detail.html:719
+#: part/templates/part/detail.html:834
msgid "Add Parameter"
msgstr ""
@@ -2693,18 +2775,18 @@ msgid "Manufacturer Part Stock"
msgstr ""
#: company/templates/company/manufacturer_part_navbar.html:29
-#: company/templates/company/navbar.html:34
+#: company/templates/company/navbar.html:39
#: company/templates/company/supplier_part_navbar.html:15
-#: part/templates/part/navbar.html:31 stock/api.py:53
+#: part/templates/part/navbar.html:38 stock/api.py:54
#: stock/templates/stock/loc_link.html:7 stock/templates/stock/location.html:36
#: stock/templates/stock/stock_app_base.html:10
#: templates/InvenTree/index.html:150 templates/InvenTree/search.html:196
#: templates/InvenTree/search.html:232
#: templates/InvenTree/settings/navbar.html:95
#: templates/InvenTree/settings/navbar.html:97
-#: templates/js/translated/part.js:401 templates/js/translated/part.js:626
-#: templates/js/translated/part.js:786 templates/js/translated/stock.js:133
-#: templates/js/translated/stock.js:935 templates/navbar.html:26
+#: templates/js/translated/part.js:529 templates/js/translated/part.js:758
+#: templates/js/translated/part.js:934 templates/js/translated/stock.js:202
+#: templates/js/translated/stock.js:850 templates/navbar.html:32
msgid "Stock"
msgstr ""
@@ -2717,41 +2799,41 @@ msgstr ""
msgid "Orders"
msgstr ""
-#: company/templates/company/navbar.html:13
-#: company/templates/company/navbar.html:16
+#: company/templates/company/navbar.html:17
+#: company/templates/company/navbar.html:20
msgid "Manufactured Parts"
msgstr ""
-#: company/templates/company/navbar.html:22
-#: company/templates/company/navbar.html:25
+#: company/templates/company/navbar.html:26
+#: company/templates/company/navbar.html:29
msgid "Supplied Parts"
msgstr ""
-#: company/templates/company/navbar.html:31 part/templates/part/navbar.html:28
+#: company/templates/company/navbar.html:36 part/templates/part/navbar.html:35
#: stock/templates/stock/location.html:119
#: stock/templates/stock/location.html:134
#: stock/templates/stock/location.html:148
#: stock/templates/stock/location_navbar.html:18
#: stock/templates/stock/location_navbar.html:21
-#: templates/InvenTree/search.html:198 templates/js/translated/stock.js:1366
+#: templates/InvenTree/search.html:198 templates/js/translated/stock.js:1507
#: templates/stats.html:93 templates/stats.html:102 users/models.py:43
msgid "Stock Items"
msgstr ""
#: company/templates/company/supplier_part.html:7
-#: company/templates/company/supplier_part.html:24 stock/models.py:457
+#: company/templates/company/supplier_part.html:24 stock/models.py:463
#: stock/templates/stock/item_base.html:388
-#: templates/js/translated/company.js:729 templates/js/translated/stock.js:1058
+#: templates/js/translated/company.js:784 templates/js/translated/stock.js:1014
msgid "Supplier Part"
msgstr ""
#: company/templates/company/supplier_part.html:44
-#: templates/js/translated/company.js:802
+#: templates/js/translated/company.js:857
msgid "Edit supplier part"
msgstr ""
#: company/templates/company/supplier_part.html:48
-#: templates/js/translated/company.js:803
+#: templates/js/translated/company.js:858
msgid "Delete supplier part"
msgstr ""
@@ -2775,13 +2857,13 @@ msgid "Order Part"
msgstr ""
#: company/templates/company/supplier_part.html:158
-#: part/templates/part/navbar.html:58 part/templates/part/prices.html:7
+#: part/templates/part/navbar.html:67 part/templates/part/prices.html:7
msgid "Pricing Information"
msgstr ""
#: company/templates/company/supplier_part.html:164
#: company/templates/company/supplier_part.html:265
-#: part/templates/part/prices.html:253 part/views.py:1722
+#: part/templates/part/prices.html:271 part/views.py:1730
msgid "Add Price Break"
msgstr ""
@@ -2789,11 +2871,11 @@ msgstr ""
msgid "No price break information found"
msgstr ""
-#: company/templates/company/supplier_part.html:199 part/views.py:1784
+#: company/templates/company/supplier_part.html:199 part/views.py:1792
msgid "Delete Price Break"
msgstr ""
-#: company/templates/company/supplier_part.html:213 part/views.py:1770
+#: company/templates/company/supplier_part.html:213 part/views.py:1778
msgid "Edit Price Break"
msgstr ""
@@ -2817,8 +2899,8 @@ msgstr ""
msgid "New Supplier"
msgstr ""
-#: company/views.py:55 part/templates/part/prices.html:148
-#: templates/InvenTree/search.html:306 templates/navbar.html:36
+#: company/views.py:55 part/templates/part/prices.html:167
+#: templates/InvenTree/search.html:306 templates/navbar.html:42
msgid "Manufacturers"
msgstr ""
@@ -2827,7 +2909,7 @@ msgid "New Manufacturer"
msgstr ""
#: company/views.py:61 templates/InvenTree/search.html:336
-#: templates/navbar.html:45
+#: templates/navbar.html:53
msgid "Customers"
msgstr ""
@@ -2929,6 +3011,10 @@ msgstr ""
msgid "Part query filters (comma-separated value of key=value pairs)"
msgstr ""
+#: order/api.py:302
+msgid "Destination location must be specified"
+msgstr ""
+
#: order/forms.py:30 order/templates/order/order_base.html:47
msgid "Place order"
msgstr ""
@@ -2978,11 +3064,11 @@ msgstr ""
msgid "Order notes"
msgstr ""
-#: order/models.py:247 order/models.py:534
+#: order/models.py:247 order/models.py:540
msgid "Order reference"
msgstr ""
-#: order/models.py:252 order/models.py:549
+#: order/models.py:252 order/models.py:555
msgid "Purchase order status"
msgstr ""
@@ -2991,7 +3077,7 @@ msgid "Company from which the items are being ordered"
msgstr ""
#: order/models.py:264 order/templates/order/order_base.html:98
-#: templates/js/translated/order.js:263
+#: templates/js/translated/order.js:337
msgid "Supplier Reference"
msgstr ""
@@ -3023,7 +3109,7 @@ msgstr ""
msgid "Date order was completed"
msgstr ""
-#: order/models.py:313 stock/models.py:345 stock/models.py:1060
+#: order/models.py:313 stock/models.py:351 stock/models.py:1072
msgid "Quantity must be greater than zero"
msgstr ""
@@ -3031,150 +3117,182 @@ msgstr ""
msgid "Part supplier must match PO supplier"
msgstr ""
-#: order/models.py:416
+#: order/models.py:421
msgid "Lines can only be received against an order marked as 'Placed'"
msgstr ""
-#: order/models.py:420
+#: order/models.py:425
msgid "Quantity must be an integer"
msgstr ""
-#: order/models.py:422
+#: order/models.py:427
msgid "Quantity must be a positive number"
msgstr ""
-#: order/models.py:545
+#: order/models.py:551
msgid "Company to which the items are being sold"
msgstr ""
-#: order/models.py:551
+#: order/models.py:557
msgid "Customer Reference "
msgstr ""
-#: order/models.py:551
+#: order/models.py:557
msgid "Customer order reference code"
msgstr ""
-#: order/models.py:556
+#: order/models.py:562
msgid "Target date for order completion. Order will be overdue after this date."
msgstr ""
-#: order/models.py:559 templates/js/translated/order.js:392
+#: order/models.py:565 templates/js/translated/order.js:733
msgid "Shipment Date"
msgstr ""
-#: order/models.py:566
+#: order/models.py:572
msgid "shipped by"
msgstr ""
-#: order/models.py:610
+#: order/models.py:616
msgid "SalesOrder cannot be shipped as it is not currently pending"
msgstr ""
-#: order/models.py:707
+#: order/models.py:713
msgid "Item quantity"
msgstr ""
-#: order/models.py:713
+#: order/models.py:719
msgid "Line item reference"
msgstr ""
-#: order/models.py:715
+#: order/models.py:721
msgid "Line item notes"
msgstr ""
-#: order/models.py:745 order/models.py:823 templates/js/translated/order.js:442
+#: order/models.py:751 order/models.py:835 templates/js/translated/order.js:785
msgid "Order"
msgstr ""
-#: order/models.py:746 order/templates/order/order_base.html:9
+#: order/models.py:752 order/templates/order/order_base.html:9
#: order/templates/order/order_base.html:24
#: report/templates/report/inventree_po_report.html:77
#: stock/templates/stock/item_base.html:338
-#: templates/js/translated/order.js:232 templates/js/translated/stock.js:1037
-#: templates/js/translated/stock.js:1448
+#: templates/js/translated/order.js:306 templates/js/translated/stock.js:991
+#: templates/js/translated/stock.js:1589
msgid "Purchase Order"
msgstr ""
-#: order/models.py:767
+#: order/models.py:773
msgid "Supplier part"
msgstr ""
-#: order/models.py:770 order/templates/order/order_base.html:131
-#: order/templates/order/purchase_order_detail.html:388
+#: order/models.py:780 order/templates/order/order_base.html:131
#: order/templates/order/receive_parts.html:22
#: order/templates/order/sales_order_base.html:133
+#: templates/js/translated/order.js:573
msgid "Received"
msgstr ""
-#: order/models.py:770
+#: order/models.py:781
msgid "Number of items received"
msgstr ""
-#: order/models.py:776 part/templates/part/prices.html:157 stock/models.py:582
-#: stock/templates/stock/item_base.html:345
-#: templates/js/translated/stock.js:1081
+#: order/models.py:788 part/templates/part/prices.html:176 stock/models.py:588
+#: stock/serializers.py:147 stock/templates/stock/item_base.html:345
+#: templates/js/translated/stock.js:1045
msgid "Purchase Price"
msgstr ""
-#: order/models.py:777
+#: order/models.py:789
msgid "Unit purchase price"
msgstr ""
-#: order/models.py:785
+#: order/models.py:797
msgid "Where does the Purchaser want this item to be stored?"
msgstr ""
-#: order/models.py:831 part/templates/part/part_pricing.html:97
-#: part/templates/part/prices.html:97 part/templates/part/prices.html:266
+#: order/models.py:843 part/templates/part/part_pricing.html:112
+#: part/templates/part/prices.html:116 part/templates/part/prices.html:284
msgid "Sale Price"
msgstr ""
-#: order/models.py:832
+#: order/models.py:844
msgid "Unit sale price"
msgstr ""
-#: order/models.py:911 order/models.py:913
+#: order/models.py:923 order/models.py:925
msgid "Stock item has not been assigned"
msgstr ""
-#: order/models.py:917
+#: order/models.py:929
msgid "Cannot allocate stock item to a line with a different part"
msgstr ""
-#: order/models.py:919
+#: order/models.py:931
msgid "Cannot allocate stock to a line without a part"
msgstr ""
-#: order/models.py:922
+#: order/models.py:934
msgid "Allocation quantity cannot exceed stock quantity"
msgstr ""
-#: order/models.py:932
+#: order/models.py:944
msgid "Quantity must be 1 for serialized stock item"
msgstr ""
-#: order/models.py:937
+#: order/models.py:949
msgid "Line"
msgstr ""
-#: order/models.py:948
+#: order/models.py:960
msgid "Item"
msgstr ""
-#: order/models.py:949
+#: order/models.py:961
msgid "Select stock item to allocate"
msgstr ""
-#: order/models.py:952
+#: order/models.py:964
msgid "Enter stock allocation quantity"
msgstr ""
-#: order/serializers.py:139
+#: order/serializers.py:166
msgid "Purchase price currency"
msgstr ""
-#: order/serializers.py:360
+#: order/serializers.py:201
+msgid "Line Item"
+msgstr ""
+
+#: order/serializers.py:207
+msgid "Line item does not match purchase order"
+msgstr ""
+
+#: order/serializers.py:217 order/serializers.py:276
+msgid "Select destination location for received items"
+msgstr ""
+
+#: order/serializers.py:234
+msgid "Barcode Hash"
+msgstr ""
+
+#: order/serializers.py:235
+msgid "Unique identifier field"
+msgstr ""
+
+#: order/serializers.py:250
+msgid "Barcode is already in use"
+msgstr ""
+
+#: order/serializers.py:289
+msgid "Line items must be provided"
+msgstr ""
+
+#: order/serializers.py:299
+msgid "Supplied barcode values must be unique"
+msgstr ""
+
+#: order/serializers.py:514
msgid "Sale price currency"
msgstr ""
@@ -3227,14 +3345,12 @@ msgid "Edit Purchase Order"
msgstr ""
#: order/templates/order/order_base.html:196
-#: order/templates/order/purchase_order_detail.html:265
-#: stock/templates/stock/location.html:250
+#: stock/templates/stock/location.html:250 templates/js/translated/order.js:437
msgid "New Location"
msgstr ""
#: order/templates/order/order_base.html:197
-#: order/templates/order/purchase_order_detail.html:266
-#: stock/templates/stock/location.html:42
+#: stock/templates/stock/location.html:42 templates/js/translated/order.js:438
msgid "Create new stock location"
msgstr ""
@@ -3336,7 +3452,7 @@ msgid "Upload File for Purchase Order"
msgstr ""
#: order/templates/order/order_wizard/po_upload.html:18
-#: part/templates/part/bom_upload/upload_file.html:24
+#: part/templates/part/bom_upload/upload_file.html:34
#: part/templates/part/import_wizard/ajax_part_upload.html:10
#: part/templates/part/import_wizard/part_upload.html:21
#, python-format
@@ -3369,7 +3485,7 @@ msgstr ""
#: order/templates/order/order_wizard/select_parts.html:65
#, python-format
-msgid "Select a supplier for %(name)s"
+msgid "Select a supplier for %(name)s"
msgstr ""
#: order/templates/order/order_wizard/select_parts.html:77
@@ -3386,7 +3502,7 @@ msgid "Select existing purchase orders, or create new orders."
msgstr ""
#: order/templates/order/order_wizard/select_pos.html:31
-#: templates/js/translated/order.js:289 templates/js/translated/order.js:397
+#: templates/js/translated/order.js:363 templates/js/translated/order.js:738
msgid "Items"
msgstr ""
@@ -3425,9 +3541,9 @@ msgid "Purchase Order Items"
msgstr ""
#: order/templates/order/purchase_order_detail.html:23
-#: order/templates/order/purchase_order_detail.html:202
+#: order/templates/order/purchase_order_detail.html:203
#: order/templates/order/sales_order_detail.html:23
-#: order/templates/order/sales_order_detail.html:176
+#: order/templates/order/sales_order_detail.html:177
msgid "Add Line Item"
msgstr ""
@@ -3436,49 +3552,6 @@ msgstr ""
msgid "Order Notes"
msgstr ""
-#: order/templates/order/purchase_order_detail.html:238
-#: order/templates/order/sales_order_detail.html:518
-msgid "Edit Line Item"
-msgstr ""
-
-#: order/templates/order/purchase_order_detail.html:248
-#: order/templates/order/sales_order_detail.html:528
-msgid "Delete Line Item"
-msgstr ""
-
-#: order/templates/order/purchase_order_detail.html:279
-msgid "No line items found"
-msgstr ""
-
-#: order/templates/order/purchase_order_detail.html:307
-#: order/templates/order/sales_order_detail.html:353
-msgid "Total"
-msgstr ""
-
-#: order/templates/order/purchase_order_detail.html:360
-#: order/templates/order/sales_order_detail.html:376
-#: templates/js/translated/part.js:1128 templates/js/translated/part.js:1317
-msgid "Unit Price"
-msgstr ""
-
-#: order/templates/order/purchase_order_detail.html:367
-#: order/templates/order/sales_order_detail.html:383
-msgid "Total price"
-msgstr ""
-
-#: order/templates/order/purchase_order_detail.html:431
-#: order/templates/order/sales_order_detail.html:489
-msgid "Edit line item"
-msgstr ""
-
-#: order/templates/order/purchase_order_detail.html:432
-msgid "Delete line item"
-msgstr ""
-
-#: order/templates/order/purchase_order_detail.html:437
-msgid "Receive line item"
-msgstr ""
-
#: order/templates/order/purchase_orders.html:24
#: order/templates/order/sales_orders.html:24
msgid "Print Order Reports"
@@ -3486,18 +3559,18 @@ msgstr ""
#: order/templates/order/receive_parts.html:8
#, python-format
-msgid "Receive outstanding parts for %(order)s - %(desc)s"
+msgid "Receive outstanding parts for %(order)s - %(desc)s"
msgstr ""
-#: order/templates/order/receive_parts.html:14 part/api.py:49
-#: part/models.py:296 part/templates/part/cat_link.html:7
+#: order/templates/order/receive_parts.html:14 part/api.py:54
+#: part/models.py:298 part/templates/part/cat_link.html:7
#: part/templates/part/category.html:108 part/templates/part/category.html:122
#: part/templates/part/category_navbar.html:21
#: part/templates/part/category_navbar.html:24
#: templates/InvenTree/index.html:102 templates/InvenTree/search.html:114
#: templates/InvenTree/settings/navbar.html:83
#: templates/InvenTree/settings/navbar.html:85
-#: templates/js/translated/part.js:987 templates/navbar.html:23
+#: templates/js/translated/part.js:1154 templates/navbar.html:29
#: templates/stats.html:80 templates/stats.html:89 users/models.py:41
msgid "Parts"
msgstr ""
@@ -3511,7 +3584,7 @@ msgid "Order Code"
msgstr ""
#: order/templates/order/receive_parts.html:21
-#: part/templates/part/part_base.html:160 templates/js/translated/part.js:802
+#: part/templates/part/part_base.html:167 templates/js/translated/part.js:949
msgid "On Order"
msgstr ""
@@ -3540,7 +3613,7 @@ msgid "Sales Order Details"
msgstr ""
#: order/templates/order/sales_order_base.html:100
-#: templates/js/translated/order.js:364
+#: templates/js/translated/order.js:705
msgid "Customer Reference"
msgstr ""
@@ -3563,71 +3636,102 @@ msgstr ""
msgid "Sales Order Items"
msgstr ""
-#: order/templates/order/sales_order_detail.html:225
-#: templates/js/translated/bom.js:378 templates/js/translated/build.js:759
-#: templates/js/translated/build.js:1202
+#: order/templates/order/sales_order_detail.html:226
+#: templates/js/translated/bom.js:394 templates/js/translated/build.js:782
+#: templates/js/translated/build.js:1219
msgid "Actions"
msgstr ""
-#: order/templates/order/sales_order_detail.html:232
-#: templates/js/translated/build.js:645 templates/js/translated/build.js:1011
+#: order/templates/order/sales_order_detail.html:233
+#: templates/js/translated/build.js:668 templates/js/translated/build.js:1030
msgid "Edit stock allocation"
msgstr ""
-#: order/templates/order/sales_order_detail.html:233
-#: templates/js/translated/build.js:647 templates/js/translated/build.js:1012
+#: order/templates/order/sales_order_detail.html:234
+#: templates/js/translated/build.js:670 templates/js/translated/build.js:1031
msgid "Delete stock allocation"
msgstr ""
-#: order/templates/order/sales_order_detail.html:306
+#: order/templates/order/sales_order_detail.html:307
msgid "No matching line items"
msgstr ""
-#: order/templates/order/sales_order_detail.html:336
+#: order/templates/order/sales_order_detail.html:337
msgid "ID"
msgstr ""
-#: order/templates/order/sales_order_detail.html:404
-#: templates/js/translated/build.js:710 templates/js/translated/build.js:1007
+#: order/templates/order/sales_order_detail.html:354
+#: templates/js/translated/order.js:481
+msgid "Total"
+msgstr ""
+
+#: order/templates/order/sales_order_detail.html:377
+#: templates/js/translated/order.js:534 templates/js/translated/part.js:1296
+#: templates/js/translated/part.js:1507
+msgid "Unit Price"
+msgstr ""
+
+#: order/templates/order/sales_order_detail.html:384
+#: templates/js/translated/order.js:543
+msgid "Total price"
+msgstr ""
+
+#: order/templates/order/sales_order_detail.html:405
+#: templates/js/translated/build.js:733 templates/js/translated/build.js:1026
msgid "Allocated"
msgstr ""
-#: order/templates/order/sales_order_detail.html:406
+#: order/templates/order/sales_order_detail.html:407
msgid "Fulfilled"
msgstr ""
-#: order/templates/order/sales_order_detail.html:443
+#: order/templates/order/sales_order_detail.html:444
msgid "PO"
msgstr ""
-#: order/templates/order/sales_order_detail.html:473
+#: order/templates/order/sales_order_detail.html:474
msgid "Allocate serial numbers"
msgstr ""
-#: order/templates/order/sales_order_detail.html:476
-#: templates/js/translated/build.js:773
+#: order/templates/order/sales_order_detail.html:477
+#: templates/js/translated/build.js:796
msgid "Allocate stock"
msgstr ""
-#: order/templates/order/sales_order_detail.html:479
+#: order/templates/order/sales_order_detail.html:480
msgid "Purchase stock"
msgstr ""
-#: order/templates/order/sales_order_detail.html:483
-#: templates/js/translated/build.js:766 templates/js/translated/build.js:1210
+#: order/templates/order/sales_order_detail.html:484
+#: templates/js/translated/build.js:789 templates/js/translated/build.js:1227
msgid "Build stock"
msgstr ""
-#: order/templates/order/sales_order_detail.html:486
-#: order/templates/order/sales_order_detail.html:605
+#: order/templates/order/sales_order_detail.html:487
+#: order/templates/order/sales_order_detail.html:606
msgid "Calculate price"
msgstr ""
#: order/templates/order/sales_order_detail.html:490
+#: templates/js/translated/order.js:616
+msgid "Edit line item"
+msgstr ""
+
+#: order/templates/order/sales_order_detail.html:491
msgid "Delete line item "
msgstr ""
-#: order/templates/order/sales_order_detail.html:611
+#: order/templates/order/sales_order_detail.html:519
+#: templates/js/translated/order.js:403
+msgid "Edit Line Item"
+msgstr ""
+
+#: order/templates/order/sales_order_detail.html:529
+#: templates/js/translated/order.js:415
+msgid "Delete Line Item"
+msgstr ""
+
+#: order/templates/order/sales_order_detail.html:612
msgid "Update Unit Price"
msgstr ""
@@ -3814,12 +3918,28 @@ msgstr ""
msgid "Updated {part} unit-price to {price} and quantity to {qty}"
msgstr ""
-#: part/bom.py:133 part/models.py:73 part/models.py:731
-#: part/templates/part/category.html:75 part/templates/part/part_base.html:282
+#: part/api.py:700
+msgid "Must be greater than zero"
+msgstr ""
+
+#: part/api.py:704
+msgid "Must be a valid quantity"
+msgstr ""
+
+#: part/api.py:719
+msgid "Specify location for initial part stock"
+msgstr ""
+
+#: part/api.py:750 part/api.py:754 part/api.py:769 part/api.py:773
+msgid "This field is required"
+msgstr ""
+
+#: part/bom.py:133 part/models.py:75 part/models.py:733
+#: part/templates/part/category.html:75 part/templates/part/part_base.html:290
msgid "Default Location"
msgstr ""
-#: part/bom.py:134 part/templates/part/part_base.html:149
+#: part/bom.py:134 part/templates/part/part_base.html:156
msgid "Available Stock"
msgstr ""
@@ -3879,7 +3999,7 @@ msgstr ""
msgid "Include part supplier data in exported BOM"
msgstr ""
-#: part/forms.py:96 part/models.py:2234
+#: part/forms.py:96 part/models.py:2250
msgid "Parent Part"
msgstr ""
@@ -3923,391 +4043,391 @@ msgstr ""
msgid "Input quantity for price calculation"
msgstr ""
-#: part/models.py:74
+#: part/models.py:76
msgid "Default location for parts in this category"
msgstr ""
-#: part/models.py:77
+#: part/models.py:79
msgid "Default keywords"
msgstr ""
-#: part/models.py:77
+#: part/models.py:79
msgid "Default keywords for parts in this category"
msgstr ""
-#: part/models.py:87 part/models.py:2280
+#: part/models.py:89 part/models.py:2296
#: part/templates/part/part_app_base.html:10
msgid "Part Category"
msgstr ""
-#: part/models.py:88 part/templates/part/category.html:32
+#: part/models.py:90 part/templates/part/category.html:32
#: part/templates/part/category.html:103 templates/InvenTree/search.html:127
#: templates/stats.html:84 users/models.py:40
msgid "Part Categories"
msgstr ""
-#: part/models.py:381
+#: part/models.py:383
msgid "Invalid choice for parent part"
msgstr ""
-#: part/models.py:433 part/models.py:445
+#: part/models.py:435 part/models.py:447
#, python-brace-format
msgid "Part '{p1}' is used in BOM for '{p2}' (recursive)"
msgstr ""
-#: part/models.py:542
+#: part/models.py:544
msgid "Next available serial numbers are"
msgstr ""
-#: part/models.py:546
+#: part/models.py:548
msgid "Next available serial number is"
msgstr ""
-#: part/models.py:551
+#: part/models.py:553
msgid "Most recent serial number is"
msgstr ""
-#: part/models.py:630
+#: part/models.py:632
msgid "Duplicate IPN not allowed in part settings"
msgstr ""
-#: part/models.py:655
+#: part/models.py:657
msgid "Part name"
msgstr ""
-#: part/models.py:662
+#: part/models.py:664
msgid "Is Template"
msgstr ""
-#: part/models.py:663
+#: part/models.py:665
msgid "Is this part a template part?"
msgstr ""
-#: part/models.py:673
+#: part/models.py:675
msgid "Is this part a variant of another part?"
msgstr ""
-#: part/models.py:674
+#: part/models.py:676
msgid "Variant Of"
msgstr ""
-#: part/models.py:680
+#: part/models.py:682
msgid "Part description"
msgstr ""
-#: part/models.py:685 part/templates/part/category.html:82
-#: part/templates/part/part_base.html:251
+#: part/models.py:687 part/templates/part/category.html:82
+#: part/templates/part/part_base.html:259
msgid "Keywords"
msgstr ""
-#: part/models.py:686
+#: part/models.py:688
msgid "Part keywords to improve visibility in search results"
msgstr ""
-#: part/models.py:693 part/models.py:2279
+#: part/models.py:695 part/models.py:2295
#: part/templates/part/set_category.html:15
#: templates/InvenTree/settings/settings.html:167
-#: templates/js/translated/part.js:773
+#: templates/js/translated/part.js:916
msgid "Category"
msgstr ""
-#: part/models.py:694
+#: part/models.py:696
msgid "Part category"
msgstr ""
-#: part/models.py:699 part/templates/part/part_base.html:227
-#: templates/js/translated/part.js:389 templates/js/translated/part.js:617
+#: part/models.py:701 part/templates/part/part_base.html:235
+#: templates/js/translated/part.js:517 templates/js/translated/part.js:749
msgid "IPN"
msgstr ""
-#: part/models.py:700
+#: part/models.py:702
msgid "Internal Part Number"
msgstr ""
-#: part/models.py:706
+#: part/models.py:708
msgid "Part revision or version number"
msgstr ""
-#: part/models.py:707 part/templates/part/part_base.html:244
-#: report/models.py:200 templates/js/translated/part.js:393
+#: part/models.py:709 part/templates/part/part_base.html:252
+#: report/models.py:200 templates/js/translated/part.js:521
msgid "Revision"
msgstr ""
-#: part/models.py:729
+#: part/models.py:731
msgid "Where is this item normally stored?"
msgstr ""
-#: part/models.py:776 part/templates/part/part_base.html:289
+#: part/models.py:778 part/templates/part/part_base.html:297
msgid "Default Supplier"
msgstr ""
-#: part/models.py:777
+#: part/models.py:779
msgid "Default supplier part"
msgstr ""
-#: part/models.py:784
+#: part/models.py:786
msgid "Default Expiry"
msgstr ""
-#: part/models.py:785
+#: part/models.py:787
msgid "Expiry time (in days) for stock items of this part"
msgstr ""
-#: part/models.py:790
+#: part/models.py:792
msgid "Minimum Stock"
msgstr ""
-#: part/models.py:791
+#: part/models.py:793
msgid "Minimum allowed stock level"
msgstr ""
-#: part/models.py:798
+#: part/models.py:800
msgid "Stock keeping units for this part"
msgstr ""
-#: part/models.py:804
+#: part/models.py:806
msgid "Can this part be built from other parts?"
msgstr ""
-#: part/models.py:810
+#: part/models.py:812
msgid "Can this part be used to build other parts?"
msgstr ""
-#: part/models.py:816
+#: part/models.py:818
msgid "Does this part have tracking for unique items?"
msgstr ""
-#: part/models.py:821
+#: part/models.py:823
msgid "Can this part be purchased from external suppliers?"
msgstr ""
-#: part/models.py:826
+#: part/models.py:828
msgid "Can this part be sold to customers?"
msgstr ""
-#: part/models.py:830 templates/js/translated/table_filters.js:21
-#: templates/js/translated/table_filters.js:69
-#: templates/js/translated/table_filters.js:255
-#: templates/js/translated/table_filters.js:324
+#: part/models.py:832 templates/js/translated/table_filters.js:34
+#: templates/js/translated/table_filters.js:82
+#: templates/js/translated/table_filters.js:268
+#: templates/js/translated/table_filters.js:337
msgid "Active"
msgstr ""
-#: part/models.py:831
+#: part/models.py:833
msgid "Is this part active?"
msgstr ""
-#: part/models.py:836
+#: part/models.py:838
msgid "Is this a virtual part, such as a software product or license?"
msgstr ""
-#: part/models.py:841
+#: part/models.py:843
msgid "Part notes - supports Markdown formatting"
msgstr ""
-#: part/models.py:844
+#: part/models.py:846
msgid "BOM checksum"
msgstr ""
-#: part/models.py:844
+#: part/models.py:846
msgid "Stored BOM checksum"
msgstr ""
-#: part/models.py:847
+#: part/models.py:849
msgid "BOM checked by"
msgstr ""
-#: part/models.py:849
+#: part/models.py:851
msgid "BOM checked date"
msgstr ""
-#: part/models.py:853
+#: part/models.py:855
msgid "Creation User"
msgstr ""
-#: part/models.py:1592
+#: part/models.py:1601
msgid "Sell multiple"
msgstr ""
-#: part/models.py:2080
+#: part/models.py:2096
msgid "Test templates can only be created for trackable parts"
msgstr ""
-#: part/models.py:2097
+#: part/models.py:2113
msgid "Test with this name already exists for this part"
msgstr ""
-#: part/models.py:2117 templates/js/translated/part.js:1038
-#: templates/js/translated/stock.js:485
+#: part/models.py:2133 templates/js/translated/part.js:1205
+#: templates/js/translated/stock.js:556
msgid "Test Name"
msgstr ""
-#: part/models.py:2118
+#: part/models.py:2134
msgid "Enter a name for the test"
msgstr ""
-#: part/models.py:2123
+#: part/models.py:2139
msgid "Test Description"
msgstr ""
-#: part/models.py:2124
+#: part/models.py:2140
msgid "Enter description for this test"
msgstr ""
-#: part/models.py:2129 templates/js/translated/part.js:1047
-#: templates/js/translated/table_filters.js:241
+#: part/models.py:2145 templates/js/translated/part.js:1214
+#: templates/js/translated/table_filters.js:254
msgid "Required"
msgstr ""
-#: part/models.py:2130
+#: part/models.py:2146
msgid "Is this test required to pass?"
msgstr ""
-#: part/models.py:2135 templates/js/translated/part.js:1055
+#: part/models.py:2151 templates/js/translated/part.js:1222
msgid "Requires Value"
msgstr ""
-#: part/models.py:2136
+#: part/models.py:2152
msgid "Does this test require a value when adding a test result?"
msgstr ""
-#: part/models.py:2141 templates/js/translated/part.js:1062
+#: part/models.py:2157 templates/js/translated/part.js:1229
msgid "Requires Attachment"
msgstr ""
-#: part/models.py:2142
+#: part/models.py:2158
msgid "Does this test require a file attachment when adding a test result?"
msgstr ""
-#: part/models.py:2153
+#: part/models.py:2169
#, python-brace-format
msgid "Illegal character in template name ({c})"
msgstr ""
-#: part/models.py:2189
+#: part/models.py:2205
msgid "Parameter template name must be unique"
msgstr ""
-#: part/models.py:2197
+#: part/models.py:2213
msgid "Parameter Name"
msgstr ""
-#: part/models.py:2204
+#: part/models.py:2220
msgid "Parameter Units"
msgstr ""
-#: part/models.py:2236 part/models.py:2285 part/models.py:2286
+#: part/models.py:2252 part/models.py:2301 part/models.py:2302
#: templates/InvenTree/settings/settings.html:162
msgid "Parameter Template"
msgstr ""
-#: part/models.py:2238
+#: part/models.py:2254
msgid "Data"
msgstr ""
-#: part/models.py:2238
+#: part/models.py:2254
msgid "Parameter Value"
msgstr ""
-#: part/models.py:2290 templates/InvenTree/settings/settings.html:171
+#: part/models.py:2306 templates/InvenTree/settings/settings.html:171
msgid "Default Value"
msgstr ""
-#: part/models.py:2291
+#: part/models.py:2307
msgid "Default Parameter Value"
msgstr ""
-#: part/models.py:2325
+#: part/models.py:2341
msgid "Select parent part"
msgstr ""
-#: part/models.py:2333
+#: part/models.py:2349
msgid "Sub part"
msgstr ""
-#: part/models.py:2334
+#: part/models.py:2350
msgid "Select part to be used in BOM"
msgstr ""
-#: part/models.py:2340
+#: part/models.py:2356
msgid "BOM quantity for this BOM item"
msgstr ""
-#: part/models.py:2342 templates/js/translated/bom.js:236
-#: templates/js/translated/bom.js:298
+#: part/models.py:2358 templates/js/translated/bom.js:256
+#: templates/js/translated/bom.js:314
msgid "Optional"
msgstr ""
-#: part/models.py:2342
+#: part/models.py:2358
msgid "This BOM item is optional"
msgstr ""
-#: part/models.py:2345
+#: part/models.py:2361
msgid "Overage"
msgstr ""
-#: part/models.py:2346
+#: part/models.py:2362
msgid "Estimated build wastage quantity (absolute or percentage)"
msgstr ""
-#: part/models.py:2349
+#: part/models.py:2365
msgid "BOM item reference"
msgstr ""
-#: part/models.py:2352
+#: part/models.py:2368
msgid "BOM item notes"
msgstr ""
-#: part/models.py:2354
+#: part/models.py:2370
msgid "Checksum"
msgstr ""
-#: part/models.py:2354
+#: part/models.py:2370
msgid "BOM line checksum"
msgstr ""
-#: part/models.py:2358 templates/js/translated/bom.js:315
-#: templates/js/translated/bom.js:322
-#: templates/js/translated/table_filters.js:55
+#: part/models.py:2374 templates/js/translated/bom.js:331
+#: templates/js/translated/bom.js:338
+#: templates/js/translated/table_filters.js:68
msgid "Inherited"
msgstr ""
-#: part/models.py:2359
+#: part/models.py:2375
msgid "This BOM item is inherited by BOMs for variant parts"
msgstr ""
-#: part/models.py:2364 templates/js/translated/bom.js:307
+#: part/models.py:2380 templates/js/translated/bom.js:323
msgid "Allow Variants"
msgstr ""
-#: part/models.py:2365
+#: part/models.py:2381
msgid "Stock items for variant parts can be used for this BOM item"
msgstr ""
-#: part/models.py:2450 stock/models.py:335
+#: part/models.py:2466 stock/models.py:341
msgid "Quantity must be integer value for trackable parts"
msgstr ""
-#: part/models.py:2459 part/models.py:2461
+#: part/models.py:2475 part/models.py:2477
msgid "Sub part must be specified"
msgstr ""
-#: part/models.py:2464
+#: part/models.py:2480
msgid "BOM Item"
msgstr ""
-#: part/models.py:2583
+#: part/models.py:2599
msgid "Part 1"
msgstr ""
-#: part/models.py:2587
+#: part/models.py:2603
msgid "Part 2"
msgstr ""
-#: part/models.py:2587
+#: part/models.py:2603
msgid "Select Related Part"
msgstr ""
-#: part/models.py:2619
+#: part/models.py:2635
msgid "Error creating relationship: check that the part is not related to itself and that the relationship is unique"
msgstr ""
@@ -4317,17 +4437,17 @@ msgstr ""
#: part/templates/part/bom.html:14
#, python-format
-msgid "The BOM for %(part)s has changed, and must be validated.
"
+msgid "The BOM for %(part)s has changed, and must be validated.
"
msgstr ""
#: part/templates/part/bom.html:16
#, python-format
-msgid "The BOM for %(part)s was last checked by %(checker)s on %(check_date)s"
+msgid "The BOM for %(part)s was last checked by %(checker)s on %(check_date)s"
msgstr ""
#: part/templates/part/bom.html:20
#, python-format
-msgid "The BOM for %(part)s has not been validated."
+msgid "The BOM for %(part)s has not been validated."
msgstr ""
#: part/templates/part/bom.html:27
@@ -4374,33 +4494,34 @@ msgstr ""
msgid "Select Part"
msgstr ""
-#: part/templates/part/bom_upload/upload_file.html:7
-msgid "Upload BOM File"
+#: part/templates/part/bom_upload/upload_file.html:13
+#: part/templates/part/bom_upload/upload_file.html:16
+msgid "Return To BOM"
msgstr ""
-#: part/templates/part/bom_upload/upload_file.html:12
+#: part/templates/part/bom_upload/upload_file.html:27
msgid "Upload Bill of Materials"
msgstr ""
-#: part/templates/part/bom_upload/upload_file.html:16
+#: part/templates/part/bom_upload/upload_file.html:46
msgid "Requirements for BOM upload"
msgstr ""
-#: part/templates/part/bom_upload/upload_file.html:18
+#: part/templates/part/bom_upload/upload_file.html:48
msgid "The BOM file must contain the required named columns as provided in the "
msgstr ""
-#: part/templates/part/bom_upload/upload_file.html:18
+#: part/templates/part/bom_upload/upload_file.html:48
msgid "BOM Upload Template"
msgstr ""
-#: part/templates/part/bom_upload/upload_file.html:19
+#: part/templates/part/bom_upload/upload_file.html:49
msgid "Each part must already exist in the database"
msgstr ""
#: part/templates/part/bom_validate.html:6
#, python-format
-msgid "Confirm that the Bill of Materials (BOM) is valid for:
%(part)s"
+msgid "Confirm that the Bill of Materials (BOM) is valid for:
%(part)s"
msgstr ""
#: part/templates/part/bom_validate.html:9
@@ -4435,7 +4556,7 @@ msgstr ""
msgid "Category Description"
msgstr ""
-#: part/templates/part/category.html:88 part/templates/part/category.html:174
+#: part/templates/part/category.html:88 part/templates/part/category.html:175
#: part/templates/part/category_navbar.html:14
#: part/templates/part/category_navbar.html:17
msgid "Subcategories"
@@ -4449,7 +4570,7 @@ msgstr ""
msgid "Export Part Data"
msgstr ""
-#: part/templates/part/category.html:127 part/templates/part/category.html:141
+#: part/templates/part/category.html:127 part/templates/part/category.html:142
msgid "Export"
msgstr ""
@@ -4470,26 +4591,30 @@ msgid "Set Category"
msgstr ""
#: part/templates/part/category.html:141
+msgid "Print Labels"
+msgstr ""
+
+#: part/templates/part/category.html:142
msgid "Export Data"
msgstr ""
-#: part/templates/part/category.html:145
+#: part/templates/part/category.html:146
msgid "View list display"
msgstr ""
-#: part/templates/part/category.html:148
+#: part/templates/part/category.html:149
msgid "View grid display"
msgstr ""
-#: part/templates/part/category.html:164
+#: part/templates/part/category.html:165
msgid "Part Parameters"
msgstr ""
-#: part/templates/part/category.html:253
+#: part/templates/part/category.html:254
msgid "Create Part Category"
msgstr ""
-#: part/templates/part/category.html:279
+#: part/templates/part/category.html:281
msgid "Create Part"
msgstr ""
@@ -4533,7 +4658,7 @@ msgstr ""
msgid "Import Parts"
msgstr ""
-#: part/templates/part/copy_part.html:9 templates/js/translated/part.js:224
+#: part/templates/part/copy_part.html:9 templates/js/translated/part.js:352
msgid "Duplicate Part"
msgstr ""
@@ -4554,7 +4679,7 @@ msgstr ""
#: part/templates/part/create_part.html:17
#, python-format
-msgid "%(full_name)s - %(desc)s (%(match_per)s%% match)"
+msgid "%(full_name)s - %(desc)s (%(match_per)s%% match)"
msgstr ""
#: part/templates/part/detail.html:16
@@ -4563,10 +4688,10 @@ msgstr ""
#: part/templates/part/detail.html:21
#, python-format
-msgid "Showing stock for all variants of %(full_name)s"
+msgid "Showing stock for all variants of %(full_name)s"
msgstr ""
-#: part/templates/part/detail.html:30 part/templates/part/navbar.html:87
+#: part/templates/part/detail.html:30 part/templates/part/navbar.html:99
msgid "Part Test Templates"
msgstr ""
@@ -4586,7 +4711,7 @@ msgstr ""
msgid "Sales Order Allocations"
msgstr ""
-#: part/templates/part/detail.html:130 part/templates/part/navbar.html:21
+#: part/templates/part/detail.html:130 part/templates/part/navbar.html:27
msgid "Part Variants"
msgstr ""
@@ -4602,8 +4727,8 @@ msgstr ""
msgid "Add new parameter"
msgstr ""
-#: part/templates/part/detail.html:182 part/templates/part/navbar.html:95
-#: part/templates/part/navbar.html:98
+#: part/templates/part/detail.html:182 part/templates/part/navbar.html:107
+#: part/templates/part/navbar.html:110
msgid "Related Parts"
msgstr ""
@@ -4611,8 +4736,8 @@ msgstr ""
msgid "Add Related"
msgstr ""
-#: part/templates/part/detail.html:228 part/templates/part/navbar.html:35
-#: part/templates/part/navbar.html:38
+#: part/templates/part/detail.html:228 part/templates/part/navbar.html:43
+#: part/templates/part/navbar.html:46
msgid "Bill of Materials"
msgstr ""
@@ -4644,50 +4769,50 @@ msgstr ""
msgid "Delete manufacturer parts"
msgstr ""
-#: part/templates/part/detail.html:402
+#: part/templates/part/detail.html:502
msgid "Delete selected BOM items?"
msgstr ""
-#: part/templates/part/detail.html:403
+#: part/templates/part/detail.html:503
msgid "All selected BOM items will be deleted"
msgstr ""
-#: part/templates/part/detail.html:454
+#: part/templates/part/detail.html:554
msgid "Create BOM Item"
msgstr ""
-#: part/templates/part/detail.html:589
+#: part/templates/part/detail.html:699
msgid "Add Test Result Template"
msgstr ""
-#: part/templates/part/detail.html:607
+#: part/templates/part/detail.html:716
msgid "Edit Test Result Template"
msgstr ""
-#: part/templates/part/detail.html:619
+#: part/templates/part/detail.html:728
msgid "Delete Test Result Template"
msgstr ""
-#: part/templates/part/detail.html:670
+#: part/templates/part/detail.html:784
msgid "Edit Part Notes"
msgstr ""
-#: part/templates/part/detail.html:903
+#: part/templates/part/detail.html:936
#, python-format
msgid "Purchase Unit Price - %(currency)s"
msgstr ""
-#: part/templates/part/detail.html:915
+#: part/templates/part/detail.html:948
#, python-format
msgid "Unit Price-Cost Difference - %(currency)s"
msgstr ""
-#: part/templates/part/detail.html:927
+#: part/templates/part/detail.html:960
#, python-format
msgid "Supplier Unit Cost - %(currency)s"
msgstr ""
-#: part/templates/part/detail.html:1016
+#: part/templates/part/detail.html:1049
#, python-format
msgid "Unit Price - %(currency)s"
msgstr ""
@@ -4701,19 +4826,19 @@ msgstr ""
msgid "Import Parts from File"
msgstr ""
-#: part/templates/part/navbar.html:24
+#: part/templates/part/navbar.html:30
msgid "Variants"
msgstr ""
-#: part/templates/part/navbar.html:51 part/templates/part/navbar.html:54
+#: part/templates/part/navbar.html:59 part/templates/part/navbar.html:62
msgid "Used In"
msgstr ""
-#: part/templates/part/navbar.html:61
+#: part/templates/part/navbar.html:70
msgid "Prices"
msgstr ""
-#: part/templates/part/navbar.html:90
+#: part/templates/part/navbar.html:102
msgid "Test Templates"
msgstr ""
@@ -4721,195 +4846,204 @@ msgstr ""
msgid "Part List"
msgstr ""
-#: part/templates/part/part_base.html:30
+#: part/templates/part/part_base.html:35
msgid "Part is a template part (variants can be made from this part)"
msgstr ""
-#: part/templates/part/part_base.html:33
+#: part/templates/part/part_base.html:38
msgid "Part can be assembled from other parts"
msgstr ""
-#: part/templates/part/part_base.html:36
+#: part/templates/part/part_base.html:41
msgid "Part can be used in assemblies"
msgstr ""
-#: part/templates/part/part_base.html:39
+#: part/templates/part/part_base.html:44
msgid "Part stock is tracked by serial number"
msgstr ""
-#: part/templates/part/part_base.html:42
+#: part/templates/part/part_base.html:47
msgid "Part can be purchased from external suppliers"
msgstr ""
-#: part/templates/part/part_base.html:45
+#: part/templates/part/part_base.html:50
msgid "Part can be sold to customers"
msgstr ""
-#: part/templates/part/part_base.html:52 part/templates/part/part_base.html:60
+#: part/templates/part/part_base.html:57 part/templates/part/part_base.html:65
msgid "Part is virtual (not a physical part)"
msgstr ""
-#: part/templates/part/part_base.html:53 templates/js/translated/company.js:454
-#: templates/js/translated/company.js:704 templates/js/translated/part.js:304
-#: templates/js/translated/part.js:381
+#: part/templates/part/part_base.html:58 templates/js/translated/company.js:503
+#: templates/js/translated/company.js:759 templates/js/translated/part.js:432
+#: templates/js/translated/part.js:509
msgid "Inactive"
msgstr ""
-#: part/templates/part/part_base.html:68
+#: part/templates/part/part_base.html:73
msgid "Star this part"
msgstr ""
-#: part/templates/part/part_base.html:75
+#: part/templates/part/part_base.html:80
#: stock/templates/stock/item_base.html:75
#: stock/templates/stock/location.html:51
msgid "Barcode actions"
msgstr ""
-#: part/templates/part/part_base.html:77
+#: part/templates/part/part_base.html:82
#: stock/templates/stock/item_base.html:77
#: stock/templates/stock/location.html:53 templates/qr_button.html:1
msgid "Show QR Code"
msgstr ""
-#: part/templates/part/part_base.html:78
+#: part/templates/part/part_base.html:83
#: stock/templates/stock/item_base.html:93
#: stock/templates/stock/location.html:54
msgid "Print Label"
msgstr ""
-#: part/templates/part/part_base.html:83
+#: part/templates/part/part_base.html:89
msgid "Show pricing information"
msgstr ""
-#: part/templates/part/part_base.html:88
+#: part/templates/part/part_base.html:95
#: stock/templates/stock/item_base.html:142
#: stock/templates/stock/location.html:62
msgid "Stock actions"
msgstr ""
-#: part/templates/part/part_base.html:95
+#: part/templates/part/part_base.html:102
msgid "Count part stock"
msgstr ""
-#: part/templates/part/part_base.html:101
+#: part/templates/part/part_base.html:108
msgid "Transfer part stock"
msgstr ""
-#: part/templates/part/part_base.html:118
+#: part/templates/part/part_base.html:125
msgid "Part actions"
msgstr ""
-#: part/templates/part/part_base.html:121
+#: part/templates/part/part_base.html:128
msgid "Duplicate part"
msgstr ""
-#: part/templates/part/part_base.html:124
+#: part/templates/part/part_base.html:131
msgid "Edit part"
msgstr ""
-#: part/templates/part/part_base.html:127
+#: part/templates/part/part_base.html:134
msgid "Delete part"
msgstr ""
-#: part/templates/part/part_base.html:139
+#: part/templates/part/part_base.html:146
#, python-format
msgid "This part is a variant of %(link)s"
msgstr ""
-#: part/templates/part/part_base.html:154
-#: templates/js/translated/table_filters.js:153
+#: part/templates/part/part_base.html:161
+#: templates/js/translated/table_filters.js:166
msgid "In Stock"
msgstr ""
-#: part/templates/part/part_base.html:167 templates/InvenTree/index.html:186
+#: part/templates/part/part_base.html:174 templates/InvenTree/index.html:186
msgid "Required for Build Orders"
msgstr ""
-#: part/templates/part/part_base.html:174
+#: part/templates/part/part_base.html:181
msgid "Required for Sales Orders"
msgstr ""
-#: part/templates/part/part_base.html:181
+#: part/templates/part/part_base.html:188
msgid "Allocated to Orders"
msgstr ""
-#: part/templates/part/part_base.html:196 templates/js/translated/bom.js:336
+#: part/templates/part/part_base.html:203 templates/js/translated/bom.js:352
msgid "Can Build"
msgstr ""
-#: part/templates/part/part_base.html:202 templates/js/translated/part.js:633
-#: templates/js/translated/part.js:806
+#: part/templates/part/part_base.html:209 templates/js/translated/part.js:765
+#: templates/js/translated/part.js:953
msgid "Building"
msgstr ""
-#: part/templates/part/part_base.html:275
+#: part/templates/part/part_base.html:223
+#: part/templates/part/part_base.html:524
+#: part/templates/part/part_base.html:550
+msgid "Show Part Details"
+msgstr ""
+
+#: part/templates/part/part_base.html:283
msgid "Latest Serial Number"
msgstr ""
-#: part/templates/part/part_base.html:383 part/templates/part/prices.html:125
+#: part/templates/part/part_base.html:396 part/templates/part/prices.html:144
msgid "Calculate"
msgstr ""
-#: part/templates/part/part_base.html:426
+#: part/templates/part/part_base.html:439
msgid "No matching images found"
msgstr ""
-#: part/templates/part/part_base.html:506
-#: part/templates/part/part_base.html:531
+#: part/templates/part/part_base.html:519
+#: part/templates/part/part_base.html:544
msgid "Hide Part Details"
msgstr ""
-#: part/templates/part/part_base.html:511
-#: part/templates/part/part_base.html:537
-msgid "Show Part Details"
-msgstr ""
-
#: part/templates/part/part_pricing.html:22 part/templates/part/prices.html:21
msgid "Supplier Pricing"
msgstr ""
#: part/templates/part/part_pricing.html:26
#: part/templates/part/part_pricing.html:52
-#: part/templates/part/part_pricing.html:85
-#: part/templates/part/part_pricing.html:100 part/templates/part/prices.html:25
-#: part/templates/part/prices.html:52 part/templates/part/prices.html:84
-#: part/templates/part/prices.html:101
+#: part/templates/part/part_pricing.html:100
+#: part/templates/part/part_pricing.html:115 part/templates/part/prices.html:25
+#: part/templates/part/prices.html:52 part/templates/part/prices.html:103
+#: part/templates/part/prices.html:120
msgid "Unit Cost"
msgstr ""
#: part/templates/part/part_pricing.html:32
#: part/templates/part/part_pricing.html:58
-#: part/templates/part/part_pricing.html:89
-#: part/templates/part/part_pricing.html:104 part/templates/part/prices.html:32
-#: part/templates/part/prices.html:59 part/templates/part/prices.html:89
-#: part/templates/part/prices.html:106
+#: part/templates/part/part_pricing.html:104
+#: part/templates/part/part_pricing.html:119 part/templates/part/prices.html:32
+#: part/templates/part/prices.html:59 part/templates/part/prices.html:108
+#: part/templates/part/prices.html:125
msgid "Total Cost"
msgstr ""
#: part/templates/part/part_pricing.html:40 part/templates/part/prices.html:40
-#: templates/js/translated/bom.js:291
+#: templates/js/translated/bom.js:307
msgid "No supplier pricing available"
msgstr ""
#: part/templates/part/part_pricing.html:48 part/templates/part/prices.html:49
-#: part/templates/part/prices.html:225
+#: part/templates/part/prices.html:243
msgid "BOM Pricing"
msgstr ""
-#: part/templates/part/part_pricing.html:66 part/templates/part/prices.html:67
+#: part/templates/part/part_pricing.html:65 part/templates/part/prices.html:69
+msgid "Unit Purchase Price"
+msgstr ""
+
+#: part/templates/part/part_pricing.html:71 part/templates/part/prices.html:76
+msgid "Total Purchase Price"
+msgstr ""
+
+#: part/templates/part/part_pricing.html:81 part/templates/part/prices.html:86
msgid "Note: BOM pricing is incomplete for this part"
msgstr ""
-#: part/templates/part/part_pricing.html:73 part/templates/part/prices.html:74
+#: part/templates/part/part_pricing.html:88 part/templates/part/prices.html:93
msgid "No BOM pricing available"
msgstr ""
-#: part/templates/part/part_pricing.html:82 part/templates/part/prices.html:83
+#: part/templates/part/part_pricing.html:97 part/templates/part/prices.html:102
msgid "Internal Price"
msgstr ""
-#: part/templates/part/part_pricing.html:113
-#: part/templates/part/prices.html:115
+#: part/templates/part/part_pricing.html:128
+#: part/templates/part/prices.html:134
msgid "No pricing information is available for this part."
msgstr ""
@@ -4919,7 +5053,7 @@ msgstr ""
#: part/templates/part/partial_delete.html:7
#, python-format
-msgid "Are you sure you want to delete part '%(full_name)s'?"
+msgid "Are you sure you want to delete part '%(full_name)s'?"
msgstr ""
#: part/templates/part/partial_delete.html:12
@@ -4963,53 +5097,53 @@ msgstr ""
msgid "Show BOM cost"
msgstr ""
-#: part/templates/part/prices.html:98
+#: part/templates/part/prices.html:117
msgid "Show sale cost"
msgstr ""
-#: part/templates/part/prices.html:99
+#: part/templates/part/prices.html:118
msgid "Show sale price"
msgstr ""
-#: part/templates/part/prices.html:121
+#: part/templates/part/prices.html:140
msgid "Calculation parameters"
msgstr ""
-#: part/templates/part/prices.html:136 templates/js/translated/bom.js:285
+#: part/templates/part/prices.html:155 templates/js/translated/bom.js:301
msgid "Supplier Cost"
msgstr ""
-#: part/templates/part/prices.html:137 part/templates/part/prices.html:158
-#: part/templates/part/prices.html:183 part/templates/part/prices.html:213
-#: part/templates/part/prices.html:239 part/templates/part/prices.html:267
+#: part/templates/part/prices.html:156 part/templates/part/prices.html:177
+#: part/templates/part/prices.html:201 part/templates/part/prices.html:231
+#: part/templates/part/prices.html:257 part/templates/part/prices.html:285
msgid "Jump to overview"
msgstr ""
-#: part/templates/part/prices.html:162
+#: part/templates/part/prices.html:181
msgid "Stock Pricing"
msgstr ""
-#: part/templates/part/prices.html:172
+#: part/templates/part/prices.html:190
msgid "No stock pricing history is available for this part."
msgstr ""
-#: part/templates/part/prices.html:182
+#: part/templates/part/prices.html:200
msgid "Internal Cost"
msgstr ""
-#: part/templates/part/prices.html:197 part/views.py:1793
+#: part/templates/part/prices.html:215 part/views.py:1801
msgid "Add Internal Price Break"
msgstr ""
-#: part/templates/part/prices.html:212
+#: part/templates/part/prices.html:230
msgid "BOM Cost"
msgstr ""
-#: part/templates/part/prices.html:238
+#: part/templates/part/prices.html:256
msgid "Sale Cost"
msgstr ""
-#: part/templates/part/prices.html:278
+#: part/templates/part/prices.html:296
msgid "No sale pice history available for this part."
msgstr ""
@@ -5017,8 +5151,8 @@ msgstr ""
msgid "Set category for the following parts"
msgstr ""
-#: part/templates/part/stock_count.html:7 templates/js/translated/bom.js:259
-#: templates/js/translated/part.js:623 templates/js/translated/part.js:810
+#: part/templates/part/stock_count.html:7 templates/js/translated/bom.js:278
+#: templates/js/translated/part.js:755 templates/js/translated/part.js:957
msgid "No Stock"
msgstr ""
@@ -5032,10 +5166,10 @@ msgstr ""
#: part/templates/part/variant_part.html:10
#, python-format
-msgid "Create a new variant of template '%(full_name)s'."
+msgid "Create a new variant of template '%(full_name)s'."
msgstr ""
-#: part/templatetags/inventree_extras.py:105
+#: part/templatetags/inventree_extras.py:106
msgid "Unknown database"
msgstr ""
@@ -5116,51 +5250,51 @@ msgstr ""
msgid "Part Pricing"
msgstr ""
-#: part/views.py:1429
+#: part/views.py:1437
msgid "Create Part Parameter Template"
msgstr ""
-#: part/views.py:1439
+#: part/views.py:1447
msgid "Edit Part Parameter Template"
msgstr ""
-#: part/views.py:1446
+#: part/views.py:1454
msgid "Delete Part Parameter Template"
msgstr ""
-#: part/views.py:1494 templates/js/translated/part.js:179
+#: part/views.py:1502 templates/js/translated/part.js:303
msgid "Edit Part Category"
msgstr ""
-#: part/views.py:1532
+#: part/views.py:1540
msgid "Delete Part Category"
msgstr ""
-#: part/views.py:1538
+#: part/views.py:1546
msgid "Part category was deleted"
msgstr ""
-#: part/views.py:1547
+#: part/views.py:1555
msgid "Create Category Parameter Template"
msgstr ""
-#: part/views.py:1648
+#: part/views.py:1656
msgid "Edit Category Parameter Template"
msgstr ""
-#: part/views.py:1704
+#: part/views.py:1712
msgid "Delete Category Parameter Template"
msgstr ""
-#: part/views.py:1726
+#: part/views.py:1734
msgid "Added new price break"
msgstr ""
-#: part/views.py:1802
+#: part/views.py:1810
msgid "Edit Internal Price Break"
msgstr ""
-#: part/views.py:1810
+#: part/views.py:1818
msgid "Delete Internal Price Break"
msgstr ""
@@ -5266,17 +5400,17 @@ msgid "Test Results"
msgstr ""
#: report/templates/report/inventree_test_report_base.html:88
-#: stock/models.py:1796
+#: stock/models.py:1807
msgid "Test"
msgstr ""
#: report/templates/report/inventree_test_report_base.html:89
-#: stock/models.py:1802
+#: stock/models.py:1813
msgid "Result"
msgstr ""
#: report/templates/report/inventree_test_report_base.html:92
-#: templates/js/translated/order.js:279 templates/js/translated/stock.js:1382
+#: templates/js/translated/order.js:353 templates/js/translated/stock.js:1523
msgid "Date"
msgstr ""
@@ -5288,51 +5422,51 @@ msgstr ""
msgid "Fail"
msgstr ""
-#: stock/api.py:145
+#: stock/api.py:146
msgid "Request must contain list of stock items"
msgstr ""
-#: stock/api.py:153
+#: stock/api.py:154
msgid "Improperly formatted data"
msgstr ""
-#: stock/api.py:161
+#: stock/api.py:162
msgid "Each entry must contain a valid integer primary-key"
msgstr ""
-#: stock/api.py:167
+#: stock/api.py:168
msgid "Primary key does not match valid stock item"
msgstr ""
-#: stock/api.py:177
+#: stock/api.py:178
msgid "Invalid quantity value"
msgstr ""
-#: stock/api.py:182
+#: stock/api.py:183
msgid "Quantity must not be less than zero"
msgstr ""
-#: stock/api.py:210
+#: stock/api.py:211
#, python-brace-format
msgid "Updated stock for {n} items"
msgstr ""
-#: stock/api.py:246 stock/api.py:279
+#: stock/api.py:247 stock/api.py:280
msgid "Specified quantity exceeds stock quantity"
msgstr ""
-#: stock/api.py:269
+#: stock/api.py:270
msgid "Valid location must be specified"
msgstr ""
-#: stock/api.py:289
+#: stock/api.py:290
#, python-brace-format
msgid "Moved {n} parts to {loc}"
msgstr ""
-#: stock/forms.py:79 stock/forms.py:307 stock/models.py:550
+#: stock/forms.py:79 stock/forms.py:307 stock/models.py:556
#: stock/templates/stock/item_base.html:395
-#: templates/js/translated/stock.js:1025
+#: templates/js/translated/stock.js:967
msgid "Expiry Date"
msgstr ""
@@ -5384,258 +5518,266 @@ msgstr ""
msgid "Confirm removal of installed stock items"
msgstr ""
-#: stock/models.py:57 stock/models.py:587
+#: stock/models.py:57 stock/models.py:593
msgid "Owner"
msgstr ""
-#: stock/models.py:58 stock/models.py:588
+#: stock/models.py:58 stock/models.py:594
msgid "Select Owner"
msgstr ""
-#: stock/models.py:316
+#: stock/models.py:322
msgid "StockItem with this serial number already exists"
msgstr ""
-#: stock/models.py:352
+#: stock/models.py:358
#, python-brace-format
msgid "Part type ('{pf}') must be {pe}"
msgstr ""
-#: stock/models.py:362 stock/models.py:371
+#: stock/models.py:368 stock/models.py:377
msgid "Quantity must be 1 for item with a serial number"
msgstr ""
-#: stock/models.py:363
+#: stock/models.py:369
msgid "Serial number cannot be set if quantity greater than 1"
msgstr ""
-#: stock/models.py:385
+#: stock/models.py:391
msgid "Item cannot belong to itself"
msgstr ""
-#: stock/models.py:391
+#: stock/models.py:397
msgid "Item must have a build reference if is_building=True"
msgstr ""
-#: stock/models.py:398
+#: stock/models.py:404
msgid "Build reference does not point to the same part object"
msgstr ""
-#: stock/models.py:440
+#: stock/models.py:446
msgid "Parent Stock Item"
msgstr ""
-#: stock/models.py:449
+#: stock/models.py:455
msgid "Base part"
msgstr ""
-#: stock/models.py:458
+#: stock/models.py:464
msgid "Select a matching supplier part for this stock item"
msgstr ""
-#: stock/models.py:463 stock/templates/stock/stock_app_base.html:8
+#: stock/models.py:469 stock/templates/stock/stock_app_base.html:8
msgid "Stock Location"
msgstr ""
-#: stock/models.py:466
+#: stock/models.py:472
msgid "Where is this stock item located?"
msgstr ""
-#: stock/models.py:473
+#: stock/models.py:479
msgid "Packaging this stock item is stored in"
msgstr ""
-#: stock/models.py:478 stock/templates/stock/item_base.html:284
+#: stock/models.py:484 stock/templates/stock/item_base.html:284
msgid "Installed In"
msgstr ""
-#: stock/models.py:481
+#: stock/models.py:487
msgid "Is this item installed in another item?"
msgstr ""
-#: stock/models.py:497
+#: stock/models.py:503
msgid "Serial number for this item"
msgstr ""
-#: stock/models.py:509
+#: stock/models.py:515
msgid "Batch code for this stock item"
msgstr ""
-#: stock/models.py:513
+#: stock/models.py:519
msgid "Stock Quantity"
msgstr ""
-#: stock/models.py:522
+#: stock/models.py:528
msgid "Source Build"
msgstr ""
-#: stock/models.py:524
+#: stock/models.py:530
msgid "Build for this stock item"
msgstr ""
-#: stock/models.py:535
+#: stock/models.py:541
msgid "Source Purchase Order"
msgstr ""
-#: stock/models.py:538
+#: stock/models.py:544
msgid "Purchase order for this stock item"
msgstr ""
-#: stock/models.py:544
+#: stock/models.py:550
msgid "Destination Sales Order"
msgstr ""
-#: stock/models.py:551
+#: stock/models.py:557
msgid "Expiry date for stock item. Stock will be considered expired after this date"
msgstr ""
-#: stock/models.py:564
+#: stock/models.py:570
msgid "Delete on deplete"
msgstr ""
-#: stock/models.py:564
+#: stock/models.py:570
msgid "Delete this Stock Item when stock is depleted"
msgstr ""
-#: stock/models.py:574 stock/templates/stock/item.html:98
+#: stock/models.py:580 stock/templates/stock/item.html:99
#: stock/templates/stock/navbar.html:54
msgid "Stock Item Notes"
msgstr ""
-#: stock/models.py:583
+#: stock/models.py:589
msgid "Single unit purchase price at time of purchase"
msgstr ""
-#: stock/models.py:1051
-msgid "Part is not set as trackable"
+#: stock/models.py:599
+msgid "Scheduled for deletion"
msgstr ""
-#: stock/models.py:1057
-msgid "Quantity must be integer"
+#: stock/models.py:600
+msgid "This StockItem will be deleted by the background worker"
msgstr ""
#: stock/models.py:1063
+msgid "Part is not set as trackable"
+msgstr ""
+
+#: stock/models.py:1069
+msgid "Quantity must be integer"
+msgstr ""
+
+#: stock/models.py:1075
#, python-brace-format
msgid "Quantity must not exceed available stock quantity ({n})"
msgstr ""
-#: stock/models.py:1066
+#: stock/models.py:1078
msgid "Serial numbers must be a list of integers"
msgstr ""
-#: stock/models.py:1069
+#: stock/models.py:1081
msgid "Quantity does not match serial numbers"
msgstr ""
-#: stock/models.py:1076
+#: stock/models.py:1088
#, python-brace-format
msgid "Serial numbers already exist: {exists}"
msgstr ""
-#: stock/models.py:1234
+#: stock/models.py:1246
msgid "StockItem cannot be moved as it is not in stock"
msgstr ""
-#: stock/models.py:1716
+#: stock/models.py:1727
msgid "Entry notes"
msgstr ""
-#: stock/models.py:1773
+#: stock/models.py:1784
msgid "Value must be provided for this test"
msgstr ""
-#: stock/models.py:1779
+#: stock/models.py:1790
msgid "Attachment must be uploaded for this test"
msgstr ""
-#: stock/models.py:1797
+#: stock/models.py:1808
msgid "Test name"
msgstr ""
-#: stock/models.py:1803 templates/js/translated/table_filters.js:231
+#: stock/models.py:1814 templates/js/translated/table_filters.js:244
msgid "Test result"
msgstr ""
-#: stock/models.py:1809
+#: stock/models.py:1820
msgid "Test output value"
msgstr ""
-#: stock/models.py:1816
+#: stock/models.py:1827
msgid "Test result attachment"
msgstr ""
-#: stock/models.py:1822
+#: stock/models.py:1833
msgid "Test notes"
msgstr ""
-#: stock/templates/stock/item.html:16
+#: stock/templates/stock/item.html:17
msgid "Stock Tracking Information"
msgstr ""
-#: stock/templates/stock/item.html:29
+#: stock/templates/stock/item.html:30
msgid "New Entry"
msgstr ""
-#: stock/templates/stock/item.html:42
+#: stock/templates/stock/item.html:43
msgid "Child Stock Items"
msgstr ""
-#: stock/templates/stock/item.html:49
+#: stock/templates/stock/item.html:50
msgid "This stock item does not have any child items"
msgstr ""
-#: stock/templates/stock/item.html:57 stock/templates/stock/navbar.html:19
+#: stock/templates/stock/item.html:58 stock/templates/stock/navbar.html:19
#: stock/templates/stock/navbar.html:22
msgid "Test Data"
msgstr ""
-#: stock/templates/stock/item.html:65
+#: stock/templates/stock/item.html:66
msgid "Delete Test Data"
msgstr ""
-#: stock/templates/stock/item.html:69
+#: stock/templates/stock/item.html:70
msgid "Add Test Data"
msgstr ""
-#: stock/templates/stock/item.html:72 stock/templates/stock/item_base.html:95
+#: stock/templates/stock/item.html:73 stock/templates/stock/item_base.html:95
msgid "Test Report"
msgstr ""
-#: stock/templates/stock/item.html:119 stock/templates/stock/navbar.html:27
+#: stock/templates/stock/item.html:120 stock/templates/stock/navbar.html:27
msgid "Installed Stock Items"
msgstr ""
-#: stock/templates/stock/item.html:124 stock/views.py:534
+#: stock/templates/stock/item.html:125 stock/views.py:534
msgid "Install Stock Item"
msgstr ""
-#: stock/templates/stock/item.html:299 stock/templates/stock/item.html:324
+#: stock/templates/stock/item.html:301 stock/templates/stock/item.html:326
msgid "Add Test Result"
msgstr ""
-#: stock/templates/stock/item.html:344
+#: stock/templates/stock/item.html:346
msgid "Edit Test Result"
msgstr ""
-#: stock/templates/stock/item.html:358
+#: stock/templates/stock/item.html:360
msgid "Delete Test Result"
msgstr ""
#: stock/templates/stock/item_base.html:33
#: stock/templates/stock/item_base.html:399
-#: templates/js/translated/table_filters.js:212
+#: templates/js/translated/table_filters.js:225
msgid "Expired"
msgstr ""
#: stock/templates/stock/item_base.html:43
#: stock/templates/stock/item_base.html:401
-#: templates/js/translated/table_filters.js:218
+#: templates/js/translated/table_filters.js:231
msgid "Stale"
msgstr ""
#: stock/templates/stock/item_base.html:80
-#: templates/js/translated/barcode.js:309
-#: templates/js/translated/barcode.js:314
+#: templates/js/translated/barcode.js:331
+#: templates/js/translated/barcode.js:336
msgid "Unlink Barcode"
msgstr ""
@@ -5768,7 +5910,7 @@ msgid "next page"
msgstr ""
#: stock/templates/stock/item_base.html:303
-#: templates/js/translated/build.js:628
+#: templates/js/translated/build.js:651
msgid "No location set"
msgstr ""
@@ -5795,7 +5937,7 @@ msgid "This StockItem expires on %(item.expiry_date)s"
msgstr ""
#: stock/templates/stock/item_base.html:408
-#: templates/js/translated/stock.js:1032
+#: templates/js/translated/stock.js:980
msgid "Last Updated"
msgstr ""
@@ -5825,7 +5967,7 @@ msgstr ""
#: stock/templates/stock/item_delete.html:12
#, python-format
-msgid "This will remove %(qty)s units of %(full_name)s from stock."
+msgid "This will remove %(qty)s units of %(full_name)s from stock."
msgstr ""
#: stock/templates/stock/item_install.html:8
@@ -5975,7 +6117,7 @@ msgstr ""
#: stock/templates/stock/stockitem_convert.html:8
#, python-format
-msgid "This stock item is current an instance of %(part)s"
+msgid "This stock item is current an instance of %(part)s"
msgstr ""
#: stock/templates/stock/stockitem_convert.html:9
@@ -6039,7 +6181,7 @@ msgstr ""
msgid "Uninstall Stock Items"
msgstr ""
-#: stock/views.py:780 templates/js/translated/stock.js:282
+#: stock/views.py:780 templates/js/translated/stock.js:353
msgid "Confirm stock adjustment"
msgstr ""
@@ -6059,7 +6201,7 @@ msgstr ""
msgid "Serialize Stock"
msgstr ""
-#: stock/views.py:1143 templates/js/translated/build.js:365
+#: stock/views.py:1143 templates/js/translated/build.js:392
msgid "Create new Stock Item"
msgstr ""
@@ -6171,11 +6313,11 @@ msgstr ""
msgid "Enter a search query"
msgstr ""
-#: templates/InvenTree/search.html:268 templates/js/translated/stock.js:629
+#: templates/InvenTree/search.html:268 templates/js/translated/stock.js:699
msgid "Shipped to customer"
msgstr ""
-#: templates/InvenTree/search.html:271 templates/js/translated/stock.js:639
+#: templates/InvenTree/search.html:271 templates/js/translated/stock.js:709
msgid "No stock location set"
msgstr ""
@@ -6240,7 +6382,7 @@ msgstr ""
#: templates/InvenTree/settings/navbar.html:27
#: templates/InvenTree/settings/navbar.html:29
-#: templates/js/translated/tables.js:351 templates/search_form.html:6
+#: templates/js/translated/tables.js:366 templates/search_form.html:6
#: templates/search_form.html:8
msgid "Search"
msgstr ""
@@ -6257,7 +6399,7 @@ msgstr ""
#: templates/InvenTree/settings/navbar.html:46
#: templates/InvenTree/settings/navbar.html:48
-#: templates/InvenTree/settings/settings.html:8 templates/navbar.html:84
+#: templates/InvenTree/settings/settings.html:8 templates/navbar.html:94
msgid "Settings"
msgstr ""
@@ -6332,16 +6474,16 @@ msgid "No category parameter templates found"
msgstr ""
#: templates/InvenTree/settings/settings.html:174
-#: templates/InvenTree/settings/settings.html:271
+#: templates/InvenTree/settings/settings.html:273
msgid "Edit Template"
msgstr ""
#: templates/InvenTree/settings/settings.html:175
-#: templates/InvenTree/settings/settings.html:272
+#: templates/InvenTree/settings/settings.html:274
msgid "Delete Template"
msgstr ""
-#: templates/InvenTree/settings/settings.html:251
+#: templates/InvenTree/settings/settings.html:253
msgid "No part parameter templates found"
msgstr ""
@@ -6358,6 +6500,7 @@ msgid "Account Settings"
msgstr ""
#: templates/InvenTree/settings/user.html:15
+#: templates/js/translated/helpers.js:26
msgid "Edit"
msgstr ""
@@ -6436,65 +6579,69 @@ msgstr ""
msgid "InvenTree Version"
msgstr ""
-#: templates/about.html:26
+#: templates/about.html:27
+msgid "Development Version"
+msgstr ""
+
+#: templates/about.html:30
msgid "Up to Date"
msgstr ""
-#: templates/about.html:28
+#: templates/about.html:32
msgid "Update Available"
msgstr ""
-#: templates/about.html:34
-msgid "API Version"
-msgstr ""
-
-#: templates/about.html:39
-msgid "Python Version"
-msgstr ""
-
-#: templates/about.html:44
-msgid "Django Version"
-msgstr ""
-
-#: templates/about.html:51
+#: templates/about.html:42
msgid "Commit Hash"
msgstr ""
-#: templates/about.html:58
+#: templates/about.html:49
msgid "Commit Date"
msgstr ""
-#: templates/about.html:63
+#: templates/about.html:55
msgid "InvenTree Documentation"
msgstr ""
-#: templates/about.html:68
+#: templates/about.html:60
+msgid "API Version"
+msgstr ""
+
+#: templates/about.html:65
+msgid "Python Version"
+msgstr ""
+
+#: templates/about.html:70
+msgid "Django Version"
+msgstr ""
+
+#: templates/about.html:75
msgid "View Code on GitHub"
msgstr ""
-#: templates/about.html:73
+#: templates/about.html:80
msgid "Credits"
msgstr ""
-#: templates/about.html:78
+#: templates/about.html:85
msgid "Mobile App"
msgstr ""
-#: templates/about.html:83
+#: templates/about.html:90
msgid "Submit Bug Report"
msgstr ""
-#: templates/about.html:90 templates/clip.html:4
+#: templates/about.html:97 templates/clip.html:4
msgid "copy to clipboard"
msgstr ""
-#: templates/about.html:90
+#: templates/about.html:97
msgid "copy version information"
msgstr ""
-#: templates/about.html:100 templates/js/translated/modals.js:33
-#: templates/js/translated/modals.js:567 templates/js/translated/modals.js:661
-#: templates/js/translated/modals.js:957 templates/modals.html:29
+#: templates/about.html:107 templates/js/translated/modals.js:50
+#: templates/js/translated/modals.js:584 templates/js/translated/modals.js:678
+#: templates/js/translated/modals.js:971 templates/modals.html:29
#: templates/modals.html:54
msgid "Close"
msgstr ""
@@ -6515,1358 +6662,1390 @@ msgstr ""
msgid "Remote image must not exceed maximum allowable file size"
msgstr ""
-#: templates/js/report.js:47 templates/js/translated/report.js:47
+#: templates/js/report.js:47 templates/js/translated/report.js:67
msgid "items selected"
msgstr ""
-#: templates/js/report.js:55 templates/js/translated/report.js:55
+#: templates/js/report.js:55 templates/js/translated/report.js:75
msgid "Select Report Template"
msgstr ""
-#: templates/js/report.js:70 templates/js/translated/report.js:70
+#: templates/js/report.js:70 templates/js/translated/report.js:90
msgid "Select Test Report Template"
msgstr ""
-#: templates/js/report.js:98 templates/js/translated/label.js:10
-#: templates/js/translated/report.js:98 templates/js/translated/stock.js:244
+#: templates/js/report.js:98 templates/js/translated/label.js:29
+#: templates/js/translated/report.js:118 templates/js/translated/stock.js:313
msgid "Select Stock Items"
msgstr ""
-#: templates/js/report.js:99 templates/js/translated/report.js:99
+#: templates/js/report.js:99 templates/js/translated/report.js:119
msgid "Stock item(s) must be selected before printing reports"
msgstr ""
#: templates/js/report.js:116 templates/js/report.js:169
#: templates/js/report.js:223 templates/js/report.js:277
-#: templates/js/report.js:331 templates/js/translated/report.js:116
-#: templates/js/translated/report.js:169 templates/js/translated/report.js:223
-#: templates/js/translated/report.js:277 templates/js/translated/report.js:331
+#: templates/js/report.js:331 templates/js/translated/report.js:136
+#: templates/js/translated/report.js:189 templates/js/translated/report.js:243
+#: templates/js/translated/report.js:297 templates/js/translated/report.js:351
msgid "No Reports Found"
msgstr ""
-#: templates/js/report.js:117 templates/js/translated/report.js:117
+#: templates/js/report.js:117 templates/js/translated/report.js:137
msgid "No report templates found which match selected stock item(s)"
msgstr ""
-#: templates/js/report.js:152 templates/js/translated/report.js:152
+#: templates/js/report.js:152 templates/js/translated/report.js:172
msgid "Select Builds"
msgstr ""
-#: templates/js/report.js:153 templates/js/translated/report.js:153
+#: templates/js/report.js:153 templates/js/translated/report.js:173
msgid "Build(s) must be selected before printing reports"
msgstr ""
-#: templates/js/report.js:170 templates/js/translated/report.js:170
+#: templates/js/report.js:170 templates/js/translated/report.js:190
msgid "No report templates found which match selected build(s)"
msgstr ""
-#: templates/js/report.js:205 templates/js/translated/label.js:115
-#: templates/js/translated/report.js:205
+#: templates/js/report.js:205 templates/js/translated/label.js:134
+#: templates/js/translated/report.js:225
msgid "Select Parts"
msgstr ""
-#: templates/js/report.js:206 templates/js/translated/report.js:206
+#: templates/js/report.js:206 templates/js/translated/report.js:226
msgid "Part(s) must be selected before printing reports"
msgstr ""
-#: templates/js/report.js:224 templates/js/translated/report.js:224
+#: templates/js/report.js:224 templates/js/translated/report.js:244
msgid "No report templates found which match selected part(s)"
msgstr ""
-#: templates/js/report.js:259 templates/js/translated/report.js:259
+#: templates/js/report.js:259 templates/js/translated/report.js:279
msgid "Select Purchase Orders"
msgstr ""
-#: templates/js/report.js:260 templates/js/translated/report.js:260
+#: templates/js/report.js:260 templates/js/translated/report.js:280
msgid "Purchase Order(s) must be selected before printing report"
msgstr ""
#: templates/js/report.js:278 templates/js/report.js:332
-#: templates/js/translated/report.js:278 templates/js/translated/report.js:332
+#: templates/js/translated/report.js:298 templates/js/translated/report.js:352
msgid "No report templates found which match selected orders"
msgstr ""
-#: templates/js/report.js:313 templates/js/translated/report.js:313
+#: templates/js/report.js:313 templates/js/translated/report.js:333
msgid "Select Sales Orders"
msgstr ""
-#: templates/js/report.js:314 templates/js/translated/report.js:314
+#: templates/js/report.js:314 templates/js/translated/report.js:334
msgid "Sales Order(s) must be selected before printing report"
msgstr ""
-#: templates/js/translated/api.js:161 templates/js/translated/modals.js:1027
+#: templates/js/translated/api.js:174 templates/js/translated/modals.js:1041
msgid "No Response"
msgstr ""
-#: templates/js/translated/api.js:162 templates/js/translated/modals.js:1028
+#: templates/js/translated/api.js:175 templates/js/translated/modals.js:1042
msgid "No response from the InvenTree server"
msgstr ""
-#: templates/js/translated/api.js:167
+#: templates/js/translated/api.js:181
msgid "Error 400: Bad request"
msgstr ""
-#: templates/js/translated/api.js:168
+#: templates/js/translated/api.js:182
msgid "API request returned error code 400"
msgstr ""
-#: templates/js/translated/api.js:171 templates/js/translated/modals.js:1037
+#: templates/js/translated/api.js:186 templates/js/translated/modals.js:1051
msgid "Error 401: Not Authenticated"
msgstr ""
-#: templates/js/translated/api.js:172 templates/js/translated/modals.js:1038
+#: templates/js/translated/api.js:187 templates/js/translated/modals.js:1052
msgid "Authentication credentials not supplied"
msgstr ""
-#: templates/js/translated/api.js:175 templates/js/translated/modals.js:1042
+#: templates/js/translated/api.js:191 templates/js/translated/modals.js:1056
msgid "Error 403: Permission Denied"
msgstr ""
-#: templates/js/translated/api.js:176 templates/js/translated/modals.js:1043
+#: templates/js/translated/api.js:192 templates/js/translated/modals.js:1057
msgid "You do not have the required permissions to access this function"
msgstr ""
-#: templates/js/translated/api.js:179 templates/js/translated/modals.js:1047
+#: templates/js/translated/api.js:196 templates/js/translated/modals.js:1061
msgid "Error 404: Resource Not Found"
msgstr ""
-#: templates/js/translated/api.js:180 templates/js/translated/modals.js:1048
+#: templates/js/translated/api.js:197 templates/js/translated/modals.js:1062
msgid "The requested resource could not be located on the server"
msgstr ""
-#: templates/js/translated/api.js:183 templates/js/translated/modals.js:1052
+#: templates/js/translated/api.js:201 templates/js/translated/modals.js:1066
msgid "Error 408: Timeout"
msgstr ""
-#: templates/js/translated/api.js:184 templates/js/translated/modals.js:1053
+#: templates/js/translated/api.js:202 templates/js/translated/modals.js:1067
msgid "Connection timeout while requesting data from server"
msgstr ""
-#: templates/js/translated/api.js:187
+#: templates/js/translated/api.js:205
msgid "Unhandled Error Code"
msgstr ""
-#: templates/js/translated/api.js:188
+#: templates/js/translated/api.js:206
msgid "Error code"
msgstr ""
-#: templates/js/translated/attachment.js:16
+#: templates/js/translated/attachment.js:27
msgid "No attachments found"
msgstr ""
-#: templates/js/translated/attachment.js:56
+#: templates/js/translated/attachment.js:91
msgid "Upload Date"
msgstr ""
-#: templates/js/translated/attachment.js:69
+#: templates/js/translated/attachment.js:104
msgid "Edit attachment"
msgstr ""
-#: templates/js/translated/attachment.js:76
+#: templates/js/translated/attachment.js:111
msgid "Delete attachment"
msgstr ""
-#: templates/js/translated/barcode.js:8
+#: templates/js/translated/barcode.js:30
msgid "Scan barcode data here using wedge scanner"
msgstr ""
-#: templates/js/translated/barcode.js:10
+#: templates/js/translated/barcode.js:32
msgid "Enter barcode data"
msgstr ""
-#: templates/js/translated/barcode.js:14
+#: templates/js/translated/barcode.js:36
msgid "Barcode"
msgstr ""
-#: templates/js/translated/barcode.js:32
+#: templates/js/translated/barcode.js:54
msgid "Enter optional notes for stock transfer"
msgstr ""
-#: templates/js/translated/barcode.js:33
+#: templates/js/translated/barcode.js:55
msgid "Enter notes"
msgstr ""
-#: templates/js/translated/barcode.js:71
+#: templates/js/translated/barcode.js:93
msgid "Server error"
msgstr ""
-#: templates/js/translated/barcode.js:92
+#: templates/js/translated/barcode.js:114
msgid "Unknown response from server"
msgstr ""
-#: templates/js/translated/barcode.js:119
-#: templates/js/translated/modals.js:1017
+#: templates/js/translated/barcode.js:141
+#: templates/js/translated/modals.js:1031
msgid "Invalid server response"
msgstr ""
-#: templates/js/translated/barcode.js:212
+#: templates/js/translated/barcode.js:234
msgid "Scan barcode data below"
msgstr ""
-#: templates/js/translated/barcode.js:270
+#: templates/js/translated/barcode.js:281 templates/navbar.html:65
+msgid "Scan Barcode"
+msgstr ""
+
+#: templates/js/translated/barcode.js:292
msgid "No URL in response"
msgstr ""
-#: templates/js/translated/barcode.js:288
+#: templates/js/translated/barcode.js:310
msgid "Link Barcode to Stock Item"
msgstr ""
-#: templates/js/translated/barcode.js:311
+#: templates/js/translated/barcode.js:333
msgid "This will remove the association between this stock item and the barcode"
msgstr ""
-#: templates/js/translated/barcode.js:317
+#: templates/js/translated/barcode.js:339
msgid "Unlink"
msgstr ""
-#: templates/js/translated/barcode.js:376 templates/js/translated/stock.js:220
+#: templates/js/translated/barcode.js:398 templates/js/translated/stock.js:289
msgid "Remove stock item"
msgstr ""
-#: templates/js/translated/barcode.js:418
+#: templates/js/translated/barcode.js:440
msgid "Check Stock Items into Location"
msgstr ""
-#: templates/js/translated/barcode.js:422
-#: templates/js/translated/barcode.js:547
+#: templates/js/translated/barcode.js:444
+#: templates/js/translated/barcode.js:571
msgid "Check In"
msgstr ""
-#: templates/js/translated/barcode.js:462
-#: templates/js/translated/barcode.js:586
+#: templates/js/translated/barcode.js:486
+#: templates/js/translated/barcode.js:610
msgid "Error transferring stock"
msgstr ""
-#: templates/js/translated/barcode.js:481
+#: templates/js/translated/barcode.js:505
msgid "Stock Item already scanned"
msgstr ""
-#: templates/js/translated/barcode.js:485
+#: templates/js/translated/barcode.js:509
msgid "Stock Item already in this location"
msgstr ""
-#: templates/js/translated/barcode.js:492
+#: templates/js/translated/barcode.js:516
msgid "Added stock item"
msgstr ""
-#: templates/js/translated/barcode.js:499
+#: templates/js/translated/barcode.js:523
msgid "Barcode does not match Stock Item"
msgstr ""
-#: templates/js/translated/barcode.js:542
+#: templates/js/translated/barcode.js:566
msgid "Check Into Location"
msgstr ""
-#: templates/js/translated/barcode.js:605
+#: templates/js/translated/barcode.js:629
msgid "Barcode does not match a valid location"
msgstr ""
-#: templates/js/translated/bom.js:195 templates/js/translated/build.js:1152
+#: templates/js/translated/bom.js:215 templates/js/translated/build.js:1169
msgid "Open subassembly"
msgstr ""
-#: templates/js/translated/bom.js:269
+#: templates/js/translated/bom.js:287
msgid "Purchase Price Range"
msgstr ""
-#: templates/js/translated/bom.js:277
+#: templates/js/translated/bom.js:294
msgid "Purchase Price Average"
msgstr ""
-#: templates/js/translated/bom.js:326 templates/js/translated/bom.js:412
+#: templates/js/translated/bom.js:342 templates/js/translated/bom.js:428
msgid "View BOM"
msgstr ""
-#: templates/js/translated/bom.js:386
+#: templates/js/translated/bom.js:402
msgid "Validate BOM Item"
msgstr ""
-#: templates/js/translated/bom.js:388
+#: templates/js/translated/bom.js:404
msgid "This line has been validated"
msgstr ""
-#: templates/js/translated/bom.js:390 templates/js/translated/bom.js:555
+#: templates/js/translated/bom.js:406 templates/js/translated/bom.js:569
msgid "Edit BOM Item"
msgstr ""
-#: templates/js/translated/bom.js:392 templates/js/translated/bom.js:539
+#: templates/js/translated/bom.js:408 templates/js/translated/bom.js:554
msgid "Delete BOM Item"
msgstr ""
-#: templates/js/translated/bom.js:483 templates/js/translated/build.js:458
-#: templates/js/translated/build.js:1250
+#: templates/js/translated/bom.js:499 templates/js/translated/build.js:483
+#: templates/js/translated/build.js:1267
msgid "No BOM items found"
msgstr ""
-#: templates/js/translated/build.js:42
+#: templates/js/translated/build.js:69
msgid "Edit Build Order"
msgstr ""
-#: templates/js/translated/build.js:68
+#: templates/js/translated/build.js:95
msgid "Create Build Order"
msgstr ""
-#: templates/js/translated/build.js:100
+#: templates/js/translated/build.js:127
msgid "Auto-allocate stock items to this output"
msgstr ""
-#: templates/js/translated/build.js:108
+#: templates/js/translated/build.js:135
msgid "Unallocate stock from build output"
msgstr ""
-#: templates/js/translated/build.js:118
+#: templates/js/translated/build.js:145
msgid "Complete build output"
msgstr ""
-#: templates/js/translated/build.js:127
+#: templates/js/translated/build.js:154
msgid "Delete build output"
msgstr ""
-#: templates/js/translated/build.js:222
+#: templates/js/translated/build.js:249
msgid "No build order allocations found"
msgstr ""
-#: templates/js/translated/build.js:260 templates/js/translated/order.js:471
+#: templates/js/translated/build.js:287 templates/js/translated/order.js:813
msgid "Location not specified"
msgstr ""
-#: templates/js/translated/build.js:364 templates/stock_table.html:20
+#: templates/js/translated/build.js:391 templates/stock_table.html:20
msgid "New Stock Item"
msgstr ""
-#: templates/js/translated/build.js:679
+#: templates/js/translated/build.js:702
msgid "Required Part"
msgstr ""
-#: templates/js/translated/build.js:700
+#: templates/js/translated/build.js:723
msgid "Quantity Per"
msgstr ""
-#: templates/js/translated/build.js:770 templates/js/translated/build.js:1214
+#: templates/js/translated/build.js:793 templates/js/translated/build.js:1231
#: templates/stock_table.html:59
msgid "Order stock"
msgstr ""
-#: templates/js/translated/build.js:823
+#: templates/js/translated/build.js:846
msgid "No builds matching query"
msgstr ""
-#: templates/js/translated/build.js:840 templates/js/translated/part.js:711
-#: templates/js/translated/part.js:956 templates/js/translated/stock.js:883
-#: templates/js/translated/stock.js:1336
+#: templates/js/translated/build.js:863 templates/js/translated/part.js:845
+#: templates/js/translated/part.js:1123 templates/js/translated/stock.js:783
+#: templates/js/translated/stock.js:1477
msgid "Select"
msgstr ""
-#: templates/js/translated/build.js:860
+#: templates/js/translated/build.js:883
msgid "Build order is overdue"
msgstr ""
-#: templates/js/translated/build.js:924 templates/js/translated/stock.js:1558
+#: templates/js/translated/build.js:944 templates/js/translated/stock.js:1696
msgid "No user information"
msgstr ""
-#: templates/js/translated/build.js:939
+#: templates/js/translated/build.js:956
msgid "No information"
msgstr ""
-#: templates/js/translated/build.js:989
+#: templates/js/translated/build.js:1007
msgid "No parts allocated for"
msgstr ""
-#: templates/js/translated/company.js:34
+#: templates/js/translated/company.js:65
msgid "Add Manufacturer"
msgstr ""
-#: templates/js/translated/company.js:47 templates/js/translated/company.js:136
+#: templates/js/translated/company.js:78 templates/js/translated/company.js:176
msgid "Add Manufacturer Part"
msgstr ""
-#: templates/js/translated/company.js:59
+#: templates/js/translated/company.js:99
msgid "Edit Manufacturer Part"
msgstr ""
-#: templates/js/translated/company.js:68
+#: templates/js/translated/company.js:108
msgid "Delete Manufacturer Part"
msgstr ""
-#: templates/js/translated/company.js:124 templates/js/translated/order.js:58
+#: templates/js/translated/company.js:164 templates/js/translated/order.js:86
msgid "Add Supplier"
msgstr ""
-#: templates/js/translated/company.js:152
+#: templates/js/translated/company.js:192
msgid "Add Supplier Part"
msgstr ""
-#: templates/js/translated/company.js:162
+#: templates/js/translated/company.js:207
msgid "Edit Supplier Part"
msgstr ""
-#: templates/js/translated/company.js:172
+#: templates/js/translated/company.js:217
msgid "Delete Supplier Part"
msgstr ""
-#: templates/js/translated/company.js:219
+#: templates/js/translated/company.js:264
msgid "Edit Company"
msgstr ""
-#: templates/js/translated/company.js:240
+#: templates/js/translated/company.js:285
msgid "Add new Company"
msgstr ""
-#: templates/js/translated/company.js:317
+#: templates/js/translated/company.js:362
msgid "Parts Supplied"
msgstr ""
-#: templates/js/translated/company.js:326
+#: templates/js/translated/company.js:371
msgid "Parts Manufactured"
msgstr ""
-#: templates/js/translated/company.js:339
+#: templates/js/translated/company.js:385
msgid "No company information found"
msgstr ""
-#: templates/js/translated/company.js:357
+#: templates/js/translated/company.js:404
msgid "The following manufacturer parts will be deleted"
msgstr ""
-#: templates/js/translated/company.js:374
+#: templates/js/translated/company.js:421
msgid "Delete Manufacturer Parts"
msgstr ""
-#: templates/js/translated/company.js:427
+#: templates/js/translated/company.js:475
msgid "No manufacturer parts found"
msgstr ""
-#: templates/js/translated/company.js:446
-#: templates/js/translated/company.js:696 templates/js/translated/part.js:288
-#: templates/js/translated/part.js:373
+#: templates/js/translated/company.js:495
+#: templates/js/translated/company.js:751 templates/js/translated/part.js:416
+#: templates/js/translated/part.js:501
msgid "Template part"
msgstr ""
-#: templates/js/translated/company.js:450
-#: templates/js/translated/company.js:700 templates/js/translated/part.js:292
-#: templates/js/translated/part.js:377
+#: templates/js/translated/company.js:499
+#: templates/js/translated/company.js:755 templates/js/translated/part.js:420
+#: templates/js/translated/part.js:505
msgid "Assembled part"
msgstr ""
-#: templates/js/translated/company.js:574 templates/js/translated/part.js:462
+#: templates/js/translated/company.js:626 templates/js/translated/part.js:593
msgid "No parameters found"
msgstr ""
-#: templates/js/translated/company.js:610 templates/js/translated/part.js:503
+#: templates/js/translated/company.js:663 templates/js/translated/part.js:635
msgid "Edit parameter"
msgstr ""
-#: templates/js/translated/company.js:611 templates/js/translated/part.js:504
+#: templates/js/translated/company.js:664 templates/js/translated/part.js:636
msgid "Delete parameter"
msgstr ""
-#: templates/js/translated/company.js:630 templates/js/translated/part.js:521
+#: templates/js/translated/company.js:683 templates/js/translated/part.js:653
msgid "Edit Parameter"
msgstr ""
-#: templates/js/translated/company.js:641 templates/js/translated/part.js:533
+#: templates/js/translated/company.js:694 templates/js/translated/part.js:665
msgid "Delete Parameter"
msgstr ""
-#: templates/js/translated/company.js:677
+#: templates/js/translated/company.js:731
msgid "No supplier parts found"
msgstr ""
-#: templates/js/translated/filters.js:167
-#: templates/js/translated/filters.js:404
+#: templates/js/translated/filters.js:178
+#: templates/js/translated/filters.js:402
msgid "true"
msgstr ""
-#: templates/js/translated/filters.js:171
-#: templates/js/translated/filters.js:405
+#: templates/js/translated/filters.js:182
+#: templates/js/translated/filters.js:403
msgid "false"
msgstr ""
-#: templates/js/translated/filters.js:193
+#: templates/js/translated/filters.js:204
msgid "Select filter"
msgstr ""
-#: templates/js/translated/filters.js:268
+#: templates/js/translated/filters.js:279
msgid "Reload data"
msgstr ""
-#: templates/js/translated/filters.js:270
+#: templates/js/translated/filters.js:281
msgid "Add new filter"
msgstr ""
-#: templates/js/translated/filters.js:273
+#: templates/js/translated/filters.js:284
msgid "Clear all filters"
msgstr ""
-#: templates/js/translated/filters.js:303
+#: templates/js/translated/filters.js:312
msgid "Create filter"
msgstr ""
-#: templates/js/translated/forms.js:289 templates/js/translated/forms.js:302
-#: templates/js/translated/forms.js:314 templates/js/translated/forms.js:326
+#: templates/js/translated/forms.js:323 templates/js/translated/forms.js:336
+#: templates/js/translated/forms.js:348 templates/js/translated/forms.js:360
msgid "Action Prohibited"
msgstr ""
-#: templates/js/translated/forms.js:290
+#: templates/js/translated/forms.js:324
msgid "Create operation not allowed"
msgstr ""
-#: templates/js/translated/forms.js:303
+#: templates/js/translated/forms.js:337
msgid "Update operation not allowed"
msgstr ""
-#: templates/js/translated/forms.js:315
+#: templates/js/translated/forms.js:349
msgid "Delete operation not allowed"
msgstr ""
-#: templates/js/translated/forms.js:327
+#: templates/js/translated/forms.js:361
msgid "View operation not allowed"
msgstr ""
-#: templates/js/translated/forms.js:865 templates/modals.html:21
+#: templates/js/translated/forms.js:889 templates/modals.html:21
#: templates/modals.html:47
msgid "Form errors exist"
msgstr ""
-#: templates/js/translated/forms.js:1258
+#: templates/js/translated/forms.js:1379
msgid "Searching"
msgstr ""
-#: templates/js/translated/forms.js:1423
+#: templates/js/translated/forms.js:1593
msgid "Clear input"
msgstr ""
-#: templates/js/translated/label.js:11
-msgid "Stock item(s) must be selected before printing labels"
+#: templates/js/translated/helpers.js:19
+msgid "YES"
msgstr ""
-#: templates/js/translated/label.js:29 templates/js/translated/label.js:79
-#: templates/js/translated/label.js:134
-msgid "No Labels Found"
+#: templates/js/translated/helpers.js:21
+msgid "NO"
msgstr ""
#: templates/js/translated/label.js:30
+msgid "Stock item(s) must be selected before printing labels"
+msgstr ""
+
+#: templates/js/translated/label.js:48 templates/js/translated/label.js:98
+#: templates/js/translated/label.js:153
+msgid "No Labels Found"
+msgstr ""
+
+#: templates/js/translated/label.js:49
msgid "No labels found which match selected stock item(s)"
msgstr ""
-#: templates/js/translated/label.js:61
+#: templates/js/translated/label.js:80
msgid "Select Stock Locations"
msgstr ""
-#: templates/js/translated/label.js:62
+#: templates/js/translated/label.js:81
msgid "Stock location(s) must be selected before printing labels"
msgstr ""
-#: templates/js/translated/label.js:80
+#: templates/js/translated/label.js:99
msgid "No labels found which match selected stock location(s)"
msgstr ""
-#: templates/js/translated/label.js:116
+#: templates/js/translated/label.js:135
msgid "Part(s) must be selected before printing labels"
msgstr ""
-#: templates/js/translated/label.js:135
+#: templates/js/translated/label.js:154
msgid "No labels found which match the selected part(s)"
msgstr ""
-#: templates/js/translated/label.js:209
+#: templates/js/translated/label.js:228
msgid "stock items selected"
msgstr ""
-#: templates/js/translated/label.js:217
+#: templates/js/translated/label.js:236
msgid "Select Label"
msgstr ""
-#: templates/js/translated/label.js:232
+#: templates/js/translated/label.js:251
msgid "Select Label Template"
msgstr ""
-#: templates/js/translated/modals.js:59 templates/js/translated/modals.js:103
-#: templates/js/translated/modals.js:593
+#: templates/js/translated/modals.js:76 templates/js/translated/modals.js:120
+#: templates/js/translated/modals.js:610
msgid "Cancel"
msgstr ""
-#: templates/js/translated/modals.js:60 templates/js/translated/modals.js:102
-#: templates/js/translated/modals.js:660 templates/js/translated/modals.js:956
+#: templates/js/translated/modals.js:77 templates/js/translated/modals.js:119
+#: templates/js/translated/modals.js:677 templates/js/translated/modals.js:970
#: templates/modals.html:30 templates/modals.html:55
msgid "Submit"
msgstr ""
-#: templates/js/translated/modals.js:101
+#: templates/js/translated/modals.js:118
msgid "Form Title"
msgstr ""
-#: templates/js/translated/modals.js:380
+#: templates/js/translated/modals.js:397
msgid "Waiting for server..."
msgstr ""
-#: templates/js/translated/modals.js:539
+#: templates/js/translated/modals.js:556
msgid "Show Error Information"
msgstr ""
-#: templates/js/translated/modals.js:592
+#: templates/js/translated/modals.js:609
msgid "Accept"
msgstr ""
-#: templates/js/translated/modals.js:649
+#: templates/js/translated/modals.js:666
msgid "Loading Data"
msgstr ""
-#: templates/js/translated/modals.js:907
+#: templates/js/translated/modals.js:922
msgid "Invalid response from server"
msgstr ""
-#: templates/js/translated/modals.js:907
+#: templates/js/translated/modals.js:922
msgid "Form data missing from server response"
msgstr ""
-#: templates/js/translated/modals.js:920
+#: templates/js/translated/modals.js:934
msgid "Error posting form data"
msgstr ""
-#: templates/js/translated/modals.js:1017
+#: templates/js/translated/modals.js:1031
msgid "JSON response missing form data"
msgstr ""
-#: templates/js/translated/modals.js:1032
+#: templates/js/translated/modals.js:1046
msgid "Error 400: Bad Request"
msgstr ""
-#: templates/js/translated/modals.js:1033
+#: templates/js/translated/modals.js:1047
msgid "Server returned error code 400"
msgstr ""
-#: templates/js/translated/modals.js:1056
+#: templates/js/translated/modals.js:1070
msgid "Error requesting form data"
msgstr ""
-#: templates/js/translated/model_renderers.js:38
+#: templates/js/translated/model_renderers.js:40
msgid "Company ID"
msgstr ""
-#: templates/js/translated/model_renderers.js:78
+#: templates/js/translated/model_renderers.js:82
msgid "Location ID"
msgstr ""
-#: templates/js/translated/model_renderers.js:95
+#: templates/js/translated/model_renderers.js:99
msgid "Build ID"
msgstr ""
-#: templates/js/translated/model_renderers.js:114
+#: templates/js/translated/model_renderers.js:119
msgid "Part ID"
msgstr ""
-#: templates/js/translated/model_renderers.js:163
+#: templates/js/translated/model_renderers.js:171
msgid "Category ID"
msgstr ""
-#: templates/js/translated/model_renderers.js:199
+#: templates/js/translated/model_renderers.js:208
msgid "Manufacturer Part ID"
msgstr ""
-#: templates/js/translated/model_renderers.js:227
+#: templates/js/translated/model_renderers.js:237
msgid "Supplier Part ID"
msgstr ""
-#: templates/js/translated/order.js:17
+#: templates/js/translated/order.js:45
msgid "Add Customer"
msgstr ""
-#: templates/js/translated/order.js:42
+#: templates/js/translated/order.js:70
msgid "Create Sales Order"
msgstr ""
-#: templates/js/translated/order.js:222
+#: templates/js/translated/order.js:295
msgid "No purchase orders found"
msgstr ""
-#: templates/js/translated/order.js:246 templates/js/translated/order.js:341
+#: templates/js/translated/order.js:320 templates/js/translated/order.js:682
msgid "Order is overdue"
msgstr ""
-#: templates/js/translated/order.js:318
+#: templates/js/translated/order.js:452
+msgid "No line items found"
+msgstr ""
+
+#: templates/js/translated/order.js:617
+msgid "Delete line item"
+msgstr ""
+
+#: templates/js/translated/order.js:621
+msgid "Receive line item"
+msgstr ""
+
+#: templates/js/translated/order.js:658
msgid "No sales orders found"
msgstr ""
-#: templates/js/translated/order.js:355
+#: templates/js/translated/order.js:696
msgid "Invalid Customer"
msgstr ""
-#: templates/js/translated/order.js:432
+#: templates/js/translated/order.js:774
msgid "No sales order allocations found"
msgstr ""
-#: templates/js/translated/part.js:10
-msgid "YES"
-msgstr ""
-
-#: templates/js/translated/part.js:12
-msgid "NO"
-msgstr ""
-
-#: templates/js/translated/part.js:22
-msgid "Add Part Category"
-msgstr ""
-
-#: templates/js/translated/part.js:53
+#: templates/js/translated/part.js:49
msgid "Part Attributes"
msgstr ""
-#: templates/js/translated/part.js:96
+#: templates/js/translated/part.js:53
msgid "Part Creation Options"
msgstr ""
-#: templates/js/translated/part.js:102
-msgid "Initial Stock Quantity"
-msgstr ""
-
-#: templates/js/translated/part.js:103
-msgid "Initialize part stock with specified quantity"
-msgstr ""
-
-#: templates/js/translated/part.js:109
-msgid "Copy Category Parameters"
-msgstr ""
-
-#: templates/js/translated/part.js:110
-msgid "Copy parameter templates from selected part category"
-msgstr ""
-
-#: templates/js/translated/part.js:120
+#: templates/js/translated/part.js:57
msgid "Part Duplication Options"
msgstr ""
-#: templates/js/translated/part.js:131
-msgid "Copy Image"
+#: templates/js/translated/part.js:61
+msgid "Supplier Options"
msgstr ""
-#: templates/js/translated/part.js:132
-msgid "Copy image from original part"
+#: templates/js/translated/part.js:75
+msgid "Add Part Category"
msgstr ""
-#: templates/js/translated/part.js:138
-msgid "Copy BOM"
+#: templates/js/translated/part.js:159
+msgid "Create Initial Stock"
msgstr ""
-#: templates/js/translated/part.js:139
-msgid "Copy bill of materials from original part"
+#: templates/js/translated/part.js:160
+msgid "Create an initial stock item for this part"
msgstr ""
-#: templates/js/translated/part.js:145
-msgid "Copy Parameters"
+#: templates/js/translated/part.js:167
+msgid "Initial Stock Quantity"
msgstr ""
-#: templates/js/translated/part.js:146
-msgid "Copy parameter data from original part"
+#: templates/js/translated/part.js:168
+msgid "Specify initial stock quantity for this part"
msgstr ""
-#: templates/js/translated/part.js:158
-msgid "Parent part category"
+#: templates/js/translated/part.js:175 templates/js/translated/stock.js:330
+msgid "Select destination stock location"
+msgstr ""
+
+#: templates/js/translated/part.js:186
+msgid "Copy Category Parameters"
+msgstr ""
+
+#: templates/js/translated/part.js:187
+msgid "Copy parameter templates from selected part category"
+msgstr ""
+
+#: templates/js/translated/part.js:195
+msgid "Add Supplier Data"
msgstr ""
#: templates/js/translated/part.js:196
+msgid "Create initial supplier data for this part"
+msgstr ""
+
+#: templates/js/translated/part.js:252
+msgid "Copy Image"
+msgstr ""
+
+#: templates/js/translated/part.js:253
+msgid "Copy image from original part"
+msgstr ""
+
+#: templates/js/translated/part.js:260
+msgid "Copy BOM"
+msgstr ""
+
+#: templates/js/translated/part.js:261
+msgid "Copy bill of materials from original part"
+msgstr ""
+
+#: templates/js/translated/part.js:268
+msgid "Copy Parameters"
+msgstr ""
+
+#: templates/js/translated/part.js:269
+msgid "Copy parameter data from original part"
+msgstr ""
+
+#: templates/js/translated/part.js:282
+msgid "Parent part category"
+msgstr ""
+
+#: templates/js/translated/part.js:323
msgid "Edit Part"
msgstr ""
-#: templates/js/translated/part.js:280 templates/js/translated/part.js:365
+#: templates/js/translated/part.js:408 templates/js/translated/part.js:493
msgid "Trackable part"
msgstr ""
-#: templates/js/translated/part.js:284 templates/js/translated/part.js:369
+#: templates/js/translated/part.js:412 templates/js/translated/part.js:497
msgid "Virtual part"
msgstr ""
-#: templates/js/translated/part.js:296
+#: templates/js/translated/part.js:424
msgid "Starred part"
msgstr ""
-#: templates/js/translated/part.js:300
+#: templates/js/translated/part.js:428
msgid "Salable part"
msgstr ""
-#: templates/js/translated/part.js:414
+#: templates/js/translated/part.js:543
msgid "No variants found"
msgstr ""
-#: templates/js/translated/part.js:601 templates/js/translated/part.js:840
+#: templates/js/translated/part.js:732 templates/js/translated/part.js:994
msgid "No parts found"
msgstr ""
-#: templates/js/translated/part.js:779
+#: templates/js/translated/part.js:921
msgid "No category"
msgstr ""
-#: templates/js/translated/part.js:797
-#: templates/js/translated/table_filters.js:337
+#: templates/js/translated/part.js:944
+#: templates/js/translated/table_filters.js:350
msgid "Low stock"
msgstr ""
-#: templates/js/translated/part.js:981 templates/js/translated/stock.js:1360
+#: templates/js/translated/part.js:1148 templates/js/translated/stock.js:1501
msgid "Path"
msgstr ""
-#: templates/js/translated/part.js:1024
+#: templates/js/translated/part.js:1191
msgid "No test templates matching query"
msgstr ""
-#: templates/js/translated/part.js:1075 templates/js/translated/stock.js:443
+#: templates/js/translated/part.js:1242 templates/js/translated/stock.js:514
msgid "Edit test result"
msgstr ""
-#: templates/js/translated/part.js:1076 templates/js/translated/stock.js:444
+#: templates/js/translated/part.js:1243 templates/js/translated/stock.js:515
msgid "Delete test result"
msgstr ""
-#: templates/js/translated/part.js:1082
+#: templates/js/translated/part.js:1249
msgid "This test is defined for a parent part"
msgstr ""
-#: templates/js/translated/part.js:1107
+#: templates/js/translated/part.js:1274
#, python-brace-format
msgid "No ${human_name} information found"
msgstr ""
-#: templates/js/translated/part.js:1160
+#: templates/js/translated/part.js:1329
#, python-brace-format
msgid "Edit ${human_name}"
msgstr ""
-#: templates/js/translated/part.js:1161
+#: templates/js/translated/part.js:1330
#, python-brace-format
msgid "Delete ${human_name}"
msgstr ""
-#: templates/js/translated/part.js:1261
+#: templates/js/translated/part.js:1431
msgid "Single Price"
msgstr ""
-#: templates/js/translated/part.js:1280
+#: templates/js/translated/part.js:1450
msgid "Single Price Difference"
msgstr ""
-#: templates/js/translated/stock.js:9
+#: templates/js/translated/stock.js:66
msgid "Parent stock location"
msgstr ""
-#: templates/js/translated/stock.js:39
+#: templates/js/translated/stock.js:96
msgid "Export Stock"
msgstr ""
-#: templates/js/translated/stock.js:42
+#: templates/js/translated/stock.js:99
msgid "Format"
msgstr ""
-#: templates/js/translated/stock.js:43
+#: templates/js/translated/stock.js:100
msgid "Select file format"
msgstr ""
-#: templates/js/translated/stock.js:55
+#: templates/js/translated/stock.js:124
msgid "Include Sublocations"
msgstr ""
-#: templates/js/translated/stock.js:56
+#: templates/js/translated/stock.js:125
msgid "Include stock items in sublocations"
msgstr ""
-#: templates/js/translated/stock.js:98
+#: templates/js/translated/stock.js:167
msgid "Transfer Stock"
msgstr ""
-#: templates/js/translated/stock.js:99
+#: templates/js/translated/stock.js:168
msgid "Move"
msgstr ""
-#: templates/js/translated/stock.js:105
+#: templates/js/translated/stock.js:174
msgid "Count Stock"
msgstr ""
-#: templates/js/translated/stock.js:106
+#: templates/js/translated/stock.js:175
msgid "Count"
msgstr ""
-#: templates/js/translated/stock.js:110
+#: templates/js/translated/stock.js:179
msgid "Remove Stock"
msgstr ""
-#: templates/js/translated/stock.js:111
+#: templates/js/translated/stock.js:180
msgid "Take"
msgstr ""
-#: templates/js/translated/stock.js:115
+#: templates/js/translated/stock.js:184
msgid "Add Stock"
msgstr ""
-#: templates/js/translated/stock.js:116 users/models.py:190
+#: templates/js/translated/stock.js:185 users/models.py:190
msgid "Add"
msgstr ""
-#: templates/js/translated/stock.js:120 templates/stock_table.html:63
+#: templates/js/translated/stock.js:189 templates/stock_table.html:63
msgid "Delete Stock"
msgstr ""
-#: templates/js/translated/stock.js:209
+#: templates/js/translated/stock.js:278
msgid "Quantity cannot be adjusted for serialized stock"
msgstr ""
-#: templates/js/translated/stock.js:209
+#: templates/js/translated/stock.js:278
msgid "Specify stock quantity"
msgstr ""
-#: templates/js/translated/stock.js:245
+#: templates/js/translated/stock.js:314
msgid "You must select at least one available stock item"
msgstr ""
-#: templates/js/translated/stock.js:261
-msgid "Select destination stock location"
-msgstr ""
-
-#: templates/js/translated/stock.js:269
+#: templates/js/translated/stock.js:339
msgid "Stock transaction notes"
msgstr ""
-#: templates/js/translated/stock.js:406
+#: templates/js/translated/stock.js:477
msgid "PASS"
msgstr ""
-#: templates/js/translated/stock.js:408
+#: templates/js/translated/stock.js:479
msgid "FAIL"
msgstr ""
-#: templates/js/translated/stock.js:413
+#: templates/js/translated/stock.js:484
msgid "NO RESULT"
msgstr ""
-#: templates/js/translated/stock.js:439
+#: templates/js/translated/stock.js:510
msgid "Add test result"
msgstr ""
-#: templates/js/translated/stock.js:465
+#: templates/js/translated/stock.js:536
msgid "No test results found"
msgstr ""
-#: templates/js/translated/stock.js:513
+#: templates/js/translated/stock.js:584
msgid "Test Date"
msgstr ""
-#: templates/js/translated/stock.js:621
+#: templates/js/translated/stock.js:691
msgid "In production"
msgstr ""
-#: templates/js/translated/stock.js:625
+#: templates/js/translated/stock.js:695
msgid "Installed in Stock Item"
msgstr ""
-#: templates/js/translated/stock.js:633
+#: templates/js/translated/stock.js:703
msgid "Assigned to Sales Order"
msgstr ""
-#: templates/js/translated/stock.js:709
-msgid "No stock items matching query"
-msgstr ""
-
-#: templates/js/translated/stock.js:729
-msgid "items"
-msgstr ""
-
-#: templates/js/translated/stock.js:821
-msgid "batches"
-msgstr ""
-
-#: templates/js/translated/stock.js:848
-msgid "locations"
-msgstr ""
-
-#: templates/js/translated/stock.js:850
-msgid "Undefined location"
-msgstr ""
-
-#: templates/js/translated/stock.js:951
+#: templates/js/translated/stock.js:865
msgid "Stock item is in production"
msgstr ""
-#: templates/js/translated/stock.js:956
+#: templates/js/translated/stock.js:870
msgid "Stock item assigned to sales order"
msgstr ""
-#: templates/js/translated/stock.js:959
+#: templates/js/translated/stock.js:873
msgid "Stock item assigned to customer"
msgstr ""
-#: templates/js/translated/stock.js:963
+#: templates/js/translated/stock.js:877
msgid "Stock item has expired"
msgstr ""
-#: templates/js/translated/stock.js:965
+#: templates/js/translated/stock.js:879
msgid "Stock item will expire soon"
msgstr ""
-#: templates/js/translated/stock.js:969
+#: templates/js/translated/stock.js:883
msgid "Stock item has been allocated"
msgstr ""
-#: templates/js/translated/stock.js:973
+#: templates/js/translated/stock.js:887
msgid "Stock item has been installed in another item"
msgstr ""
-#: templates/js/translated/stock.js:980
+#: templates/js/translated/stock.js:894
msgid "Stock item has been rejected"
msgstr ""
-#: templates/js/translated/stock.js:984
+#: templates/js/translated/stock.js:896
msgid "Stock item is lost"
msgstr ""
-#: templates/js/translated/stock.js:987
+#: templates/js/translated/stock.js:898
msgid "Stock item is destroyed"
msgstr ""
-#: templates/js/translated/stock.js:991
-#: templates/js/translated/table_filters.js:148
+#: templates/js/translated/stock.js:902
+#: templates/js/translated/table_filters.js:161
msgid "Depleted"
msgstr ""
-#: templates/js/translated/stock.js:1020
+#: templates/js/translated/stock.js:956
msgid "Stocktake"
msgstr ""
-#: templates/js/translated/stock.js:1073
+#: templates/js/translated/stock.js:1029
msgid "Supplier part not specified"
msgstr ""
-#: templates/js/translated/stock.js:1223
+#: templates/js/translated/stock.js:1067
+msgid "No stock items matching query"
+msgstr ""
+
+#: templates/js/translated/stock.js:1088 templates/js/translated/stock.js:1136
+msgid "items"
+msgstr ""
+
+#: templates/js/translated/stock.js:1176
+msgid "batches"
+msgstr ""
+
+#: templates/js/translated/stock.js:1203
+msgid "locations"
+msgstr ""
+
+#: templates/js/translated/stock.js:1205
+msgid "Undefined location"
+msgstr ""
+
+#: templates/js/translated/stock.js:1364
msgid "Stock Status"
msgstr ""
-#: templates/js/translated/stock.js:1238
+#: templates/js/translated/stock.js:1379
msgid "Set Stock Status"
msgstr ""
-#: templates/js/translated/stock.js:1252
+#: templates/js/translated/stock.js:1393
msgid "Select Status Code"
msgstr ""
-#: templates/js/translated/stock.js:1253
+#: templates/js/translated/stock.js:1394
msgid "Status code must be selected"
msgstr ""
-#: templates/js/translated/stock.js:1392
+#: templates/js/translated/stock.js:1533
msgid "Invalid date"
msgstr ""
-#: templates/js/translated/stock.js:1439
+#: templates/js/translated/stock.js:1580
msgid "Location no longer exists"
msgstr ""
-#: templates/js/translated/stock.js:1458
+#: templates/js/translated/stock.js:1599
msgid "Purchase order no longer exists"
msgstr ""
-#: templates/js/translated/stock.js:1477
+#: templates/js/translated/stock.js:1618
msgid "Customer no longer exists"
msgstr ""
-#: templates/js/translated/stock.js:1495
+#: templates/js/translated/stock.js:1636
msgid "Stock item no longer exists"
msgstr ""
-#: templates/js/translated/stock.js:1518
+#: templates/js/translated/stock.js:1659
msgid "Added"
msgstr ""
-#: templates/js/translated/stock.js:1526
+#: templates/js/translated/stock.js:1667
msgid "Removed"
msgstr ""
-#: templates/js/translated/stock.js:1570
+#: templates/js/translated/stock.js:1708
msgid "Edit tracking entry"
msgstr ""
-#: templates/js/translated/stock.js:1571
+#: templates/js/translated/stock.js:1709
msgid "Delete tracking entry"
msgstr ""
-#: templates/js/translated/stock.js:1715
+#: templates/js/translated/stock.js:1833
msgid "No installed items"
msgstr ""
-#: templates/js/translated/stock.js:1738
+#: templates/js/translated/stock.js:1856
msgid "Serial"
msgstr ""
-#: templates/js/translated/stock.js:1766
+#: templates/js/translated/stock.js:1884
msgid "Uninstall Stock Item"
msgstr ""
-#: templates/js/translated/table_filters.js:43
+#: templates/js/translated/table_filters.js:56
msgid "Trackable Part"
msgstr ""
-#: templates/js/translated/table_filters.js:47
+#: templates/js/translated/table_filters.js:60
msgid "Assembled Part"
msgstr ""
-#: templates/js/translated/table_filters.js:51
+#: templates/js/translated/table_filters.js:64
msgid "Validated"
msgstr ""
-#: templates/js/translated/table_filters.js:59
+#: templates/js/translated/table_filters.js:72
msgid "Allow Variant Stock"
msgstr ""
-#: templates/js/translated/table_filters.js:79
-#: templates/js/translated/table_filters.js:143
+#: templates/js/translated/table_filters.js:92
+#: templates/js/translated/table_filters.js:156
msgid "Include sublocations"
msgstr ""
-#: templates/js/translated/table_filters.js:80
+#: templates/js/translated/table_filters.js:93
msgid "Include locations"
msgstr ""
-#: templates/js/translated/table_filters.js:90
-#: templates/js/translated/table_filters.js:91
-#: templates/js/translated/table_filters.js:314
+#: templates/js/translated/table_filters.js:103
+#: templates/js/translated/table_filters.js:104
+#: templates/js/translated/table_filters.js:327
msgid "Include subcategories"
msgstr ""
-#: templates/js/translated/table_filters.js:101
-#: templates/js/translated/table_filters.js:178
+#: templates/js/translated/table_filters.js:114
+#: templates/js/translated/table_filters.js:191
msgid "Is Serialized"
msgstr ""
-#: templates/js/translated/table_filters.js:104
-#: templates/js/translated/table_filters.js:185
+#: templates/js/translated/table_filters.js:117
+#: templates/js/translated/table_filters.js:198
msgid "Serial number GTE"
msgstr ""
-#: templates/js/translated/table_filters.js:105
-#: templates/js/translated/table_filters.js:186
+#: templates/js/translated/table_filters.js:118
+#: templates/js/translated/table_filters.js:199
msgid "Serial number greater than or equal to"
msgstr ""
-#: templates/js/translated/table_filters.js:108
-#: templates/js/translated/table_filters.js:189
+#: templates/js/translated/table_filters.js:121
+#: templates/js/translated/table_filters.js:202
msgid "Serial number LTE"
msgstr ""
-#: templates/js/translated/table_filters.js:109
-#: templates/js/translated/table_filters.js:190
+#: templates/js/translated/table_filters.js:122
+#: templates/js/translated/table_filters.js:203
msgid "Serial number less than or equal to"
msgstr ""
-#: templates/js/translated/table_filters.js:112
-#: templates/js/translated/table_filters.js:113
-#: templates/js/translated/table_filters.js:181
-#: templates/js/translated/table_filters.js:182
+#: templates/js/translated/table_filters.js:125
+#: templates/js/translated/table_filters.js:126
+#: templates/js/translated/table_filters.js:194
+#: templates/js/translated/table_filters.js:195
msgid "Serial number"
msgstr ""
-#: templates/js/translated/table_filters.js:117
-#: templates/js/translated/table_filters.js:199
+#: templates/js/translated/table_filters.js:130
+#: templates/js/translated/table_filters.js:212
msgid "Batch code"
msgstr ""
-#: templates/js/translated/table_filters.js:128
-#: templates/js/translated/table_filters.js:304
+#: templates/js/translated/table_filters.js:141
+#: templates/js/translated/table_filters.js:317
msgid "Active parts"
msgstr ""
-#: templates/js/translated/table_filters.js:129
+#: templates/js/translated/table_filters.js:142
msgid "Show stock for active parts"
msgstr ""
-#: templates/js/translated/table_filters.js:134
+#: templates/js/translated/table_filters.js:147
msgid "Part is an assembly"
msgstr ""
-#: templates/js/translated/table_filters.js:138
+#: templates/js/translated/table_filters.js:151
msgid "Is allocated"
msgstr ""
-#: templates/js/translated/table_filters.js:139
+#: templates/js/translated/table_filters.js:152
msgid "Item has been allocated"
msgstr ""
-#: templates/js/translated/table_filters.js:144
+#: templates/js/translated/table_filters.js:157
msgid "Include stock in sublocations"
msgstr ""
-#: templates/js/translated/table_filters.js:149
+#: templates/js/translated/table_filters.js:162
msgid "Show stock items which are depleted"
msgstr ""
-#: templates/js/translated/table_filters.js:154
+#: templates/js/translated/table_filters.js:167
msgid "Show items which are in stock"
msgstr ""
-#: templates/js/translated/table_filters.js:158
+#: templates/js/translated/table_filters.js:171
msgid "In Production"
msgstr ""
-#: templates/js/translated/table_filters.js:159
+#: templates/js/translated/table_filters.js:172
msgid "Show items which are in production"
msgstr ""
-#: templates/js/translated/table_filters.js:163
+#: templates/js/translated/table_filters.js:176
msgid "Include Variants"
msgstr ""
-#: templates/js/translated/table_filters.js:164
+#: templates/js/translated/table_filters.js:177
msgid "Include stock items for variant parts"
msgstr ""
-#: templates/js/translated/table_filters.js:168
+#: templates/js/translated/table_filters.js:181
msgid "Installed"
msgstr ""
-#: templates/js/translated/table_filters.js:169
+#: templates/js/translated/table_filters.js:182
msgid "Show stock items which are installed in another item"
msgstr ""
-#: templates/js/translated/table_filters.js:174
+#: templates/js/translated/table_filters.js:187
msgid "Show items which have been assigned to a customer"
msgstr ""
-#: templates/js/translated/table_filters.js:194
-#: templates/js/translated/table_filters.js:195
+#: templates/js/translated/table_filters.js:207
+#: templates/js/translated/table_filters.js:208
msgid "Stock status"
msgstr ""
-#: templates/js/translated/table_filters.js:203
+#: templates/js/translated/table_filters.js:216
msgid "Has purchase price"
msgstr ""
-#: templates/js/translated/table_filters.js:204
+#: templates/js/translated/table_filters.js:217
msgid "Show stock items which have a purchase price set"
msgstr ""
-#: templates/js/translated/table_filters.js:213
+#: templates/js/translated/table_filters.js:226
msgid "Show stock items which have expired"
msgstr ""
-#: templates/js/translated/table_filters.js:219
+#: templates/js/translated/table_filters.js:232
msgid "Show stock which is close to expiring"
msgstr ""
-#: templates/js/translated/table_filters.js:250
+#: templates/js/translated/table_filters.js:263
msgid "Build status"
msgstr ""
-#: templates/js/translated/table_filters.js:269
-#: templates/js/translated/table_filters.js:286
+#: templates/js/translated/table_filters.js:282
+#: templates/js/translated/table_filters.js:299
msgid "Order status"
msgstr ""
-#: templates/js/translated/table_filters.js:274
-#: templates/js/translated/table_filters.js:291
+#: templates/js/translated/table_filters.js:287
+#: templates/js/translated/table_filters.js:304
msgid "Outstanding"
msgstr ""
-#: templates/js/translated/table_filters.js:315
+#: templates/js/translated/table_filters.js:328
msgid "Include parts in subcategories"
msgstr ""
-#: templates/js/translated/table_filters.js:319
+#: templates/js/translated/table_filters.js:332
msgid "Has IPN"
msgstr ""
-#: templates/js/translated/table_filters.js:320
+#: templates/js/translated/table_filters.js:333
msgid "Part has internal part number"
msgstr ""
-#: templates/js/translated/table_filters.js:325
+#: templates/js/translated/table_filters.js:338
msgid "Show active parts"
msgstr ""
-#: templates/js/translated/table_filters.js:333
+#: templates/js/translated/table_filters.js:346
msgid "Stock available"
msgstr ""
-#: templates/js/translated/table_filters.js:349
+#: templates/js/translated/table_filters.js:362
msgid "Starred"
msgstr ""
-#: templates/js/translated/table_filters.js:361
+#: templates/js/translated/table_filters.js:374
msgid "Purchasable"
msgstr ""
-#: templates/js/translated/tables.js:342
+#: templates/js/translated/tables.js:357
msgid "Loading data"
msgstr ""
-#: templates/js/translated/tables.js:345
+#: templates/js/translated/tables.js:360
msgid "rows per page"
msgstr ""
-#: templates/js/translated/tables.js:348
+#: templates/js/translated/tables.js:363
msgid "Showing"
msgstr ""
-#: templates/js/translated/tables.js:348
+#: templates/js/translated/tables.js:363
msgid "to"
msgstr ""
-#: templates/js/translated/tables.js:348
+#: templates/js/translated/tables.js:363
msgid "of"
msgstr ""
-#: templates/js/translated/tables.js:348
+#: templates/js/translated/tables.js:363
msgid "rows"
msgstr ""
-#: templates/js/translated/tables.js:354
+#: templates/js/translated/tables.js:369
msgid "No matching results"
msgstr ""
-#: templates/js/translated/tables.js:357
+#: templates/js/translated/tables.js:372
msgid "Hide/Show pagination"
msgstr ""
-#: templates/js/translated/tables.js:360
+#: templates/js/translated/tables.js:375
msgid "Refresh"
msgstr ""
-#: templates/js/translated/tables.js:363
+#: templates/js/translated/tables.js:378
msgid "Toggle"
msgstr ""
-#: templates/js/translated/tables.js:366
+#: templates/js/translated/tables.js:381
msgid "Columns"
msgstr ""
-#: templates/js/translated/tables.js:369
+#: templates/js/translated/tables.js:384
msgid "All"
msgstr ""
-#: templates/navbar.html:13
+#: templates/navbar.html:19
msgid "Toggle navigation"
msgstr ""
-#: templates/navbar.html:33
+#: templates/navbar.html:39
msgid "Buy"
msgstr ""
-#: templates/navbar.html:43
+#: templates/navbar.html:51
msgid "Sell"
msgstr ""
-#: templates/navbar.html:55
-msgid "Scan Barcode"
-msgstr ""
-
-#: templates/navbar.html:77 users/models.py:39
+#: templates/navbar.html:87 users/models.py:39
msgid "Admin"
msgstr ""
-#: templates/navbar.html:79
+#: templates/navbar.html:89
msgid "Logout"
msgstr ""
-#: templates/navbar.html:81 templates/registration/login.html:89
+#: templates/navbar.html:91 templates/registration/login.html:89
msgid "Login"
msgstr ""
-#: templates/navbar.html:104
+#: templates/navbar.html:114
msgid "About InvenTree"
msgstr ""
diff --git a/InvenTree/locale/pl/LC_MESSAGES/django.po b/InvenTree/locale/pl/LC_MESSAGES/django.po
index ef3d82a8b2..820073e7f7 100644
--- a/InvenTree/locale/pl/LC_MESSAGES/django.po
+++ b/InvenTree/locale/pl/LC_MESSAGES/django.po
@@ -2,8 +2,8 @@ msgid ""
msgstr ""
"Project-Id-Version: inventree\n"
"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2021-08-07 15:14+0000\n"
-"PO-Revision-Date: 2021-08-07 15:30\n"
+"POT-Creation-Date: 2021-09-12 13:15+0000\n"
+"PO-Revision-Date: 2021-09-12 13:44\n"
"Last-Translator: \n"
"Language-Team: Polish\n"
"Language: pl_PL\n"
@@ -36,7 +36,7 @@ msgstr "Wprowadź dane"
#: InvenTree/forms.py:111 build/forms.py:102 build/forms.py:123
#: build/forms.py:145 build/forms.py:169 build/forms.py:185 build/forms.py:227
#: order/forms.py:30 order/forms.py:41 order/forms.py:52 order/forms.py:63
-#: order/forms.py:74 part/forms.py:108 templates/js/translated/forms.js:545
+#: order/forms.py:74 part/forms.py:108 templates/js/translated/forms.js:564
msgid "Confirm"
msgstr "Potwierdź"
@@ -73,7 +73,7 @@ msgstr "Wybierz kategorię"
msgid "Duplicate serial: {n}"
msgstr "Powtórzony numer seryjny: {n}"
-#: InvenTree/helpers.py:408 order/models.py:315 order/models.py:425
+#: InvenTree/helpers.py:408 order/models.py:315 order/models.py:430
#: stock/views.py:1363
msgid "Invalid quantity provided"
msgstr "Podano nieprawidłową ilość"
@@ -102,152 +102,181 @@ 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:61 stock/models.py:1815
+#: InvenTree/models.py:66 stock/models.py:1826
msgid "Attachment"
msgstr "Załącznik"
-#: InvenTree/models.py:62
+#: InvenTree/models.py:67
msgid "Select file to attach"
msgstr "Wybierz plik do załączenia"
-#: InvenTree/models.py:64 templates/js/translated/attachment.js:52
+#: InvenTree/models.py:69 templates/js/translated/attachment.js:87
msgid "Comment"
msgstr "Komentarz"
-#: InvenTree/models.py:64
+#: InvenTree/models.py:69
msgid "File comment"
msgstr "Komentarz pliku"
-#: InvenTree/models.py:70 InvenTree/models.py:71 common/models.py:969
-#: common/models.py:970 part/models.py:2035
+#: InvenTree/models.py:75 InvenTree/models.py:76 common/models.py:993
+#: common/models.py:994 part/models.py:2051
#: report/templates/report/inventree_test_report_base.html:91
-#: templates/js/translated/stock.js:1549
+#: templates/js/translated/stock.js:1690
msgid "User"
msgstr "Użytkownik"
-#: InvenTree/models.py:74
+#: InvenTree/models.py:79
msgid "upload date"
msgstr "data przesłania"
-#: InvenTree/models.py:113
+#: InvenTree/models.py:99
+msgid "Filename must not be empty"
+msgstr ""
+
+#: InvenTree/models.py:122
+msgid "Invalid attachment directory"
+msgstr ""
+
+#: InvenTree/models.py:132
+#, python-brace-format
+msgid "Filename contains illegal character '{c}'"
+msgstr ""
+
+#: InvenTree/models.py:135
+msgid "Filename missing extension"
+msgstr ""
+
+#: InvenTree/models.py:142
+msgid "Attachment with this filename already exists"
+msgstr ""
+
+#: InvenTree/models.py:149
+msgid "Error renaming file"
+msgstr ""
+
+#: InvenTree/models.py:184
msgid "Invalid choice"
msgstr "Błędny wybór"
-#: InvenTree/models.py:129 InvenTree/models.py:130 company/models.py:412
-#: label/models.py:112 part/models.py:656 part/models.py:2196
-#: part/templates/part/part_base.html:233 report/models.py:181
+#: InvenTree/models.py:200 InvenTree/models.py:201 company/models.py:414
+#: label/models.py:112 part/models.py:658 part/models.py:2212
+#: part/templates/part/part_base.html:241 report/models.py:181
#: templates/InvenTree/search.html:137 templates/InvenTree/search.html:289
-#: templates/js/translated/company.js:583 templates/js/translated/part.js:338
-#: templates/js/translated/part.js:471 templates/js/translated/part.js:963
-#: templates/js/translated/stock.js:1342
+#: templates/js/translated/company.js:636 templates/js/translated/part.js:466
+#: templates/js/translated/part.js:603 templates/js/translated/part.js:1130
+#: templates/js/translated/stock.js:1483
msgid "Name"
msgstr "Nazwa"
-#: InvenTree/models.py:136 build/models.py:187
-#: build/templates/build/detail.html:24 company/models.py:351
-#: company/models.py:519 company/templates/company/manufacturer_part.html:76
+#: InvenTree/models.py:207 build/models.py:187
+#: build/templates/build/detail.html:24 company/models.py:353
+#: company/models.py:569 company/templates/company/manufacturer_part.html:76
#: company/templates/company/supplier_part.html:75 label/models.py:119
-#: order/models.py:158 order/templates/order/purchase_order_detail.html:312
-#: part/models.py:679 part/templates/part/part_base.html:238
+#: order/models.py:158 part/models.py:681
+#: part/templates/part/part_base.html:246
#: part/templates/part/set_category.html:14 report/models.py:194
#: report/models.py:551 report/models.py:590
#: report/templates/report/inventree_build_order_base.html:118
#: templates/InvenTree/search.html:144 templates/InvenTree/search.html:224
#: templates/InvenTree/search.html:296
#: templates/InvenTree/settings/header.html:9
-#: templates/js/translated/bom.js:210 templates/js/translated/build.js:868
-#: templates/js/translated/build.js:1162 templates/js/translated/company.js:299
-#: templates/js/translated/company.js:497
-#: templates/js/translated/company.js:779 templates/js/translated/order.js:267
-#: templates/js/translated/order.js:369 templates/js/translated/part.js:397
-#: templates/js/translated/part.js:581 templates/js/translated/part.js:758
-#: templates/js/translated/part.js:975 templates/js/translated/part.js:1043
-#: templates/js/translated/stock.js:926 templates/js/translated/stock.js:1354
-#: templates/js/translated/stock.js:1399
+#: templates/js/translated/bom.js:230 templates/js/translated/build.js:891
+#: templates/js/translated/build.js:1179 templates/js/translated/company.js:344
+#: templates/js/translated/company.js:546
+#: templates/js/translated/company.js:834 templates/js/translated/order.js:341
+#: templates/js/translated/order.js:486 templates/js/translated/order.js:710
+#: templates/js/translated/part.js:525 templates/js/translated/part.js:713
+#: templates/js/translated/part.js:902 templates/js/translated/part.js:1142
+#: templates/js/translated/part.js:1210 templates/js/translated/stock.js:840
+#: templates/js/translated/stock.js:1495 templates/js/translated/stock.js:1540
msgid "Description"
msgstr "Opis"
-#: InvenTree/models.py:137
+#: InvenTree/models.py:208
msgid "Description (optional)"
msgstr "Opis (opcjonalny)"
-#: InvenTree/models.py:145
+#: InvenTree/models.py:216
msgid "parent"
msgstr "nadrzędny"
-#: InvenTree/serializers.py:52 part/models.py:2438
+#: InvenTree/serializers.py:55 part/models.py:2454
msgid "Must be a valid number"
msgstr "Numer musi być prawidłowy"
-#: InvenTree/settings.py:518
+#: InvenTree/serializers.py:244
+msgid "Filename"
+msgstr ""
+
+#: InvenTree/settings.py:523
msgid "German"
msgstr "Niemiecki"
-#: InvenTree/settings.py:519
+#: InvenTree/settings.py:524
msgid "Greek"
msgstr "Grecki"
-#: InvenTree/settings.py:520
+#: InvenTree/settings.py:525
msgid "English"
msgstr "Angielski"
-#: InvenTree/settings.py:521
+#: InvenTree/settings.py:526
msgid "Spanish"
msgstr "Hiszpański"
-#: InvenTree/settings.py:522
+#: InvenTree/settings.py:527
msgid "French"
msgstr "Francuski"
-#: InvenTree/settings.py:523
+#: InvenTree/settings.py:528
msgid "Hebrew"
msgstr "Hebrajski"
-#: InvenTree/settings.py:524
+#: InvenTree/settings.py:529
msgid "Italian"
msgstr "Włoski"
-#: InvenTree/settings.py:525
+#: InvenTree/settings.py:530
msgid "Japanese"
msgstr "Japoński"
-#: InvenTree/settings.py:526
+#: InvenTree/settings.py:531
msgid "Korean"
msgstr "Koreański"
-#: InvenTree/settings.py:527
+#: InvenTree/settings.py:532
msgid "Dutch"
msgstr "Holenderski"
-#: InvenTree/settings.py:528
+#: InvenTree/settings.py:533
msgid "Norwegian"
msgstr "Norweski"
-#: InvenTree/settings.py:529
+#: InvenTree/settings.py:534
msgid "Polish"
msgstr "Polski"
-#: InvenTree/settings.py:530
+#: InvenTree/settings.py:535
msgid "Russian"
msgstr "Rosyjski"
-#: InvenTree/settings.py:531
+#: InvenTree/settings.py:536
msgid "Swedish"
msgstr "Szwedzki"
-#: InvenTree/settings.py:532
+#: InvenTree/settings.py:537
msgid "Thai"
msgstr "Tajski"
-#: InvenTree/settings.py:533
+#: InvenTree/settings.py:538
msgid "Turkish"
msgstr "Turecki"
-#: InvenTree/settings.py:534
+#: InvenTree/settings.py:539
msgid "Vietnamese"
msgstr "Wietnamski"
-#: InvenTree/settings.py:535
+#: InvenTree/settings.py:540
msgid "Chinese"
msgstr "Chiński"
@@ -372,7 +401,7 @@ msgstr ""
msgid "Split child item"
msgstr "Podziel element podrzędny"
-#: InvenTree/status_codes.py:294 templates/js/translated/table_filters.js:173
+#: InvenTree/status_codes.py:294 templates/js/translated/table_filters.js:186
msgid "Sent to customer"
msgstr "Wyślij do klienta"
@@ -432,27 +461,27 @@ msgstr ""
msgid "Overage must be an integer value or a percentage"
msgstr ""
-#: InvenTree/views.py:612
+#: InvenTree/views.py:610
msgid "Delete Item"
msgstr "Usuń element"
-#: InvenTree/views.py:661
+#: InvenTree/views.py:659
msgid "Check box to confirm item deletion"
msgstr "Zaznacz pole aby potwierdzić usunięcie elementu"
-#: InvenTree/views.py:676 templates/InvenTree/settings/user.html:14
+#: InvenTree/views.py:674 templates/InvenTree/settings/user.html:14
msgid "Edit User Information"
msgstr "Edytuj informacje użytkownika"
-#: InvenTree/views.py:687 templates/InvenTree/settings/user.html:18
+#: InvenTree/views.py:685 templates/InvenTree/settings/user.html:18
msgid "Set Password"
msgstr "Ustaw hasło"
-#: InvenTree/views.py:706
+#: InvenTree/views.py:704
msgid "Password fields must match"
msgstr "Hasła muszą być zgodne"
-#: InvenTree/views.py:907 templates/navbar.html:95
+#: InvenTree/views.py:910 templates/navbar.html:105
msgid "System Information"
msgstr "Informacja systemowa"
@@ -509,8 +538,8 @@ msgstr ""
#: order/templates/order/order_base.html:124
#: order/templates/order/sales_order_base.html:119
#: report/templates/report/inventree_build_order_base.html:126
-#: templates/js/translated/build.js:945 templates/js/translated/order.js:284
-#: templates/js/translated/order.js:387
+#: templates/js/translated/build.js:962 templates/js/translated/order.js:358
+#: templates/js/translated/order.js:728
msgid "Target Date"
msgstr "Data docelowa"
@@ -522,19 +551,18 @@ msgstr ""
#: build/templates/build/allocation_card.html:23
#: build/templates/build/auto_allocate.html:17
#: build/templates/build/build_base.html:133
-#: build/templates/build/detail.html:34 common/models.py:1001
+#: build/templates/build/detail.html:34 common/models.py:1025
#: company/forms.py:42 company/templates/company/supplier_part.html:226
-#: order/forms.py:120 order/forms.py:142 order/forms.py:159 order/models.py:706
-#: order/models.py:952 order/templates/order/order_wizard/match_parts.html:30
+#: order/forms.py:120 order/forms.py:142 order/forms.py:159 order/models.py:712
+#: order/models.py:964 order/templates/order/order_wizard/match_parts.html:30
#: order/templates/order/order_wizard/select_parts.html:34
-#: order/templates/order/purchase_order_detail.html:348
-#: order/templates/order/sales_order_detail.html:200
-#: order/templates/order/sales_order_detail.html:207
-#: order/templates/order/sales_order_detail.html:292
-#: order/templates/order/sales_order_detail.html:364 part/forms.py:249
-#: part/forms.py:265 part/forms.py:281 part/models.py:2340
+#: order/templates/order/sales_order_detail.html:201
+#: order/templates/order/sales_order_detail.html:208
+#: order/templates/order/sales_order_detail.html:293
+#: order/templates/order/sales_order_detail.html:365 part/forms.py:249
+#: part/forms.py:265 part/forms.py:281 part/models.py:2356
#: part/templates/part/bom_upload/match_parts.html:31
-#: part/templates/part/detail.html:940 part/templates/part/detail.html:1026
+#: part/templates/part/detail.html:973 part/templates/part/detail.html:1059
#: part/templates/part/part_pricing.html:16
#: report/templates/report/inventree_build_order_base.html:114
#: report/templates/report/inventree_po_report.html:91
@@ -542,13 +570,14 @@ msgstr ""
#: report/templates/report/inventree_test_report_base.html:77
#: stock/forms.py:140 stock/templates/stock/item_base.html:269
#: stock/templates/stock/stock_adjust.html:18
-#: templates/js/translated/barcode.js:364 templates/js/translated/bom.js:225
-#: templates/js/translated/build.js:271 templates/js/translated/build.js:606
-#: templates/js/translated/build.js:1172
-#: templates/js/translated/model_renderers.js:56
-#: templates/js/translated/order.js:482 templates/js/translated/part.js:1148
-#: templates/js/translated/part.js:1270 templates/js/translated/part.js:1326
-#: templates/js/translated/stock.js:1534 templates/js/translated/stock.js:1732
+#: templates/js/translated/barcode.js:386 templates/js/translated/bom.js:245
+#: templates/js/translated/build.js:298 templates/js/translated/build.js:629
+#: templates/js/translated/build.js:1189
+#: templates/js/translated/model_renderers.js:59
+#: templates/js/translated/order.js:522 templates/js/translated/order.js:824
+#: templates/js/translated/part.js:1317 templates/js/translated/part.js:1440
+#: templates/js/translated/part.js:1518 templates/js/translated/stock.js:1675
+#: templates/js/translated/stock.js:1850
msgid "Quantity"
msgstr "Ilość"
@@ -589,13 +618,15 @@ msgid "Mark build as complete"
msgstr "Oznacz budowę jako ukończoną"
#: build/forms.py:210 build/templates/build/auto_allocate.html:18
-#: stock/forms.py:280 stock/templates/stock/item_base.html:299
+#: order/serializers.py:216 order/serializers.py:275 stock/forms.py:280
+#: stock/templates/stock/item_base.html:299
#: stock/templates/stock/stock_adjust.html:17
-#: templates/InvenTree/search.html:260 templates/js/translated/barcode.js:363
-#: templates/js/translated/barcode.js:531 templates/js/translated/build.js:256
-#: templates/js/translated/build.js:620 templates/js/translated/order.js:467
-#: templates/js/translated/stock.js:134 templates/js/translated/stock.js:260
-#: templates/js/translated/stock.js:1012 templates/js/translated/stock.js:1426
+#: templates/InvenTree/search.html:260 templates/js/translated/barcode.js:385
+#: templates/js/translated/barcode.js:555 templates/js/translated/build.js:283
+#: templates/js/translated/build.js:643 templates/js/translated/order.js:809
+#: templates/js/translated/part.js:174 templates/js/translated/stock.js:203
+#: templates/js/translated/stock.js:329 templates/js/translated/stock.js:942
+#: templates/js/translated/stock.js:1567
msgid "Location"
msgstr "Lokalizacja"
@@ -604,13 +635,13 @@ msgid "Location of completed parts"
msgstr "Lokalizacja ukończonych części"
#: build/forms.py:215 build/templates/build/build_base.html:138
-#: build/templates/build/detail.html:62 order/models.py:549
-#: order/templates/order/receive_parts.html:24
+#: build/templates/build/detail.html:62 order/models.py:555
+#: order/serializers.py:230 order/templates/order/receive_parts.html:24
#: stock/templates/stock/item_base.html:422 templates/InvenTree/search.html:252
-#: templates/js/translated/barcode.js:119 templates/js/translated/build.js:902
-#: templates/js/translated/order.js:271 templates/js/translated/order.js:374
-#: templates/js/translated/stock.js:999 templates/js/translated/stock.js:1503
-#: templates/js/translated/stock.js:1748
+#: templates/js/translated/barcode.js:141 templates/js/translated/build.js:925
+#: templates/js/translated/order.js:345 templates/js/translated/order.js:715
+#: templates/js/translated/stock.js:917 templates/js/translated/stock.js:1644
+#: templates/js/translated/stock.js:1866
msgid "Status"
msgstr "Status"
@@ -649,7 +680,7 @@ msgstr ""
#: build/models.py:117 build/templates/build/build_base.html:9
#: build/templates/build/build_base.html:73
#: report/templates/report/inventree_build_order_base.html:106
-#: templates/js/translated/build.js:233
+#: templates/js/translated/build.js:260
msgid "Build Order"
msgstr "Zlecenie Budowy"
@@ -657,8 +688,8 @@ msgstr "Zlecenie Budowy"
#: build/templates/build/index.html:15
#: order/templates/order/sales_order_detail.html:34
#: order/templates/order/so_navbar.html:19
-#: order/templates/order/so_navbar.html:22 part/templates/part/navbar.html:42
-#: part/templates/part/navbar.html:45 templates/InvenTree/index.html:229
+#: order/templates/order/so_navbar.html:22 part/templates/part/navbar.html:50
+#: part/templates/part/navbar.html:53 templates/InvenTree/index.html:229
#: templates/InvenTree/search.html:185
#: templates/InvenTree/settings/navbar.html:101
#: templates/InvenTree/settings/navbar.html:103 users/models.py:44
@@ -669,14 +700,13 @@ msgstr "Zlecenia budowy"
msgid "Build Order Reference"
msgstr "Odwołanie do zamówienia wykonania"
-#: build/models.py:179 order/models.py:246 order/models.py:533
-#: order/models.py:713 order/templates/order/purchase_order_detail.html:343
-#: order/templates/order/sales_order_detail.html:359 part/models.py:2349
-#: part/templates/part/bom_upload/match_parts.html:30
+#: build/models.py:179 order/models.py:246 order/models.py:539
+#: order/models.py:719 order/templates/order/sales_order_detail.html:360
+#: part/models.py:2365 part/templates/part/bom_upload/match_parts.html:30
#: report/templates/report/inventree_po_report.html:92
#: report/templates/report/inventree_so_report.html:92
-#: templates/js/translated/bom.js:217 templates/js/translated/build.js:695
-#: templates/js/translated/build.js:1166
+#: templates/js/translated/bom.js:237 templates/js/translated/build.js:718
+#: templates/js/translated/build.js:1183 templates/js/translated/order.js:517
msgid "Reference"
msgstr "Referencja"
@@ -695,15 +725,14 @@ msgstr "Zamówienie budowy, do którego budowa jest przypisana"
#: build/models.py:205 build/templates/build/auto_allocate.html:16
#: build/templates/build/build_base.html:128
-#: build/templates/build/detail.html:29 company/models.py:654
-#: order/models.py:766 order/models.py:825
+#: build/templates/build/detail.html:29 company/models.py:704
+#: order/models.py:772 order/models.py:837
#: order/templates/order/order_wizard/select_parts.html:32
-#: order/templates/order/purchase_order_detail.html:297
#: order/templates/order/receive_parts.html:19
-#: order/templates/order/sales_order_detail.html:344 part/models.py:295
-#: part/models.py:1980 part/models.py:1996 part/models.py:2015
-#: part/models.py:2033 part/models.py:2112 part/models.py:2234
-#: part/models.py:2324 part/templates/part/detail.html:199
+#: order/templates/order/sales_order_detail.html:345 part/models.py:297
+#: part/models.py:1996 part/models.py:2012 part/models.py:2031
+#: part/models.py:2049 part/models.py:2128 part/models.py:2250
+#: part/models.py:2340 part/templates/part/detail.html:199
#: part/templates/part/part_app_base.html:8
#: part/templates/part/part_pricing.html:12
#: part/templates/part/set_category.html:13
@@ -711,12 +740,13 @@ msgstr "Zamówienie budowy, do którego budowa jest przypisana"
#: report/templates/report/inventree_po_report.html:90
#: report/templates/report/inventree_so_report.html:90
#: templates/InvenTree/search.html:112 templates/InvenTree/search.html:210
-#: templates/js/translated/barcode.js:362 templates/js/translated/bom.js:183
-#: templates/js/translated/build.js:586 templates/js/translated/build.js:873
-#: templates/js/translated/build.js:1139 templates/js/translated/company.js:438
-#: templates/js/translated/company.js:688 templates/js/translated/part.js:562
-#: templates/js/translated/part.js:725 templates/js/translated/stock.js:132
-#: templates/js/translated/stock.js:895 templates/js/translated/stock.js:1720
+#: templates/js/translated/barcode.js:384 templates/js/translated/bom.js:203
+#: templates/js/translated/build.js:609 templates/js/translated/build.js:896
+#: templates/js/translated/build.js:1156 templates/js/translated/company.js:487
+#: templates/js/translated/company.js:743 templates/js/translated/order.js:471
+#: templates/js/translated/part.js:694 templates/js/translated/part.js:864
+#: templates/js/translated/stock.js:201 templates/js/translated/stock.js:797
+#: templates/js/translated/stock.js:1838
msgid "Part"
msgstr "Część"
@@ -764,7 +794,7 @@ msgstr "Ukończone elementy"
msgid "Number of stock items which have been completed"
msgstr "Ilość produktów magazynowych które zostały ukończone"
-#: build/models.py:257 part/templates/part/part_base.html:191
+#: build/models.py:257 part/templates/part/part_base.html:198
msgid "Build Status"
msgstr "Status budowania"
@@ -772,7 +802,7 @@ msgstr "Status budowania"
msgid "Build status code"
msgstr "Kod statusu budowania"
-#: build/models.py:265 stock/models.py:507
+#: build/models.py:265 stock/models.py:513
msgid "Batch Code"
msgstr "Kod partii"
@@ -780,16 +810,16 @@ msgstr "Kod partii"
msgid "Batch code for this build output"
msgstr "Kod partii dla wyjścia budowy"
-#: build/models.py:272 order/models.py:162 part/models.py:851
-#: part/templates/part/part_base.html:264 templates/js/translated/order.js:382
+#: build/models.py:272 order/models.py:162 part/models.py:853
+#: part/templates/part/part_base.html:272 templates/js/translated/order.js:723
msgid "Creation Date"
msgstr "Data utworzenia"
-#: build/models.py:276 order/models.py:555
+#: build/models.py:276 order/models.py:561
msgid "Target completion date"
msgstr "Docelowy termin zakończenia"
-#: build/models.py:280 order/models.py:288 templates/js/translated/build.js:950
+#: build/models.py:280 order/models.py:288 templates/js/translated/build.js:967
msgid "Completion Date"
msgstr "Data zakończenia"
@@ -797,7 +827,7 @@ msgstr "Data zakończenia"
msgid "completed by"
msgstr "zrealizowane przez"
-#: build/models.py:294 templates/js/translated/build.js:915
+#: build/models.py:294 templates/js/translated/build.js:938
msgid "Issued by"
msgstr "Wydany przez"
@@ -808,9 +838,9 @@ msgstr "Użytkownik, który wydał to zamówienie"
#: build/models.py:303 build/templates/build/build_base.html:184
#: build/templates/build/detail.html:108 order/models.py:176
#: order/templates/order/order_base.html:138
-#: order/templates/order/sales_order_base.html:140 part/models.py:855
+#: order/templates/order/sales_order_base.html:140 part/models.py:857
#: report/templates/report/inventree_build_order_base.html:159
-#: templates/js/translated/build.js:930
+#: templates/js/translated/build.js:950
msgid "Responsible"
msgstr "Odpowiedzialny"
@@ -821,34 +851,33 @@ msgstr "Użytkownik odpowiedzialny za to zamówienie budowy"
#: build/models.py:309 build/templates/build/detail.html:94
#: company/templates/company/manufacturer_part.html:83
#: company/templates/company/supplier_part.html:82
-#: part/templates/part/part_base.html:258 stock/models.py:501
+#: part/templates/part/part_base.html:266 stock/models.py:507
#: stock/templates/stock/item_base.html:359
msgid "External Link"
msgstr "Link Zewnętrzny"
-#: build/models.py:310 part/models.py:713 stock/models.py:503
+#: build/models.py:310 part/models.py:715 stock/models.py:509
msgid "Link to external URL"
msgstr "Link do zewnętrznego adresu URL"
#: build/models.py:314 build/templates/build/navbar.html:52
-#: company/models.py:139 company/models.py:526
-#: company/templates/company/navbar.html:63
-#: company/templates/company/navbar.html:66 order/models.py:180
-#: order/models.py:715 order/templates/order/po_navbar.html:38
+#: company/models.py:141 company/models.py:576
+#: company/templates/company/navbar.html:69
+#: company/templates/company/navbar.html:72 order/models.py:180
+#: order/models.py:721 order/templates/order/po_navbar.html:38
#: order/templates/order/po_navbar.html:41
-#: order/templates/order/purchase_order_detail.html:419
-#: order/templates/order/sales_order_detail.html:439
+#: order/templates/order/sales_order_detail.html:440
#: order/templates/order/so_navbar.html:33
-#: order/templates/order/so_navbar.html:36 part/models.py:840
-#: part/templates/part/detail.html:105 part/templates/part/navbar.html:108
-#: part/templates/part/navbar.html:111
+#: order/templates/order/so_navbar.html:36 part/models.py:842
+#: part/templates/part/detail.html:105 part/templates/part/navbar.html:120
+#: part/templates/part/navbar.html:123
#: report/templates/report/inventree_build_order_base.html:173
-#: stock/forms.py:138 stock/forms.py:250 stock/forms.py:282 stock/models.py:573
-#: stock/models.py:1715 stock/models.py:1821
-#: stock/templates/stock/navbar.html:57 templates/js/translated/barcode.js:37
-#: templates/js/translated/bom.js:369 templates/js/translated/company.js:784
-#: templates/js/translated/stock.js:268 templates/js/translated/stock.js:509
-#: templates/js/translated/stock.js:1090
+#: stock/forms.py:138 stock/forms.py:250 stock/forms.py:282 stock/models.py:579
+#: stock/models.py:1726 stock/models.py:1832
+#: stock/templates/stock/navbar.html:57 templates/js/translated/barcode.js:59
+#: templates/js/translated/bom.js:385 templates/js/translated/company.js:839
+#: templates/js/translated/order.js:604 templates/js/translated/stock.js:338
+#: templates/js/translated/stock.js:580 templates/js/translated/stock.js:1061
msgid "Notes"
msgstr "Uwagi"
@@ -881,11 +910,11 @@ msgstr ""
msgid "Allocated quantity ({n}) must not exceed available quantity ({q})"
msgstr "Przydzielona ilość ({n}) nie może przekraczać dostępnej ilości ({q})"
-#: build/models.py:1244 order/models.py:926
+#: build/models.py:1244 order/models.py:938
msgid "StockItem is over-allocated"
msgstr ""
-#: build/models.py:1248 order/models.py:929
+#: build/models.py:1248 order/models.py:941
msgid "Allocation quantity must be greater than zero"
msgstr "Alokowana ilość musi być większa niż zero"
@@ -899,8 +928,8 @@ msgid "Selected stock item not found in BOM for part '{p}'"
msgstr ""
#: build/models.py:1372 stock/templates/stock/item_base.html:331
-#: templates/InvenTree/search.html:183 templates/js/translated/build.js:846
-#: templates/navbar.html:29
+#: templates/InvenTree/search.html:183 templates/js/translated/build.js:869
+#: templates/navbar.html:35
msgid "Build"
msgstr "Budowa"
@@ -912,9 +941,9 @@ msgstr ""
#: stock/templates/stock/item_base.html:31
#: stock/templates/stock/item_base.html:353
#: stock/templates/stock/stock_adjust.html:16
-#: templates/js/translated/build.js:244 templates/js/translated/build.js:249
-#: templates/js/translated/build.js:993 templates/js/translated/order.js:455
-#: templates/js/translated/order.js:460 templates/js/translated/stock.js:1485
+#: templates/js/translated/build.js:271 templates/js/translated/build.js:276
+#: templates/js/translated/build.js:1012 templates/js/translated/order.js:797
+#: templates/js/translated/order.js:802 templates/js/translated/stock.js:1626
msgid "Stock Item"
msgstr "Element magazynowy"
@@ -936,12 +965,12 @@ msgstr "Docelowa lokalizacja magazynowa przedmiotu"
#: build/templates/build/allocation_card.html:21
#: build/templates/build/complete_output.html:46
-#: order/templates/order/sales_order_detail.html:205
-#: order/templates/order/sales_order_detail.html:290
+#: order/templates/order/sales_order_detail.html:206
+#: order/templates/order/sales_order_detail.html:291
#: report/templates/report/inventree_test_report_base.html:75
-#: stock/models.py:495 stock/templates/stock/item_base.html:251
-#: templates/js/translated/build.js:604
-#: templates/js/translated/model_renderers.js:54
+#: stock/models.py:501 stock/templates/stock/item_base.html:251
+#: templates/js/translated/build.js:627
+#: templates/js/translated/model_renderers.js:57
msgid "Serial Number"
msgstr "Numer Seryjny"
@@ -993,7 +1022,7 @@ msgstr ""
#: company/templates/company/supplier_part.html:30
#: order/templates/order/order_base.html:26
#: order/templates/order/sales_order_base.html:37
-#: part/templates/part/category.html:27 part/templates/part/part_base.html:25
+#: part/templates/part/category.html:27 part/templates/part/part_base.html:30
#: stock/templates/stock/item_base.html:62
#: stock/templates/stock/location.html:31
msgid "Admin view"
@@ -1005,9 +1034,9 @@ msgstr "Widok administratora"
#: order/templates/order/order_base.html:86
#: order/templates/order/sales_order_base.html:43
#: order/templates/order/sales_order_base.html:88
-#: templates/js/translated/table_filters.js:259
-#: templates/js/translated/table_filters.js:278
-#: templates/js/translated/table_filters.js:295
+#: templates/js/translated/table_filters.js:272
+#: templates/js/translated/table_filters.js:291
+#: templates/js/translated/table_filters.js:308
msgid "Overdue"
msgstr "Zaległe"
@@ -1057,14 +1086,14 @@ msgid "Progress"
msgstr "Postęp"
#: build/templates/build/build_base.html:170
-#: build/templates/build/detail.html:87 order/models.py:823
+#: build/templates/build/detail.html:87 order/models.py:835
#: order/templates/order/sales_order_base.html:9
#: order/templates/order/sales_order_base.html:35
#: order/templates/order/sales_order_ship.html:25
#: report/templates/report/inventree_build_order_base.html:136
#: report/templates/report/inventree_so_report.html:77
#: stock/templates/stock/item_base.html:293
-#: templates/js/translated/order.js:329
+#: templates/js/translated/order.js:670
msgid "Sales Order"
msgstr "Zamówienie zakupu"
@@ -1148,7 +1177,7 @@ msgstr ""
#: build/templates/build/create_build_item.html:11
#, python-format
-msgid "The allocated stock will be installed into the following build output:
%(output)s"
+msgid "The allocated stock will be installed into the following build output:
%(output)s"
msgstr ""
#: build/templates/build/create_build_item.html:17
@@ -1172,9 +1201,9 @@ msgstr "Źródło magazynu"
msgid "Stock can be taken from any available location."
msgstr ""
-#: build/templates/build/detail.html:49 order/forms.py:88 order/models.py:782
-#: order/templates/order/purchase_order_detail.html:408
+#: build/templates/build/detail.html:49 order/forms.py:88 order/models.py:794
#: order/templates/order/receive_parts.html:25 stock/forms.py:134
+#: templates/js/translated/order.js:593
msgid "Destination"
msgstr "Przeznaczenie"
@@ -1184,16 +1213,16 @@ msgstr "Nie określono lokalizacji docelowej"
#: build/templates/build/detail.html:73
#: stock/templates/stock/item_base.html:317
-#: templates/js/translated/stock.js:1007 templates/js/translated/stock.js:1755
-#: templates/js/translated/table_filters.js:116
-#: templates/js/translated/table_filters.js:198
+#: templates/js/translated/stock.js:931 templates/js/translated/stock.js:1873
+#: templates/js/translated/table_filters.js:129
+#: templates/js/translated/table_filters.js:211
msgid "Batch"
msgstr "Partia"
#: build/templates/build/detail.html:119
#: order/templates/order/order_base.html:111
#: order/templates/order/sales_order_base.html:113
-#: templates/js/translated/build.js:910
+#: templates/js/translated/build.js:933
msgid "Created"
msgstr "Utworzony"
@@ -1201,7 +1230,7 @@ msgstr "Utworzony"
msgid "No target date set"
msgstr ""
-#: build/templates/build/detail.html:135 templates/js/translated/build.js:888
+#: build/templates/build/detail.html:135 templates/js/translated/build.js:911
msgid "Completed"
msgstr "Zakończone"
@@ -1225,7 +1254,7 @@ msgstr "Przydziel zapasy do budowy"
msgid "Auto Allocate"
msgstr "Automatyczne przypisywanie"
-#: build/templates/build/detail.html:175 templates/js/translated/build.js:778
+#: build/templates/build/detail.html:175 templates/js/translated/build.js:801
msgid "Unallocate stock"
msgstr "Cofnij przydział zapasów"
@@ -1238,8 +1267,8 @@ msgid "Order required parts"
msgstr "Zamów wymagane komponenty"
#: build/templates/build/detail.html:180
-#: company/templates/company/detail.html:33
-#: company/templates/company/detail.html:75 order/views.py:679
+#: company/templates/company/detail.html:32
+#: company/templates/company/detail.html:72 order/views.py:679
#: part/templates/part/category.html:140
msgid "Order Parts"
msgstr "Zamów części"
@@ -1288,8 +1317,8 @@ msgstr ""
#: build/templates/build/navbar.html:45 order/templates/order/po_navbar.html:35
#: order/templates/order/sales_order_detail.html:43
#: order/templates/order/so_navbar.html:29 part/templates/part/detail.html:173
-#: part/templates/part/navbar.html:102 part/templates/part/navbar.html:105
-#: stock/templates/stock/item.html:87 stock/templates/stock/navbar.html:47
+#: part/templates/part/navbar.html:114 part/templates/part/navbar.html:117
+#: stock/templates/stock/item.html:88 stock/templates/stock/navbar.html:47
#: stock/templates/stock/navbar.html:50
msgid "Attachments"
msgstr "Załączniki"
@@ -1298,48 +1327,48 @@ msgstr "Załączniki"
msgid "Build Notes"
msgstr "Notatki tworzenia"
-#: build/templates/build/detail.html:261 build/templates/build/detail.html:397
-#: company/templates/company/detail.html:173
-#: company/templates/company/detail.html:200
+#: build/templates/build/detail.html:261 build/templates/build/detail.html:398
+#: company/templates/company/detail.html:169
+#: company/templates/company/detail.html:196
#: order/templates/order/purchase_order_detail.html:62
#: order/templates/order/purchase_order_detail.html:95
#: order/templates/order/sales_order_detail.html:58
#: order/templates/order/sales_order_detail.html:85
-#: part/templates/part/detail.html:109 stock/templates/stock/item.html:102
-#: stock/templates/stock/item.html:187
+#: part/templates/part/detail.html:109 stock/templates/stock/item.html:103
+#: stock/templates/stock/item.html:188
msgid "Edit Notes"
msgstr ""
#: build/templates/build/detail.html:357
#: order/templates/order/po_attachments.html:79
-#: order/templates/order/purchase_order_detail.html:156
-#: order/templates/order/sales_order_detail.html:145
-#: part/templates/part/detail.html:802 stock/templates/stock/item.html:251
+#: order/templates/order/purchase_order_detail.html:157
+#: order/templates/order/sales_order_detail.html:146
+#: part/templates/part/detail.html:920 stock/templates/stock/item.html:253
#: templates/attachment_table.html:6
msgid "Add Attachment"
msgstr "Dodaj załącznik"
-#: build/templates/build/detail.html:375
+#: build/templates/build/detail.html:376
#: order/templates/order/po_attachments.html:51
-#: order/templates/order/purchase_order_detail.html:128
-#: order/templates/order/sales_order_detail.html:118
-#: part/templates/part/detail.html:756 stock/templates/stock/item.html:219
+#: order/templates/order/purchase_order_detail.html:129
+#: order/templates/order/sales_order_detail.html:119
+#: part/templates/part/detail.html:874 stock/templates/stock/item.html:221
msgid "Edit Attachment"
msgstr "Edytuj załącznik"
-#: build/templates/build/detail.html:382
+#: build/templates/build/detail.html:383
#: order/templates/order/po_attachments.html:58
-#: order/templates/order/purchase_order_detail.html:135
-#: order/templates/order/sales_order_detail.html:124
-#: part/templates/part/detail.html:765 stock/templates/stock/item.html:228
+#: order/templates/order/purchase_order_detail.html:136
+#: order/templates/order/sales_order_detail.html:125
+#: part/templates/part/detail.html:883 stock/templates/stock/item.html:230
msgid "Confirm Delete Operation"
msgstr ""
-#: build/templates/build/detail.html:383
+#: build/templates/build/detail.html:384
#: order/templates/order/po_attachments.html:59
-#: order/templates/order/purchase_order_detail.html:136
-#: order/templates/order/sales_order_detail.html:125
-#: part/templates/part/detail.html:766 stock/templates/stock/item.html:229
+#: order/templates/order/purchase_order_detail.html:137
+#: order/templates/order/sales_order_detail.html:126
+#: part/templates/part/detail.html:884 stock/templates/stock/item.html:231
msgid "Delete Attachment"
msgstr "Usuń załącznik"
@@ -1372,7 +1401,7 @@ msgid "Build Order Details"
msgstr "Szczegóły zlecenia budowy"
#: build/templates/build/navbar.html:15 order/templates/order/po_navbar.html:15
-#: templates/js/translated/stock.js:1414
+#: templates/js/translated/stock.js:1555
msgid "Details"
msgstr "Szczegóły"
@@ -1501,9 +1530,9 @@ msgstr ""
msgid "Stock item is over-allocated"
msgstr ""
-#: build/views.py:705 templates/js/translated/bom.js:250
-#: templates/js/translated/build.js:705 templates/js/translated/build.js:1000
-#: templates/js/translated/build.js:1179
+#: build/views.py:705 templates/js/translated/bom.js:269
+#: templates/js/translated/build.js:728 templates/js/translated/build.js:1019
+#: templates/js/translated/build.js:1196
msgid "Available"
msgstr "Dostępne"
@@ -1539,7 +1568,7 @@ msgstr ""
msgid "Error reading file (data could be corrupted)"
msgstr ""
-#: common/forms.py:34 templates/js/translated/attachment.js:42
+#: common/forms.py:34 templates/js/translated/attachment.js:54
msgid "File"
msgstr ""
@@ -1556,546 +1585,594 @@ msgstr ""
msgid "Select {name} file to upload"
msgstr ""
-#: common/models.py:322 common/models.py:815 common/models.py:962
+#: common/models.py:308 common/models.py:839 common/models.py:986
msgid "Settings key (must be unique - case insensitive"
msgstr ""
-#: common/models.py:324
+#: common/models.py:310
msgid "Settings value"
msgstr "Ustawienia wartości"
-#: common/models.py:359
+#: common/models.py:345
msgid "Must be an integer value"
msgstr ""
-#: common/models.py:382
+#: common/models.py:368
msgid "Value must be a boolean value"
msgstr ""
-#: common/models.py:393
+#: common/models.py:379
msgid "Value must be an integer value"
msgstr ""
-#: common/models.py:416
+#: common/models.py:402
msgid "Key string must be unique"
msgstr ""
-#: common/models.py:523
+#: common/models.py:509
msgid "InvenTree Instance Name"
msgstr "Nazwa instancji InvenTree"
-#: common/models.py:525
+#: common/models.py:511
msgid "String descriptor for the server instance"
msgstr ""
-#: common/models.py:529
+#: common/models.py:515
msgid "Use instance name"
msgstr ""
-#: common/models.py:530
+#: common/models.py:516
msgid "Use the instance name in the title-bar"
msgstr ""
-#: common/models.py:536 company/models.py:97 company/models.py:98
+#: common/models.py:522 company/models.py:99 company/models.py:100
msgid "Company name"
msgstr "Nazwa firmy"
-#: common/models.py:537
+#: common/models.py:523
msgid "Internal company name"
msgstr ""
-#: common/models.py:542
+#: common/models.py:528
msgid "Base URL"
msgstr "Bazowy URL"
-#: common/models.py:543
+#: common/models.py:529
msgid "Base URL for server instance"
msgstr "Bazowy adres URL dla instancji serwera"
-#: common/models.py:549
+#: common/models.py:535
msgid "Default Currency"
msgstr ""
-#: common/models.py:550
+#: common/models.py:536
msgid "Default currency"
msgstr ""
-#: common/models.py:556
+#: common/models.py:542
msgid "Download from URL"
msgstr "Pobierz z adresu URL"
-#: common/models.py:557
+#: common/models.py:543
msgid "Allow download of remote images and files from external URL"
msgstr "Zezwól na pobieranie zewnętrznych obrazów i plików z zewnętrznego URL"
-#: common/models.py:563
+#: common/models.py:549
msgid "Barcode Support"
msgstr "Obsługa kodu kreskowego"
-#: common/models.py:564
+#: common/models.py:550
msgid "Enable barcode scanner support"
msgstr "Włącz obsługę skanera kodów"
-#: common/models.py:570
+#: common/models.py:556
msgid "IPN Regex"
msgstr "Wyrażenie regularne IPN"
-#: common/models.py:571
+#: common/models.py:557
msgid "Regular expression pattern for matching Part IPN"
msgstr ""
-#: common/models.py:575
+#: common/models.py:561
msgid "Allow Duplicate IPN"
msgstr "Zezwól na powtarzający się IPN"
-#: common/models.py:576
+#: common/models.py:562
msgid "Allow multiple parts to share the same IPN"
msgstr ""
-#: common/models.py:582
+#: common/models.py:568
msgid "Allow Editing IPN"
msgstr "Zezwól na edycję IPN"
-#: common/models.py:583
+#: common/models.py:569
msgid "Allow changing the IPN value while editing a part"
msgstr ""
-#: common/models.py:589
+#: common/models.py:575
msgid "Copy Part BOM Data"
msgstr "Skopiuj BOM komponentu"
-#: common/models.py:590
+#: common/models.py:576
msgid "Copy BOM data by default when duplicating a part"
msgstr ""
-#: common/models.py:596
+#: common/models.py:582
msgid "Copy Part Parameter Data"
msgstr ""
-#: common/models.py:597
+#: common/models.py:583
msgid "Copy parameter data by default when duplicating a part"
msgstr ""
-#: common/models.py:603
+#: common/models.py:589
msgid "Copy Part Test Data"
msgstr ""
-#: common/models.py:604
+#: common/models.py:590
msgid "Copy test data by default when duplicating a part"
msgstr ""
-#: common/models.py:610
+#: common/models.py:596
msgid "Copy Category Parameter Templates"
msgstr ""
-#: common/models.py:611
+#: common/models.py:597
msgid "Copy category parameter templates when creating a part"
msgstr ""
-#: common/models.py:617 part/models.py:2236 report/models.py:187
-#: stock/forms.py:224 templates/js/translated/table_filters.js:25
-#: templates/js/translated/table_filters.js:329
+#: common/models.py:603 part/models.py:2252 report/models.py:187
+#: stock/forms.py:224 templates/js/translated/table_filters.js:38
+#: templates/js/translated/table_filters.js:342
msgid "Template"
msgstr "Szablon"
-#: common/models.py:618
+#: common/models.py:604
msgid "Parts are templates by default"
msgstr ""
-#: common/models.py:624 part/models.py:803
-#: templates/js/translated/table_filters.js:133
-#: templates/js/translated/table_filters.js:341
+#: common/models.py:610 part/models.py:805
+#: templates/js/translated/table_filters.js:146
+#: templates/js/translated/table_filters.js:354
msgid "Assembly"
msgstr "Złożenie"
-#: common/models.py:625
+#: common/models.py:611
msgid "Parts can be assembled from other components by default"
msgstr ""
-#: common/models.py:631 part/models.py:809
-#: templates/js/translated/table_filters.js:345
+#: common/models.py:617 part/models.py:811
+#: templates/js/translated/table_filters.js:358
msgid "Component"
msgstr "Komponent"
-#: common/models.py:632
+#: common/models.py:618
msgid "Parts can be used as sub-components by default"
msgstr ""
-#: common/models.py:638 part/models.py:820
+#: common/models.py:624 part/models.py:822
msgid "Purchaseable"
msgstr "Możliwość zakupu"
-#: common/models.py:639
+#: common/models.py:625
msgid "Parts are purchaseable by default"
msgstr "Części są domyślnie z możliwością zakupu"
-#: common/models.py:645 part/models.py:825
-#: templates/js/translated/table_filters.js:353
+#: common/models.py:631 part/models.py:827
+#: templates/js/translated/table_filters.js:366
msgid "Salable"
msgstr "Możliwość sprzedaży"
-#: common/models.py:646
+#: common/models.py:632
msgid "Parts are salable by default"
msgstr "Części są domyślnie z możliwością sprzedaży"
-#: common/models.py:652 part/models.py:815
-#: templates/js/translated/table_filters.js:33
-#: templates/js/translated/table_filters.js:357
+#: common/models.py:638 part/models.py:817
+#: templates/js/translated/table_filters.js:46
+#: templates/js/translated/table_filters.js:370
msgid "Trackable"
msgstr "Możliwość śledzenia"
-#: common/models.py:653
+#: common/models.py:639
msgid "Parts are trackable by default"
msgstr "Części są domyślnie z możliwością śledzenia"
-#: common/models.py:659 part/models.py:835
-#: part/templates/part/part_base.html:61
-#: templates/js/translated/table_filters.js:29
+#: common/models.py:645 part/models.py:837
+#: part/templates/part/part_base.html:66
+#: templates/js/translated/table_filters.js:42
msgid "Virtual"
msgstr "Wirtualny"
-#: common/models.py:660
+#: common/models.py:646
msgid "Parts are virtual by default"
msgstr "Części są domyślnie wirtualne"
-#: common/models.py:667
+#: common/models.py:653
msgid "Show Quantity in Forms"
msgstr "Pokaż ilość w formularzach"
-#: common/models.py:668
+#: common/models.py:654
msgid "Display available part quantity in some forms"
msgstr ""
-#: common/models.py:674
+#: common/models.py:660
msgid "Show Import in Views"
msgstr ""
-#: common/models.py:675
+#: common/models.py:661
msgid "Display the import wizard in some part views"
msgstr ""
-#: common/models.py:681
+#: common/models.py:667
msgid "Show Price in Forms"
msgstr ""
-#: common/models.py:682
+#: common/models.py:668
msgid "Display part price in some forms"
msgstr ""
-#: common/models.py:688
+#: common/models.py:674
msgid "Show related parts"
msgstr ""
-#: common/models.py:689
+#: common/models.py:675
msgid "Display related parts for a part"
msgstr ""
-#: common/models.py:695
+#: common/models.py:681
msgid "Create initial stock"
msgstr ""
-#: common/models.py:696
+#: common/models.py:682
msgid "Create initial stock on part creation"
msgstr ""
-#: common/models.py:702
+#: common/models.py:688
msgid "Internal Prices"
msgstr ""
-#: common/models.py:703
+#: common/models.py:689
msgid "Enable internal prices for parts"
msgstr ""
-#: common/models.py:709
+#: common/models.py:695
msgid "Internal Price as BOM-Price"
msgstr ""
-#: common/models.py:710
+#: common/models.py:696
msgid "Use the internal price (if set) in BOM-price calculations"
msgstr ""
-#: common/models.py:716 templates/stats.html:25
+#: common/models.py:702 templates/stats.html:25
msgid "Debug Mode"
msgstr "Tryb Debugowania"
-#: common/models.py:717
+#: common/models.py:703
msgid "Generate reports in debug mode (HTML output)"
msgstr ""
-#: common/models.py:723
+#: common/models.py:709
msgid "Page Size"
msgstr "Rozmiar strony"
-#: common/models.py:724
+#: common/models.py:710
msgid "Default page size for PDF reports"
msgstr ""
-#: common/models.py:734
+#: common/models.py:720
msgid "Test Reports"
msgstr "Raporty testów"
-#: common/models.py:735
+#: common/models.py:721
msgid "Enable generation of test reports"
msgstr "Włącz generowanie raportów testów"
-#: common/models.py:741
+#: common/models.py:727
msgid "Stock Expiry"
msgstr ""
-#: common/models.py:742
+#: common/models.py:728
msgid "Enable stock expiry functionality"
msgstr ""
-#: common/models.py:748
+#: common/models.py:734
msgid "Sell Expired Stock"
msgstr ""
-#: common/models.py:749
+#: common/models.py:735
msgid "Allow sale of expired stock"
msgstr ""
-#: common/models.py:755
+#: common/models.py:741
msgid "Stock Stale Time"
msgstr ""
-#: common/models.py:756
+#: common/models.py:742
msgid "Number of days stock items are considered stale before expiring"
msgstr ""
-#: common/models.py:758
+#: common/models.py:744
msgid "days"
msgstr "dni"
-#: common/models.py:763
+#: common/models.py:749
msgid "Build Expired Stock"
msgstr ""
-#: common/models.py:764
+#: common/models.py:750
msgid "Allow building with expired stock"
msgstr ""
-#: common/models.py:770
+#: common/models.py:756
msgid "Stock Ownership Control"
msgstr ""
-#: common/models.py:771
+#: common/models.py:757
msgid "Enable ownership control over stock locations and items"
msgstr ""
-#: common/models.py:777
+#: common/models.py:763
msgid "Group by Part"
msgstr "Grupuj według komponentu"
-#: common/models.py:778
+#: common/models.py:764
msgid "Group stock items by part reference in table views"
msgstr ""
-#: common/models.py:784
+#: common/models.py:770
msgid "Build Order Reference Prefix"
msgstr ""
-#: common/models.py:785
+#: common/models.py:771
msgid "Prefix value for build order reference"
msgstr ""
-#: common/models.py:790
+#: common/models.py:776
msgid "Build Order Reference Regex"
msgstr ""
-#: common/models.py:791
+#: common/models.py:777
msgid "Regular expression pattern for matching build order reference"
msgstr ""
-#: common/models.py:795
+#: common/models.py:781
msgid "Sales Order Reference Prefix"
msgstr ""
-#: common/models.py:796
+#: common/models.py:782
msgid "Prefix value for sales order reference"
msgstr ""
-#: common/models.py:801
+#: common/models.py:787
msgid "Purchase Order Reference Prefix"
msgstr ""
-#: common/models.py:802
+#: common/models.py:788
msgid "Prefix value for purchase order reference"
msgstr ""
-#: common/models.py:826
+#: common/models.py:794
+msgid "Enable build"
+msgstr ""
+
+#: common/models.py:795
+msgid "Enable build functionality in InvenTree interface"
+msgstr ""
+
+#: common/models.py:800
+msgid "Enable buy"
+msgstr ""
+
+#: common/models.py:801
+msgid "Enable buy functionality in InvenTree interface"
+msgstr ""
+
+#: common/models.py:806
+msgid "Enable sell"
+msgstr ""
+
+#: common/models.py:807
+msgid "Enable sell functionality in InvenTree interface"
+msgstr ""
+
+#: common/models.py:812
+msgid "Enable stock"
+msgstr ""
+
+#: common/models.py:813
+msgid "Enable stock functionality in InvenTree interface"
+msgstr ""
+
+#: common/models.py:818
+msgid "Enable SO"
+msgstr ""
+
+#: common/models.py:819
+msgid "Enable SO functionality in InvenTree interface"
+msgstr ""
+
+#: common/models.py:824
+msgid "Enable PO"
+msgstr ""
+
+#: common/models.py:825
+msgid "Enable PO functionality in InvenTree interface"
+msgstr ""
+
+#: common/models.py:850
msgid "Show starred parts"
msgstr ""
-#: common/models.py:827
+#: common/models.py:851
msgid "Show starred parts on the homepage"
msgstr ""
-#: common/models.py:832
+#: common/models.py:856
msgid "Show latest parts"
msgstr ""
-#: common/models.py:833
+#: common/models.py:857
msgid "Show latest parts on the homepage"
msgstr ""
-#: common/models.py:838
+#: common/models.py:862
msgid "Recent Part Count"
msgstr ""
-#: common/models.py:839
+#: common/models.py:863
msgid "Number of recent parts to display on index page"
msgstr ""
-#: common/models.py:845
+#: common/models.py:869
msgid "Show unvalidated BOMs"
msgstr ""
-#: common/models.py:846
+#: common/models.py:870
msgid "Show BOMs that await validation on the homepage"
msgstr ""
-#: common/models.py:851
+#: common/models.py:875
msgid "Show recent stock changes"
msgstr ""
-#: common/models.py:852
+#: common/models.py:876
msgid "Show recently changed stock items on the homepage"
msgstr ""
-#: common/models.py:857
+#: common/models.py:881
msgid "Recent Stock Count"
msgstr ""
-#: common/models.py:858
+#: common/models.py:882
msgid "Number of recent stock items to display on index page"
msgstr ""
-#: common/models.py:863
+#: common/models.py:887
msgid "Show low stock"
msgstr ""
-#: common/models.py:864
+#: common/models.py:888
msgid "Show low stock items on the homepage"
msgstr ""
-#: common/models.py:869
+#: common/models.py:893
msgid "Show depleted stock"
msgstr ""
-#: common/models.py:870
+#: common/models.py:894
msgid "Show depleted stock items on the homepage"
msgstr ""
-#: common/models.py:875
+#: common/models.py:899
msgid "Show needed stock"
msgstr ""
-#: common/models.py:876
+#: common/models.py:900
msgid "Show stock items needed for builds on the homepage"
msgstr ""
-#: common/models.py:881
+#: common/models.py:905
msgid "Show expired stock"
msgstr ""
-#: common/models.py:882
+#: common/models.py:906
msgid "Show expired stock items on the homepage"
msgstr ""
-#: common/models.py:887
+#: common/models.py:911
msgid "Show stale stock"
msgstr ""
-#: common/models.py:888
+#: common/models.py:912
msgid "Show stale stock items on the homepage"
msgstr ""
-#: common/models.py:893
+#: common/models.py:917
msgid "Show pending builds"
msgstr ""
-#: common/models.py:894
+#: common/models.py:918
msgid "Show pending builds on the homepage"
msgstr ""
-#: common/models.py:899
+#: common/models.py:923
msgid "Show overdue builds"
msgstr ""
-#: common/models.py:900
+#: common/models.py:924
msgid "Show overdue builds on the homepage"
msgstr ""
-#: common/models.py:905
+#: common/models.py:929
msgid "Show outstanding POs"
msgstr ""
-#: common/models.py:906
+#: common/models.py:930
msgid "Show outstanding POs on the homepage"
msgstr ""
-#: common/models.py:911
+#: common/models.py:935
msgid "Show overdue POs"
msgstr ""
-#: common/models.py:912
+#: common/models.py:936
msgid "Show overdue POs on the homepage"
msgstr ""
-#: common/models.py:917
+#: common/models.py:941
msgid "Show outstanding SOs"
msgstr ""
-#: common/models.py:918
+#: common/models.py:942
msgid "Show outstanding SOs on the homepage"
msgstr ""
-#: common/models.py:923
+#: common/models.py:947
msgid "Show overdue SOs"
msgstr ""
-#: common/models.py:924
+#: common/models.py:948
msgid "Show overdue SOs on the homepage"
msgstr ""
-#: common/models.py:930
+#: common/models.py:954
msgid "Inline label display"
msgstr ""
-#: common/models.py:931
+#: common/models.py:955
msgid "Display PDF labels in the browser, instead of downloading as a file"
msgstr ""
-#: common/models.py:937
+#: common/models.py:961
msgid "Inline report display"
msgstr ""
-#: common/models.py:938
+#: common/models.py:962
msgid "Display PDF reports in the browser, instead of downloading as a file"
msgstr ""
-#: common/models.py:944
+#: common/models.py:968
msgid "Search Preview Results"
msgstr ""
-#: common/models.py:945
+#: common/models.py:969
msgid "Number of results to show in search preview window"
msgstr ""
-#: common/models.py:1002 company/forms.py:43
+#: common/models.py:1026 company/forms.py:43
msgid "Price break quantity"
msgstr ""
-#: common/models.py:1009 company/templates/company/supplier_part.html:231
-#: templates/js/translated/part.js:1153
+#: common/models.py:1033 company/templates/company/supplier_part.html:231
+#: templates/js/translated/part.js:1322
msgid "Price"
msgstr "Cena"
-#: common/models.py:1010
+#: common/models.py:1034
msgid "Unit price at specified quantity"
msgstr ""
-#: common/models.py:1103
+#: common/models.py:1127
msgid "Default"
msgstr "Domyślny"
@@ -2123,7 +2200,7 @@ msgstr ""
#: order/templates/order/po_navbar.html:19
#: order/templates/order/po_navbar.html:22
#: order/templates/order/purchase_order_detail.html:26 order/views.py:290
-#: part/templates/part/bom_upload/upload_file.html:45
+#: part/templates/part/bom_upload/upload_file.html:65
#: part/templates/part/import_wizard/part_upload.html:45 part/views.py:268
#: part/views.py:882
msgid "Upload File"
@@ -2154,7 +2231,7 @@ msgstr ""
#: order/templates/order/order_wizard/po_upload.html:40
#: 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:43
+#: part/templates/part/bom_upload/upload_file.html:63
#: 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:43
@@ -2169,244 +2246,249 @@ msgstr "URL"
msgid "Image URL"
msgstr "URL zdjęcia"
-#: company/models.py:102
+#: company/models.py:104
msgid "Company description"
msgstr "Opis firmy"
-#: company/models.py:103
+#: company/models.py:105
msgid "Description of the company"
msgstr "Opis firmy"
-#: company/models.py:109 company/templates/company/company_base.html:70
-#: templates/js/translated/company.js:303
+#: company/models.py:111 company/templates/company/company_base.html:70
+#: templates/js/translated/company.js:348
msgid "Website"
msgstr "Strona WWW"
-#: company/models.py:110
+#: company/models.py:112
msgid "Company website URL"
msgstr "Witryna internetowa firmy"
-#: company/models.py:114 company/templates/company/company_base.html:88
+#: company/models.py:116 company/templates/company/company_base.html:88
msgid "Address"
msgstr "Adres"
-#: company/models.py:115
+#: company/models.py:117
msgid "Company address"
msgstr "Adres firmy"
-#: company/models.py:118
+#: company/models.py:120
msgid "Phone number"
msgstr "Numer telefonu"
-#: company/models.py:119
+#: company/models.py:121
msgid "Contact phone number"
msgstr "Numer telefonu kontaktowego"
-#: company/models.py:122 company/templates/company/company_base.html:102
+#: company/models.py:124 company/templates/company/company_base.html:102
msgid "Email"
msgstr "Adres E-Mail"
-#: company/models.py:122
+#: company/models.py:124
msgid "Contact email address"
msgstr "Kontaktowy adres e-mail"
-#: company/models.py:125 company/templates/company/company_base.html:109
+#: company/models.py:127 company/templates/company/company_base.html:109
msgid "Contact"
msgstr "Kontakt"
-#: company/models.py:126
+#: company/models.py:128
msgid "Point of contact"
msgstr "Punkt kontaktowy"
-#: company/models.py:128 company/models.py:345 company/models.py:513
-#: order/models.py:160 part/models.py:712
+#: company/models.py:130 company/models.py:347 company/models.py:563
+#: order/models.py:160 part/models.py:714
#: report/templates/report/inventree_build_order_base.html:165
-#: templates/js/translated/company.js:486
-#: templates/js/translated/company.js:768 templates/js/translated/part.js:819
+#: templates/js/translated/company.js:535
+#: templates/js/translated/company.js:823 templates/js/translated/part.js:972
msgid "Link"
msgstr "Łącze"
-#: company/models.py:128
+#: company/models.py:130
msgid "Link to external company information"
msgstr "Link do informacji o zewnętrznym przedsiębiorstwie"
-#: company/models.py:136 part/models.py:722
+#: company/models.py:138 part/models.py:724
msgid "Image"
msgstr "Obraz"
-#: company/models.py:141
+#: company/models.py:143
msgid "is customer"
msgstr "jest klientem"
-#: company/models.py:141
+#: company/models.py:143
msgid "Do you sell items to this company?"
msgstr "Czy sprzedajesz produkty tej firmie?"
-#: company/models.py:143
+#: company/models.py:145
msgid "is supplier"
msgstr "jest dostawcą"
-#: company/models.py:143
+#: company/models.py:145
msgid "Do you purchase items from this company?"
msgstr "Czy kupujesz przedmioty od tej firmy?"
-#: company/models.py:145
+#: company/models.py:147
msgid "is manufacturer"
msgstr "jest producentem"
-#: company/models.py:145
+#: company/models.py:147
msgid "Does this company manufacture parts?"
msgstr "Czy to przedsiębiorstwo produkuje części?"
-#: company/models.py:149 company/serializers.py:245
-#: company/templates/company/company_base.html:76
+#: company/models.py:151 company/serializers.py:264
+#: company/templates/company/company_base.html:76 stock/serializers.py:155
msgid "Currency"
msgstr "Waluta"
-#: company/models.py:152
+#: company/models.py:154
msgid "Default currency used for this company"
msgstr ""
-#: company/models.py:317 company/models.py:484 stock/models.py:448
+#: company/models.py:319 company/models.py:534 stock/models.py:454
#: stock/templates/stock/item_base.html:237
msgid "Base Part"
msgstr "Część bazowa"
-#: company/models.py:321 company/models.py:488 order/views.py:1082
+#: company/models.py:323 company/models.py:538 order/views.py:1082
msgid "Select part"
msgstr "Wybierz część"
-#: company/models.py:332 company/templates/company/company_base.html:116
+#: company/models.py:334 company/templates/company/company_base.html:116
#: company/templates/company/manufacturer_part.html:89
#: company/templates/company/supplier_part.html:98 part/bom.py:170
#: part/bom.py:241 stock/templates/stock/item_base.html:366
-#: templates/js/translated/company.js:287
-#: templates/js/translated/company.js:463
-#: templates/js/translated/company.js:739
+#: templates/js/translated/company.js:332
+#: templates/js/translated/company.js:512
+#: templates/js/translated/company.js:794 templates/js/translated/part.js:222
msgid "Manufacturer"
msgstr "Producent"
-#: company/models.py:333
+#: company/models.py:335 templates/js/translated/part.js:223
msgid "Select manufacturer"
msgstr "Wybierz producenta"
-#: company/models.py:339 company/templates/company/manufacturer_part.html:93
-#: company/templates/company/supplier_part.html:106
-#: order/templates/order/purchase_order_detail.html:331 part/bom.py:171
-#: part/bom.py:242 templates/js/translated/company.js:479
-#: templates/js/translated/company.js:757
+#: company/models.py:341 company/templates/company/manufacturer_part.html:93
+#: company/templates/company/supplier_part.html:106 part/bom.py:171
+#: part/bom.py:242 templates/js/translated/company.js:528
+#: templates/js/translated/company.js:812 templates/js/translated/order.js:505
+#: templates/js/translated/part.js:233
msgid "MPN"
msgstr "MPN"
-#: company/models.py:340
+#: company/models.py:342 templates/js/translated/part.js:234
msgid "Manufacturer Part Number"
msgstr "Numer producenta"
-#: company/models.py:346
+#: company/models.py:348
msgid "URL for external manufacturer part link"
msgstr ""
-#: company/models.py:352
+#: company/models.py:354
msgid "Manufacturer part description"
msgstr ""
-#: company/models.py:406 company/models.py:507
+#: company/models.py:408 company/models.py:557
#: company/templates/company/manufacturer_part.html:6
#: company/templates/company/manufacturer_part.html:23
#: stock/templates/stock/item_base.html:376
msgid "Manufacturer Part"
msgstr "Część producenta"
-#: company/models.py:413
+#: company/models.py:415
msgid "Parameter name"
msgstr ""
-#: company/models.py:419
+#: company/models.py:421
#: report/templates/report/inventree_test_report_base.html:90
-#: stock/models.py:1808 templates/InvenTree/settings/header.html:8
-#: templates/js/translated/company.js:589 templates/js/translated/part.js:480
-#: templates/js/translated/stock.js:505
+#: stock/models.py:1819 templates/InvenTree/settings/header.html:8
+#: templates/js/translated/company.js:642 templates/js/translated/part.js:612
+#: templates/js/translated/stock.js:576
msgid "Value"
msgstr ""
-#: company/models.py:420
+#: company/models.py:422
msgid "Parameter value"
msgstr ""
-#: company/models.py:426 part/models.py:797 part/models.py:2204
-#: templates/js/translated/company.js:595 templates/js/translated/part.js:486
+#: company/models.py:428 part/models.py:799 part/models.py:2220
+#: templates/js/translated/company.js:648 templates/js/translated/part.js:618
msgid "Units"
msgstr "Jednostki"
-#: company/models.py:427
+#: company/models.py:429
msgid "Parameter units"
msgstr ""
-#: company/models.py:494 company/templates/company/company_base.html:121
+#: company/models.py:501
+msgid "Linked manufacturer part must reference the same base part"
+msgstr ""
+
+#: company/models.py:544 company/templates/company/company_base.html:121
#: company/templates/company/supplier_part.html:88 order/models.py:260
#: order/templates/order/order_base.html:92
#: order/templates/order/order_wizard/select_pos.html:30 part/bom.py:175
#: part/bom.py:286 stock/templates/stock/item_base.html:383
-#: templates/js/translated/company.js:291
-#: templates/js/translated/company.js:713 templates/js/translated/order.js:254
+#: templates/js/translated/company.js:336
+#: templates/js/translated/company.js:768 templates/js/translated/order.js:328
+#: templates/js/translated/part.js:203
msgid "Supplier"
msgstr "Dostawca"
-#: company/models.py:495
+#: company/models.py:545 templates/js/translated/part.js:204
msgid "Select supplier"
msgstr "Wybierz dostawcę"
-#: company/models.py:500 company/templates/company/supplier_part.html:92
-#: order/templates/order/purchase_order_detail.html:318 part/bom.py:176
-#: part/bom.py:287
+#: company/models.py:550 company/templates/company/supplier_part.html:92
+#: part/bom.py:176 part/bom.py:287 templates/js/translated/order.js:492
+#: templates/js/translated/part.js:214
msgid "SKU"
msgstr "SKU"
-#: company/models.py:501
+#: company/models.py:551 templates/js/translated/part.js:215
msgid "Supplier stock keeping unit"
msgstr ""
-#: company/models.py:508
+#: company/models.py:558
msgid "Select manufacturer part"
msgstr ""
-#: company/models.py:514
+#: company/models.py:564
msgid "URL for external supplier part link"
msgstr ""
-#: company/models.py:520
+#: company/models.py:570
msgid "Supplier part description"
msgstr ""
-#: company/models.py:525 company/templates/company/supplier_part.html:120
-#: part/models.py:2352 report/templates/report/inventree_po_report.html:93
+#: company/models.py:575 company/templates/company/supplier_part.html:120
+#: part/models.py:2368 report/templates/report/inventree_po_report.html:93
#: report/templates/report/inventree_so_report.html:93
msgid "Note"
msgstr "Uwaga"
-#: company/models.py:529 part/models.py:1590
+#: company/models.py:579 part/models.py:1599
msgid "base cost"
msgstr "koszt podstawowy"
-#: company/models.py:529 part/models.py:1590
+#: company/models.py:579 part/models.py:1599
msgid "Minimum charge (e.g. stocking fee)"
msgstr ""
-#: company/models.py:531 company/templates/company/supplier_part.html:113
-#: stock/models.py:472 stock/templates/stock/item_base.html:324
-#: templates/js/translated/company.js:789 templates/js/translated/stock.js:1086
+#: company/models.py:581 company/templates/company/supplier_part.html:113
+#: stock/models.py:478 stock/templates/stock/item_base.html:324
+#: templates/js/translated/company.js:844 templates/js/translated/stock.js:1057
msgid "Packaging"
msgstr "Opakowanie"
-#: company/models.py:531
+#: company/models.py:581
msgid "Part packaging"
msgstr "Opakowanie części"
-#: company/models.py:533 part/models.py:1592
+#: company/models.py:583 part/models.py:1601
msgid "multiple"
msgstr "wielokrotność"
-#: company/models.py:533
+#: company/models.py:583
msgid "Order multiple"
msgstr ""
@@ -2420,7 +2502,7 @@ msgstr ""
#: company/templates/company/company_base.html:9
#: company/templates/company/company_base.html:35
-#: templates/InvenTree/search.html:304 templates/js/translated/company.js:276
+#: templates/InvenTree/search.html:304 templates/js/translated/company.js:321
msgid "Company"
msgstr "Firma"
@@ -2435,7 +2517,7 @@ msgid "Download image from URL"
msgstr ""
#: company/templates/company/company_base.html:46
-#: templates/js/translated/order.js:83
+#: templates/js/translated/order.js:117
msgid "Create Purchase Order"
msgstr ""
@@ -2460,16 +2542,16 @@ msgstr ""
msgid "Phone"
msgstr "Telefon"
-#: company/templates/company/company_base.html:126 order/models.py:544
-#: order/templates/order/sales_order_base.html:94 stock/models.py:490
-#: stock/models.py:491 stock/templates/stock/item_base.html:276
-#: templates/js/translated/company.js:283 templates/js/translated/order.js:351
-#: templates/js/translated/stock.js:1467
+#: company/templates/company/company_base.html:126 order/models.py:550
+#: order/templates/order/sales_order_base.html:94 stock/models.py:496
+#: stock/models.py:497 stock/templates/stock/item_base.html:276
+#: templates/js/translated/company.js:328 templates/js/translated/order.js:692
+#: templates/js/translated/stock.js:1608
msgid "Customer"
msgstr "Klient"
#: company/templates/company/company_base.html:193
-#: part/templates/part/part_base.html:405
+#: part/templates/part/part_base.html:418
msgid "Upload Image"
msgstr ""
@@ -2490,8 +2572,8 @@ msgstr "Utwórz nowego dostawcę części"
msgid "New Supplier Part"
msgstr "Nowy dostawca części"
-#: company/templates/company/detail.html:28
-#: company/templates/company/detail.html:70
+#: company/templates/company/detail.html:27
+#: company/templates/company/detail.html:67
#: company/templates/company/manufacturer_part.html:112
#: company/templates/company/manufacturer_part.html:136
#: part/templates/part/category.html:135 part/templates/part/detail.html:292
@@ -2499,106 +2581,106 @@ msgstr "Nowy dostawca części"
msgid "Options"
msgstr "Opcje"
-#: company/templates/company/detail.html:33
-#: company/templates/company/detail.html:75
+#: company/templates/company/detail.html:32
+#: company/templates/company/detail.html:72
#: part/templates/part/category.html:140
msgid "Order parts"
msgstr "Zamów części"
-#: company/templates/company/detail.html:36
-#: company/templates/company/detail.html:78
+#: company/templates/company/detail.html:35
+#: company/templates/company/detail.html:75
msgid "Delete parts"
msgstr "Usuń części"
-#: company/templates/company/detail.html:36
-#: company/templates/company/detail.html:78
+#: company/templates/company/detail.html:35
+#: company/templates/company/detail.html:75
msgid "Delete Parts"
msgstr "Usuń części"
-#: company/templates/company/detail.html:56 templates/InvenTree/search.html:149
+#: company/templates/company/detail.html:54 templates/InvenTree/search.html:149
msgid "Manufacturer Parts"
msgstr "Części producenta"
-#: company/templates/company/detail.html:64
+#: company/templates/company/detail.html:62
msgid "Create new manufacturer part"
msgstr "Utwórz nową część producenta"
-#: company/templates/company/detail.html:65 part/templates/part/detail.html:312
+#: company/templates/company/detail.html:63 part/templates/part/detail.html:312
msgid "New Manufacturer Part"
msgstr "Nowa część producenta"
-#: company/templates/company/detail.html:97
+#: company/templates/company/detail.html:93
msgid "Supplier Stock"
msgstr "Zapasy dostawcy"
-#: company/templates/company/detail.html:106
-#: company/templates/company/navbar.html:40
-#: company/templates/company/navbar.html:43
+#: company/templates/company/detail.html:102
+#: company/templates/company/navbar.html:46
+#: company/templates/company/navbar.html:49
#: order/templates/order/purchase_orders.html:8
#: order/templates/order/purchase_orders.html:13
-#: part/templates/part/detail.html:50 part/templates/part/navbar.html:71
-#: part/templates/part/navbar.html:74 templates/InvenTree/index.html:260
+#: part/templates/part/detail.html:50 part/templates/part/navbar.html:82
+#: part/templates/part/navbar.html:85 templates/InvenTree/index.html:260
#: templates/InvenTree/search.html:325
#: templates/InvenTree/settings/navbar.html:107
-#: templates/InvenTree/settings/navbar.html:109 templates/navbar.html:37
+#: templates/InvenTree/settings/navbar.html:109 templates/navbar.html:44
#: users/models.py:45
msgid "Purchase Orders"
msgstr ""
-#: company/templates/company/detail.html:112
+#: company/templates/company/detail.html:108
#: order/templates/order/purchase_orders.html:20
msgid "Create new purchase order"
msgstr ""
-#: company/templates/company/detail.html:113
+#: company/templates/company/detail.html:109
#: order/templates/order/purchase_orders.html:21
msgid "New Purchase Order"
msgstr ""
-#: company/templates/company/detail.html:128
-#: company/templates/company/navbar.html:49
-#: company/templates/company/navbar.html:52
+#: company/templates/company/detail.html:124
+#: company/templates/company/navbar.html:55
+#: company/templates/company/navbar.html:58
#: order/templates/order/sales_orders.html:8
#: order/templates/order/sales_orders.html:13
-#: part/templates/part/detail.html:71 part/templates/part/navbar.html:79
-#: part/templates/part/navbar.html:82 templates/InvenTree/index.html:291
+#: part/templates/part/detail.html:71 part/templates/part/navbar.html:91
+#: part/templates/part/navbar.html:94 templates/InvenTree/index.html:291
#: templates/InvenTree/search.html:345
#: templates/InvenTree/settings/navbar.html:113
-#: templates/InvenTree/settings/navbar.html:115 templates/navbar.html:46
+#: templates/InvenTree/settings/navbar.html:115 templates/navbar.html:55
#: users/models.py:46
msgid "Sales Orders"
msgstr ""
-#: company/templates/company/detail.html:134
+#: company/templates/company/detail.html:130
#: order/templates/order/sales_orders.html:20
msgid "Create new sales order"
msgstr ""
-#: company/templates/company/detail.html:135
+#: company/templates/company/detail.html:131
#: order/templates/order/sales_orders.html:21
msgid "New Sales Order"
msgstr ""
-#: company/templates/company/detail.html:151
-#: company/templates/company/navbar.html:55
-#: company/templates/company/navbar.html:58
-#: templates/js/translated/build.js:597
+#: company/templates/company/detail.html:147
+#: company/templates/company/navbar.html:61
+#: company/templates/company/navbar.html:64
+#: templates/js/translated/build.js:620
msgid "Assigned Stock"
msgstr ""
-#: company/templates/company/detail.html:169
+#: company/templates/company/detail.html:165
msgid "Company Notes"
msgstr ""
#: company/templates/company/detail.html:364
#: company/templates/company/manufacturer_part.html:200
-#: part/templates/part/detail.html:826
+#: part/templates/part/detail.html:357
msgid "Delete Supplier Parts?"
msgstr ""
#: company/templates/company/detail.html:365
#: company/templates/company/manufacturer_part.html:201
-#: part/templates/part/detail.html:827
+#: part/templates/part/detail.html:358
msgid "All selected supplier parts will be deleted"
msgstr ""
@@ -2609,17 +2691,17 @@ msgstr "Lista dostawców"
#: company/templates/company/manufacturer_part.html:40
#: company/templates/company/supplier_part.html:40
#: company/templates/company/supplier_part.html:146
-#: part/templates/part/detail.html:55 part/templates/part/part_base.html:109
+#: part/templates/part/detail.html:55 part/templates/part/part_base.html:116
msgid "Order part"
msgstr "Zamów część"
#: company/templates/company/manufacturer_part.html:45
-#: templates/js/translated/company.js:511
+#: templates/js/translated/company.js:560
msgid "Edit manufacturer part"
msgstr "Edytuj część producenta"
#: company/templates/company/manufacturer_part.html:49
-#: templates/js/translated/company.js:512
+#: templates/js/translated/company.js:561
msgid "Delete manufacturer part"
msgstr "Usuń cześć producenta"
@@ -2634,9 +2716,9 @@ msgstr "Część wewnętrzna"
#: company/templates/company/manufacturer_part.html:103
#: company/templates/company/manufacturer_part_navbar.html:21
-#: company/views.py:49 part/templates/part/navbar.html:65
-#: part/templates/part/navbar.html:68 part/templates/part/prices.html:144
-#: templates/InvenTree/search.html:316 templates/navbar.html:35
+#: company/views.py:49 part/templates/part/navbar.html:75
+#: part/templates/part/navbar.html:78 part/templates/part/prices.html:163
+#: templates/InvenTree/search.html:316 templates/navbar.html:41
msgid "Suppliers"
msgstr "Dostawcy"
@@ -2649,8 +2731,8 @@ msgstr ""
#: company/templates/company/manufacturer_part.html:138
#: company/templates/company/manufacturer_part.html:239
#: part/templates/part/detail.html:214 part/templates/part/detail.html:294
-#: part/templates/part/detail.html:317 templates/js/translated/company.js:377
-#: users/models.py:194
+#: part/templates/part/detail.html:317 templates/js/translated/company.js:424
+#: templates/js/translated/helpers.js:31 users/models.py:194
msgid "Delete"
msgstr "Usuń"
@@ -2659,8 +2741,8 @@ msgstr "Usuń"
#: company/templates/company/manufacturer_part_navbar.html:14
#: part/templates/part/category_navbar.html:38
#: part/templates/part/category_navbar.html:41
-#: part/templates/part/detail.html:155 part/templates/part/navbar.html:14
-#: part/templates/part/navbar.html:17
+#: part/templates/part/detail.html:155 part/templates/part/navbar.html:20
+#: part/templates/part/navbar.html:23
msgid "Parameters"
msgstr "Parametry"
@@ -2676,7 +2758,7 @@ msgid "Delete parameters"
msgstr ""
#: company/templates/company/manufacturer_part.html:176
-#: part/templates/part/detail.html:719
+#: part/templates/part/detail.html:834
msgid "Add Parameter"
msgstr "Dodaj parametr"
@@ -2693,18 +2775,18 @@ msgid "Manufacturer Part Stock"
msgstr ""
#: company/templates/company/manufacturer_part_navbar.html:29
-#: company/templates/company/navbar.html:34
+#: company/templates/company/navbar.html:39
#: company/templates/company/supplier_part_navbar.html:15
-#: part/templates/part/navbar.html:31 stock/api.py:53
+#: part/templates/part/navbar.html:38 stock/api.py:54
#: stock/templates/stock/loc_link.html:7 stock/templates/stock/location.html:36
#: stock/templates/stock/stock_app_base.html:10
#: templates/InvenTree/index.html:150 templates/InvenTree/search.html:196
#: templates/InvenTree/search.html:232
#: templates/InvenTree/settings/navbar.html:95
#: templates/InvenTree/settings/navbar.html:97
-#: templates/js/translated/part.js:401 templates/js/translated/part.js:626
-#: templates/js/translated/part.js:786 templates/js/translated/stock.js:133
-#: templates/js/translated/stock.js:935 templates/navbar.html:26
+#: templates/js/translated/part.js:529 templates/js/translated/part.js:758
+#: templates/js/translated/part.js:934 templates/js/translated/stock.js:202
+#: templates/js/translated/stock.js:850 templates/navbar.html:32
msgid "Stock"
msgstr "Stan"
@@ -2717,41 +2799,41 @@ msgstr ""
msgid "Orders"
msgstr "Zamówienia"
-#: company/templates/company/navbar.html:13
-#: company/templates/company/navbar.html:16
+#: company/templates/company/navbar.html:17
+#: company/templates/company/navbar.html:20
msgid "Manufactured Parts"
msgstr ""
-#: company/templates/company/navbar.html:22
-#: company/templates/company/navbar.html:25
+#: company/templates/company/navbar.html:26
+#: company/templates/company/navbar.html:29
msgid "Supplied Parts"
msgstr "Dostarczone części"
-#: company/templates/company/navbar.html:31 part/templates/part/navbar.html:28
+#: company/templates/company/navbar.html:36 part/templates/part/navbar.html:35
#: stock/templates/stock/location.html:119
#: stock/templates/stock/location.html:134
#: stock/templates/stock/location.html:148
#: stock/templates/stock/location_navbar.html:18
#: stock/templates/stock/location_navbar.html:21
-#: templates/InvenTree/search.html:198 templates/js/translated/stock.js:1366
+#: templates/InvenTree/search.html:198 templates/js/translated/stock.js:1507
#: templates/stats.html:93 templates/stats.html:102 users/models.py:43
msgid "Stock Items"
msgstr ""
#: company/templates/company/supplier_part.html:7
-#: company/templates/company/supplier_part.html:24 stock/models.py:457
+#: company/templates/company/supplier_part.html:24 stock/models.py:463
#: stock/templates/stock/item_base.html:388
-#: templates/js/translated/company.js:729 templates/js/translated/stock.js:1058
+#: templates/js/translated/company.js:784 templates/js/translated/stock.js:1014
msgid "Supplier Part"
msgstr ""
#: company/templates/company/supplier_part.html:44
-#: templates/js/translated/company.js:802
+#: templates/js/translated/company.js:857
msgid "Edit supplier part"
msgstr ""
#: company/templates/company/supplier_part.html:48
-#: templates/js/translated/company.js:803
+#: templates/js/translated/company.js:858
msgid "Delete supplier part"
msgstr ""
@@ -2775,13 +2857,13 @@ msgid "Order Part"
msgstr ""
#: company/templates/company/supplier_part.html:158
-#: part/templates/part/navbar.html:58 part/templates/part/prices.html:7
+#: part/templates/part/navbar.html:67 part/templates/part/prices.html:7
msgid "Pricing Information"
msgstr "Informacja cenowa"
#: company/templates/company/supplier_part.html:164
#: company/templates/company/supplier_part.html:265
-#: part/templates/part/prices.html:253 part/views.py:1722
+#: part/templates/part/prices.html:271 part/views.py:1730
msgid "Add Price Break"
msgstr ""
@@ -2789,11 +2871,11 @@ msgstr ""
msgid "No price break information found"
msgstr ""
-#: company/templates/company/supplier_part.html:199 part/views.py:1784
+#: company/templates/company/supplier_part.html:199 part/views.py:1792
msgid "Delete Price Break"
msgstr ""
-#: company/templates/company/supplier_part.html:213 part/views.py:1770
+#: company/templates/company/supplier_part.html:213 part/views.py:1778
msgid "Edit Price Break"
msgstr "Edytuj przedział cenowy"
@@ -2817,8 +2899,8 @@ msgstr "Cennik"
msgid "New Supplier"
msgstr "Nowy dostawca"
-#: company/views.py:55 part/templates/part/prices.html:148
-#: templates/InvenTree/search.html:306 templates/navbar.html:36
+#: company/views.py:55 part/templates/part/prices.html:167
+#: templates/InvenTree/search.html:306 templates/navbar.html:42
msgid "Manufacturers"
msgstr "Producenci"
@@ -2827,7 +2909,7 @@ msgid "New Manufacturer"
msgstr "Now producent"
#: company/views.py:61 templates/InvenTree/search.html:336
-#: templates/navbar.html:45
+#: templates/navbar.html:53
msgid "Customers"
msgstr "Klienci"
@@ -2929,6 +3011,10 @@ msgstr ""
msgid "Part query filters (comma-separated value of key=value pairs)"
msgstr ""
+#: order/api.py:302
+msgid "Destination location must be specified"
+msgstr ""
+
#: order/forms.py:30 order/templates/order/order_base.html:47
msgid "Place order"
msgstr "Złóż zamówienie"
@@ -2978,11 +3064,11 @@ msgstr "Użytkownik lub grupa odpowiedzialna za to zamówienie"
msgid "Order notes"
msgstr "Notatki do zamówienia"
-#: order/models.py:247 order/models.py:534
+#: order/models.py:247 order/models.py:540
msgid "Order reference"
msgstr "Odniesienie zamówienia"
-#: order/models.py:252 order/models.py:549
+#: order/models.py:252 order/models.py:555
msgid "Purchase order status"
msgstr "Status zamówienia zakupu"
@@ -2991,7 +3077,7 @@ msgid "Company from which the items are being ordered"
msgstr ""
#: order/models.py:264 order/templates/order/order_base.html:98
-#: templates/js/translated/order.js:263
+#: templates/js/translated/order.js:337
msgid "Supplier Reference"
msgstr ""
@@ -3023,7 +3109,7 @@ msgstr ""
msgid "Date order was completed"
msgstr ""
-#: order/models.py:313 stock/models.py:345 stock/models.py:1060
+#: order/models.py:313 stock/models.py:351 stock/models.py:1072
msgid "Quantity must be greater than zero"
msgstr "Ilość musi być większa niż zero"
@@ -3031,150 +3117,182 @@ msgstr "Ilość musi być większa niż zero"
msgid "Part supplier must match PO supplier"
msgstr ""
-#: order/models.py:416
+#: order/models.py:421
msgid "Lines can only be received against an order marked as 'Placed'"
msgstr ""
-#: order/models.py:420
+#: order/models.py:425
msgid "Quantity must be an integer"
msgstr "Wartość musi być liczbą całkowitą"
-#: order/models.py:422
+#: order/models.py:427
msgid "Quantity must be a positive number"
msgstr "Wartość musi być liczbą dodatnią"
-#: order/models.py:545
+#: order/models.py:551
msgid "Company to which the items are being sold"
msgstr ""
-#: order/models.py:551
+#: order/models.py:557
msgid "Customer Reference "
msgstr ""
-#: order/models.py:551
+#: order/models.py:557
msgid "Customer order reference code"
msgstr ""
-#: order/models.py:556
+#: order/models.py:562
msgid "Target date for order completion. Order will be overdue after this date."
msgstr ""
-#: order/models.py:559 templates/js/translated/order.js:392
+#: order/models.py:565 templates/js/translated/order.js:733
msgid "Shipment Date"
msgstr "Data wysyłki"
-#: order/models.py:566
+#: order/models.py:572
msgid "shipped by"
msgstr "wysłane przez"
-#: order/models.py:610
+#: order/models.py:616
msgid "SalesOrder cannot be shipped as it is not currently pending"
msgstr ""
-#: order/models.py:707
+#: order/models.py:713
msgid "Item quantity"
msgstr "Ilość elementów"
-#: order/models.py:713
+#: order/models.py:719
msgid "Line item reference"
msgstr ""
-#: order/models.py:715
+#: order/models.py:721
msgid "Line item notes"
msgstr ""
-#: order/models.py:745 order/models.py:823 templates/js/translated/order.js:442
+#: order/models.py:751 order/models.py:835 templates/js/translated/order.js:785
msgid "Order"
msgstr "Zamówienie"
-#: order/models.py:746 order/templates/order/order_base.html:9
+#: order/models.py:752 order/templates/order/order_base.html:9
#: order/templates/order/order_base.html:24
#: report/templates/report/inventree_po_report.html:77
#: stock/templates/stock/item_base.html:338
-#: templates/js/translated/order.js:232 templates/js/translated/stock.js:1037
-#: templates/js/translated/stock.js:1448
+#: templates/js/translated/order.js:306 templates/js/translated/stock.js:991
+#: templates/js/translated/stock.js:1589
msgid "Purchase Order"
msgstr "Zlecenie zakupu"
-#: order/models.py:767
+#: order/models.py:773
msgid "Supplier part"
msgstr ""
-#: order/models.py:770 order/templates/order/order_base.html:131
-#: order/templates/order/purchase_order_detail.html:388
+#: order/models.py:780 order/templates/order/order_base.html:131
#: order/templates/order/receive_parts.html:22
#: order/templates/order/sales_order_base.html:133
+#: templates/js/translated/order.js:573
msgid "Received"
msgstr "Odebrane"
-#: order/models.py:770
+#: order/models.py:781
msgid "Number of items received"
msgstr ""
-#: order/models.py:776 part/templates/part/prices.html:157 stock/models.py:582
-#: stock/templates/stock/item_base.html:345
-#: templates/js/translated/stock.js:1081
+#: order/models.py:788 part/templates/part/prices.html:176 stock/models.py:588
+#: stock/serializers.py:147 stock/templates/stock/item_base.html:345
+#: templates/js/translated/stock.js:1045
msgid "Purchase Price"
msgstr "Cena zakupu"
-#: order/models.py:777
+#: order/models.py:789
msgid "Unit purchase price"
msgstr "Cena zakupu jednostkowego"
-#: order/models.py:785
+#: order/models.py:797
msgid "Where does the Purchaser want this item to be stored?"
msgstr "Gdzie kupujący chce przechowywać ten przedmiot?"
-#: order/models.py:831 part/templates/part/part_pricing.html:97
-#: part/templates/part/prices.html:97 part/templates/part/prices.html:266
+#: order/models.py:843 part/templates/part/part_pricing.html:112
+#: part/templates/part/prices.html:116 part/templates/part/prices.html:284
msgid "Sale Price"
msgstr "Cena sprzedaży"
-#: order/models.py:832
+#: order/models.py:844
msgid "Unit sale price"
msgstr "Jednostkowa cena sprzedaży"
-#: order/models.py:911 order/models.py:913
+#: order/models.py:923 order/models.py:925
msgid "Stock item has not been assigned"
msgstr ""
-#: order/models.py:917
+#: order/models.py:929
msgid "Cannot allocate stock item to a line with a different part"
msgstr ""
-#: order/models.py:919
+#: order/models.py:931
msgid "Cannot allocate stock to a line without a part"
msgstr ""
-#: order/models.py:922
+#: order/models.py:934
msgid "Allocation quantity cannot exceed stock quantity"
msgstr "Zarezerwowana ilość nie może przekraczać ilości na stanie"
-#: order/models.py:932
+#: order/models.py:944
msgid "Quantity must be 1 for serialized stock item"
msgstr ""
-#: order/models.py:937
+#: order/models.py:949
msgid "Line"
msgstr "Linia"
-#: order/models.py:948
+#: order/models.py:960
msgid "Item"
msgstr "Komponent"
-#: order/models.py:949
+#: order/models.py:961
msgid "Select stock item to allocate"
msgstr ""
-#: order/models.py:952
+#: order/models.py:964
msgid "Enter stock allocation quantity"
msgstr ""
-#: order/serializers.py:139
+#: order/serializers.py:166
msgid "Purchase price currency"
msgstr ""
-#: order/serializers.py:360
+#: order/serializers.py:201
+msgid "Line Item"
+msgstr ""
+
+#: order/serializers.py:207
+msgid "Line item does not match purchase order"
+msgstr ""
+
+#: order/serializers.py:217 order/serializers.py:276
+msgid "Select destination location for received items"
+msgstr ""
+
+#: order/serializers.py:234
+msgid "Barcode Hash"
+msgstr ""
+
+#: order/serializers.py:235
+msgid "Unique identifier field"
+msgstr ""
+
+#: order/serializers.py:250
+msgid "Barcode is already in use"
+msgstr ""
+
+#: order/serializers.py:289
+msgid "Line items must be provided"
+msgstr ""
+
+#: order/serializers.py:299
+msgid "Supplied barcode values must be unique"
+msgstr ""
+
+#: order/serializers.py:514
msgid "Sale price currency"
msgstr ""
@@ -3227,14 +3345,12 @@ msgid "Edit Purchase Order"
msgstr ""
#: order/templates/order/order_base.html:196
-#: order/templates/order/purchase_order_detail.html:265
-#: stock/templates/stock/location.html:250
+#: stock/templates/stock/location.html:250 templates/js/translated/order.js:437
msgid "New Location"
msgstr "Nowa lokalizacja"
#: order/templates/order/order_base.html:197
-#: order/templates/order/purchase_order_detail.html:266
-#: stock/templates/stock/location.html:42
+#: stock/templates/stock/location.html:42 templates/js/translated/order.js:438
msgid "Create new stock location"
msgstr ""
@@ -3336,7 +3452,7 @@ msgid "Upload File for Purchase Order"
msgstr ""
#: order/templates/order/order_wizard/po_upload.html:18
-#: part/templates/part/bom_upload/upload_file.html:24
+#: part/templates/part/bom_upload/upload_file.html:34
#: part/templates/part/import_wizard/ajax_part_upload.html:10
#: part/templates/part/import_wizard/part_upload.html:21
#, python-format
@@ -3369,7 +3485,7 @@ msgstr ""
#: order/templates/order/order_wizard/select_parts.html:65
#, python-format
-msgid "Select a supplier for %(name)s"
+msgid "Select a supplier for %(name)s"
msgstr ""
#: order/templates/order/order_wizard/select_parts.html:77
@@ -3386,7 +3502,7 @@ msgid "Select existing purchase orders, or create new orders."
msgstr ""
#: order/templates/order/order_wizard/select_pos.html:31
-#: templates/js/translated/order.js:289 templates/js/translated/order.js:397
+#: templates/js/translated/order.js:363 templates/js/translated/order.js:738
msgid "Items"
msgstr "Przedmioty"
@@ -3425,9 +3541,9 @@ msgid "Purchase Order Items"
msgstr ""
#: order/templates/order/purchase_order_detail.html:23
-#: order/templates/order/purchase_order_detail.html:202
+#: order/templates/order/purchase_order_detail.html:203
#: order/templates/order/sales_order_detail.html:23
-#: order/templates/order/sales_order_detail.html:176
+#: order/templates/order/sales_order_detail.html:177
msgid "Add Line Item"
msgstr "Dodaj element zamówienia"
@@ -3436,49 +3552,6 @@ msgstr "Dodaj element zamówienia"
msgid "Order Notes"
msgstr "Notatki zamówień"
-#: order/templates/order/purchase_order_detail.html:238
-#: order/templates/order/sales_order_detail.html:518
-msgid "Edit Line Item"
-msgstr ""
-
-#: order/templates/order/purchase_order_detail.html:248
-#: order/templates/order/sales_order_detail.html:528
-msgid "Delete Line Item"
-msgstr ""
-
-#: order/templates/order/purchase_order_detail.html:279
-msgid "No line items found"
-msgstr ""
-
-#: order/templates/order/purchase_order_detail.html:307
-#: order/templates/order/sales_order_detail.html:353
-msgid "Total"
-msgstr ""
-
-#: order/templates/order/purchase_order_detail.html:360
-#: order/templates/order/sales_order_detail.html:376
-#: templates/js/translated/part.js:1128 templates/js/translated/part.js:1317
-msgid "Unit Price"
-msgstr "Cena jednostkowa"
-
-#: order/templates/order/purchase_order_detail.html:367
-#: order/templates/order/sales_order_detail.html:383
-msgid "Total price"
-msgstr ""
-
-#: order/templates/order/purchase_order_detail.html:431
-#: order/templates/order/sales_order_detail.html:489
-msgid "Edit line item"
-msgstr ""
-
-#: order/templates/order/purchase_order_detail.html:432
-msgid "Delete line item"
-msgstr ""
-
-#: order/templates/order/purchase_order_detail.html:437
-msgid "Receive line item"
-msgstr ""
-
#: order/templates/order/purchase_orders.html:24
#: order/templates/order/sales_orders.html:24
msgid "Print Order Reports"
@@ -3486,18 +3559,18 @@ msgstr ""
#: order/templates/order/receive_parts.html:8
#, python-format
-msgid "Receive outstanding parts for %(order)s - %(desc)s"
+msgid "Receive outstanding parts for %(order)s - %(desc)s"
msgstr ""
-#: order/templates/order/receive_parts.html:14 part/api.py:49
-#: part/models.py:296 part/templates/part/cat_link.html:7
+#: order/templates/order/receive_parts.html:14 part/api.py:54
+#: part/models.py:298 part/templates/part/cat_link.html:7
#: part/templates/part/category.html:108 part/templates/part/category.html:122
#: part/templates/part/category_navbar.html:21
#: part/templates/part/category_navbar.html:24
#: templates/InvenTree/index.html:102 templates/InvenTree/search.html:114
#: templates/InvenTree/settings/navbar.html:83
#: templates/InvenTree/settings/navbar.html:85
-#: templates/js/translated/part.js:987 templates/navbar.html:23
+#: templates/js/translated/part.js:1154 templates/navbar.html:29
#: templates/stats.html:80 templates/stats.html:89 users/models.py:41
msgid "Parts"
msgstr "Części"
@@ -3511,7 +3584,7 @@ msgid "Order Code"
msgstr "Kod zamówienia"
#: order/templates/order/receive_parts.html:21
-#: part/templates/part/part_base.html:160 templates/js/translated/part.js:802
+#: part/templates/part/part_base.html:167 templates/js/translated/part.js:949
msgid "On Order"
msgstr ""
@@ -3540,7 +3613,7 @@ msgid "Sales Order Details"
msgstr ""
#: order/templates/order/sales_order_base.html:100
-#: templates/js/translated/order.js:364
+#: templates/js/translated/order.js:705
msgid "Customer Reference"
msgstr ""
@@ -3563,71 +3636,102 @@ msgstr ""
msgid "Sales Order Items"
msgstr ""
-#: order/templates/order/sales_order_detail.html:225
-#: templates/js/translated/bom.js:378 templates/js/translated/build.js:759
-#: templates/js/translated/build.js:1202
+#: order/templates/order/sales_order_detail.html:226
+#: templates/js/translated/bom.js:394 templates/js/translated/build.js:782
+#: templates/js/translated/build.js:1219
msgid "Actions"
msgstr "Akcje"
-#: order/templates/order/sales_order_detail.html:232
-#: templates/js/translated/build.js:645 templates/js/translated/build.js:1011
+#: order/templates/order/sales_order_detail.html:233
+#: templates/js/translated/build.js:668 templates/js/translated/build.js:1030
msgid "Edit stock allocation"
msgstr ""
-#: order/templates/order/sales_order_detail.html:233
-#: templates/js/translated/build.js:647 templates/js/translated/build.js:1012
+#: order/templates/order/sales_order_detail.html:234
+#: templates/js/translated/build.js:670 templates/js/translated/build.js:1031
msgid "Delete stock allocation"
msgstr ""
-#: order/templates/order/sales_order_detail.html:306
+#: order/templates/order/sales_order_detail.html:307
msgid "No matching line items"
msgstr ""
-#: order/templates/order/sales_order_detail.html:336
+#: order/templates/order/sales_order_detail.html:337
msgid "ID"
msgstr "Numer ID"
-#: order/templates/order/sales_order_detail.html:404
-#: templates/js/translated/build.js:710 templates/js/translated/build.js:1007
+#: order/templates/order/sales_order_detail.html:354
+#: templates/js/translated/order.js:481
+msgid "Total"
+msgstr ""
+
+#: order/templates/order/sales_order_detail.html:377
+#: templates/js/translated/order.js:534 templates/js/translated/part.js:1296
+#: templates/js/translated/part.js:1507
+msgid "Unit Price"
+msgstr "Cena jednostkowa"
+
+#: order/templates/order/sales_order_detail.html:384
+#: templates/js/translated/order.js:543
+msgid "Total price"
+msgstr ""
+
+#: order/templates/order/sales_order_detail.html:405
+#: templates/js/translated/build.js:733 templates/js/translated/build.js:1026
msgid "Allocated"
msgstr "Przydzielono"
-#: order/templates/order/sales_order_detail.html:406
+#: order/templates/order/sales_order_detail.html:407
msgid "Fulfilled"
msgstr ""
-#: order/templates/order/sales_order_detail.html:443
+#: order/templates/order/sales_order_detail.html:444
msgid "PO"
msgstr ""
-#: order/templates/order/sales_order_detail.html:473
+#: order/templates/order/sales_order_detail.html:474
msgid "Allocate serial numbers"
msgstr ""
-#: order/templates/order/sales_order_detail.html:476
-#: templates/js/translated/build.js:773
+#: order/templates/order/sales_order_detail.html:477
+#: templates/js/translated/build.js:796
msgid "Allocate stock"
msgstr ""
-#: order/templates/order/sales_order_detail.html:479
+#: order/templates/order/sales_order_detail.html:480
msgid "Purchase stock"
msgstr "Cena zakupu"
-#: order/templates/order/sales_order_detail.html:483
-#: templates/js/translated/build.js:766 templates/js/translated/build.js:1210
+#: order/templates/order/sales_order_detail.html:484
+#: templates/js/translated/build.js:789 templates/js/translated/build.js:1227
msgid "Build stock"
msgstr ""
-#: order/templates/order/sales_order_detail.html:486
-#: order/templates/order/sales_order_detail.html:605
+#: order/templates/order/sales_order_detail.html:487
+#: order/templates/order/sales_order_detail.html:606
msgid "Calculate price"
msgstr "Oblicz cenę"
#: order/templates/order/sales_order_detail.html:490
+#: templates/js/translated/order.js:616
+msgid "Edit line item"
+msgstr ""
+
+#: order/templates/order/sales_order_detail.html:491
msgid "Delete line item "
msgstr ""
-#: order/templates/order/sales_order_detail.html:611
+#: order/templates/order/sales_order_detail.html:519
+#: templates/js/translated/order.js:403
+msgid "Edit Line Item"
+msgstr ""
+
+#: order/templates/order/sales_order_detail.html:529
+#: templates/js/translated/order.js:415
+msgid "Delete Line Item"
+msgstr ""
+
+#: order/templates/order/sales_order_detail.html:612
msgid "Update Unit Price"
msgstr "Zaktualizuj cenę jednostkową"
@@ -3814,12 +3918,28 @@ msgstr ""
msgid "Updated {part} unit-price to {price} and quantity to {qty}"
msgstr ""
-#: part/bom.py:133 part/models.py:73 part/models.py:731
-#: part/templates/part/category.html:75 part/templates/part/part_base.html:282
+#: part/api.py:700
+msgid "Must be greater than zero"
+msgstr ""
+
+#: part/api.py:704
+msgid "Must be a valid quantity"
+msgstr ""
+
+#: part/api.py:719
+msgid "Specify location for initial part stock"
+msgstr ""
+
+#: part/api.py:750 part/api.py:754 part/api.py:769 part/api.py:773
+msgid "This field is required"
+msgstr ""
+
+#: part/bom.py:133 part/models.py:75 part/models.py:733
+#: part/templates/part/category.html:75 part/templates/part/part_base.html:290
msgid "Default Location"
msgstr "Domyślna lokalizacja"
-#: part/bom.py:134 part/templates/part/part_base.html:149
+#: part/bom.py:134 part/templates/part/part_base.html:156
msgid "Available Stock"
msgstr "Dostępna ilość"
@@ -3879,7 +3999,7 @@ msgstr ""
msgid "Include part supplier data in exported BOM"
msgstr ""
-#: part/forms.py:96 part/models.py:2234
+#: part/forms.py:96 part/models.py:2250
msgid "Parent Part"
msgstr "Część nadrzędna"
@@ -3923,391 +4043,391 @@ msgstr ""
msgid "Input quantity for price calculation"
msgstr ""
-#: part/models.py:74
+#: part/models.py:76
msgid "Default location for parts in this category"
msgstr ""
-#: part/models.py:77
+#: part/models.py:79
msgid "Default keywords"
msgstr "Domyślne słowa kluczowe"
-#: part/models.py:77
+#: part/models.py:79
msgid "Default keywords for parts in this category"
msgstr ""
-#: part/models.py:87 part/models.py:2280
+#: part/models.py:89 part/models.py:2296
#: part/templates/part/part_app_base.html:10
msgid "Part Category"
msgstr ""
-#: part/models.py:88 part/templates/part/category.html:32
+#: part/models.py:90 part/templates/part/category.html:32
#: part/templates/part/category.html:103 templates/InvenTree/search.html:127
#: templates/stats.html:84 users/models.py:40
msgid "Part Categories"
msgstr ""
-#: part/models.py:381
+#: part/models.py:383
msgid "Invalid choice for parent part"
msgstr ""
-#: part/models.py:433 part/models.py:445
+#: part/models.py:435 part/models.py:447
#, python-brace-format
msgid "Part '{p1}' is used in BOM for '{p2}' (recursive)"
msgstr ""
-#: part/models.py:542
+#: part/models.py:544
msgid "Next available serial numbers are"
msgstr ""
-#: part/models.py:546
+#: part/models.py:548
msgid "Next available serial number is"
msgstr ""
-#: part/models.py:551
+#: part/models.py:553
msgid "Most recent serial number is"
msgstr ""
-#: part/models.py:630
+#: part/models.py:632
msgid "Duplicate IPN not allowed in part settings"
msgstr ""
-#: part/models.py:655
+#: part/models.py:657
msgid "Part name"
msgstr "Nazwa części"
-#: part/models.py:662
+#: part/models.py:664
msgid "Is Template"
msgstr ""
-#: part/models.py:663
+#: part/models.py:665
msgid "Is this part a template part?"
msgstr ""
-#: part/models.py:673
+#: part/models.py:675
msgid "Is this part a variant of another part?"
msgstr ""
-#: part/models.py:674
+#: part/models.py:676
msgid "Variant Of"
msgstr "Wariant"
-#: part/models.py:680
+#: part/models.py:682
msgid "Part description"
msgstr "Opis części"
-#: part/models.py:685 part/templates/part/category.html:82
-#: part/templates/part/part_base.html:251
+#: part/models.py:687 part/templates/part/category.html:82
+#: part/templates/part/part_base.html:259
msgid "Keywords"
msgstr "Słowa kluczowe"
-#: part/models.py:686
+#: part/models.py:688
msgid "Part keywords to improve visibility in search results"
msgstr ""
-#: part/models.py:693 part/models.py:2279
+#: part/models.py:695 part/models.py:2295
#: part/templates/part/set_category.html:15
#: templates/InvenTree/settings/settings.html:167
-#: templates/js/translated/part.js:773
+#: templates/js/translated/part.js:916
msgid "Category"
msgstr "Kategoria"
-#: part/models.py:694
+#: part/models.py:696
msgid "Part category"
msgstr ""
-#: part/models.py:699 part/templates/part/part_base.html:227
-#: templates/js/translated/part.js:389 templates/js/translated/part.js:617
+#: part/models.py:701 part/templates/part/part_base.html:235
+#: templates/js/translated/part.js:517 templates/js/translated/part.js:749
msgid "IPN"
msgstr "IPN"
-#: part/models.py:700
+#: part/models.py:702
msgid "Internal Part Number"
msgstr ""
-#: part/models.py:706
+#: part/models.py:708
msgid "Part revision or version number"
msgstr ""
-#: part/models.py:707 part/templates/part/part_base.html:244
-#: report/models.py:200 templates/js/translated/part.js:393
+#: part/models.py:709 part/templates/part/part_base.html:252
+#: report/models.py:200 templates/js/translated/part.js:521
msgid "Revision"
msgstr "Wersja"
-#: part/models.py:729
+#: part/models.py:731
msgid "Where is this item normally stored?"
msgstr ""
-#: part/models.py:776 part/templates/part/part_base.html:289
+#: part/models.py:778 part/templates/part/part_base.html:297
msgid "Default Supplier"
msgstr ""
-#: part/models.py:777
+#: part/models.py:779
msgid "Default supplier part"
msgstr ""
-#: part/models.py:784
+#: part/models.py:786
msgid "Default Expiry"
msgstr ""
-#: part/models.py:785
+#: part/models.py:787
msgid "Expiry time (in days) for stock items of this part"
msgstr ""
-#: part/models.py:790
+#: part/models.py:792
msgid "Minimum Stock"
msgstr "Minimalny stan magazynowy"
-#: part/models.py:791
+#: part/models.py:793
msgid "Minimum allowed stock level"
msgstr ""
-#: part/models.py:798
+#: part/models.py:800
msgid "Stock keeping units for this part"
msgstr ""
-#: part/models.py:804
+#: part/models.py:806
msgid "Can this part be built from other parts?"
msgstr "Czy ta część może być zbudowana z innych części?"
-#: part/models.py:810
+#: part/models.py:812
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:816
+#: part/models.py:818
msgid "Does this part have tracking for unique items?"
msgstr ""
-#: part/models.py:821
+#: part/models.py:823
msgid "Can this part be purchased from external suppliers?"
msgstr ""
-#: part/models.py:826
+#: part/models.py:828
msgid "Can this part be sold to customers?"
msgstr ""
-#: part/models.py:830 templates/js/translated/table_filters.js:21
-#: templates/js/translated/table_filters.js:69
-#: templates/js/translated/table_filters.js:255
-#: templates/js/translated/table_filters.js:324
+#: part/models.py:832 templates/js/translated/table_filters.js:34
+#: templates/js/translated/table_filters.js:82
+#: templates/js/translated/table_filters.js:268
+#: templates/js/translated/table_filters.js:337
msgid "Active"
msgstr "Aktywny"
-#: part/models.py:831
+#: part/models.py:833
msgid "Is this part active?"
msgstr "Czy ta część jest aktywna?"
-#: part/models.py:836
+#: part/models.py:838
msgid "Is this a virtual part, such as a software product or license?"
msgstr ""
-#: part/models.py:841
+#: part/models.py:843
msgid "Part notes - supports Markdown formatting"
msgstr ""
-#: part/models.py:844
+#: part/models.py:846
msgid "BOM checksum"
msgstr ""
-#: part/models.py:844
+#: part/models.py:846
msgid "Stored BOM checksum"
msgstr ""
-#: part/models.py:847
+#: part/models.py:849
msgid "BOM checked by"
msgstr ""
-#: part/models.py:849
+#: part/models.py:851
msgid "BOM checked date"
msgstr ""
-#: part/models.py:853
+#: part/models.py:855
msgid "Creation User"
msgstr ""
-#: part/models.py:1592
+#: part/models.py:1601
msgid "Sell multiple"
msgstr "Sprzedaj wiele"
-#: part/models.py:2080
+#: part/models.py:2096
msgid "Test templates can only be created for trackable parts"
msgstr ""
-#: part/models.py:2097
+#: part/models.py:2113
msgid "Test with this name already exists for this part"
msgstr ""
-#: part/models.py:2117 templates/js/translated/part.js:1038
-#: templates/js/translated/stock.js:485
+#: part/models.py:2133 templates/js/translated/part.js:1205
+#: templates/js/translated/stock.js:556
msgid "Test Name"
msgstr "Nazwa testu"
-#: part/models.py:2118
+#: part/models.py:2134
msgid "Enter a name for the test"
msgstr ""
-#: part/models.py:2123
+#: part/models.py:2139
msgid "Test Description"
msgstr ""
-#: part/models.py:2124
+#: part/models.py:2140
msgid "Enter description for this test"
msgstr ""
-#: part/models.py:2129 templates/js/translated/part.js:1047
-#: templates/js/translated/table_filters.js:241
+#: part/models.py:2145 templates/js/translated/part.js:1214
+#: templates/js/translated/table_filters.js:254
msgid "Required"
msgstr "Wymagane"
-#: part/models.py:2130
+#: part/models.py:2146
msgid "Is this test required to pass?"
msgstr ""
-#: part/models.py:2135 templates/js/translated/part.js:1055
+#: part/models.py:2151 templates/js/translated/part.js:1222
msgid "Requires Value"
msgstr ""
-#: part/models.py:2136
+#: part/models.py:2152
msgid "Does this test require a value when adding a test result?"
msgstr ""
-#: part/models.py:2141 templates/js/translated/part.js:1062
+#: part/models.py:2157 templates/js/translated/part.js:1229
msgid "Requires Attachment"
msgstr ""
-#: part/models.py:2142
+#: part/models.py:2158
msgid "Does this test require a file attachment when adding a test result?"
msgstr ""
-#: part/models.py:2153
+#: part/models.py:2169
#, python-brace-format
msgid "Illegal character in template name ({c})"
msgstr ""
-#: part/models.py:2189
+#: part/models.py:2205
msgid "Parameter template name must be unique"
msgstr ""
-#: part/models.py:2197
+#: part/models.py:2213
msgid "Parameter Name"
msgstr ""
-#: part/models.py:2204
+#: part/models.py:2220
msgid "Parameter Units"
msgstr ""
-#: part/models.py:2236 part/models.py:2285 part/models.py:2286
+#: part/models.py:2252 part/models.py:2301 part/models.py:2302
#: templates/InvenTree/settings/settings.html:162
msgid "Parameter Template"
msgstr ""
-#: part/models.py:2238
+#: part/models.py:2254
msgid "Data"
msgstr "Dane"
-#: part/models.py:2238
+#: part/models.py:2254
msgid "Parameter Value"
msgstr ""
-#: part/models.py:2290 templates/InvenTree/settings/settings.html:171
+#: part/models.py:2306 templates/InvenTree/settings/settings.html:171
msgid "Default Value"
msgstr "Wartość domyślna"
-#: part/models.py:2291
+#: part/models.py:2307
msgid "Default Parameter Value"
msgstr ""
-#: part/models.py:2325
+#: part/models.py:2341
msgid "Select parent part"
msgstr ""
-#: part/models.py:2333
+#: part/models.py:2349
msgid "Sub part"
msgstr "Podczęść"
-#: part/models.py:2334
+#: part/models.py:2350
msgid "Select part to be used in BOM"
msgstr ""
-#: part/models.py:2340
+#: part/models.py:2356
msgid "BOM quantity for this BOM item"
msgstr ""
-#: part/models.py:2342 templates/js/translated/bom.js:236
-#: templates/js/translated/bom.js:298
+#: part/models.py:2358 templates/js/translated/bom.js:256
+#: templates/js/translated/bom.js:314
msgid "Optional"
msgstr ""
-#: part/models.py:2342
+#: part/models.py:2358
msgid "This BOM item is optional"
msgstr ""
-#: part/models.py:2345
+#: part/models.py:2361
msgid "Overage"
msgstr ""
-#: part/models.py:2346
+#: part/models.py:2362
msgid "Estimated build wastage quantity (absolute or percentage)"
msgstr ""
-#: part/models.py:2349
+#: part/models.py:2365
msgid "BOM item reference"
msgstr ""
-#: part/models.py:2352
+#: part/models.py:2368
msgid "BOM item notes"
msgstr ""
-#: part/models.py:2354
+#: part/models.py:2370
msgid "Checksum"
msgstr "Suma kontrolna"
-#: part/models.py:2354
+#: part/models.py:2370
msgid "BOM line checksum"
msgstr ""
-#: part/models.py:2358 templates/js/translated/bom.js:315
-#: templates/js/translated/bom.js:322
-#: templates/js/translated/table_filters.js:55
+#: part/models.py:2374 templates/js/translated/bom.js:331
+#: templates/js/translated/bom.js:338
+#: templates/js/translated/table_filters.js:68
msgid "Inherited"
msgstr ""
-#: part/models.py:2359
+#: part/models.py:2375
msgid "This BOM item is inherited by BOMs for variant parts"
msgstr ""
-#: part/models.py:2364 templates/js/translated/bom.js:307
+#: part/models.py:2380 templates/js/translated/bom.js:323
msgid "Allow Variants"
msgstr ""
-#: part/models.py:2365
+#: part/models.py:2381
msgid "Stock items for variant parts can be used for this BOM item"
msgstr ""
-#: part/models.py:2450 stock/models.py:335
+#: part/models.py:2466 stock/models.py:341
msgid "Quantity must be integer value for trackable parts"
msgstr ""
-#: part/models.py:2459 part/models.py:2461
+#: part/models.py:2475 part/models.py:2477
msgid "Sub part must be specified"
msgstr ""
-#: part/models.py:2464
+#: part/models.py:2480
msgid "BOM Item"
msgstr ""
-#: part/models.py:2583
+#: part/models.py:2599
msgid "Part 1"
msgstr "Część 1"
-#: part/models.py:2587
+#: part/models.py:2603
msgid "Part 2"
msgstr "Część 2"
-#: part/models.py:2587
+#: part/models.py:2603
msgid "Select Related Part"
msgstr "Wybierz powiązaną część"
-#: part/models.py:2619
+#: part/models.py:2635
msgid "Error creating relationship: check that the part is not related to itself and that the relationship is unique"
msgstr ""
@@ -4317,17 +4437,17 @@ msgstr "Nie masz uprawnień do edycji BOM."
#: part/templates/part/bom.html:14
#, python-format
-msgid "The BOM for %(part)s has changed, and must be validated.
"
+msgid "The BOM for %(part)s has changed, and must be validated.
"
msgstr ""
#: part/templates/part/bom.html:16
#, python-format
-msgid "The BOM for %(part)s was last checked by %(checker)s on %(check_date)s"
+msgid "The BOM for %(part)s was last checked by %(checker)s on %(check_date)s"
msgstr ""
#: part/templates/part/bom.html:20
#, python-format
-msgid "The BOM for %(part)s has not been validated."
+msgid "The BOM for %(part)s has not been validated."
msgstr ""
#: part/templates/part/bom.html:27
@@ -4374,33 +4494,34 @@ msgstr ""
msgid "Select Part"
msgstr ""
-#: part/templates/part/bom_upload/upload_file.html:7
-msgid "Upload BOM File"
+#: part/templates/part/bom_upload/upload_file.html:13
+#: part/templates/part/bom_upload/upload_file.html:16
+msgid "Return To BOM"
msgstr ""
-#: part/templates/part/bom_upload/upload_file.html:12
+#: part/templates/part/bom_upload/upload_file.html:27
msgid "Upload Bill of Materials"
msgstr ""
-#: part/templates/part/bom_upload/upload_file.html:16
+#: part/templates/part/bom_upload/upload_file.html:46
msgid "Requirements for BOM upload"
msgstr ""
-#: part/templates/part/bom_upload/upload_file.html:18
+#: part/templates/part/bom_upload/upload_file.html:48
msgid "The BOM file must contain the required named columns as provided in the "
msgstr ""
-#: part/templates/part/bom_upload/upload_file.html:18
+#: part/templates/part/bom_upload/upload_file.html:48
msgid "BOM Upload Template"
msgstr ""
-#: part/templates/part/bom_upload/upload_file.html:19
+#: part/templates/part/bom_upload/upload_file.html:49
msgid "Each part must already exist in the database"
msgstr ""
#: part/templates/part/bom_validate.html:6
#, python-format
-msgid "Confirm that the Bill of Materials (BOM) is valid for:
%(part)s"
+msgid "Confirm that the Bill of Materials (BOM) is valid for:
%(part)s"
msgstr ""
#: part/templates/part/bom_validate.html:9
@@ -4435,7 +4556,7 @@ msgstr ""
msgid "Category Description"
msgstr ""
-#: part/templates/part/category.html:88 part/templates/part/category.html:174
+#: part/templates/part/category.html:88 part/templates/part/category.html:175
#: part/templates/part/category_navbar.html:14
#: part/templates/part/category_navbar.html:17
msgid "Subcategories"
@@ -4449,7 +4570,7 @@ msgstr ""
msgid "Export Part Data"
msgstr ""
-#: part/templates/part/category.html:127 part/templates/part/category.html:141
+#: part/templates/part/category.html:127 part/templates/part/category.html:142
msgid "Export"
msgstr "Eksportuj"
@@ -4470,26 +4591,30 @@ msgid "Set Category"
msgstr "Ustaw kategorię"
#: part/templates/part/category.html:141
+msgid "Print Labels"
+msgstr ""
+
+#: part/templates/part/category.html:142
msgid "Export Data"
msgstr "Eksportuj dane"
-#: part/templates/part/category.html:145
+#: part/templates/part/category.html:146
msgid "View list display"
msgstr ""
-#: part/templates/part/category.html:148
+#: part/templates/part/category.html:149
msgid "View grid display"
msgstr ""
-#: part/templates/part/category.html:164
+#: part/templates/part/category.html:165
msgid "Part Parameters"
msgstr "Parametry części"
-#: part/templates/part/category.html:253
+#: part/templates/part/category.html:254
msgid "Create Part Category"
msgstr ""
-#: part/templates/part/category.html:279
+#: part/templates/part/category.html:281
msgid "Create Part"
msgstr ""
@@ -4533,7 +4658,7 @@ msgstr ""
msgid "Import Parts"
msgstr ""
-#: part/templates/part/copy_part.html:9 templates/js/translated/part.js:224
+#: part/templates/part/copy_part.html:9 templates/js/translated/part.js:352
msgid "Duplicate Part"
msgstr "Duplikuj część"
@@ -4554,7 +4679,7 @@ msgstr ""
#: part/templates/part/create_part.html:17
#, python-format
-msgid "%(full_name)s - %(desc)s (%(match_per)s%% match)"
+msgid "%(full_name)s - %(desc)s (%(match_per)s%% match)"
msgstr ""
#: part/templates/part/detail.html:16
@@ -4563,10 +4688,10 @@ msgstr "Zapasy części"
#: part/templates/part/detail.html:21
#, python-format
-msgid "Showing stock for all variants of %(full_name)s"
+msgid "Showing stock for all variants of %(full_name)s"
msgstr ""
-#: part/templates/part/detail.html:30 part/templates/part/navbar.html:87
+#: part/templates/part/detail.html:30 part/templates/part/navbar.html:99
msgid "Part Test Templates"
msgstr ""
@@ -4586,7 +4711,7 @@ msgstr ""
msgid "Sales Order Allocations"
msgstr ""
-#: part/templates/part/detail.html:130 part/templates/part/navbar.html:21
+#: part/templates/part/detail.html:130 part/templates/part/navbar.html:27
msgid "Part Variants"
msgstr "Warianty Części"
@@ -4602,8 +4727,8 @@ msgstr "Nowy wariant"
msgid "Add new parameter"
msgstr ""
-#: part/templates/part/detail.html:182 part/templates/part/navbar.html:95
-#: part/templates/part/navbar.html:98
+#: part/templates/part/detail.html:182 part/templates/part/navbar.html:107
+#: part/templates/part/navbar.html:110
msgid "Related Parts"
msgstr ""
@@ -4611,8 +4736,8 @@ msgstr ""
msgid "Add Related"
msgstr "Dodaj powiązane"
-#: part/templates/part/detail.html:228 part/templates/part/navbar.html:35
-#: part/templates/part/navbar.html:38
+#: part/templates/part/detail.html:228 part/templates/part/navbar.html:43
+#: part/templates/part/navbar.html:46
msgid "Bill of Materials"
msgstr "Zestawienie materiałowe"
@@ -4644,50 +4769,50 @@ msgstr ""
msgid "Delete manufacturer parts"
msgstr ""
-#: part/templates/part/detail.html:402
+#: part/templates/part/detail.html:502
msgid "Delete selected BOM items?"
msgstr ""
-#: part/templates/part/detail.html:403
+#: part/templates/part/detail.html:503
msgid "All selected BOM items will be deleted"
msgstr ""
-#: part/templates/part/detail.html:454
+#: part/templates/part/detail.html:554
msgid "Create BOM Item"
msgstr ""
-#: part/templates/part/detail.html:589
+#: part/templates/part/detail.html:699
msgid "Add Test Result Template"
msgstr ""
-#: part/templates/part/detail.html:607
+#: part/templates/part/detail.html:716
msgid "Edit Test Result Template"
msgstr ""
-#: part/templates/part/detail.html:619
+#: part/templates/part/detail.html:728
msgid "Delete Test Result Template"
msgstr ""
-#: part/templates/part/detail.html:670
+#: part/templates/part/detail.html:784
msgid "Edit Part Notes"
msgstr ""
-#: part/templates/part/detail.html:903
+#: part/templates/part/detail.html:936
#, python-format
msgid "Purchase Unit Price - %(currency)s"
msgstr ""
-#: part/templates/part/detail.html:915
+#: part/templates/part/detail.html:948
#, python-format
msgid "Unit Price-Cost Difference - %(currency)s"
msgstr ""
-#: part/templates/part/detail.html:927
+#: part/templates/part/detail.html:960
#, python-format
msgid "Supplier Unit Cost - %(currency)s"
msgstr ""
-#: part/templates/part/detail.html:1016
+#: part/templates/part/detail.html:1049
#, python-format
msgid "Unit Price - %(currency)s"
msgstr ""
@@ -4701,19 +4826,19 @@ msgstr ""
msgid "Import Parts from File"
msgstr ""
-#: part/templates/part/navbar.html:24
+#: part/templates/part/navbar.html:30
msgid "Variants"
msgstr ""
-#: part/templates/part/navbar.html:51 part/templates/part/navbar.html:54
+#: part/templates/part/navbar.html:59 part/templates/part/navbar.html:62
msgid "Used In"
msgstr "Użyte w"
-#: part/templates/part/navbar.html:61
+#: part/templates/part/navbar.html:70
msgid "Prices"
msgstr "Ceny"
-#: part/templates/part/navbar.html:90
+#: part/templates/part/navbar.html:102
msgid "Test Templates"
msgstr ""
@@ -4721,195 +4846,204 @@ msgstr ""
msgid "Part List"
msgstr "Lista części"
-#: part/templates/part/part_base.html:30
+#: part/templates/part/part_base.html:35
msgid "Part is a template part (variants can be made from this part)"
msgstr ""
-#: part/templates/part/part_base.html:33
+#: part/templates/part/part_base.html:38
msgid "Part can be assembled from other parts"
msgstr ""
-#: part/templates/part/part_base.html:36
+#: part/templates/part/part_base.html:41
msgid "Part can be used in assemblies"
msgstr ""
-#: part/templates/part/part_base.html:39
+#: part/templates/part/part_base.html:44
msgid "Part stock is tracked by serial number"
msgstr ""
-#: part/templates/part/part_base.html:42
+#: part/templates/part/part_base.html:47
msgid "Part can be purchased from external suppliers"
msgstr ""
-#: part/templates/part/part_base.html:45
+#: part/templates/part/part_base.html:50
msgid "Part can be sold to customers"
msgstr ""
-#: part/templates/part/part_base.html:52 part/templates/part/part_base.html:60
+#: part/templates/part/part_base.html:57 part/templates/part/part_base.html:65
msgid "Part is virtual (not a physical part)"
msgstr "Część jest wirtualna (nie fizyczna)"
-#: part/templates/part/part_base.html:53 templates/js/translated/company.js:454
-#: templates/js/translated/company.js:704 templates/js/translated/part.js:304
-#: templates/js/translated/part.js:381
+#: part/templates/part/part_base.html:58 templates/js/translated/company.js:503
+#: templates/js/translated/company.js:759 templates/js/translated/part.js:432
+#: templates/js/translated/part.js:509
msgid "Inactive"
msgstr "Nieaktywny"
-#: part/templates/part/part_base.html:68
+#: part/templates/part/part_base.html:73
msgid "Star this part"
msgstr ""
-#: part/templates/part/part_base.html:75
+#: part/templates/part/part_base.html:80
#: stock/templates/stock/item_base.html:75
#: stock/templates/stock/location.html:51
msgid "Barcode actions"
msgstr "Akcje kodów kreskowych"
-#: part/templates/part/part_base.html:77
+#: part/templates/part/part_base.html:82
#: stock/templates/stock/item_base.html:77
#: stock/templates/stock/location.html:53 templates/qr_button.html:1
msgid "Show QR Code"
msgstr "Pokaż Kod QR"
-#: part/templates/part/part_base.html:78
+#: part/templates/part/part_base.html:83
#: stock/templates/stock/item_base.html:93
#: stock/templates/stock/location.html:54
msgid "Print Label"
msgstr "Drukuj etykietę"
-#: part/templates/part/part_base.html:83
+#: part/templates/part/part_base.html:89
msgid "Show pricing information"
msgstr ""
-#: part/templates/part/part_base.html:88
+#: part/templates/part/part_base.html:95
#: stock/templates/stock/item_base.html:142
#: stock/templates/stock/location.html:62
msgid "Stock actions"
msgstr "Akcje magazynowe"
-#: part/templates/part/part_base.html:95
+#: part/templates/part/part_base.html:102
msgid "Count part stock"
msgstr ""
-#: part/templates/part/part_base.html:101
+#: part/templates/part/part_base.html:108
msgid "Transfer part stock"
msgstr ""
-#: part/templates/part/part_base.html:118
+#: part/templates/part/part_base.html:125
msgid "Part actions"
msgstr ""
-#: part/templates/part/part_base.html:121
+#: part/templates/part/part_base.html:128
msgid "Duplicate part"
msgstr "Duplikuj część"
-#: part/templates/part/part_base.html:124
+#: part/templates/part/part_base.html:131
msgid "Edit part"
msgstr "Edytuj część"
-#: part/templates/part/part_base.html:127
+#: part/templates/part/part_base.html:134
msgid "Delete part"
msgstr "Usuń część"
-#: part/templates/part/part_base.html:139
+#: part/templates/part/part_base.html:146
#, python-format
msgid "This part is a variant of %(link)s"
msgstr ""
-#: part/templates/part/part_base.html:154
-#: templates/js/translated/table_filters.js:153
+#: part/templates/part/part_base.html:161
+#: templates/js/translated/table_filters.js:166
msgid "In Stock"
msgstr ""
-#: part/templates/part/part_base.html:167 templates/InvenTree/index.html:186
+#: part/templates/part/part_base.html:174 templates/InvenTree/index.html:186
msgid "Required for Build Orders"
msgstr ""
-#: part/templates/part/part_base.html:174
+#: part/templates/part/part_base.html:181
msgid "Required for Sales Orders"
msgstr ""
-#: part/templates/part/part_base.html:181
+#: part/templates/part/part_base.html:188
msgid "Allocated to Orders"
msgstr ""
-#: part/templates/part/part_base.html:196 templates/js/translated/bom.js:336
+#: part/templates/part/part_base.html:203 templates/js/translated/bom.js:352
msgid "Can Build"
msgstr ""
-#: part/templates/part/part_base.html:202 templates/js/translated/part.js:633
-#: templates/js/translated/part.js:806
+#: part/templates/part/part_base.html:209 templates/js/translated/part.js:765
+#: templates/js/translated/part.js:953
msgid "Building"
msgstr ""
-#: part/templates/part/part_base.html:275
+#: part/templates/part/part_base.html:223
+#: part/templates/part/part_base.html:524
+#: part/templates/part/part_base.html:550
+msgid "Show Part Details"
+msgstr ""
+
+#: part/templates/part/part_base.html:283
msgid "Latest Serial Number"
msgstr "Ostatni numer seryjny"
-#: part/templates/part/part_base.html:383 part/templates/part/prices.html:125
+#: part/templates/part/part_base.html:396 part/templates/part/prices.html:144
msgid "Calculate"
msgstr ""
-#: part/templates/part/part_base.html:426
+#: part/templates/part/part_base.html:439
msgid "No matching images found"
msgstr ""
-#: part/templates/part/part_base.html:506
-#: part/templates/part/part_base.html:531
+#: part/templates/part/part_base.html:519
+#: part/templates/part/part_base.html:544
msgid "Hide Part Details"
msgstr ""
-#: part/templates/part/part_base.html:511
-#: part/templates/part/part_base.html:537
-msgid "Show Part Details"
-msgstr ""
-
#: part/templates/part/part_pricing.html:22 part/templates/part/prices.html:21
msgid "Supplier Pricing"
msgstr ""
#: part/templates/part/part_pricing.html:26
#: part/templates/part/part_pricing.html:52
-#: part/templates/part/part_pricing.html:85
-#: part/templates/part/part_pricing.html:100 part/templates/part/prices.html:25
-#: part/templates/part/prices.html:52 part/templates/part/prices.html:84
-#: part/templates/part/prices.html:101
+#: part/templates/part/part_pricing.html:100
+#: part/templates/part/part_pricing.html:115 part/templates/part/prices.html:25
+#: part/templates/part/prices.html:52 part/templates/part/prices.html:103
+#: part/templates/part/prices.html:120
msgid "Unit Cost"
msgstr "Cena jednostkowa"
#: part/templates/part/part_pricing.html:32
#: part/templates/part/part_pricing.html:58
-#: part/templates/part/part_pricing.html:89
-#: part/templates/part/part_pricing.html:104 part/templates/part/prices.html:32
-#: part/templates/part/prices.html:59 part/templates/part/prices.html:89
-#: part/templates/part/prices.html:106
+#: part/templates/part/part_pricing.html:104
+#: part/templates/part/part_pricing.html:119 part/templates/part/prices.html:32
+#: part/templates/part/prices.html:59 part/templates/part/prices.html:108
+#: part/templates/part/prices.html:125
msgid "Total Cost"
msgstr ""
#: part/templates/part/part_pricing.html:40 part/templates/part/prices.html:40
-#: templates/js/translated/bom.js:291
+#: templates/js/translated/bom.js:307
msgid "No supplier pricing available"
msgstr ""
#: part/templates/part/part_pricing.html:48 part/templates/part/prices.html:49
-#: part/templates/part/prices.html:225
+#: part/templates/part/prices.html:243
msgid "BOM Pricing"
msgstr ""
-#: part/templates/part/part_pricing.html:66 part/templates/part/prices.html:67
+#: part/templates/part/part_pricing.html:65 part/templates/part/prices.html:69
+msgid "Unit Purchase Price"
+msgstr ""
+
+#: part/templates/part/part_pricing.html:71 part/templates/part/prices.html:76
+msgid "Total Purchase Price"
+msgstr ""
+
+#: part/templates/part/part_pricing.html:81 part/templates/part/prices.html:86
msgid "Note: BOM pricing is incomplete for this part"
msgstr ""
-#: part/templates/part/part_pricing.html:73 part/templates/part/prices.html:74
+#: part/templates/part/part_pricing.html:88 part/templates/part/prices.html:93
msgid "No BOM pricing available"
msgstr ""
-#: part/templates/part/part_pricing.html:82 part/templates/part/prices.html:83
+#: part/templates/part/part_pricing.html:97 part/templates/part/prices.html:102
msgid "Internal Price"
msgstr ""
-#: part/templates/part/part_pricing.html:113
-#: part/templates/part/prices.html:115
+#: part/templates/part/part_pricing.html:128
+#: part/templates/part/prices.html:134
msgid "No pricing information is available for this part."
msgstr ""
@@ -4919,8 +5053,8 @@ msgstr ""
#: part/templates/part/partial_delete.html:7
#, python-format
-msgid "Are you sure you want to delete part '%(full_name)s'?"
-msgstr "Czy na pewno chcesz usunąć część '%(full_name)s'?"
+msgid "Are you sure you want to delete part '%(full_name)s'?"
+msgstr ""
#: part/templates/part/partial_delete.html:12
#, python-format
@@ -4963,53 +5097,53 @@ msgstr ""
msgid "Show BOM cost"
msgstr ""
-#: part/templates/part/prices.html:98
+#: part/templates/part/prices.html:117
msgid "Show sale cost"
msgstr ""
-#: part/templates/part/prices.html:99
+#: part/templates/part/prices.html:118
msgid "Show sale price"
msgstr ""
-#: part/templates/part/prices.html:121
+#: part/templates/part/prices.html:140
msgid "Calculation parameters"
msgstr ""
-#: part/templates/part/prices.html:136 templates/js/translated/bom.js:285
+#: part/templates/part/prices.html:155 templates/js/translated/bom.js:301
msgid "Supplier Cost"
msgstr ""
-#: part/templates/part/prices.html:137 part/templates/part/prices.html:158
-#: part/templates/part/prices.html:183 part/templates/part/prices.html:213
-#: part/templates/part/prices.html:239 part/templates/part/prices.html:267
+#: part/templates/part/prices.html:156 part/templates/part/prices.html:177
+#: part/templates/part/prices.html:201 part/templates/part/prices.html:231
+#: part/templates/part/prices.html:257 part/templates/part/prices.html:285
msgid "Jump to overview"
msgstr ""
-#: part/templates/part/prices.html:162
+#: part/templates/part/prices.html:181
msgid "Stock Pricing"
msgstr ""
-#: part/templates/part/prices.html:172
+#: part/templates/part/prices.html:190
msgid "No stock pricing history is available for this part."
msgstr ""
-#: part/templates/part/prices.html:182
+#: part/templates/part/prices.html:200
msgid "Internal Cost"
msgstr ""
-#: part/templates/part/prices.html:197 part/views.py:1793
+#: part/templates/part/prices.html:215 part/views.py:1801
msgid "Add Internal Price Break"
msgstr ""
-#: part/templates/part/prices.html:212
+#: part/templates/part/prices.html:230
msgid "BOM Cost"
msgstr ""
-#: part/templates/part/prices.html:238
+#: part/templates/part/prices.html:256
msgid "Sale Cost"
msgstr ""
-#: part/templates/part/prices.html:278
+#: part/templates/part/prices.html:296
msgid "No sale pice history available for this part."
msgstr ""
@@ -5017,8 +5151,8 @@ msgstr ""
msgid "Set category for the following parts"
msgstr ""
-#: part/templates/part/stock_count.html:7 templates/js/translated/bom.js:259
-#: templates/js/translated/part.js:623 templates/js/translated/part.js:810
+#: part/templates/part/stock_count.html:7 templates/js/translated/bom.js:278
+#: templates/js/translated/part.js:755 templates/js/translated/part.js:957
msgid "No Stock"
msgstr ""
@@ -5032,10 +5166,10 @@ msgstr ""
#: part/templates/part/variant_part.html:10
#, python-format
-msgid "Create a new variant of template '%(full_name)s'."
+msgid "Create a new variant of template '%(full_name)s'."
msgstr ""
-#: part/templatetags/inventree_extras.py:105
+#: part/templatetags/inventree_extras.py:106
msgid "Unknown database"
msgstr ""
@@ -5116,51 +5250,51 @@ msgstr ""
msgid "Part Pricing"
msgstr ""
-#: part/views.py:1429
+#: part/views.py:1437
msgid "Create Part Parameter Template"
msgstr ""
-#: part/views.py:1439
+#: part/views.py:1447
msgid "Edit Part Parameter Template"
msgstr ""
-#: part/views.py:1446
+#: part/views.py:1454
msgid "Delete Part Parameter Template"
msgstr ""
-#: part/views.py:1494 templates/js/translated/part.js:179
+#: part/views.py:1502 templates/js/translated/part.js:303
msgid "Edit Part Category"
msgstr "Edytuj kategorię części"
-#: part/views.py:1532
+#: part/views.py:1540
msgid "Delete Part Category"
msgstr ""
-#: part/views.py:1538
+#: part/views.py:1546
msgid "Part category was deleted"
msgstr ""
-#: part/views.py:1547
+#: part/views.py:1555
msgid "Create Category Parameter Template"
msgstr ""
-#: part/views.py:1648
+#: part/views.py:1656
msgid "Edit Category Parameter Template"
msgstr ""
-#: part/views.py:1704
+#: part/views.py:1712
msgid "Delete Category Parameter Template"
msgstr ""
-#: part/views.py:1726
+#: part/views.py:1734
msgid "Added new price break"
msgstr ""
-#: part/views.py:1802
+#: part/views.py:1810
msgid "Edit Internal Price Break"
msgstr ""
-#: part/views.py:1810
+#: part/views.py:1818
msgid "Delete Internal Price Break"
msgstr ""
@@ -5266,17 +5400,17 @@ msgid "Test Results"
msgstr ""
#: report/templates/report/inventree_test_report_base.html:88
-#: stock/models.py:1796
+#: stock/models.py:1807
msgid "Test"
msgstr ""
#: report/templates/report/inventree_test_report_base.html:89
-#: stock/models.py:1802
+#: stock/models.py:1813
msgid "Result"
msgstr "Wynik"
#: report/templates/report/inventree_test_report_base.html:92
-#: templates/js/translated/order.js:279 templates/js/translated/stock.js:1382
+#: templates/js/translated/order.js:353 templates/js/translated/stock.js:1523
msgid "Date"
msgstr "Data"
@@ -5288,51 +5422,51 @@ msgstr "Zaliczone"
msgid "Fail"
msgstr "Niezaliczone"
-#: stock/api.py:145
+#: stock/api.py:146
msgid "Request must contain list of stock items"
msgstr ""
-#: stock/api.py:153
+#: stock/api.py:154
msgid "Improperly formatted data"
msgstr ""
-#: stock/api.py:161
+#: stock/api.py:162
msgid "Each entry must contain a valid integer primary-key"
msgstr ""
-#: stock/api.py:167
+#: stock/api.py:168
msgid "Primary key does not match valid stock item"
msgstr ""
-#: stock/api.py:177
+#: stock/api.py:178
msgid "Invalid quantity value"
msgstr "Nieprawidłowa ilość"
-#: stock/api.py:182
+#: stock/api.py:183
msgid "Quantity must not be less than zero"
msgstr "Ilość musi być większa niż zero"
-#: stock/api.py:210
+#: stock/api.py:211
#, python-brace-format
msgid "Updated stock for {n} items"
msgstr ""
-#: stock/api.py:246 stock/api.py:279
+#: stock/api.py:247 stock/api.py:280
msgid "Specified quantity exceeds stock quantity"
msgstr ""
-#: stock/api.py:269
+#: stock/api.py:270
msgid "Valid location must be specified"
msgstr ""
-#: stock/api.py:289
+#: stock/api.py:290
#, python-brace-format
msgid "Moved {n} parts to {loc}"
msgstr ""
-#: stock/forms.py:79 stock/forms.py:307 stock/models.py:550
+#: stock/forms.py:79 stock/forms.py:307 stock/models.py:556
#: stock/templates/stock/item_base.html:395
-#: templates/js/translated/stock.js:1025
+#: templates/js/translated/stock.js:967
msgid "Expiry Date"
msgstr "Data ważności"
@@ -5384,258 +5518,266 @@ msgstr ""
msgid "Confirm removal of installed stock items"
msgstr ""
-#: stock/models.py:57 stock/models.py:587
+#: stock/models.py:57 stock/models.py:593
msgid "Owner"
msgstr ""
-#: stock/models.py:58 stock/models.py:588
+#: stock/models.py:58 stock/models.py:594
msgid "Select Owner"
msgstr ""
-#: stock/models.py:316
+#: stock/models.py:322
msgid "StockItem with this serial number already exists"
msgstr ""
-#: stock/models.py:352
+#: stock/models.py:358
#, python-brace-format
msgid "Part type ('{pf}') must be {pe}"
msgstr ""
-#: stock/models.py:362 stock/models.py:371
+#: stock/models.py:368 stock/models.py:377
msgid "Quantity must be 1 for item with a serial number"
msgstr ""
-#: stock/models.py:363
+#: stock/models.py:369
msgid "Serial number cannot be set if quantity greater than 1"
msgstr ""
-#: stock/models.py:385
+#: stock/models.py:391
msgid "Item cannot belong to itself"
msgstr ""
-#: stock/models.py:391
+#: stock/models.py:397
msgid "Item must have a build reference if is_building=True"
msgstr ""
-#: stock/models.py:398
+#: stock/models.py:404
msgid "Build reference does not point to the same part object"
msgstr ""
-#: stock/models.py:440
+#: stock/models.py:446
msgid "Parent Stock Item"
msgstr ""
-#: stock/models.py:449
+#: stock/models.py:455
msgid "Base part"
msgstr "Część podstawowa"
-#: stock/models.py:458
+#: stock/models.py:464
msgid "Select a matching supplier part for this stock item"
msgstr ""
-#: stock/models.py:463 stock/templates/stock/stock_app_base.html:8
+#: stock/models.py:469 stock/templates/stock/stock_app_base.html:8
msgid "Stock Location"
msgstr ""
-#: stock/models.py:466
+#: stock/models.py:472
msgid "Where is this stock item located?"
msgstr ""
-#: stock/models.py:473
+#: stock/models.py:479
msgid "Packaging this stock item is stored in"
msgstr ""
-#: stock/models.py:478 stock/templates/stock/item_base.html:284
+#: stock/models.py:484 stock/templates/stock/item_base.html:284
msgid "Installed In"
msgstr ""
-#: stock/models.py:481
+#: stock/models.py:487
msgid "Is this item installed in another item?"
msgstr ""
-#: stock/models.py:497
+#: stock/models.py:503
msgid "Serial number for this item"
msgstr ""
-#: stock/models.py:509
+#: stock/models.py:515
msgid "Batch code for this stock item"
msgstr ""
-#: stock/models.py:513
+#: stock/models.py:519
msgid "Stock Quantity"
msgstr "Ilość w magazynie"
-#: stock/models.py:522
+#: stock/models.py:528
msgid "Source Build"
msgstr ""
-#: stock/models.py:524
+#: stock/models.py:530
msgid "Build for this stock item"
msgstr ""
-#: stock/models.py:535
+#: stock/models.py:541
msgid "Source Purchase Order"
msgstr ""
-#: stock/models.py:538
+#: stock/models.py:544
msgid "Purchase order for this stock item"
msgstr ""
-#: stock/models.py:544
+#: stock/models.py:550
msgid "Destination Sales Order"
msgstr ""
-#: stock/models.py:551
+#: stock/models.py:557
msgid "Expiry date for stock item. Stock will be considered expired after this date"
msgstr ""
-#: stock/models.py:564
+#: stock/models.py:570
msgid "Delete on deplete"
msgstr ""
-#: stock/models.py:564
+#: stock/models.py:570
msgid "Delete this Stock Item when stock is depleted"
msgstr ""
-#: stock/models.py:574 stock/templates/stock/item.html:98
+#: stock/models.py:580 stock/templates/stock/item.html:99
#: stock/templates/stock/navbar.html:54
msgid "Stock Item Notes"
msgstr ""
-#: stock/models.py:583
+#: stock/models.py:589
msgid "Single unit purchase price at time of purchase"
msgstr ""
-#: stock/models.py:1051
+#: stock/models.py:599
+msgid "Scheduled for deletion"
+msgstr ""
+
+#: stock/models.py:600
+msgid "This StockItem will be deleted by the background worker"
+msgstr ""
+
+#: stock/models.py:1063
msgid "Part is not set as trackable"
msgstr ""
-#: stock/models.py:1057
+#: stock/models.py:1069
msgid "Quantity must be integer"
msgstr "Ilość musi być liczbą całkowitą"
-#: stock/models.py:1063
+#: stock/models.py:1075
#, python-brace-format
msgid "Quantity must not exceed available stock quantity ({n})"
msgstr ""
-#: stock/models.py:1066
+#: stock/models.py:1078
msgid "Serial numbers must be a list of integers"
msgstr ""
-#: stock/models.py:1069
+#: stock/models.py:1081
msgid "Quantity does not match serial numbers"
msgstr ""
-#: stock/models.py:1076
+#: stock/models.py:1088
#, python-brace-format
msgid "Serial numbers already exist: {exists}"
msgstr ""
-#: stock/models.py:1234
+#: stock/models.py:1246
msgid "StockItem cannot be moved as it is not in stock"
msgstr ""
-#: stock/models.py:1716
+#: stock/models.py:1727
msgid "Entry notes"
msgstr ""
-#: stock/models.py:1773
+#: stock/models.py:1784
msgid "Value must be provided for this test"
msgstr ""
-#: stock/models.py:1779
+#: stock/models.py:1790
msgid "Attachment must be uploaded for this test"
msgstr ""
-#: stock/models.py:1797
+#: stock/models.py:1808
msgid "Test name"
msgstr ""
-#: stock/models.py:1803 templates/js/translated/table_filters.js:231
+#: stock/models.py:1814 templates/js/translated/table_filters.js:244
msgid "Test result"
msgstr ""
-#: stock/models.py:1809
+#: stock/models.py:1820
msgid "Test output value"
msgstr ""
-#: stock/models.py:1816
+#: stock/models.py:1827
msgid "Test result attachment"
msgstr ""
-#: stock/models.py:1822
+#: stock/models.py:1833
msgid "Test notes"
msgstr ""
-#: stock/templates/stock/item.html:16
+#: stock/templates/stock/item.html:17
msgid "Stock Tracking Information"
msgstr ""
-#: stock/templates/stock/item.html:29
+#: stock/templates/stock/item.html:30
msgid "New Entry"
msgstr ""
-#: stock/templates/stock/item.html:42
+#: stock/templates/stock/item.html:43
msgid "Child Stock Items"
msgstr ""
-#: stock/templates/stock/item.html:49
+#: stock/templates/stock/item.html:50
msgid "This stock item does not have any child items"
msgstr ""
-#: stock/templates/stock/item.html:57 stock/templates/stock/navbar.html:19
+#: stock/templates/stock/item.html:58 stock/templates/stock/navbar.html:19
#: stock/templates/stock/navbar.html:22
msgid "Test Data"
msgstr ""
-#: stock/templates/stock/item.html:65
+#: stock/templates/stock/item.html:66
msgid "Delete Test Data"
msgstr ""
-#: stock/templates/stock/item.html:69
+#: stock/templates/stock/item.html:70
msgid "Add Test Data"
msgstr ""
-#: stock/templates/stock/item.html:72 stock/templates/stock/item_base.html:95
+#: stock/templates/stock/item.html:73 stock/templates/stock/item_base.html:95
msgid "Test Report"
msgstr ""
-#: stock/templates/stock/item.html:119 stock/templates/stock/navbar.html:27
+#: stock/templates/stock/item.html:120 stock/templates/stock/navbar.html:27
msgid "Installed Stock Items"
msgstr ""
-#: stock/templates/stock/item.html:124 stock/views.py:534
+#: stock/templates/stock/item.html:125 stock/views.py:534
msgid "Install Stock Item"
msgstr ""
-#: stock/templates/stock/item.html:299 stock/templates/stock/item.html:324
+#: stock/templates/stock/item.html:301 stock/templates/stock/item.html:326
msgid "Add Test Result"
msgstr ""
-#: stock/templates/stock/item.html:344
+#: stock/templates/stock/item.html:346
msgid "Edit Test Result"
msgstr ""
-#: stock/templates/stock/item.html:358
+#: stock/templates/stock/item.html:360
msgid "Delete Test Result"
msgstr ""
#: stock/templates/stock/item_base.html:33
#: stock/templates/stock/item_base.html:399
-#: templates/js/translated/table_filters.js:212
+#: templates/js/translated/table_filters.js:225
msgid "Expired"
msgstr "Termin minął"
#: stock/templates/stock/item_base.html:43
#: stock/templates/stock/item_base.html:401
-#: templates/js/translated/table_filters.js:218
+#: templates/js/translated/table_filters.js:231
msgid "Stale"
msgstr ""
#: stock/templates/stock/item_base.html:80
-#: templates/js/translated/barcode.js:309
-#: templates/js/translated/barcode.js:314
+#: templates/js/translated/barcode.js:331
+#: templates/js/translated/barcode.js:336
msgid "Unlink Barcode"
msgstr ""
@@ -5768,7 +5910,7 @@ msgid "next page"
msgstr ""
#: stock/templates/stock/item_base.html:303
-#: templates/js/translated/build.js:628
+#: templates/js/translated/build.js:651
msgid "No location set"
msgstr "Lokacje nie są ustawione"
@@ -5795,7 +5937,7 @@ msgid "This StockItem expires on %(item.expiry_date)s"
msgstr ""
#: stock/templates/stock/item_base.html:408
-#: templates/js/translated/stock.js:1032
+#: templates/js/translated/stock.js:980
msgid "Last Updated"
msgstr "Ostatnia aktualizacja"
@@ -5825,7 +5967,7 @@ msgstr "Czy na pewno chcesz usunąć tą część?"
#: stock/templates/stock/item_delete.html:12
#, python-format
-msgid "This will remove %(qty)s units of %(full_name)s from stock."
+msgid "This will remove %(qty)s units of %(full_name)s from stock."
msgstr ""
#: stock/templates/stock/item_install.html:8
@@ -5975,7 +6117,7 @@ msgstr ""
#: stock/templates/stock/stockitem_convert.html:8
#, python-format
-msgid "This stock item is current an instance of %(part)s"
+msgid "This stock item is current an instance of %(part)s"
msgstr ""
#: stock/templates/stock/stockitem_convert.html:9
@@ -6039,7 +6181,7 @@ msgstr ""
msgid "Uninstall Stock Items"
msgstr ""
-#: stock/views.py:780 templates/js/translated/stock.js:282
+#: stock/views.py:780 templates/js/translated/stock.js:353
msgid "Confirm stock adjustment"
msgstr ""
@@ -6059,7 +6201,7 @@ msgstr "Utwórz nową lokalizację magazynową"
msgid "Serialize Stock"
msgstr ""
-#: stock/views.py:1143 templates/js/translated/build.js:365
+#: stock/views.py:1143 templates/js/translated/build.js:392
msgid "Create new Stock Item"
msgstr ""
@@ -6171,11 +6313,11 @@ msgstr ""
msgid "Enter a search query"
msgstr ""
-#: templates/InvenTree/search.html:268 templates/js/translated/stock.js:629
+#: templates/InvenTree/search.html:268 templates/js/translated/stock.js:699
msgid "Shipped to customer"
msgstr ""
-#: templates/InvenTree/search.html:271 templates/js/translated/stock.js:639
+#: templates/InvenTree/search.html:271 templates/js/translated/stock.js:709
msgid "No stock location set"
msgstr ""
@@ -6240,7 +6382,7 @@ msgstr ""
#: templates/InvenTree/settings/navbar.html:27
#: templates/InvenTree/settings/navbar.html:29
-#: templates/js/translated/tables.js:351 templates/search_form.html:6
+#: templates/js/translated/tables.js:366 templates/search_form.html:6
#: templates/search_form.html:8
msgid "Search"
msgstr ""
@@ -6257,7 +6399,7 @@ msgstr ""
#: templates/InvenTree/settings/navbar.html:46
#: templates/InvenTree/settings/navbar.html:48
-#: templates/InvenTree/settings/settings.html:8 templates/navbar.html:84
+#: templates/InvenTree/settings/settings.html:8 templates/navbar.html:94
msgid "Settings"
msgstr ""
@@ -6332,16 +6474,16 @@ msgid "No category parameter templates found"
msgstr ""
#: templates/InvenTree/settings/settings.html:174
-#: templates/InvenTree/settings/settings.html:271
+#: templates/InvenTree/settings/settings.html:273
msgid "Edit Template"
msgstr ""
#: templates/InvenTree/settings/settings.html:175
-#: templates/InvenTree/settings/settings.html:272
+#: templates/InvenTree/settings/settings.html:274
msgid "Delete Template"
msgstr ""
-#: templates/InvenTree/settings/settings.html:251
+#: templates/InvenTree/settings/settings.html:253
msgid "No part parameter templates found"
msgstr ""
@@ -6358,6 +6500,7 @@ msgid "Account Settings"
msgstr ""
#: templates/InvenTree/settings/user.html:15
+#: templates/js/translated/helpers.js:26
msgid "Edit"
msgstr ""
@@ -6436,65 +6579,69 @@ msgstr ""
msgid "InvenTree Version"
msgstr ""
-#: templates/about.html:26
+#: templates/about.html:27
+msgid "Development Version"
+msgstr ""
+
+#: templates/about.html:30
msgid "Up to Date"
msgstr ""
-#: templates/about.html:28
+#: templates/about.html:32
msgid "Update Available"
msgstr ""
-#: templates/about.html:34
-msgid "API Version"
-msgstr ""
-
-#: templates/about.html:39
-msgid "Python Version"
-msgstr ""
-
-#: templates/about.html:44
-msgid "Django Version"
-msgstr ""
-
-#: templates/about.html:51
+#: templates/about.html:42
msgid "Commit Hash"
msgstr ""
-#: templates/about.html:58
+#: templates/about.html:49
msgid "Commit Date"
msgstr ""
-#: templates/about.html:63
+#: templates/about.html:55
msgid "InvenTree Documentation"
msgstr ""
-#: templates/about.html:68
+#: templates/about.html:60
+msgid "API Version"
+msgstr ""
+
+#: templates/about.html:65
+msgid "Python Version"
+msgstr ""
+
+#: templates/about.html:70
+msgid "Django Version"
+msgstr ""
+
+#: templates/about.html:75
msgid "View Code on GitHub"
msgstr ""
-#: templates/about.html:73
+#: templates/about.html:80
msgid "Credits"
msgstr ""
-#: templates/about.html:78
+#: templates/about.html:85
msgid "Mobile App"
msgstr ""
-#: templates/about.html:83
+#: templates/about.html:90
msgid "Submit Bug Report"
msgstr ""
-#: templates/about.html:90 templates/clip.html:4
+#: templates/about.html:97 templates/clip.html:4
msgid "copy to clipboard"
msgstr ""
-#: templates/about.html:90
+#: templates/about.html:97
msgid "copy version information"
msgstr ""
-#: templates/about.html:100 templates/js/translated/modals.js:33
-#: templates/js/translated/modals.js:567 templates/js/translated/modals.js:661
-#: templates/js/translated/modals.js:957 templates/modals.html:29
+#: templates/about.html:107 templates/js/translated/modals.js:50
+#: templates/js/translated/modals.js:584 templates/js/translated/modals.js:678
+#: templates/js/translated/modals.js:971 templates/modals.html:29
#: templates/modals.html:54
msgid "Close"
msgstr ""
@@ -6515,1358 +6662,1390 @@ msgstr ""
msgid "Remote image must not exceed maximum allowable file size"
msgstr ""
-#: templates/js/report.js:47 templates/js/translated/report.js:47
+#: templates/js/report.js:47 templates/js/translated/report.js:67
msgid "items selected"
msgstr ""
-#: templates/js/report.js:55 templates/js/translated/report.js:55
+#: templates/js/report.js:55 templates/js/translated/report.js:75
msgid "Select Report Template"
msgstr ""
-#: templates/js/report.js:70 templates/js/translated/report.js:70
+#: templates/js/report.js:70 templates/js/translated/report.js:90
msgid "Select Test Report Template"
msgstr ""
-#: templates/js/report.js:98 templates/js/translated/label.js:10
-#: templates/js/translated/report.js:98 templates/js/translated/stock.js:244
+#: templates/js/report.js:98 templates/js/translated/label.js:29
+#: templates/js/translated/report.js:118 templates/js/translated/stock.js:313
msgid "Select Stock Items"
msgstr ""
-#: templates/js/report.js:99 templates/js/translated/report.js:99
+#: templates/js/report.js:99 templates/js/translated/report.js:119
msgid "Stock item(s) must be selected before printing reports"
msgstr ""
#: templates/js/report.js:116 templates/js/report.js:169
#: templates/js/report.js:223 templates/js/report.js:277
-#: templates/js/report.js:331 templates/js/translated/report.js:116
-#: templates/js/translated/report.js:169 templates/js/translated/report.js:223
-#: templates/js/translated/report.js:277 templates/js/translated/report.js:331
+#: templates/js/report.js:331 templates/js/translated/report.js:136
+#: templates/js/translated/report.js:189 templates/js/translated/report.js:243
+#: templates/js/translated/report.js:297 templates/js/translated/report.js:351
msgid "No Reports Found"
msgstr ""
-#: templates/js/report.js:117 templates/js/translated/report.js:117
+#: templates/js/report.js:117 templates/js/translated/report.js:137
msgid "No report templates found which match selected stock item(s)"
msgstr ""
-#: templates/js/report.js:152 templates/js/translated/report.js:152
+#: templates/js/report.js:152 templates/js/translated/report.js:172
msgid "Select Builds"
msgstr ""
-#: templates/js/report.js:153 templates/js/translated/report.js:153
+#: templates/js/report.js:153 templates/js/translated/report.js:173
msgid "Build(s) must be selected before printing reports"
msgstr ""
-#: templates/js/report.js:170 templates/js/translated/report.js:170
+#: templates/js/report.js:170 templates/js/translated/report.js:190
msgid "No report templates found which match selected build(s)"
msgstr ""
-#: templates/js/report.js:205 templates/js/translated/label.js:115
-#: templates/js/translated/report.js:205
+#: templates/js/report.js:205 templates/js/translated/label.js:134
+#: templates/js/translated/report.js:225
msgid "Select Parts"
msgstr ""
-#: templates/js/report.js:206 templates/js/translated/report.js:206
+#: templates/js/report.js:206 templates/js/translated/report.js:226
msgid "Part(s) must be selected before printing reports"
msgstr ""
-#: templates/js/report.js:224 templates/js/translated/report.js:224
+#: templates/js/report.js:224 templates/js/translated/report.js:244
msgid "No report templates found which match selected part(s)"
msgstr ""
-#: templates/js/report.js:259 templates/js/translated/report.js:259
+#: templates/js/report.js:259 templates/js/translated/report.js:279
msgid "Select Purchase Orders"
msgstr ""
-#: templates/js/report.js:260 templates/js/translated/report.js:260
+#: templates/js/report.js:260 templates/js/translated/report.js:280
msgid "Purchase Order(s) must be selected before printing report"
msgstr ""
#: templates/js/report.js:278 templates/js/report.js:332
-#: templates/js/translated/report.js:278 templates/js/translated/report.js:332
+#: templates/js/translated/report.js:298 templates/js/translated/report.js:352
msgid "No report templates found which match selected orders"
msgstr ""
-#: templates/js/report.js:313 templates/js/translated/report.js:313
+#: templates/js/report.js:313 templates/js/translated/report.js:333
msgid "Select Sales Orders"
msgstr ""
-#: templates/js/report.js:314 templates/js/translated/report.js:314
+#: templates/js/report.js:314 templates/js/translated/report.js:334
msgid "Sales Order(s) must be selected before printing report"
msgstr ""
-#: templates/js/translated/api.js:161 templates/js/translated/modals.js:1027
+#: templates/js/translated/api.js:174 templates/js/translated/modals.js:1041
msgid "No Response"
msgstr ""
-#: templates/js/translated/api.js:162 templates/js/translated/modals.js:1028
+#: templates/js/translated/api.js:175 templates/js/translated/modals.js:1042
msgid "No response from the InvenTree server"
msgstr ""
-#: templates/js/translated/api.js:167
+#: templates/js/translated/api.js:181
msgid "Error 400: Bad request"
msgstr ""
-#: templates/js/translated/api.js:168
+#: templates/js/translated/api.js:182
msgid "API request returned error code 400"
msgstr ""
-#: templates/js/translated/api.js:171 templates/js/translated/modals.js:1037
+#: templates/js/translated/api.js:186 templates/js/translated/modals.js:1051
msgid "Error 401: Not Authenticated"
msgstr ""
-#: templates/js/translated/api.js:172 templates/js/translated/modals.js:1038
+#: templates/js/translated/api.js:187 templates/js/translated/modals.js:1052
msgid "Authentication credentials not supplied"
msgstr ""
-#: templates/js/translated/api.js:175 templates/js/translated/modals.js:1042
+#: templates/js/translated/api.js:191 templates/js/translated/modals.js:1056
msgid "Error 403: Permission Denied"
msgstr "Błąd 403: Odmowa dostępu"
-#: templates/js/translated/api.js:176 templates/js/translated/modals.js:1043
+#: templates/js/translated/api.js:192 templates/js/translated/modals.js:1057
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:179 templates/js/translated/modals.js:1047
+#: templates/js/translated/api.js:196 templates/js/translated/modals.js:1061
msgid "Error 404: Resource Not Found"
msgstr ""
-#: templates/js/translated/api.js:180 templates/js/translated/modals.js:1048
+#: templates/js/translated/api.js:197 templates/js/translated/modals.js:1062
msgid "The requested resource could not be located on the server"
msgstr ""
-#: templates/js/translated/api.js:183 templates/js/translated/modals.js:1052
+#: templates/js/translated/api.js:201 templates/js/translated/modals.js:1066
msgid "Error 408: Timeout"
msgstr ""
-#: templates/js/translated/api.js:184 templates/js/translated/modals.js:1053
+#: templates/js/translated/api.js:202 templates/js/translated/modals.js:1067
msgid "Connection timeout while requesting data from server"
msgstr ""
-#: templates/js/translated/api.js:187
+#: templates/js/translated/api.js:205
msgid "Unhandled Error Code"
msgstr ""
-#: templates/js/translated/api.js:188
+#: templates/js/translated/api.js:206
msgid "Error code"
msgstr ""
-#: templates/js/translated/attachment.js:16
+#: templates/js/translated/attachment.js:27
msgid "No attachments found"
msgstr ""
-#: templates/js/translated/attachment.js:56
+#: templates/js/translated/attachment.js:91
msgid "Upload Date"
msgstr ""
-#: templates/js/translated/attachment.js:69
+#: templates/js/translated/attachment.js:104
msgid "Edit attachment"
msgstr ""
-#: templates/js/translated/attachment.js:76
+#: templates/js/translated/attachment.js:111
msgid "Delete attachment"
msgstr ""
-#: templates/js/translated/barcode.js:8
+#: templates/js/translated/barcode.js:30
msgid "Scan barcode data here using wedge scanner"
msgstr ""
-#: templates/js/translated/barcode.js:10
+#: templates/js/translated/barcode.js:32
msgid "Enter barcode data"
msgstr ""
-#: templates/js/translated/barcode.js:14
+#: templates/js/translated/barcode.js:36
msgid "Barcode"
msgstr ""
-#: templates/js/translated/barcode.js:32
+#: templates/js/translated/barcode.js:54
msgid "Enter optional notes for stock transfer"
msgstr ""
-#: templates/js/translated/barcode.js:33
+#: templates/js/translated/barcode.js:55
msgid "Enter notes"
msgstr ""
-#: templates/js/translated/barcode.js:71
+#: templates/js/translated/barcode.js:93
msgid "Server error"
msgstr ""
-#: templates/js/translated/barcode.js:92
+#: templates/js/translated/barcode.js:114
msgid "Unknown response from server"
msgstr ""
-#: templates/js/translated/barcode.js:119
-#: templates/js/translated/modals.js:1017
+#: templates/js/translated/barcode.js:141
+#: templates/js/translated/modals.js:1031
msgid "Invalid server response"
msgstr ""
-#: templates/js/translated/barcode.js:212
+#: templates/js/translated/barcode.js:234
msgid "Scan barcode data below"
msgstr ""
-#: templates/js/translated/barcode.js:270
+#: templates/js/translated/barcode.js:281 templates/navbar.html:65
+msgid "Scan Barcode"
+msgstr ""
+
+#: templates/js/translated/barcode.js:292
msgid "No URL in response"
msgstr ""
-#: templates/js/translated/barcode.js:288
+#: templates/js/translated/barcode.js:310
msgid "Link Barcode to Stock Item"
msgstr ""
-#: templates/js/translated/barcode.js:311
+#: templates/js/translated/barcode.js:333
msgid "This will remove the association between this stock item and the barcode"
msgstr ""
-#: templates/js/translated/barcode.js:317
+#: templates/js/translated/barcode.js:339
msgid "Unlink"
msgstr ""
-#: templates/js/translated/barcode.js:376 templates/js/translated/stock.js:220
+#: templates/js/translated/barcode.js:398 templates/js/translated/stock.js:289
msgid "Remove stock item"
msgstr ""
-#: templates/js/translated/barcode.js:418
+#: templates/js/translated/barcode.js:440
msgid "Check Stock Items into Location"
msgstr ""
-#: templates/js/translated/barcode.js:422
-#: templates/js/translated/barcode.js:547
+#: templates/js/translated/barcode.js:444
+#: templates/js/translated/barcode.js:571
msgid "Check In"
msgstr ""
-#: templates/js/translated/barcode.js:462
-#: templates/js/translated/barcode.js:586
+#: templates/js/translated/barcode.js:486
+#: templates/js/translated/barcode.js:610
msgid "Error transferring stock"
msgstr ""
-#: templates/js/translated/barcode.js:481
+#: templates/js/translated/barcode.js:505
msgid "Stock Item already scanned"
msgstr ""
-#: templates/js/translated/barcode.js:485
+#: templates/js/translated/barcode.js:509
msgid "Stock Item already in this location"
msgstr ""
-#: templates/js/translated/barcode.js:492
+#: templates/js/translated/barcode.js:516
msgid "Added stock item"
msgstr ""
-#: templates/js/translated/barcode.js:499
+#: templates/js/translated/barcode.js:523
msgid "Barcode does not match Stock Item"
msgstr ""
-#: templates/js/translated/barcode.js:542
+#: templates/js/translated/barcode.js:566
msgid "Check Into Location"
msgstr ""
-#: templates/js/translated/barcode.js:605
+#: templates/js/translated/barcode.js:629
msgid "Barcode does not match a valid location"
msgstr ""
-#: templates/js/translated/bom.js:195 templates/js/translated/build.js:1152
+#: templates/js/translated/bom.js:215 templates/js/translated/build.js:1169
msgid "Open subassembly"
msgstr ""
-#: templates/js/translated/bom.js:269
+#: templates/js/translated/bom.js:287
msgid "Purchase Price Range"
msgstr ""
-#: templates/js/translated/bom.js:277
+#: templates/js/translated/bom.js:294
msgid "Purchase Price Average"
msgstr ""
-#: templates/js/translated/bom.js:326 templates/js/translated/bom.js:412
+#: templates/js/translated/bom.js:342 templates/js/translated/bom.js:428
msgid "View BOM"
msgstr ""
-#: templates/js/translated/bom.js:386
+#: templates/js/translated/bom.js:402
msgid "Validate BOM Item"
msgstr ""
-#: templates/js/translated/bom.js:388
+#: templates/js/translated/bom.js:404
msgid "This line has been validated"
msgstr ""
-#: templates/js/translated/bom.js:390 templates/js/translated/bom.js:555
+#: templates/js/translated/bom.js:406 templates/js/translated/bom.js:569
msgid "Edit BOM Item"
msgstr ""
-#: templates/js/translated/bom.js:392 templates/js/translated/bom.js:539
+#: templates/js/translated/bom.js:408 templates/js/translated/bom.js:554
msgid "Delete BOM Item"
msgstr ""
-#: templates/js/translated/bom.js:483 templates/js/translated/build.js:458
-#: templates/js/translated/build.js:1250
+#: templates/js/translated/bom.js:499 templates/js/translated/build.js:483
+#: templates/js/translated/build.js:1267
msgid "No BOM items found"
msgstr ""
-#: templates/js/translated/build.js:42
+#: templates/js/translated/build.js:69
msgid "Edit Build Order"
msgstr ""
-#: templates/js/translated/build.js:68
+#: templates/js/translated/build.js:95
msgid "Create Build Order"
msgstr ""
-#: templates/js/translated/build.js:100
+#: templates/js/translated/build.js:127
msgid "Auto-allocate stock items to this output"
msgstr ""
-#: templates/js/translated/build.js:108
+#: templates/js/translated/build.js:135
msgid "Unallocate stock from build output"
msgstr ""
-#: templates/js/translated/build.js:118
+#: templates/js/translated/build.js:145
msgid "Complete build output"
msgstr ""
-#: templates/js/translated/build.js:127
+#: templates/js/translated/build.js:154
msgid "Delete build output"
msgstr ""
-#: templates/js/translated/build.js:222
+#: templates/js/translated/build.js:249
msgid "No build order allocations found"
msgstr ""
-#: templates/js/translated/build.js:260 templates/js/translated/order.js:471
+#: templates/js/translated/build.js:287 templates/js/translated/order.js:813
msgid "Location not specified"
msgstr ""
-#: templates/js/translated/build.js:364 templates/stock_table.html:20
+#: templates/js/translated/build.js:391 templates/stock_table.html:20
msgid "New Stock Item"
msgstr ""
-#: templates/js/translated/build.js:679
+#: templates/js/translated/build.js:702
msgid "Required Part"
msgstr ""
-#: templates/js/translated/build.js:700
+#: templates/js/translated/build.js:723
msgid "Quantity Per"
msgstr "Ilość za"
-#: templates/js/translated/build.js:770 templates/js/translated/build.js:1214
+#: templates/js/translated/build.js:793 templates/js/translated/build.js:1231
#: templates/stock_table.html:59
msgid "Order stock"
msgstr ""
-#: templates/js/translated/build.js:823
+#: templates/js/translated/build.js:846
msgid "No builds matching query"
msgstr ""
-#: templates/js/translated/build.js:840 templates/js/translated/part.js:711
-#: templates/js/translated/part.js:956 templates/js/translated/stock.js:883
-#: templates/js/translated/stock.js:1336
+#: templates/js/translated/build.js:863 templates/js/translated/part.js:845
+#: templates/js/translated/part.js:1123 templates/js/translated/stock.js:783
+#: templates/js/translated/stock.js:1477
msgid "Select"
msgstr ""
-#: templates/js/translated/build.js:860
+#: templates/js/translated/build.js:883
msgid "Build order is overdue"
msgstr ""
-#: templates/js/translated/build.js:924 templates/js/translated/stock.js:1558
+#: templates/js/translated/build.js:944 templates/js/translated/stock.js:1696
msgid "No user information"
msgstr ""
-#: templates/js/translated/build.js:939
+#: templates/js/translated/build.js:956
msgid "No information"
msgstr ""
-#: templates/js/translated/build.js:989
+#: templates/js/translated/build.js:1007
msgid "No parts allocated for"
msgstr ""
-#: templates/js/translated/company.js:34
+#: templates/js/translated/company.js:65
msgid "Add Manufacturer"
msgstr ""
-#: templates/js/translated/company.js:47 templates/js/translated/company.js:136
+#: templates/js/translated/company.js:78 templates/js/translated/company.js:176
msgid "Add Manufacturer Part"
msgstr "Dodaj część producenta"
-#: templates/js/translated/company.js:59
+#: templates/js/translated/company.js:99
msgid "Edit Manufacturer Part"
msgstr ""
-#: templates/js/translated/company.js:68
+#: templates/js/translated/company.js:108
msgid "Delete Manufacturer Part"
msgstr ""
-#: templates/js/translated/company.js:124 templates/js/translated/order.js:58
+#: templates/js/translated/company.js:164 templates/js/translated/order.js:86
msgid "Add Supplier"
msgstr ""
-#: templates/js/translated/company.js:152
+#: templates/js/translated/company.js:192
msgid "Add Supplier Part"
msgstr ""
-#: templates/js/translated/company.js:162
+#: templates/js/translated/company.js:207
msgid "Edit Supplier Part"
msgstr ""
-#: templates/js/translated/company.js:172
+#: templates/js/translated/company.js:217
msgid "Delete Supplier Part"
msgstr ""
-#: templates/js/translated/company.js:219
+#: templates/js/translated/company.js:264
msgid "Edit Company"
msgstr "Edytuj firmę"
-#: templates/js/translated/company.js:240
+#: templates/js/translated/company.js:285
msgid "Add new Company"
msgstr "Dodaj nową firmę"
-#: templates/js/translated/company.js:317
+#: templates/js/translated/company.js:362
msgid "Parts Supplied"
msgstr ""
-#: templates/js/translated/company.js:326
+#: templates/js/translated/company.js:371
msgid "Parts Manufactured"
msgstr ""
-#: templates/js/translated/company.js:339
+#: templates/js/translated/company.js:385
msgid "No company information found"
msgstr ""
-#: templates/js/translated/company.js:357
+#: templates/js/translated/company.js:404
msgid "The following manufacturer parts will be deleted"
msgstr ""
-#: templates/js/translated/company.js:374
+#: templates/js/translated/company.js:421
msgid "Delete Manufacturer Parts"
msgstr ""
-#: templates/js/translated/company.js:427
+#: templates/js/translated/company.js:475
msgid "No manufacturer parts found"
msgstr ""
-#: templates/js/translated/company.js:446
-#: templates/js/translated/company.js:696 templates/js/translated/part.js:288
-#: templates/js/translated/part.js:373
+#: templates/js/translated/company.js:495
+#: templates/js/translated/company.js:751 templates/js/translated/part.js:416
+#: templates/js/translated/part.js:501
msgid "Template part"
msgstr ""
-#: templates/js/translated/company.js:450
-#: templates/js/translated/company.js:700 templates/js/translated/part.js:292
-#: templates/js/translated/part.js:377
+#: templates/js/translated/company.js:499
+#: templates/js/translated/company.js:755 templates/js/translated/part.js:420
+#: templates/js/translated/part.js:505
msgid "Assembled part"
msgstr ""
-#: templates/js/translated/company.js:574 templates/js/translated/part.js:462
+#: templates/js/translated/company.js:626 templates/js/translated/part.js:593
msgid "No parameters found"
msgstr ""
-#: templates/js/translated/company.js:610 templates/js/translated/part.js:503
+#: templates/js/translated/company.js:663 templates/js/translated/part.js:635
msgid "Edit parameter"
msgstr ""
-#: templates/js/translated/company.js:611 templates/js/translated/part.js:504
+#: templates/js/translated/company.js:664 templates/js/translated/part.js:636
msgid "Delete parameter"
msgstr ""
-#: templates/js/translated/company.js:630 templates/js/translated/part.js:521
+#: templates/js/translated/company.js:683 templates/js/translated/part.js:653
msgid "Edit Parameter"
msgstr ""
-#: templates/js/translated/company.js:641 templates/js/translated/part.js:533
+#: templates/js/translated/company.js:694 templates/js/translated/part.js:665
msgid "Delete Parameter"
msgstr ""
-#: templates/js/translated/company.js:677
+#: templates/js/translated/company.js:731
msgid "No supplier parts found"
msgstr ""
-#: templates/js/translated/filters.js:167
-#: templates/js/translated/filters.js:404
+#: templates/js/translated/filters.js:178
+#: templates/js/translated/filters.js:402
msgid "true"
msgstr ""
-#: templates/js/translated/filters.js:171
-#: templates/js/translated/filters.js:405
+#: templates/js/translated/filters.js:182
+#: templates/js/translated/filters.js:403
msgid "false"
msgstr ""
-#: templates/js/translated/filters.js:193
+#: templates/js/translated/filters.js:204
msgid "Select filter"
msgstr ""
-#: templates/js/translated/filters.js:268
+#: templates/js/translated/filters.js:279
msgid "Reload data"
msgstr ""
-#: templates/js/translated/filters.js:270
+#: templates/js/translated/filters.js:281
msgid "Add new filter"
msgstr "Dodaj nowy filtr"
-#: templates/js/translated/filters.js:273
+#: templates/js/translated/filters.js:284
msgid "Clear all filters"
msgstr ""
-#: templates/js/translated/filters.js:303
+#: templates/js/translated/filters.js:312
msgid "Create filter"
msgstr ""
-#: templates/js/translated/forms.js:289 templates/js/translated/forms.js:302
-#: templates/js/translated/forms.js:314 templates/js/translated/forms.js:326
+#: templates/js/translated/forms.js:323 templates/js/translated/forms.js:336
+#: templates/js/translated/forms.js:348 templates/js/translated/forms.js:360
msgid "Action Prohibited"
msgstr ""
-#: templates/js/translated/forms.js:290
+#: templates/js/translated/forms.js:324
msgid "Create operation not allowed"
msgstr ""
-#: templates/js/translated/forms.js:303
+#: templates/js/translated/forms.js:337
msgid "Update operation not allowed"
msgstr ""
-#: templates/js/translated/forms.js:315
+#: templates/js/translated/forms.js:349
msgid "Delete operation not allowed"
msgstr ""
-#: templates/js/translated/forms.js:327
+#: templates/js/translated/forms.js:361
msgid "View operation not allowed"
msgstr ""
-#: templates/js/translated/forms.js:865 templates/modals.html:21
+#: templates/js/translated/forms.js:889 templates/modals.html:21
#: templates/modals.html:47
msgid "Form errors exist"
msgstr ""
-#: templates/js/translated/forms.js:1258
+#: templates/js/translated/forms.js:1379
msgid "Searching"
msgstr ""
-#: templates/js/translated/forms.js:1423
+#: templates/js/translated/forms.js:1593
msgid "Clear input"
msgstr ""
-#: templates/js/translated/label.js:11
-msgid "Stock item(s) must be selected before printing labels"
+#: templates/js/translated/helpers.js:19
+msgid "YES"
msgstr ""
-#: templates/js/translated/label.js:29 templates/js/translated/label.js:79
-#: templates/js/translated/label.js:134
-msgid "No Labels Found"
+#: templates/js/translated/helpers.js:21
+msgid "NO"
msgstr ""
#: templates/js/translated/label.js:30
+msgid "Stock item(s) must be selected before printing labels"
+msgstr ""
+
+#: templates/js/translated/label.js:48 templates/js/translated/label.js:98
+#: templates/js/translated/label.js:153
+msgid "No Labels Found"
+msgstr ""
+
+#: templates/js/translated/label.js:49
msgid "No labels found which match selected stock item(s)"
msgstr ""
-#: templates/js/translated/label.js:61
+#: templates/js/translated/label.js:80
msgid "Select Stock Locations"
msgstr ""
-#: templates/js/translated/label.js:62
+#: templates/js/translated/label.js:81
msgid "Stock location(s) must be selected before printing labels"
msgstr ""
-#: templates/js/translated/label.js:80
+#: templates/js/translated/label.js:99
msgid "No labels found which match selected stock location(s)"
msgstr ""
-#: templates/js/translated/label.js:116
+#: templates/js/translated/label.js:135
msgid "Part(s) must be selected before printing labels"
msgstr ""
-#: templates/js/translated/label.js:135
+#: templates/js/translated/label.js:154
msgid "No labels found which match the selected part(s)"
msgstr ""
-#: templates/js/translated/label.js:209
+#: templates/js/translated/label.js:228
msgid "stock items selected"
msgstr ""
-#: templates/js/translated/label.js:217
+#: templates/js/translated/label.js:236
msgid "Select Label"
msgstr ""
-#: templates/js/translated/label.js:232
+#: templates/js/translated/label.js:251
msgid "Select Label Template"
msgstr ""
-#: templates/js/translated/modals.js:59 templates/js/translated/modals.js:103
-#: templates/js/translated/modals.js:593
+#: templates/js/translated/modals.js:76 templates/js/translated/modals.js:120
+#: templates/js/translated/modals.js:610
msgid "Cancel"
msgstr ""
-#: templates/js/translated/modals.js:60 templates/js/translated/modals.js:102
-#: templates/js/translated/modals.js:660 templates/js/translated/modals.js:956
+#: templates/js/translated/modals.js:77 templates/js/translated/modals.js:119
+#: templates/js/translated/modals.js:677 templates/js/translated/modals.js:970
#: templates/modals.html:30 templates/modals.html:55
msgid "Submit"
msgstr ""
-#: templates/js/translated/modals.js:101
+#: templates/js/translated/modals.js:118
msgid "Form Title"
msgstr ""
-#: templates/js/translated/modals.js:380
+#: templates/js/translated/modals.js:397
msgid "Waiting for server..."
msgstr ""
-#: templates/js/translated/modals.js:539
+#: templates/js/translated/modals.js:556
msgid "Show Error Information"
msgstr ""
-#: templates/js/translated/modals.js:592
+#: templates/js/translated/modals.js:609
msgid "Accept"
msgstr ""
-#: templates/js/translated/modals.js:649
+#: templates/js/translated/modals.js:666
msgid "Loading Data"
msgstr ""
-#: templates/js/translated/modals.js:907
+#: templates/js/translated/modals.js:922
msgid "Invalid response from server"
msgstr ""
-#: templates/js/translated/modals.js:907
+#: templates/js/translated/modals.js:922
msgid "Form data missing from server response"
msgstr ""
-#: templates/js/translated/modals.js:920
+#: templates/js/translated/modals.js:934
msgid "Error posting form data"
msgstr ""
-#: templates/js/translated/modals.js:1017
+#: templates/js/translated/modals.js:1031
msgid "JSON response missing form data"
msgstr ""
-#: templates/js/translated/modals.js:1032
+#: templates/js/translated/modals.js:1046
msgid "Error 400: Bad Request"
msgstr ""
-#: templates/js/translated/modals.js:1033
+#: templates/js/translated/modals.js:1047
msgid "Server returned error code 400"
msgstr ""
-#: templates/js/translated/modals.js:1056
+#: templates/js/translated/modals.js:1070
msgid "Error requesting form data"
msgstr ""
-#: templates/js/translated/model_renderers.js:38
+#: templates/js/translated/model_renderers.js:40
msgid "Company ID"
msgstr ""
-#: templates/js/translated/model_renderers.js:78
+#: templates/js/translated/model_renderers.js:82
msgid "Location ID"
msgstr ""
-#: templates/js/translated/model_renderers.js:95
+#: templates/js/translated/model_renderers.js:99
msgid "Build ID"
msgstr ""
-#: templates/js/translated/model_renderers.js:114
+#: templates/js/translated/model_renderers.js:119
msgid "Part ID"
msgstr ""
-#: templates/js/translated/model_renderers.js:163
+#: templates/js/translated/model_renderers.js:171
msgid "Category ID"
msgstr ""
-#: templates/js/translated/model_renderers.js:199
+#: templates/js/translated/model_renderers.js:208
msgid "Manufacturer Part ID"
msgstr ""
-#: templates/js/translated/model_renderers.js:227
+#: templates/js/translated/model_renderers.js:237
msgid "Supplier Part ID"
msgstr ""
-#: templates/js/translated/order.js:17
+#: templates/js/translated/order.js:45
msgid "Add Customer"
msgstr ""
-#: templates/js/translated/order.js:42
+#: templates/js/translated/order.js:70
msgid "Create Sales Order"
msgstr ""
-#: templates/js/translated/order.js:222
+#: templates/js/translated/order.js:295
msgid "No purchase orders found"
msgstr ""
-#: templates/js/translated/order.js:246 templates/js/translated/order.js:341
+#: templates/js/translated/order.js:320 templates/js/translated/order.js:682
msgid "Order is overdue"
msgstr ""
-#: templates/js/translated/order.js:318
+#: templates/js/translated/order.js:452
+msgid "No line items found"
+msgstr ""
+
+#: templates/js/translated/order.js:617
+msgid "Delete line item"
+msgstr ""
+
+#: templates/js/translated/order.js:621
+msgid "Receive line item"
+msgstr ""
+
+#: templates/js/translated/order.js:658
msgid "No sales orders found"
msgstr ""
-#: templates/js/translated/order.js:355
+#: templates/js/translated/order.js:696
msgid "Invalid Customer"
msgstr ""
-#: templates/js/translated/order.js:432
+#: templates/js/translated/order.js:774
msgid "No sales order allocations found"
msgstr ""
-#: templates/js/translated/part.js:10
-msgid "YES"
-msgstr ""
-
-#: templates/js/translated/part.js:12
-msgid "NO"
-msgstr ""
-
-#: templates/js/translated/part.js:22
-msgid "Add Part Category"
-msgstr ""
-
-#: templates/js/translated/part.js:53
+#: templates/js/translated/part.js:49
msgid "Part Attributes"
msgstr ""
-#: templates/js/translated/part.js:96
+#: templates/js/translated/part.js:53
msgid "Part Creation Options"
msgstr ""
-#: templates/js/translated/part.js:102
-msgid "Initial Stock Quantity"
-msgstr ""
-
-#: templates/js/translated/part.js:103
-msgid "Initialize part stock with specified quantity"
-msgstr ""
-
-#: templates/js/translated/part.js:109
-msgid "Copy Category Parameters"
-msgstr ""
-
-#: templates/js/translated/part.js:110
-msgid "Copy parameter templates from selected part category"
-msgstr ""
-
-#: templates/js/translated/part.js:120
+#: templates/js/translated/part.js:57
msgid "Part Duplication Options"
msgstr ""
-#: templates/js/translated/part.js:131
-msgid "Copy Image"
+#: templates/js/translated/part.js:61
+msgid "Supplier Options"
msgstr ""
-#: templates/js/translated/part.js:132
-msgid "Copy image from original part"
+#: templates/js/translated/part.js:75
+msgid "Add Part Category"
msgstr ""
-#: templates/js/translated/part.js:138
-msgid "Copy BOM"
-msgstr "Kopiuj BOM"
-
-#: templates/js/translated/part.js:139
-msgid "Copy bill of materials from original part"
+#: templates/js/translated/part.js:159
+msgid "Create Initial Stock"
msgstr ""
-#: templates/js/translated/part.js:145
-msgid "Copy Parameters"
+#: templates/js/translated/part.js:160
+msgid "Create an initial stock item for this part"
msgstr ""
-#: templates/js/translated/part.js:146
-msgid "Copy parameter data from original part"
+#: templates/js/translated/part.js:167
+msgid "Initial Stock Quantity"
msgstr ""
-#: templates/js/translated/part.js:158
-msgid "Parent part category"
+#: templates/js/translated/part.js:168
+msgid "Specify initial stock quantity for this part"
+msgstr ""
+
+#: templates/js/translated/part.js:175 templates/js/translated/stock.js:330
+msgid "Select destination stock location"
+msgstr ""
+
+#: templates/js/translated/part.js:186
+msgid "Copy Category Parameters"
+msgstr ""
+
+#: templates/js/translated/part.js:187
+msgid "Copy parameter templates from selected part category"
+msgstr ""
+
+#: templates/js/translated/part.js:195
+msgid "Add Supplier Data"
msgstr ""
#: templates/js/translated/part.js:196
+msgid "Create initial supplier data for this part"
+msgstr ""
+
+#: templates/js/translated/part.js:252
+msgid "Copy Image"
+msgstr ""
+
+#: templates/js/translated/part.js:253
+msgid "Copy image from original part"
+msgstr ""
+
+#: templates/js/translated/part.js:260
+msgid "Copy BOM"
+msgstr "Kopiuj BOM"
+
+#: templates/js/translated/part.js:261
+msgid "Copy bill of materials from original part"
+msgstr ""
+
+#: templates/js/translated/part.js:268
+msgid "Copy Parameters"
+msgstr ""
+
+#: templates/js/translated/part.js:269
+msgid "Copy parameter data from original part"
+msgstr ""
+
+#: templates/js/translated/part.js:282
+msgid "Parent part category"
+msgstr ""
+
+#: templates/js/translated/part.js:323
msgid "Edit Part"
msgstr ""
-#: templates/js/translated/part.js:280 templates/js/translated/part.js:365
+#: templates/js/translated/part.js:408 templates/js/translated/part.js:493
msgid "Trackable part"
msgstr ""
-#: templates/js/translated/part.js:284 templates/js/translated/part.js:369
+#: templates/js/translated/part.js:412 templates/js/translated/part.js:497
msgid "Virtual part"
msgstr ""
-#: templates/js/translated/part.js:296
+#: templates/js/translated/part.js:424
msgid "Starred part"
msgstr ""
-#: templates/js/translated/part.js:300
+#: templates/js/translated/part.js:428
msgid "Salable part"
msgstr ""
-#: templates/js/translated/part.js:414
+#: templates/js/translated/part.js:543
msgid "No variants found"
msgstr ""
-#: templates/js/translated/part.js:601 templates/js/translated/part.js:840
+#: templates/js/translated/part.js:732 templates/js/translated/part.js:994
msgid "No parts found"
msgstr ""
-#: templates/js/translated/part.js:779
+#: templates/js/translated/part.js:921
msgid "No category"
msgstr ""
-#: templates/js/translated/part.js:797
-#: templates/js/translated/table_filters.js:337
+#: templates/js/translated/part.js:944
+#: templates/js/translated/table_filters.js:350
msgid "Low stock"
msgstr ""
-#: templates/js/translated/part.js:981 templates/js/translated/stock.js:1360
+#: templates/js/translated/part.js:1148 templates/js/translated/stock.js:1501
msgid "Path"
msgstr ""
-#: templates/js/translated/part.js:1024
+#: templates/js/translated/part.js:1191
msgid "No test templates matching query"
msgstr ""
-#: templates/js/translated/part.js:1075 templates/js/translated/stock.js:443
+#: templates/js/translated/part.js:1242 templates/js/translated/stock.js:514
msgid "Edit test result"
msgstr ""
-#: templates/js/translated/part.js:1076 templates/js/translated/stock.js:444
+#: templates/js/translated/part.js:1243 templates/js/translated/stock.js:515
msgid "Delete test result"
msgstr ""
-#: templates/js/translated/part.js:1082
+#: templates/js/translated/part.js:1249
msgid "This test is defined for a parent part"
msgstr ""
-#: templates/js/translated/part.js:1107
+#: templates/js/translated/part.js:1274
#, python-brace-format
msgid "No ${human_name} information found"
msgstr ""
-#: templates/js/translated/part.js:1160
+#: templates/js/translated/part.js:1329
#, python-brace-format
msgid "Edit ${human_name}"
msgstr ""
-#: templates/js/translated/part.js:1161
+#: templates/js/translated/part.js:1330
#, python-brace-format
msgid "Delete ${human_name}"
msgstr ""
-#: templates/js/translated/part.js:1261
+#: templates/js/translated/part.js:1431
msgid "Single Price"
msgstr "Cena jednostkowa"
-#: templates/js/translated/part.js:1280
+#: templates/js/translated/part.js:1450
msgid "Single Price Difference"
msgstr ""
-#: templates/js/translated/stock.js:9
+#: templates/js/translated/stock.js:66
msgid "Parent stock location"
msgstr ""
-#: templates/js/translated/stock.js:39
+#: templates/js/translated/stock.js:96
msgid "Export Stock"
msgstr ""
-#: templates/js/translated/stock.js:42
+#: templates/js/translated/stock.js:99
msgid "Format"
msgstr ""
-#: templates/js/translated/stock.js:43
+#: templates/js/translated/stock.js:100
msgid "Select file format"
msgstr ""
-#: templates/js/translated/stock.js:55
+#: templates/js/translated/stock.js:124
msgid "Include Sublocations"
msgstr ""
-#: templates/js/translated/stock.js:56
+#: templates/js/translated/stock.js:125
msgid "Include stock items in sublocations"
msgstr ""
-#: templates/js/translated/stock.js:98
+#: templates/js/translated/stock.js:167
msgid "Transfer Stock"
msgstr ""
-#: templates/js/translated/stock.js:99
+#: templates/js/translated/stock.js:168
msgid "Move"
msgstr ""
-#: templates/js/translated/stock.js:105
+#: templates/js/translated/stock.js:174
msgid "Count Stock"
msgstr ""
-#: templates/js/translated/stock.js:106
+#: templates/js/translated/stock.js:175
msgid "Count"
msgstr ""
-#: templates/js/translated/stock.js:110
+#: templates/js/translated/stock.js:179
msgid "Remove Stock"
msgstr ""
-#: templates/js/translated/stock.js:111
+#: templates/js/translated/stock.js:180
msgid "Take"
msgstr ""
-#: templates/js/translated/stock.js:115
+#: templates/js/translated/stock.js:184
msgid "Add Stock"
msgstr "Dodaj stan"
-#: templates/js/translated/stock.js:116 users/models.py:190
+#: templates/js/translated/stock.js:185 users/models.py:190
msgid "Add"
msgstr "Dodaj"
-#: templates/js/translated/stock.js:120 templates/stock_table.html:63
+#: templates/js/translated/stock.js:189 templates/stock_table.html:63
msgid "Delete Stock"
msgstr ""
-#: templates/js/translated/stock.js:209
+#: templates/js/translated/stock.js:278
msgid "Quantity cannot be adjusted for serialized stock"
msgstr ""
-#: templates/js/translated/stock.js:209
+#: templates/js/translated/stock.js:278
msgid "Specify stock quantity"
msgstr ""
-#: templates/js/translated/stock.js:245
+#: templates/js/translated/stock.js:314
msgid "You must select at least one available stock item"
msgstr ""
-#: templates/js/translated/stock.js:261
-msgid "Select destination stock location"
-msgstr ""
-
-#: templates/js/translated/stock.js:269
+#: templates/js/translated/stock.js:339
msgid "Stock transaction notes"
msgstr ""
-#: templates/js/translated/stock.js:406
+#: templates/js/translated/stock.js:477
msgid "PASS"
msgstr ""
-#: templates/js/translated/stock.js:408
+#: templates/js/translated/stock.js:479
msgid "FAIL"
msgstr ""
-#: templates/js/translated/stock.js:413
+#: templates/js/translated/stock.js:484
msgid "NO RESULT"
msgstr ""
-#: templates/js/translated/stock.js:439
+#: templates/js/translated/stock.js:510
msgid "Add test result"
msgstr ""
-#: templates/js/translated/stock.js:465
+#: templates/js/translated/stock.js:536
msgid "No test results found"
msgstr ""
-#: templates/js/translated/stock.js:513
+#: templates/js/translated/stock.js:584
msgid "Test Date"
msgstr ""
-#: templates/js/translated/stock.js:621
+#: templates/js/translated/stock.js:691
msgid "In production"
msgstr ""
-#: templates/js/translated/stock.js:625
+#: templates/js/translated/stock.js:695
msgid "Installed in Stock Item"
msgstr ""
-#: templates/js/translated/stock.js:633
+#: templates/js/translated/stock.js:703
msgid "Assigned to Sales Order"
msgstr ""
-#: templates/js/translated/stock.js:709
-msgid "No stock items matching query"
-msgstr ""
-
-#: templates/js/translated/stock.js:729
-msgid "items"
-msgstr ""
-
-#: templates/js/translated/stock.js:821
-msgid "batches"
-msgstr ""
-
-#: templates/js/translated/stock.js:848
-msgid "locations"
-msgstr ""
-
-#: templates/js/translated/stock.js:850
-msgid "Undefined location"
-msgstr ""
-
-#: templates/js/translated/stock.js:951
+#: templates/js/translated/stock.js:865
msgid "Stock item is in production"
msgstr ""
-#: templates/js/translated/stock.js:956
+#: templates/js/translated/stock.js:870
msgid "Stock item assigned to sales order"
msgstr ""
-#: templates/js/translated/stock.js:959
+#: templates/js/translated/stock.js:873
msgid "Stock item assigned to customer"
msgstr ""
-#: templates/js/translated/stock.js:963
+#: templates/js/translated/stock.js:877
msgid "Stock item has expired"
msgstr ""
-#: templates/js/translated/stock.js:965
+#: templates/js/translated/stock.js:879
msgid "Stock item will expire soon"
msgstr ""
-#: templates/js/translated/stock.js:969
+#: templates/js/translated/stock.js:883
msgid "Stock item has been allocated"
msgstr ""
-#: templates/js/translated/stock.js:973
+#: templates/js/translated/stock.js:887
msgid "Stock item has been installed in another item"
msgstr ""
-#: templates/js/translated/stock.js:980
+#: templates/js/translated/stock.js:894
msgid "Stock item has been rejected"
msgstr ""
-#: templates/js/translated/stock.js:984
+#: templates/js/translated/stock.js:896
msgid "Stock item is lost"
msgstr ""
-#: templates/js/translated/stock.js:987
+#: templates/js/translated/stock.js:898
msgid "Stock item is destroyed"
msgstr ""
-#: templates/js/translated/stock.js:991
-#: templates/js/translated/table_filters.js:148
+#: templates/js/translated/stock.js:902
+#: templates/js/translated/table_filters.js:161
msgid "Depleted"
msgstr ""
-#: templates/js/translated/stock.js:1020
+#: templates/js/translated/stock.js:956
msgid "Stocktake"
msgstr ""
-#: templates/js/translated/stock.js:1073
+#: templates/js/translated/stock.js:1029
msgid "Supplier part not specified"
msgstr ""
-#: templates/js/translated/stock.js:1223
+#: templates/js/translated/stock.js:1067
+msgid "No stock items matching query"
+msgstr ""
+
+#: templates/js/translated/stock.js:1088 templates/js/translated/stock.js:1136
+msgid "items"
+msgstr ""
+
+#: templates/js/translated/stock.js:1176
+msgid "batches"
+msgstr ""
+
+#: templates/js/translated/stock.js:1203
+msgid "locations"
+msgstr ""
+
+#: templates/js/translated/stock.js:1205
+msgid "Undefined location"
+msgstr ""
+
+#: templates/js/translated/stock.js:1364
msgid "Stock Status"
msgstr ""
-#: templates/js/translated/stock.js:1238
+#: templates/js/translated/stock.js:1379
msgid "Set Stock Status"
msgstr ""
-#: templates/js/translated/stock.js:1252
+#: templates/js/translated/stock.js:1393
msgid "Select Status Code"
msgstr ""
-#: templates/js/translated/stock.js:1253
+#: templates/js/translated/stock.js:1394
msgid "Status code must be selected"
msgstr ""
-#: templates/js/translated/stock.js:1392
+#: templates/js/translated/stock.js:1533
msgid "Invalid date"
msgstr ""
-#: templates/js/translated/stock.js:1439
+#: templates/js/translated/stock.js:1580
msgid "Location no longer exists"
msgstr ""
-#: templates/js/translated/stock.js:1458
+#: templates/js/translated/stock.js:1599
msgid "Purchase order no longer exists"
msgstr ""
-#: templates/js/translated/stock.js:1477
+#: templates/js/translated/stock.js:1618
msgid "Customer no longer exists"
msgstr ""
-#: templates/js/translated/stock.js:1495
+#: templates/js/translated/stock.js:1636
msgid "Stock item no longer exists"
msgstr ""
-#: templates/js/translated/stock.js:1518
+#: templates/js/translated/stock.js:1659
msgid "Added"
msgstr "Dodano"
-#: templates/js/translated/stock.js:1526
+#: templates/js/translated/stock.js:1667
msgid "Removed"
msgstr ""
-#: templates/js/translated/stock.js:1570
+#: templates/js/translated/stock.js:1708
msgid "Edit tracking entry"
msgstr ""
-#: templates/js/translated/stock.js:1571
+#: templates/js/translated/stock.js:1709
msgid "Delete tracking entry"
msgstr ""
-#: templates/js/translated/stock.js:1715
+#: templates/js/translated/stock.js:1833
msgid "No installed items"
msgstr ""
-#: templates/js/translated/stock.js:1738
+#: templates/js/translated/stock.js:1856
msgid "Serial"
msgstr ""
-#: templates/js/translated/stock.js:1766
+#: templates/js/translated/stock.js:1884
msgid "Uninstall Stock Item"
msgstr ""
-#: templates/js/translated/table_filters.js:43
+#: templates/js/translated/table_filters.js:56
msgid "Trackable Part"
msgstr ""
-#: templates/js/translated/table_filters.js:47
+#: templates/js/translated/table_filters.js:60
msgid "Assembled Part"
msgstr ""
-#: templates/js/translated/table_filters.js:51
+#: templates/js/translated/table_filters.js:64
msgid "Validated"
msgstr ""
-#: templates/js/translated/table_filters.js:59
+#: templates/js/translated/table_filters.js:72
msgid "Allow Variant Stock"
msgstr ""
-#: templates/js/translated/table_filters.js:79
-#: templates/js/translated/table_filters.js:143
+#: templates/js/translated/table_filters.js:92
+#: templates/js/translated/table_filters.js:156
msgid "Include sublocations"
msgstr ""
-#: templates/js/translated/table_filters.js:80
+#: templates/js/translated/table_filters.js:93
msgid "Include locations"
msgstr ""
-#: templates/js/translated/table_filters.js:90
-#: templates/js/translated/table_filters.js:91
-#: templates/js/translated/table_filters.js:314
+#: templates/js/translated/table_filters.js:103
+#: templates/js/translated/table_filters.js:104
+#: templates/js/translated/table_filters.js:327
msgid "Include subcategories"
msgstr ""
-#: templates/js/translated/table_filters.js:101
-#: templates/js/translated/table_filters.js:178
+#: templates/js/translated/table_filters.js:114
+#: templates/js/translated/table_filters.js:191
msgid "Is Serialized"
msgstr ""
-#: templates/js/translated/table_filters.js:104
-#: templates/js/translated/table_filters.js:185
+#: templates/js/translated/table_filters.js:117
+#: templates/js/translated/table_filters.js:198
msgid "Serial number GTE"
msgstr ""
-#: templates/js/translated/table_filters.js:105
-#: templates/js/translated/table_filters.js:186
+#: templates/js/translated/table_filters.js:118
+#: templates/js/translated/table_filters.js:199
msgid "Serial number greater than or equal to"
msgstr ""
-#: templates/js/translated/table_filters.js:108
-#: templates/js/translated/table_filters.js:189
+#: templates/js/translated/table_filters.js:121
+#: templates/js/translated/table_filters.js:202
msgid "Serial number LTE"
msgstr ""
-#: templates/js/translated/table_filters.js:109
-#: templates/js/translated/table_filters.js:190
+#: templates/js/translated/table_filters.js:122
+#: templates/js/translated/table_filters.js:203
msgid "Serial number less than or equal to"
msgstr ""
-#: templates/js/translated/table_filters.js:112
-#: templates/js/translated/table_filters.js:113
-#: templates/js/translated/table_filters.js:181
-#: templates/js/translated/table_filters.js:182
+#: templates/js/translated/table_filters.js:125
+#: templates/js/translated/table_filters.js:126
+#: templates/js/translated/table_filters.js:194
+#: templates/js/translated/table_filters.js:195
msgid "Serial number"
msgstr ""
-#: templates/js/translated/table_filters.js:117
-#: templates/js/translated/table_filters.js:199
+#: templates/js/translated/table_filters.js:130
+#: templates/js/translated/table_filters.js:212
msgid "Batch code"
msgstr ""
-#: templates/js/translated/table_filters.js:128
-#: templates/js/translated/table_filters.js:304
+#: templates/js/translated/table_filters.js:141
+#: templates/js/translated/table_filters.js:317
msgid "Active parts"
msgstr ""
-#: templates/js/translated/table_filters.js:129
+#: templates/js/translated/table_filters.js:142
msgid "Show stock for active parts"
msgstr ""
-#: templates/js/translated/table_filters.js:134
+#: templates/js/translated/table_filters.js:147
msgid "Part is an assembly"
msgstr ""
-#: templates/js/translated/table_filters.js:138
+#: templates/js/translated/table_filters.js:151
msgid "Is allocated"
msgstr ""
-#: templates/js/translated/table_filters.js:139
+#: templates/js/translated/table_filters.js:152
msgid "Item has been allocated"
msgstr ""
-#: templates/js/translated/table_filters.js:144
+#: templates/js/translated/table_filters.js:157
msgid "Include stock in sublocations"
msgstr ""
-#: templates/js/translated/table_filters.js:149
+#: templates/js/translated/table_filters.js:162
msgid "Show stock items which are depleted"
msgstr ""
-#: templates/js/translated/table_filters.js:154
+#: templates/js/translated/table_filters.js:167
msgid "Show items which are in stock"
msgstr ""
-#: templates/js/translated/table_filters.js:158
+#: templates/js/translated/table_filters.js:171
msgid "In Production"
msgstr ""
-#: templates/js/translated/table_filters.js:159
+#: templates/js/translated/table_filters.js:172
msgid "Show items which are in production"
msgstr ""
-#: templates/js/translated/table_filters.js:163
+#: templates/js/translated/table_filters.js:176
msgid "Include Variants"
msgstr ""
-#: templates/js/translated/table_filters.js:164
+#: templates/js/translated/table_filters.js:177
msgid "Include stock items for variant parts"
msgstr ""
-#: templates/js/translated/table_filters.js:168
+#: templates/js/translated/table_filters.js:181
msgid "Installed"
msgstr ""
-#: templates/js/translated/table_filters.js:169
+#: templates/js/translated/table_filters.js:182
msgid "Show stock items which are installed in another item"
msgstr ""
-#: templates/js/translated/table_filters.js:174
+#: templates/js/translated/table_filters.js:187
msgid "Show items which have been assigned to a customer"
msgstr ""
-#: templates/js/translated/table_filters.js:194
-#: templates/js/translated/table_filters.js:195
+#: templates/js/translated/table_filters.js:207
+#: templates/js/translated/table_filters.js:208
msgid "Stock status"
msgstr ""
-#: templates/js/translated/table_filters.js:203
+#: templates/js/translated/table_filters.js:216
msgid "Has purchase price"
msgstr ""
-#: templates/js/translated/table_filters.js:204
+#: templates/js/translated/table_filters.js:217
msgid "Show stock items which have a purchase price set"
msgstr ""
-#: templates/js/translated/table_filters.js:213
+#: templates/js/translated/table_filters.js:226
msgid "Show stock items which have expired"
msgstr ""
-#: templates/js/translated/table_filters.js:219
+#: templates/js/translated/table_filters.js:232
msgid "Show stock which is close to expiring"
msgstr ""
-#: templates/js/translated/table_filters.js:250
+#: templates/js/translated/table_filters.js:263
msgid "Build status"
msgstr ""
-#: templates/js/translated/table_filters.js:269
-#: templates/js/translated/table_filters.js:286
+#: templates/js/translated/table_filters.js:282
+#: templates/js/translated/table_filters.js:299
msgid "Order status"
msgstr ""
-#: templates/js/translated/table_filters.js:274
-#: templates/js/translated/table_filters.js:291
+#: templates/js/translated/table_filters.js:287
+#: templates/js/translated/table_filters.js:304
msgid "Outstanding"
msgstr ""
-#: templates/js/translated/table_filters.js:315
+#: templates/js/translated/table_filters.js:328
msgid "Include parts in subcategories"
msgstr ""
-#: templates/js/translated/table_filters.js:319
+#: templates/js/translated/table_filters.js:332
msgid "Has IPN"
msgstr ""
-#: templates/js/translated/table_filters.js:320
+#: templates/js/translated/table_filters.js:333
msgid "Part has internal part number"
msgstr ""
-#: templates/js/translated/table_filters.js:325
+#: templates/js/translated/table_filters.js:338
msgid "Show active parts"
msgstr ""
-#: templates/js/translated/table_filters.js:333
+#: templates/js/translated/table_filters.js:346
msgid "Stock available"
msgstr ""
-#: templates/js/translated/table_filters.js:349
+#: templates/js/translated/table_filters.js:362
msgid "Starred"
msgstr ""
-#: templates/js/translated/table_filters.js:361
+#: templates/js/translated/table_filters.js:374
msgid "Purchasable"
msgstr ""
-#: templates/js/translated/tables.js:342
+#: templates/js/translated/tables.js:357
msgid "Loading data"
msgstr ""
-#: templates/js/translated/tables.js:345
+#: templates/js/translated/tables.js:360
msgid "rows per page"
msgstr ""
-#: templates/js/translated/tables.js:348
+#: templates/js/translated/tables.js:363
msgid "Showing"
msgstr ""
-#: templates/js/translated/tables.js:348
+#: templates/js/translated/tables.js:363
msgid "to"
msgstr ""
-#: templates/js/translated/tables.js:348
+#: templates/js/translated/tables.js:363
msgid "of"
msgstr ""
-#: templates/js/translated/tables.js:348
+#: templates/js/translated/tables.js:363
msgid "rows"
msgstr ""
-#: templates/js/translated/tables.js:354
+#: templates/js/translated/tables.js:369
msgid "No matching results"
msgstr ""
-#: templates/js/translated/tables.js:357
+#: templates/js/translated/tables.js:372
msgid "Hide/Show pagination"
msgstr ""
-#: templates/js/translated/tables.js:360
+#: templates/js/translated/tables.js:375
msgid "Refresh"
msgstr ""
-#: templates/js/translated/tables.js:363
+#: templates/js/translated/tables.js:378
msgid "Toggle"
msgstr ""
-#: templates/js/translated/tables.js:366
+#: templates/js/translated/tables.js:381
msgid "Columns"
msgstr ""
-#: templates/js/translated/tables.js:369
+#: templates/js/translated/tables.js:384
msgid "All"
msgstr ""
-#: templates/navbar.html:13
+#: templates/navbar.html:19
msgid "Toggle navigation"
msgstr ""
-#: templates/navbar.html:33
+#: templates/navbar.html:39
msgid "Buy"
msgstr ""
-#: templates/navbar.html:43
+#: templates/navbar.html:51
msgid "Sell"
msgstr ""
-#: templates/navbar.html:55
-msgid "Scan Barcode"
-msgstr ""
-
-#: templates/navbar.html:77 users/models.py:39
+#: templates/navbar.html:87 users/models.py:39
msgid "Admin"
msgstr ""
-#: templates/navbar.html:79
+#: templates/navbar.html:89
msgid "Logout"
msgstr ""
-#: templates/navbar.html:81 templates/registration/login.html:89
+#: templates/navbar.html:91 templates/registration/login.html:89
msgid "Login"
msgstr ""
-#: templates/navbar.html:104
+#: templates/navbar.html:114
msgid "About InvenTree"
msgstr ""
diff --git a/InvenTree/locale/ru/LC_MESSAGES/django.po b/InvenTree/locale/ru/LC_MESSAGES/django.po
index b5b04e2a28..82a406afcd 100644
--- a/InvenTree/locale/ru/LC_MESSAGES/django.po
+++ b/InvenTree/locale/ru/LC_MESSAGES/django.po
@@ -2,8 +2,8 @@ msgid ""
msgstr ""
"Project-Id-Version: inventree\n"
"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2021-08-07 15:14+0000\n"
-"PO-Revision-Date: 2021-08-07 15:30\n"
+"POT-Creation-Date: 2021-09-12 13:15+0000\n"
+"PO-Revision-Date: 2021-09-12 13:44\n"
"Last-Translator: \n"
"Language-Team: Russian\n"
"Language: ru_RU\n"
@@ -36,7 +36,7 @@ msgstr "Введите дату"
#: InvenTree/forms.py:111 build/forms.py:102 build/forms.py:123
#: build/forms.py:145 build/forms.py:169 build/forms.py:185 build/forms.py:227
#: order/forms.py:30 order/forms.py:41 order/forms.py:52 order/forms.py:63
-#: order/forms.py:74 part/forms.py:108 templates/js/translated/forms.js:545
+#: order/forms.py:74 part/forms.py:108 templates/js/translated/forms.js:564
msgid "Confirm"
msgstr "Подтвердить"
@@ -73,7 +73,7 @@ msgstr "Выбрать категорию"
msgid "Duplicate serial: {n}"
msgstr "Дублировать серийный номер: {n}"
-#: InvenTree/helpers.py:408 order/models.py:315 order/models.py:425
+#: InvenTree/helpers.py:408 order/models.py:315 order/models.py:430
#: stock/views.py:1363
msgid "Invalid quantity provided"
msgstr "недопустимое количество"
@@ -102,152 +102,181 @@ msgstr "Серийных номеров не найдено"
msgid "Number of unique serial number ({s}) must match quantity ({q})"
msgstr "Число уникальных серийных номеров ({s}) должно соответствовать количеству ({q})"
-#: InvenTree/models.py:61 stock/models.py:1815
+#: InvenTree/models.py:66 stock/models.py:1826
msgid "Attachment"
msgstr "Вложения"
-#: InvenTree/models.py:62
+#: InvenTree/models.py:67
msgid "Select file to attach"
msgstr "Выберите файл для вложения"
-#: InvenTree/models.py:64 templates/js/translated/attachment.js:52
+#: InvenTree/models.py:69 templates/js/translated/attachment.js:87
msgid "Comment"
msgstr "Комментарий"
-#: InvenTree/models.py:64
+#: InvenTree/models.py:69
msgid "File comment"
msgstr "Комментарий к файлу"
-#: InvenTree/models.py:70 InvenTree/models.py:71 common/models.py:969
-#: common/models.py:970 part/models.py:2035
+#: InvenTree/models.py:75 InvenTree/models.py:76 common/models.py:993
+#: common/models.py:994 part/models.py:2051
#: report/templates/report/inventree_test_report_base.html:91
-#: templates/js/translated/stock.js:1549
+#: templates/js/translated/stock.js:1690
msgid "User"
msgstr "Пользователь"
-#: InvenTree/models.py:74
+#: InvenTree/models.py:79
msgid "upload date"
msgstr "дата загрузки"
-#: InvenTree/models.py:113
+#: InvenTree/models.py:99
+msgid "Filename must not be empty"
+msgstr ""
+
+#: InvenTree/models.py:122
+msgid "Invalid attachment directory"
+msgstr ""
+
+#: InvenTree/models.py:132
+#, python-brace-format
+msgid "Filename contains illegal character '{c}'"
+msgstr ""
+
+#: InvenTree/models.py:135
+msgid "Filename missing extension"
+msgstr ""
+
+#: InvenTree/models.py:142
+msgid "Attachment with this filename already exists"
+msgstr ""
+
+#: InvenTree/models.py:149
+msgid "Error renaming file"
+msgstr ""
+
+#: InvenTree/models.py:184
msgid "Invalid choice"
msgstr ""
-#: InvenTree/models.py:129 InvenTree/models.py:130 company/models.py:412
-#: label/models.py:112 part/models.py:656 part/models.py:2196
-#: part/templates/part/part_base.html:233 report/models.py:181
+#: InvenTree/models.py:200 InvenTree/models.py:201 company/models.py:414
+#: label/models.py:112 part/models.py:658 part/models.py:2212
+#: part/templates/part/part_base.html:241 report/models.py:181
#: templates/InvenTree/search.html:137 templates/InvenTree/search.html:289
-#: templates/js/translated/company.js:583 templates/js/translated/part.js:338
-#: templates/js/translated/part.js:471 templates/js/translated/part.js:963
-#: templates/js/translated/stock.js:1342
+#: templates/js/translated/company.js:636 templates/js/translated/part.js:466
+#: templates/js/translated/part.js:603 templates/js/translated/part.js:1130
+#: templates/js/translated/stock.js:1483
msgid "Name"
msgstr "Название"
-#: InvenTree/models.py:136 build/models.py:187
-#: build/templates/build/detail.html:24 company/models.py:351
-#: company/models.py:519 company/templates/company/manufacturer_part.html:76
+#: InvenTree/models.py:207 build/models.py:187
+#: build/templates/build/detail.html:24 company/models.py:353
+#: company/models.py:569 company/templates/company/manufacturer_part.html:76
#: company/templates/company/supplier_part.html:75 label/models.py:119
-#: order/models.py:158 order/templates/order/purchase_order_detail.html:312
-#: part/models.py:679 part/templates/part/part_base.html:238
+#: order/models.py:158 part/models.py:681
+#: part/templates/part/part_base.html:246
#: part/templates/part/set_category.html:14 report/models.py:194
#: report/models.py:551 report/models.py:590
#: report/templates/report/inventree_build_order_base.html:118
#: templates/InvenTree/search.html:144 templates/InvenTree/search.html:224
#: templates/InvenTree/search.html:296
#: templates/InvenTree/settings/header.html:9
-#: templates/js/translated/bom.js:210 templates/js/translated/build.js:868
-#: templates/js/translated/build.js:1162 templates/js/translated/company.js:299
-#: templates/js/translated/company.js:497
-#: templates/js/translated/company.js:779 templates/js/translated/order.js:267
-#: templates/js/translated/order.js:369 templates/js/translated/part.js:397
-#: templates/js/translated/part.js:581 templates/js/translated/part.js:758
-#: templates/js/translated/part.js:975 templates/js/translated/part.js:1043
-#: templates/js/translated/stock.js:926 templates/js/translated/stock.js:1354
-#: templates/js/translated/stock.js:1399
+#: templates/js/translated/bom.js:230 templates/js/translated/build.js:891
+#: templates/js/translated/build.js:1179 templates/js/translated/company.js:344
+#: templates/js/translated/company.js:546
+#: templates/js/translated/company.js:834 templates/js/translated/order.js:341
+#: templates/js/translated/order.js:486 templates/js/translated/order.js:710
+#: templates/js/translated/part.js:525 templates/js/translated/part.js:713
+#: templates/js/translated/part.js:902 templates/js/translated/part.js:1142
+#: templates/js/translated/part.js:1210 templates/js/translated/stock.js:840
+#: templates/js/translated/stock.js:1495 templates/js/translated/stock.js:1540
msgid "Description"
msgstr "Описание"
-#: InvenTree/models.py:137
+#: InvenTree/models.py:208
msgid "Description (optional)"
msgstr "Описание (необязательно)"
-#: InvenTree/models.py:145
+#: InvenTree/models.py:216
msgid "parent"
msgstr "родитель"
-#: InvenTree/serializers.py:52 part/models.py:2438
+#: InvenTree/serializers.py:55 part/models.py:2454
msgid "Must be a valid number"
msgstr ""
-#: InvenTree/settings.py:518
+#: InvenTree/serializers.py:244
+msgid "Filename"
+msgstr ""
+
+#: InvenTree/settings.py:523
msgid "German"
msgstr "Немецкий"
-#: InvenTree/settings.py:519
+#: InvenTree/settings.py:524
msgid "Greek"
msgstr "Греческий"
-#: InvenTree/settings.py:520
+#: InvenTree/settings.py:525
msgid "English"
msgstr "Английский"
-#: InvenTree/settings.py:521
+#: InvenTree/settings.py:526
msgid "Spanish"
msgstr "Испанский"
-#: InvenTree/settings.py:522
+#: InvenTree/settings.py:527
msgid "French"
msgstr "Французский"
-#: InvenTree/settings.py:523
+#: InvenTree/settings.py:528
msgid "Hebrew"
msgstr "Иврит"
-#: InvenTree/settings.py:524
+#: InvenTree/settings.py:529
msgid "Italian"
msgstr "Итальянский"
-#: InvenTree/settings.py:525
+#: InvenTree/settings.py:530
msgid "Japanese"
msgstr "Японский"
-#: InvenTree/settings.py:526
+#: InvenTree/settings.py:531
msgid "Korean"
msgstr "Корейский"
-#: InvenTree/settings.py:527
+#: InvenTree/settings.py:532
msgid "Dutch"
msgstr "Голландский"
-#: InvenTree/settings.py:528
+#: InvenTree/settings.py:533
msgid "Norwegian"
msgstr "Норвежский"
-#: InvenTree/settings.py:529
+#: InvenTree/settings.py:534
msgid "Polish"
msgstr "Польский"
-#: InvenTree/settings.py:530
+#: InvenTree/settings.py:535
msgid "Russian"
msgstr "Русский"
-#: InvenTree/settings.py:531
+#: InvenTree/settings.py:536
msgid "Swedish"
msgstr "Шведский"
-#: InvenTree/settings.py:532
+#: InvenTree/settings.py:537
msgid "Thai"
msgstr "Тайский"
-#: InvenTree/settings.py:533
+#: InvenTree/settings.py:538
msgid "Turkish"
msgstr "Турецкий"
-#: InvenTree/settings.py:534
+#: InvenTree/settings.py:539
msgid "Vietnamese"
msgstr "Вьетнамский"
-#: InvenTree/settings.py:535
+#: InvenTree/settings.py:540
msgid "Chinese"
msgstr "Китайский"
@@ -372,7 +401,7 @@ msgstr "Отделить от родительского элемента"
msgid "Split child item"
msgstr "Разбить дочерний элемент"
-#: InvenTree/status_codes.py:294 templates/js/translated/table_filters.js:173
+#: InvenTree/status_codes.py:294 templates/js/translated/table_filters.js:186
msgid "Sent to customer"
msgstr "Отправлено клиенту"
@@ -432,27 +461,27 @@ msgstr "Перегрузка не может превысить 100%"
msgid "Overage must be an integer value or a percentage"
msgstr "Превышение должно быть целым числом или процентом"
-#: InvenTree/views.py:612
+#: InvenTree/views.py:610
msgid "Delete Item"
msgstr "Удалить элемент"
-#: InvenTree/views.py:661
+#: InvenTree/views.py:659
msgid "Check box to confirm item deletion"
msgstr "Установите флажок для подтверждения удаления элемента"
-#: InvenTree/views.py:676 templates/InvenTree/settings/user.html:14
+#: InvenTree/views.py:674 templates/InvenTree/settings/user.html:14
msgid "Edit User Information"
msgstr "Редактировать информацию о пользователе"
-#: InvenTree/views.py:687 templates/InvenTree/settings/user.html:18
+#: InvenTree/views.py:685 templates/InvenTree/settings/user.html:18
msgid "Set Password"
msgstr "Установить пароль"
-#: InvenTree/views.py:706
+#: InvenTree/views.py:704
msgid "Password fields must match"
msgstr "Пароли должны совпадать"
-#: InvenTree/views.py:907 templates/navbar.html:95
+#: InvenTree/views.py:910 templates/navbar.html:105
msgid "System Information"
msgstr "Информация о системе"
@@ -509,8 +538,8 @@ msgstr "Срок выполнения заказа"
#: order/templates/order/order_base.html:124
#: order/templates/order/sales_order_base.html:119
#: report/templates/report/inventree_build_order_base.html:126
-#: templates/js/translated/build.js:945 templates/js/translated/order.js:284
-#: templates/js/translated/order.js:387
+#: templates/js/translated/build.js:962 templates/js/translated/order.js:358
+#: templates/js/translated/order.js:728
msgid "Target Date"
msgstr "Целевая дата"
@@ -522,19 +551,18 @@ msgstr "Целевая дата для сборки. Сборка будет п
#: build/templates/build/allocation_card.html:23
#: build/templates/build/auto_allocate.html:17
#: build/templates/build/build_base.html:133
-#: build/templates/build/detail.html:34 common/models.py:1001
+#: build/templates/build/detail.html:34 common/models.py:1025
#: company/forms.py:42 company/templates/company/supplier_part.html:226
-#: order/forms.py:120 order/forms.py:142 order/forms.py:159 order/models.py:706
-#: order/models.py:952 order/templates/order/order_wizard/match_parts.html:30
+#: order/forms.py:120 order/forms.py:142 order/forms.py:159 order/models.py:712
+#: order/models.py:964 order/templates/order/order_wizard/match_parts.html:30
#: order/templates/order/order_wizard/select_parts.html:34
-#: order/templates/order/purchase_order_detail.html:348
-#: order/templates/order/sales_order_detail.html:200
-#: order/templates/order/sales_order_detail.html:207
-#: order/templates/order/sales_order_detail.html:292
-#: order/templates/order/sales_order_detail.html:364 part/forms.py:249
-#: part/forms.py:265 part/forms.py:281 part/models.py:2340
+#: order/templates/order/sales_order_detail.html:201
+#: order/templates/order/sales_order_detail.html:208
+#: order/templates/order/sales_order_detail.html:293
+#: order/templates/order/sales_order_detail.html:365 part/forms.py:249
+#: part/forms.py:265 part/forms.py:281 part/models.py:2356
#: part/templates/part/bom_upload/match_parts.html:31
-#: part/templates/part/detail.html:940 part/templates/part/detail.html:1026
+#: part/templates/part/detail.html:973 part/templates/part/detail.html:1059
#: part/templates/part/part_pricing.html:16
#: report/templates/report/inventree_build_order_base.html:114
#: report/templates/report/inventree_po_report.html:91
@@ -542,13 +570,14 @@ msgstr "Целевая дата для сборки. Сборка будет п
#: report/templates/report/inventree_test_report_base.html:77
#: stock/forms.py:140 stock/templates/stock/item_base.html:269
#: stock/templates/stock/stock_adjust.html:18
-#: templates/js/translated/barcode.js:364 templates/js/translated/bom.js:225
-#: templates/js/translated/build.js:271 templates/js/translated/build.js:606
-#: templates/js/translated/build.js:1172
-#: templates/js/translated/model_renderers.js:56
-#: templates/js/translated/order.js:482 templates/js/translated/part.js:1148
-#: templates/js/translated/part.js:1270 templates/js/translated/part.js:1326
-#: templates/js/translated/stock.js:1534 templates/js/translated/stock.js:1732
+#: templates/js/translated/barcode.js:386 templates/js/translated/bom.js:245
+#: templates/js/translated/build.js:298 templates/js/translated/build.js:629
+#: templates/js/translated/build.js:1189
+#: templates/js/translated/model_renderers.js:59
+#: templates/js/translated/order.js:522 templates/js/translated/order.js:824
+#: templates/js/translated/part.js:1317 templates/js/translated/part.js:1440
+#: templates/js/translated/part.js:1518 templates/js/translated/stock.js:1675
+#: templates/js/translated/stock.js:1850
msgid "Quantity"
msgstr "Количество"
@@ -589,13 +618,15 @@ msgid "Mark build as complete"
msgstr "Пометить сборку как завершенную"
#: build/forms.py:210 build/templates/build/auto_allocate.html:18
-#: stock/forms.py:280 stock/templates/stock/item_base.html:299
+#: order/serializers.py:216 order/serializers.py:275 stock/forms.py:280
+#: stock/templates/stock/item_base.html:299
#: stock/templates/stock/stock_adjust.html:17
-#: templates/InvenTree/search.html:260 templates/js/translated/barcode.js:363
-#: templates/js/translated/barcode.js:531 templates/js/translated/build.js:256
-#: templates/js/translated/build.js:620 templates/js/translated/order.js:467
-#: templates/js/translated/stock.js:134 templates/js/translated/stock.js:260
-#: templates/js/translated/stock.js:1012 templates/js/translated/stock.js:1426
+#: templates/InvenTree/search.html:260 templates/js/translated/barcode.js:385
+#: templates/js/translated/barcode.js:555 templates/js/translated/build.js:283
+#: templates/js/translated/build.js:643 templates/js/translated/order.js:809
+#: templates/js/translated/part.js:174 templates/js/translated/stock.js:203
+#: templates/js/translated/stock.js:329 templates/js/translated/stock.js:942
+#: templates/js/translated/stock.js:1567
msgid "Location"
msgstr "Расположение"
@@ -604,13 +635,13 @@ msgid "Location of completed parts"
msgstr "Расположение укомплектованных частей"
#: build/forms.py:215 build/templates/build/build_base.html:138
-#: build/templates/build/detail.html:62 order/models.py:549
-#: order/templates/order/receive_parts.html:24
+#: build/templates/build/detail.html:62 order/models.py:555
+#: order/serializers.py:230 order/templates/order/receive_parts.html:24
#: stock/templates/stock/item_base.html:422 templates/InvenTree/search.html:252
-#: templates/js/translated/barcode.js:119 templates/js/translated/build.js:902
-#: templates/js/translated/order.js:271 templates/js/translated/order.js:374
-#: templates/js/translated/stock.js:999 templates/js/translated/stock.js:1503
-#: templates/js/translated/stock.js:1748
+#: templates/js/translated/barcode.js:141 templates/js/translated/build.js:925
+#: templates/js/translated/order.js:345 templates/js/translated/order.js:715
+#: templates/js/translated/stock.js:917 templates/js/translated/stock.js:1644
+#: templates/js/translated/stock.js:1866
msgid "Status"
msgstr "Статус"
@@ -649,7 +680,7 @@ msgstr ""
#: build/models.py:117 build/templates/build/build_base.html:9
#: build/templates/build/build_base.html:73
#: report/templates/report/inventree_build_order_base.html:106
-#: templates/js/translated/build.js:233
+#: templates/js/translated/build.js:260
msgid "Build Order"
msgstr "Порядок сборки"
@@ -657,8 +688,8 @@ msgstr "Порядок сборки"
#: build/templates/build/index.html:15
#: order/templates/order/sales_order_detail.html:34
#: order/templates/order/so_navbar.html:19
-#: order/templates/order/so_navbar.html:22 part/templates/part/navbar.html:42
-#: part/templates/part/navbar.html:45 templates/InvenTree/index.html:229
+#: order/templates/order/so_navbar.html:22 part/templates/part/navbar.html:50
+#: part/templates/part/navbar.html:53 templates/InvenTree/index.html:229
#: templates/InvenTree/search.html:185
#: templates/InvenTree/settings/navbar.html:101
#: templates/InvenTree/settings/navbar.html:103 users/models.py:44
@@ -669,14 +700,13 @@ msgstr "Порядок сборки"
msgid "Build Order Reference"
msgstr "Ссылка на заказ"
-#: build/models.py:179 order/models.py:246 order/models.py:533
-#: order/models.py:713 order/templates/order/purchase_order_detail.html:343
-#: order/templates/order/sales_order_detail.html:359 part/models.py:2349
-#: part/templates/part/bom_upload/match_parts.html:30
+#: build/models.py:179 order/models.py:246 order/models.py:539
+#: order/models.py:719 order/templates/order/sales_order_detail.html:360
+#: part/models.py:2365 part/templates/part/bom_upload/match_parts.html:30
#: report/templates/report/inventree_po_report.html:92
#: report/templates/report/inventree_so_report.html:92
-#: templates/js/translated/bom.js:217 templates/js/translated/build.js:695
-#: templates/js/translated/build.js:1166
+#: templates/js/translated/bom.js:237 templates/js/translated/build.js:718
+#: templates/js/translated/build.js:1183 templates/js/translated/order.js:517
msgid "Reference"
msgstr ""
@@ -695,15 +725,14 @@ msgstr ""
#: build/models.py:205 build/templates/build/auto_allocate.html:16
#: build/templates/build/build_base.html:128
-#: build/templates/build/detail.html:29 company/models.py:654
-#: order/models.py:766 order/models.py:825
+#: build/templates/build/detail.html:29 company/models.py:704
+#: order/models.py:772 order/models.py:837
#: order/templates/order/order_wizard/select_parts.html:32
-#: order/templates/order/purchase_order_detail.html:297
#: order/templates/order/receive_parts.html:19
-#: order/templates/order/sales_order_detail.html:344 part/models.py:295
-#: part/models.py:1980 part/models.py:1996 part/models.py:2015
-#: part/models.py:2033 part/models.py:2112 part/models.py:2234
-#: part/models.py:2324 part/templates/part/detail.html:199
+#: order/templates/order/sales_order_detail.html:345 part/models.py:297
+#: part/models.py:1996 part/models.py:2012 part/models.py:2031
+#: part/models.py:2049 part/models.py:2128 part/models.py:2250
+#: part/models.py:2340 part/templates/part/detail.html:199
#: part/templates/part/part_app_base.html:8
#: part/templates/part/part_pricing.html:12
#: part/templates/part/set_category.html:13
@@ -711,12 +740,13 @@ msgstr ""
#: report/templates/report/inventree_po_report.html:90
#: report/templates/report/inventree_so_report.html:90
#: templates/InvenTree/search.html:112 templates/InvenTree/search.html:210
-#: templates/js/translated/barcode.js:362 templates/js/translated/bom.js:183
-#: templates/js/translated/build.js:586 templates/js/translated/build.js:873
-#: templates/js/translated/build.js:1139 templates/js/translated/company.js:438
-#: templates/js/translated/company.js:688 templates/js/translated/part.js:562
-#: templates/js/translated/part.js:725 templates/js/translated/stock.js:132
-#: templates/js/translated/stock.js:895 templates/js/translated/stock.js:1720
+#: templates/js/translated/barcode.js:384 templates/js/translated/bom.js:203
+#: templates/js/translated/build.js:609 templates/js/translated/build.js:896
+#: templates/js/translated/build.js:1156 templates/js/translated/company.js:487
+#: templates/js/translated/company.js:743 templates/js/translated/order.js:471
+#: templates/js/translated/part.js:694 templates/js/translated/part.js:864
+#: templates/js/translated/stock.js:201 templates/js/translated/stock.js:797
+#: templates/js/translated/stock.js:1838
msgid "Part"
msgstr "Детали"
@@ -764,7 +794,7 @@ msgstr ""
msgid "Number of stock items which have been completed"
msgstr ""
-#: build/models.py:257 part/templates/part/part_base.html:191
+#: build/models.py:257 part/templates/part/part_base.html:198
msgid "Build Status"
msgstr ""
@@ -772,7 +802,7 @@ msgstr ""
msgid "Build status code"
msgstr ""
-#: build/models.py:265 stock/models.py:507
+#: build/models.py:265 stock/models.py:513
msgid "Batch Code"
msgstr ""
@@ -780,16 +810,16 @@ msgstr ""
msgid "Batch code for this build output"
msgstr ""
-#: build/models.py:272 order/models.py:162 part/models.py:851
-#: part/templates/part/part_base.html:264 templates/js/translated/order.js:382
+#: build/models.py:272 order/models.py:162 part/models.py:853
+#: part/templates/part/part_base.html:272 templates/js/translated/order.js:723
msgid "Creation Date"
msgstr ""
-#: build/models.py:276 order/models.py:555
+#: build/models.py:276 order/models.py:561
msgid "Target completion date"
msgstr ""
-#: build/models.py:280 order/models.py:288 templates/js/translated/build.js:950
+#: build/models.py:280 order/models.py:288 templates/js/translated/build.js:967
msgid "Completion Date"
msgstr ""
@@ -797,7 +827,7 @@ msgstr ""
msgid "completed by"
msgstr "выполнено"
-#: build/models.py:294 templates/js/translated/build.js:915
+#: build/models.py:294 templates/js/translated/build.js:938
msgid "Issued by"
msgstr ""
@@ -808,9 +838,9 @@ msgstr ""
#: build/models.py:303 build/templates/build/build_base.html:184
#: build/templates/build/detail.html:108 order/models.py:176
#: order/templates/order/order_base.html:138
-#: order/templates/order/sales_order_base.html:140 part/models.py:855
+#: order/templates/order/sales_order_base.html:140 part/models.py:857
#: report/templates/report/inventree_build_order_base.html:159
-#: templates/js/translated/build.js:930
+#: templates/js/translated/build.js:950
msgid "Responsible"
msgstr "Ответственный"
@@ -821,34 +851,33 @@ msgstr ""
#: build/models.py:309 build/templates/build/detail.html:94
#: company/templates/company/manufacturer_part.html:83
#: company/templates/company/supplier_part.html:82
-#: part/templates/part/part_base.html:258 stock/models.py:501
+#: part/templates/part/part_base.html:266 stock/models.py:507
#: stock/templates/stock/item_base.html:359
msgid "External Link"
msgstr "Внешняя ссылка"
-#: build/models.py:310 part/models.py:713 stock/models.py:503
+#: build/models.py:310 part/models.py:715 stock/models.py:509
msgid "Link to external URL"
msgstr "Ссылка на внешний URL"
#: build/models.py:314 build/templates/build/navbar.html:52
-#: company/models.py:139 company/models.py:526
-#: company/templates/company/navbar.html:63
-#: company/templates/company/navbar.html:66 order/models.py:180
-#: order/models.py:715 order/templates/order/po_navbar.html:38
+#: company/models.py:141 company/models.py:576
+#: company/templates/company/navbar.html:69
+#: company/templates/company/navbar.html:72 order/models.py:180
+#: order/models.py:721 order/templates/order/po_navbar.html:38
#: order/templates/order/po_navbar.html:41
-#: order/templates/order/purchase_order_detail.html:419
-#: order/templates/order/sales_order_detail.html:439
+#: order/templates/order/sales_order_detail.html:440
#: order/templates/order/so_navbar.html:33
-#: order/templates/order/so_navbar.html:36 part/models.py:840
-#: part/templates/part/detail.html:105 part/templates/part/navbar.html:108
-#: part/templates/part/navbar.html:111
+#: order/templates/order/so_navbar.html:36 part/models.py:842
+#: part/templates/part/detail.html:105 part/templates/part/navbar.html:120
+#: part/templates/part/navbar.html:123
#: report/templates/report/inventree_build_order_base.html:173
-#: stock/forms.py:138 stock/forms.py:250 stock/forms.py:282 stock/models.py:573
-#: stock/models.py:1715 stock/models.py:1821
-#: stock/templates/stock/navbar.html:57 templates/js/translated/barcode.js:37
-#: templates/js/translated/bom.js:369 templates/js/translated/company.js:784
-#: templates/js/translated/stock.js:268 templates/js/translated/stock.js:509
-#: templates/js/translated/stock.js:1090
+#: stock/forms.py:138 stock/forms.py:250 stock/forms.py:282 stock/models.py:579
+#: stock/models.py:1726 stock/models.py:1832
+#: stock/templates/stock/navbar.html:57 templates/js/translated/barcode.js:59
+#: templates/js/translated/bom.js:385 templates/js/translated/company.js:839
+#: templates/js/translated/order.js:604 templates/js/translated/stock.js:338
+#: templates/js/translated/stock.js:580 templates/js/translated/stock.js:1061
msgid "Notes"
msgstr "Заметки"
@@ -881,11 +910,11 @@ msgstr ""
msgid "Allocated quantity ({n}) must not exceed available quantity ({q})"
msgstr ""
-#: build/models.py:1244 order/models.py:926
+#: build/models.py:1244 order/models.py:938
msgid "StockItem is over-allocated"
msgstr ""
-#: build/models.py:1248 order/models.py:929
+#: build/models.py:1248 order/models.py:941
msgid "Allocation quantity must be greater than zero"
msgstr ""
@@ -899,8 +928,8 @@ msgid "Selected stock item not found in BOM for part '{p}'"
msgstr ""
#: build/models.py:1372 stock/templates/stock/item_base.html:331
-#: templates/InvenTree/search.html:183 templates/js/translated/build.js:846
-#: templates/navbar.html:29
+#: templates/InvenTree/search.html:183 templates/js/translated/build.js:869
+#: templates/navbar.html:35
msgid "Build"
msgstr "Сборка"
@@ -912,9 +941,9 @@ msgstr ""
#: stock/templates/stock/item_base.html:31
#: stock/templates/stock/item_base.html:353
#: stock/templates/stock/stock_adjust.html:16
-#: templates/js/translated/build.js:244 templates/js/translated/build.js:249
-#: templates/js/translated/build.js:993 templates/js/translated/order.js:455
-#: templates/js/translated/order.js:460 templates/js/translated/stock.js:1485
+#: templates/js/translated/build.js:271 templates/js/translated/build.js:276
+#: templates/js/translated/build.js:1012 templates/js/translated/order.js:797
+#: templates/js/translated/order.js:802 templates/js/translated/stock.js:1626
msgid "Stock Item"
msgstr ""
@@ -936,12 +965,12 @@ msgstr ""
#: build/templates/build/allocation_card.html:21
#: build/templates/build/complete_output.html:46
-#: order/templates/order/sales_order_detail.html:205
-#: order/templates/order/sales_order_detail.html:290
+#: order/templates/order/sales_order_detail.html:206
+#: order/templates/order/sales_order_detail.html:291
#: report/templates/report/inventree_test_report_base.html:75
-#: stock/models.py:495 stock/templates/stock/item_base.html:251
-#: templates/js/translated/build.js:604
-#: templates/js/translated/model_renderers.js:54
+#: stock/models.py:501 stock/templates/stock/item_base.html:251
+#: templates/js/translated/build.js:627
+#: templates/js/translated/model_renderers.js:57
msgid "Serial Number"
msgstr ""
@@ -993,7 +1022,7 @@ msgstr ""
#: company/templates/company/supplier_part.html:30
#: order/templates/order/order_base.html:26
#: order/templates/order/sales_order_base.html:37
-#: part/templates/part/category.html:27 part/templates/part/part_base.html:25
+#: part/templates/part/category.html:27 part/templates/part/part_base.html:30
#: stock/templates/stock/item_base.html:62
#: stock/templates/stock/location.html:31
msgid "Admin view"
@@ -1005,9 +1034,9 @@ msgstr ""
#: order/templates/order/order_base.html:86
#: order/templates/order/sales_order_base.html:43
#: order/templates/order/sales_order_base.html:88
-#: templates/js/translated/table_filters.js:259
-#: templates/js/translated/table_filters.js:278
-#: templates/js/translated/table_filters.js:295
+#: templates/js/translated/table_filters.js:272
+#: templates/js/translated/table_filters.js:291
+#: templates/js/translated/table_filters.js:308
msgid "Overdue"
msgstr "Просрочено"
@@ -1057,14 +1086,14 @@ msgid "Progress"
msgstr ""
#: build/templates/build/build_base.html:170
-#: build/templates/build/detail.html:87 order/models.py:823
+#: build/templates/build/detail.html:87 order/models.py:835
#: order/templates/order/sales_order_base.html:9
#: order/templates/order/sales_order_base.html:35
#: order/templates/order/sales_order_ship.html:25
#: report/templates/report/inventree_build_order_base.html:136
#: report/templates/report/inventree_so_report.html:77
#: stock/templates/stock/item_base.html:293
-#: templates/js/translated/order.js:329
+#: templates/js/translated/order.js:670
msgid "Sales Order"
msgstr ""
@@ -1148,7 +1177,7 @@ msgstr ""
#: build/templates/build/create_build_item.html:11
#, python-format
-msgid "The allocated stock will be installed into the following build output:
%(output)s"
+msgid "The allocated stock will be installed into the following build output:
%(output)s"
msgstr ""
#: build/templates/build/create_build_item.html:17
@@ -1172,9 +1201,9 @@ msgstr ""
msgid "Stock can be taken from any available location."
msgstr ""
-#: build/templates/build/detail.html:49 order/forms.py:88 order/models.py:782
-#: order/templates/order/purchase_order_detail.html:408
+#: build/templates/build/detail.html:49 order/forms.py:88 order/models.py:794
#: order/templates/order/receive_parts.html:25 stock/forms.py:134
+#: templates/js/translated/order.js:593
msgid "Destination"
msgstr ""
@@ -1184,16 +1213,16 @@ msgstr ""
#: build/templates/build/detail.html:73
#: stock/templates/stock/item_base.html:317
-#: templates/js/translated/stock.js:1007 templates/js/translated/stock.js:1755
-#: templates/js/translated/table_filters.js:116
-#: templates/js/translated/table_filters.js:198
+#: templates/js/translated/stock.js:931 templates/js/translated/stock.js:1873
+#: templates/js/translated/table_filters.js:129
+#: templates/js/translated/table_filters.js:211
msgid "Batch"
msgstr "Партия"
#: build/templates/build/detail.html:119
#: order/templates/order/order_base.html:111
#: order/templates/order/sales_order_base.html:113
-#: templates/js/translated/build.js:910
+#: templates/js/translated/build.js:933
msgid "Created"
msgstr "Создано"
@@ -1201,7 +1230,7 @@ msgstr "Создано"
msgid "No target date set"
msgstr "Нет конечной даты"
-#: build/templates/build/detail.html:135 templates/js/translated/build.js:888
+#: build/templates/build/detail.html:135 templates/js/translated/build.js:911
msgid "Completed"
msgstr ""
@@ -1225,7 +1254,7 @@ msgstr ""
msgid "Auto Allocate"
msgstr ""
-#: build/templates/build/detail.html:175 templates/js/translated/build.js:778
+#: build/templates/build/detail.html:175 templates/js/translated/build.js:801
msgid "Unallocate stock"
msgstr ""
@@ -1238,8 +1267,8 @@ msgid "Order required parts"
msgstr ""
#: build/templates/build/detail.html:180
-#: company/templates/company/detail.html:33
-#: company/templates/company/detail.html:75 order/views.py:679
+#: company/templates/company/detail.html:32
+#: company/templates/company/detail.html:72 order/views.py:679
#: part/templates/part/category.html:140
msgid "Order Parts"
msgstr "Заказать детали"
@@ -1288,8 +1317,8 @@ msgstr ""
#: build/templates/build/navbar.html:45 order/templates/order/po_navbar.html:35
#: order/templates/order/sales_order_detail.html:43
#: order/templates/order/so_navbar.html:29 part/templates/part/detail.html:173
-#: part/templates/part/navbar.html:102 part/templates/part/navbar.html:105
-#: stock/templates/stock/item.html:87 stock/templates/stock/navbar.html:47
+#: part/templates/part/navbar.html:114 part/templates/part/navbar.html:117
+#: stock/templates/stock/item.html:88 stock/templates/stock/navbar.html:47
#: stock/templates/stock/navbar.html:50
msgid "Attachments"
msgstr "Приложения"
@@ -1298,48 +1327,48 @@ msgstr "Приложения"
msgid "Build Notes"
msgstr "Заметки сборки"
-#: build/templates/build/detail.html:261 build/templates/build/detail.html:397
-#: company/templates/company/detail.html:173
-#: company/templates/company/detail.html:200
+#: build/templates/build/detail.html:261 build/templates/build/detail.html:398
+#: company/templates/company/detail.html:169
+#: company/templates/company/detail.html:196
#: order/templates/order/purchase_order_detail.html:62
#: order/templates/order/purchase_order_detail.html:95
#: order/templates/order/sales_order_detail.html:58
#: order/templates/order/sales_order_detail.html:85
-#: part/templates/part/detail.html:109 stock/templates/stock/item.html:102
-#: stock/templates/stock/item.html:187
+#: part/templates/part/detail.html:109 stock/templates/stock/item.html:103
+#: stock/templates/stock/item.html:188
msgid "Edit Notes"
msgstr ""
#: build/templates/build/detail.html:357
#: order/templates/order/po_attachments.html:79
-#: order/templates/order/purchase_order_detail.html:156
-#: order/templates/order/sales_order_detail.html:145
-#: part/templates/part/detail.html:802 stock/templates/stock/item.html:251
+#: order/templates/order/purchase_order_detail.html:157
+#: order/templates/order/sales_order_detail.html:146
+#: part/templates/part/detail.html:920 stock/templates/stock/item.html:253
#: templates/attachment_table.html:6
msgid "Add Attachment"
msgstr ""
-#: build/templates/build/detail.html:375
+#: build/templates/build/detail.html:376
#: order/templates/order/po_attachments.html:51
-#: order/templates/order/purchase_order_detail.html:128
-#: order/templates/order/sales_order_detail.html:118
-#: part/templates/part/detail.html:756 stock/templates/stock/item.html:219
+#: order/templates/order/purchase_order_detail.html:129
+#: order/templates/order/sales_order_detail.html:119
+#: part/templates/part/detail.html:874 stock/templates/stock/item.html:221
msgid "Edit Attachment"
msgstr ""
-#: build/templates/build/detail.html:382
+#: build/templates/build/detail.html:383
#: order/templates/order/po_attachments.html:58
-#: order/templates/order/purchase_order_detail.html:135
-#: order/templates/order/sales_order_detail.html:124
-#: part/templates/part/detail.html:765 stock/templates/stock/item.html:228
+#: order/templates/order/purchase_order_detail.html:136
+#: order/templates/order/sales_order_detail.html:125
+#: part/templates/part/detail.html:883 stock/templates/stock/item.html:230
msgid "Confirm Delete Operation"
msgstr ""
-#: build/templates/build/detail.html:383
+#: build/templates/build/detail.html:384
#: order/templates/order/po_attachments.html:59
-#: order/templates/order/purchase_order_detail.html:136
-#: order/templates/order/sales_order_detail.html:125
-#: part/templates/part/detail.html:766 stock/templates/stock/item.html:229
+#: order/templates/order/purchase_order_detail.html:137
+#: order/templates/order/sales_order_detail.html:126
+#: part/templates/part/detail.html:884 stock/templates/stock/item.html:231
msgid "Delete Attachment"
msgstr ""
@@ -1372,7 +1401,7 @@ msgid "Build Order Details"
msgstr ""
#: build/templates/build/navbar.html:15 order/templates/order/po_navbar.html:15
-#: templates/js/translated/stock.js:1414
+#: templates/js/translated/stock.js:1555
msgid "Details"
msgstr ""
@@ -1501,9 +1530,9 @@ msgstr ""
msgid "Stock item is over-allocated"
msgstr ""
-#: build/views.py:705 templates/js/translated/bom.js:250
-#: templates/js/translated/build.js:705 templates/js/translated/build.js:1000
-#: templates/js/translated/build.js:1179
+#: build/views.py:705 templates/js/translated/bom.js:269
+#: templates/js/translated/build.js:728 templates/js/translated/build.js:1019
+#: templates/js/translated/build.js:1196
msgid "Available"
msgstr ""
@@ -1539,7 +1568,7 @@ msgstr ""
msgid "Error reading file (data could be corrupted)"
msgstr ""
-#: common/forms.py:34 templates/js/translated/attachment.js:42
+#: common/forms.py:34 templates/js/translated/attachment.js:54
msgid "File"
msgstr ""
@@ -1556,546 +1585,594 @@ msgstr ""
msgid "Select {name} file to upload"
msgstr ""
-#: common/models.py:322 common/models.py:815 common/models.py:962
+#: common/models.py:308 common/models.py:839 common/models.py:986
msgid "Settings key (must be unique - case insensitive"
msgstr ""
-#: common/models.py:324
+#: common/models.py:310
msgid "Settings value"
msgstr ""
-#: common/models.py:359
+#: common/models.py:345
msgid "Must be an integer value"
msgstr ""
-#: common/models.py:382
+#: common/models.py:368
msgid "Value must be a boolean value"
msgstr ""
-#: common/models.py:393
+#: common/models.py:379
msgid "Value must be an integer value"
msgstr ""
-#: common/models.py:416
+#: common/models.py:402
msgid "Key string must be unique"
msgstr ""
-#: common/models.py:523
+#: common/models.py:509
msgid "InvenTree Instance Name"
msgstr ""
-#: common/models.py:525
+#: common/models.py:511
msgid "String descriptor for the server instance"
msgstr ""
-#: common/models.py:529
+#: common/models.py:515
msgid "Use instance name"
msgstr ""
-#: common/models.py:530
+#: common/models.py:516
msgid "Use the instance name in the title-bar"
msgstr ""
-#: common/models.py:536 company/models.py:97 company/models.py:98
+#: common/models.py:522 company/models.py:99 company/models.py:100
msgid "Company name"
msgstr ""
-#: common/models.py:537
+#: common/models.py:523
msgid "Internal company name"
msgstr ""
-#: common/models.py:542
+#: common/models.py:528
msgid "Base URL"
msgstr ""
-#: common/models.py:543
+#: common/models.py:529
msgid "Base URL for server instance"
msgstr ""
-#: common/models.py:549
+#: common/models.py:535
msgid "Default Currency"
msgstr ""
-#: common/models.py:550
+#: common/models.py:536
msgid "Default currency"
msgstr ""
-#: common/models.py:556
+#: common/models.py:542
msgid "Download from URL"
msgstr ""
-#: common/models.py:557
+#: common/models.py:543
msgid "Allow download of remote images and files from external URL"
msgstr ""
-#: common/models.py:563
+#: common/models.py:549
msgid "Barcode Support"
msgstr ""
-#: common/models.py:564
+#: common/models.py:550
msgid "Enable barcode scanner support"
msgstr ""
-#: common/models.py:570
+#: common/models.py:556
msgid "IPN Regex"
msgstr ""
-#: common/models.py:571
+#: common/models.py:557
msgid "Regular expression pattern for matching Part IPN"
msgstr ""
-#: common/models.py:575
+#: common/models.py:561
msgid "Allow Duplicate IPN"
msgstr ""
-#: common/models.py:576
+#: common/models.py:562
msgid "Allow multiple parts to share the same IPN"
msgstr ""
-#: common/models.py:582
+#: common/models.py:568
msgid "Allow Editing IPN"
msgstr ""
-#: common/models.py:583
+#: common/models.py:569
msgid "Allow changing the IPN value while editing a part"
msgstr ""
-#: common/models.py:589
+#: common/models.py:575
msgid "Copy Part BOM Data"
msgstr ""
-#: common/models.py:590
+#: common/models.py:576
msgid "Copy BOM data by default when duplicating a part"
msgstr ""
-#: common/models.py:596
+#: common/models.py:582
msgid "Copy Part Parameter Data"
msgstr ""
-#: common/models.py:597
+#: common/models.py:583
msgid "Copy parameter data by default when duplicating a part"
msgstr ""
-#: common/models.py:603
+#: common/models.py:589
msgid "Copy Part Test Data"
msgstr ""
-#: common/models.py:604
+#: common/models.py:590
msgid "Copy test data by default when duplicating a part"
msgstr ""
-#: common/models.py:610
+#: common/models.py:596
msgid "Copy Category Parameter Templates"
msgstr ""
-#: common/models.py:611
+#: common/models.py:597
msgid "Copy category parameter templates when creating a part"
msgstr ""
-#: common/models.py:617 part/models.py:2236 report/models.py:187
-#: stock/forms.py:224 templates/js/translated/table_filters.js:25
-#: templates/js/translated/table_filters.js:329
+#: common/models.py:603 part/models.py:2252 report/models.py:187
+#: stock/forms.py:224 templates/js/translated/table_filters.js:38
+#: templates/js/translated/table_filters.js:342
msgid "Template"
msgstr ""
-#: common/models.py:618
+#: common/models.py:604
msgid "Parts are templates by default"
msgstr ""
-#: common/models.py:624 part/models.py:803
-#: templates/js/translated/table_filters.js:133
-#: templates/js/translated/table_filters.js:341
+#: common/models.py:610 part/models.py:805
+#: templates/js/translated/table_filters.js:146
+#: templates/js/translated/table_filters.js:354
msgid "Assembly"
msgstr ""
-#: common/models.py:625
+#: common/models.py:611
msgid "Parts can be assembled from other components by default"
msgstr ""
-#: common/models.py:631 part/models.py:809
-#: templates/js/translated/table_filters.js:345
+#: common/models.py:617 part/models.py:811
+#: templates/js/translated/table_filters.js:358
msgid "Component"
msgstr ""
-#: common/models.py:632
+#: common/models.py:618
msgid "Parts can be used as sub-components by default"
msgstr ""
-#: common/models.py:638 part/models.py:820
+#: common/models.py:624 part/models.py:822
msgid "Purchaseable"
msgstr ""
-#: common/models.py:639
+#: common/models.py:625
msgid "Parts are purchaseable by default"
msgstr ""
-#: common/models.py:645 part/models.py:825
-#: templates/js/translated/table_filters.js:353
+#: common/models.py:631 part/models.py:827
+#: templates/js/translated/table_filters.js:366
msgid "Salable"
msgstr ""
-#: common/models.py:646
+#: common/models.py:632
msgid "Parts are salable by default"
msgstr ""
-#: common/models.py:652 part/models.py:815
-#: templates/js/translated/table_filters.js:33
-#: templates/js/translated/table_filters.js:357
+#: common/models.py:638 part/models.py:817
+#: templates/js/translated/table_filters.js:46
+#: templates/js/translated/table_filters.js:370
msgid "Trackable"
msgstr ""
-#: common/models.py:653
+#: common/models.py:639
msgid "Parts are trackable by default"
msgstr ""
-#: common/models.py:659 part/models.py:835
-#: part/templates/part/part_base.html:61
-#: templates/js/translated/table_filters.js:29
+#: common/models.py:645 part/models.py:837
+#: part/templates/part/part_base.html:66
+#: templates/js/translated/table_filters.js:42
msgid "Virtual"
msgstr ""
-#: common/models.py:660
+#: common/models.py:646
msgid "Parts are virtual by default"
msgstr ""
-#: common/models.py:667
+#: common/models.py:653
msgid "Show Quantity in Forms"
msgstr ""
-#: common/models.py:668
+#: common/models.py:654
msgid "Display available part quantity in some forms"
msgstr ""
-#: common/models.py:674
+#: common/models.py:660
msgid "Show Import in Views"
msgstr ""
-#: common/models.py:675
+#: common/models.py:661
msgid "Display the import wizard in some part views"
msgstr ""
-#: common/models.py:681
+#: common/models.py:667
msgid "Show Price in Forms"
msgstr ""
-#: common/models.py:682
+#: common/models.py:668
msgid "Display part price in some forms"
msgstr ""
-#: common/models.py:688
+#: common/models.py:674
msgid "Show related parts"
msgstr ""
-#: common/models.py:689
+#: common/models.py:675
msgid "Display related parts for a part"
msgstr ""
-#: common/models.py:695
+#: common/models.py:681
msgid "Create initial stock"
msgstr ""
-#: common/models.py:696
+#: common/models.py:682
msgid "Create initial stock on part creation"
msgstr ""
-#: common/models.py:702
+#: common/models.py:688
msgid "Internal Prices"
msgstr ""
-#: common/models.py:703
+#: common/models.py:689
msgid "Enable internal prices for parts"
msgstr ""
-#: common/models.py:709
+#: common/models.py:695
msgid "Internal Price as BOM-Price"
msgstr ""
-#: common/models.py:710
+#: common/models.py:696
msgid "Use the internal price (if set) in BOM-price calculations"
msgstr ""
-#: common/models.py:716 templates/stats.html:25
+#: common/models.py:702 templates/stats.html:25
msgid "Debug Mode"
msgstr ""
-#: common/models.py:717
+#: common/models.py:703
msgid "Generate reports in debug mode (HTML output)"
msgstr ""
-#: common/models.py:723
+#: common/models.py:709
msgid "Page Size"
msgstr ""
-#: common/models.py:724
+#: common/models.py:710
msgid "Default page size for PDF reports"
msgstr ""
-#: common/models.py:734
+#: common/models.py:720
msgid "Test Reports"
msgstr ""
-#: common/models.py:735
+#: common/models.py:721
msgid "Enable generation of test reports"
msgstr ""
-#: common/models.py:741
+#: common/models.py:727
msgid "Stock Expiry"
msgstr ""
-#: common/models.py:742
+#: common/models.py:728
msgid "Enable stock expiry functionality"
msgstr ""
-#: common/models.py:748
+#: common/models.py:734
msgid "Sell Expired Stock"
msgstr ""
-#: common/models.py:749
+#: common/models.py:735
msgid "Allow sale of expired stock"
msgstr ""
-#: common/models.py:755
+#: common/models.py:741
msgid "Stock Stale Time"
msgstr ""
-#: common/models.py:756
+#: common/models.py:742
msgid "Number of days stock items are considered stale before expiring"
msgstr ""
-#: common/models.py:758
+#: common/models.py:744
msgid "days"
msgstr ""
-#: common/models.py:763
+#: common/models.py:749
msgid "Build Expired Stock"
msgstr ""
-#: common/models.py:764
+#: common/models.py:750
msgid "Allow building with expired stock"
msgstr ""
-#: common/models.py:770
+#: common/models.py:756
msgid "Stock Ownership Control"
msgstr ""
-#: common/models.py:771
+#: common/models.py:757
msgid "Enable ownership control over stock locations and items"
msgstr ""
-#: common/models.py:777
+#: common/models.py:763
msgid "Group by Part"
msgstr ""
-#: common/models.py:778
+#: common/models.py:764
msgid "Group stock items by part reference in table views"
msgstr ""
-#: common/models.py:784
+#: common/models.py:770
msgid "Build Order Reference Prefix"
msgstr ""
-#: common/models.py:785
+#: common/models.py:771
msgid "Prefix value for build order reference"
msgstr ""
-#: common/models.py:790
+#: common/models.py:776
msgid "Build Order Reference Regex"
msgstr ""
-#: common/models.py:791
+#: common/models.py:777
msgid "Regular expression pattern for matching build order reference"
msgstr ""
-#: common/models.py:795
+#: common/models.py:781
msgid "Sales Order Reference Prefix"
msgstr ""
-#: common/models.py:796
+#: common/models.py:782
msgid "Prefix value for sales order reference"
msgstr ""
-#: common/models.py:801
+#: common/models.py:787
msgid "Purchase Order Reference Prefix"
msgstr ""
-#: common/models.py:802
+#: common/models.py:788
msgid "Prefix value for purchase order reference"
msgstr ""
-#: common/models.py:826
+#: common/models.py:794
+msgid "Enable build"
+msgstr ""
+
+#: common/models.py:795
+msgid "Enable build functionality in InvenTree interface"
+msgstr ""
+
+#: common/models.py:800
+msgid "Enable buy"
+msgstr ""
+
+#: common/models.py:801
+msgid "Enable buy functionality in InvenTree interface"
+msgstr ""
+
+#: common/models.py:806
+msgid "Enable sell"
+msgstr ""
+
+#: common/models.py:807
+msgid "Enable sell functionality in InvenTree interface"
+msgstr ""
+
+#: common/models.py:812
+msgid "Enable stock"
+msgstr ""
+
+#: common/models.py:813
+msgid "Enable stock functionality in InvenTree interface"
+msgstr ""
+
+#: common/models.py:818
+msgid "Enable SO"
+msgstr ""
+
+#: common/models.py:819
+msgid "Enable SO functionality in InvenTree interface"
+msgstr ""
+
+#: common/models.py:824
+msgid "Enable PO"
+msgstr ""
+
+#: common/models.py:825
+msgid "Enable PO functionality in InvenTree interface"
+msgstr ""
+
+#: common/models.py:850
msgid "Show starred parts"
msgstr ""
-#: common/models.py:827
+#: common/models.py:851
msgid "Show starred parts on the homepage"
msgstr ""
-#: common/models.py:832
+#: common/models.py:856
msgid "Show latest parts"
msgstr ""
-#: common/models.py:833
+#: common/models.py:857
msgid "Show latest parts on the homepage"
msgstr ""
-#: common/models.py:838
+#: common/models.py:862
msgid "Recent Part Count"
msgstr ""
-#: common/models.py:839
+#: common/models.py:863
msgid "Number of recent parts to display on index page"
msgstr ""
-#: common/models.py:845
+#: common/models.py:869
msgid "Show unvalidated BOMs"
msgstr ""
-#: common/models.py:846
+#: common/models.py:870
msgid "Show BOMs that await validation on the homepage"
msgstr ""
-#: common/models.py:851
+#: common/models.py:875
msgid "Show recent stock changes"
msgstr ""
-#: common/models.py:852
+#: common/models.py:876
msgid "Show recently changed stock items on the homepage"
msgstr ""
-#: common/models.py:857
+#: common/models.py:881
msgid "Recent Stock Count"
msgstr ""
-#: common/models.py:858
+#: common/models.py:882
msgid "Number of recent stock items to display on index page"
msgstr ""
-#: common/models.py:863
+#: common/models.py:887
msgid "Show low stock"
msgstr ""
-#: common/models.py:864
+#: common/models.py:888
msgid "Show low stock items on the homepage"
msgstr ""
-#: common/models.py:869
+#: common/models.py:893
msgid "Show depleted stock"
msgstr ""
-#: common/models.py:870
+#: common/models.py:894
msgid "Show depleted stock items on the homepage"
msgstr ""
-#: common/models.py:875
+#: common/models.py:899
msgid "Show needed stock"
msgstr ""
-#: common/models.py:876
+#: common/models.py:900
msgid "Show stock items needed for builds on the homepage"
msgstr ""
-#: common/models.py:881
+#: common/models.py:905
msgid "Show expired stock"
msgstr ""
-#: common/models.py:882
+#: common/models.py:906
msgid "Show expired stock items on the homepage"
msgstr ""
-#: common/models.py:887
+#: common/models.py:911
msgid "Show stale stock"
msgstr ""
-#: common/models.py:888
+#: common/models.py:912
msgid "Show stale stock items on the homepage"
msgstr ""
-#: common/models.py:893
+#: common/models.py:917
msgid "Show pending builds"
msgstr ""
-#: common/models.py:894
+#: common/models.py:918
msgid "Show pending builds on the homepage"
msgstr ""
-#: common/models.py:899
+#: common/models.py:923
msgid "Show overdue builds"
msgstr ""
-#: common/models.py:900
+#: common/models.py:924
msgid "Show overdue builds on the homepage"
msgstr ""
-#: common/models.py:905
+#: common/models.py:929
msgid "Show outstanding POs"
msgstr ""
-#: common/models.py:906
+#: common/models.py:930
msgid "Show outstanding POs on the homepage"
msgstr ""
-#: common/models.py:911
+#: common/models.py:935
msgid "Show overdue POs"
msgstr ""
-#: common/models.py:912
+#: common/models.py:936
msgid "Show overdue POs on the homepage"
msgstr ""
-#: common/models.py:917
+#: common/models.py:941
msgid "Show outstanding SOs"
msgstr ""
-#: common/models.py:918
+#: common/models.py:942
msgid "Show outstanding SOs on the homepage"
msgstr ""
-#: common/models.py:923
+#: common/models.py:947
msgid "Show overdue SOs"
msgstr ""
-#: common/models.py:924
+#: common/models.py:948
msgid "Show overdue SOs on the homepage"
msgstr ""
-#: common/models.py:930
+#: common/models.py:954
msgid "Inline label display"
msgstr ""
-#: common/models.py:931
+#: common/models.py:955
msgid "Display PDF labels in the browser, instead of downloading as a file"
msgstr ""
-#: common/models.py:937
+#: common/models.py:961
msgid "Inline report display"
msgstr ""
-#: common/models.py:938
+#: common/models.py:962
msgid "Display PDF reports in the browser, instead of downloading as a file"
msgstr ""
-#: common/models.py:944
+#: common/models.py:968
msgid "Search Preview Results"
msgstr ""
-#: common/models.py:945
+#: common/models.py:969
msgid "Number of results to show in search preview window"
msgstr ""
-#: common/models.py:1002 company/forms.py:43
+#: common/models.py:1026 company/forms.py:43
msgid "Price break quantity"
msgstr ""
-#: common/models.py:1009 company/templates/company/supplier_part.html:231
-#: templates/js/translated/part.js:1153
+#: common/models.py:1033 company/templates/company/supplier_part.html:231
+#: templates/js/translated/part.js:1322
msgid "Price"
msgstr ""
-#: common/models.py:1010
+#: common/models.py:1034
msgid "Unit price at specified quantity"
msgstr ""
-#: common/models.py:1103
+#: common/models.py:1127
msgid "Default"
msgstr ""
@@ -2123,7 +2200,7 @@ msgstr ""
#: order/templates/order/po_navbar.html:19
#: order/templates/order/po_navbar.html:22
#: order/templates/order/purchase_order_detail.html:26 order/views.py:290
-#: part/templates/part/bom_upload/upload_file.html:45
+#: part/templates/part/bom_upload/upload_file.html:65
#: part/templates/part/import_wizard/part_upload.html:45 part/views.py:268
#: part/views.py:882
msgid "Upload File"
@@ -2154,7 +2231,7 @@ msgstr ""
#: order/templates/order/order_wizard/po_upload.html:40
#: 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:43
+#: part/templates/part/bom_upload/upload_file.html:63
#: 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:43
@@ -2169,244 +2246,249 @@ msgstr ""
msgid "Image URL"
msgstr ""
-#: company/models.py:102
+#: company/models.py:104
msgid "Company description"
msgstr ""
-#: company/models.py:103
+#: company/models.py:105
msgid "Description of the company"
msgstr ""
-#: company/models.py:109 company/templates/company/company_base.html:70
-#: templates/js/translated/company.js:303
+#: company/models.py:111 company/templates/company/company_base.html:70
+#: templates/js/translated/company.js:348
msgid "Website"
msgstr ""
-#: company/models.py:110
+#: company/models.py:112
msgid "Company website URL"
msgstr ""
-#: company/models.py:114 company/templates/company/company_base.html:88
+#: company/models.py:116 company/templates/company/company_base.html:88
msgid "Address"
msgstr ""
-#: company/models.py:115
+#: company/models.py:117
msgid "Company address"
msgstr ""
-#: company/models.py:118
+#: company/models.py:120
msgid "Phone number"
msgstr ""
-#: company/models.py:119
+#: company/models.py:121
msgid "Contact phone number"
msgstr ""
-#: company/models.py:122 company/templates/company/company_base.html:102
+#: company/models.py:124 company/templates/company/company_base.html:102
msgid "Email"
msgstr ""
-#: company/models.py:122
+#: company/models.py:124
msgid "Contact email address"
msgstr ""
-#: company/models.py:125 company/templates/company/company_base.html:109
+#: company/models.py:127 company/templates/company/company_base.html:109
msgid "Contact"
msgstr ""
-#: company/models.py:126
+#: company/models.py:128
msgid "Point of contact"
msgstr ""
-#: company/models.py:128 company/models.py:345 company/models.py:513
-#: order/models.py:160 part/models.py:712
+#: company/models.py:130 company/models.py:347 company/models.py:563
+#: order/models.py:160 part/models.py:714
#: report/templates/report/inventree_build_order_base.html:165
-#: templates/js/translated/company.js:486
-#: templates/js/translated/company.js:768 templates/js/translated/part.js:819
+#: templates/js/translated/company.js:535
+#: templates/js/translated/company.js:823 templates/js/translated/part.js:972
msgid "Link"
msgstr ""
-#: company/models.py:128
+#: company/models.py:130
msgid "Link to external company information"
msgstr ""
-#: company/models.py:136 part/models.py:722
+#: company/models.py:138 part/models.py:724
msgid "Image"
msgstr ""
-#: company/models.py:141
+#: company/models.py:143
msgid "is customer"
msgstr ""
-#: company/models.py:141
+#: company/models.py:143
msgid "Do you sell items to this company?"
msgstr ""
-#: company/models.py:143
+#: company/models.py:145
msgid "is supplier"
msgstr ""
-#: company/models.py:143
+#: company/models.py:145
msgid "Do you purchase items from this company?"
msgstr ""
-#: company/models.py:145
+#: company/models.py:147
msgid "is manufacturer"
msgstr ""
-#: company/models.py:145
+#: company/models.py:147
msgid "Does this company manufacture parts?"
msgstr ""
-#: company/models.py:149 company/serializers.py:245
-#: company/templates/company/company_base.html:76
+#: company/models.py:151 company/serializers.py:264
+#: company/templates/company/company_base.html:76 stock/serializers.py:155
msgid "Currency"
msgstr ""
-#: company/models.py:152
+#: company/models.py:154
msgid "Default currency used for this company"
msgstr ""
-#: company/models.py:317 company/models.py:484 stock/models.py:448
+#: company/models.py:319 company/models.py:534 stock/models.py:454
#: stock/templates/stock/item_base.html:237
msgid "Base Part"
msgstr ""
-#: company/models.py:321 company/models.py:488 order/views.py:1082
+#: company/models.py:323 company/models.py:538 order/views.py:1082
msgid "Select part"
msgstr ""
-#: company/models.py:332 company/templates/company/company_base.html:116
+#: company/models.py:334 company/templates/company/company_base.html:116
#: company/templates/company/manufacturer_part.html:89
#: company/templates/company/supplier_part.html:98 part/bom.py:170
#: part/bom.py:241 stock/templates/stock/item_base.html:366
-#: templates/js/translated/company.js:287
-#: templates/js/translated/company.js:463
-#: templates/js/translated/company.js:739
+#: templates/js/translated/company.js:332
+#: templates/js/translated/company.js:512
+#: templates/js/translated/company.js:794 templates/js/translated/part.js:222
msgid "Manufacturer"
msgstr ""
-#: company/models.py:333
+#: company/models.py:335 templates/js/translated/part.js:223
msgid "Select manufacturer"
msgstr ""
-#: company/models.py:339 company/templates/company/manufacturer_part.html:93
-#: company/templates/company/supplier_part.html:106
-#: order/templates/order/purchase_order_detail.html:331 part/bom.py:171
-#: part/bom.py:242 templates/js/translated/company.js:479
-#: templates/js/translated/company.js:757
+#: company/models.py:341 company/templates/company/manufacturer_part.html:93
+#: company/templates/company/supplier_part.html:106 part/bom.py:171
+#: part/bom.py:242 templates/js/translated/company.js:528
+#: templates/js/translated/company.js:812 templates/js/translated/order.js:505
+#: templates/js/translated/part.js:233
msgid "MPN"
msgstr ""
-#: company/models.py:340
+#: company/models.py:342 templates/js/translated/part.js:234
msgid "Manufacturer Part Number"
msgstr ""
-#: company/models.py:346
+#: company/models.py:348
msgid "URL for external manufacturer part link"
msgstr ""
-#: company/models.py:352
+#: company/models.py:354
msgid "Manufacturer part description"
msgstr ""
-#: company/models.py:406 company/models.py:507
+#: company/models.py:408 company/models.py:557
#: company/templates/company/manufacturer_part.html:6
#: company/templates/company/manufacturer_part.html:23
#: stock/templates/stock/item_base.html:376
msgid "Manufacturer Part"
msgstr ""
-#: company/models.py:413
+#: company/models.py:415
msgid "Parameter name"
msgstr ""
-#: company/models.py:419
+#: company/models.py:421
#: report/templates/report/inventree_test_report_base.html:90
-#: stock/models.py:1808 templates/InvenTree/settings/header.html:8
-#: templates/js/translated/company.js:589 templates/js/translated/part.js:480
-#: templates/js/translated/stock.js:505
+#: stock/models.py:1819 templates/InvenTree/settings/header.html:8
+#: templates/js/translated/company.js:642 templates/js/translated/part.js:612
+#: templates/js/translated/stock.js:576
msgid "Value"
msgstr ""
-#: company/models.py:420
+#: company/models.py:422
msgid "Parameter value"
msgstr ""
-#: company/models.py:426 part/models.py:797 part/models.py:2204
-#: templates/js/translated/company.js:595 templates/js/translated/part.js:486
+#: company/models.py:428 part/models.py:799 part/models.py:2220
+#: templates/js/translated/company.js:648 templates/js/translated/part.js:618
msgid "Units"
msgstr ""
-#: company/models.py:427
+#: company/models.py:429
msgid "Parameter units"
msgstr ""
-#: company/models.py:494 company/templates/company/company_base.html:121
+#: company/models.py:501
+msgid "Linked manufacturer part must reference the same base part"
+msgstr ""
+
+#: company/models.py:544 company/templates/company/company_base.html:121
#: company/templates/company/supplier_part.html:88 order/models.py:260
#: order/templates/order/order_base.html:92
#: order/templates/order/order_wizard/select_pos.html:30 part/bom.py:175
#: part/bom.py:286 stock/templates/stock/item_base.html:383
-#: templates/js/translated/company.js:291
-#: templates/js/translated/company.js:713 templates/js/translated/order.js:254
+#: templates/js/translated/company.js:336
+#: templates/js/translated/company.js:768 templates/js/translated/order.js:328
+#: templates/js/translated/part.js:203
msgid "Supplier"
msgstr ""
-#: company/models.py:495
+#: company/models.py:545 templates/js/translated/part.js:204
msgid "Select supplier"
msgstr ""
-#: company/models.py:500 company/templates/company/supplier_part.html:92
-#: order/templates/order/purchase_order_detail.html:318 part/bom.py:176
-#: part/bom.py:287
+#: company/models.py:550 company/templates/company/supplier_part.html:92
+#: part/bom.py:176 part/bom.py:287 templates/js/translated/order.js:492
+#: templates/js/translated/part.js:214
msgid "SKU"
msgstr ""
-#: company/models.py:501
+#: company/models.py:551 templates/js/translated/part.js:215
msgid "Supplier stock keeping unit"
msgstr ""
-#: company/models.py:508
+#: company/models.py:558
msgid "Select manufacturer part"
msgstr ""
-#: company/models.py:514
+#: company/models.py:564
msgid "URL for external supplier part link"
msgstr ""
-#: company/models.py:520
+#: company/models.py:570
msgid "Supplier part description"
msgstr ""
-#: company/models.py:525 company/templates/company/supplier_part.html:120
-#: part/models.py:2352 report/templates/report/inventree_po_report.html:93
+#: company/models.py:575 company/templates/company/supplier_part.html:120
+#: part/models.py:2368 report/templates/report/inventree_po_report.html:93
#: report/templates/report/inventree_so_report.html:93
msgid "Note"
msgstr ""
-#: company/models.py:529 part/models.py:1590
+#: company/models.py:579 part/models.py:1599
msgid "base cost"
msgstr ""
-#: company/models.py:529 part/models.py:1590
+#: company/models.py:579 part/models.py:1599
msgid "Minimum charge (e.g. stocking fee)"
msgstr ""
-#: company/models.py:531 company/templates/company/supplier_part.html:113
-#: stock/models.py:472 stock/templates/stock/item_base.html:324
-#: templates/js/translated/company.js:789 templates/js/translated/stock.js:1086
+#: company/models.py:581 company/templates/company/supplier_part.html:113
+#: stock/models.py:478 stock/templates/stock/item_base.html:324
+#: templates/js/translated/company.js:844 templates/js/translated/stock.js:1057
msgid "Packaging"
msgstr ""
-#: company/models.py:531
+#: company/models.py:581
msgid "Part packaging"
msgstr ""
-#: company/models.py:533 part/models.py:1592
+#: company/models.py:583 part/models.py:1601
msgid "multiple"
msgstr ""
-#: company/models.py:533
+#: company/models.py:583
msgid "Order multiple"
msgstr ""
@@ -2420,7 +2502,7 @@ msgstr ""
#: company/templates/company/company_base.html:9
#: company/templates/company/company_base.html:35
-#: templates/InvenTree/search.html:304 templates/js/translated/company.js:276
+#: templates/InvenTree/search.html:304 templates/js/translated/company.js:321
msgid "Company"
msgstr ""
@@ -2435,7 +2517,7 @@ msgid "Download image from URL"
msgstr ""
#: company/templates/company/company_base.html:46
-#: templates/js/translated/order.js:83
+#: templates/js/translated/order.js:117
msgid "Create Purchase Order"
msgstr ""
@@ -2460,16 +2542,16 @@ msgstr ""
msgid "Phone"
msgstr ""
-#: company/templates/company/company_base.html:126 order/models.py:544
-#: order/templates/order/sales_order_base.html:94 stock/models.py:490
-#: stock/models.py:491 stock/templates/stock/item_base.html:276
-#: templates/js/translated/company.js:283 templates/js/translated/order.js:351
-#: templates/js/translated/stock.js:1467
+#: company/templates/company/company_base.html:126 order/models.py:550
+#: order/templates/order/sales_order_base.html:94 stock/models.py:496
+#: stock/models.py:497 stock/templates/stock/item_base.html:276
+#: templates/js/translated/company.js:328 templates/js/translated/order.js:692
+#: templates/js/translated/stock.js:1608
msgid "Customer"
msgstr ""
#: company/templates/company/company_base.html:193
-#: part/templates/part/part_base.html:405
+#: part/templates/part/part_base.html:418
msgid "Upload Image"
msgstr ""
@@ -2490,8 +2572,8 @@ msgstr ""
msgid "New Supplier Part"
msgstr ""
-#: company/templates/company/detail.html:28
-#: company/templates/company/detail.html:70
+#: company/templates/company/detail.html:27
+#: company/templates/company/detail.html:67
#: company/templates/company/manufacturer_part.html:112
#: company/templates/company/manufacturer_part.html:136
#: part/templates/part/category.html:135 part/templates/part/detail.html:292
@@ -2499,106 +2581,106 @@ msgstr ""
msgid "Options"
msgstr ""
-#: company/templates/company/detail.html:33
-#: company/templates/company/detail.html:75
+#: company/templates/company/detail.html:32
+#: company/templates/company/detail.html:72
#: part/templates/part/category.html:140
msgid "Order parts"
msgstr ""
-#: company/templates/company/detail.html:36
-#: company/templates/company/detail.html:78
+#: company/templates/company/detail.html:35
+#: company/templates/company/detail.html:75
msgid "Delete parts"
msgstr ""
-#: company/templates/company/detail.html:36
-#: company/templates/company/detail.html:78
+#: company/templates/company/detail.html:35
+#: company/templates/company/detail.html:75
msgid "Delete Parts"
msgstr ""
-#: company/templates/company/detail.html:56 templates/InvenTree/search.html:149
+#: company/templates/company/detail.html:54 templates/InvenTree/search.html:149
msgid "Manufacturer Parts"
msgstr ""
-#: company/templates/company/detail.html:64
+#: company/templates/company/detail.html:62
msgid "Create new manufacturer part"
msgstr ""
-#: company/templates/company/detail.html:65 part/templates/part/detail.html:312
+#: company/templates/company/detail.html:63 part/templates/part/detail.html:312
msgid "New Manufacturer Part"
msgstr ""
-#: company/templates/company/detail.html:97
+#: company/templates/company/detail.html:93
msgid "Supplier Stock"
msgstr ""
-#: company/templates/company/detail.html:106
-#: company/templates/company/navbar.html:40
-#: company/templates/company/navbar.html:43
+#: company/templates/company/detail.html:102
+#: company/templates/company/navbar.html:46
+#: company/templates/company/navbar.html:49
#: order/templates/order/purchase_orders.html:8
#: order/templates/order/purchase_orders.html:13
-#: part/templates/part/detail.html:50 part/templates/part/navbar.html:71
-#: part/templates/part/navbar.html:74 templates/InvenTree/index.html:260
+#: part/templates/part/detail.html:50 part/templates/part/navbar.html:82
+#: part/templates/part/navbar.html:85 templates/InvenTree/index.html:260
#: templates/InvenTree/search.html:325
#: templates/InvenTree/settings/navbar.html:107
-#: templates/InvenTree/settings/navbar.html:109 templates/navbar.html:37
+#: templates/InvenTree/settings/navbar.html:109 templates/navbar.html:44
#: users/models.py:45
msgid "Purchase Orders"
msgstr ""
-#: company/templates/company/detail.html:112
+#: company/templates/company/detail.html:108
#: order/templates/order/purchase_orders.html:20
msgid "Create new purchase order"
msgstr ""
-#: company/templates/company/detail.html:113
+#: company/templates/company/detail.html:109
#: order/templates/order/purchase_orders.html:21
msgid "New Purchase Order"
msgstr ""
-#: company/templates/company/detail.html:128
-#: company/templates/company/navbar.html:49
-#: company/templates/company/navbar.html:52
+#: company/templates/company/detail.html:124
+#: company/templates/company/navbar.html:55
+#: company/templates/company/navbar.html:58
#: order/templates/order/sales_orders.html:8
#: order/templates/order/sales_orders.html:13
-#: part/templates/part/detail.html:71 part/templates/part/navbar.html:79
-#: part/templates/part/navbar.html:82 templates/InvenTree/index.html:291
+#: part/templates/part/detail.html:71 part/templates/part/navbar.html:91
+#: part/templates/part/navbar.html:94 templates/InvenTree/index.html:291
#: templates/InvenTree/search.html:345
#: templates/InvenTree/settings/navbar.html:113
-#: templates/InvenTree/settings/navbar.html:115 templates/navbar.html:46
+#: templates/InvenTree/settings/navbar.html:115 templates/navbar.html:55
#: users/models.py:46
msgid "Sales Orders"
msgstr ""
-#: company/templates/company/detail.html:134
+#: company/templates/company/detail.html:130
#: order/templates/order/sales_orders.html:20
msgid "Create new sales order"
msgstr ""
-#: company/templates/company/detail.html:135
+#: company/templates/company/detail.html:131
#: order/templates/order/sales_orders.html:21
msgid "New Sales Order"
msgstr ""
-#: company/templates/company/detail.html:151
-#: company/templates/company/navbar.html:55
-#: company/templates/company/navbar.html:58
-#: templates/js/translated/build.js:597
+#: company/templates/company/detail.html:147
+#: company/templates/company/navbar.html:61
+#: company/templates/company/navbar.html:64
+#: templates/js/translated/build.js:620
msgid "Assigned Stock"
msgstr ""
-#: company/templates/company/detail.html:169
+#: company/templates/company/detail.html:165
msgid "Company Notes"
msgstr ""
#: company/templates/company/detail.html:364
#: company/templates/company/manufacturer_part.html:200
-#: part/templates/part/detail.html:826
+#: part/templates/part/detail.html:357
msgid "Delete Supplier Parts?"
msgstr ""
#: company/templates/company/detail.html:365
#: company/templates/company/manufacturer_part.html:201
-#: part/templates/part/detail.html:827
+#: part/templates/part/detail.html:358
msgid "All selected supplier parts will be deleted"
msgstr ""
@@ -2609,17 +2691,17 @@ msgstr ""
#: company/templates/company/manufacturer_part.html:40
#: company/templates/company/supplier_part.html:40
#: company/templates/company/supplier_part.html:146
-#: part/templates/part/detail.html:55 part/templates/part/part_base.html:109
+#: part/templates/part/detail.html:55 part/templates/part/part_base.html:116
msgid "Order part"
msgstr ""
#: company/templates/company/manufacturer_part.html:45
-#: templates/js/translated/company.js:511
+#: templates/js/translated/company.js:560
msgid "Edit manufacturer part"
msgstr ""
#: company/templates/company/manufacturer_part.html:49
-#: templates/js/translated/company.js:512
+#: templates/js/translated/company.js:561
msgid "Delete manufacturer part"
msgstr ""
@@ -2634,9 +2716,9 @@ msgstr ""
#: company/templates/company/manufacturer_part.html:103
#: company/templates/company/manufacturer_part_navbar.html:21
-#: company/views.py:49 part/templates/part/navbar.html:65
-#: part/templates/part/navbar.html:68 part/templates/part/prices.html:144
-#: templates/InvenTree/search.html:316 templates/navbar.html:35
+#: company/views.py:49 part/templates/part/navbar.html:75
+#: part/templates/part/navbar.html:78 part/templates/part/prices.html:163
+#: templates/InvenTree/search.html:316 templates/navbar.html:41
msgid "Suppliers"
msgstr ""
@@ -2649,8 +2731,8 @@ msgstr ""
#: company/templates/company/manufacturer_part.html:138
#: company/templates/company/manufacturer_part.html:239
#: part/templates/part/detail.html:214 part/templates/part/detail.html:294
-#: part/templates/part/detail.html:317 templates/js/translated/company.js:377
-#: users/models.py:194
+#: part/templates/part/detail.html:317 templates/js/translated/company.js:424
+#: templates/js/translated/helpers.js:31 users/models.py:194
msgid "Delete"
msgstr ""
@@ -2659,8 +2741,8 @@ msgstr ""
#: company/templates/company/manufacturer_part_navbar.html:14
#: part/templates/part/category_navbar.html:38
#: part/templates/part/category_navbar.html:41
-#: part/templates/part/detail.html:155 part/templates/part/navbar.html:14
-#: part/templates/part/navbar.html:17
+#: part/templates/part/detail.html:155 part/templates/part/navbar.html:20
+#: part/templates/part/navbar.html:23
msgid "Parameters"
msgstr ""
@@ -2676,7 +2758,7 @@ msgid "Delete parameters"
msgstr ""
#: company/templates/company/manufacturer_part.html:176
-#: part/templates/part/detail.html:719
+#: part/templates/part/detail.html:834
msgid "Add Parameter"
msgstr ""
@@ -2693,18 +2775,18 @@ msgid "Manufacturer Part Stock"
msgstr ""
#: company/templates/company/manufacturer_part_navbar.html:29
-#: company/templates/company/navbar.html:34
+#: company/templates/company/navbar.html:39
#: company/templates/company/supplier_part_navbar.html:15
-#: part/templates/part/navbar.html:31 stock/api.py:53
+#: part/templates/part/navbar.html:38 stock/api.py:54
#: stock/templates/stock/loc_link.html:7 stock/templates/stock/location.html:36
#: stock/templates/stock/stock_app_base.html:10
#: templates/InvenTree/index.html:150 templates/InvenTree/search.html:196
#: templates/InvenTree/search.html:232
#: templates/InvenTree/settings/navbar.html:95
#: templates/InvenTree/settings/navbar.html:97
-#: templates/js/translated/part.js:401 templates/js/translated/part.js:626
-#: templates/js/translated/part.js:786 templates/js/translated/stock.js:133
-#: templates/js/translated/stock.js:935 templates/navbar.html:26
+#: templates/js/translated/part.js:529 templates/js/translated/part.js:758
+#: templates/js/translated/part.js:934 templates/js/translated/stock.js:202
+#: templates/js/translated/stock.js:850 templates/navbar.html:32
msgid "Stock"
msgstr ""
@@ -2717,41 +2799,41 @@ msgstr ""
msgid "Orders"
msgstr ""
-#: company/templates/company/navbar.html:13
-#: company/templates/company/navbar.html:16
+#: company/templates/company/navbar.html:17
+#: company/templates/company/navbar.html:20
msgid "Manufactured Parts"
msgstr ""
-#: company/templates/company/navbar.html:22
-#: company/templates/company/navbar.html:25
+#: company/templates/company/navbar.html:26
+#: company/templates/company/navbar.html:29
msgid "Supplied Parts"
msgstr ""
-#: company/templates/company/navbar.html:31 part/templates/part/navbar.html:28
+#: company/templates/company/navbar.html:36 part/templates/part/navbar.html:35
#: stock/templates/stock/location.html:119
#: stock/templates/stock/location.html:134
#: stock/templates/stock/location.html:148
#: stock/templates/stock/location_navbar.html:18
#: stock/templates/stock/location_navbar.html:21
-#: templates/InvenTree/search.html:198 templates/js/translated/stock.js:1366
+#: templates/InvenTree/search.html:198 templates/js/translated/stock.js:1507
#: templates/stats.html:93 templates/stats.html:102 users/models.py:43
msgid "Stock Items"
msgstr ""
#: company/templates/company/supplier_part.html:7
-#: company/templates/company/supplier_part.html:24 stock/models.py:457
+#: company/templates/company/supplier_part.html:24 stock/models.py:463
#: stock/templates/stock/item_base.html:388
-#: templates/js/translated/company.js:729 templates/js/translated/stock.js:1058
+#: templates/js/translated/company.js:784 templates/js/translated/stock.js:1014
msgid "Supplier Part"
msgstr ""
#: company/templates/company/supplier_part.html:44
-#: templates/js/translated/company.js:802
+#: templates/js/translated/company.js:857
msgid "Edit supplier part"
msgstr ""
#: company/templates/company/supplier_part.html:48
-#: templates/js/translated/company.js:803
+#: templates/js/translated/company.js:858
msgid "Delete supplier part"
msgstr ""
@@ -2775,13 +2857,13 @@ msgid "Order Part"
msgstr ""
#: company/templates/company/supplier_part.html:158
-#: part/templates/part/navbar.html:58 part/templates/part/prices.html:7
+#: part/templates/part/navbar.html:67 part/templates/part/prices.html:7
msgid "Pricing Information"
msgstr ""
#: company/templates/company/supplier_part.html:164
#: company/templates/company/supplier_part.html:265
-#: part/templates/part/prices.html:253 part/views.py:1722
+#: part/templates/part/prices.html:271 part/views.py:1730
msgid "Add Price Break"
msgstr ""
@@ -2789,11 +2871,11 @@ msgstr ""
msgid "No price break information found"
msgstr ""
-#: company/templates/company/supplier_part.html:199 part/views.py:1784
+#: company/templates/company/supplier_part.html:199 part/views.py:1792
msgid "Delete Price Break"
msgstr ""
-#: company/templates/company/supplier_part.html:213 part/views.py:1770
+#: company/templates/company/supplier_part.html:213 part/views.py:1778
msgid "Edit Price Break"
msgstr ""
@@ -2817,8 +2899,8 @@ msgstr ""
msgid "New Supplier"
msgstr ""
-#: company/views.py:55 part/templates/part/prices.html:148
-#: templates/InvenTree/search.html:306 templates/navbar.html:36
+#: company/views.py:55 part/templates/part/prices.html:167
+#: templates/InvenTree/search.html:306 templates/navbar.html:42
msgid "Manufacturers"
msgstr ""
@@ -2827,7 +2909,7 @@ msgid "New Manufacturer"
msgstr ""
#: company/views.py:61 templates/InvenTree/search.html:336
-#: templates/navbar.html:45
+#: templates/navbar.html:53
msgid "Customers"
msgstr ""
@@ -2929,6 +3011,10 @@ msgstr ""
msgid "Part query filters (comma-separated value of key=value pairs)"
msgstr ""
+#: order/api.py:302
+msgid "Destination location must be specified"
+msgstr ""
+
#: order/forms.py:30 order/templates/order/order_base.html:47
msgid "Place order"
msgstr ""
@@ -2978,11 +3064,11 @@ msgstr ""
msgid "Order notes"
msgstr ""
-#: order/models.py:247 order/models.py:534
+#: order/models.py:247 order/models.py:540
msgid "Order reference"
msgstr ""
-#: order/models.py:252 order/models.py:549
+#: order/models.py:252 order/models.py:555
msgid "Purchase order status"
msgstr ""
@@ -2991,7 +3077,7 @@ msgid "Company from which the items are being ordered"
msgstr ""
#: order/models.py:264 order/templates/order/order_base.html:98
-#: templates/js/translated/order.js:263
+#: templates/js/translated/order.js:337
msgid "Supplier Reference"
msgstr ""
@@ -3023,7 +3109,7 @@ msgstr ""
msgid "Date order was completed"
msgstr ""
-#: order/models.py:313 stock/models.py:345 stock/models.py:1060
+#: order/models.py:313 stock/models.py:351 stock/models.py:1072
msgid "Quantity must be greater than zero"
msgstr ""
@@ -3031,150 +3117,182 @@ msgstr ""
msgid "Part supplier must match PO supplier"
msgstr ""
-#: order/models.py:416
+#: order/models.py:421
msgid "Lines can only be received against an order marked as 'Placed'"
msgstr ""
-#: order/models.py:420
+#: order/models.py:425
msgid "Quantity must be an integer"
msgstr ""
-#: order/models.py:422
+#: order/models.py:427
msgid "Quantity must be a positive number"
msgstr ""
-#: order/models.py:545
+#: order/models.py:551
msgid "Company to which the items are being sold"
msgstr ""
-#: order/models.py:551
+#: order/models.py:557
msgid "Customer Reference "
msgstr ""
-#: order/models.py:551
+#: order/models.py:557
msgid "Customer order reference code"
msgstr ""
-#: order/models.py:556
+#: order/models.py:562
msgid "Target date for order completion. Order will be overdue after this date."
msgstr ""
-#: order/models.py:559 templates/js/translated/order.js:392
+#: order/models.py:565 templates/js/translated/order.js:733
msgid "Shipment Date"
msgstr ""
-#: order/models.py:566
+#: order/models.py:572
msgid "shipped by"
msgstr ""
-#: order/models.py:610
+#: order/models.py:616
msgid "SalesOrder cannot be shipped as it is not currently pending"
msgstr ""
-#: order/models.py:707
+#: order/models.py:713
msgid "Item quantity"
msgstr ""
-#: order/models.py:713
+#: order/models.py:719
msgid "Line item reference"
msgstr ""
-#: order/models.py:715
+#: order/models.py:721
msgid "Line item notes"
msgstr ""
-#: order/models.py:745 order/models.py:823 templates/js/translated/order.js:442
+#: order/models.py:751 order/models.py:835 templates/js/translated/order.js:785
msgid "Order"
msgstr ""
-#: order/models.py:746 order/templates/order/order_base.html:9
+#: order/models.py:752 order/templates/order/order_base.html:9
#: order/templates/order/order_base.html:24
#: report/templates/report/inventree_po_report.html:77
#: stock/templates/stock/item_base.html:338
-#: templates/js/translated/order.js:232 templates/js/translated/stock.js:1037
-#: templates/js/translated/stock.js:1448
+#: templates/js/translated/order.js:306 templates/js/translated/stock.js:991
+#: templates/js/translated/stock.js:1589
msgid "Purchase Order"
msgstr ""
-#: order/models.py:767
+#: order/models.py:773
msgid "Supplier part"
msgstr ""
-#: order/models.py:770 order/templates/order/order_base.html:131
-#: order/templates/order/purchase_order_detail.html:388
+#: order/models.py:780 order/templates/order/order_base.html:131
#: order/templates/order/receive_parts.html:22
#: order/templates/order/sales_order_base.html:133
+#: templates/js/translated/order.js:573
msgid "Received"
msgstr ""
-#: order/models.py:770
+#: order/models.py:781
msgid "Number of items received"
msgstr ""
-#: order/models.py:776 part/templates/part/prices.html:157 stock/models.py:582
-#: stock/templates/stock/item_base.html:345
-#: templates/js/translated/stock.js:1081
+#: order/models.py:788 part/templates/part/prices.html:176 stock/models.py:588
+#: stock/serializers.py:147 stock/templates/stock/item_base.html:345
+#: templates/js/translated/stock.js:1045
msgid "Purchase Price"
msgstr ""
-#: order/models.py:777
+#: order/models.py:789
msgid "Unit purchase price"
msgstr ""
-#: order/models.py:785
+#: order/models.py:797
msgid "Where does the Purchaser want this item to be stored?"
msgstr ""
-#: order/models.py:831 part/templates/part/part_pricing.html:97
-#: part/templates/part/prices.html:97 part/templates/part/prices.html:266
+#: order/models.py:843 part/templates/part/part_pricing.html:112
+#: part/templates/part/prices.html:116 part/templates/part/prices.html:284
msgid "Sale Price"
msgstr ""
-#: order/models.py:832
+#: order/models.py:844
msgid "Unit sale price"
msgstr ""
-#: order/models.py:911 order/models.py:913
+#: order/models.py:923 order/models.py:925
msgid "Stock item has not been assigned"
msgstr ""
-#: order/models.py:917
+#: order/models.py:929
msgid "Cannot allocate stock item to a line with a different part"
msgstr ""
-#: order/models.py:919
+#: order/models.py:931
msgid "Cannot allocate stock to a line without a part"
msgstr ""
-#: order/models.py:922
+#: order/models.py:934
msgid "Allocation quantity cannot exceed stock quantity"
msgstr ""
-#: order/models.py:932
+#: order/models.py:944
msgid "Quantity must be 1 for serialized stock item"
msgstr ""
-#: order/models.py:937
+#: order/models.py:949
msgid "Line"
msgstr ""
-#: order/models.py:948
+#: order/models.py:960
msgid "Item"
msgstr ""
-#: order/models.py:949
+#: order/models.py:961
msgid "Select stock item to allocate"
msgstr ""
-#: order/models.py:952
+#: order/models.py:964
msgid "Enter stock allocation quantity"
msgstr ""
-#: order/serializers.py:139
+#: order/serializers.py:166
msgid "Purchase price currency"
msgstr ""
-#: order/serializers.py:360
+#: order/serializers.py:201
+msgid "Line Item"
+msgstr ""
+
+#: order/serializers.py:207
+msgid "Line item does not match purchase order"
+msgstr ""
+
+#: order/serializers.py:217 order/serializers.py:276
+msgid "Select destination location for received items"
+msgstr ""
+
+#: order/serializers.py:234
+msgid "Barcode Hash"
+msgstr ""
+
+#: order/serializers.py:235
+msgid "Unique identifier field"
+msgstr ""
+
+#: order/serializers.py:250
+msgid "Barcode is already in use"
+msgstr ""
+
+#: order/serializers.py:289
+msgid "Line items must be provided"
+msgstr ""
+
+#: order/serializers.py:299
+msgid "Supplied barcode values must be unique"
+msgstr ""
+
+#: order/serializers.py:514
msgid "Sale price currency"
msgstr ""
@@ -3227,14 +3345,12 @@ msgid "Edit Purchase Order"
msgstr ""
#: order/templates/order/order_base.html:196
-#: order/templates/order/purchase_order_detail.html:265
-#: stock/templates/stock/location.html:250
+#: stock/templates/stock/location.html:250 templates/js/translated/order.js:437
msgid "New Location"
msgstr ""
#: order/templates/order/order_base.html:197
-#: order/templates/order/purchase_order_detail.html:266
-#: stock/templates/stock/location.html:42
+#: stock/templates/stock/location.html:42 templates/js/translated/order.js:438
msgid "Create new stock location"
msgstr ""
@@ -3336,7 +3452,7 @@ msgid "Upload File for Purchase Order"
msgstr ""
#: order/templates/order/order_wizard/po_upload.html:18
-#: part/templates/part/bom_upload/upload_file.html:24
+#: part/templates/part/bom_upload/upload_file.html:34
#: part/templates/part/import_wizard/ajax_part_upload.html:10
#: part/templates/part/import_wizard/part_upload.html:21
#, python-format
@@ -3369,7 +3485,7 @@ msgstr ""
#: order/templates/order/order_wizard/select_parts.html:65
#, python-format
-msgid "Select a supplier for %(name)s"
+msgid "Select a supplier for %(name)s"
msgstr ""
#: order/templates/order/order_wizard/select_parts.html:77
@@ -3386,7 +3502,7 @@ msgid "Select existing purchase orders, or create new orders."
msgstr ""
#: order/templates/order/order_wizard/select_pos.html:31
-#: templates/js/translated/order.js:289 templates/js/translated/order.js:397
+#: templates/js/translated/order.js:363 templates/js/translated/order.js:738
msgid "Items"
msgstr ""
@@ -3425,9 +3541,9 @@ msgid "Purchase Order Items"
msgstr ""
#: order/templates/order/purchase_order_detail.html:23
-#: order/templates/order/purchase_order_detail.html:202
+#: order/templates/order/purchase_order_detail.html:203
#: order/templates/order/sales_order_detail.html:23
-#: order/templates/order/sales_order_detail.html:176
+#: order/templates/order/sales_order_detail.html:177
msgid "Add Line Item"
msgstr ""
@@ -3436,49 +3552,6 @@ msgstr ""
msgid "Order Notes"
msgstr ""
-#: order/templates/order/purchase_order_detail.html:238
-#: order/templates/order/sales_order_detail.html:518
-msgid "Edit Line Item"
-msgstr ""
-
-#: order/templates/order/purchase_order_detail.html:248
-#: order/templates/order/sales_order_detail.html:528
-msgid "Delete Line Item"
-msgstr ""
-
-#: order/templates/order/purchase_order_detail.html:279
-msgid "No line items found"
-msgstr ""
-
-#: order/templates/order/purchase_order_detail.html:307
-#: order/templates/order/sales_order_detail.html:353
-msgid "Total"
-msgstr ""
-
-#: order/templates/order/purchase_order_detail.html:360
-#: order/templates/order/sales_order_detail.html:376
-#: templates/js/translated/part.js:1128 templates/js/translated/part.js:1317
-msgid "Unit Price"
-msgstr ""
-
-#: order/templates/order/purchase_order_detail.html:367
-#: order/templates/order/sales_order_detail.html:383
-msgid "Total price"
-msgstr ""
-
-#: order/templates/order/purchase_order_detail.html:431
-#: order/templates/order/sales_order_detail.html:489
-msgid "Edit line item"
-msgstr ""
-
-#: order/templates/order/purchase_order_detail.html:432
-msgid "Delete line item"
-msgstr ""
-
-#: order/templates/order/purchase_order_detail.html:437
-msgid "Receive line item"
-msgstr ""
-
#: order/templates/order/purchase_orders.html:24
#: order/templates/order/sales_orders.html:24
msgid "Print Order Reports"
@@ -3486,18 +3559,18 @@ msgstr ""
#: order/templates/order/receive_parts.html:8
#, python-format
-msgid "Receive outstanding parts for %(order)s - %(desc)s"
+msgid "Receive outstanding parts for %(order)s - %(desc)s"
msgstr ""
-#: order/templates/order/receive_parts.html:14 part/api.py:49
-#: part/models.py:296 part/templates/part/cat_link.html:7
+#: order/templates/order/receive_parts.html:14 part/api.py:54
+#: part/models.py:298 part/templates/part/cat_link.html:7
#: part/templates/part/category.html:108 part/templates/part/category.html:122
#: part/templates/part/category_navbar.html:21
#: part/templates/part/category_navbar.html:24
#: templates/InvenTree/index.html:102 templates/InvenTree/search.html:114
#: templates/InvenTree/settings/navbar.html:83
#: templates/InvenTree/settings/navbar.html:85
-#: templates/js/translated/part.js:987 templates/navbar.html:23
+#: templates/js/translated/part.js:1154 templates/navbar.html:29
#: templates/stats.html:80 templates/stats.html:89 users/models.py:41
msgid "Parts"
msgstr ""
@@ -3511,7 +3584,7 @@ msgid "Order Code"
msgstr ""
#: order/templates/order/receive_parts.html:21
-#: part/templates/part/part_base.html:160 templates/js/translated/part.js:802
+#: part/templates/part/part_base.html:167 templates/js/translated/part.js:949
msgid "On Order"
msgstr ""
@@ -3540,7 +3613,7 @@ msgid "Sales Order Details"
msgstr ""
#: order/templates/order/sales_order_base.html:100
-#: templates/js/translated/order.js:364
+#: templates/js/translated/order.js:705
msgid "Customer Reference"
msgstr ""
@@ -3563,71 +3636,102 @@ msgstr ""
msgid "Sales Order Items"
msgstr ""
-#: order/templates/order/sales_order_detail.html:225
-#: templates/js/translated/bom.js:378 templates/js/translated/build.js:759
-#: templates/js/translated/build.js:1202
+#: order/templates/order/sales_order_detail.html:226
+#: templates/js/translated/bom.js:394 templates/js/translated/build.js:782
+#: templates/js/translated/build.js:1219
msgid "Actions"
msgstr ""
-#: order/templates/order/sales_order_detail.html:232
-#: templates/js/translated/build.js:645 templates/js/translated/build.js:1011
+#: order/templates/order/sales_order_detail.html:233
+#: templates/js/translated/build.js:668 templates/js/translated/build.js:1030
msgid "Edit stock allocation"
msgstr ""
-#: order/templates/order/sales_order_detail.html:233
-#: templates/js/translated/build.js:647 templates/js/translated/build.js:1012
+#: order/templates/order/sales_order_detail.html:234
+#: templates/js/translated/build.js:670 templates/js/translated/build.js:1031
msgid "Delete stock allocation"
msgstr ""
-#: order/templates/order/sales_order_detail.html:306
+#: order/templates/order/sales_order_detail.html:307
msgid "No matching line items"
msgstr ""
-#: order/templates/order/sales_order_detail.html:336
+#: order/templates/order/sales_order_detail.html:337
msgid "ID"
msgstr ""
-#: order/templates/order/sales_order_detail.html:404
-#: templates/js/translated/build.js:710 templates/js/translated/build.js:1007
+#: order/templates/order/sales_order_detail.html:354
+#: templates/js/translated/order.js:481
+msgid "Total"
+msgstr ""
+
+#: order/templates/order/sales_order_detail.html:377
+#: templates/js/translated/order.js:534 templates/js/translated/part.js:1296
+#: templates/js/translated/part.js:1507
+msgid "Unit Price"
+msgstr ""
+
+#: order/templates/order/sales_order_detail.html:384
+#: templates/js/translated/order.js:543
+msgid "Total price"
+msgstr ""
+
+#: order/templates/order/sales_order_detail.html:405
+#: templates/js/translated/build.js:733 templates/js/translated/build.js:1026
msgid "Allocated"
msgstr ""
-#: order/templates/order/sales_order_detail.html:406
+#: order/templates/order/sales_order_detail.html:407
msgid "Fulfilled"
msgstr ""
-#: order/templates/order/sales_order_detail.html:443
+#: order/templates/order/sales_order_detail.html:444
msgid "PO"
msgstr ""
-#: order/templates/order/sales_order_detail.html:473
+#: order/templates/order/sales_order_detail.html:474
msgid "Allocate serial numbers"
msgstr ""
-#: order/templates/order/sales_order_detail.html:476
-#: templates/js/translated/build.js:773
+#: order/templates/order/sales_order_detail.html:477
+#: templates/js/translated/build.js:796
msgid "Allocate stock"
msgstr ""
-#: order/templates/order/sales_order_detail.html:479
+#: order/templates/order/sales_order_detail.html:480
msgid "Purchase stock"
msgstr ""
-#: order/templates/order/sales_order_detail.html:483
-#: templates/js/translated/build.js:766 templates/js/translated/build.js:1210
+#: order/templates/order/sales_order_detail.html:484
+#: templates/js/translated/build.js:789 templates/js/translated/build.js:1227
msgid "Build stock"
msgstr ""
-#: order/templates/order/sales_order_detail.html:486
-#: order/templates/order/sales_order_detail.html:605
+#: order/templates/order/sales_order_detail.html:487
+#: order/templates/order/sales_order_detail.html:606
msgid "Calculate price"
msgstr ""
#: order/templates/order/sales_order_detail.html:490
+#: templates/js/translated/order.js:616
+msgid "Edit line item"
+msgstr ""
+
+#: order/templates/order/sales_order_detail.html:491
msgid "Delete line item "
msgstr ""
-#: order/templates/order/sales_order_detail.html:611
+#: order/templates/order/sales_order_detail.html:519
+#: templates/js/translated/order.js:403
+msgid "Edit Line Item"
+msgstr ""
+
+#: order/templates/order/sales_order_detail.html:529
+#: templates/js/translated/order.js:415
+msgid "Delete Line Item"
+msgstr ""
+
+#: order/templates/order/sales_order_detail.html:612
msgid "Update Unit Price"
msgstr ""
@@ -3814,12 +3918,28 @@ msgstr ""
msgid "Updated {part} unit-price to {price} and quantity to {qty}"
msgstr ""
-#: part/bom.py:133 part/models.py:73 part/models.py:731
-#: part/templates/part/category.html:75 part/templates/part/part_base.html:282
+#: part/api.py:700
+msgid "Must be greater than zero"
+msgstr ""
+
+#: part/api.py:704
+msgid "Must be a valid quantity"
+msgstr ""
+
+#: part/api.py:719
+msgid "Specify location for initial part stock"
+msgstr ""
+
+#: part/api.py:750 part/api.py:754 part/api.py:769 part/api.py:773
+msgid "This field is required"
+msgstr ""
+
+#: part/bom.py:133 part/models.py:75 part/models.py:733
+#: part/templates/part/category.html:75 part/templates/part/part_base.html:290
msgid "Default Location"
msgstr ""
-#: part/bom.py:134 part/templates/part/part_base.html:149
+#: part/bom.py:134 part/templates/part/part_base.html:156
msgid "Available Stock"
msgstr ""
@@ -3879,7 +3999,7 @@ msgstr ""
msgid "Include part supplier data in exported BOM"
msgstr ""
-#: part/forms.py:96 part/models.py:2234
+#: part/forms.py:96 part/models.py:2250
msgid "Parent Part"
msgstr ""
@@ -3923,391 +4043,391 @@ msgstr ""
msgid "Input quantity for price calculation"
msgstr ""
-#: part/models.py:74
+#: part/models.py:76
msgid "Default location for parts in this category"
msgstr ""
-#: part/models.py:77
+#: part/models.py:79
msgid "Default keywords"
msgstr ""
-#: part/models.py:77
+#: part/models.py:79
msgid "Default keywords for parts in this category"
msgstr ""
-#: part/models.py:87 part/models.py:2280
+#: part/models.py:89 part/models.py:2296
#: part/templates/part/part_app_base.html:10
msgid "Part Category"
msgstr ""
-#: part/models.py:88 part/templates/part/category.html:32
+#: part/models.py:90 part/templates/part/category.html:32
#: part/templates/part/category.html:103 templates/InvenTree/search.html:127
#: templates/stats.html:84 users/models.py:40
msgid "Part Categories"
msgstr ""
-#: part/models.py:381
+#: part/models.py:383
msgid "Invalid choice for parent part"
msgstr ""
-#: part/models.py:433 part/models.py:445
+#: part/models.py:435 part/models.py:447
#, python-brace-format
msgid "Part '{p1}' is used in BOM for '{p2}' (recursive)"
msgstr ""
-#: part/models.py:542
+#: part/models.py:544
msgid "Next available serial numbers are"
msgstr ""
-#: part/models.py:546
+#: part/models.py:548
msgid "Next available serial number is"
msgstr ""
-#: part/models.py:551
+#: part/models.py:553
msgid "Most recent serial number is"
msgstr ""
-#: part/models.py:630
+#: part/models.py:632
msgid "Duplicate IPN not allowed in part settings"
msgstr ""
-#: part/models.py:655
+#: part/models.py:657
msgid "Part name"
msgstr ""
-#: part/models.py:662
+#: part/models.py:664
msgid "Is Template"
msgstr ""
-#: part/models.py:663
+#: part/models.py:665
msgid "Is this part a template part?"
msgstr ""
-#: part/models.py:673
+#: part/models.py:675
msgid "Is this part a variant of another part?"
msgstr ""
-#: part/models.py:674
+#: part/models.py:676
msgid "Variant Of"
msgstr ""
-#: part/models.py:680
+#: part/models.py:682
msgid "Part description"
msgstr ""
-#: part/models.py:685 part/templates/part/category.html:82
-#: part/templates/part/part_base.html:251
+#: part/models.py:687 part/templates/part/category.html:82
+#: part/templates/part/part_base.html:259
msgid "Keywords"
msgstr ""
-#: part/models.py:686
+#: part/models.py:688
msgid "Part keywords to improve visibility in search results"
msgstr ""
-#: part/models.py:693 part/models.py:2279
+#: part/models.py:695 part/models.py:2295
#: part/templates/part/set_category.html:15
#: templates/InvenTree/settings/settings.html:167
-#: templates/js/translated/part.js:773
+#: templates/js/translated/part.js:916
msgid "Category"
msgstr ""
-#: part/models.py:694
+#: part/models.py:696
msgid "Part category"
msgstr ""
-#: part/models.py:699 part/templates/part/part_base.html:227
-#: templates/js/translated/part.js:389 templates/js/translated/part.js:617
+#: part/models.py:701 part/templates/part/part_base.html:235
+#: templates/js/translated/part.js:517 templates/js/translated/part.js:749
msgid "IPN"
msgstr ""
-#: part/models.py:700
+#: part/models.py:702
msgid "Internal Part Number"
msgstr ""
-#: part/models.py:706
+#: part/models.py:708
msgid "Part revision or version number"
msgstr ""
-#: part/models.py:707 part/templates/part/part_base.html:244
-#: report/models.py:200 templates/js/translated/part.js:393
+#: part/models.py:709 part/templates/part/part_base.html:252
+#: report/models.py:200 templates/js/translated/part.js:521
msgid "Revision"
msgstr ""
-#: part/models.py:729
+#: part/models.py:731
msgid "Where is this item normally stored?"
msgstr ""
-#: part/models.py:776 part/templates/part/part_base.html:289
+#: part/models.py:778 part/templates/part/part_base.html:297
msgid "Default Supplier"
msgstr ""
-#: part/models.py:777
+#: part/models.py:779
msgid "Default supplier part"
msgstr ""
-#: part/models.py:784
+#: part/models.py:786
msgid "Default Expiry"
msgstr ""
-#: part/models.py:785
+#: part/models.py:787
msgid "Expiry time (in days) for stock items of this part"
msgstr ""
-#: part/models.py:790
+#: part/models.py:792
msgid "Minimum Stock"
msgstr ""
-#: part/models.py:791
+#: part/models.py:793
msgid "Minimum allowed stock level"
msgstr ""
-#: part/models.py:798
+#: part/models.py:800
msgid "Stock keeping units for this part"
msgstr ""
-#: part/models.py:804
+#: part/models.py:806
msgid "Can this part be built from other parts?"
msgstr ""
-#: part/models.py:810
+#: part/models.py:812
msgid "Can this part be used to build other parts?"
msgstr ""
-#: part/models.py:816
+#: part/models.py:818
msgid "Does this part have tracking for unique items?"
msgstr ""
-#: part/models.py:821
+#: part/models.py:823
msgid "Can this part be purchased from external suppliers?"
msgstr ""
-#: part/models.py:826
+#: part/models.py:828
msgid "Can this part be sold to customers?"
msgstr ""
-#: part/models.py:830 templates/js/translated/table_filters.js:21
-#: templates/js/translated/table_filters.js:69
-#: templates/js/translated/table_filters.js:255
-#: templates/js/translated/table_filters.js:324
+#: part/models.py:832 templates/js/translated/table_filters.js:34
+#: templates/js/translated/table_filters.js:82
+#: templates/js/translated/table_filters.js:268
+#: templates/js/translated/table_filters.js:337
msgid "Active"
msgstr ""
-#: part/models.py:831
+#: part/models.py:833
msgid "Is this part active?"
msgstr ""
-#: part/models.py:836
+#: part/models.py:838
msgid "Is this a virtual part, such as a software product or license?"
msgstr ""
-#: part/models.py:841
+#: part/models.py:843
msgid "Part notes - supports Markdown formatting"
msgstr ""
-#: part/models.py:844
+#: part/models.py:846
msgid "BOM checksum"
msgstr ""
-#: part/models.py:844
+#: part/models.py:846
msgid "Stored BOM checksum"
msgstr ""
-#: part/models.py:847
+#: part/models.py:849
msgid "BOM checked by"
msgstr ""
-#: part/models.py:849
+#: part/models.py:851
msgid "BOM checked date"
msgstr ""
-#: part/models.py:853
+#: part/models.py:855
msgid "Creation User"
msgstr ""
-#: part/models.py:1592
+#: part/models.py:1601
msgid "Sell multiple"
msgstr ""
-#: part/models.py:2080
+#: part/models.py:2096
msgid "Test templates can only be created for trackable parts"
msgstr ""
-#: part/models.py:2097
+#: part/models.py:2113
msgid "Test with this name already exists for this part"
msgstr ""
-#: part/models.py:2117 templates/js/translated/part.js:1038
-#: templates/js/translated/stock.js:485
+#: part/models.py:2133 templates/js/translated/part.js:1205
+#: templates/js/translated/stock.js:556
msgid "Test Name"
msgstr ""
-#: part/models.py:2118
+#: part/models.py:2134
msgid "Enter a name for the test"
msgstr ""
-#: part/models.py:2123
+#: part/models.py:2139
msgid "Test Description"
msgstr ""
-#: part/models.py:2124
+#: part/models.py:2140
msgid "Enter description for this test"
msgstr ""
-#: part/models.py:2129 templates/js/translated/part.js:1047
-#: templates/js/translated/table_filters.js:241
+#: part/models.py:2145 templates/js/translated/part.js:1214
+#: templates/js/translated/table_filters.js:254
msgid "Required"
msgstr ""
-#: part/models.py:2130
+#: part/models.py:2146
msgid "Is this test required to pass?"
msgstr ""
-#: part/models.py:2135 templates/js/translated/part.js:1055
+#: part/models.py:2151 templates/js/translated/part.js:1222
msgid "Requires Value"
msgstr ""
-#: part/models.py:2136
+#: part/models.py:2152
msgid "Does this test require a value when adding a test result?"
msgstr ""
-#: part/models.py:2141 templates/js/translated/part.js:1062
+#: part/models.py:2157 templates/js/translated/part.js:1229
msgid "Requires Attachment"
msgstr ""
-#: part/models.py:2142
+#: part/models.py:2158
msgid "Does this test require a file attachment when adding a test result?"
msgstr ""
-#: part/models.py:2153
+#: part/models.py:2169
#, python-brace-format
msgid "Illegal character in template name ({c})"
msgstr ""
-#: part/models.py:2189
+#: part/models.py:2205
msgid "Parameter template name must be unique"
msgstr ""
-#: part/models.py:2197
+#: part/models.py:2213
msgid "Parameter Name"
msgstr ""
-#: part/models.py:2204
+#: part/models.py:2220
msgid "Parameter Units"
msgstr ""
-#: part/models.py:2236 part/models.py:2285 part/models.py:2286
+#: part/models.py:2252 part/models.py:2301 part/models.py:2302
#: templates/InvenTree/settings/settings.html:162
msgid "Parameter Template"
msgstr ""
-#: part/models.py:2238
+#: part/models.py:2254
msgid "Data"
msgstr ""
-#: part/models.py:2238
+#: part/models.py:2254
msgid "Parameter Value"
msgstr ""
-#: part/models.py:2290 templates/InvenTree/settings/settings.html:171
+#: part/models.py:2306 templates/InvenTree/settings/settings.html:171
msgid "Default Value"
msgstr ""
-#: part/models.py:2291
+#: part/models.py:2307
msgid "Default Parameter Value"
msgstr ""
-#: part/models.py:2325
+#: part/models.py:2341
msgid "Select parent part"
msgstr ""
-#: part/models.py:2333
+#: part/models.py:2349
msgid "Sub part"
msgstr ""
-#: part/models.py:2334
+#: part/models.py:2350
msgid "Select part to be used in BOM"
msgstr ""
-#: part/models.py:2340
+#: part/models.py:2356
msgid "BOM quantity for this BOM item"
msgstr ""
-#: part/models.py:2342 templates/js/translated/bom.js:236
-#: templates/js/translated/bom.js:298
+#: part/models.py:2358 templates/js/translated/bom.js:256
+#: templates/js/translated/bom.js:314
msgid "Optional"
msgstr ""
-#: part/models.py:2342
+#: part/models.py:2358
msgid "This BOM item is optional"
msgstr ""
-#: part/models.py:2345
+#: part/models.py:2361
msgid "Overage"
msgstr ""
-#: part/models.py:2346
+#: part/models.py:2362
msgid "Estimated build wastage quantity (absolute or percentage)"
msgstr ""
-#: part/models.py:2349
+#: part/models.py:2365
msgid "BOM item reference"
msgstr ""
-#: part/models.py:2352
+#: part/models.py:2368
msgid "BOM item notes"
msgstr ""
-#: part/models.py:2354
+#: part/models.py:2370
msgid "Checksum"
msgstr ""
-#: part/models.py:2354
+#: part/models.py:2370
msgid "BOM line checksum"
msgstr ""
-#: part/models.py:2358 templates/js/translated/bom.js:315
-#: templates/js/translated/bom.js:322
-#: templates/js/translated/table_filters.js:55
+#: part/models.py:2374 templates/js/translated/bom.js:331
+#: templates/js/translated/bom.js:338
+#: templates/js/translated/table_filters.js:68
msgid "Inherited"
msgstr ""
-#: part/models.py:2359
+#: part/models.py:2375
msgid "This BOM item is inherited by BOMs for variant parts"
msgstr ""
-#: part/models.py:2364 templates/js/translated/bom.js:307
+#: part/models.py:2380 templates/js/translated/bom.js:323
msgid "Allow Variants"
msgstr ""
-#: part/models.py:2365
+#: part/models.py:2381
msgid "Stock items for variant parts can be used for this BOM item"
msgstr ""
-#: part/models.py:2450 stock/models.py:335
+#: part/models.py:2466 stock/models.py:341
msgid "Quantity must be integer value for trackable parts"
msgstr ""
-#: part/models.py:2459 part/models.py:2461
+#: part/models.py:2475 part/models.py:2477
msgid "Sub part must be specified"
msgstr ""
-#: part/models.py:2464
+#: part/models.py:2480
msgid "BOM Item"
msgstr ""
-#: part/models.py:2583
+#: part/models.py:2599
msgid "Part 1"
msgstr ""
-#: part/models.py:2587
+#: part/models.py:2603
msgid "Part 2"
msgstr ""
-#: part/models.py:2587
+#: part/models.py:2603
msgid "Select Related Part"
msgstr ""
-#: part/models.py:2619
+#: part/models.py:2635
msgid "Error creating relationship: check that the part is not related to itself and that the relationship is unique"
msgstr ""
@@ -4317,17 +4437,17 @@ msgstr ""
#: part/templates/part/bom.html:14
#, python-format
-msgid "The BOM for %(part)s has changed, and must be validated.
"
+msgid "The BOM for %(part)s has changed, and must be validated.
"
msgstr ""
#: part/templates/part/bom.html:16
#, python-format
-msgid "The BOM for %(part)s was last checked by %(checker)s on %(check_date)s"
+msgid "The BOM for %(part)s was last checked by %(checker)s on %(check_date)s"
msgstr ""
#: part/templates/part/bom.html:20
#, python-format
-msgid "The BOM for %(part)s has not been validated."
+msgid "The BOM for %(part)s has not been validated."
msgstr ""
#: part/templates/part/bom.html:27
@@ -4374,33 +4494,34 @@ msgstr ""
msgid "Select Part"
msgstr ""
-#: part/templates/part/bom_upload/upload_file.html:7
-msgid "Upload BOM File"
+#: part/templates/part/bom_upload/upload_file.html:13
+#: part/templates/part/bom_upload/upload_file.html:16
+msgid "Return To BOM"
msgstr ""
-#: part/templates/part/bom_upload/upload_file.html:12
+#: part/templates/part/bom_upload/upload_file.html:27
msgid "Upload Bill of Materials"
msgstr ""
-#: part/templates/part/bom_upload/upload_file.html:16
+#: part/templates/part/bom_upload/upload_file.html:46
msgid "Requirements for BOM upload"
msgstr ""
-#: part/templates/part/bom_upload/upload_file.html:18
+#: part/templates/part/bom_upload/upload_file.html:48
msgid "The BOM file must contain the required named columns as provided in the "
msgstr ""
-#: part/templates/part/bom_upload/upload_file.html:18
+#: part/templates/part/bom_upload/upload_file.html:48
msgid "BOM Upload Template"
msgstr ""
-#: part/templates/part/bom_upload/upload_file.html:19
+#: part/templates/part/bom_upload/upload_file.html:49
msgid "Each part must already exist in the database"
msgstr ""
#: part/templates/part/bom_validate.html:6
#, python-format
-msgid "Confirm that the Bill of Materials (BOM) is valid for:
%(part)s"
+msgid "Confirm that the Bill of Materials (BOM) is valid for:
%(part)s"
msgstr ""
#: part/templates/part/bom_validate.html:9
@@ -4435,7 +4556,7 @@ msgstr ""
msgid "Category Description"
msgstr ""
-#: part/templates/part/category.html:88 part/templates/part/category.html:174
+#: part/templates/part/category.html:88 part/templates/part/category.html:175
#: part/templates/part/category_navbar.html:14
#: part/templates/part/category_navbar.html:17
msgid "Subcategories"
@@ -4449,7 +4570,7 @@ msgstr ""
msgid "Export Part Data"
msgstr ""
-#: part/templates/part/category.html:127 part/templates/part/category.html:141
+#: part/templates/part/category.html:127 part/templates/part/category.html:142
msgid "Export"
msgstr ""
@@ -4470,26 +4591,30 @@ msgid "Set Category"
msgstr ""
#: part/templates/part/category.html:141
+msgid "Print Labels"
+msgstr ""
+
+#: part/templates/part/category.html:142
msgid "Export Data"
msgstr ""
-#: part/templates/part/category.html:145
+#: part/templates/part/category.html:146
msgid "View list display"
msgstr ""
-#: part/templates/part/category.html:148
+#: part/templates/part/category.html:149
msgid "View grid display"
msgstr ""
-#: part/templates/part/category.html:164
+#: part/templates/part/category.html:165
msgid "Part Parameters"
msgstr ""
-#: part/templates/part/category.html:253
+#: part/templates/part/category.html:254
msgid "Create Part Category"
msgstr ""
-#: part/templates/part/category.html:279
+#: part/templates/part/category.html:281
msgid "Create Part"
msgstr ""
@@ -4533,7 +4658,7 @@ msgstr ""
msgid "Import Parts"
msgstr ""
-#: part/templates/part/copy_part.html:9 templates/js/translated/part.js:224
+#: part/templates/part/copy_part.html:9 templates/js/translated/part.js:352
msgid "Duplicate Part"
msgstr ""
@@ -4554,7 +4679,7 @@ msgstr ""
#: part/templates/part/create_part.html:17
#, python-format
-msgid "%(full_name)s - %(desc)s (%(match_per)s%% match)"
+msgid "%(full_name)s - %(desc)s (%(match_per)s%% match)"
msgstr ""
#: part/templates/part/detail.html:16
@@ -4563,10 +4688,10 @@ msgstr ""
#: part/templates/part/detail.html:21
#, python-format
-msgid "Showing stock for all variants of %(full_name)s"
+msgid "Showing stock for all variants of %(full_name)s"
msgstr ""
-#: part/templates/part/detail.html:30 part/templates/part/navbar.html:87
+#: part/templates/part/detail.html:30 part/templates/part/navbar.html:99
msgid "Part Test Templates"
msgstr ""
@@ -4586,7 +4711,7 @@ msgstr ""
msgid "Sales Order Allocations"
msgstr ""
-#: part/templates/part/detail.html:130 part/templates/part/navbar.html:21
+#: part/templates/part/detail.html:130 part/templates/part/navbar.html:27
msgid "Part Variants"
msgstr ""
@@ -4602,8 +4727,8 @@ msgstr ""
msgid "Add new parameter"
msgstr ""
-#: part/templates/part/detail.html:182 part/templates/part/navbar.html:95
-#: part/templates/part/navbar.html:98
+#: part/templates/part/detail.html:182 part/templates/part/navbar.html:107
+#: part/templates/part/navbar.html:110
msgid "Related Parts"
msgstr ""
@@ -4611,8 +4736,8 @@ msgstr ""
msgid "Add Related"
msgstr ""
-#: part/templates/part/detail.html:228 part/templates/part/navbar.html:35
-#: part/templates/part/navbar.html:38
+#: part/templates/part/detail.html:228 part/templates/part/navbar.html:43
+#: part/templates/part/navbar.html:46
msgid "Bill of Materials"
msgstr ""
@@ -4644,50 +4769,50 @@ msgstr ""
msgid "Delete manufacturer parts"
msgstr ""
-#: part/templates/part/detail.html:402
+#: part/templates/part/detail.html:502
msgid "Delete selected BOM items?"
msgstr ""
-#: part/templates/part/detail.html:403
+#: part/templates/part/detail.html:503
msgid "All selected BOM items will be deleted"
msgstr ""
-#: part/templates/part/detail.html:454
+#: part/templates/part/detail.html:554
msgid "Create BOM Item"
msgstr ""
-#: part/templates/part/detail.html:589
+#: part/templates/part/detail.html:699
msgid "Add Test Result Template"
msgstr ""
-#: part/templates/part/detail.html:607
+#: part/templates/part/detail.html:716
msgid "Edit Test Result Template"
msgstr ""
-#: part/templates/part/detail.html:619
+#: part/templates/part/detail.html:728
msgid "Delete Test Result Template"
msgstr ""
-#: part/templates/part/detail.html:670
+#: part/templates/part/detail.html:784
msgid "Edit Part Notes"
msgstr ""
-#: part/templates/part/detail.html:903
+#: part/templates/part/detail.html:936
#, python-format
msgid "Purchase Unit Price - %(currency)s"
msgstr ""
-#: part/templates/part/detail.html:915
+#: part/templates/part/detail.html:948
#, python-format
msgid "Unit Price-Cost Difference - %(currency)s"
msgstr ""
-#: part/templates/part/detail.html:927
+#: part/templates/part/detail.html:960
#, python-format
msgid "Supplier Unit Cost - %(currency)s"
msgstr ""
-#: part/templates/part/detail.html:1016
+#: part/templates/part/detail.html:1049
#, python-format
msgid "Unit Price - %(currency)s"
msgstr ""
@@ -4701,19 +4826,19 @@ msgstr ""
msgid "Import Parts from File"
msgstr ""
-#: part/templates/part/navbar.html:24
+#: part/templates/part/navbar.html:30
msgid "Variants"
msgstr ""
-#: part/templates/part/navbar.html:51 part/templates/part/navbar.html:54
+#: part/templates/part/navbar.html:59 part/templates/part/navbar.html:62
msgid "Used In"
msgstr ""
-#: part/templates/part/navbar.html:61
+#: part/templates/part/navbar.html:70
msgid "Prices"
msgstr ""
-#: part/templates/part/navbar.html:90
+#: part/templates/part/navbar.html:102
msgid "Test Templates"
msgstr ""
@@ -4721,195 +4846,204 @@ msgstr ""
msgid "Part List"
msgstr ""
-#: part/templates/part/part_base.html:30
+#: part/templates/part/part_base.html:35
msgid "Part is a template part (variants can be made from this part)"
msgstr ""
-#: part/templates/part/part_base.html:33
+#: part/templates/part/part_base.html:38
msgid "Part can be assembled from other parts"
msgstr ""
-#: part/templates/part/part_base.html:36
+#: part/templates/part/part_base.html:41
msgid "Part can be used in assemblies"
msgstr ""
-#: part/templates/part/part_base.html:39
+#: part/templates/part/part_base.html:44
msgid "Part stock is tracked by serial number"
msgstr ""
-#: part/templates/part/part_base.html:42
+#: part/templates/part/part_base.html:47
msgid "Part can be purchased from external suppliers"
msgstr ""
-#: part/templates/part/part_base.html:45
+#: part/templates/part/part_base.html:50
msgid "Part can be sold to customers"
msgstr ""
-#: part/templates/part/part_base.html:52 part/templates/part/part_base.html:60
+#: part/templates/part/part_base.html:57 part/templates/part/part_base.html:65
msgid "Part is virtual (not a physical part)"
msgstr ""
-#: part/templates/part/part_base.html:53 templates/js/translated/company.js:454
-#: templates/js/translated/company.js:704 templates/js/translated/part.js:304
-#: templates/js/translated/part.js:381
+#: part/templates/part/part_base.html:58 templates/js/translated/company.js:503
+#: templates/js/translated/company.js:759 templates/js/translated/part.js:432
+#: templates/js/translated/part.js:509
msgid "Inactive"
msgstr ""
-#: part/templates/part/part_base.html:68
+#: part/templates/part/part_base.html:73
msgid "Star this part"
msgstr ""
-#: part/templates/part/part_base.html:75
+#: part/templates/part/part_base.html:80
#: stock/templates/stock/item_base.html:75
#: stock/templates/stock/location.html:51
msgid "Barcode actions"
msgstr ""
-#: part/templates/part/part_base.html:77
+#: part/templates/part/part_base.html:82
#: stock/templates/stock/item_base.html:77
#: stock/templates/stock/location.html:53 templates/qr_button.html:1
msgid "Show QR Code"
msgstr ""
-#: part/templates/part/part_base.html:78
+#: part/templates/part/part_base.html:83
#: stock/templates/stock/item_base.html:93
#: stock/templates/stock/location.html:54
msgid "Print Label"
msgstr ""
-#: part/templates/part/part_base.html:83
+#: part/templates/part/part_base.html:89
msgid "Show pricing information"
msgstr ""
-#: part/templates/part/part_base.html:88
+#: part/templates/part/part_base.html:95
#: stock/templates/stock/item_base.html:142
#: stock/templates/stock/location.html:62
msgid "Stock actions"
msgstr ""
-#: part/templates/part/part_base.html:95
+#: part/templates/part/part_base.html:102
msgid "Count part stock"
msgstr ""
-#: part/templates/part/part_base.html:101
+#: part/templates/part/part_base.html:108
msgid "Transfer part stock"
msgstr ""
-#: part/templates/part/part_base.html:118
+#: part/templates/part/part_base.html:125
msgid "Part actions"
msgstr ""
-#: part/templates/part/part_base.html:121
+#: part/templates/part/part_base.html:128
msgid "Duplicate part"
msgstr ""
-#: part/templates/part/part_base.html:124
+#: part/templates/part/part_base.html:131
msgid "Edit part"
msgstr ""
-#: part/templates/part/part_base.html:127
+#: part/templates/part/part_base.html:134
msgid "Delete part"
msgstr ""
-#: part/templates/part/part_base.html:139
+#: part/templates/part/part_base.html:146
#, python-format
msgid "This part is a variant of %(link)s"
msgstr ""
-#: part/templates/part/part_base.html:154
-#: templates/js/translated/table_filters.js:153
+#: part/templates/part/part_base.html:161
+#: templates/js/translated/table_filters.js:166
msgid "In Stock"
msgstr ""
-#: part/templates/part/part_base.html:167 templates/InvenTree/index.html:186
+#: part/templates/part/part_base.html:174 templates/InvenTree/index.html:186
msgid "Required for Build Orders"
msgstr ""
-#: part/templates/part/part_base.html:174
+#: part/templates/part/part_base.html:181
msgid "Required for Sales Orders"
msgstr ""
-#: part/templates/part/part_base.html:181
+#: part/templates/part/part_base.html:188
msgid "Allocated to Orders"
msgstr ""
-#: part/templates/part/part_base.html:196 templates/js/translated/bom.js:336
+#: part/templates/part/part_base.html:203 templates/js/translated/bom.js:352
msgid "Can Build"
msgstr ""
-#: part/templates/part/part_base.html:202 templates/js/translated/part.js:633
-#: templates/js/translated/part.js:806
+#: part/templates/part/part_base.html:209 templates/js/translated/part.js:765
+#: templates/js/translated/part.js:953
msgid "Building"
msgstr ""
-#: part/templates/part/part_base.html:275
+#: part/templates/part/part_base.html:223
+#: part/templates/part/part_base.html:524
+#: part/templates/part/part_base.html:550
+msgid "Show Part Details"
+msgstr ""
+
+#: part/templates/part/part_base.html:283
msgid "Latest Serial Number"
msgstr ""
-#: part/templates/part/part_base.html:383 part/templates/part/prices.html:125
+#: part/templates/part/part_base.html:396 part/templates/part/prices.html:144
msgid "Calculate"
msgstr ""
-#: part/templates/part/part_base.html:426
+#: part/templates/part/part_base.html:439
msgid "No matching images found"
msgstr ""
-#: part/templates/part/part_base.html:506
-#: part/templates/part/part_base.html:531
+#: part/templates/part/part_base.html:519
+#: part/templates/part/part_base.html:544
msgid "Hide Part Details"
msgstr ""
-#: part/templates/part/part_base.html:511
-#: part/templates/part/part_base.html:537
-msgid "Show Part Details"
-msgstr ""
-
#: part/templates/part/part_pricing.html:22 part/templates/part/prices.html:21
msgid "Supplier Pricing"
msgstr ""
#: part/templates/part/part_pricing.html:26
#: part/templates/part/part_pricing.html:52
-#: part/templates/part/part_pricing.html:85
-#: part/templates/part/part_pricing.html:100 part/templates/part/prices.html:25
-#: part/templates/part/prices.html:52 part/templates/part/prices.html:84
-#: part/templates/part/prices.html:101
+#: part/templates/part/part_pricing.html:100
+#: part/templates/part/part_pricing.html:115 part/templates/part/prices.html:25
+#: part/templates/part/prices.html:52 part/templates/part/prices.html:103
+#: part/templates/part/prices.html:120
msgid "Unit Cost"
msgstr ""
#: part/templates/part/part_pricing.html:32
#: part/templates/part/part_pricing.html:58
-#: part/templates/part/part_pricing.html:89
-#: part/templates/part/part_pricing.html:104 part/templates/part/prices.html:32
-#: part/templates/part/prices.html:59 part/templates/part/prices.html:89
-#: part/templates/part/prices.html:106
+#: part/templates/part/part_pricing.html:104
+#: part/templates/part/part_pricing.html:119 part/templates/part/prices.html:32
+#: part/templates/part/prices.html:59 part/templates/part/prices.html:108
+#: part/templates/part/prices.html:125
msgid "Total Cost"
msgstr ""
#: part/templates/part/part_pricing.html:40 part/templates/part/prices.html:40
-#: templates/js/translated/bom.js:291
+#: templates/js/translated/bom.js:307
msgid "No supplier pricing available"
msgstr ""
#: part/templates/part/part_pricing.html:48 part/templates/part/prices.html:49
-#: part/templates/part/prices.html:225
+#: part/templates/part/prices.html:243
msgid "BOM Pricing"
msgstr ""
-#: part/templates/part/part_pricing.html:66 part/templates/part/prices.html:67
+#: part/templates/part/part_pricing.html:65 part/templates/part/prices.html:69
+msgid "Unit Purchase Price"
+msgstr ""
+
+#: part/templates/part/part_pricing.html:71 part/templates/part/prices.html:76
+msgid "Total Purchase Price"
+msgstr ""
+
+#: part/templates/part/part_pricing.html:81 part/templates/part/prices.html:86
msgid "Note: BOM pricing is incomplete for this part"
msgstr ""
-#: part/templates/part/part_pricing.html:73 part/templates/part/prices.html:74
+#: part/templates/part/part_pricing.html:88 part/templates/part/prices.html:93
msgid "No BOM pricing available"
msgstr ""
-#: part/templates/part/part_pricing.html:82 part/templates/part/prices.html:83
+#: part/templates/part/part_pricing.html:97 part/templates/part/prices.html:102
msgid "Internal Price"
msgstr ""
-#: part/templates/part/part_pricing.html:113
-#: part/templates/part/prices.html:115
+#: part/templates/part/part_pricing.html:128
+#: part/templates/part/prices.html:134
msgid "No pricing information is available for this part."
msgstr ""
@@ -4919,7 +5053,7 @@ msgstr ""
#: part/templates/part/partial_delete.html:7
#, python-format
-msgid "Are you sure you want to delete part '%(full_name)s'?"
+msgid "Are you sure you want to delete part '%(full_name)s'?"
msgstr ""
#: part/templates/part/partial_delete.html:12
@@ -4963,53 +5097,53 @@ msgstr ""
msgid "Show BOM cost"
msgstr ""
-#: part/templates/part/prices.html:98
+#: part/templates/part/prices.html:117
msgid "Show sale cost"
msgstr ""
-#: part/templates/part/prices.html:99
+#: part/templates/part/prices.html:118
msgid "Show sale price"
msgstr ""
-#: part/templates/part/prices.html:121
+#: part/templates/part/prices.html:140
msgid "Calculation parameters"
msgstr ""
-#: part/templates/part/prices.html:136 templates/js/translated/bom.js:285
+#: part/templates/part/prices.html:155 templates/js/translated/bom.js:301
msgid "Supplier Cost"
msgstr ""
-#: part/templates/part/prices.html:137 part/templates/part/prices.html:158
-#: part/templates/part/prices.html:183 part/templates/part/prices.html:213
-#: part/templates/part/prices.html:239 part/templates/part/prices.html:267
+#: part/templates/part/prices.html:156 part/templates/part/prices.html:177
+#: part/templates/part/prices.html:201 part/templates/part/prices.html:231
+#: part/templates/part/prices.html:257 part/templates/part/prices.html:285
msgid "Jump to overview"
msgstr ""
-#: part/templates/part/prices.html:162
+#: part/templates/part/prices.html:181
msgid "Stock Pricing"
msgstr ""
-#: part/templates/part/prices.html:172
+#: part/templates/part/prices.html:190
msgid "No stock pricing history is available for this part."
msgstr ""
-#: part/templates/part/prices.html:182
+#: part/templates/part/prices.html:200
msgid "Internal Cost"
msgstr ""
-#: part/templates/part/prices.html:197 part/views.py:1793
+#: part/templates/part/prices.html:215 part/views.py:1801
msgid "Add Internal Price Break"
msgstr ""
-#: part/templates/part/prices.html:212
+#: part/templates/part/prices.html:230
msgid "BOM Cost"
msgstr ""
-#: part/templates/part/prices.html:238
+#: part/templates/part/prices.html:256
msgid "Sale Cost"
msgstr ""
-#: part/templates/part/prices.html:278
+#: part/templates/part/prices.html:296
msgid "No sale pice history available for this part."
msgstr ""
@@ -5017,8 +5151,8 @@ msgstr ""
msgid "Set category for the following parts"
msgstr ""
-#: part/templates/part/stock_count.html:7 templates/js/translated/bom.js:259
-#: templates/js/translated/part.js:623 templates/js/translated/part.js:810
+#: part/templates/part/stock_count.html:7 templates/js/translated/bom.js:278
+#: templates/js/translated/part.js:755 templates/js/translated/part.js:957
msgid "No Stock"
msgstr ""
@@ -5032,10 +5166,10 @@ msgstr ""
#: part/templates/part/variant_part.html:10
#, python-format
-msgid "Create a new variant of template '%(full_name)s'."
+msgid "Create a new variant of template '%(full_name)s'."
msgstr ""
-#: part/templatetags/inventree_extras.py:105
+#: part/templatetags/inventree_extras.py:106
msgid "Unknown database"
msgstr ""
@@ -5116,51 +5250,51 @@ msgstr ""
msgid "Part Pricing"
msgstr ""
-#: part/views.py:1429
+#: part/views.py:1437
msgid "Create Part Parameter Template"
msgstr ""
-#: part/views.py:1439
+#: part/views.py:1447
msgid "Edit Part Parameter Template"
msgstr ""
-#: part/views.py:1446
+#: part/views.py:1454
msgid "Delete Part Parameter Template"
msgstr ""
-#: part/views.py:1494 templates/js/translated/part.js:179
+#: part/views.py:1502 templates/js/translated/part.js:303
msgid "Edit Part Category"
msgstr ""
-#: part/views.py:1532
+#: part/views.py:1540
msgid "Delete Part Category"
msgstr ""
-#: part/views.py:1538
+#: part/views.py:1546
msgid "Part category was deleted"
msgstr ""
-#: part/views.py:1547
+#: part/views.py:1555
msgid "Create Category Parameter Template"
msgstr ""
-#: part/views.py:1648
+#: part/views.py:1656
msgid "Edit Category Parameter Template"
msgstr ""
-#: part/views.py:1704
+#: part/views.py:1712
msgid "Delete Category Parameter Template"
msgstr ""
-#: part/views.py:1726
+#: part/views.py:1734
msgid "Added new price break"
msgstr ""
-#: part/views.py:1802
+#: part/views.py:1810
msgid "Edit Internal Price Break"
msgstr ""
-#: part/views.py:1810
+#: part/views.py:1818
msgid "Delete Internal Price Break"
msgstr ""
@@ -5266,17 +5400,17 @@ msgid "Test Results"
msgstr ""
#: report/templates/report/inventree_test_report_base.html:88
-#: stock/models.py:1796
+#: stock/models.py:1807
msgid "Test"
msgstr ""
#: report/templates/report/inventree_test_report_base.html:89
-#: stock/models.py:1802
+#: stock/models.py:1813
msgid "Result"
msgstr ""
#: report/templates/report/inventree_test_report_base.html:92
-#: templates/js/translated/order.js:279 templates/js/translated/stock.js:1382
+#: templates/js/translated/order.js:353 templates/js/translated/stock.js:1523
msgid "Date"
msgstr ""
@@ -5288,51 +5422,51 @@ msgstr ""
msgid "Fail"
msgstr ""
-#: stock/api.py:145
+#: stock/api.py:146
msgid "Request must contain list of stock items"
msgstr ""
-#: stock/api.py:153
+#: stock/api.py:154
msgid "Improperly formatted data"
msgstr ""
-#: stock/api.py:161
+#: stock/api.py:162
msgid "Each entry must contain a valid integer primary-key"
msgstr ""
-#: stock/api.py:167
+#: stock/api.py:168
msgid "Primary key does not match valid stock item"
msgstr ""
-#: stock/api.py:177
+#: stock/api.py:178
msgid "Invalid quantity value"
msgstr ""
-#: stock/api.py:182
+#: stock/api.py:183
msgid "Quantity must not be less than zero"
msgstr ""
-#: stock/api.py:210
+#: stock/api.py:211
#, python-brace-format
msgid "Updated stock for {n} items"
msgstr ""
-#: stock/api.py:246 stock/api.py:279
+#: stock/api.py:247 stock/api.py:280
msgid "Specified quantity exceeds stock quantity"
msgstr ""
-#: stock/api.py:269
+#: stock/api.py:270
msgid "Valid location must be specified"
msgstr ""
-#: stock/api.py:289
+#: stock/api.py:290
#, python-brace-format
msgid "Moved {n} parts to {loc}"
msgstr ""
-#: stock/forms.py:79 stock/forms.py:307 stock/models.py:550
+#: stock/forms.py:79 stock/forms.py:307 stock/models.py:556
#: stock/templates/stock/item_base.html:395
-#: templates/js/translated/stock.js:1025
+#: templates/js/translated/stock.js:967
msgid "Expiry Date"
msgstr ""
@@ -5384,258 +5518,266 @@ msgstr ""
msgid "Confirm removal of installed stock items"
msgstr ""
-#: stock/models.py:57 stock/models.py:587
+#: stock/models.py:57 stock/models.py:593
msgid "Owner"
msgstr ""
-#: stock/models.py:58 stock/models.py:588
+#: stock/models.py:58 stock/models.py:594
msgid "Select Owner"
msgstr ""
-#: stock/models.py:316
+#: stock/models.py:322
msgid "StockItem with this serial number already exists"
msgstr ""
-#: stock/models.py:352
+#: stock/models.py:358
#, python-brace-format
msgid "Part type ('{pf}') must be {pe}"
msgstr ""
-#: stock/models.py:362 stock/models.py:371
+#: stock/models.py:368 stock/models.py:377
msgid "Quantity must be 1 for item with a serial number"
msgstr ""
-#: stock/models.py:363
+#: stock/models.py:369
msgid "Serial number cannot be set if quantity greater than 1"
msgstr ""
-#: stock/models.py:385
+#: stock/models.py:391
msgid "Item cannot belong to itself"
msgstr ""
-#: stock/models.py:391
+#: stock/models.py:397
msgid "Item must have a build reference if is_building=True"
msgstr ""
-#: stock/models.py:398
+#: stock/models.py:404
msgid "Build reference does not point to the same part object"
msgstr ""
-#: stock/models.py:440
+#: stock/models.py:446
msgid "Parent Stock Item"
msgstr ""
-#: stock/models.py:449
+#: stock/models.py:455
msgid "Base part"
msgstr ""
-#: stock/models.py:458
+#: stock/models.py:464
msgid "Select a matching supplier part for this stock item"
msgstr ""
-#: stock/models.py:463 stock/templates/stock/stock_app_base.html:8
+#: stock/models.py:469 stock/templates/stock/stock_app_base.html:8
msgid "Stock Location"
msgstr ""
-#: stock/models.py:466
+#: stock/models.py:472
msgid "Where is this stock item located?"
msgstr ""
-#: stock/models.py:473
+#: stock/models.py:479
msgid "Packaging this stock item is stored in"
msgstr ""
-#: stock/models.py:478 stock/templates/stock/item_base.html:284
+#: stock/models.py:484 stock/templates/stock/item_base.html:284
msgid "Installed In"
msgstr ""
-#: stock/models.py:481
+#: stock/models.py:487
msgid "Is this item installed in another item?"
msgstr ""
-#: stock/models.py:497
+#: stock/models.py:503
msgid "Serial number for this item"
msgstr ""
-#: stock/models.py:509
+#: stock/models.py:515
msgid "Batch code for this stock item"
msgstr ""
-#: stock/models.py:513
+#: stock/models.py:519
msgid "Stock Quantity"
msgstr ""
-#: stock/models.py:522
+#: stock/models.py:528
msgid "Source Build"
msgstr ""
-#: stock/models.py:524
+#: stock/models.py:530
msgid "Build for this stock item"
msgstr ""
-#: stock/models.py:535
+#: stock/models.py:541
msgid "Source Purchase Order"
msgstr ""
-#: stock/models.py:538
+#: stock/models.py:544
msgid "Purchase order for this stock item"
msgstr ""
-#: stock/models.py:544
+#: stock/models.py:550
msgid "Destination Sales Order"
msgstr ""
-#: stock/models.py:551
+#: stock/models.py:557
msgid "Expiry date for stock item. Stock will be considered expired after this date"
msgstr ""
-#: stock/models.py:564
+#: stock/models.py:570
msgid "Delete on deplete"
msgstr ""
-#: stock/models.py:564
+#: stock/models.py:570
msgid "Delete this Stock Item when stock is depleted"
msgstr ""
-#: stock/models.py:574 stock/templates/stock/item.html:98
+#: stock/models.py:580 stock/templates/stock/item.html:99
#: stock/templates/stock/navbar.html:54
msgid "Stock Item Notes"
msgstr ""
-#: stock/models.py:583
+#: stock/models.py:589
msgid "Single unit purchase price at time of purchase"
msgstr ""
-#: stock/models.py:1051
-msgid "Part is not set as trackable"
+#: stock/models.py:599
+msgid "Scheduled for deletion"
msgstr ""
-#: stock/models.py:1057
-msgid "Quantity must be integer"
+#: stock/models.py:600
+msgid "This StockItem will be deleted by the background worker"
msgstr ""
#: stock/models.py:1063
+msgid "Part is not set as trackable"
+msgstr ""
+
+#: stock/models.py:1069
+msgid "Quantity must be integer"
+msgstr ""
+
+#: stock/models.py:1075
#, python-brace-format
msgid "Quantity must not exceed available stock quantity ({n})"
msgstr ""
-#: stock/models.py:1066
+#: stock/models.py:1078
msgid "Serial numbers must be a list of integers"
msgstr ""
-#: stock/models.py:1069
+#: stock/models.py:1081
msgid "Quantity does not match serial numbers"
msgstr ""
-#: stock/models.py:1076
+#: stock/models.py:1088
#, python-brace-format
msgid "Serial numbers already exist: {exists}"
msgstr ""
-#: stock/models.py:1234
+#: stock/models.py:1246
msgid "StockItem cannot be moved as it is not in stock"
msgstr ""
-#: stock/models.py:1716
+#: stock/models.py:1727
msgid "Entry notes"
msgstr ""
-#: stock/models.py:1773
+#: stock/models.py:1784
msgid "Value must be provided for this test"
msgstr ""
-#: stock/models.py:1779
+#: stock/models.py:1790
msgid "Attachment must be uploaded for this test"
msgstr ""
-#: stock/models.py:1797
+#: stock/models.py:1808
msgid "Test name"
msgstr ""
-#: stock/models.py:1803 templates/js/translated/table_filters.js:231
+#: stock/models.py:1814 templates/js/translated/table_filters.js:244
msgid "Test result"
msgstr ""
-#: stock/models.py:1809
+#: stock/models.py:1820
msgid "Test output value"
msgstr ""
-#: stock/models.py:1816
+#: stock/models.py:1827
msgid "Test result attachment"
msgstr ""
-#: stock/models.py:1822
+#: stock/models.py:1833
msgid "Test notes"
msgstr ""
-#: stock/templates/stock/item.html:16
+#: stock/templates/stock/item.html:17
msgid "Stock Tracking Information"
msgstr ""
-#: stock/templates/stock/item.html:29
+#: stock/templates/stock/item.html:30
msgid "New Entry"
msgstr ""
-#: stock/templates/stock/item.html:42
+#: stock/templates/stock/item.html:43
msgid "Child Stock Items"
msgstr ""
-#: stock/templates/stock/item.html:49
+#: stock/templates/stock/item.html:50
msgid "This stock item does not have any child items"
msgstr ""
-#: stock/templates/stock/item.html:57 stock/templates/stock/navbar.html:19
+#: stock/templates/stock/item.html:58 stock/templates/stock/navbar.html:19
#: stock/templates/stock/navbar.html:22
msgid "Test Data"
msgstr ""
-#: stock/templates/stock/item.html:65
+#: stock/templates/stock/item.html:66
msgid "Delete Test Data"
msgstr ""
-#: stock/templates/stock/item.html:69
+#: stock/templates/stock/item.html:70
msgid "Add Test Data"
msgstr ""
-#: stock/templates/stock/item.html:72 stock/templates/stock/item_base.html:95
+#: stock/templates/stock/item.html:73 stock/templates/stock/item_base.html:95
msgid "Test Report"
msgstr ""
-#: stock/templates/stock/item.html:119 stock/templates/stock/navbar.html:27
+#: stock/templates/stock/item.html:120 stock/templates/stock/navbar.html:27
msgid "Installed Stock Items"
msgstr ""
-#: stock/templates/stock/item.html:124 stock/views.py:534
+#: stock/templates/stock/item.html:125 stock/views.py:534
msgid "Install Stock Item"
msgstr ""
-#: stock/templates/stock/item.html:299 stock/templates/stock/item.html:324
+#: stock/templates/stock/item.html:301 stock/templates/stock/item.html:326
msgid "Add Test Result"
msgstr ""
-#: stock/templates/stock/item.html:344
+#: stock/templates/stock/item.html:346
msgid "Edit Test Result"
msgstr ""
-#: stock/templates/stock/item.html:358
+#: stock/templates/stock/item.html:360
msgid "Delete Test Result"
msgstr ""
#: stock/templates/stock/item_base.html:33
#: stock/templates/stock/item_base.html:399
-#: templates/js/translated/table_filters.js:212
+#: templates/js/translated/table_filters.js:225
msgid "Expired"
msgstr ""
#: stock/templates/stock/item_base.html:43
#: stock/templates/stock/item_base.html:401
-#: templates/js/translated/table_filters.js:218
+#: templates/js/translated/table_filters.js:231
msgid "Stale"
msgstr ""
#: stock/templates/stock/item_base.html:80
-#: templates/js/translated/barcode.js:309
-#: templates/js/translated/barcode.js:314
+#: templates/js/translated/barcode.js:331
+#: templates/js/translated/barcode.js:336
msgid "Unlink Barcode"
msgstr ""
@@ -5768,7 +5910,7 @@ msgid "next page"
msgstr ""
#: stock/templates/stock/item_base.html:303
-#: templates/js/translated/build.js:628
+#: templates/js/translated/build.js:651
msgid "No location set"
msgstr ""
@@ -5795,7 +5937,7 @@ msgid "This StockItem expires on %(item.expiry_date)s"
msgstr ""
#: stock/templates/stock/item_base.html:408
-#: templates/js/translated/stock.js:1032
+#: templates/js/translated/stock.js:980
msgid "Last Updated"
msgstr ""
@@ -5825,7 +5967,7 @@ msgstr ""
#: stock/templates/stock/item_delete.html:12
#, python-format
-msgid "This will remove %(qty)s units of %(full_name)s from stock."
+msgid "This will remove %(qty)s units of %(full_name)s from stock."
msgstr ""
#: stock/templates/stock/item_install.html:8
@@ -5975,7 +6117,7 @@ msgstr ""
#: stock/templates/stock/stockitem_convert.html:8
#, python-format
-msgid "This stock item is current an instance of %(part)s"
+msgid "This stock item is current an instance of %(part)s"
msgstr ""
#: stock/templates/stock/stockitem_convert.html:9
@@ -6039,7 +6181,7 @@ msgstr ""
msgid "Uninstall Stock Items"
msgstr ""
-#: stock/views.py:780 templates/js/translated/stock.js:282
+#: stock/views.py:780 templates/js/translated/stock.js:353
msgid "Confirm stock adjustment"
msgstr ""
@@ -6059,7 +6201,7 @@ msgstr ""
msgid "Serialize Stock"
msgstr ""
-#: stock/views.py:1143 templates/js/translated/build.js:365
+#: stock/views.py:1143 templates/js/translated/build.js:392
msgid "Create new Stock Item"
msgstr ""
@@ -6171,11 +6313,11 @@ msgstr ""
msgid "Enter a search query"
msgstr ""
-#: templates/InvenTree/search.html:268 templates/js/translated/stock.js:629
+#: templates/InvenTree/search.html:268 templates/js/translated/stock.js:699
msgid "Shipped to customer"
msgstr ""
-#: templates/InvenTree/search.html:271 templates/js/translated/stock.js:639
+#: templates/InvenTree/search.html:271 templates/js/translated/stock.js:709
msgid "No stock location set"
msgstr ""
@@ -6240,7 +6382,7 @@ msgstr ""
#: templates/InvenTree/settings/navbar.html:27
#: templates/InvenTree/settings/navbar.html:29
-#: templates/js/translated/tables.js:351 templates/search_form.html:6
+#: templates/js/translated/tables.js:366 templates/search_form.html:6
#: templates/search_form.html:8
msgid "Search"
msgstr ""
@@ -6257,7 +6399,7 @@ msgstr ""
#: templates/InvenTree/settings/navbar.html:46
#: templates/InvenTree/settings/navbar.html:48
-#: templates/InvenTree/settings/settings.html:8 templates/navbar.html:84
+#: templates/InvenTree/settings/settings.html:8 templates/navbar.html:94
msgid "Settings"
msgstr ""
@@ -6332,16 +6474,16 @@ msgid "No category parameter templates found"
msgstr ""
#: templates/InvenTree/settings/settings.html:174
-#: templates/InvenTree/settings/settings.html:271
+#: templates/InvenTree/settings/settings.html:273
msgid "Edit Template"
msgstr ""
#: templates/InvenTree/settings/settings.html:175
-#: templates/InvenTree/settings/settings.html:272
+#: templates/InvenTree/settings/settings.html:274
msgid "Delete Template"
msgstr ""
-#: templates/InvenTree/settings/settings.html:251
+#: templates/InvenTree/settings/settings.html:253
msgid "No part parameter templates found"
msgstr ""
@@ -6358,6 +6500,7 @@ msgid "Account Settings"
msgstr ""
#: templates/InvenTree/settings/user.html:15
+#: templates/js/translated/helpers.js:26
msgid "Edit"
msgstr ""
@@ -6436,65 +6579,69 @@ msgstr ""
msgid "InvenTree Version"
msgstr ""
-#: templates/about.html:26
+#: templates/about.html:27
+msgid "Development Version"
+msgstr ""
+
+#: templates/about.html:30
msgid "Up to Date"
msgstr ""
-#: templates/about.html:28
+#: templates/about.html:32
msgid "Update Available"
msgstr ""
-#: templates/about.html:34
-msgid "API Version"
-msgstr ""
-
-#: templates/about.html:39
-msgid "Python Version"
-msgstr ""
-
-#: templates/about.html:44
-msgid "Django Version"
-msgstr ""
-
-#: templates/about.html:51
+#: templates/about.html:42
msgid "Commit Hash"
msgstr ""
-#: templates/about.html:58
+#: templates/about.html:49
msgid "Commit Date"
msgstr ""
-#: templates/about.html:63
+#: templates/about.html:55
msgid "InvenTree Documentation"
msgstr ""
-#: templates/about.html:68
+#: templates/about.html:60
+msgid "API Version"
+msgstr ""
+
+#: templates/about.html:65
+msgid "Python Version"
+msgstr ""
+
+#: templates/about.html:70
+msgid "Django Version"
+msgstr ""
+
+#: templates/about.html:75
msgid "View Code on GitHub"
msgstr ""
-#: templates/about.html:73
+#: templates/about.html:80
msgid "Credits"
msgstr ""
-#: templates/about.html:78
+#: templates/about.html:85
msgid "Mobile App"
msgstr ""
-#: templates/about.html:83
+#: templates/about.html:90
msgid "Submit Bug Report"
msgstr ""
-#: templates/about.html:90 templates/clip.html:4
+#: templates/about.html:97 templates/clip.html:4
msgid "copy to clipboard"
msgstr ""
-#: templates/about.html:90
+#: templates/about.html:97
msgid "copy version information"
msgstr ""
-#: templates/about.html:100 templates/js/translated/modals.js:33
-#: templates/js/translated/modals.js:567 templates/js/translated/modals.js:661
-#: templates/js/translated/modals.js:957 templates/modals.html:29
+#: templates/about.html:107 templates/js/translated/modals.js:50
+#: templates/js/translated/modals.js:584 templates/js/translated/modals.js:678
+#: templates/js/translated/modals.js:971 templates/modals.html:29
#: templates/modals.html:54
msgid "Close"
msgstr ""
@@ -6515,1358 +6662,1390 @@ msgstr ""
msgid "Remote image must not exceed maximum allowable file size"
msgstr ""
-#: templates/js/report.js:47 templates/js/translated/report.js:47
+#: templates/js/report.js:47 templates/js/translated/report.js:67
msgid "items selected"
msgstr ""
-#: templates/js/report.js:55 templates/js/translated/report.js:55
+#: templates/js/report.js:55 templates/js/translated/report.js:75
msgid "Select Report Template"
msgstr ""
-#: templates/js/report.js:70 templates/js/translated/report.js:70
+#: templates/js/report.js:70 templates/js/translated/report.js:90
msgid "Select Test Report Template"
msgstr ""
-#: templates/js/report.js:98 templates/js/translated/label.js:10
-#: templates/js/translated/report.js:98 templates/js/translated/stock.js:244
+#: templates/js/report.js:98 templates/js/translated/label.js:29
+#: templates/js/translated/report.js:118 templates/js/translated/stock.js:313
msgid "Select Stock Items"
msgstr ""
-#: templates/js/report.js:99 templates/js/translated/report.js:99
+#: templates/js/report.js:99 templates/js/translated/report.js:119
msgid "Stock item(s) must be selected before printing reports"
msgstr ""
#: templates/js/report.js:116 templates/js/report.js:169
#: templates/js/report.js:223 templates/js/report.js:277
-#: templates/js/report.js:331 templates/js/translated/report.js:116
-#: templates/js/translated/report.js:169 templates/js/translated/report.js:223
-#: templates/js/translated/report.js:277 templates/js/translated/report.js:331
+#: templates/js/report.js:331 templates/js/translated/report.js:136
+#: templates/js/translated/report.js:189 templates/js/translated/report.js:243
+#: templates/js/translated/report.js:297 templates/js/translated/report.js:351
msgid "No Reports Found"
msgstr ""
-#: templates/js/report.js:117 templates/js/translated/report.js:117
+#: templates/js/report.js:117 templates/js/translated/report.js:137
msgid "No report templates found which match selected stock item(s)"
msgstr ""
-#: templates/js/report.js:152 templates/js/translated/report.js:152
+#: templates/js/report.js:152 templates/js/translated/report.js:172
msgid "Select Builds"
msgstr ""
-#: templates/js/report.js:153 templates/js/translated/report.js:153
+#: templates/js/report.js:153 templates/js/translated/report.js:173
msgid "Build(s) must be selected before printing reports"
msgstr ""
-#: templates/js/report.js:170 templates/js/translated/report.js:170
+#: templates/js/report.js:170 templates/js/translated/report.js:190
msgid "No report templates found which match selected build(s)"
msgstr ""
-#: templates/js/report.js:205 templates/js/translated/label.js:115
-#: templates/js/translated/report.js:205
+#: templates/js/report.js:205 templates/js/translated/label.js:134
+#: templates/js/translated/report.js:225
msgid "Select Parts"
msgstr ""
-#: templates/js/report.js:206 templates/js/translated/report.js:206
+#: templates/js/report.js:206 templates/js/translated/report.js:226
msgid "Part(s) must be selected before printing reports"
msgstr ""
-#: templates/js/report.js:224 templates/js/translated/report.js:224
+#: templates/js/report.js:224 templates/js/translated/report.js:244
msgid "No report templates found which match selected part(s)"
msgstr ""
-#: templates/js/report.js:259 templates/js/translated/report.js:259
+#: templates/js/report.js:259 templates/js/translated/report.js:279
msgid "Select Purchase Orders"
msgstr ""
-#: templates/js/report.js:260 templates/js/translated/report.js:260
+#: templates/js/report.js:260 templates/js/translated/report.js:280
msgid "Purchase Order(s) must be selected before printing report"
msgstr ""
#: templates/js/report.js:278 templates/js/report.js:332
-#: templates/js/translated/report.js:278 templates/js/translated/report.js:332
+#: templates/js/translated/report.js:298 templates/js/translated/report.js:352
msgid "No report templates found which match selected orders"
msgstr ""
-#: templates/js/report.js:313 templates/js/translated/report.js:313
+#: templates/js/report.js:313 templates/js/translated/report.js:333
msgid "Select Sales Orders"
msgstr ""
-#: templates/js/report.js:314 templates/js/translated/report.js:314
+#: templates/js/report.js:314 templates/js/translated/report.js:334
msgid "Sales Order(s) must be selected before printing report"
msgstr ""
-#: templates/js/translated/api.js:161 templates/js/translated/modals.js:1027
+#: templates/js/translated/api.js:174 templates/js/translated/modals.js:1041
msgid "No Response"
msgstr ""
-#: templates/js/translated/api.js:162 templates/js/translated/modals.js:1028
+#: templates/js/translated/api.js:175 templates/js/translated/modals.js:1042
msgid "No response from the InvenTree server"
msgstr ""
-#: templates/js/translated/api.js:167
+#: templates/js/translated/api.js:181
msgid "Error 400: Bad request"
msgstr ""
-#: templates/js/translated/api.js:168
+#: templates/js/translated/api.js:182
msgid "API request returned error code 400"
msgstr ""
-#: templates/js/translated/api.js:171 templates/js/translated/modals.js:1037
+#: templates/js/translated/api.js:186 templates/js/translated/modals.js:1051
msgid "Error 401: Not Authenticated"
msgstr ""
-#: templates/js/translated/api.js:172 templates/js/translated/modals.js:1038
+#: templates/js/translated/api.js:187 templates/js/translated/modals.js:1052
msgid "Authentication credentials not supplied"
msgstr ""
-#: templates/js/translated/api.js:175 templates/js/translated/modals.js:1042
+#: templates/js/translated/api.js:191 templates/js/translated/modals.js:1056
msgid "Error 403: Permission Denied"
msgstr ""
-#: templates/js/translated/api.js:176 templates/js/translated/modals.js:1043
+#: templates/js/translated/api.js:192 templates/js/translated/modals.js:1057
msgid "You do not have the required permissions to access this function"
msgstr ""
-#: templates/js/translated/api.js:179 templates/js/translated/modals.js:1047
+#: templates/js/translated/api.js:196 templates/js/translated/modals.js:1061
msgid "Error 404: Resource Not Found"
msgstr ""
-#: templates/js/translated/api.js:180 templates/js/translated/modals.js:1048
+#: templates/js/translated/api.js:197 templates/js/translated/modals.js:1062
msgid "The requested resource could not be located on the server"
msgstr ""
-#: templates/js/translated/api.js:183 templates/js/translated/modals.js:1052
+#: templates/js/translated/api.js:201 templates/js/translated/modals.js:1066
msgid "Error 408: Timeout"
msgstr ""
-#: templates/js/translated/api.js:184 templates/js/translated/modals.js:1053
+#: templates/js/translated/api.js:202 templates/js/translated/modals.js:1067
msgid "Connection timeout while requesting data from server"
msgstr ""
-#: templates/js/translated/api.js:187
+#: templates/js/translated/api.js:205
msgid "Unhandled Error Code"
msgstr ""
-#: templates/js/translated/api.js:188
+#: templates/js/translated/api.js:206
msgid "Error code"
msgstr ""
-#: templates/js/translated/attachment.js:16
+#: templates/js/translated/attachment.js:27
msgid "No attachments found"
msgstr ""
-#: templates/js/translated/attachment.js:56
+#: templates/js/translated/attachment.js:91
msgid "Upload Date"
msgstr ""
-#: templates/js/translated/attachment.js:69
+#: templates/js/translated/attachment.js:104
msgid "Edit attachment"
msgstr ""
-#: templates/js/translated/attachment.js:76
+#: templates/js/translated/attachment.js:111
msgid "Delete attachment"
msgstr ""
-#: templates/js/translated/barcode.js:8
+#: templates/js/translated/barcode.js:30
msgid "Scan barcode data here using wedge scanner"
msgstr ""
-#: templates/js/translated/barcode.js:10
+#: templates/js/translated/barcode.js:32
msgid "Enter barcode data"
msgstr ""
-#: templates/js/translated/barcode.js:14
+#: templates/js/translated/barcode.js:36
msgid "Barcode"
msgstr ""
-#: templates/js/translated/barcode.js:32
+#: templates/js/translated/barcode.js:54
msgid "Enter optional notes for stock transfer"
msgstr ""
-#: templates/js/translated/barcode.js:33
+#: templates/js/translated/barcode.js:55
msgid "Enter notes"
msgstr ""
-#: templates/js/translated/barcode.js:71
+#: templates/js/translated/barcode.js:93
msgid "Server error"
msgstr ""
-#: templates/js/translated/barcode.js:92
+#: templates/js/translated/barcode.js:114
msgid "Unknown response from server"
msgstr ""
-#: templates/js/translated/barcode.js:119
-#: templates/js/translated/modals.js:1017
+#: templates/js/translated/barcode.js:141
+#: templates/js/translated/modals.js:1031
msgid "Invalid server response"
msgstr ""
-#: templates/js/translated/barcode.js:212
+#: templates/js/translated/barcode.js:234
msgid "Scan barcode data below"
msgstr ""
-#: templates/js/translated/barcode.js:270
+#: templates/js/translated/barcode.js:281 templates/navbar.html:65
+msgid "Scan Barcode"
+msgstr ""
+
+#: templates/js/translated/barcode.js:292
msgid "No URL in response"
msgstr ""
-#: templates/js/translated/barcode.js:288
+#: templates/js/translated/barcode.js:310
msgid "Link Barcode to Stock Item"
msgstr ""
-#: templates/js/translated/barcode.js:311
+#: templates/js/translated/barcode.js:333
msgid "This will remove the association between this stock item and the barcode"
msgstr ""
-#: templates/js/translated/barcode.js:317
+#: templates/js/translated/barcode.js:339
msgid "Unlink"
msgstr ""
-#: templates/js/translated/barcode.js:376 templates/js/translated/stock.js:220
+#: templates/js/translated/barcode.js:398 templates/js/translated/stock.js:289
msgid "Remove stock item"
msgstr ""
-#: templates/js/translated/barcode.js:418
+#: templates/js/translated/barcode.js:440
msgid "Check Stock Items into Location"
msgstr ""
-#: templates/js/translated/barcode.js:422
-#: templates/js/translated/barcode.js:547
+#: templates/js/translated/barcode.js:444
+#: templates/js/translated/barcode.js:571
msgid "Check In"
msgstr ""
-#: templates/js/translated/barcode.js:462
-#: templates/js/translated/barcode.js:586
+#: templates/js/translated/barcode.js:486
+#: templates/js/translated/barcode.js:610
msgid "Error transferring stock"
msgstr ""
-#: templates/js/translated/barcode.js:481
+#: templates/js/translated/barcode.js:505
msgid "Stock Item already scanned"
msgstr ""
-#: templates/js/translated/barcode.js:485
+#: templates/js/translated/barcode.js:509
msgid "Stock Item already in this location"
msgstr ""
-#: templates/js/translated/barcode.js:492
+#: templates/js/translated/barcode.js:516
msgid "Added stock item"
msgstr ""
-#: templates/js/translated/barcode.js:499
+#: templates/js/translated/barcode.js:523
msgid "Barcode does not match Stock Item"
msgstr ""
-#: templates/js/translated/barcode.js:542
+#: templates/js/translated/barcode.js:566
msgid "Check Into Location"
msgstr ""
-#: templates/js/translated/barcode.js:605
+#: templates/js/translated/barcode.js:629
msgid "Barcode does not match a valid location"
msgstr ""
-#: templates/js/translated/bom.js:195 templates/js/translated/build.js:1152
+#: templates/js/translated/bom.js:215 templates/js/translated/build.js:1169
msgid "Open subassembly"
msgstr ""
-#: templates/js/translated/bom.js:269
+#: templates/js/translated/bom.js:287
msgid "Purchase Price Range"
msgstr ""
-#: templates/js/translated/bom.js:277
+#: templates/js/translated/bom.js:294
msgid "Purchase Price Average"
msgstr ""
-#: templates/js/translated/bom.js:326 templates/js/translated/bom.js:412
+#: templates/js/translated/bom.js:342 templates/js/translated/bom.js:428
msgid "View BOM"
msgstr ""
-#: templates/js/translated/bom.js:386
+#: templates/js/translated/bom.js:402
msgid "Validate BOM Item"
msgstr ""
-#: templates/js/translated/bom.js:388
+#: templates/js/translated/bom.js:404
msgid "This line has been validated"
msgstr ""
-#: templates/js/translated/bom.js:390 templates/js/translated/bom.js:555
+#: templates/js/translated/bom.js:406 templates/js/translated/bom.js:569
msgid "Edit BOM Item"
msgstr ""
-#: templates/js/translated/bom.js:392 templates/js/translated/bom.js:539
+#: templates/js/translated/bom.js:408 templates/js/translated/bom.js:554
msgid "Delete BOM Item"
msgstr ""
-#: templates/js/translated/bom.js:483 templates/js/translated/build.js:458
-#: templates/js/translated/build.js:1250
+#: templates/js/translated/bom.js:499 templates/js/translated/build.js:483
+#: templates/js/translated/build.js:1267
msgid "No BOM items found"
msgstr ""
-#: templates/js/translated/build.js:42
+#: templates/js/translated/build.js:69
msgid "Edit Build Order"
msgstr ""
-#: templates/js/translated/build.js:68
+#: templates/js/translated/build.js:95
msgid "Create Build Order"
msgstr ""
-#: templates/js/translated/build.js:100
+#: templates/js/translated/build.js:127
msgid "Auto-allocate stock items to this output"
msgstr ""
-#: templates/js/translated/build.js:108
+#: templates/js/translated/build.js:135
msgid "Unallocate stock from build output"
msgstr ""
-#: templates/js/translated/build.js:118
+#: templates/js/translated/build.js:145
msgid "Complete build output"
msgstr ""
-#: templates/js/translated/build.js:127
+#: templates/js/translated/build.js:154
msgid "Delete build output"
msgstr ""
-#: templates/js/translated/build.js:222
+#: templates/js/translated/build.js:249
msgid "No build order allocations found"
msgstr ""
-#: templates/js/translated/build.js:260 templates/js/translated/order.js:471
+#: templates/js/translated/build.js:287 templates/js/translated/order.js:813
msgid "Location not specified"
msgstr ""
-#: templates/js/translated/build.js:364 templates/stock_table.html:20
+#: templates/js/translated/build.js:391 templates/stock_table.html:20
msgid "New Stock Item"
msgstr ""
-#: templates/js/translated/build.js:679
+#: templates/js/translated/build.js:702
msgid "Required Part"
msgstr ""
-#: templates/js/translated/build.js:700
+#: templates/js/translated/build.js:723
msgid "Quantity Per"
msgstr ""
-#: templates/js/translated/build.js:770 templates/js/translated/build.js:1214
+#: templates/js/translated/build.js:793 templates/js/translated/build.js:1231
#: templates/stock_table.html:59
msgid "Order stock"
msgstr ""
-#: templates/js/translated/build.js:823
+#: templates/js/translated/build.js:846
msgid "No builds matching query"
msgstr ""
-#: templates/js/translated/build.js:840 templates/js/translated/part.js:711
-#: templates/js/translated/part.js:956 templates/js/translated/stock.js:883
-#: templates/js/translated/stock.js:1336
+#: templates/js/translated/build.js:863 templates/js/translated/part.js:845
+#: templates/js/translated/part.js:1123 templates/js/translated/stock.js:783
+#: templates/js/translated/stock.js:1477
msgid "Select"
msgstr ""
-#: templates/js/translated/build.js:860
+#: templates/js/translated/build.js:883
msgid "Build order is overdue"
msgstr ""
-#: templates/js/translated/build.js:924 templates/js/translated/stock.js:1558
+#: templates/js/translated/build.js:944 templates/js/translated/stock.js:1696
msgid "No user information"
msgstr ""
-#: templates/js/translated/build.js:939
+#: templates/js/translated/build.js:956
msgid "No information"
msgstr ""
-#: templates/js/translated/build.js:989
+#: templates/js/translated/build.js:1007
msgid "No parts allocated for"
msgstr ""
-#: templates/js/translated/company.js:34
+#: templates/js/translated/company.js:65
msgid "Add Manufacturer"
msgstr ""
-#: templates/js/translated/company.js:47 templates/js/translated/company.js:136
+#: templates/js/translated/company.js:78 templates/js/translated/company.js:176
msgid "Add Manufacturer Part"
msgstr ""
-#: templates/js/translated/company.js:59
+#: templates/js/translated/company.js:99
msgid "Edit Manufacturer Part"
msgstr ""
-#: templates/js/translated/company.js:68
+#: templates/js/translated/company.js:108
msgid "Delete Manufacturer Part"
msgstr ""
-#: templates/js/translated/company.js:124 templates/js/translated/order.js:58
+#: templates/js/translated/company.js:164 templates/js/translated/order.js:86
msgid "Add Supplier"
msgstr ""
-#: templates/js/translated/company.js:152
+#: templates/js/translated/company.js:192
msgid "Add Supplier Part"
msgstr ""
-#: templates/js/translated/company.js:162
+#: templates/js/translated/company.js:207
msgid "Edit Supplier Part"
msgstr ""
-#: templates/js/translated/company.js:172
+#: templates/js/translated/company.js:217
msgid "Delete Supplier Part"
msgstr ""
-#: templates/js/translated/company.js:219
+#: templates/js/translated/company.js:264
msgid "Edit Company"
msgstr ""
-#: templates/js/translated/company.js:240
+#: templates/js/translated/company.js:285
msgid "Add new Company"
msgstr ""
-#: templates/js/translated/company.js:317
+#: templates/js/translated/company.js:362
msgid "Parts Supplied"
msgstr ""
-#: templates/js/translated/company.js:326
+#: templates/js/translated/company.js:371
msgid "Parts Manufactured"
msgstr ""
-#: templates/js/translated/company.js:339
+#: templates/js/translated/company.js:385
msgid "No company information found"
msgstr ""
-#: templates/js/translated/company.js:357
+#: templates/js/translated/company.js:404
msgid "The following manufacturer parts will be deleted"
msgstr ""
-#: templates/js/translated/company.js:374
+#: templates/js/translated/company.js:421
msgid "Delete Manufacturer Parts"
msgstr ""
-#: templates/js/translated/company.js:427
+#: templates/js/translated/company.js:475
msgid "No manufacturer parts found"
msgstr ""
-#: templates/js/translated/company.js:446
-#: templates/js/translated/company.js:696 templates/js/translated/part.js:288
-#: templates/js/translated/part.js:373
+#: templates/js/translated/company.js:495
+#: templates/js/translated/company.js:751 templates/js/translated/part.js:416
+#: templates/js/translated/part.js:501
msgid "Template part"
msgstr ""
-#: templates/js/translated/company.js:450
-#: templates/js/translated/company.js:700 templates/js/translated/part.js:292
-#: templates/js/translated/part.js:377
+#: templates/js/translated/company.js:499
+#: templates/js/translated/company.js:755 templates/js/translated/part.js:420
+#: templates/js/translated/part.js:505
msgid "Assembled part"
msgstr ""
-#: templates/js/translated/company.js:574 templates/js/translated/part.js:462
+#: templates/js/translated/company.js:626 templates/js/translated/part.js:593
msgid "No parameters found"
msgstr ""
-#: templates/js/translated/company.js:610 templates/js/translated/part.js:503
+#: templates/js/translated/company.js:663 templates/js/translated/part.js:635
msgid "Edit parameter"
msgstr ""
-#: templates/js/translated/company.js:611 templates/js/translated/part.js:504
+#: templates/js/translated/company.js:664 templates/js/translated/part.js:636
msgid "Delete parameter"
msgstr ""
-#: templates/js/translated/company.js:630 templates/js/translated/part.js:521
+#: templates/js/translated/company.js:683 templates/js/translated/part.js:653
msgid "Edit Parameter"
msgstr ""
-#: templates/js/translated/company.js:641 templates/js/translated/part.js:533
+#: templates/js/translated/company.js:694 templates/js/translated/part.js:665
msgid "Delete Parameter"
msgstr ""
-#: templates/js/translated/company.js:677
+#: templates/js/translated/company.js:731
msgid "No supplier parts found"
msgstr ""
-#: templates/js/translated/filters.js:167
-#: templates/js/translated/filters.js:404
+#: templates/js/translated/filters.js:178
+#: templates/js/translated/filters.js:402
msgid "true"
msgstr ""
-#: templates/js/translated/filters.js:171
-#: templates/js/translated/filters.js:405
+#: templates/js/translated/filters.js:182
+#: templates/js/translated/filters.js:403
msgid "false"
msgstr ""
-#: templates/js/translated/filters.js:193
+#: templates/js/translated/filters.js:204
msgid "Select filter"
msgstr ""
-#: templates/js/translated/filters.js:268
+#: templates/js/translated/filters.js:279
msgid "Reload data"
msgstr ""
-#: templates/js/translated/filters.js:270
+#: templates/js/translated/filters.js:281
msgid "Add new filter"
msgstr ""
-#: templates/js/translated/filters.js:273
+#: templates/js/translated/filters.js:284
msgid "Clear all filters"
msgstr ""
-#: templates/js/translated/filters.js:303
+#: templates/js/translated/filters.js:312
msgid "Create filter"
msgstr ""
-#: templates/js/translated/forms.js:289 templates/js/translated/forms.js:302
-#: templates/js/translated/forms.js:314 templates/js/translated/forms.js:326
+#: templates/js/translated/forms.js:323 templates/js/translated/forms.js:336
+#: templates/js/translated/forms.js:348 templates/js/translated/forms.js:360
msgid "Action Prohibited"
msgstr ""
-#: templates/js/translated/forms.js:290
+#: templates/js/translated/forms.js:324
msgid "Create operation not allowed"
msgstr ""
-#: templates/js/translated/forms.js:303
+#: templates/js/translated/forms.js:337
msgid "Update operation not allowed"
msgstr ""
-#: templates/js/translated/forms.js:315
+#: templates/js/translated/forms.js:349
msgid "Delete operation not allowed"
msgstr ""
-#: templates/js/translated/forms.js:327
+#: templates/js/translated/forms.js:361
msgid "View operation not allowed"
msgstr ""
-#: templates/js/translated/forms.js:865 templates/modals.html:21
+#: templates/js/translated/forms.js:889 templates/modals.html:21
#: templates/modals.html:47
msgid "Form errors exist"
msgstr ""
-#: templates/js/translated/forms.js:1258
+#: templates/js/translated/forms.js:1379
msgid "Searching"
msgstr ""
-#: templates/js/translated/forms.js:1423
+#: templates/js/translated/forms.js:1593
msgid "Clear input"
msgstr ""
-#: templates/js/translated/label.js:11
-msgid "Stock item(s) must be selected before printing labels"
+#: templates/js/translated/helpers.js:19
+msgid "YES"
msgstr ""
-#: templates/js/translated/label.js:29 templates/js/translated/label.js:79
-#: templates/js/translated/label.js:134
-msgid "No Labels Found"
+#: templates/js/translated/helpers.js:21
+msgid "NO"
msgstr ""
#: templates/js/translated/label.js:30
+msgid "Stock item(s) must be selected before printing labels"
+msgstr ""
+
+#: templates/js/translated/label.js:48 templates/js/translated/label.js:98
+#: templates/js/translated/label.js:153
+msgid "No Labels Found"
+msgstr ""
+
+#: templates/js/translated/label.js:49
msgid "No labels found which match selected stock item(s)"
msgstr ""
-#: templates/js/translated/label.js:61
+#: templates/js/translated/label.js:80
msgid "Select Stock Locations"
msgstr ""
-#: templates/js/translated/label.js:62
+#: templates/js/translated/label.js:81
msgid "Stock location(s) must be selected before printing labels"
msgstr ""
-#: templates/js/translated/label.js:80
+#: templates/js/translated/label.js:99
msgid "No labels found which match selected stock location(s)"
msgstr ""
-#: templates/js/translated/label.js:116
+#: templates/js/translated/label.js:135
msgid "Part(s) must be selected before printing labels"
msgstr ""
-#: templates/js/translated/label.js:135
+#: templates/js/translated/label.js:154
msgid "No labels found which match the selected part(s)"
msgstr ""
-#: templates/js/translated/label.js:209
+#: templates/js/translated/label.js:228
msgid "stock items selected"
msgstr ""
-#: templates/js/translated/label.js:217
+#: templates/js/translated/label.js:236
msgid "Select Label"
msgstr ""
-#: templates/js/translated/label.js:232
+#: templates/js/translated/label.js:251
msgid "Select Label Template"
msgstr ""
-#: templates/js/translated/modals.js:59 templates/js/translated/modals.js:103
-#: templates/js/translated/modals.js:593
+#: templates/js/translated/modals.js:76 templates/js/translated/modals.js:120
+#: templates/js/translated/modals.js:610
msgid "Cancel"
msgstr ""
-#: templates/js/translated/modals.js:60 templates/js/translated/modals.js:102
-#: templates/js/translated/modals.js:660 templates/js/translated/modals.js:956
+#: templates/js/translated/modals.js:77 templates/js/translated/modals.js:119
+#: templates/js/translated/modals.js:677 templates/js/translated/modals.js:970
#: templates/modals.html:30 templates/modals.html:55
msgid "Submit"
msgstr ""
-#: templates/js/translated/modals.js:101
+#: templates/js/translated/modals.js:118
msgid "Form Title"
msgstr ""
-#: templates/js/translated/modals.js:380
+#: templates/js/translated/modals.js:397
msgid "Waiting for server..."
msgstr ""
-#: templates/js/translated/modals.js:539
+#: templates/js/translated/modals.js:556
msgid "Show Error Information"
msgstr ""
-#: templates/js/translated/modals.js:592
+#: templates/js/translated/modals.js:609
msgid "Accept"
msgstr ""
-#: templates/js/translated/modals.js:649
+#: templates/js/translated/modals.js:666
msgid "Loading Data"
msgstr ""
-#: templates/js/translated/modals.js:907
+#: templates/js/translated/modals.js:922
msgid "Invalid response from server"
msgstr ""
-#: templates/js/translated/modals.js:907
+#: templates/js/translated/modals.js:922
msgid "Form data missing from server response"
msgstr ""
-#: templates/js/translated/modals.js:920
+#: templates/js/translated/modals.js:934
msgid "Error posting form data"
msgstr ""
-#: templates/js/translated/modals.js:1017
+#: templates/js/translated/modals.js:1031
msgid "JSON response missing form data"
msgstr ""
-#: templates/js/translated/modals.js:1032
+#: templates/js/translated/modals.js:1046
msgid "Error 400: Bad Request"
msgstr ""
-#: templates/js/translated/modals.js:1033
+#: templates/js/translated/modals.js:1047
msgid "Server returned error code 400"
msgstr ""
-#: templates/js/translated/modals.js:1056
+#: templates/js/translated/modals.js:1070
msgid "Error requesting form data"
msgstr ""
-#: templates/js/translated/model_renderers.js:38
+#: templates/js/translated/model_renderers.js:40
msgid "Company ID"
msgstr ""
-#: templates/js/translated/model_renderers.js:78
+#: templates/js/translated/model_renderers.js:82
msgid "Location ID"
msgstr ""
-#: templates/js/translated/model_renderers.js:95
+#: templates/js/translated/model_renderers.js:99
msgid "Build ID"
msgstr ""
-#: templates/js/translated/model_renderers.js:114
+#: templates/js/translated/model_renderers.js:119
msgid "Part ID"
msgstr ""
-#: templates/js/translated/model_renderers.js:163
+#: templates/js/translated/model_renderers.js:171
msgid "Category ID"
msgstr ""
-#: templates/js/translated/model_renderers.js:199
+#: templates/js/translated/model_renderers.js:208
msgid "Manufacturer Part ID"
msgstr ""
-#: templates/js/translated/model_renderers.js:227
+#: templates/js/translated/model_renderers.js:237
msgid "Supplier Part ID"
msgstr ""
-#: templates/js/translated/order.js:17
+#: templates/js/translated/order.js:45
msgid "Add Customer"
msgstr ""
-#: templates/js/translated/order.js:42
+#: templates/js/translated/order.js:70
msgid "Create Sales Order"
msgstr ""
-#: templates/js/translated/order.js:222
+#: templates/js/translated/order.js:295
msgid "No purchase orders found"
msgstr ""
-#: templates/js/translated/order.js:246 templates/js/translated/order.js:341
+#: templates/js/translated/order.js:320 templates/js/translated/order.js:682
msgid "Order is overdue"
msgstr ""
-#: templates/js/translated/order.js:318
+#: templates/js/translated/order.js:452
+msgid "No line items found"
+msgstr ""
+
+#: templates/js/translated/order.js:617
+msgid "Delete line item"
+msgstr ""
+
+#: templates/js/translated/order.js:621
+msgid "Receive line item"
+msgstr ""
+
+#: templates/js/translated/order.js:658
msgid "No sales orders found"
msgstr ""
-#: templates/js/translated/order.js:355
+#: templates/js/translated/order.js:696
msgid "Invalid Customer"
msgstr ""
-#: templates/js/translated/order.js:432
+#: templates/js/translated/order.js:774
msgid "No sales order allocations found"
msgstr ""
-#: templates/js/translated/part.js:10
-msgid "YES"
-msgstr ""
-
-#: templates/js/translated/part.js:12
-msgid "NO"
-msgstr ""
-
-#: templates/js/translated/part.js:22
-msgid "Add Part Category"
-msgstr ""
-
-#: templates/js/translated/part.js:53
+#: templates/js/translated/part.js:49
msgid "Part Attributes"
msgstr ""
-#: templates/js/translated/part.js:96
+#: templates/js/translated/part.js:53
msgid "Part Creation Options"
msgstr ""
-#: templates/js/translated/part.js:102
-msgid "Initial Stock Quantity"
-msgstr ""
-
-#: templates/js/translated/part.js:103
-msgid "Initialize part stock with specified quantity"
-msgstr ""
-
-#: templates/js/translated/part.js:109
-msgid "Copy Category Parameters"
-msgstr ""
-
-#: templates/js/translated/part.js:110
-msgid "Copy parameter templates from selected part category"
-msgstr ""
-
-#: templates/js/translated/part.js:120
+#: templates/js/translated/part.js:57
msgid "Part Duplication Options"
msgstr ""
-#: templates/js/translated/part.js:131
-msgid "Copy Image"
+#: templates/js/translated/part.js:61
+msgid "Supplier Options"
msgstr ""
-#: templates/js/translated/part.js:132
-msgid "Copy image from original part"
+#: templates/js/translated/part.js:75
+msgid "Add Part Category"
msgstr ""
-#: templates/js/translated/part.js:138
-msgid "Copy BOM"
+#: templates/js/translated/part.js:159
+msgid "Create Initial Stock"
msgstr ""
-#: templates/js/translated/part.js:139
-msgid "Copy bill of materials from original part"
+#: templates/js/translated/part.js:160
+msgid "Create an initial stock item for this part"
msgstr ""
-#: templates/js/translated/part.js:145
-msgid "Copy Parameters"
+#: templates/js/translated/part.js:167
+msgid "Initial Stock Quantity"
msgstr ""
-#: templates/js/translated/part.js:146
-msgid "Copy parameter data from original part"
+#: templates/js/translated/part.js:168
+msgid "Specify initial stock quantity for this part"
msgstr ""
-#: templates/js/translated/part.js:158
-msgid "Parent part category"
+#: templates/js/translated/part.js:175 templates/js/translated/stock.js:330
+msgid "Select destination stock location"
+msgstr ""
+
+#: templates/js/translated/part.js:186
+msgid "Copy Category Parameters"
+msgstr ""
+
+#: templates/js/translated/part.js:187
+msgid "Copy parameter templates from selected part category"
+msgstr ""
+
+#: templates/js/translated/part.js:195
+msgid "Add Supplier Data"
msgstr ""
#: templates/js/translated/part.js:196
+msgid "Create initial supplier data for this part"
+msgstr ""
+
+#: templates/js/translated/part.js:252
+msgid "Copy Image"
+msgstr ""
+
+#: templates/js/translated/part.js:253
+msgid "Copy image from original part"
+msgstr ""
+
+#: templates/js/translated/part.js:260
+msgid "Copy BOM"
+msgstr ""
+
+#: templates/js/translated/part.js:261
+msgid "Copy bill of materials from original part"
+msgstr ""
+
+#: templates/js/translated/part.js:268
+msgid "Copy Parameters"
+msgstr ""
+
+#: templates/js/translated/part.js:269
+msgid "Copy parameter data from original part"
+msgstr ""
+
+#: templates/js/translated/part.js:282
+msgid "Parent part category"
+msgstr ""
+
+#: templates/js/translated/part.js:323
msgid "Edit Part"
msgstr ""
-#: templates/js/translated/part.js:280 templates/js/translated/part.js:365
+#: templates/js/translated/part.js:408 templates/js/translated/part.js:493
msgid "Trackable part"
msgstr ""
-#: templates/js/translated/part.js:284 templates/js/translated/part.js:369
+#: templates/js/translated/part.js:412 templates/js/translated/part.js:497
msgid "Virtual part"
msgstr ""
-#: templates/js/translated/part.js:296
+#: templates/js/translated/part.js:424
msgid "Starred part"
msgstr ""
-#: templates/js/translated/part.js:300
+#: templates/js/translated/part.js:428
msgid "Salable part"
msgstr ""
-#: templates/js/translated/part.js:414
+#: templates/js/translated/part.js:543
msgid "No variants found"
msgstr ""
-#: templates/js/translated/part.js:601 templates/js/translated/part.js:840
+#: templates/js/translated/part.js:732 templates/js/translated/part.js:994
msgid "No parts found"
msgstr ""
-#: templates/js/translated/part.js:779
+#: templates/js/translated/part.js:921
msgid "No category"
msgstr ""
-#: templates/js/translated/part.js:797
-#: templates/js/translated/table_filters.js:337
+#: templates/js/translated/part.js:944
+#: templates/js/translated/table_filters.js:350
msgid "Low stock"
msgstr ""
-#: templates/js/translated/part.js:981 templates/js/translated/stock.js:1360
+#: templates/js/translated/part.js:1148 templates/js/translated/stock.js:1501
msgid "Path"
msgstr ""
-#: templates/js/translated/part.js:1024
+#: templates/js/translated/part.js:1191
msgid "No test templates matching query"
msgstr ""
-#: templates/js/translated/part.js:1075 templates/js/translated/stock.js:443
+#: templates/js/translated/part.js:1242 templates/js/translated/stock.js:514
msgid "Edit test result"
msgstr ""
-#: templates/js/translated/part.js:1076 templates/js/translated/stock.js:444
+#: templates/js/translated/part.js:1243 templates/js/translated/stock.js:515
msgid "Delete test result"
msgstr ""
-#: templates/js/translated/part.js:1082
+#: templates/js/translated/part.js:1249
msgid "This test is defined for a parent part"
msgstr ""
-#: templates/js/translated/part.js:1107
+#: templates/js/translated/part.js:1274
#, python-brace-format
msgid "No ${human_name} information found"
msgstr ""
-#: templates/js/translated/part.js:1160
+#: templates/js/translated/part.js:1329
#, python-brace-format
msgid "Edit ${human_name}"
msgstr ""
-#: templates/js/translated/part.js:1161
+#: templates/js/translated/part.js:1330
#, python-brace-format
msgid "Delete ${human_name}"
msgstr ""
-#: templates/js/translated/part.js:1261
+#: templates/js/translated/part.js:1431
msgid "Single Price"
msgstr ""
-#: templates/js/translated/part.js:1280
+#: templates/js/translated/part.js:1450
msgid "Single Price Difference"
msgstr ""
-#: templates/js/translated/stock.js:9
+#: templates/js/translated/stock.js:66
msgid "Parent stock location"
msgstr ""
-#: templates/js/translated/stock.js:39
+#: templates/js/translated/stock.js:96
msgid "Export Stock"
msgstr ""
-#: templates/js/translated/stock.js:42
+#: templates/js/translated/stock.js:99
msgid "Format"
msgstr ""
-#: templates/js/translated/stock.js:43
+#: templates/js/translated/stock.js:100
msgid "Select file format"
msgstr ""
-#: templates/js/translated/stock.js:55
+#: templates/js/translated/stock.js:124
msgid "Include Sublocations"
msgstr ""
-#: templates/js/translated/stock.js:56
+#: templates/js/translated/stock.js:125
msgid "Include stock items in sublocations"
msgstr ""
-#: templates/js/translated/stock.js:98
+#: templates/js/translated/stock.js:167
msgid "Transfer Stock"
msgstr ""
-#: templates/js/translated/stock.js:99
+#: templates/js/translated/stock.js:168
msgid "Move"
msgstr ""
-#: templates/js/translated/stock.js:105
+#: templates/js/translated/stock.js:174
msgid "Count Stock"
msgstr ""
-#: templates/js/translated/stock.js:106
+#: templates/js/translated/stock.js:175
msgid "Count"
msgstr ""
-#: templates/js/translated/stock.js:110
+#: templates/js/translated/stock.js:179
msgid "Remove Stock"
msgstr ""
-#: templates/js/translated/stock.js:111
+#: templates/js/translated/stock.js:180
msgid "Take"
msgstr ""
-#: templates/js/translated/stock.js:115
+#: templates/js/translated/stock.js:184
msgid "Add Stock"
msgstr ""
-#: templates/js/translated/stock.js:116 users/models.py:190
+#: templates/js/translated/stock.js:185 users/models.py:190
msgid "Add"
msgstr ""
-#: templates/js/translated/stock.js:120 templates/stock_table.html:63
+#: templates/js/translated/stock.js:189 templates/stock_table.html:63
msgid "Delete Stock"
msgstr ""
-#: templates/js/translated/stock.js:209
+#: templates/js/translated/stock.js:278
msgid "Quantity cannot be adjusted for serialized stock"
msgstr ""
-#: templates/js/translated/stock.js:209
+#: templates/js/translated/stock.js:278
msgid "Specify stock quantity"
msgstr ""
-#: templates/js/translated/stock.js:245
+#: templates/js/translated/stock.js:314
msgid "You must select at least one available stock item"
msgstr ""
-#: templates/js/translated/stock.js:261
-msgid "Select destination stock location"
-msgstr ""
-
-#: templates/js/translated/stock.js:269
+#: templates/js/translated/stock.js:339
msgid "Stock transaction notes"
msgstr ""
-#: templates/js/translated/stock.js:406
+#: templates/js/translated/stock.js:477
msgid "PASS"
msgstr ""
-#: templates/js/translated/stock.js:408
+#: templates/js/translated/stock.js:479
msgid "FAIL"
msgstr ""
-#: templates/js/translated/stock.js:413
+#: templates/js/translated/stock.js:484
msgid "NO RESULT"
msgstr ""
-#: templates/js/translated/stock.js:439
+#: templates/js/translated/stock.js:510
msgid "Add test result"
msgstr ""
-#: templates/js/translated/stock.js:465
+#: templates/js/translated/stock.js:536
msgid "No test results found"
msgstr ""
-#: templates/js/translated/stock.js:513
+#: templates/js/translated/stock.js:584
msgid "Test Date"
msgstr ""
-#: templates/js/translated/stock.js:621
+#: templates/js/translated/stock.js:691
msgid "In production"
msgstr ""
-#: templates/js/translated/stock.js:625
+#: templates/js/translated/stock.js:695
msgid "Installed in Stock Item"
msgstr ""
-#: templates/js/translated/stock.js:633
+#: templates/js/translated/stock.js:703
msgid "Assigned to Sales Order"
msgstr ""
-#: templates/js/translated/stock.js:709
-msgid "No stock items matching query"
-msgstr ""
-
-#: templates/js/translated/stock.js:729
-msgid "items"
-msgstr ""
-
-#: templates/js/translated/stock.js:821
-msgid "batches"
-msgstr ""
-
-#: templates/js/translated/stock.js:848
-msgid "locations"
-msgstr ""
-
-#: templates/js/translated/stock.js:850
-msgid "Undefined location"
-msgstr ""
-
-#: templates/js/translated/stock.js:951
+#: templates/js/translated/stock.js:865
msgid "Stock item is in production"
msgstr ""
-#: templates/js/translated/stock.js:956
+#: templates/js/translated/stock.js:870
msgid "Stock item assigned to sales order"
msgstr ""
-#: templates/js/translated/stock.js:959
+#: templates/js/translated/stock.js:873
msgid "Stock item assigned to customer"
msgstr ""
-#: templates/js/translated/stock.js:963
+#: templates/js/translated/stock.js:877
msgid "Stock item has expired"
msgstr ""
-#: templates/js/translated/stock.js:965
+#: templates/js/translated/stock.js:879
msgid "Stock item will expire soon"
msgstr ""
-#: templates/js/translated/stock.js:969
+#: templates/js/translated/stock.js:883
msgid "Stock item has been allocated"
msgstr ""
-#: templates/js/translated/stock.js:973
+#: templates/js/translated/stock.js:887
msgid "Stock item has been installed in another item"
msgstr ""
-#: templates/js/translated/stock.js:980
+#: templates/js/translated/stock.js:894
msgid "Stock item has been rejected"
msgstr ""
-#: templates/js/translated/stock.js:984
+#: templates/js/translated/stock.js:896
msgid "Stock item is lost"
msgstr ""
-#: templates/js/translated/stock.js:987
+#: templates/js/translated/stock.js:898
msgid "Stock item is destroyed"
msgstr ""
-#: templates/js/translated/stock.js:991
-#: templates/js/translated/table_filters.js:148
+#: templates/js/translated/stock.js:902
+#: templates/js/translated/table_filters.js:161
msgid "Depleted"
msgstr ""
-#: templates/js/translated/stock.js:1020
+#: templates/js/translated/stock.js:956
msgid "Stocktake"
msgstr ""
-#: templates/js/translated/stock.js:1073
+#: templates/js/translated/stock.js:1029
msgid "Supplier part not specified"
msgstr ""
-#: templates/js/translated/stock.js:1223
+#: templates/js/translated/stock.js:1067
+msgid "No stock items matching query"
+msgstr ""
+
+#: templates/js/translated/stock.js:1088 templates/js/translated/stock.js:1136
+msgid "items"
+msgstr ""
+
+#: templates/js/translated/stock.js:1176
+msgid "batches"
+msgstr ""
+
+#: templates/js/translated/stock.js:1203
+msgid "locations"
+msgstr ""
+
+#: templates/js/translated/stock.js:1205
+msgid "Undefined location"
+msgstr ""
+
+#: templates/js/translated/stock.js:1364
msgid "Stock Status"
msgstr ""
-#: templates/js/translated/stock.js:1238
+#: templates/js/translated/stock.js:1379
msgid "Set Stock Status"
msgstr ""
-#: templates/js/translated/stock.js:1252
+#: templates/js/translated/stock.js:1393
msgid "Select Status Code"
msgstr ""
-#: templates/js/translated/stock.js:1253
+#: templates/js/translated/stock.js:1394
msgid "Status code must be selected"
msgstr ""
-#: templates/js/translated/stock.js:1392
+#: templates/js/translated/stock.js:1533
msgid "Invalid date"
msgstr ""
-#: templates/js/translated/stock.js:1439
+#: templates/js/translated/stock.js:1580
msgid "Location no longer exists"
msgstr ""
-#: templates/js/translated/stock.js:1458
+#: templates/js/translated/stock.js:1599
msgid "Purchase order no longer exists"
msgstr ""
-#: templates/js/translated/stock.js:1477
+#: templates/js/translated/stock.js:1618
msgid "Customer no longer exists"
msgstr ""
-#: templates/js/translated/stock.js:1495
+#: templates/js/translated/stock.js:1636
msgid "Stock item no longer exists"
msgstr ""
-#: templates/js/translated/stock.js:1518
+#: templates/js/translated/stock.js:1659
msgid "Added"
msgstr ""
-#: templates/js/translated/stock.js:1526
+#: templates/js/translated/stock.js:1667
msgid "Removed"
msgstr ""
-#: templates/js/translated/stock.js:1570
+#: templates/js/translated/stock.js:1708
msgid "Edit tracking entry"
msgstr ""
-#: templates/js/translated/stock.js:1571
+#: templates/js/translated/stock.js:1709
msgid "Delete tracking entry"
msgstr ""
-#: templates/js/translated/stock.js:1715
+#: templates/js/translated/stock.js:1833
msgid "No installed items"
msgstr ""
-#: templates/js/translated/stock.js:1738
+#: templates/js/translated/stock.js:1856
msgid "Serial"
msgstr ""
-#: templates/js/translated/stock.js:1766
+#: templates/js/translated/stock.js:1884
msgid "Uninstall Stock Item"
msgstr ""
-#: templates/js/translated/table_filters.js:43
+#: templates/js/translated/table_filters.js:56
msgid "Trackable Part"
msgstr ""
-#: templates/js/translated/table_filters.js:47
+#: templates/js/translated/table_filters.js:60
msgid "Assembled Part"
msgstr ""
-#: templates/js/translated/table_filters.js:51
+#: templates/js/translated/table_filters.js:64
msgid "Validated"
msgstr ""
-#: templates/js/translated/table_filters.js:59
+#: templates/js/translated/table_filters.js:72
msgid "Allow Variant Stock"
msgstr ""
-#: templates/js/translated/table_filters.js:79
-#: templates/js/translated/table_filters.js:143
+#: templates/js/translated/table_filters.js:92
+#: templates/js/translated/table_filters.js:156
msgid "Include sublocations"
msgstr ""
-#: templates/js/translated/table_filters.js:80
+#: templates/js/translated/table_filters.js:93
msgid "Include locations"
msgstr ""
-#: templates/js/translated/table_filters.js:90
-#: templates/js/translated/table_filters.js:91
-#: templates/js/translated/table_filters.js:314
+#: templates/js/translated/table_filters.js:103
+#: templates/js/translated/table_filters.js:104
+#: templates/js/translated/table_filters.js:327
msgid "Include subcategories"
msgstr ""
-#: templates/js/translated/table_filters.js:101
-#: templates/js/translated/table_filters.js:178
+#: templates/js/translated/table_filters.js:114
+#: templates/js/translated/table_filters.js:191
msgid "Is Serialized"
msgstr ""
-#: templates/js/translated/table_filters.js:104
-#: templates/js/translated/table_filters.js:185
+#: templates/js/translated/table_filters.js:117
+#: templates/js/translated/table_filters.js:198
msgid "Serial number GTE"
msgstr ""
-#: templates/js/translated/table_filters.js:105
-#: templates/js/translated/table_filters.js:186
+#: templates/js/translated/table_filters.js:118
+#: templates/js/translated/table_filters.js:199
msgid "Serial number greater than or equal to"
msgstr ""
-#: templates/js/translated/table_filters.js:108
-#: templates/js/translated/table_filters.js:189
+#: templates/js/translated/table_filters.js:121
+#: templates/js/translated/table_filters.js:202
msgid "Serial number LTE"
msgstr ""
-#: templates/js/translated/table_filters.js:109
-#: templates/js/translated/table_filters.js:190
+#: templates/js/translated/table_filters.js:122
+#: templates/js/translated/table_filters.js:203
msgid "Serial number less than or equal to"
msgstr ""
-#: templates/js/translated/table_filters.js:112
-#: templates/js/translated/table_filters.js:113
-#: templates/js/translated/table_filters.js:181
-#: templates/js/translated/table_filters.js:182
+#: templates/js/translated/table_filters.js:125
+#: templates/js/translated/table_filters.js:126
+#: templates/js/translated/table_filters.js:194
+#: templates/js/translated/table_filters.js:195
msgid "Serial number"
msgstr ""
-#: templates/js/translated/table_filters.js:117
-#: templates/js/translated/table_filters.js:199
+#: templates/js/translated/table_filters.js:130
+#: templates/js/translated/table_filters.js:212
msgid "Batch code"
msgstr ""
-#: templates/js/translated/table_filters.js:128
-#: templates/js/translated/table_filters.js:304
+#: templates/js/translated/table_filters.js:141
+#: templates/js/translated/table_filters.js:317
msgid "Active parts"
msgstr ""
-#: templates/js/translated/table_filters.js:129
+#: templates/js/translated/table_filters.js:142
msgid "Show stock for active parts"
msgstr ""
-#: templates/js/translated/table_filters.js:134
+#: templates/js/translated/table_filters.js:147
msgid "Part is an assembly"
msgstr ""
-#: templates/js/translated/table_filters.js:138
+#: templates/js/translated/table_filters.js:151
msgid "Is allocated"
msgstr ""
-#: templates/js/translated/table_filters.js:139
+#: templates/js/translated/table_filters.js:152
msgid "Item has been allocated"
msgstr ""
-#: templates/js/translated/table_filters.js:144
+#: templates/js/translated/table_filters.js:157
msgid "Include stock in sublocations"
msgstr ""
-#: templates/js/translated/table_filters.js:149
+#: templates/js/translated/table_filters.js:162
msgid "Show stock items which are depleted"
msgstr ""
-#: templates/js/translated/table_filters.js:154
+#: templates/js/translated/table_filters.js:167
msgid "Show items which are in stock"
msgstr ""
-#: templates/js/translated/table_filters.js:158
+#: templates/js/translated/table_filters.js:171
msgid "In Production"
msgstr ""
-#: templates/js/translated/table_filters.js:159
+#: templates/js/translated/table_filters.js:172
msgid "Show items which are in production"
msgstr ""
-#: templates/js/translated/table_filters.js:163
+#: templates/js/translated/table_filters.js:176
msgid "Include Variants"
msgstr ""
-#: templates/js/translated/table_filters.js:164
+#: templates/js/translated/table_filters.js:177
msgid "Include stock items for variant parts"
msgstr ""
-#: templates/js/translated/table_filters.js:168
+#: templates/js/translated/table_filters.js:181
msgid "Installed"
msgstr ""
-#: templates/js/translated/table_filters.js:169
+#: templates/js/translated/table_filters.js:182
msgid "Show stock items which are installed in another item"
msgstr ""
-#: templates/js/translated/table_filters.js:174
+#: templates/js/translated/table_filters.js:187
msgid "Show items which have been assigned to a customer"
msgstr ""
-#: templates/js/translated/table_filters.js:194
-#: templates/js/translated/table_filters.js:195
+#: templates/js/translated/table_filters.js:207
+#: templates/js/translated/table_filters.js:208
msgid "Stock status"
msgstr ""
-#: templates/js/translated/table_filters.js:203
+#: templates/js/translated/table_filters.js:216
msgid "Has purchase price"
msgstr ""
-#: templates/js/translated/table_filters.js:204
+#: templates/js/translated/table_filters.js:217
msgid "Show stock items which have a purchase price set"
msgstr ""
-#: templates/js/translated/table_filters.js:213
+#: templates/js/translated/table_filters.js:226
msgid "Show stock items which have expired"
msgstr ""
-#: templates/js/translated/table_filters.js:219
+#: templates/js/translated/table_filters.js:232
msgid "Show stock which is close to expiring"
msgstr ""
-#: templates/js/translated/table_filters.js:250
+#: templates/js/translated/table_filters.js:263
msgid "Build status"
msgstr ""
-#: templates/js/translated/table_filters.js:269
-#: templates/js/translated/table_filters.js:286
+#: templates/js/translated/table_filters.js:282
+#: templates/js/translated/table_filters.js:299
msgid "Order status"
msgstr ""
-#: templates/js/translated/table_filters.js:274
-#: templates/js/translated/table_filters.js:291
+#: templates/js/translated/table_filters.js:287
+#: templates/js/translated/table_filters.js:304
msgid "Outstanding"
msgstr ""
-#: templates/js/translated/table_filters.js:315
+#: templates/js/translated/table_filters.js:328
msgid "Include parts in subcategories"
msgstr ""
-#: templates/js/translated/table_filters.js:319
+#: templates/js/translated/table_filters.js:332
msgid "Has IPN"
msgstr ""
-#: templates/js/translated/table_filters.js:320
+#: templates/js/translated/table_filters.js:333
msgid "Part has internal part number"
msgstr ""
-#: templates/js/translated/table_filters.js:325
+#: templates/js/translated/table_filters.js:338
msgid "Show active parts"
msgstr ""
-#: templates/js/translated/table_filters.js:333
+#: templates/js/translated/table_filters.js:346
msgid "Stock available"
msgstr ""
-#: templates/js/translated/table_filters.js:349
+#: templates/js/translated/table_filters.js:362
msgid "Starred"
msgstr ""
-#: templates/js/translated/table_filters.js:361
+#: templates/js/translated/table_filters.js:374
msgid "Purchasable"
msgstr ""
-#: templates/js/translated/tables.js:342
+#: templates/js/translated/tables.js:357
msgid "Loading data"
msgstr ""
-#: templates/js/translated/tables.js:345
+#: templates/js/translated/tables.js:360
msgid "rows per page"
msgstr ""
-#: templates/js/translated/tables.js:348
+#: templates/js/translated/tables.js:363
msgid "Showing"
msgstr ""
-#: templates/js/translated/tables.js:348
+#: templates/js/translated/tables.js:363
msgid "to"
msgstr ""
-#: templates/js/translated/tables.js:348
+#: templates/js/translated/tables.js:363
msgid "of"
msgstr ""
-#: templates/js/translated/tables.js:348
+#: templates/js/translated/tables.js:363
msgid "rows"
msgstr ""
-#: templates/js/translated/tables.js:354
+#: templates/js/translated/tables.js:369
msgid "No matching results"
msgstr ""
-#: templates/js/translated/tables.js:357
+#: templates/js/translated/tables.js:372
msgid "Hide/Show pagination"
msgstr ""
-#: templates/js/translated/tables.js:360
+#: templates/js/translated/tables.js:375
msgid "Refresh"
msgstr ""
-#: templates/js/translated/tables.js:363
+#: templates/js/translated/tables.js:378
msgid "Toggle"
msgstr ""
-#: templates/js/translated/tables.js:366
+#: templates/js/translated/tables.js:381
msgid "Columns"
msgstr ""
-#: templates/js/translated/tables.js:369
+#: templates/js/translated/tables.js:384
msgid "All"
msgstr ""
-#: templates/navbar.html:13
+#: templates/navbar.html:19
msgid "Toggle navigation"
msgstr ""
-#: templates/navbar.html:33
+#: templates/navbar.html:39
msgid "Buy"
msgstr ""
-#: templates/navbar.html:43
+#: templates/navbar.html:51
msgid "Sell"
msgstr ""
-#: templates/navbar.html:55
-msgid "Scan Barcode"
-msgstr ""
-
-#: templates/navbar.html:77 users/models.py:39
+#: templates/navbar.html:87 users/models.py:39
msgid "Admin"
msgstr ""
-#: templates/navbar.html:79
+#: templates/navbar.html:89
msgid "Logout"
msgstr ""
-#: templates/navbar.html:81 templates/registration/login.html:89
+#: templates/navbar.html:91 templates/registration/login.html:89
msgid "Login"
msgstr ""
-#: templates/navbar.html:104
+#: templates/navbar.html:114
msgid "About InvenTree"
msgstr ""
diff --git a/InvenTree/locale/sv/LC_MESSAGES/django.po b/InvenTree/locale/sv/LC_MESSAGES/django.po
index 8acb080094..3eb53ff69c 100644
--- a/InvenTree/locale/sv/LC_MESSAGES/django.po
+++ b/InvenTree/locale/sv/LC_MESSAGES/django.po
@@ -2,8 +2,8 @@ msgid ""
msgstr ""
"Project-Id-Version: inventree\n"
"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2021-08-07 15:14+0000\n"
-"PO-Revision-Date: 2021-08-07 15:30\n"
+"POT-Creation-Date: 2021-09-12 13:15+0000\n"
+"PO-Revision-Date: 2021-09-12 13:44\n"
"Last-Translator: \n"
"Language-Team: Swedish\n"
"Language: sv_SE\n"
@@ -36,7 +36,7 @@ msgstr ""
#: InvenTree/forms.py:111 build/forms.py:102 build/forms.py:123
#: build/forms.py:145 build/forms.py:169 build/forms.py:185 build/forms.py:227
#: order/forms.py:30 order/forms.py:41 order/forms.py:52 order/forms.py:63
-#: order/forms.py:74 part/forms.py:108 templates/js/translated/forms.js:545
+#: order/forms.py:74 part/forms.py:108 templates/js/translated/forms.js:564
msgid "Confirm"
msgstr ""
@@ -73,7 +73,7 @@ msgstr ""
msgid "Duplicate serial: {n}"
msgstr ""
-#: InvenTree/helpers.py:408 order/models.py:315 order/models.py:425
+#: InvenTree/helpers.py:408 order/models.py:315 order/models.py:430
#: stock/views.py:1363
msgid "Invalid quantity provided"
msgstr ""
@@ -102,152 +102,181 @@ msgstr ""
msgid "Number of unique serial number ({s}) must match quantity ({q})"
msgstr ""
-#: InvenTree/models.py:61 stock/models.py:1815
+#: InvenTree/models.py:66 stock/models.py:1826
msgid "Attachment"
msgstr ""
-#: InvenTree/models.py:62
+#: InvenTree/models.py:67
msgid "Select file to attach"
msgstr ""
-#: InvenTree/models.py:64 templates/js/translated/attachment.js:52
+#: InvenTree/models.py:69 templates/js/translated/attachment.js:87
msgid "Comment"
msgstr ""
-#: InvenTree/models.py:64
+#: InvenTree/models.py:69
msgid "File comment"
msgstr ""
-#: InvenTree/models.py:70 InvenTree/models.py:71 common/models.py:969
-#: common/models.py:970 part/models.py:2035
+#: InvenTree/models.py:75 InvenTree/models.py:76 common/models.py:993
+#: common/models.py:994 part/models.py:2051
#: report/templates/report/inventree_test_report_base.html:91
-#: templates/js/translated/stock.js:1549
+#: templates/js/translated/stock.js:1690
msgid "User"
msgstr ""
-#: InvenTree/models.py:74
+#: InvenTree/models.py:79
msgid "upload date"
msgstr ""
-#: InvenTree/models.py:113
+#: InvenTree/models.py:99
+msgid "Filename must not be empty"
+msgstr ""
+
+#: InvenTree/models.py:122
+msgid "Invalid attachment directory"
+msgstr ""
+
+#: InvenTree/models.py:132
+#, python-brace-format
+msgid "Filename contains illegal character '{c}'"
+msgstr ""
+
+#: InvenTree/models.py:135
+msgid "Filename missing extension"
+msgstr ""
+
+#: InvenTree/models.py:142
+msgid "Attachment with this filename already exists"
+msgstr ""
+
+#: InvenTree/models.py:149
+msgid "Error renaming file"
+msgstr ""
+
+#: InvenTree/models.py:184
msgid "Invalid choice"
msgstr ""
-#: InvenTree/models.py:129 InvenTree/models.py:130 company/models.py:412
-#: label/models.py:112 part/models.py:656 part/models.py:2196
-#: part/templates/part/part_base.html:233 report/models.py:181
+#: InvenTree/models.py:200 InvenTree/models.py:201 company/models.py:414
+#: label/models.py:112 part/models.py:658 part/models.py:2212
+#: part/templates/part/part_base.html:241 report/models.py:181
#: templates/InvenTree/search.html:137 templates/InvenTree/search.html:289
-#: templates/js/translated/company.js:583 templates/js/translated/part.js:338
-#: templates/js/translated/part.js:471 templates/js/translated/part.js:963
-#: templates/js/translated/stock.js:1342
+#: templates/js/translated/company.js:636 templates/js/translated/part.js:466
+#: templates/js/translated/part.js:603 templates/js/translated/part.js:1130
+#: templates/js/translated/stock.js:1483
msgid "Name"
msgstr ""
-#: InvenTree/models.py:136 build/models.py:187
-#: build/templates/build/detail.html:24 company/models.py:351
-#: company/models.py:519 company/templates/company/manufacturer_part.html:76
+#: InvenTree/models.py:207 build/models.py:187
+#: build/templates/build/detail.html:24 company/models.py:353
+#: company/models.py:569 company/templates/company/manufacturer_part.html:76
#: company/templates/company/supplier_part.html:75 label/models.py:119
-#: order/models.py:158 order/templates/order/purchase_order_detail.html:312
-#: part/models.py:679 part/templates/part/part_base.html:238
+#: order/models.py:158 part/models.py:681
+#: part/templates/part/part_base.html:246
#: part/templates/part/set_category.html:14 report/models.py:194
#: report/models.py:551 report/models.py:590
#: report/templates/report/inventree_build_order_base.html:118
#: templates/InvenTree/search.html:144 templates/InvenTree/search.html:224
#: templates/InvenTree/search.html:296
#: templates/InvenTree/settings/header.html:9
-#: templates/js/translated/bom.js:210 templates/js/translated/build.js:868
-#: templates/js/translated/build.js:1162 templates/js/translated/company.js:299
-#: templates/js/translated/company.js:497
-#: templates/js/translated/company.js:779 templates/js/translated/order.js:267
-#: templates/js/translated/order.js:369 templates/js/translated/part.js:397
-#: templates/js/translated/part.js:581 templates/js/translated/part.js:758
-#: templates/js/translated/part.js:975 templates/js/translated/part.js:1043
-#: templates/js/translated/stock.js:926 templates/js/translated/stock.js:1354
-#: templates/js/translated/stock.js:1399
+#: templates/js/translated/bom.js:230 templates/js/translated/build.js:891
+#: templates/js/translated/build.js:1179 templates/js/translated/company.js:344
+#: templates/js/translated/company.js:546
+#: templates/js/translated/company.js:834 templates/js/translated/order.js:341
+#: templates/js/translated/order.js:486 templates/js/translated/order.js:710
+#: templates/js/translated/part.js:525 templates/js/translated/part.js:713
+#: templates/js/translated/part.js:902 templates/js/translated/part.js:1142
+#: templates/js/translated/part.js:1210 templates/js/translated/stock.js:840
+#: templates/js/translated/stock.js:1495 templates/js/translated/stock.js:1540
msgid "Description"
msgstr ""
-#: InvenTree/models.py:137
+#: InvenTree/models.py:208
msgid "Description (optional)"
msgstr ""
-#: InvenTree/models.py:145
+#: InvenTree/models.py:216
msgid "parent"
msgstr ""
-#: InvenTree/serializers.py:52 part/models.py:2438
+#: InvenTree/serializers.py:55 part/models.py:2454
msgid "Must be a valid number"
msgstr ""
-#: InvenTree/settings.py:518
-msgid "German"
-msgstr ""
-
-#: InvenTree/settings.py:519
-msgid "Greek"
-msgstr ""
-
-#: InvenTree/settings.py:520
-msgid "English"
-msgstr ""
-
-#: InvenTree/settings.py:521
-msgid "Spanish"
-msgstr ""
-
-#: InvenTree/settings.py:522
-msgid "French"
+#: InvenTree/serializers.py:244
+msgid "Filename"
msgstr ""
#: InvenTree/settings.py:523
-msgid "Hebrew"
+msgid "German"
msgstr ""
#: InvenTree/settings.py:524
-msgid "Italian"
+msgid "Greek"
msgstr ""
#: InvenTree/settings.py:525
-msgid "Japanese"
+msgid "English"
msgstr ""
#: InvenTree/settings.py:526
-msgid "Korean"
+msgid "Spanish"
msgstr ""
#: InvenTree/settings.py:527
-msgid "Dutch"
+msgid "French"
msgstr ""
#: InvenTree/settings.py:528
-msgid "Norwegian"
+msgid "Hebrew"
msgstr ""
#: InvenTree/settings.py:529
-msgid "Polish"
+msgid "Italian"
msgstr ""
#: InvenTree/settings.py:530
-msgid "Russian"
+msgid "Japanese"
msgstr ""
#: InvenTree/settings.py:531
-msgid "Swedish"
+msgid "Korean"
msgstr ""
#: InvenTree/settings.py:532
-msgid "Thai"
+msgid "Dutch"
msgstr ""
#: InvenTree/settings.py:533
-msgid "Turkish"
+msgid "Norwegian"
msgstr ""
#: InvenTree/settings.py:534
-msgid "Vietnamese"
+msgid "Polish"
msgstr ""
#: InvenTree/settings.py:535
+msgid "Russian"
+msgstr ""
+
+#: InvenTree/settings.py:536
+msgid "Swedish"
+msgstr ""
+
+#: InvenTree/settings.py:537
+msgid "Thai"
+msgstr ""
+
+#: InvenTree/settings.py:538
+msgid "Turkish"
+msgstr ""
+
+#: InvenTree/settings.py:539
+msgid "Vietnamese"
+msgstr ""
+
+#: InvenTree/settings.py:540
msgid "Chinese"
msgstr ""
@@ -372,7 +401,7 @@ msgstr ""
msgid "Split child item"
msgstr ""
-#: InvenTree/status_codes.py:294 templates/js/translated/table_filters.js:173
+#: InvenTree/status_codes.py:294 templates/js/translated/table_filters.js:186
msgid "Sent to customer"
msgstr ""
@@ -432,27 +461,27 @@ msgstr ""
msgid "Overage must be an integer value or a percentage"
msgstr ""
-#: InvenTree/views.py:612
+#: InvenTree/views.py:610
msgid "Delete Item"
msgstr ""
-#: InvenTree/views.py:661
+#: InvenTree/views.py:659
msgid "Check box to confirm item deletion"
msgstr ""
-#: InvenTree/views.py:676 templates/InvenTree/settings/user.html:14
+#: InvenTree/views.py:674 templates/InvenTree/settings/user.html:14
msgid "Edit User Information"
msgstr ""
-#: InvenTree/views.py:687 templates/InvenTree/settings/user.html:18
+#: InvenTree/views.py:685 templates/InvenTree/settings/user.html:18
msgid "Set Password"
msgstr ""
-#: InvenTree/views.py:706
+#: InvenTree/views.py:704
msgid "Password fields must match"
msgstr ""
-#: InvenTree/views.py:907 templates/navbar.html:95
+#: InvenTree/views.py:910 templates/navbar.html:105
msgid "System Information"
msgstr ""
@@ -509,8 +538,8 @@ msgstr ""
#: order/templates/order/order_base.html:124
#: order/templates/order/sales_order_base.html:119
#: report/templates/report/inventree_build_order_base.html:126
-#: templates/js/translated/build.js:945 templates/js/translated/order.js:284
-#: templates/js/translated/order.js:387
+#: templates/js/translated/build.js:962 templates/js/translated/order.js:358
+#: templates/js/translated/order.js:728
msgid "Target Date"
msgstr ""
@@ -522,19 +551,18 @@ msgstr ""
#: build/templates/build/allocation_card.html:23
#: build/templates/build/auto_allocate.html:17
#: build/templates/build/build_base.html:133
-#: build/templates/build/detail.html:34 common/models.py:1001
+#: build/templates/build/detail.html:34 common/models.py:1025
#: company/forms.py:42 company/templates/company/supplier_part.html:226
-#: order/forms.py:120 order/forms.py:142 order/forms.py:159 order/models.py:706
-#: order/models.py:952 order/templates/order/order_wizard/match_parts.html:30
+#: order/forms.py:120 order/forms.py:142 order/forms.py:159 order/models.py:712
+#: order/models.py:964 order/templates/order/order_wizard/match_parts.html:30
#: order/templates/order/order_wizard/select_parts.html:34
-#: order/templates/order/purchase_order_detail.html:348
-#: order/templates/order/sales_order_detail.html:200
-#: order/templates/order/sales_order_detail.html:207
-#: order/templates/order/sales_order_detail.html:292
-#: order/templates/order/sales_order_detail.html:364 part/forms.py:249
-#: part/forms.py:265 part/forms.py:281 part/models.py:2340
+#: order/templates/order/sales_order_detail.html:201
+#: order/templates/order/sales_order_detail.html:208
+#: order/templates/order/sales_order_detail.html:293
+#: order/templates/order/sales_order_detail.html:365 part/forms.py:249
+#: part/forms.py:265 part/forms.py:281 part/models.py:2356
#: part/templates/part/bom_upload/match_parts.html:31
-#: part/templates/part/detail.html:940 part/templates/part/detail.html:1026
+#: part/templates/part/detail.html:973 part/templates/part/detail.html:1059
#: part/templates/part/part_pricing.html:16
#: report/templates/report/inventree_build_order_base.html:114
#: report/templates/report/inventree_po_report.html:91
@@ -542,13 +570,14 @@ msgstr ""
#: report/templates/report/inventree_test_report_base.html:77
#: stock/forms.py:140 stock/templates/stock/item_base.html:269
#: stock/templates/stock/stock_adjust.html:18
-#: templates/js/translated/barcode.js:364 templates/js/translated/bom.js:225
-#: templates/js/translated/build.js:271 templates/js/translated/build.js:606
-#: templates/js/translated/build.js:1172
-#: templates/js/translated/model_renderers.js:56
-#: templates/js/translated/order.js:482 templates/js/translated/part.js:1148
-#: templates/js/translated/part.js:1270 templates/js/translated/part.js:1326
-#: templates/js/translated/stock.js:1534 templates/js/translated/stock.js:1732
+#: templates/js/translated/barcode.js:386 templates/js/translated/bom.js:245
+#: templates/js/translated/build.js:298 templates/js/translated/build.js:629
+#: templates/js/translated/build.js:1189
+#: templates/js/translated/model_renderers.js:59
+#: templates/js/translated/order.js:522 templates/js/translated/order.js:824
+#: templates/js/translated/part.js:1317 templates/js/translated/part.js:1440
+#: templates/js/translated/part.js:1518 templates/js/translated/stock.js:1675
+#: templates/js/translated/stock.js:1850
msgid "Quantity"
msgstr ""
@@ -589,13 +618,15 @@ msgid "Mark build as complete"
msgstr ""
#: build/forms.py:210 build/templates/build/auto_allocate.html:18
-#: stock/forms.py:280 stock/templates/stock/item_base.html:299
+#: order/serializers.py:216 order/serializers.py:275 stock/forms.py:280
+#: stock/templates/stock/item_base.html:299
#: stock/templates/stock/stock_adjust.html:17
-#: templates/InvenTree/search.html:260 templates/js/translated/barcode.js:363
-#: templates/js/translated/barcode.js:531 templates/js/translated/build.js:256
-#: templates/js/translated/build.js:620 templates/js/translated/order.js:467
-#: templates/js/translated/stock.js:134 templates/js/translated/stock.js:260
-#: templates/js/translated/stock.js:1012 templates/js/translated/stock.js:1426
+#: templates/InvenTree/search.html:260 templates/js/translated/barcode.js:385
+#: templates/js/translated/barcode.js:555 templates/js/translated/build.js:283
+#: templates/js/translated/build.js:643 templates/js/translated/order.js:809
+#: templates/js/translated/part.js:174 templates/js/translated/stock.js:203
+#: templates/js/translated/stock.js:329 templates/js/translated/stock.js:942
+#: templates/js/translated/stock.js:1567
msgid "Location"
msgstr ""
@@ -604,13 +635,13 @@ msgid "Location of completed parts"
msgstr ""
#: build/forms.py:215 build/templates/build/build_base.html:138
-#: build/templates/build/detail.html:62 order/models.py:549
-#: order/templates/order/receive_parts.html:24
+#: build/templates/build/detail.html:62 order/models.py:555
+#: order/serializers.py:230 order/templates/order/receive_parts.html:24
#: stock/templates/stock/item_base.html:422 templates/InvenTree/search.html:252
-#: templates/js/translated/barcode.js:119 templates/js/translated/build.js:902
-#: templates/js/translated/order.js:271 templates/js/translated/order.js:374
-#: templates/js/translated/stock.js:999 templates/js/translated/stock.js:1503
-#: templates/js/translated/stock.js:1748
+#: templates/js/translated/barcode.js:141 templates/js/translated/build.js:925
+#: templates/js/translated/order.js:345 templates/js/translated/order.js:715
+#: templates/js/translated/stock.js:917 templates/js/translated/stock.js:1644
+#: templates/js/translated/stock.js:1866
msgid "Status"
msgstr ""
@@ -649,7 +680,7 @@ msgstr ""
#: build/models.py:117 build/templates/build/build_base.html:9
#: build/templates/build/build_base.html:73
#: report/templates/report/inventree_build_order_base.html:106
-#: templates/js/translated/build.js:233
+#: templates/js/translated/build.js:260
msgid "Build Order"
msgstr ""
@@ -657,8 +688,8 @@ msgstr ""
#: build/templates/build/index.html:15
#: order/templates/order/sales_order_detail.html:34
#: order/templates/order/so_navbar.html:19
-#: order/templates/order/so_navbar.html:22 part/templates/part/navbar.html:42
-#: part/templates/part/navbar.html:45 templates/InvenTree/index.html:229
+#: order/templates/order/so_navbar.html:22 part/templates/part/navbar.html:50
+#: part/templates/part/navbar.html:53 templates/InvenTree/index.html:229
#: templates/InvenTree/search.html:185
#: templates/InvenTree/settings/navbar.html:101
#: templates/InvenTree/settings/navbar.html:103 users/models.py:44
@@ -669,14 +700,13 @@ msgstr ""
msgid "Build Order Reference"
msgstr ""
-#: build/models.py:179 order/models.py:246 order/models.py:533
-#: order/models.py:713 order/templates/order/purchase_order_detail.html:343
-#: order/templates/order/sales_order_detail.html:359 part/models.py:2349
-#: part/templates/part/bom_upload/match_parts.html:30
+#: build/models.py:179 order/models.py:246 order/models.py:539
+#: order/models.py:719 order/templates/order/sales_order_detail.html:360
+#: part/models.py:2365 part/templates/part/bom_upload/match_parts.html:30
#: report/templates/report/inventree_po_report.html:92
#: report/templates/report/inventree_so_report.html:92
-#: templates/js/translated/bom.js:217 templates/js/translated/build.js:695
-#: templates/js/translated/build.js:1166
+#: templates/js/translated/bom.js:237 templates/js/translated/build.js:718
+#: templates/js/translated/build.js:1183 templates/js/translated/order.js:517
msgid "Reference"
msgstr ""
@@ -695,15 +725,14 @@ msgstr ""
#: build/models.py:205 build/templates/build/auto_allocate.html:16
#: build/templates/build/build_base.html:128
-#: build/templates/build/detail.html:29 company/models.py:654
-#: order/models.py:766 order/models.py:825
+#: build/templates/build/detail.html:29 company/models.py:704
+#: order/models.py:772 order/models.py:837
#: order/templates/order/order_wizard/select_parts.html:32
-#: order/templates/order/purchase_order_detail.html:297
#: order/templates/order/receive_parts.html:19
-#: order/templates/order/sales_order_detail.html:344 part/models.py:295
-#: part/models.py:1980 part/models.py:1996 part/models.py:2015
-#: part/models.py:2033 part/models.py:2112 part/models.py:2234
-#: part/models.py:2324 part/templates/part/detail.html:199
+#: order/templates/order/sales_order_detail.html:345 part/models.py:297
+#: part/models.py:1996 part/models.py:2012 part/models.py:2031
+#: part/models.py:2049 part/models.py:2128 part/models.py:2250
+#: part/models.py:2340 part/templates/part/detail.html:199
#: part/templates/part/part_app_base.html:8
#: part/templates/part/part_pricing.html:12
#: part/templates/part/set_category.html:13
@@ -711,12 +740,13 @@ msgstr ""
#: report/templates/report/inventree_po_report.html:90
#: report/templates/report/inventree_so_report.html:90
#: templates/InvenTree/search.html:112 templates/InvenTree/search.html:210
-#: templates/js/translated/barcode.js:362 templates/js/translated/bom.js:183
-#: templates/js/translated/build.js:586 templates/js/translated/build.js:873
-#: templates/js/translated/build.js:1139 templates/js/translated/company.js:438
-#: templates/js/translated/company.js:688 templates/js/translated/part.js:562
-#: templates/js/translated/part.js:725 templates/js/translated/stock.js:132
-#: templates/js/translated/stock.js:895 templates/js/translated/stock.js:1720
+#: templates/js/translated/barcode.js:384 templates/js/translated/bom.js:203
+#: templates/js/translated/build.js:609 templates/js/translated/build.js:896
+#: templates/js/translated/build.js:1156 templates/js/translated/company.js:487
+#: templates/js/translated/company.js:743 templates/js/translated/order.js:471
+#: templates/js/translated/part.js:694 templates/js/translated/part.js:864
+#: templates/js/translated/stock.js:201 templates/js/translated/stock.js:797
+#: templates/js/translated/stock.js:1838
msgid "Part"
msgstr ""
@@ -764,7 +794,7 @@ msgstr ""
msgid "Number of stock items which have been completed"
msgstr ""
-#: build/models.py:257 part/templates/part/part_base.html:191
+#: build/models.py:257 part/templates/part/part_base.html:198
msgid "Build Status"
msgstr ""
@@ -772,7 +802,7 @@ msgstr ""
msgid "Build status code"
msgstr ""
-#: build/models.py:265 stock/models.py:507
+#: build/models.py:265 stock/models.py:513
msgid "Batch Code"
msgstr ""
@@ -780,16 +810,16 @@ msgstr ""
msgid "Batch code for this build output"
msgstr ""
-#: build/models.py:272 order/models.py:162 part/models.py:851
-#: part/templates/part/part_base.html:264 templates/js/translated/order.js:382
+#: build/models.py:272 order/models.py:162 part/models.py:853
+#: part/templates/part/part_base.html:272 templates/js/translated/order.js:723
msgid "Creation Date"
msgstr ""
-#: build/models.py:276 order/models.py:555
+#: build/models.py:276 order/models.py:561
msgid "Target completion date"
msgstr ""
-#: build/models.py:280 order/models.py:288 templates/js/translated/build.js:950
+#: build/models.py:280 order/models.py:288 templates/js/translated/build.js:967
msgid "Completion Date"
msgstr ""
@@ -797,7 +827,7 @@ msgstr ""
msgid "completed by"
msgstr ""
-#: build/models.py:294 templates/js/translated/build.js:915
+#: build/models.py:294 templates/js/translated/build.js:938
msgid "Issued by"
msgstr ""
@@ -808,9 +838,9 @@ msgstr ""
#: build/models.py:303 build/templates/build/build_base.html:184
#: build/templates/build/detail.html:108 order/models.py:176
#: order/templates/order/order_base.html:138
-#: order/templates/order/sales_order_base.html:140 part/models.py:855
+#: order/templates/order/sales_order_base.html:140 part/models.py:857
#: report/templates/report/inventree_build_order_base.html:159
-#: templates/js/translated/build.js:930
+#: templates/js/translated/build.js:950
msgid "Responsible"
msgstr ""
@@ -821,34 +851,33 @@ msgstr ""
#: build/models.py:309 build/templates/build/detail.html:94
#: company/templates/company/manufacturer_part.html:83
#: company/templates/company/supplier_part.html:82
-#: part/templates/part/part_base.html:258 stock/models.py:501
+#: part/templates/part/part_base.html:266 stock/models.py:507
#: stock/templates/stock/item_base.html:359
msgid "External Link"
msgstr ""
-#: build/models.py:310 part/models.py:713 stock/models.py:503
+#: build/models.py:310 part/models.py:715 stock/models.py:509
msgid "Link to external URL"
msgstr ""
#: build/models.py:314 build/templates/build/navbar.html:52
-#: company/models.py:139 company/models.py:526
-#: company/templates/company/navbar.html:63
-#: company/templates/company/navbar.html:66 order/models.py:180
-#: order/models.py:715 order/templates/order/po_navbar.html:38
+#: company/models.py:141 company/models.py:576
+#: company/templates/company/navbar.html:69
+#: company/templates/company/navbar.html:72 order/models.py:180
+#: order/models.py:721 order/templates/order/po_navbar.html:38
#: order/templates/order/po_navbar.html:41
-#: order/templates/order/purchase_order_detail.html:419
-#: order/templates/order/sales_order_detail.html:439
+#: order/templates/order/sales_order_detail.html:440
#: order/templates/order/so_navbar.html:33
-#: order/templates/order/so_navbar.html:36 part/models.py:840
-#: part/templates/part/detail.html:105 part/templates/part/navbar.html:108
-#: part/templates/part/navbar.html:111
+#: order/templates/order/so_navbar.html:36 part/models.py:842
+#: part/templates/part/detail.html:105 part/templates/part/navbar.html:120
+#: part/templates/part/navbar.html:123
#: report/templates/report/inventree_build_order_base.html:173
-#: stock/forms.py:138 stock/forms.py:250 stock/forms.py:282 stock/models.py:573
-#: stock/models.py:1715 stock/models.py:1821
-#: stock/templates/stock/navbar.html:57 templates/js/translated/barcode.js:37
-#: templates/js/translated/bom.js:369 templates/js/translated/company.js:784
-#: templates/js/translated/stock.js:268 templates/js/translated/stock.js:509
-#: templates/js/translated/stock.js:1090
+#: stock/forms.py:138 stock/forms.py:250 stock/forms.py:282 stock/models.py:579
+#: stock/models.py:1726 stock/models.py:1832
+#: stock/templates/stock/navbar.html:57 templates/js/translated/barcode.js:59
+#: templates/js/translated/bom.js:385 templates/js/translated/company.js:839
+#: templates/js/translated/order.js:604 templates/js/translated/stock.js:338
+#: templates/js/translated/stock.js:580 templates/js/translated/stock.js:1061
msgid "Notes"
msgstr ""
@@ -881,11 +910,11 @@ msgstr ""
msgid "Allocated quantity ({n}) must not exceed available quantity ({q})"
msgstr ""
-#: build/models.py:1244 order/models.py:926
+#: build/models.py:1244 order/models.py:938
msgid "StockItem is over-allocated"
msgstr ""
-#: build/models.py:1248 order/models.py:929
+#: build/models.py:1248 order/models.py:941
msgid "Allocation quantity must be greater than zero"
msgstr ""
@@ -899,8 +928,8 @@ msgid "Selected stock item not found in BOM for part '{p}'"
msgstr ""
#: build/models.py:1372 stock/templates/stock/item_base.html:331
-#: templates/InvenTree/search.html:183 templates/js/translated/build.js:846
-#: templates/navbar.html:29
+#: templates/InvenTree/search.html:183 templates/js/translated/build.js:869
+#: templates/navbar.html:35
msgid "Build"
msgstr ""
@@ -912,9 +941,9 @@ msgstr ""
#: stock/templates/stock/item_base.html:31
#: stock/templates/stock/item_base.html:353
#: stock/templates/stock/stock_adjust.html:16
-#: templates/js/translated/build.js:244 templates/js/translated/build.js:249
-#: templates/js/translated/build.js:993 templates/js/translated/order.js:455
-#: templates/js/translated/order.js:460 templates/js/translated/stock.js:1485
+#: templates/js/translated/build.js:271 templates/js/translated/build.js:276
+#: templates/js/translated/build.js:1012 templates/js/translated/order.js:797
+#: templates/js/translated/order.js:802 templates/js/translated/stock.js:1626
msgid "Stock Item"
msgstr ""
@@ -936,12 +965,12 @@ msgstr ""
#: build/templates/build/allocation_card.html:21
#: build/templates/build/complete_output.html:46
-#: order/templates/order/sales_order_detail.html:205
-#: order/templates/order/sales_order_detail.html:290
+#: order/templates/order/sales_order_detail.html:206
+#: order/templates/order/sales_order_detail.html:291
#: report/templates/report/inventree_test_report_base.html:75
-#: stock/models.py:495 stock/templates/stock/item_base.html:251
-#: templates/js/translated/build.js:604
-#: templates/js/translated/model_renderers.js:54
+#: stock/models.py:501 stock/templates/stock/item_base.html:251
+#: templates/js/translated/build.js:627
+#: templates/js/translated/model_renderers.js:57
msgid "Serial Number"
msgstr ""
@@ -993,7 +1022,7 @@ msgstr ""
#: company/templates/company/supplier_part.html:30
#: order/templates/order/order_base.html:26
#: order/templates/order/sales_order_base.html:37
-#: part/templates/part/category.html:27 part/templates/part/part_base.html:25
+#: part/templates/part/category.html:27 part/templates/part/part_base.html:30
#: stock/templates/stock/item_base.html:62
#: stock/templates/stock/location.html:31
msgid "Admin view"
@@ -1005,9 +1034,9 @@ msgstr ""
#: order/templates/order/order_base.html:86
#: order/templates/order/sales_order_base.html:43
#: order/templates/order/sales_order_base.html:88
-#: templates/js/translated/table_filters.js:259
-#: templates/js/translated/table_filters.js:278
-#: templates/js/translated/table_filters.js:295
+#: templates/js/translated/table_filters.js:272
+#: templates/js/translated/table_filters.js:291
+#: templates/js/translated/table_filters.js:308
msgid "Overdue"
msgstr ""
@@ -1057,14 +1086,14 @@ msgid "Progress"
msgstr ""
#: build/templates/build/build_base.html:170
-#: build/templates/build/detail.html:87 order/models.py:823
+#: build/templates/build/detail.html:87 order/models.py:835
#: order/templates/order/sales_order_base.html:9
#: order/templates/order/sales_order_base.html:35
#: order/templates/order/sales_order_ship.html:25
#: report/templates/report/inventree_build_order_base.html:136
#: report/templates/report/inventree_so_report.html:77
#: stock/templates/stock/item_base.html:293
-#: templates/js/translated/order.js:329
+#: templates/js/translated/order.js:670
msgid "Sales Order"
msgstr ""
@@ -1148,7 +1177,7 @@ msgstr ""
#: build/templates/build/create_build_item.html:11
#, python-format
-msgid "The allocated stock will be installed into the following build output:
%(output)s"
+msgid "The allocated stock will be installed into the following build output:
%(output)s"
msgstr ""
#: build/templates/build/create_build_item.html:17
@@ -1172,9 +1201,9 @@ msgstr ""
msgid "Stock can be taken from any available location."
msgstr ""
-#: build/templates/build/detail.html:49 order/forms.py:88 order/models.py:782
-#: order/templates/order/purchase_order_detail.html:408
+#: build/templates/build/detail.html:49 order/forms.py:88 order/models.py:794
#: order/templates/order/receive_parts.html:25 stock/forms.py:134
+#: templates/js/translated/order.js:593
msgid "Destination"
msgstr ""
@@ -1184,16 +1213,16 @@ msgstr ""
#: build/templates/build/detail.html:73
#: stock/templates/stock/item_base.html:317
-#: templates/js/translated/stock.js:1007 templates/js/translated/stock.js:1755
-#: templates/js/translated/table_filters.js:116
-#: templates/js/translated/table_filters.js:198
+#: templates/js/translated/stock.js:931 templates/js/translated/stock.js:1873
+#: templates/js/translated/table_filters.js:129
+#: templates/js/translated/table_filters.js:211
msgid "Batch"
msgstr ""
#: build/templates/build/detail.html:119
#: order/templates/order/order_base.html:111
#: order/templates/order/sales_order_base.html:113
-#: templates/js/translated/build.js:910
+#: templates/js/translated/build.js:933
msgid "Created"
msgstr ""
@@ -1201,7 +1230,7 @@ msgstr ""
msgid "No target date set"
msgstr ""
-#: build/templates/build/detail.html:135 templates/js/translated/build.js:888
+#: build/templates/build/detail.html:135 templates/js/translated/build.js:911
msgid "Completed"
msgstr ""
@@ -1225,7 +1254,7 @@ msgstr ""
msgid "Auto Allocate"
msgstr ""
-#: build/templates/build/detail.html:175 templates/js/translated/build.js:778
+#: build/templates/build/detail.html:175 templates/js/translated/build.js:801
msgid "Unallocate stock"
msgstr ""
@@ -1238,8 +1267,8 @@ msgid "Order required parts"
msgstr ""
#: build/templates/build/detail.html:180
-#: company/templates/company/detail.html:33
-#: company/templates/company/detail.html:75 order/views.py:679
+#: company/templates/company/detail.html:32
+#: company/templates/company/detail.html:72 order/views.py:679
#: part/templates/part/category.html:140
msgid "Order Parts"
msgstr ""
@@ -1288,8 +1317,8 @@ msgstr ""
#: build/templates/build/navbar.html:45 order/templates/order/po_navbar.html:35
#: order/templates/order/sales_order_detail.html:43
#: order/templates/order/so_navbar.html:29 part/templates/part/detail.html:173
-#: part/templates/part/navbar.html:102 part/templates/part/navbar.html:105
-#: stock/templates/stock/item.html:87 stock/templates/stock/navbar.html:47
+#: part/templates/part/navbar.html:114 part/templates/part/navbar.html:117
+#: stock/templates/stock/item.html:88 stock/templates/stock/navbar.html:47
#: stock/templates/stock/navbar.html:50
msgid "Attachments"
msgstr ""
@@ -1298,48 +1327,48 @@ msgstr ""
msgid "Build Notes"
msgstr ""
-#: build/templates/build/detail.html:261 build/templates/build/detail.html:397
-#: company/templates/company/detail.html:173
-#: company/templates/company/detail.html:200
+#: build/templates/build/detail.html:261 build/templates/build/detail.html:398
+#: company/templates/company/detail.html:169
+#: company/templates/company/detail.html:196
#: order/templates/order/purchase_order_detail.html:62
#: order/templates/order/purchase_order_detail.html:95
#: order/templates/order/sales_order_detail.html:58
#: order/templates/order/sales_order_detail.html:85
-#: part/templates/part/detail.html:109 stock/templates/stock/item.html:102
-#: stock/templates/stock/item.html:187
+#: part/templates/part/detail.html:109 stock/templates/stock/item.html:103
+#: stock/templates/stock/item.html:188
msgid "Edit Notes"
msgstr ""
#: build/templates/build/detail.html:357
#: order/templates/order/po_attachments.html:79
-#: order/templates/order/purchase_order_detail.html:156
-#: order/templates/order/sales_order_detail.html:145
-#: part/templates/part/detail.html:802 stock/templates/stock/item.html:251
+#: order/templates/order/purchase_order_detail.html:157
+#: order/templates/order/sales_order_detail.html:146
+#: part/templates/part/detail.html:920 stock/templates/stock/item.html:253
#: templates/attachment_table.html:6
msgid "Add Attachment"
msgstr ""
-#: build/templates/build/detail.html:375
+#: build/templates/build/detail.html:376
#: order/templates/order/po_attachments.html:51
-#: order/templates/order/purchase_order_detail.html:128
-#: order/templates/order/sales_order_detail.html:118
-#: part/templates/part/detail.html:756 stock/templates/stock/item.html:219
+#: order/templates/order/purchase_order_detail.html:129
+#: order/templates/order/sales_order_detail.html:119
+#: part/templates/part/detail.html:874 stock/templates/stock/item.html:221
msgid "Edit Attachment"
msgstr ""
-#: build/templates/build/detail.html:382
+#: build/templates/build/detail.html:383
#: order/templates/order/po_attachments.html:58
-#: order/templates/order/purchase_order_detail.html:135
-#: order/templates/order/sales_order_detail.html:124
-#: part/templates/part/detail.html:765 stock/templates/stock/item.html:228
+#: order/templates/order/purchase_order_detail.html:136
+#: order/templates/order/sales_order_detail.html:125
+#: part/templates/part/detail.html:883 stock/templates/stock/item.html:230
msgid "Confirm Delete Operation"
msgstr ""
-#: build/templates/build/detail.html:383
+#: build/templates/build/detail.html:384
#: order/templates/order/po_attachments.html:59
-#: order/templates/order/purchase_order_detail.html:136
-#: order/templates/order/sales_order_detail.html:125
-#: part/templates/part/detail.html:766 stock/templates/stock/item.html:229
+#: order/templates/order/purchase_order_detail.html:137
+#: order/templates/order/sales_order_detail.html:126
+#: part/templates/part/detail.html:884 stock/templates/stock/item.html:231
msgid "Delete Attachment"
msgstr ""
@@ -1372,7 +1401,7 @@ msgid "Build Order Details"
msgstr ""
#: build/templates/build/navbar.html:15 order/templates/order/po_navbar.html:15
-#: templates/js/translated/stock.js:1414
+#: templates/js/translated/stock.js:1555
msgid "Details"
msgstr ""
@@ -1501,9 +1530,9 @@ msgstr ""
msgid "Stock item is over-allocated"
msgstr ""
-#: build/views.py:705 templates/js/translated/bom.js:250
-#: templates/js/translated/build.js:705 templates/js/translated/build.js:1000
-#: templates/js/translated/build.js:1179
+#: build/views.py:705 templates/js/translated/bom.js:269
+#: templates/js/translated/build.js:728 templates/js/translated/build.js:1019
+#: templates/js/translated/build.js:1196
msgid "Available"
msgstr ""
@@ -1539,7 +1568,7 @@ msgstr ""
msgid "Error reading file (data could be corrupted)"
msgstr ""
-#: common/forms.py:34 templates/js/translated/attachment.js:42
+#: common/forms.py:34 templates/js/translated/attachment.js:54
msgid "File"
msgstr ""
@@ -1556,546 +1585,594 @@ msgstr ""
msgid "Select {name} file to upload"
msgstr ""
-#: common/models.py:322 common/models.py:815 common/models.py:962
+#: common/models.py:308 common/models.py:839 common/models.py:986
msgid "Settings key (must be unique - case insensitive"
msgstr ""
-#: common/models.py:324
+#: common/models.py:310
msgid "Settings value"
msgstr ""
-#: common/models.py:359
+#: common/models.py:345
msgid "Must be an integer value"
msgstr ""
-#: common/models.py:382
+#: common/models.py:368
msgid "Value must be a boolean value"
msgstr ""
-#: common/models.py:393
+#: common/models.py:379
msgid "Value must be an integer value"
msgstr ""
-#: common/models.py:416
+#: common/models.py:402
msgid "Key string must be unique"
msgstr ""
-#: common/models.py:523
+#: common/models.py:509
msgid "InvenTree Instance Name"
msgstr ""
-#: common/models.py:525
+#: common/models.py:511
msgid "String descriptor for the server instance"
msgstr ""
-#: common/models.py:529
+#: common/models.py:515
msgid "Use instance name"
msgstr ""
-#: common/models.py:530
+#: common/models.py:516
msgid "Use the instance name in the title-bar"
msgstr ""
-#: common/models.py:536 company/models.py:97 company/models.py:98
+#: common/models.py:522 company/models.py:99 company/models.py:100
msgid "Company name"
msgstr ""
-#: common/models.py:537
+#: common/models.py:523
msgid "Internal company name"
msgstr ""
-#: common/models.py:542
+#: common/models.py:528
msgid "Base URL"
msgstr ""
-#: common/models.py:543
+#: common/models.py:529
msgid "Base URL for server instance"
msgstr ""
-#: common/models.py:549
+#: common/models.py:535
msgid "Default Currency"
msgstr ""
-#: common/models.py:550
+#: common/models.py:536
msgid "Default currency"
msgstr ""
-#: common/models.py:556
+#: common/models.py:542
msgid "Download from URL"
msgstr ""
-#: common/models.py:557
+#: common/models.py:543
msgid "Allow download of remote images and files from external URL"
msgstr ""
-#: common/models.py:563
+#: common/models.py:549
msgid "Barcode Support"
msgstr ""
-#: common/models.py:564
+#: common/models.py:550
msgid "Enable barcode scanner support"
msgstr ""
-#: common/models.py:570
+#: common/models.py:556
msgid "IPN Regex"
msgstr ""
-#: common/models.py:571
+#: common/models.py:557
msgid "Regular expression pattern for matching Part IPN"
msgstr ""
-#: common/models.py:575
+#: common/models.py:561
msgid "Allow Duplicate IPN"
msgstr ""
-#: common/models.py:576
+#: common/models.py:562
msgid "Allow multiple parts to share the same IPN"
msgstr ""
-#: common/models.py:582
+#: common/models.py:568
msgid "Allow Editing IPN"
msgstr ""
-#: common/models.py:583
+#: common/models.py:569
msgid "Allow changing the IPN value while editing a part"
msgstr ""
-#: common/models.py:589
+#: common/models.py:575
msgid "Copy Part BOM Data"
msgstr ""
-#: common/models.py:590
+#: common/models.py:576
msgid "Copy BOM data by default when duplicating a part"
msgstr ""
-#: common/models.py:596
+#: common/models.py:582
msgid "Copy Part Parameter Data"
msgstr ""
-#: common/models.py:597
+#: common/models.py:583
msgid "Copy parameter data by default when duplicating a part"
msgstr ""
-#: common/models.py:603
+#: common/models.py:589
msgid "Copy Part Test Data"
msgstr ""
-#: common/models.py:604
+#: common/models.py:590
msgid "Copy test data by default when duplicating a part"
msgstr ""
-#: common/models.py:610
+#: common/models.py:596
msgid "Copy Category Parameter Templates"
msgstr ""
-#: common/models.py:611
+#: common/models.py:597
msgid "Copy category parameter templates when creating a part"
msgstr ""
-#: common/models.py:617 part/models.py:2236 report/models.py:187
-#: stock/forms.py:224 templates/js/translated/table_filters.js:25
-#: templates/js/translated/table_filters.js:329
+#: common/models.py:603 part/models.py:2252 report/models.py:187
+#: stock/forms.py:224 templates/js/translated/table_filters.js:38
+#: templates/js/translated/table_filters.js:342
msgid "Template"
msgstr ""
-#: common/models.py:618
+#: common/models.py:604
msgid "Parts are templates by default"
msgstr ""
-#: common/models.py:624 part/models.py:803
-#: templates/js/translated/table_filters.js:133
-#: templates/js/translated/table_filters.js:341
+#: common/models.py:610 part/models.py:805
+#: templates/js/translated/table_filters.js:146
+#: templates/js/translated/table_filters.js:354
msgid "Assembly"
msgstr ""
-#: common/models.py:625
+#: common/models.py:611
msgid "Parts can be assembled from other components by default"
msgstr ""
-#: common/models.py:631 part/models.py:809
-#: templates/js/translated/table_filters.js:345
+#: common/models.py:617 part/models.py:811
+#: templates/js/translated/table_filters.js:358
msgid "Component"
msgstr ""
-#: common/models.py:632
+#: common/models.py:618
msgid "Parts can be used as sub-components by default"
msgstr ""
-#: common/models.py:638 part/models.py:820
+#: common/models.py:624 part/models.py:822
msgid "Purchaseable"
msgstr ""
-#: common/models.py:639
+#: common/models.py:625
msgid "Parts are purchaseable by default"
msgstr ""
-#: common/models.py:645 part/models.py:825
-#: templates/js/translated/table_filters.js:353
+#: common/models.py:631 part/models.py:827
+#: templates/js/translated/table_filters.js:366
msgid "Salable"
msgstr ""
-#: common/models.py:646
+#: common/models.py:632
msgid "Parts are salable by default"
msgstr ""
-#: common/models.py:652 part/models.py:815
-#: templates/js/translated/table_filters.js:33
-#: templates/js/translated/table_filters.js:357
+#: common/models.py:638 part/models.py:817
+#: templates/js/translated/table_filters.js:46
+#: templates/js/translated/table_filters.js:370
msgid "Trackable"
msgstr ""
-#: common/models.py:653
+#: common/models.py:639
msgid "Parts are trackable by default"
msgstr ""
-#: common/models.py:659 part/models.py:835
-#: part/templates/part/part_base.html:61
-#: templates/js/translated/table_filters.js:29
+#: common/models.py:645 part/models.py:837
+#: part/templates/part/part_base.html:66
+#: templates/js/translated/table_filters.js:42
msgid "Virtual"
msgstr ""
-#: common/models.py:660
+#: common/models.py:646
msgid "Parts are virtual by default"
msgstr ""
-#: common/models.py:667
+#: common/models.py:653
msgid "Show Quantity in Forms"
msgstr ""
-#: common/models.py:668
+#: common/models.py:654
msgid "Display available part quantity in some forms"
msgstr ""
-#: common/models.py:674
+#: common/models.py:660
msgid "Show Import in Views"
msgstr ""
-#: common/models.py:675
+#: common/models.py:661
msgid "Display the import wizard in some part views"
msgstr ""
-#: common/models.py:681
+#: common/models.py:667
msgid "Show Price in Forms"
msgstr ""
-#: common/models.py:682
+#: common/models.py:668
msgid "Display part price in some forms"
msgstr ""
-#: common/models.py:688
+#: common/models.py:674
msgid "Show related parts"
msgstr ""
-#: common/models.py:689
+#: common/models.py:675
msgid "Display related parts for a part"
msgstr ""
-#: common/models.py:695
+#: common/models.py:681
msgid "Create initial stock"
msgstr ""
-#: common/models.py:696
+#: common/models.py:682
msgid "Create initial stock on part creation"
msgstr ""
-#: common/models.py:702
+#: common/models.py:688
msgid "Internal Prices"
msgstr ""
-#: common/models.py:703
+#: common/models.py:689
msgid "Enable internal prices for parts"
msgstr ""
-#: common/models.py:709
+#: common/models.py:695
msgid "Internal Price as BOM-Price"
msgstr ""
-#: common/models.py:710
+#: common/models.py:696
msgid "Use the internal price (if set) in BOM-price calculations"
msgstr ""
-#: common/models.py:716 templates/stats.html:25
+#: common/models.py:702 templates/stats.html:25
msgid "Debug Mode"
msgstr ""
-#: common/models.py:717
+#: common/models.py:703
msgid "Generate reports in debug mode (HTML output)"
msgstr ""
-#: common/models.py:723
+#: common/models.py:709
msgid "Page Size"
msgstr ""
-#: common/models.py:724
+#: common/models.py:710
msgid "Default page size for PDF reports"
msgstr ""
-#: common/models.py:734
+#: common/models.py:720
msgid "Test Reports"
msgstr ""
-#: common/models.py:735
+#: common/models.py:721
msgid "Enable generation of test reports"
msgstr ""
-#: common/models.py:741
+#: common/models.py:727
msgid "Stock Expiry"
msgstr ""
-#: common/models.py:742
+#: common/models.py:728
msgid "Enable stock expiry functionality"
msgstr ""
-#: common/models.py:748
+#: common/models.py:734
msgid "Sell Expired Stock"
msgstr ""
-#: common/models.py:749
+#: common/models.py:735
msgid "Allow sale of expired stock"
msgstr ""
-#: common/models.py:755
+#: common/models.py:741
msgid "Stock Stale Time"
msgstr ""
-#: common/models.py:756
+#: common/models.py:742
msgid "Number of days stock items are considered stale before expiring"
msgstr ""
-#: common/models.py:758
+#: common/models.py:744
msgid "days"
msgstr ""
-#: common/models.py:763
+#: common/models.py:749
msgid "Build Expired Stock"
msgstr ""
-#: common/models.py:764
+#: common/models.py:750
msgid "Allow building with expired stock"
msgstr ""
-#: common/models.py:770
+#: common/models.py:756
msgid "Stock Ownership Control"
msgstr ""
-#: common/models.py:771
+#: common/models.py:757
msgid "Enable ownership control over stock locations and items"
msgstr ""
-#: common/models.py:777
+#: common/models.py:763
msgid "Group by Part"
msgstr ""
-#: common/models.py:778
+#: common/models.py:764
msgid "Group stock items by part reference in table views"
msgstr ""
-#: common/models.py:784
+#: common/models.py:770
msgid "Build Order Reference Prefix"
msgstr ""
-#: common/models.py:785
+#: common/models.py:771
msgid "Prefix value for build order reference"
msgstr ""
-#: common/models.py:790
+#: common/models.py:776
msgid "Build Order Reference Regex"
msgstr ""
-#: common/models.py:791
+#: common/models.py:777
msgid "Regular expression pattern for matching build order reference"
msgstr ""
-#: common/models.py:795
+#: common/models.py:781
msgid "Sales Order Reference Prefix"
msgstr ""
-#: common/models.py:796
+#: common/models.py:782
msgid "Prefix value for sales order reference"
msgstr ""
-#: common/models.py:801
+#: common/models.py:787
msgid "Purchase Order Reference Prefix"
msgstr ""
-#: common/models.py:802
+#: common/models.py:788
msgid "Prefix value for purchase order reference"
msgstr ""
-#: common/models.py:826
+#: common/models.py:794
+msgid "Enable build"
+msgstr ""
+
+#: common/models.py:795
+msgid "Enable build functionality in InvenTree interface"
+msgstr ""
+
+#: common/models.py:800
+msgid "Enable buy"
+msgstr ""
+
+#: common/models.py:801
+msgid "Enable buy functionality in InvenTree interface"
+msgstr ""
+
+#: common/models.py:806
+msgid "Enable sell"
+msgstr ""
+
+#: common/models.py:807
+msgid "Enable sell functionality in InvenTree interface"
+msgstr ""
+
+#: common/models.py:812
+msgid "Enable stock"
+msgstr ""
+
+#: common/models.py:813
+msgid "Enable stock functionality in InvenTree interface"
+msgstr ""
+
+#: common/models.py:818
+msgid "Enable SO"
+msgstr ""
+
+#: common/models.py:819
+msgid "Enable SO functionality in InvenTree interface"
+msgstr ""
+
+#: common/models.py:824
+msgid "Enable PO"
+msgstr ""
+
+#: common/models.py:825
+msgid "Enable PO functionality in InvenTree interface"
+msgstr ""
+
+#: common/models.py:850
msgid "Show starred parts"
msgstr ""
-#: common/models.py:827
+#: common/models.py:851
msgid "Show starred parts on the homepage"
msgstr ""
-#: common/models.py:832
+#: common/models.py:856
msgid "Show latest parts"
msgstr ""
-#: common/models.py:833
+#: common/models.py:857
msgid "Show latest parts on the homepage"
msgstr ""
-#: common/models.py:838
+#: common/models.py:862
msgid "Recent Part Count"
msgstr ""
-#: common/models.py:839
+#: common/models.py:863
msgid "Number of recent parts to display on index page"
msgstr ""
-#: common/models.py:845
+#: common/models.py:869
msgid "Show unvalidated BOMs"
msgstr ""
-#: common/models.py:846
+#: common/models.py:870
msgid "Show BOMs that await validation on the homepage"
msgstr ""
-#: common/models.py:851
+#: common/models.py:875
msgid "Show recent stock changes"
msgstr ""
-#: common/models.py:852
+#: common/models.py:876
msgid "Show recently changed stock items on the homepage"
msgstr ""
-#: common/models.py:857
+#: common/models.py:881
msgid "Recent Stock Count"
msgstr ""
-#: common/models.py:858
+#: common/models.py:882
msgid "Number of recent stock items to display on index page"
msgstr ""
-#: common/models.py:863
+#: common/models.py:887
msgid "Show low stock"
msgstr ""
-#: common/models.py:864
+#: common/models.py:888
msgid "Show low stock items on the homepage"
msgstr ""
-#: common/models.py:869
+#: common/models.py:893
msgid "Show depleted stock"
msgstr ""
-#: common/models.py:870
+#: common/models.py:894
msgid "Show depleted stock items on the homepage"
msgstr ""
-#: common/models.py:875
+#: common/models.py:899
msgid "Show needed stock"
msgstr ""
-#: common/models.py:876
+#: common/models.py:900
msgid "Show stock items needed for builds on the homepage"
msgstr ""
-#: common/models.py:881
+#: common/models.py:905
msgid "Show expired stock"
msgstr ""
-#: common/models.py:882
+#: common/models.py:906
msgid "Show expired stock items on the homepage"
msgstr ""
-#: common/models.py:887
+#: common/models.py:911
msgid "Show stale stock"
msgstr ""
-#: common/models.py:888
+#: common/models.py:912
msgid "Show stale stock items on the homepage"
msgstr ""
-#: common/models.py:893
+#: common/models.py:917
msgid "Show pending builds"
msgstr ""
-#: common/models.py:894
+#: common/models.py:918
msgid "Show pending builds on the homepage"
msgstr ""
-#: common/models.py:899
+#: common/models.py:923
msgid "Show overdue builds"
msgstr ""
-#: common/models.py:900
+#: common/models.py:924
msgid "Show overdue builds on the homepage"
msgstr ""
-#: common/models.py:905
+#: common/models.py:929
msgid "Show outstanding POs"
msgstr ""
-#: common/models.py:906
+#: common/models.py:930
msgid "Show outstanding POs on the homepage"
msgstr ""
-#: common/models.py:911
+#: common/models.py:935
msgid "Show overdue POs"
msgstr ""
-#: common/models.py:912
+#: common/models.py:936
msgid "Show overdue POs on the homepage"
msgstr ""
-#: common/models.py:917
+#: common/models.py:941
msgid "Show outstanding SOs"
msgstr ""
-#: common/models.py:918
+#: common/models.py:942
msgid "Show outstanding SOs on the homepage"
msgstr ""
-#: common/models.py:923
+#: common/models.py:947
msgid "Show overdue SOs"
msgstr ""
-#: common/models.py:924
+#: common/models.py:948
msgid "Show overdue SOs on the homepage"
msgstr ""
-#: common/models.py:930
+#: common/models.py:954
msgid "Inline label display"
msgstr ""
-#: common/models.py:931
+#: common/models.py:955
msgid "Display PDF labels in the browser, instead of downloading as a file"
msgstr ""
-#: common/models.py:937
+#: common/models.py:961
msgid "Inline report display"
msgstr ""
-#: common/models.py:938
+#: common/models.py:962
msgid "Display PDF reports in the browser, instead of downloading as a file"
msgstr ""
-#: common/models.py:944
+#: common/models.py:968
msgid "Search Preview Results"
msgstr ""
-#: common/models.py:945
+#: common/models.py:969
msgid "Number of results to show in search preview window"
msgstr ""
-#: common/models.py:1002 company/forms.py:43
+#: common/models.py:1026 company/forms.py:43
msgid "Price break quantity"
msgstr ""
-#: common/models.py:1009 company/templates/company/supplier_part.html:231
-#: templates/js/translated/part.js:1153
+#: common/models.py:1033 company/templates/company/supplier_part.html:231
+#: templates/js/translated/part.js:1322
msgid "Price"
msgstr ""
-#: common/models.py:1010
+#: common/models.py:1034
msgid "Unit price at specified quantity"
msgstr ""
-#: common/models.py:1103
+#: common/models.py:1127
msgid "Default"
msgstr ""
@@ -2123,7 +2200,7 @@ msgstr ""
#: order/templates/order/po_navbar.html:19
#: order/templates/order/po_navbar.html:22
#: order/templates/order/purchase_order_detail.html:26 order/views.py:290
-#: part/templates/part/bom_upload/upload_file.html:45
+#: part/templates/part/bom_upload/upload_file.html:65
#: part/templates/part/import_wizard/part_upload.html:45 part/views.py:268
#: part/views.py:882
msgid "Upload File"
@@ -2154,7 +2231,7 @@ msgstr ""
#: order/templates/order/order_wizard/po_upload.html:40
#: 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:43
+#: part/templates/part/bom_upload/upload_file.html:63
#: 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:43
@@ -2169,244 +2246,249 @@ msgstr ""
msgid "Image URL"
msgstr ""
-#: company/models.py:102
+#: company/models.py:104
msgid "Company description"
msgstr ""
-#: company/models.py:103
+#: company/models.py:105
msgid "Description of the company"
msgstr ""
-#: company/models.py:109 company/templates/company/company_base.html:70
-#: templates/js/translated/company.js:303
+#: company/models.py:111 company/templates/company/company_base.html:70
+#: templates/js/translated/company.js:348
msgid "Website"
msgstr ""
-#: company/models.py:110
+#: company/models.py:112
msgid "Company website URL"
msgstr ""
-#: company/models.py:114 company/templates/company/company_base.html:88
+#: company/models.py:116 company/templates/company/company_base.html:88
msgid "Address"
msgstr ""
-#: company/models.py:115
+#: company/models.py:117
msgid "Company address"
msgstr ""
-#: company/models.py:118
+#: company/models.py:120
msgid "Phone number"
msgstr ""
-#: company/models.py:119
+#: company/models.py:121
msgid "Contact phone number"
msgstr ""
-#: company/models.py:122 company/templates/company/company_base.html:102
+#: company/models.py:124 company/templates/company/company_base.html:102
msgid "Email"
msgstr ""
-#: company/models.py:122
+#: company/models.py:124
msgid "Contact email address"
msgstr ""
-#: company/models.py:125 company/templates/company/company_base.html:109
+#: company/models.py:127 company/templates/company/company_base.html:109
msgid "Contact"
msgstr ""
-#: company/models.py:126
+#: company/models.py:128
msgid "Point of contact"
msgstr ""
-#: company/models.py:128 company/models.py:345 company/models.py:513
-#: order/models.py:160 part/models.py:712
+#: company/models.py:130 company/models.py:347 company/models.py:563
+#: order/models.py:160 part/models.py:714
#: report/templates/report/inventree_build_order_base.html:165
-#: templates/js/translated/company.js:486
-#: templates/js/translated/company.js:768 templates/js/translated/part.js:819
+#: templates/js/translated/company.js:535
+#: templates/js/translated/company.js:823 templates/js/translated/part.js:972
msgid "Link"
msgstr ""
-#: company/models.py:128
+#: company/models.py:130
msgid "Link to external company information"
msgstr ""
-#: company/models.py:136 part/models.py:722
+#: company/models.py:138 part/models.py:724
msgid "Image"
msgstr ""
-#: company/models.py:141
+#: company/models.py:143
msgid "is customer"
msgstr ""
-#: company/models.py:141
+#: company/models.py:143
msgid "Do you sell items to this company?"
msgstr ""
-#: company/models.py:143
+#: company/models.py:145
msgid "is supplier"
msgstr ""
-#: company/models.py:143
+#: company/models.py:145
msgid "Do you purchase items from this company?"
msgstr ""
-#: company/models.py:145
+#: company/models.py:147
msgid "is manufacturer"
msgstr ""
-#: company/models.py:145
+#: company/models.py:147
msgid "Does this company manufacture parts?"
msgstr ""
-#: company/models.py:149 company/serializers.py:245
-#: company/templates/company/company_base.html:76
+#: company/models.py:151 company/serializers.py:264
+#: company/templates/company/company_base.html:76 stock/serializers.py:155
msgid "Currency"
msgstr ""
-#: company/models.py:152
+#: company/models.py:154
msgid "Default currency used for this company"
msgstr ""
-#: company/models.py:317 company/models.py:484 stock/models.py:448
+#: company/models.py:319 company/models.py:534 stock/models.py:454
#: stock/templates/stock/item_base.html:237
msgid "Base Part"
msgstr ""
-#: company/models.py:321 company/models.py:488 order/views.py:1082
+#: company/models.py:323 company/models.py:538 order/views.py:1082
msgid "Select part"
msgstr ""
-#: company/models.py:332 company/templates/company/company_base.html:116
+#: company/models.py:334 company/templates/company/company_base.html:116
#: company/templates/company/manufacturer_part.html:89
#: company/templates/company/supplier_part.html:98 part/bom.py:170
#: part/bom.py:241 stock/templates/stock/item_base.html:366
-#: templates/js/translated/company.js:287
-#: templates/js/translated/company.js:463
-#: templates/js/translated/company.js:739
+#: templates/js/translated/company.js:332
+#: templates/js/translated/company.js:512
+#: templates/js/translated/company.js:794 templates/js/translated/part.js:222
msgid "Manufacturer"
msgstr ""
-#: company/models.py:333
+#: company/models.py:335 templates/js/translated/part.js:223
msgid "Select manufacturer"
msgstr ""
-#: company/models.py:339 company/templates/company/manufacturer_part.html:93
-#: company/templates/company/supplier_part.html:106
-#: order/templates/order/purchase_order_detail.html:331 part/bom.py:171
-#: part/bom.py:242 templates/js/translated/company.js:479
-#: templates/js/translated/company.js:757
+#: company/models.py:341 company/templates/company/manufacturer_part.html:93
+#: company/templates/company/supplier_part.html:106 part/bom.py:171
+#: part/bom.py:242 templates/js/translated/company.js:528
+#: templates/js/translated/company.js:812 templates/js/translated/order.js:505
+#: templates/js/translated/part.js:233
msgid "MPN"
msgstr ""
-#: company/models.py:340
+#: company/models.py:342 templates/js/translated/part.js:234
msgid "Manufacturer Part Number"
msgstr ""
-#: company/models.py:346
+#: company/models.py:348
msgid "URL for external manufacturer part link"
msgstr ""
-#: company/models.py:352
+#: company/models.py:354
msgid "Manufacturer part description"
msgstr ""
-#: company/models.py:406 company/models.py:507
+#: company/models.py:408 company/models.py:557
#: company/templates/company/manufacturer_part.html:6
#: company/templates/company/manufacturer_part.html:23
#: stock/templates/stock/item_base.html:376
msgid "Manufacturer Part"
msgstr ""
-#: company/models.py:413
+#: company/models.py:415
msgid "Parameter name"
msgstr ""
-#: company/models.py:419
+#: company/models.py:421
#: report/templates/report/inventree_test_report_base.html:90
-#: stock/models.py:1808 templates/InvenTree/settings/header.html:8
-#: templates/js/translated/company.js:589 templates/js/translated/part.js:480
-#: templates/js/translated/stock.js:505
+#: stock/models.py:1819 templates/InvenTree/settings/header.html:8
+#: templates/js/translated/company.js:642 templates/js/translated/part.js:612
+#: templates/js/translated/stock.js:576
msgid "Value"
msgstr ""
-#: company/models.py:420
+#: company/models.py:422
msgid "Parameter value"
msgstr ""
-#: company/models.py:426 part/models.py:797 part/models.py:2204
-#: templates/js/translated/company.js:595 templates/js/translated/part.js:486
+#: company/models.py:428 part/models.py:799 part/models.py:2220
+#: templates/js/translated/company.js:648 templates/js/translated/part.js:618
msgid "Units"
msgstr ""
-#: company/models.py:427
+#: company/models.py:429
msgid "Parameter units"
msgstr ""
-#: company/models.py:494 company/templates/company/company_base.html:121
+#: company/models.py:501
+msgid "Linked manufacturer part must reference the same base part"
+msgstr ""
+
+#: company/models.py:544 company/templates/company/company_base.html:121
#: company/templates/company/supplier_part.html:88 order/models.py:260
#: order/templates/order/order_base.html:92
#: order/templates/order/order_wizard/select_pos.html:30 part/bom.py:175
#: part/bom.py:286 stock/templates/stock/item_base.html:383
-#: templates/js/translated/company.js:291
-#: templates/js/translated/company.js:713 templates/js/translated/order.js:254
+#: templates/js/translated/company.js:336
+#: templates/js/translated/company.js:768 templates/js/translated/order.js:328
+#: templates/js/translated/part.js:203
msgid "Supplier"
msgstr ""
-#: company/models.py:495
+#: company/models.py:545 templates/js/translated/part.js:204
msgid "Select supplier"
msgstr ""
-#: company/models.py:500 company/templates/company/supplier_part.html:92
-#: order/templates/order/purchase_order_detail.html:318 part/bom.py:176
-#: part/bom.py:287
+#: company/models.py:550 company/templates/company/supplier_part.html:92
+#: part/bom.py:176 part/bom.py:287 templates/js/translated/order.js:492
+#: templates/js/translated/part.js:214
msgid "SKU"
msgstr ""
-#: company/models.py:501
+#: company/models.py:551 templates/js/translated/part.js:215
msgid "Supplier stock keeping unit"
msgstr ""
-#: company/models.py:508
+#: company/models.py:558
msgid "Select manufacturer part"
msgstr ""
-#: company/models.py:514
+#: company/models.py:564
msgid "URL for external supplier part link"
msgstr ""
-#: company/models.py:520
+#: company/models.py:570
msgid "Supplier part description"
msgstr ""
-#: company/models.py:525 company/templates/company/supplier_part.html:120
-#: part/models.py:2352 report/templates/report/inventree_po_report.html:93
+#: company/models.py:575 company/templates/company/supplier_part.html:120
+#: part/models.py:2368 report/templates/report/inventree_po_report.html:93
#: report/templates/report/inventree_so_report.html:93
msgid "Note"
msgstr ""
-#: company/models.py:529 part/models.py:1590
+#: company/models.py:579 part/models.py:1599
msgid "base cost"
msgstr ""
-#: company/models.py:529 part/models.py:1590
+#: company/models.py:579 part/models.py:1599
msgid "Minimum charge (e.g. stocking fee)"
msgstr ""
-#: company/models.py:531 company/templates/company/supplier_part.html:113
-#: stock/models.py:472 stock/templates/stock/item_base.html:324
-#: templates/js/translated/company.js:789 templates/js/translated/stock.js:1086
+#: company/models.py:581 company/templates/company/supplier_part.html:113
+#: stock/models.py:478 stock/templates/stock/item_base.html:324
+#: templates/js/translated/company.js:844 templates/js/translated/stock.js:1057
msgid "Packaging"
msgstr ""
-#: company/models.py:531
+#: company/models.py:581
msgid "Part packaging"
msgstr ""
-#: company/models.py:533 part/models.py:1592
+#: company/models.py:583 part/models.py:1601
msgid "multiple"
msgstr ""
-#: company/models.py:533
+#: company/models.py:583
msgid "Order multiple"
msgstr ""
@@ -2420,7 +2502,7 @@ msgstr ""
#: company/templates/company/company_base.html:9
#: company/templates/company/company_base.html:35
-#: templates/InvenTree/search.html:304 templates/js/translated/company.js:276
+#: templates/InvenTree/search.html:304 templates/js/translated/company.js:321
msgid "Company"
msgstr ""
@@ -2435,7 +2517,7 @@ msgid "Download image from URL"
msgstr ""
#: company/templates/company/company_base.html:46
-#: templates/js/translated/order.js:83
+#: templates/js/translated/order.js:117
msgid "Create Purchase Order"
msgstr ""
@@ -2460,16 +2542,16 @@ msgstr ""
msgid "Phone"
msgstr ""
-#: company/templates/company/company_base.html:126 order/models.py:544
-#: order/templates/order/sales_order_base.html:94 stock/models.py:490
-#: stock/models.py:491 stock/templates/stock/item_base.html:276
-#: templates/js/translated/company.js:283 templates/js/translated/order.js:351
-#: templates/js/translated/stock.js:1467
+#: company/templates/company/company_base.html:126 order/models.py:550
+#: order/templates/order/sales_order_base.html:94 stock/models.py:496
+#: stock/models.py:497 stock/templates/stock/item_base.html:276
+#: templates/js/translated/company.js:328 templates/js/translated/order.js:692
+#: templates/js/translated/stock.js:1608
msgid "Customer"
msgstr ""
#: company/templates/company/company_base.html:193
-#: part/templates/part/part_base.html:405
+#: part/templates/part/part_base.html:418
msgid "Upload Image"
msgstr ""
@@ -2490,8 +2572,8 @@ msgstr ""
msgid "New Supplier Part"
msgstr ""
-#: company/templates/company/detail.html:28
-#: company/templates/company/detail.html:70
+#: company/templates/company/detail.html:27
+#: company/templates/company/detail.html:67
#: company/templates/company/manufacturer_part.html:112
#: company/templates/company/manufacturer_part.html:136
#: part/templates/part/category.html:135 part/templates/part/detail.html:292
@@ -2499,106 +2581,106 @@ msgstr ""
msgid "Options"
msgstr ""
-#: company/templates/company/detail.html:33
-#: company/templates/company/detail.html:75
+#: company/templates/company/detail.html:32
+#: company/templates/company/detail.html:72
#: part/templates/part/category.html:140
msgid "Order parts"
msgstr ""
-#: company/templates/company/detail.html:36
-#: company/templates/company/detail.html:78
+#: company/templates/company/detail.html:35
+#: company/templates/company/detail.html:75
msgid "Delete parts"
msgstr ""
-#: company/templates/company/detail.html:36
-#: company/templates/company/detail.html:78
+#: company/templates/company/detail.html:35
+#: company/templates/company/detail.html:75
msgid "Delete Parts"
msgstr ""
-#: company/templates/company/detail.html:56 templates/InvenTree/search.html:149
+#: company/templates/company/detail.html:54 templates/InvenTree/search.html:149
msgid "Manufacturer Parts"
msgstr ""
-#: company/templates/company/detail.html:64
+#: company/templates/company/detail.html:62
msgid "Create new manufacturer part"
msgstr ""
-#: company/templates/company/detail.html:65 part/templates/part/detail.html:312
+#: company/templates/company/detail.html:63 part/templates/part/detail.html:312
msgid "New Manufacturer Part"
msgstr ""
-#: company/templates/company/detail.html:97
+#: company/templates/company/detail.html:93
msgid "Supplier Stock"
msgstr ""
-#: company/templates/company/detail.html:106
-#: company/templates/company/navbar.html:40
-#: company/templates/company/navbar.html:43
+#: company/templates/company/detail.html:102
+#: company/templates/company/navbar.html:46
+#: company/templates/company/navbar.html:49
#: order/templates/order/purchase_orders.html:8
#: order/templates/order/purchase_orders.html:13
-#: part/templates/part/detail.html:50 part/templates/part/navbar.html:71
-#: part/templates/part/navbar.html:74 templates/InvenTree/index.html:260
+#: part/templates/part/detail.html:50 part/templates/part/navbar.html:82
+#: part/templates/part/navbar.html:85 templates/InvenTree/index.html:260
#: templates/InvenTree/search.html:325
#: templates/InvenTree/settings/navbar.html:107
-#: templates/InvenTree/settings/navbar.html:109 templates/navbar.html:37
+#: templates/InvenTree/settings/navbar.html:109 templates/navbar.html:44
#: users/models.py:45
msgid "Purchase Orders"
msgstr ""
-#: company/templates/company/detail.html:112
+#: company/templates/company/detail.html:108
#: order/templates/order/purchase_orders.html:20
msgid "Create new purchase order"
msgstr ""
-#: company/templates/company/detail.html:113
+#: company/templates/company/detail.html:109
#: order/templates/order/purchase_orders.html:21
msgid "New Purchase Order"
msgstr ""
-#: company/templates/company/detail.html:128
-#: company/templates/company/navbar.html:49
-#: company/templates/company/navbar.html:52
+#: company/templates/company/detail.html:124
+#: company/templates/company/navbar.html:55
+#: company/templates/company/navbar.html:58
#: order/templates/order/sales_orders.html:8
#: order/templates/order/sales_orders.html:13
-#: part/templates/part/detail.html:71 part/templates/part/navbar.html:79
-#: part/templates/part/navbar.html:82 templates/InvenTree/index.html:291
+#: part/templates/part/detail.html:71 part/templates/part/navbar.html:91
+#: part/templates/part/navbar.html:94 templates/InvenTree/index.html:291
#: templates/InvenTree/search.html:345
#: templates/InvenTree/settings/navbar.html:113
-#: templates/InvenTree/settings/navbar.html:115 templates/navbar.html:46
+#: templates/InvenTree/settings/navbar.html:115 templates/navbar.html:55
#: users/models.py:46
msgid "Sales Orders"
msgstr ""
-#: company/templates/company/detail.html:134
+#: company/templates/company/detail.html:130
#: order/templates/order/sales_orders.html:20
msgid "Create new sales order"
msgstr ""
-#: company/templates/company/detail.html:135
+#: company/templates/company/detail.html:131
#: order/templates/order/sales_orders.html:21
msgid "New Sales Order"
msgstr ""
-#: company/templates/company/detail.html:151
-#: company/templates/company/navbar.html:55
-#: company/templates/company/navbar.html:58
-#: templates/js/translated/build.js:597
+#: company/templates/company/detail.html:147
+#: company/templates/company/navbar.html:61
+#: company/templates/company/navbar.html:64
+#: templates/js/translated/build.js:620
msgid "Assigned Stock"
msgstr ""
-#: company/templates/company/detail.html:169
+#: company/templates/company/detail.html:165
msgid "Company Notes"
msgstr ""
#: company/templates/company/detail.html:364
#: company/templates/company/manufacturer_part.html:200
-#: part/templates/part/detail.html:826
+#: part/templates/part/detail.html:357
msgid "Delete Supplier Parts?"
msgstr ""
#: company/templates/company/detail.html:365
#: company/templates/company/manufacturer_part.html:201
-#: part/templates/part/detail.html:827
+#: part/templates/part/detail.html:358
msgid "All selected supplier parts will be deleted"
msgstr ""
@@ -2609,17 +2691,17 @@ msgstr ""
#: company/templates/company/manufacturer_part.html:40
#: company/templates/company/supplier_part.html:40
#: company/templates/company/supplier_part.html:146
-#: part/templates/part/detail.html:55 part/templates/part/part_base.html:109
+#: part/templates/part/detail.html:55 part/templates/part/part_base.html:116
msgid "Order part"
msgstr ""
#: company/templates/company/manufacturer_part.html:45
-#: templates/js/translated/company.js:511
+#: templates/js/translated/company.js:560
msgid "Edit manufacturer part"
msgstr ""
#: company/templates/company/manufacturer_part.html:49
-#: templates/js/translated/company.js:512
+#: templates/js/translated/company.js:561
msgid "Delete manufacturer part"
msgstr ""
@@ -2634,9 +2716,9 @@ msgstr ""
#: company/templates/company/manufacturer_part.html:103
#: company/templates/company/manufacturer_part_navbar.html:21
-#: company/views.py:49 part/templates/part/navbar.html:65
-#: part/templates/part/navbar.html:68 part/templates/part/prices.html:144
-#: templates/InvenTree/search.html:316 templates/navbar.html:35
+#: company/views.py:49 part/templates/part/navbar.html:75
+#: part/templates/part/navbar.html:78 part/templates/part/prices.html:163
+#: templates/InvenTree/search.html:316 templates/navbar.html:41
msgid "Suppliers"
msgstr ""
@@ -2649,8 +2731,8 @@ msgstr ""
#: company/templates/company/manufacturer_part.html:138
#: company/templates/company/manufacturer_part.html:239
#: part/templates/part/detail.html:214 part/templates/part/detail.html:294
-#: part/templates/part/detail.html:317 templates/js/translated/company.js:377
-#: users/models.py:194
+#: part/templates/part/detail.html:317 templates/js/translated/company.js:424
+#: templates/js/translated/helpers.js:31 users/models.py:194
msgid "Delete"
msgstr ""
@@ -2659,8 +2741,8 @@ msgstr ""
#: company/templates/company/manufacturer_part_navbar.html:14
#: part/templates/part/category_navbar.html:38
#: part/templates/part/category_navbar.html:41
-#: part/templates/part/detail.html:155 part/templates/part/navbar.html:14
-#: part/templates/part/navbar.html:17
+#: part/templates/part/detail.html:155 part/templates/part/navbar.html:20
+#: part/templates/part/navbar.html:23
msgid "Parameters"
msgstr ""
@@ -2676,7 +2758,7 @@ msgid "Delete parameters"
msgstr ""
#: company/templates/company/manufacturer_part.html:176
-#: part/templates/part/detail.html:719
+#: part/templates/part/detail.html:834
msgid "Add Parameter"
msgstr ""
@@ -2693,18 +2775,18 @@ msgid "Manufacturer Part Stock"
msgstr ""
#: company/templates/company/manufacturer_part_navbar.html:29
-#: company/templates/company/navbar.html:34
+#: company/templates/company/navbar.html:39
#: company/templates/company/supplier_part_navbar.html:15
-#: part/templates/part/navbar.html:31 stock/api.py:53
+#: part/templates/part/navbar.html:38 stock/api.py:54
#: stock/templates/stock/loc_link.html:7 stock/templates/stock/location.html:36
#: stock/templates/stock/stock_app_base.html:10
#: templates/InvenTree/index.html:150 templates/InvenTree/search.html:196
#: templates/InvenTree/search.html:232
#: templates/InvenTree/settings/navbar.html:95
#: templates/InvenTree/settings/navbar.html:97
-#: templates/js/translated/part.js:401 templates/js/translated/part.js:626
-#: templates/js/translated/part.js:786 templates/js/translated/stock.js:133
-#: templates/js/translated/stock.js:935 templates/navbar.html:26
+#: templates/js/translated/part.js:529 templates/js/translated/part.js:758
+#: templates/js/translated/part.js:934 templates/js/translated/stock.js:202
+#: templates/js/translated/stock.js:850 templates/navbar.html:32
msgid "Stock"
msgstr ""
@@ -2717,41 +2799,41 @@ msgstr ""
msgid "Orders"
msgstr ""
-#: company/templates/company/navbar.html:13
-#: company/templates/company/navbar.html:16
+#: company/templates/company/navbar.html:17
+#: company/templates/company/navbar.html:20
msgid "Manufactured Parts"
msgstr ""
-#: company/templates/company/navbar.html:22
-#: company/templates/company/navbar.html:25
+#: company/templates/company/navbar.html:26
+#: company/templates/company/navbar.html:29
msgid "Supplied Parts"
msgstr ""
-#: company/templates/company/navbar.html:31 part/templates/part/navbar.html:28
+#: company/templates/company/navbar.html:36 part/templates/part/navbar.html:35
#: stock/templates/stock/location.html:119
#: stock/templates/stock/location.html:134
#: stock/templates/stock/location.html:148
#: stock/templates/stock/location_navbar.html:18
#: stock/templates/stock/location_navbar.html:21
-#: templates/InvenTree/search.html:198 templates/js/translated/stock.js:1366
+#: templates/InvenTree/search.html:198 templates/js/translated/stock.js:1507
#: templates/stats.html:93 templates/stats.html:102 users/models.py:43
msgid "Stock Items"
msgstr ""
#: company/templates/company/supplier_part.html:7
-#: company/templates/company/supplier_part.html:24 stock/models.py:457
+#: company/templates/company/supplier_part.html:24 stock/models.py:463
#: stock/templates/stock/item_base.html:388
-#: templates/js/translated/company.js:729 templates/js/translated/stock.js:1058
+#: templates/js/translated/company.js:784 templates/js/translated/stock.js:1014
msgid "Supplier Part"
msgstr ""
#: company/templates/company/supplier_part.html:44
-#: templates/js/translated/company.js:802
+#: templates/js/translated/company.js:857
msgid "Edit supplier part"
msgstr ""
#: company/templates/company/supplier_part.html:48
-#: templates/js/translated/company.js:803
+#: templates/js/translated/company.js:858
msgid "Delete supplier part"
msgstr ""
@@ -2775,13 +2857,13 @@ msgid "Order Part"
msgstr ""
#: company/templates/company/supplier_part.html:158
-#: part/templates/part/navbar.html:58 part/templates/part/prices.html:7
+#: part/templates/part/navbar.html:67 part/templates/part/prices.html:7
msgid "Pricing Information"
msgstr ""
#: company/templates/company/supplier_part.html:164
#: company/templates/company/supplier_part.html:265
-#: part/templates/part/prices.html:253 part/views.py:1722
+#: part/templates/part/prices.html:271 part/views.py:1730
msgid "Add Price Break"
msgstr ""
@@ -2789,11 +2871,11 @@ msgstr ""
msgid "No price break information found"
msgstr ""
-#: company/templates/company/supplier_part.html:199 part/views.py:1784
+#: company/templates/company/supplier_part.html:199 part/views.py:1792
msgid "Delete Price Break"
msgstr ""
-#: company/templates/company/supplier_part.html:213 part/views.py:1770
+#: company/templates/company/supplier_part.html:213 part/views.py:1778
msgid "Edit Price Break"
msgstr ""
@@ -2817,8 +2899,8 @@ msgstr ""
msgid "New Supplier"
msgstr ""
-#: company/views.py:55 part/templates/part/prices.html:148
-#: templates/InvenTree/search.html:306 templates/navbar.html:36
+#: company/views.py:55 part/templates/part/prices.html:167
+#: templates/InvenTree/search.html:306 templates/navbar.html:42
msgid "Manufacturers"
msgstr ""
@@ -2827,7 +2909,7 @@ msgid "New Manufacturer"
msgstr ""
#: company/views.py:61 templates/InvenTree/search.html:336
-#: templates/navbar.html:45
+#: templates/navbar.html:53
msgid "Customers"
msgstr ""
@@ -2929,6 +3011,10 @@ msgstr ""
msgid "Part query filters (comma-separated value of key=value pairs)"
msgstr ""
+#: order/api.py:302
+msgid "Destination location must be specified"
+msgstr ""
+
#: order/forms.py:30 order/templates/order/order_base.html:47
msgid "Place order"
msgstr ""
@@ -2978,11 +3064,11 @@ msgstr ""
msgid "Order notes"
msgstr ""
-#: order/models.py:247 order/models.py:534
+#: order/models.py:247 order/models.py:540
msgid "Order reference"
msgstr ""
-#: order/models.py:252 order/models.py:549
+#: order/models.py:252 order/models.py:555
msgid "Purchase order status"
msgstr ""
@@ -2991,7 +3077,7 @@ msgid "Company from which the items are being ordered"
msgstr ""
#: order/models.py:264 order/templates/order/order_base.html:98
-#: templates/js/translated/order.js:263
+#: templates/js/translated/order.js:337
msgid "Supplier Reference"
msgstr ""
@@ -3023,7 +3109,7 @@ msgstr ""
msgid "Date order was completed"
msgstr ""
-#: order/models.py:313 stock/models.py:345 stock/models.py:1060
+#: order/models.py:313 stock/models.py:351 stock/models.py:1072
msgid "Quantity must be greater than zero"
msgstr ""
@@ -3031,150 +3117,182 @@ msgstr ""
msgid "Part supplier must match PO supplier"
msgstr ""
-#: order/models.py:416
+#: order/models.py:421
msgid "Lines can only be received against an order marked as 'Placed'"
msgstr ""
-#: order/models.py:420
+#: order/models.py:425
msgid "Quantity must be an integer"
msgstr ""
-#: order/models.py:422
+#: order/models.py:427
msgid "Quantity must be a positive number"
msgstr ""
-#: order/models.py:545
+#: order/models.py:551
msgid "Company to which the items are being sold"
msgstr ""
-#: order/models.py:551
+#: order/models.py:557
msgid "Customer Reference "
msgstr ""
-#: order/models.py:551
+#: order/models.py:557
msgid "Customer order reference code"
msgstr ""
-#: order/models.py:556
+#: order/models.py:562
msgid "Target date for order completion. Order will be overdue after this date."
msgstr ""
-#: order/models.py:559 templates/js/translated/order.js:392
+#: order/models.py:565 templates/js/translated/order.js:733
msgid "Shipment Date"
msgstr ""
-#: order/models.py:566
+#: order/models.py:572
msgid "shipped by"
msgstr ""
-#: order/models.py:610
+#: order/models.py:616
msgid "SalesOrder cannot be shipped as it is not currently pending"
msgstr ""
-#: order/models.py:707
+#: order/models.py:713
msgid "Item quantity"
msgstr ""
-#: order/models.py:713
+#: order/models.py:719
msgid "Line item reference"
msgstr ""
-#: order/models.py:715
+#: order/models.py:721
msgid "Line item notes"
msgstr ""
-#: order/models.py:745 order/models.py:823 templates/js/translated/order.js:442
+#: order/models.py:751 order/models.py:835 templates/js/translated/order.js:785
msgid "Order"
msgstr ""
-#: order/models.py:746 order/templates/order/order_base.html:9
+#: order/models.py:752 order/templates/order/order_base.html:9
#: order/templates/order/order_base.html:24
#: report/templates/report/inventree_po_report.html:77
#: stock/templates/stock/item_base.html:338
-#: templates/js/translated/order.js:232 templates/js/translated/stock.js:1037
-#: templates/js/translated/stock.js:1448
+#: templates/js/translated/order.js:306 templates/js/translated/stock.js:991
+#: templates/js/translated/stock.js:1589
msgid "Purchase Order"
msgstr ""
-#: order/models.py:767
+#: order/models.py:773
msgid "Supplier part"
msgstr ""
-#: order/models.py:770 order/templates/order/order_base.html:131
-#: order/templates/order/purchase_order_detail.html:388
+#: order/models.py:780 order/templates/order/order_base.html:131
#: order/templates/order/receive_parts.html:22
#: order/templates/order/sales_order_base.html:133
+#: templates/js/translated/order.js:573
msgid "Received"
msgstr ""
-#: order/models.py:770
+#: order/models.py:781
msgid "Number of items received"
msgstr ""
-#: order/models.py:776 part/templates/part/prices.html:157 stock/models.py:582
-#: stock/templates/stock/item_base.html:345
-#: templates/js/translated/stock.js:1081
+#: order/models.py:788 part/templates/part/prices.html:176 stock/models.py:588
+#: stock/serializers.py:147 stock/templates/stock/item_base.html:345
+#: templates/js/translated/stock.js:1045
msgid "Purchase Price"
msgstr ""
-#: order/models.py:777
+#: order/models.py:789
msgid "Unit purchase price"
msgstr ""
-#: order/models.py:785
+#: order/models.py:797
msgid "Where does the Purchaser want this item to be stored?"
msgstr ""
-#: order/models.py:831 part/templates/part/part_pricing.html:97
-#: part/templates/part/prices.html:97 part/templates/part/prices.html:266
+#: order/models.py:843 part/templates/part/part_pricing.html:112
+#: part/templates/part/prices.html:116 part/templates/part/prices.html:284
msgid "Sale Price"
msgstr ""
-#: order/models.py:832
+#: order/models.py:844
msgid "Unit sale price"
msgstr ""
-#: order/models.py:911 order/models.py:913
+#: order/models.py:923 order/models.py:925
msgid "Stock item has not been assigned"
msgstr ""
-#: order/models.py:917
+#: order/models.py:929
msgid "Cannot allocate stock item to a line with a different part"
msgstr ""
-#: order/models.py:919
+#: order/models.py:931
msgid "Cannot allocate stock to a line without a part"
msgstr ""
-#: order/models.py:922
+#: order/models.py:934
msgid "Allocation quantity cannot exceed stock quantity"
msgstr ""
-#: order/models.py:932
+#: order/models.py:944
msgid "Quantity must be 1 for serialized stock item"
msgstr ""
-#: order/models.py:937
+#: order/models.py:949
msgid "Line"
msgstr ""
-#: order/models.py:948
+#: order/models.py:960
msgid "Item"
msgstr ""
-#: order/models.py:949
+#: order/models.py:961
msgid "Select stock item to allocate"
msgstr ""
-#: order/models.py:952
+#: order/models.py:964
msgid "Enter stock allocation quantity"
msgstr ""
-#: order/serializers.py:139
+#: order/serializers.py:166
msgid "Purchase price currency"
msgstr ""
-#: order/serializers.py:360
+#: order/serializers.py:201
+msgid "Line Item"
+msgstr ""
+
+#: order/serializers.py:207
+msgid "Line item does not match purchase order"
+msgstr ""
+
+#: order/serializers.py:217 order/serializers.py:276
+msgid "Select destination location for received items"
+msgstr ""
+
+#: order/serializers.py:234
+msgid "Barcode Hash"
+msgstr ""
+
+#: order/serializers.py:235
+msgid "Unique identifier field"
+msgstr ""
+
+#: order/serializers.py:250
+msgid "Barcode is already in use"
+msgstr ""
+
+#: order/serializers.py:289
+msgid "Line items must be provided"
+msgstr ""
+
+#: order/serializers.py:299
+msgid "Supplied barcode values must be unique"
+msgstr ""
+
+#: order/serializers.py:514
msgid "Sale price currency"
msgstr ""
@@ -3227,14 +3345,12 @@ msgid "Edit Purchase Order"
msgstr ""
#: order/templates/order/order_base.html:196
-#: order/templates/order/purchase_order_detail.html:265
-#: stock/templates/stock/location.html:250
+#: stock/templates/stock/location.html:250 templates/js/translated/order.js:437
msgid "New Location"
msgstr ""
#: order/templates/order/order_base.html:197
-#: order/templates/order/purchase_order_detail.html:266
-#: stock/templates/stock/location.html:42
+#: stock/templates/stock/location.html:42 templates/js/translated/order.js:438
msgid "Create new stock location"
msgstr ""
@@ -3336,7 +3452,7 @@ msgid "Upload File for Purchase Order"
msgstr ""
#: order/templates/order/order_wizard/po_upload.html:18
-#: part/templates/part/bom_upload/upload_file.html:24
+#: part/templates/part/bom_upload/upload_file.html:34
#: part/templates/part/import_wizard/ajax_part_upload.html:10
#: part/templates/part/import_wizard/part_upload.html:21
#, python-format
@@ -3369,7 +3485,7 @@ msgstr ""
#: order/templates/order/order_wizard/select_parts.html:65
#, python-format
-msgid "Select a supplier for %(name)s"
+msgid "Select a supplier for %(name)s"
msgstr ""
#: order/templates/order/order_wizard/select_parts.html:77
@@ -3386,7 +3502,7 @@ msgid "Select existing purchase orders, or create new orders."
msgstr ""
#: order/templates/order/order_wizard/select_pos.html:31
-#: templates/js/translated/order.js:289 templates/js/translated/order.js:397
+#: templates/js/translated/order.js:363 templates/js/translated/order.js:738
msgid "Items"
msgstr ""
@@ -3425,9 +3541,9 @@ msgid "Purchase Order Items"
msgstr ""
#: order/templates/order/purchase_order_detail.html:23
-#: order/templates/order/purchase_order_detail.html:202
+#: order/templates/order/purchase_order_detail.html:203
#: order/templates/order/sales_order_detail.html:23
-#: order/templates/order/sales_order_detail.html:176
+#: order/templates/order/sales_order_detail.html:177
msgid "Add Line Item"
msgstr ""
@@ -3436,49 +3552,6 @@ msgstr ""
msgid "Order Notes"
msgstr ""
-#: order/templates/order/purchase_order_detail.html:238
-#: order/templates/order/sales_order_detail.html:518
-msgid "Edit Line Item"
-msgstr ""
-
-#: order/templates/order/purchase_order_detail.html:248
-#: order/templates/order/sales_order_detail.html:528
-msgid "Delete Line Item"
-msgstr ""
-
-#: order/templates/order/purchase_order_detail.html:279
-msgid "No line items found"
-msgstr ""
-
-#: order/templates/order/purchase_order_detail.html:307
-#: order/templates/order/sales_order_detail.html:353
-msgid "Total"
-msgstr ""
-
-#: order/templates/order/purchase_order_detail.html:360
-#: order/templates/order/sales_order_detail.html:376
-#: templates/js/translated/part.js:1128 templates/js/translated/part.js:1317
-msgid "Unit Price"
-msgstr ""
-
-#: order/templates/order/purchase_order_detail.html:367
-#: order/templates/order/sales_order_detail.html:383
-msgid "Total price"
-msgstr ""
-
-#: order/templates/order/purchase_order_detail.html:431
-#: order/templates/order/sales_order_detail.html:489
-msgid "Edit line item"
-msgstr ""
-
-#: order/templates/order/purchase_order_detail.html:432
-msgid "Delete line item"
-msgstr ""
-
-#: order/templates/order/purchase_order_detail.html:437
-msgid "Receive line item"
-msgstr ""
-
#: order/templates/order/purchase_orders.html:24
#: order/templates/order/sales_orders.html:24
msgid "Print Order Reports"
@@ -3486,18 +3559,18 @@ msgstr ""
#: order/templates/order/receive_parts.html:8
#, python-format
-msgid "Receive outstanding parts for %(order)s - %(desc)s"
+msgid "Receive outstanding parts for %(order)s - %(desc)s"
msgstr ""
-#: order/templates/order/receive_parts.html:14 part/api.py:49
-#: part/models.py:296 part/templates/part/cat_link.html:7
+#: order/templates/order/receive_parts.html:14 part/api.py:54
+#: part/models.py:298 part/templates/part/cat_link.html:7
#: part/templates/part/category.html:108 part/templates/part/category.html:122
#: part/templates/part/category_navbar.html:21
#: part/templates/part/category_navbar.html:24
#: templates/InvenTree/index.html:102 templates/InvenTree/search.html:114
#: templates/InvenTree/settings/navbar.html:83
#: templates/InvenTree/settings/navbar.html:85
-#: templates/js/translated/part.js:987 templates/navbar.html:23
+#: templates/js/translated/part.js:1154 templates/navbar.html:29
#: templates/stats.html:80 templates/stats.html:89 users/models.py:41
msgid "Parts"
msgstr ""
@@ -3511,7 +3584,7 @@ msgid "Order Code"
msgstr ""
#: order/templates/order/receive_parts.html:21
-#: part/templates/part/part_base.html:160 templates/js/translated/part.js:802
+#: part/templates/part/part_base.html:167 templates/js/translated/part.js:949
msgid "On Order"
msgstr ""
@@ -3540,7 +3613,7 @@ msgid "Sales Order Details"
msgstr ""
#: order/templates/order/sales_order_base.html:100
-#: templates/js/translated/order.js:364
+#: templates/js/translated/order.js:705
msgid "Customer Reference"
msgstr ""
@@ -3563,71 +3636,102 @@ msgstr ""
msgid "Sales Order Items"
msgstr ""
-#: order/templates/order/sales_order_detail.html:225
-#: templates/js/translated/bom.js:378 templates/js/translated/build.js:759
-#: templates/js/translated/build.js:1202
+#: order/templates/order/sales_order_detail.html:226
+#: templates/js/translated/bom.js:394 templates/js/translated/build.js:782
+#: templates/js/translated/build.js:1219
msgid "Actions"
msgstr ""
-#: order/templates/order/sales_order_detail.html:232
-#: templates/js/translated/build.js:645 templates/js/translated/build.js:1011
+#: order/templates/order/sales_order_detail.html:233
+#: templates/js/translated/build.js:668 templates/js/translated/build.js:1030
msgid "Edit stock allocation"
msgstr ""
-#: order/templates/order/sales_order_detail.html:233
-#: templates/js/translated/build.js:647 templates/js/translated/build.js:1012
+#: order/templates/order/sales_order_detail.html:234
+#: templates/js/translated/build.js:670 templates/js/translated/build.js:1031
msgid "Delete stock allocation"
msgstr ""
-#: order/templates/order/sales_order_detail.html:306
+#: order/templates/order/sales_order_detail.html:307
msgid "No matching line items"
msgstr ""
-#: order/templates/order/sales_order_detail.html:336
+#: order/templates/order/sales_order_detail.html:337
msgid "ID"
msgstr ""
-#: order/templates/order/sales_order_detail.html:404
-#: templates/js/translated/build.js:710 templates/js/translated/build.js:1007
+#: order/templates/order/sales_order_detail.html:354
+#: templates/js/translated/order.js:481
+msgid "Total"
+msgstr ""
+
+#: order/templates/order/sales_order_detail.html:377
+#: templates/js/translated/order.js:534 templates/js/translated/part.js:1296
+#: templates/js/translated/part.js:1507
+msgid "Unit Price"
+msgstr ""
+
+#: order/templates/order/sales_order_detail.html:384
+#: templates/js/translated/order.js:543
+msgid "Total price"
+msgstr ""
+
+#: order/templates/order/sales_order_detail.html:405
+#: templates/js/translated/build.js:733 templates/js/translated/build.js:1026
msgid "Allocated"
msgstr ""
-#: order/templates/order/sales_order_detail.html:406
+#: order/templates/order/sales_order_detail.html:407
msgid "Fulfilled"
msgstr ""
-#: order/templates/order/sales_order_detail.html:443
+#: order/templates/order/sales_order_detail.html:444
msgid "PO"
msgstr ""
-#: order/templates/order/sales_order_detail.html:473
+#: order/templates/order/sales_order_detail.html:474
msgid "Allocate serial numbers"
msgstr ""
-#: order/templates/order/sales_order_detail.html:476
-#: templates/js/translated/build.js:773
+#: order/templates/order/sales_order_detail.html:477
+#: templates/js/translated/build.js:796
msgid "Allocate stock"
msgstr ""
-#: order/templates/order/sales_order_detail.html:479
+#: order/templates/order/sales_order_detail.html:480
msgid "Purchase stock"
msgstr ""
-#: order/templates/order/sales_order_detail.html:483
-#: templates/js/translated/build.js:766 templates/js/translated/build.js:1210
+#: order/templates/order/sales_order_detail.html:484
+#: templates/js/translated/build.js:789 templates/js/translated/build.js:1227
msgid "Build stock"
msgstr ""
-#: order/templates/order/sales_order_detail.html:486
-#: order/templates/order/sales_order_detail.html:605
+#: order/templates/order/sales_order_detail.html:487
+#: order/templates/order/sales_order_detail.html:606
msgid "Calculate price"
msgstr ""
#: order/templates/order/sales_order_detail.html:490
+#: templates/js/translated/order.js:616
+msgid "Edit line item"
+msgstr ""
+
+#: order/templates/order/sales_order_detail.html:491
msgid "Delete line item "
msgstr ""
-#: order/templates/order/sales_order_detail.html:611
+#: order/templates/order/sales_order_detail.html:519
+#: templates/js/translated/order.js:403
+msgid "Edit Line Item"
+msgstr ""
+
+#: order/templates/order/sales_order_detail.html:529
+#: templates/js/translated/order.js:415
+msgid "Delete Line Item"
+msgstr ""
+
+#: order/templates/order/sales_order_detail.html:612
msgid "Update Unit Price"
msgstr ""
@@ -3814,12 +3918,28 @@ msgstr ""
msgid "Updated {part} unit-price to {price} and quantity to {qty}"
msgstr ""
-#: part/bom.py:133 part/models.py:73 part/models.py:731
-#: part/templates/part/category.html:75 part/templates/part/part_base.html:282
+#: part/api.py:700
+msgid "Must be greater than zero"
+msgstr ""
+
+#: part/api.py:704
+msgid "Must be a valid quantity"
+msgstr ""
+
+#: part/api.py:719
+msgid "Specify location for initial part stock"
+msgstr ""
+
+#: part/api.py:750 part/api.py:754 part/api.py:769 part/api.py:773
+msgid "This field is required"
+msgstr ""
+
+#: part/bom.py:133 part/models.py:75 part/models.py:733
+#: part/templates/part/category.html:75 part/templates/part/part_base.html:290
msgid "Default Location"
msgstr ""
-#: part/bom.py:134 part/templates/part/part_base.html:149
+#: part/bom.py:134 part/templates/part/part_base.html:156
msgid "Available Stock"
msgstr ""
@@ -3879,7 +3999,7 @@ msgstr ""
msgid "Include part supplier data in exported BOM"
msgstr ""
-#: part/forms.py:96 part/models.py:2234
+#: part/forms.py:96 part/models.py:2250
msgid "Parent Part"
msgstr ""
@@ -3923,391 +4043,391 @@ msgstr ""
msgid "Input quantity for price calculation"
msgstr ""
-#: part/models.py:74
+#: part/models.py:76
msgid "Default location for parts in this category"
msgstr ""
-#: part/models.py:77
+#: part/models.py:79
msgid "Default keywords"
msgstr ""
-#: part/models.py:77
+#: part/models.py:79
msgid "Default keywords for parts in this category"
msgstr ""
-#: part/models.py:87 part/models.py:2280
+#: part/models.py:89 part/models.py:2296
#: part/templates/part/part_app_base.html:10
msgid "Part Category"
msgstr ""
-#: part/models.py:88 part/templates/part/category.html:32
+#: part/models.py:90 part/templates/part/category.html:32
#: part/templates/part/category.html:103 templates/InvenTree/search.html:127
#: templates/stats.html:84 users/models.py:40
msgid "Part Categories"
msgstr ""
-#: part/models.py:381
+#: part/models.py:383
msgid "Invalid choice for parent part"
msgstr ""
-#: part/models.py:433 part/models.py:445
+#: part/models.py:435 part/models.py:447
#, python-brace-format
msgid "Part '{p1}' is used in BOM for '{p2}' (recursive)"
msgstr ""
-#: part/models.py:542
+#: part/models.py:544
msgid "Next available serial numbers are"
msgstr ""
-#: part/models.py:546
+#: part/models.py:548
msgid "Next available serial number is"
msgstr ""
-#: part/models.py:551
+#: part/models.py:553
msgid "Most recent serial number is"
msgstr ""
-#: part/models.py:630
+#: part/models.py:632
msgid "Duplicate IPN not allowed in part settings"
msgstr ""
-#: part/models.py:655
+#: part/models.py:657
msgid "Part name"
msgstr ""
-#: part/models.py:662
+#: part/models.py:664
msgid "Is Template"
msgstr ""
-#: part/models.py:663
+#: part/models.py:665
msgid "Is this part a template part?"
msgstr ""
-#: part/models.py:673
+#: part/models.py:675
msgid "Is this part a variant of another part?"
msgstr ""
-#: part/models.py:674
+#: part/models.py:676
msgid "Variant Of"
msgstr ""
-#: part/models.py:680
+#: part/models.py:682
msgid "Part description"
msgstr ""
-#: part/models.py:685 part/templates/part/category.html:82
-#: part/templates/part/part_base.html:251
+#: part/models.py:687 part/templates/part/category.html:82
+#: part/templates/part/part_base.html:259
msgid "Keywords"
msgstr ""
-#: part/models.py:686
+#: part/models.py:688
msgid "Part keywords to improve visibility in search results"
msgstr ""
-#: part/models.py:693 part/models.py:2279
+#: part/models.py:695 part/models.py:2295
#: part/templates/part/set_category.html:15
#: templates/InvenTree/settings/settings.html:167
-#: templates/js/translated/part.js:773
+#: templates/js/translated/part.js:916
msgid "Category"
msgstr ""
-#: part/models.py:694
+#: part/models.py:696
msgid "Part category"
msgstr ""
-#: part/models.py:699 part/templates/part/part_base.html:227
-#: templates/js/translated/part.js:389 templates/js/translated/part.js:617
+#: part/models.py:701 part/templates/part/part_base.html:235
+#: templates/js/translated/part.js:517 templates/js/translated/part.js:749
msgid "IPN"
msgstr ""
-#: part/models.py:700
+#: part/models.py:702
msgid "Internal Part Number"
msgstr ""
-#: part/models.py:706
+#: part/models.py:708
msgid "Part revision or version number"
msgstr ""
-#: part/models.py:707 part/templates/part/part_base.html:244
-#: report/models.py:200 templates/js/translated/part.js:393
+#: part/models.py:709 part/templates/part/part_base.html:252
+#: report/models.py:200 templates/js/translated/part.js:521
msgid "Revision"
msgstr ""
-#: part/models.py:729
+#: part/models.py:731
msgid "Where is this item normally stored?"
msgstr ""
-#: part/models.py:776 part/templates/part/part_base.html:289
+#: part/models.py:778 part/templates/part/part_base.html:297
msgid "Default Supplier"
msgstr ""
-#: part/models.py:777
+#: part/models.py:779
msgid "Default supplier part"
msgstr ""
-#: part/models.py:784
+#: part/models.py:786
msgid "Default Expiry"
msgstr ""
-#: part/models.py:785
+#: part/models.py:787
msgid "Expiry time (in days) for stock items of this part"
msgstr ""
-#: part/models.py:790
+#: part/models.py:792
msgid "Minimum Stock"
msgstr ""
-#: part/models.py:791
+#: part/models.py:793
msgid "Minimum allowed stock level"
msgstr ""
-#: part/models.py:798
+#: part/models.py:800
msgid "Stock keeping units for this part"
msgstr ""
-#: part/models.py:804
+#: part/models.py:806
msgid "Can this part be built from other parts?"
msgstr ""
-#: part/models.py:810
+#: part/models.py:812
msgid "Can this part be used to build other parts?"
msgstr ""
-#: part/models.py:816
+#: part/models.py:818
msgid "Does this part have tracking for unique items?"
msgstr ""
-#: part/models.py:821
+#: part/models.py:823
msgid "Can this part be purchased from external suppliers?"
msgstr ""
-#: part/models.py:826
+#: part/models.py:828
msgid "Can this part be sold to customers?"
msgstr ""
-#: part/models.py:830 templates/js/translated/table_filters.js:21
-#: templates/js/translated/table_filters.js:69
-#: templates/js/translated/table_filters.js:255
-#: templates/js/translated/table_filters.js:324
+#: part/models.py:832 templates/js/translated/table_filters.js:34
+#: templates/js/translated/table_filters.js:82
+#: templates/js/translated/table_filters.js:268
+#: templates/js/translated/table_filters.js:337
msgid "Active"
msgstr ""
-#: part/models.py:831
+#: part/models.py:833
msgid "Is this part active?"
msgstr ""
-#: part/models.py:836
+#: part/models.py:838
msgid "Is this a virtual part, such as a software product or license?"
msgstr ""
-#: part/models.py:841
+#: part/models.py:843
msgid "Part notes - supports Markdown formatting"
msgstr ""
-#: part/models.py:844
+#: part/models.py:846
msgid "BOM checksum"
msgstr ""
-#: part/models.py:844
+#: part/models.py:846
msgid "Stored BOM checksum"
msgstr ""
-#: part/models.py:847
+#: part/models.py:849
msgid "BOM checked by"
msgstr ""
-#: part/models.py:849
+#: part/models.py:851
msgid "BOM checked date"
msgstr ""
-#: part/models.py:853
+#: part/models.py:855
msgid "Creation User"
msgstr ""
-#: part/models.py:1592
+#: part/models.py:1601
msgid "Sell multiple"
msgstr ""
-#: part/models.py:2080
+#: part/models.py:2096
msgid "Test templates can only be created for trackable parts"
msgstr ""
-#: part/models.py:2097
+#: part/models.py:2113
msgid "Test with this name already exists for this part"
msgstr ""
-#: part/models.py:2117 templates/js/translated/part.js:1038
-#: templates/js/translated/stock.js:485
+#: part/models.py:2133 templates/js/translated/part.js:1205
+#: templates/js/translated/stock.js:556
msgid "Test Name"
msgstr ""
-#: part/models.py:2118
+#: part/models.py:2134
msgid "Enter a name for the test"
msgstr ""
-#: part/models.py:2123
+#: part/models.py:2139
msgid "Test Description"
msgstr ""
-#: part/models.py:2124
+#: part/models.py:2140
msgid "Enter description for this test"
msgstr ""
-#: part/models.py:2129 templates/js/translated/part.js:1047
-#: templates/js/translated/table_filters.js:241
+#: part/models.py:2145 templates/js/translated/part.js:1214
+#: templates/js/translated/table_filters.js:254
msgid "Required"
msgstr ""
-#: part/models.py:2130
+#: part/models.py:2146
msgid "Is this test required to pass?"
msgstr ""
-#: part/models.py:2135 templates/js/translated/part.js:1055
+#: part/models.py:2151 templates/js/translated/part.js:1222
msgid "Requires Value"
msgstr ""
-#: part/models.py:2136
+#: part/models.py:2152
msgid "Does this test require a value when adding a test result?"
msgstr ""
-#: part/models.py:2141 templates/js/translated/part.js:1062
+#: part/models.py:2157 templates/js/translated/part.js:1229
msgid "Requires Attachment"
msgstr ""
-#: part/models.py:2142
+#: part/models.py:2158
msgid "Does this test require a file attachment when adding a test result?"
msgstr ""
-#: part/models.py:2153
+#: part/models.py:2169
#, python-brace-format
msgid "Illegal character in template name ({c})"
msgstr ""
-#: part/models.py:2189
+#: part/models.py:2205
msgid "Parameter template name must be unique"
msgstr ""
-#: part/models.py:2197
+#: part/models.py:2213
msgid "Parameter Name"
msgstr ""
-#: part/models.py:2204
+#: part/models.py:2220
msgid "Parameter Units"
msgstr ""
-#: part/models.py:2236 part/models.py:2285 part/models.py:2286
+#: part/models.py:2252 part/models.py:2301 part/models.py:2302
#: templates/InvenTree/settings/settings.html:162
msgid "Parameter Template"
msgstr ""
-#: part/models.py:2238
+#: part/models.py:2254
msgid "Data"
msgstr ""
-#: part/models.py:2238
+#: part/models.py:2254
msgid "Parameter Value"
msgstr ""
-#: part/models.py:2290 templates/InvenTree/settings/settings.html:171
+#: part/models.py:2306 templates/InvenTree/settings/settings.html:171
msgid "Default Value"
msgstr ""
-#: part/models.py:2291
+#: part/models.py:2307
msgid "Default Parameter Value"
msgstr ""
-#: part/models.py:2325
+#: part/models.py:2341
msgid "Select parent part"
msgstr ""
-#: part/models.py:2333
+#: part/models.py:2349
msgid "Sub part"
msgstr ""
-#: part/models.py:2334
+#: part/models.py:2350
msgid "Select part to be used in BOM"
msgstr ""
-#: part/models.py:2340
+#: part/models.py:2356
msgid "BOM quantity for this BOM item"
msgstr ""
-#: part/models.py:2342 templates/js/translated/bom.js:236
-#: templates/js/translated/bom.js:298
+#: part/models.py:2358 templates/js/translated/bom.js:256
+#: templates/js/translated/bom.js:314
msgid "Optional"
msgstr ""
-#: part/models.py:2342
+#: part/models.py:2358
msgid "This BOM item is optional"
msgstr ""
-#: part/models.py:2345
+#: part/models.py:2361
msgid "Overage"
msgstr ""
-#: part/models.py:2346
+#: part/models.py:2362
msgid "Estimated build wastage quantity (absolute or percentage)"
msgstr ""
-#: part/models.py:2349
+#: part/models.py:2365
msgid "BOM item reference"
msgstr ""
-#: part/models.py:2352
+#: part/models.py:2368
msgid "BOM item notes"
msgstr ""
-#: part/models.py:2354
+#: part/models.py:2370
msgid "Checksum"
msgstr ""
-#: part/models.py:2354
+#: part/models.py:2370
msgid "BOM line checksum"
msgstr ""
-#: part/models.py:2358 templates/js/translated/bom.js:315
-#: templates/js/translated/bom.js:322
-#: templates/js/translated/table_filters.js:55
+#: part/models.py:2374 templates/js/translated/bom.js:331
+#: templates/js/translated/bom.js:338
+#: templates/js/translated/table_filters.js:68
msgid "Inherited"
msgstr ""
-#: part/models.py:2359
+#: part/models.py:2375
msgid "This BOM item is inherited by BOMs for variant parts"
msgstr ""
-#: part/models.py:2364 templates/js/translated/bom.js:307
+#: part/models.py:2380 templates/js/translated/bom.js:323
msgid "Allow Variants"
msgstr ""
-#: part/models.py:2365
+#: part/models.py:2381
msgid "Stock items for variant parts can be used for this BOM item"
msgstr ""
-#: part/models.py:2450 stock/models.py:335
+#: part/models.py:2466 stock/models.py:341
msgid "Quantity must be integer value for trackable parts"
msgstr ""
-#: part/models.py:2459 part/models.py:2461
+#: part/models.py:2475 part/models.py:2477
msgid "Sub part must be specified"
msgstr ""
-#: part/models.py:2464
+#: part/models.py:2480
msgid "BOM Item"
msgstr ""
-#: part/models.py:2583
+#: part/models.py:2599
msgid "Part 1"
msgstr ""
-#: part/models.py:2587
+#: part/models.py:2603
msgid "Part 2"
msgstr ""
-#: part/models.py:2587
+#: part/models.py:2603
msgid "Select Related Part"
msgstr ""
-#: part/models.py:2619
+#: part/models.py:2635
msgid "Error creating relationship: check that the part is not related to itself and that the relationship is unique"
msgstr ""
@@ -4317,17 +4437,17 @@ msgstr ""
#: part/templates/part/bom.html:14
#, python-format
-msgid "The BOM for %(part)s has changed, and must be validated.
"
+msgid "The BOM for %(part)s has changed, and must be validated.
"
msgstr ""
#: part/templates/part/bom.html:16
#, python-format
-msgid "The BOM for %(part)s was last checked by %(checker)s on %(check_date)s"
+msgid "The BOM for %(part)s was last checked by %(checker)s on %(check_date)s"
msgstr ""
#: part/templates/part/bom.html:20
#, python-format
-msgid "The BOM for %(part)s has not been validated."
+msgid "The BOM for %(part)s has not been validated."
msgstr ""
#: part/templates/part/bom.html:27
@@ -4374,33 +4494,34 @@ msgstr ""
msgid "Select Part"
msgstr ""
-#: part/templates/part/bom_upload/upload_file.html:7
-msgid "Upload BOM File"
+#: part/templates/part/bom_upload/upload_file.html:13
+#: part/templates/part/bom_upload/upload_file.html:16
+msgid "Return To BOM"
msgstr ""
-#: part/templates/part/bom_upload/upload_file.html:12
+#: part/templates/part/bom_upload/upload_file.html:27
msgid "Upload Bill of Materials"
msgstr ""
-#: part/templates/part/bom_upload/upload_file.html:16
+#: part/templates/part/bom_upload/upload_file.html:46
msgid "Requirements for BOM upload"
msgstr ""
-#: part/templates/part/bom_upload/upload_file.html:18
+#: part/templates/part/bom_upload/upload_file.html:48
msgid "The BOM file must contain the required named columns as provided in the "
msgstr ""
-#: part/templates/part/bom_upload/upload_file.html:18
+#: part/templates/part/bom_upload/upload_file.html:48
msgid "BOM Upload Template"
msgstr ""
-#: part/templates/part/bom_upload/upload_file.html:19
+#: part/templates/part/bom_upload/upload_file.html:49
msgid "Each part must already exist in the database"
msgstr ""
#: part/templates/part/bom_validate.html:6
#, python-format
-msgid "Confirm that the Bill of Materials (BOM) is valid for:
%(part)s"
+msgid "Confirm that the Bill of Materials (BOM) is valid for:
%(part)s"
msgstr ""
#: part/templates/part/bom_validate.html:9
@@ -4435,7 +4556,7 @@ msgstr ""
msgid "Category Description"
msgstr ""
-#: part/templates/part/category.html:88 part/templates/part/category.html:174
+#: part/templates/part/category.html:88 part/templates/part/category.html:175
#: part/templates/part/category_navbar.html:14
#: part/templates/part/category_navbar.html:17
msgid "Subcategories"
@@ -4449,7 +4570,7 @@ msgstr ""
msgid "Export Part Data"
msgstr ""
-#: part/templates/part/category.html:127 part/templates/part/category.html:141
+#: part/templates/part/category.html:127 part/templates/part/category.html:142
msgid "Export"
msgstr ""
@@ -4470,26 +4591,30 @@ msgid "Set Category"
msgstr ""
#: part/templates/part/category.html:141
+msgid "Print Labels"
+msgstr ""
+
+#: part/templates/part/category.html:142
msgid "Export Data"
msgstr ""
-#: part/templates/part/category.html:145
+#: part/templates/part/category.html:146
msgid "View list display"
msgstr ""
-#: part/templates/part/category.html:148
+#: part/templates/part/category.html:149
msgid "View grid display"
msgstr ""
-#: part/templates/part/category.html:164
+#: part/templates/part/category.html:165
msgid "Part Parameters"
msgstr ""
-#: part/templates/part/category.html:253
+#: part/templates/part/category.html:254
msgid "Create Part Category"
msgstr ""
-#: part/templates/part/category.html:279
+#: part/templates/part/category.html:281
msgid "Create Part"
msgstr ""
@@ -4533,7 +4658,7 @@ msgstr ""
msgid "Import Parts"
msgstr ""
-#: part/templates/part/copy_part.html:9 templates/js/translated/part.js:224
+#: part/templates/part/copy_part.html:9 templates/js/translated/part.js:352
msgid "Duplicate Part"
msgstr ""
@@ -4554,7 +4679,7 @@ msgstr ""
#: part/templates/part/create_part.html:17
#, python-format
-msgid "%(full_name)s - %(desc)s (%(match_per)s%% match)"
+msgid "%(full_name)s - %(desc)s (%(match_per)s%% match)"
msgstr ""
#: part/templates/part/detail.html:16
@@ -4563,10 +4688,10 @@ msgstr ""
#: part/templates/part/detail.html:21
#, python-format
-msgid "Showing stock for all variants of %(full_name)s"
+msgid "Showing stock for all variants of %(full_name)s"
msgstr ""
-#: part/templates/part/detail.html:30 part/templates/part/navbar.html:87
+#: part/templates/part/detail.html:30 part/templates/part/navbar.html:99
msgid "Part Test Templates"
msgstr ""
@@ -4586,7 +4711,7 @@ msgstr ""
msgid "Sales Order Allocations"
msgstr ""
-#: part/templates/part/detail.html:130 part/templates/part/navbar.html:21
+#: part/templates/part/detail.html:130 part/templates/part/navbar.html:27
msgid "Part Variants"
msgstr ""
@@ -4602,8 +4727,8 @@ msgstr ""
msgid "Add new parameter"
msgstr ""
-#: part/templates/part/detail.html:182 part/templates/part/navbar.html:95
-#: part/templates/part/navbar.html:98
+#: part/templates/part/detail.html:182 part/templates/part/navbar.html:107
+#: part/templates/part/navbar.html:110
msgid "Related Parts"
msgstr ""
@@ -4611,8 +4736,8 @@ msgstr ""
msgid "Add Related"
msgstr ""
-#: part/templates/part/detail.html:228 part/templates/part/navbar.html:35
-#: part/templates/part/navbar.html:38
+#: part/templates/part/detail.html:228 part/templates/part/navbar.html:43
+#: part/templates/part/navbar.html:46
msgid "Bill of Materials"
msgstr ""
@@ -4644,50 +4769,50 @@ msgstr ""
msgid "Delete manufacturer parts"
msgstr ""
-#: part/templates/part/detail.html:402
+#: part/templates/part/detail.html:502
msgid "Delete selected BOM items?"
msgstr ""
-#: part/templates/part/detail.html:403
+#: part/templates/part/detail.html:503
msgid "All selected BOM items will be deleted"
msgstr ""
-#: part/templates/part/detail.html:454
+#: part/templates/part/detail.html:554
msgid "Create BOM Item"
msgstr ""
-#: part/templates/part/detail.html:589
+#: part/templates/part/detail.html:699
msgid "Add Test Result Template"
msgstr ""
-#: part/templates/part/detail.html:607
+#: part/templates/part/detail.html:716
msgid "Edit Test Result Template"
msgstr ""
-#: part/templates/part/detail.html:619
+#: part/templates/part/detail.html:728
msgid "Delete Test Result Template"
msgstr ""
-#: part/templates/part/detail.html:670
+#: part/templates/part/detail.html:784
msgid "Edit Part Notes"
msgstr ""
-#: part/templates/part/detail.html:903
+#: part/templates/part/detail.html:936
#, python-format
msgid "Purchase Unit Price - %(currency)s"
msgstr ""
-#: part/templates/part/detail.html:915
+#: part/templates/part/detail.html:948
#, python-format
msgid "Unit Price-Cost Difference - %(currency)s"
msgstr ""
-#: part/templates/part/detail.html:927
+#: part/templates/part/detail.html:960
#, python-format
msgid "Supplier Unit Cost - %(currency)s"
msgstr ""
-#: part/templates/part/detail.html:1016
+#: part/templates/part/detail.html:1049
#, python-format
msgid "Unit Price - %(currency)s"
msgstr ""
@@ -4701,19 +4826,19 @@ msgstr ""
msgid "Import Parts from File"
msgstr ""
-#: part/templates/part/navbar.html:24
+#: part/templates/part/navbar.html:30
msgid "Variants"
msgstr ""
-#: part/templates/part/navbar.html:51 part/templates/part/navbar.html:54
+#: part/templates/part/navbar.html:59 part/templates/part/navbar.html:62
msgid "Used In"
msgstr ""
-#: part/templates/part/navbar.html:61
+#: part/templates/part/navbar.html:70
msgid "Prices"
msgstr ""
-#: part/templates/part/navbar.html:90
+#: part/templates/part/navbar.html:102
msgid "Test Templates"
msgstr ""
@@ -4721,195 +4846,204 @@ msgstr ""
msgid "Part List"
msgstr ""
-#: part/templates/part/part_base.html:30
+#: part/templates/part/part_base.html:35
msgid "Part is a template part (variants can be made from this part)"
msgstr ""
-#: part/templates/part/part_base.html:33
+#: part/templates/part/part_base.html:38
msgid "Part can be assembled from other parts"
msgstr ""
-#: part/templates/part/part_base.html:36
+#: part/templates/part/part_base.html:41
msgid "Part can be used in assemblies"
msgstr ""
-#: part/templates/part/part_base.html:39
+#: part/templates/part/part_base.html:44
msgid "Part stock is tracked by serial number"
msgstr ""
-#: part/templates/part/part_base.html:42
+#: part/templates/part/part_base.html:47
msgid "Part can be purchased from external suppliers"
msgstr ""
-#: part/templates/part/part_base.html:45
+#: part/templates/part/part_base.html:50
msgid "Part can be sold to customers"
msgstr ""
-#: part/templates/part/part_base.html:52 part/templates/part/part_base.html:60
+#: part/templates/part/part_base.html:57 part/templates/part/part_base.html:65
msgid "Part is virtual (not a physical part)"
msgstr ""
-#: part/templates/part/part_base.html:53 templates/js/translated/company.js:454
-#: templates/js/translated/company.js:704 templates/js/translated/part.js:304
-#: templates/js/translated/part.js:381
+#: part/templates/part/part_base.html:58 templates/js/translated/company.js:503
+#: templates/js/translated/company.js:759 templates/js/translated/part.js:432
+#: templates/js/translated/part.js:509
msgid "Inactive"
msgstr ""
-#: part/templates/part/part_base.html:68
+#: part/templates/part/part_base.html:73
msgid "Star this part"
msgstr ""
-#: part/templates/part/part_base.html:75
+#: part/templates/part/part_base.html:80
#: stock/templates/stock/item_base.html:75
#: stock/templates/stock/location.html:51
msgid "Barcode actions"
msgstr ""
-#: part/templates/part/part_base.html:77
+#: part/templates/part/part_base.html:82
#: stock/templates/stock/item_base.html:77
#: stock/templates/stock/location.html:53 templates/qr_button.html:1
msgid "Show QR Code"
msgstr ""
-#: part/templates/part/part_base.html:78
+#: part/templates/part/part_base.html:83
#: stock/templates/stock/item_base.html:93
#: stock/templates/stock/location.html:54
msgid "Print Label"
msgstr ""
-#: part/templates/part/part_base.html:83
+#: part/templates/part/part_base.html:89
msgid "Show pricing information"
msgstr ""
-#: part/templates/part/part_base.html:88
+#: part/templates/part/part_base.html:95
#: stock/templates/stock/item_base.html:142
#: stock/templates/stock/location.html:62
msgid "Stock actions"
msgstr ""
-#: part/templates/part/part_base.html:95
+#: part/templates/part/part_base.html:102
msgid "Count part stock"
msgstr ""
-#: part/templates/part/part_base.html:101
+#: part/templates/part/part_base.html:108
msgid "Transfer part stock"
msgstr ""
-#: part/templates/part/part_base.html:118
+#: part/templates/part/part_base.html:125
msgid "Part actions"
msgstr ""
-#: part/templates/part/part_base.html:121
+#: part/templates/part/part_base.html:128
msgid "Duplicate part"
msgstr ""
-#: part/templates/part/part_base.html:124
+#: part/templates/part/part_base.html:131
msgid "Edit part"
msgstr ""
-#: part/templates/part/part_base.html:127
+#: part/templates/part/part_base.html:134
msgid "Delete part"
msgstr ""
-#: part/templates/part/part_base.html:139
+#: part/templates/part/part_base.html:146
#, python-format
msgid "This part is a variant of %(link)s"
msgstr ""
-#: part/templates/part/part_base.html:154
-#: templates/js/translated/table_filters.js:153
+#: part/templates/part/part_base.html:161
+#: templates/js/translated/table_filters.js:166
msgid "In Stock"
msgstr ""
-#: part/templates/part/part_base.html:167 templates/InvenTree/index.html:186
+#: part/templates/part/part_base.html:174 templates/InvenTree/index.html:186
msgid "Required for Build Orders"
msgstr ""
-#: part/templates/part/part_base.html:174
+#: part/templates/part/part_base.html:181
msgid "Required for Sales Orders"
msgstr ""
-#: part/templates/part/part_base.html:181
+#: part/templates/part/part_base.html:188
msgid "Allocated to Orders"
msgstr ""
-#: part/templates/part/part_base.html:196 templates/js/translated/bom.js:336
+#: part/templates/part/part_base.html:203 templates/js/translated/bom.js:352
msgid "Can Build"
msgstr ""
-#: part/templates/part/part_base.html:202 templates/js/translated/part.js:633
-#: templates/js/translated/part.js:806
+#: part/templates/part/part_base.html:209 templates/js/translated/part.js:765
+#: templates/js/translated/part.js:953
msgid "Building"
msgstr ""
-#: part/templates/part/part_base.html:275
+#: part/templates/part/part_base.html:223
+#: part/templates/part/part_base.html:524
+#: part/templates/part/part_base.html:550
+msgid "Show Part Details"
+msgstr ""
+
+#: part/templates/part/part_base.html:283
msgid "Latest Serial Number"
msgstr ""
-#: part/templates/part/part_base.html:383 part/templates/part/prices.html:125
+#: part/templates/part/part_base.html:396 part/templates/part/prices.html:144
msgid "Calculate"
msgstr ""
-#: part/templates/part/part_base.html:426
+#: part/templates/part/part_base.html:439
msgid "No matching images found"
msgstr ""
-#: part/templates/part/part_base.html:506
-#: part/templates/part/part_base.html:531
+#: part/templates/part/part_base.html:519
+#: part/templates/part/part_base.html:544
msgid "Hide Part Details"
msgstr ""
-#: part/templates/part/part_base.html:511
-#: part/templates/part/part_base.html:537
-msgid "Show Part Details"
-msgstr ""
-
#: part/templates/part/part_pricing.html:22 part/templates/part/prices.html:21
msgid "Supplier Pricing"
msgstr ""
#: part/templates/part/part_pricing.html:26
#: part/templates/part/part_pricing.html:52
-#: part/templates/part/part_pricing.html:85
-#: part/templates/part/part_pricing.html:100 part/templates/part/prices.html:25
-#: part/templates/part/prices.html:52 part/templates/part/prices.html:84
-#: part/templates/part/prices.html:101
+#: part/templates/part/part_pricing.html:100
+#: part/templates/part/part_pricing.html:115 part/templates/part/prices.html:25
+#: part/templates/part/prices.html:52 part/templates/part/prices.html:103
+#: part/templates/part/prices.html:120
msgid "Unit Cost"
msgstr ""
#: part/templates/part/part_pricing.html:32
#: part/templates/part/part_pricing.html:58
-#: part/templates/part/part_pricing.html:89
-#: part/templates/part/part_pricing.html:104 part/templates/part/prices.html:32
-#: part/templates/part/prices.html:59 part/templates/part/prices.html:89
-#: part/templates/part/prices.html:106
+#: part/templates/part/part_pricing.html:104
+#: part/templates/part/part_pricing.html:119 part/templates/part/prices.html:32
+#: part/templates/part/prices.html:59 part/templates/part/prices.html:108
+#: part/templates/part/prices.html:125
msgid "Total Cost"
msgstr ""
#: part/templates/part/part_pricing.html:40 part/templates/part/prices.html:40
-#: templates/js/translated/bom.js:291
+#: templates/js/translated/bom.js:307
msgid "No supplier pricing available"
msgstr ""
#: part/templates/part/part_pricing.html:48 part/templates/part/prices.html:49
-#: part/templates/part/prices.html:225
+#: part/templates/part/prices.html:243
msgid "BOM Pricing"
msgstr ""
-#: part/templates/part/part_pricing.html:66 part/templates/part/prices.html:67
+#: part/templates/part/part_pricing.html:65 part/templates/part/prices.html:69
+msgid "Unit Purchase Price"
+msgstr ""
+
+#: part/templates/part/part_pricing.html:71 part/templates/part/prices.html:76
+msgid "Total Purchase Price"
+msgstr ""
+
+#: part/templates/part/part_pricing.html:81 part/templates/part/prices.html:86
msgid "Note: BOM pricing is incomplete for this part"
msgstr ""
-#: part/templates/part/part_pricing.html:73 part/templates/part/prices.html:74
+#: part/templates/part/part_pricing.html:88 part/templates/part/prices.html:93
msgid "No BOM pricing available"
msgstr ""
-#: part/templates/part/part_pricing.html:82 part/templates/part/prices.html:83
+#: part/templates/part/part_pricing.html:97 part/templates/part/prices.html:102
msgid "Internal Price"
msgstr ""
-#: part/templates/part/part_pricing.html:113
-#: part/templates/part/prices.html:115
+#: part/templates/part/part_pricing.html:128
+#: part/templates/part/prices.html:134
msgid "No pricing information is available for this part."
msgstr ""
@@ -4919,7 +5053,7 @@ msgstr ""
#: part/templates/part/partial_delete.html:7
#, python-format
-msgid "Are you sure you want to delete part '%(full_name)s'?"
+msgid "Are you sure you want to delete part '%(full_name)s'?"
msgstr ""
#: part/templates/part/partial_delete.html:12
@@ -4963,53 +5097,53 @@ msgstr ""
msgid "Show BOM cost"
msgstr ""
-#: part/templates/part/prices.html:98
+#: part/templates/part/prices.html:117
msgid "Show sale cost"
msgstr ""
-#: part/templates/part/prices.html:99
+#: part/templates/part/prices.html:118
msgid "Show sale price"
msgstr ""
-#: part/templates/part/prices.html:121
+#: part/templates/part/prices.html:140
msgid "Calculation parameters"
msgstr ""
-#: part/templates/part/prices.html:136 templates/js/translated/bom.js:285
+#: part/templates/part/prices.html:155 templates/js/translated/bom.js:301
msgid "Supplier Cost"
msgstr ""
-#: part/templates/part/prices.html:137 part/templates/part/prices.html:158
-#: part/templates/part/prices.html:183 part/templates/part/prices.html:213
-#: part/templates/part/prices.html:239 part/templates/part/prices.html:267
+#: part/templates/part/prices.html:156 part/templates/part/prices.html:177
+#: part/templates/part/prices.html:201 part/templates/part/prices.html:231
+#: part/templates/part/prices.html:257 part/templates/part/prices.html:285
msgid "Jump to overview"
msgstr ""
-#: part/templates/part/prices.html:162
+#: part/templates/part/prices.html:181
msgid "Stock Pricing"
msgstr ""
-#: part/templates/part/prices.html:172
+#: part/templates/part/prices.html:190
msgid "No stock pricing history is available for this part."
msgstr ""
-#: part/templates/part/prices.html:182
+#: part/templates/part/prices.html:200
msgid "Internal Cost"
msgstr ""
-#: part/templates/part/prices.html:197 part/views.py:1793
+#: part/templates/part/prices.html:215 part/views.py:1801
msgid "Add Internal Price Break"
msgstr ""
-#: part/templates/part/prices.html:212
+#: part/templates/part/prices.html:230
msgid "BOM Cost"
msgstr ""
-#: part/templates/part/prices.html:238
+#: part/templates/part/prices.html:256
msgid "Sale Cost"
msgstr ""
-#: part/templates/part/prices.html:278
+#: part/templates/part/prices.html:296
msgid "No sale pice history available for this part."
msgstr ""
@@ -5017,8 +5151,8 @@ msgstr ""
msgid "Set category for the following parts"
msgstr ""
-#: part/templates/part/stock_count.html:7 templates/js/translated/bom.js:259
-#: templates/js/translated/part.js:623 templates/js/translated/part.js:810
+#: part/templates/part/stock_count.html:7 templates/js/translated/bom.js:278
+#: templates/js/translated/part.js:755 templates/js/translated/part.js:957
msgid "No Stock"
msgstr ""
@@ -5032,10 +5166,10 @@ msgstr ""
#: part/templates/part/variant_part.html:10
#, python-format
-msgid "Create a new variant of template '%(full_name)s'."
+msgid "Create a new variant of template '%(full_name)s'."
msgstr ""
-#: part/templatetags/inventree_extras.py:105
+#: part/templatetags/inventree_extras.py:106
msgid "Unknown database"
msgstr ""
@@ -5116,51 +5250,51 @@ msgstr ""
msgid "Part Pricing"
msgstr ""
-#: part/views.py:1429
+#: part/views.py:1437
msgid "Create Part Parameter Template"
msgstr ""
-#: part/views.py:1439
+#: part/views.py:1447
msgid "Edit Part Parameter Template"
msgstr ""
-#: part/views.py:1446
+#: part/views.py:1454
msgid "Delete Part Parameter Template"
msgstr ""
-#: part/views.py:1494 templates/js/translated/part.js:179
+#: part/views.py:1502 templates/js/translated/part.js:303
msgid "Edit Part Category"
msgstr ""
-#: part/views.py:1532
+#: part/views.py:1540
msgid "Delete Part Category"
msgstr ""
-#: part/views.py:1538
+#: part/views.py:1546
msgid "Part category was deleted"
msgstr ""
-#: part/views.py:1547
+#: part/views.py:1555
msgid "Create Category Parameter Template"
msgstr ""
-#: part/views.py:1648
+#: part/views.py:1656
msgid "Edit Category Parameter Template"
msgstr ""
-#: part/views.py:1704
+#: part/views.py:1712
msgid "Delete Category Parameter Template"
msgstr ""
-#: part/views.py:1726
+#: part/views.py:1734
msgid "Added new price break"
msgstr ""
-#: part/views.py:1802
+#: part/views.py:1810
msgid "Edit Internal Price Break"
msgstr ""
-#: part/views.py:1810
+#: part/views.py:1818
msgid "Delete Internal Price Break"
msgstr ""
@@ -5266,17 +5400,17 @@ msgid "Test Results"
msgstr ""
#: report/templates/report/inventree_test_report_base.html:88
-#: stock/models.py:1796
+#: stock/models.py:1807
msgid "Test"
msgstr ""
#: report/templates/report/inventree_test_report_base.html:89
-#: stock/models.py:1802
+#: stock/models.py:1813
msgid "Result"
msgstr ""
#: report/templates/report/inventree_test_report_base.html:92
-#: templates/js/translated/order.js:279 templates/js/translated/stock.js:1382
+#: templates/js/translated/order.js:353 templates/js/translated/stock.js:1523
msgid "Date"
msgstr ""
@@ -5288,51 +5422,51 @@ msgstr ""
msgid "Fail"
msgstr ""
-#: stock/api.py:145
+#: stock/api.py:146
msgid "Request must contain list of stock items"
msgstr ""
-#: stock/api.py:153
+#: stock/api.py:154
msgid "Improperly formatted data"
msgstr ""
-#: stock/api.py:161
+#: stock/api.py:162
msgid "Each entry must contain a valid integer primary-key"
msgstr ""
-#: stock/api.py:167
+#: stock/api.py:168
msgid "Primary key does not match valid stock item"
msgstr ""
-#: stock/api.py:177
+#: stock/api.py:178
msgid "Invalid quantity value"
msgstr ""
-#: stock/api.py:182
+#: stock/api.py:183
msgid "Quantity must not be less than zero"
msgstr ""
-#: stock/api.py:210
+#: stock/api.py:211
#, python-brace-format
msgid "Updated stock for {n} items"
msgstr ""
-#: stock/api.py:246 stock/api.py:279
+#: stock/api.py:247 stock/api.py:280
msgid "Specified quantity exceeds stock quantity"
msgstr ""
-#: stock/api.py:269
+#: stock/api.py:270
msgid "Valid location must be specified"
msgstr ""
-#: stock/api.py:289
+#: stock/api.py:290
#, python-brace-format
msgid "Moved {n} parts to {loc}"
msgstr ""
-#: stock/forms.py:79 stock/forms.py:307 stock/models.py:550
+#: stock/forms.py:79 stock/forms.py:307 stock/models.py:556
#: stock/templates/stock/item_base.html:395
-#: templates/js/translated/stock.js:1025
+#: templates/js/translated/stock.js:967
msgid "Expiry Date"
msgstr ""
@@ -5384,258 +5518,266 @@ msgstr ""
msgid "Confirm removal of installed stock items"
msgstr ""
-#: stock/models.py:57 stock/models.py:587
+#: stock/models.py:57 stock/models.py:593
msgid "Owner"
msgstr ""
-#: stock/models.py:58 stock/models.py:588
+#: stock/models.py:58 stock/models.py:594
msgid "Select Owner"
msgstr ""
-#: stock/models.py:316
+#: stock/models.py:322
msgid "StockItem with this serial number already exists"
msgstr ""
-#: stock/models.py:352
+#: stock/models.py:358
#, python-brace-format
msgid "Part type ('{pf}') must be {pe}"
msgstr ""
-#: stock/models.py:362 stock/models.py:371
+#: stock/models.py:368 stock/models.py:377
msgid "Quantity must be 1 for item with a serial number"
msgstr ""
-#: stock/models.py:363
+#: stock/models.py:369
msgid "Serial number cannot be set if quantity greater than 1"
msgstr ""
-#: stock/models.py:385
+#: stock/models.py:391
msgid "Item cannot belong to itself"
msgstr ""
-#: stock/models.py:391
+#: stock/models.py:397
msgid "Item must have a build reference if is_building=True"
msgstr ""
-#: stock/models.py:398
+#: stock/models.py:404
msgid "Build reference does not point to the same part object"
msgstr ""
-#: stock/models.py:440
+#: stock/models.py:446
msgid "Parent Stock Item"
msgstr ""
-#: stock/models.py:449
+#: stock/models.py:455
msgid "Base part"
msgstr ""
-#: stock/models.py:458
+#: stock/models.py:464
msgid "Select a matching supplier part for this stock item"
msgstr ""
-#: stock/models.py:463 stock/templates/stock/stock_app_base.html:8
+#: stock/models.py:469 stock/templates/stock/stock_app_base.html:8
msgid "Stock Location"
msgstr ""
-#: stock/models.py:466
+#: stock/models.py:472
msgid "Where is this stock item located?"
msgstr ""
-#: stock/models.py:473
+#: stock/models.py:479
msgid "Packaging this stock item is stored in"
msgstr ""
-#: stock/models.py:478 stock/templates/stock/item_base.html:284
+#: stock/models.py:484 stock/templates/stock/item_base.html:284
msgid "Installed In"
msgstr ""
-#: stock/models.py:481
+#: stock/models.py:487
msgid "Is this item installed in another item?"
msgstr ""
-#: stock/models.py:497
+#: stock/models.py:503
msgid "Serial number for this item"
msgstr ""
-#: stock/models.py:509
+#: stock/models.py:515
msgid "Batch code for this stock item"
msgstr ""
-#: stock/models.py:513
+#: stock/models.py:519
msgid "Stock Quantity"
msgstr ""
-#: stock/models.py:522
+#: stock/models.py:528
msgid "Source Build"
msgstr ""
-#: stock/models.py:524
+#: stock/models.py:530
msgid "Build for this stock item"
msgstr ""
-#: stock/models.py:535
+#: stock/models.py:541
msgid "Source Purchase Order"
msgstr ""
-#: stock/models.py:538
+#: stock/models.py:544
msgid "Purchase order for this stock item"
msgstr ""
-#: stock/models.py:544
+#: stock/models.py:550
msgid "Destination Sales Order"
msgstr ""
-#: stock/models.py:551
+#: stock/models.py:557
msgid "Expiry date for stock item. Stock will be considered expired after this date"
msgstr ""
-#: stock/models.py:564
+#: stock/models.py:570
msgid "Delete on deplete"
msgstr ""
-#: stock/models.py:564
+#: stock/models.py:570
msgid "Delete this Stock Item when stock is depleted"
msgstr ""
-#: stock/models.py:574 stock/templates/stock/item.html:98
+#: stock/models.py:580 stock/templates/stock/item.html:99
#: stock/templates/stock/navbar.html:54
msgid "Stock Item Notes"
msgstr ""
-#: stock/models.py:583
+#: stock/models.py:589
msgid "Single unit purchase price at time of purchase"
msgstr ""
-#: stock/models.py:1051
-msgid "Part is not set as trackable"
+#: stock/models.py:599
+msgid "Scheduled for deletion"
msgstr ""
-#: stock/models.py:1057
-msgid "Quantity must be integer"
+#: stock/models.py:600
+msgid "This StockItem will be deleted by the background worker"
msgstr ""
#: stock/models.py:1063
+msgid "Part is not set as trackable"
+msgstr ""
+
+#: stock/models.py:1069
+msgid "Quantity must be integer"
+msgstr ""
+
+#: stock/models.py:1075
#, python-brace-format
msgid "Quantity must not exceed available stock quantity ({n})"
msgstr ""
-#: stock/models.py:1066
+#: stock/models.py:1078
msgid "Serial numbers must be a list of integers"
msgstr ""
-#: stock/models.py:1069
+#: stock/models.py:1081
msgid "Quantity does not match serial numbers"
msgstr ""
-#: stock/models.py:1076
+#: stock/models.py:1088
#, python-brace-format
msgid "Serial numbers already exist: {exists}"
msgstr ""
-#: stock/models.py:1234
+#: stock/models.py:1246
msgid "StockItem cannot be moved as it is not in stock"
msgstr ""
-#: stock/models.py:1716
+#: stock/models.py:1727
msgid "Entry notes"
msgstr ""
-#: stock/models.py:1773
+#: stock/models.py:1784
msgid "Value must be provided for this test"
msgstr ""
-#: stock/models.py:1779
+#: stock/models.py:1790
msgid "Attachment must be uploaded for this test"
msgstr ""
-#: stock/models.py:1797
+#: stock/models.py:1808
msgid "Test name"
msgstr ""
-#: stock/models.py:1803 templates/js/translated/table_filters.js:231
+#: stock/models.py:1814 templates/js/translated/table_filters.js:244
msgid "Test result"
msgstr ""
-#: stock/models.py:1809
+#: stock/models.py:1820
msgid "Test output value"
msgstr ""
-#: stock/models.py:1816
+#: stock/models.py:1827
msgid "Test result attachment"
msgstr ""
-#: stock/models.py:1822
+#: stock/models.py:1833
msgid "Test notes"
msgstr ""
-#: stock/templates/stock/item.html:16
+#: stock/templates/stock/item.html:17
msgid "Stock Tracking Information"
msgstr ""
-#: stock/templates/stock/item.html:29
+#: stock/templates/stock/item.html:30
msgid "New Entry"
msgstr ""
-#: stock/templates/stock/item.html:42
+#: stock/templates/stock/item.html:43
msgid "Child Stock Items"
msgstr ""
-#: stock/templates/stock/item.html:49
+#: stock/templates/stock/item.html:50
msgid "This stock item does not have any child items"
msgstr ""
-#: stock/templates/stock/item.html:57 stock/templates/stock/navbar.html:19
+#: stock/templates/stock/item.html:58 stock/templates/stock/navbar.html:19
#: stock/templates/stock/navbar.html:22
msgid "Test Data"
msgstr ""
-#: stock/templates/stock/item.html:65
+#: stock/templates/stock/item.html:66
msgid "Delete Test Data"
msgstr ""
-#: stock/templates/stock/item.html:69
+#: stock/templates/stock/item.html:70
msgid "Add Test Data"
msgstr ""
-#: stock/templates/stock/item.html:72 stock/templates/stock/item_base.html:95
+#: stock/templates/stock/item.html:73 stock/templates/stock/item_base.html:95
msgid "Test Report"
msgstr ""
-#: stock/templates/stock/item.html:119 stock/templates/stock/navbar.html:27
+#: stock/templates/stock/item.html:120 stock/templates/stock/navbar.html:27
msgid "Installed Stock Items"
msgstr ""
-#: stock/templates/stock/item.html:124 stock/views.py:534
+#: stock/templates/stock/item.html:125 stock/views.py:534
msgid "Install Stock Item"
msgstr ""
-#: stock/templates/stock/item.html:299 stock/templates/stock/item.html:324
+#: stock/templates/stock/item.html:301 stock/templates/stock/item.html:326
msgid "Add Test Result"
msgstr ""
-#: stock/templates/stock/item.html:344
+#: stock/templates/stock/item.html:346
msgid "Edit Test Result"
msgstr ""
-#: stock/templates/stock/item.html:358
+#: stock/templates/stock/item.html:360
msgid "Delete Test Result"
msgstr ""
#: stock/templates/stock/item_base.html:33
#: stock/templates/stock/item_base.html:399
-#: templates/js/translated/table_filters.js:212
+#: templates/js/translated/table_filters.js:225
msgid "Expired"
msgstr ""
#: stock/templates/stock/item_base.html:43
#: stock/templates/stock/item_base.html:401
-#: templates/js/translated/table_filters.js:218
+#: templates/js/translated/table_filters.js:231
msgid "Stale"
msgstr ""
#: stock/templates/stock/item_base.html:80
-#: templates/js/translated/barcode.js:309
-#: templates/js/translated/barcode.js:314
+#: templates/js/translated/barcode.js:331
+#: templates/js/translated/barcode.js:336
msgid "Unlink Barcode"
msgstr ""
@@ -5768,7 +5910,7 @@ msgid "next page"
msgstr ""
#: stock/templates/stock/item_base.html:303
-#: templates/js/translated/build.js:628
+#: templates/js/translated/build.js:651
msgid "No location set"
msgstr ""
@@ -5795,7 +5937,7 @@ msgid "This StockItem expires on %(item.expiry_date)s"
msgstr ""
#: stock/templates/stock/item_base.html:408
-#: templates/js/translated/stock.js:1032
+#: templates/js/translated/stock.js:980
msgid "Last Updated"
msgstr ""
@@ -5825,7 +5967,7 @@ msgstr ""
#: stock/templates/stock/item_delete.html:12
#, python-format
-msgid "This will remove %(qty)s units of %(full_name)s from stock."
+msgid "This will remove %(qty)s units of %(full_name)s from stock."
msgstr ""
#: stock/templates/stock/item_install.html:8
@@ -5975,7 +6117,7 @@ msgstr ""
#: stock/templates/stock/stockitem_convert.html:8
#, python-format
-msgid "This stock item is current an instance of %(part)s"
+msgid "This stock item is current an instance of %(part)s"
msgstr ""
#: stock/templates/stock/stockitem_convert.html:9
@@ -6039,7 +6181,7 @@ msgstr ""
msgid "Uninstall Stock Items"
msgstr ""
-#: stock/views.py:780 templates/js/translated/stock.js:282
+#: stock/views.py:780 templates/js/translated/stock.js:353
msgid "Confirm stock adjustment"
msgstr ""
@@ -6059,7 +6201,7 @@ msgstr ""
msgid "Serialize Stock"
msgstr ""
-#: stock/views.py:1143 templates/js/translated/build.js:365
+#: stock/views.py:1143 templates/js/translated/build.js:392
msgid "Create new Stock Item"
msgstr ""
@@ -6171,11 +6313,11 @@ msgstr ""
msgid "Enter a search query"
msgstr ""
-#: templates/InvenTree/search.html:268 templates/js/translated/stock.js:629
+#: templates/InvenTree/search.html:268 templates/js/translated/stock.js:699
msgid "Shipped to customer"
msgstr ""
-#: templates/InvenTree/search.html:271 templates/js/translated/stock.js:639
+#: templates/InvenTree/search.html:271 templates/js/translated/stock.js:709
msgid "No stock location set"
msgstr ""
@@ -6240,7 +6382,7 @@ msgstr ""
#: templates/InvenTree/settings/navbar.html:27
#: templates/InvenTree/settings/navbar.html:29
-#: templates/js/translated/tables.js:351 templates/search_form.html:6
+#: templates/js/translated/tables.js:366 templates/search_form.html:6
#: templates/search_form.html:8
msgid "Search"
msgstr ""
@@ -6257,7 +6399,7 @@ msgstr ""
#: templates/InvenTree/settings/navbar.html:46
#: templates/InvenTree/settings/navbar.html:48
-#: templates/InvenTree/settings/settings.html:8 templates/navbar.html:84
+#: templates/InvenTree/settings/settings.html:8 templates/navbar.html:94
msgid "Settings"
msgstr ""
@@ -6332,16 +6474,16 @@ msgid "No category parameter templates found"
msgstr ""
#: templates/InvenTree/settings/settings.html:174
-#: templates/InvenTree/settings/settings.html:271
+#: templates/InvenTree/settings/settings.html:273
msgid "Edit Template"
msgstr ""
#: templates/InvenTree/settings/settings.html:175
-#: templates/InvenTree/settings/settings.html:272
+#: templates/InvenTree/settings/settings.html:274
msgid "Delete Template"
msgstr ""
-#: templates/InvenTree/settings/settings.html:251
+#: templates/InvenTree/settings/settings.html:253
msgid "No part parameter templates found"
msgstr ""
@@ -6358,6 +6500,7 @@ msgid "Account Settings"
msgstr ""
#: templates/InvenTree/settings/user.html:15
+#: templates/js/translated/helpers.js:26
msgid "Edit"
msgstr ""
@@ -6436,65 +6579,69 @@ msgstr ""
msgid "InvenTree Version"
msgstr ""
-#: templates/about.html:26
+#: templates/about.html:27
+msgid "Development Version"
+msgstr ""
+
+#: templates/about.html:30
msgid "Up to Date"
msgstr ""
-#: templates/about.html:28
+#: templates/about.html:32
msgid "Update Available"
msgstr ""
-#: templates/about.html:34
-msgid "API Version"
-msgstr ""
-
-#: templates/about.html:39
-msgid "Python Version"
-msgstr ""
-
-#: templates/about.html:44
-msgid "Django Version"
-msgstr ""
-
-#: templates/about.html:51
+#: templates/about.html:42
msgid "Commit Hash"
msgstr ""
-#: templates/about.html:58
+#: templates/about.html:49
msgid "Commit Date"
msgstr ""
-#: templates/about.html:63
+#: templates/about.html:55
msgid "InvenTree Documentation"
msgstr ""
-#: templates/about.html:68
+#: templates/about.html:60
+msgid "API Version"
+msgstr ""
+
+#: templates/about.html:65
+msgid "Python Version"
+msgstr ""
+
+#: templates/about.html:70
+msgid "Django Version"
+msgstr ""
+
+#: templates/about.html:75
msgid "View Code on GitHub"
msgstr ""
-#: templates/about.html:73
+#: templates/about.html:80
msgid "Credits"
msgstr ""
-#: templates/about.html:78
+#: templates/about.html:85
msgid "Mobile App"
msgstr ""
-#: templates/about.html:83
+#: templates/about.html:90
msgid "Submit Bug Report"
msgstr ""
-#: templates/about.html:90 templates/clip.html:4
+#: templates/about.html:97 templates/clip.html:4
msgid "copy to clipboard"
msgstr ""
-#: templates/about.html:90
+#: templates/about.html:97
msgid "copy version information"
msgstr ""
-#: templates/about.html:100 templates/js/translated/modals.js:33
-#: templates/js/translated/modals.js:567 templates/js/translated/modals.js:661
-#: templates/js/translated/modals.js:957 templates/modals.html:29
+#: templates/about.html:107 templates/js/translated/modals.js:50
+#: templates/js/translated/modals.js:584 templates/js/translated/modals.js:678
+#: templates/js/translated/modals.js:971 templates/modals.html:29
#: templates/modals.html:54
msgid "Close"
msgstr ""
@@ -6515,1358 +6662,1390 @@ msgstr ""
msgid "Remote image must not exceed maximum allowable file size"
msgstr ""
-#: templates/js/report.js:47 templates/js/translated/report.js:47
+#: templates/js/report.js:47 templates/js/translated/report.js:67
msgid "items selected"
msgstr ""
-#: templates/js/report.js:55 templates/js/translated/report.js:55
+#: templates/js/report.js:55 templates/js/translated/report.js:75
msgid "Select Report Template"
msgstr ""
-#: templates/js/report.js:70 templates/js/translated/report.js:70
+#: templates/js/report.js:70 templates/js/translated/report.js:90
msgid "Select Test Report Template"
msgstr ""
-#: templates/js/report.js:98 templates/js/translated/label.js:10
-#: templates/js/translated/report.js:98 templates/js/translated/stock.js:244
+#: templates/js/report.js:98 templates/js/translated/label.js:29
+#: templates/js/translated/report.js:118 templates/js/translated/stock.js:313
msgid "Select Stock Items"
msgstr ""
-#: templates/js/report.js:99 templates/js/translated/report.js:99
+#: templates/js/report.js:99 templates/js/translated/report.js:119
msgid "Stock item(s) must be selected before printing reports"
msgstr ""
#: templates/js/report.js:116 templates/js/report.js:169
#: templates/js/report.js:223 templates/js/report.js:277
-#: templates/js/report.js:331 templates/js/translated/report.js:116
-#: templates/js/translated/report.js:169 templates/js/translated/report.js:223
-#: templates/js/translated/report.js:277 templates/js/translated/report.js:331
+#: templates/js/report.js:331 templates/js/translated/report.js:136
+#: templates/js/translated/report.js:189 templates/js/translated/report.js:243
+#: templates/js/translated/report.js:297 templates/js/translated/report.js:351
msgid "No Reports Found"
msgstr ""
-#: templates/js/report.js:117 templates/js/translated/report.js:117
+#: templates/js/report.js:117 templates/js/translated/report.js:137
msgid "No report templates found which match selected stock item(s)"
msgstr ""
-#: templates/js/report.js:152 templates/js/translated/report.js:152
+#: templates/js/report.js:152 templates/js/translated/report.js:172
msgid "Select Builds"
msgstr ""
-#: templates/js/report.js:153 templates/js/translated/report.js:153
+#: templates/js/report.js:153 templates/js/translated/report.js:173
msgid "Build(s) must be selected before printing reports"
msgstr ""
-#: templates/js/report.js:170 templates/js/translated/report.js:170
+#: templates/js/report.js:170 templates/js/translated/report.js:190
msgid "No report templates found which match selected build(s)"
msgstr ""
-#: templates/js/report.js:205 templates/js/translated/label.js:115
-#: templates/js/translated/report.js:205
+#: templates/js/report.js:205 templates/js/translated/label.js:134
+#: templates/js/translated/report.js:225
msgid "Select Parts"
msgstr ""
-#: templates/js/report.js:206 templates/js/translated/report.js:206
+#: templates/js/report.js:206 templates/js/translated/report.js:226
msgid "Part(s) must be selected before printing reports"
msgstr ""
-#: templates/js/report.js:224 templates/js/translated/report.js:224
+#: templates/js/report.js:224 templates/js/translated/report.js:244
msgid "No report templates found which match selected part(s)"
msgstr ""
-#: templates/js/report.js:259 templates/js/translated/report.js:259
+#: templates/js/report.js:259 templates/js/translated/report.js:279
msgid "Select Purchase Orders"
msgstr ""
-#: templates/js/report.js:260 templates/js/translated/report.js:260
+#: templates/js/report.js:260 templates/js/translated/report.js:280
msgid "Purchase Order(s) must be selected before printing report"
msgstr ""
#: templates/js/report.js:278 templates/js/report.js:332
-#: templates/js/translated/report.js:278 templates/js/translated/report.js:332
+#: templates/js/translated/report.js:298 templates/js/translated/report.js:352
msgid "No report templates found which match selected orders"
msgstr ""
-#: templates/js/report.js:313 templates/js/translated/report.js:313
+#: templates/js/report.js:313 templates/js/translated/report.js:333
msgid "Select Sales Orders"
msgstr ""
-#: templates/js/report.js:314 templates/js/translated/report.js:314
+#: templates/js/report.js:314 templates/js/translated/report.js:334
msgid "Sales Order(s) must be selected before printing report"
msgstr ""
-#: templates/js/translated/api.js:161 templates/js/translated/modals.js:1027
+#: templates/js/translated/api.js:174 templates/js/translated/modals.js:1041
msgid "No Response"
msgstr ""
-#: templates/js/translated/api.js:162 templates/js/translated/modals.js:1028
+#: templates/js/translated/api.js:175 templates/js/translated/modals.js:1042
msgid "No response from the InvenTree server"
msgstr ""
-#: templates/js/translated/api.js:167
+#: templates/js/translated/api.js:181
msgid "Error 400: Bad request"
msgstr ""
-#: templates/js/translated/api.js:168
+#: templates/js/translated/api.js:182
msgid "API request returned error code 400"
msgstr ""
-#: templates/js/translated/api.js:171 templates/js/translated/modals.js:1037
+#: templates/js/translated/api.js:186 templates/js/translated/modals.js:1051
msgid "Error 401: Not Authenticated"
msgstr ""
-#: templates/js/translated/api.js:172 templates/js/translated/modals.js:1038
+#: templates/js/translated/api.js:187 templates/js/translated/modals.js:1052
msgid "Authentication credentials not supplied"
msgstr ""
-#: templates/js/translated/api.js:175 templates/js/translated/modals.js:1042
+#: templates/js/translated/api.js:191 templates/js/translated/modals.js:1056
msgid "Error 403: Permission Denied"
msgstr ""
-#: templates/js/translated/api.js:176 templates/js/translated/modals.js:1043
+#: templates/js/translated/api.js:192 templates/js/translated/modals.js:1057
msgid "You do not have the required permissions to access this function"
msgstr ""
-#: templates/js/translated/api.js:179 templates/js/translated/modals.js:1047
+#: templates/js/translated/api.js:196 templates/js/translated/modals.js:1061
msgid "Error 404: Resource Not Found"
msgstr ""
-#: templates/js/translated/api.js:180 templates/js/translated/modals.js:1048
+#: templates/js/translated/api.js:197 templates/js/translated/modals.js:1062
msgid "The requested resource could not be located on the server"
msgstr ""
-#: templates/js/translated/api.js:183 templates/js/translated/modals.js:1052
+#: templates/js/translated/api.js:201 templates/js/translated/modals.js:1066
msgid "Error 408: Timeout"
msgstr ""
-#: templates/js/translated/api.js:184 templates/js/translated/modals.js:1053
+#: templates/js/translated/api.js:202 templates/js/translated/modals.js:1067
msgid "Connection timeout while requesting data from server"
msgstr ""
-#: templates/js/translated/api.js:187
+#: templates/js/translated/api.js:205
msgid "Unhandled Error Code"
msgstr ""
-#: templates/js/translated/api.js:188
+#: templates/js/translated/api.js:206
msgid "Error code"
msgstr ""
-#: templates/js/translated/attachment.js:16
+#: templates/js/translated/attachment.js:27
msgid "No attachments found"
msgstr ""
-#: templates/js/translated/attachment.js:56
+#: templates/js/translated/attachment.js:91
msgid "Upload Date"
msgstr ""
-#: templates/js/translated/attachment.js:69
+#: templates/js/translated/attachment.js:104
msgid "Edit attachment"
msgstr ""
-#: templates/js/translated/attachment.js:76
+#: templates/js/translated/attachment.js:111
msgid "Delete attachment"
msgstr ""
-#: templates/js/translated/barcode.js:8
+#: templates/js/translated/barcode.js:30
msgid "Scan barcode data here using wedge scanner"
msgstr ""
-#: templates/js/translated/barcode.js:10
+#: templates/js/translated/barcode.js:32
msgid "Enter barcode data"
msgstr ""
-#: templates/js/translated/barcode.js:14
+#: templates/js/translated/barcode.js:36
msgid "Barcode"
msgstr ""
-#: templates/js/translated/barcode.js:32
+#: templates/js/translated/barcode.js:54
msgid "Enter optional notes for stock transfer"
msgstr ""
-#: templates/js/translated/barcode.js:33
+#: templates/js/translated/barcode.js:55
msgid "Enter notes"
msgstr ""
-#: templates/js/translated/barcode.js:71
+#: templates/js/translated/barcode.js:93
msgid "Server error"
msgstr ""
-#: templates/js/translated/barcode.js:92
+#: templates/js/translated/barcode.js:114
msgid "Unknown response from server"
msgstr ""
-#: templates/js/translated/barcode.js:119
-#: templates/js/translated/modals.js:1017
+#: templates/js/translated/barcode.js:141
+#: templates/js/translated/modals.js:1031
msgid "Invalid server response"
msgstr ""
-#: templates/js/translated/barcode.js:212
+#: templates/js/translated/barcode.js:234
msgid "Scan barcode data below"
msgstr ""
-#: templates/js/translated/barcode.js:270
+#: templates/js/translated/barcode.js:281 templates/navbar.html:65
+msgid "Scan Barcode"
+msgstr ""
+
+#: templates/js/translated/barcode.js:292
msgid "No URL in response"
msgstr ""
-#: templates/js/translated/barcode.js:288
+#: templates/js/translated/barcode.js:310
msgid "Link Barcode to Stock Item"
msgstr ""
-#: templates/js/translated/barcode.js:311
+#: templates/js/translated/barcode.js:333
msgid "This will remove the association between this stock item and the barcode"
msgstr ""
-#: templates/js/translated/barcode.js:317
+#: templates/js/translated/barcode.js:339
msgid "Unlink"
msgstr ""
-#: templates/js/translated/barcode.js:376 templates/js/translated/stock.js:220
+#: templates/js/translated/barcode.js:398 templates/js/translated/stock.js:289
msgid "Remove stock item"
msgstr ""
-#: templates/js/translated/barcode.js:418
+#: templates/js/translated/barcode.js:440
msgid "Check Stock Items into Location"
msgstr ""
-#: templates/js/translated/barcode.js:422
-#: templates/js/translated/barcode.js:547
+#: templates/js/translated/barcode.js:444
+#: templates/js/translated/barcode.js:571
msgid "Check In"
msgstr ""
-#: templates/js/translated/barcode.js:462
-#: templates/js/translated/barcode.js:586
+#: templates/js/translated/barcode.js:486
+#: templates/js/translated/barcode.js:610
msgid "Error transferring stock"
msgstr ""
-#: templates/js/translated/barcode.js:481
+#: templates/js/translated/barcode.js:505
msgid "Stock Item already scanned"
msgstr ""
-#: templates/js/translated/barcode.js:485
+#: templates/js/translated/barcode.js:509
msgid "Stock Item already in this location"
msgstr ""
-#: templates/js/translated/barcode.js:492
+#: templates/js/translated/barcode.js:516
msgid "Added stock item"
msgstr ""
-#: templates/js/translated/barcode.js:499
+#: templates/js/translated/barcode.js:523
msgid "Barcode does not match Stock Item"
msgstr ""
-#: templates/js/translated/barcode.js:542
+#: templates/js/translated/barcode.js:566
msgid "Check Into Location"
msgstr ""
-#: templates/js/translated/barcode.js:605
+#: templates/js/translated/barcode.js:629
msgid "Barcode does not match a valid location"
msgstr ""
-#: templates/js/translated/bom.js:195 templates/js/translated/build.js:1152
+#: templates/js/translated/bom.js:215 templates/js/translated/build.js:1169
msgid "Open subassembly"
msgstr ""
-#: templates/js/translated/bom.js:269
+#: templates/js/translated/bom.js:287
msgid "Purchase Price Range"
msgstr ""
-#: templates/js/translated/bom.js:277
+#: templates/js/translated/bom.js:294
msgid "Purchase Price Average"
msgstr ""
-#: templates/js/translated/bom.js:326 templates/js/translated/bom.js:412
+#: templates/js/translated/bom.js:342 templates/js/translated/bom.js:428
msgid "View BOM"
msgstr ""
-#: templates/js/translated/bom.js:386
+#: templates/js/translated/bom.js:402
msgid "Validate BOM Item"
msgstr ""
-#: templates/js/translated/bom.js:388
+#: templates/js/translated/bom.js:404
msgid "This line has been validated"
msgstr ""
-#: templates/js/translated/bom.js:390 templates/js/translated/bom.js:555
+#: templates/js/translated/bom.js:406 templates/js/translated/bom.js:569
msgid "Edit BOM Item"
msgstr ""
-#: templates/js/translated/bom.js:392 templates/js/translated/bom.js:539
+#: templates/js/translated/bom.js:408 templates/js/translated/bom.js:554
msgid "Delete BOM Item"
msgstr ""
-#: templates/js/translated/bom.js:483 templates/js/translated/build.js:458
-#: templates/js/translated/build.js:1250
+#: templates/js/translated/bom.js:499 templates/js/translated/build.js:483
+#: templates/js/translated/build.js:1267
msgid "No BOM items found"
msgstr ""
-#: templates/js/translated/build.js:42
+#: templates/js/translated/build.js:69
msgid "Edit Build Order"
msgstr ""
-#: templates/js/translated/build.js:68
+#: templates/js/translated/build.js:95
msgid "Create Build Order"
msgstr ""
-#: templates/js/translated/build.js:100
+#: templates/js/translated/build.js:127
msgid "Auto-allocate stock items to this output"
msgstr ""
-#: templates/js/translated/build.js:108
+#: templates/js/translated/build.js:135
msgid "Unallocate stock from build output"
msgstr ""
-#: templates/js/translated/build.js:118
+#: templates/js/translated/build.js:145
msgid "Complete build output"
msgstr ""
-#: templates/js/translated/build.js:127
+#: templates/js/translated/build.js:154
msgid "Delete build output"
msgstr ""
-#: templates/js/translated/build.js:222
+#: templates/js/translated/build.js:249
msgid "No build order allocations found"
msgstr ""
-#: templates/js/translated/build.js:260 templates/js/translated/order.js:471
+#: templates/js/translated/build.js:287 templates/js/translated/order.js:813
msgid "Location not specified"
msgstr ""
-#: templates/js/translated/build.js:364 templates/stock_table.html:20
+#: templates/js/translated/build.js:391 templates/stock_table.html:20
msgid "New Stock Item"
msgstr ""
-#: templates/js/translated/build.js:679
+#: templates/js/translated/build.js:702
msgid "Required Part"
msgstr ""
-#: templates/js/translated/build.js:700
+#: templates/js/translated/build.js:723
msgid "Quantity Per"
msgstr ""
-#: templates/js/translated/build.js:770 templates/js/translated/build.js:1214
+#: templates/js/translated/build.js:793 templates/js/translated/build.js:1231
#: templates/stock_table.html:59
msgid "Order stock"
msgstr ""
-#: templates/js/translated/build.js:823
+#: templates/js/translated/build.js:846
msgid "No builds matching query"
msgstr ""
-#: templates/js/translated/build.js:840 templates/js/translated/part.js:711
-#: templates/js/translated/part.js:956 templates/js/translated/stock.js:883
-#: templates/js/translated/stock.js:1336
+#: templates/js/translated/build.js:863 templates/js/translated/part.js:845
+#: templates/js/translated/part.js:1123 templates/js/translated/stock.js:783
+#: templates/js/translated/stock.js:1477
msgid "Select"
msgstr ""
-#: templates/js/translated/build.js:860
+#: templates/js/translated/build.js:883
msgid "Build order is overdue"
msgstr ""
-#: templates/js/translated/build.js:924 templates/js/translated/stock.js:1558
+#: templates/js/translated/build.js:944 templates/js/translated/stock.js:1696
msgid "No user information"
msgstr ""
-#: templates/js/translated/build.js:939
+#: templates/js/translated/build.js:956
msgid "No information"
msgstr ""
-#: templates/js/translated/build.js:989
+#: templates/js/translated/build.js:1007
msgid "No parts allocated for"
msgstr ""
-#: templates/js/translated/company.js:34
+#: templates/js/translated/company.js:65
msgid "Add Manufacturer"
msgstr ""
-#: templates/js/translated/company.js:47 templates/js/translated/company.js:136
+#: templates/js/translated/company.js:78 templates/js/translated/company.js:176
msgid "Add Manufacturer Part"
msgstr ""
-#: templates/js/translated/company.js:59
+#: templates/js/translated/company.js:99
msgid "Edit Manufacturer Part"
msgstr ""
-#: templates/js/translated/company.js:68
+#: templates/js/translated/company.js:108
msgid "Delete Manufacturer Part"
msgstr ""
-#: templates/js/translated/company.js:124 templates/js/translated/order.js:58
+#: templates/js/translated/company.js:164 templates/js/translated/order.js:86
msgid "Add Supplier"
msgstr ""
-#: templates/js/translated/company.js:152
+#: templates/js/translated/company.js:192
msgid "Add Supplier Part"
msgstr ""
-#: templates/js/translated/company.js:162
+#: templates/js/translated/company.js:207
msgid "Edit Supplier Part"
msgstr ""
-#: templates/js/translated/company.js:172
+#: templates/js/translated/company.js:217
msgid "Delete Supplier Part"
msgstr ""
-#: templates/js/translated/company.js:219
+#: templates/js/translated/company.js:264
msgid "Edit Company"
msgstr ""
-#: templates/js/translated/company.js:240
+#: templates/js/translated/company.js:285
msgid "Add new Company"
msgstr ""
-#: templates/js/translated/company.js:317
+#: templates/js/translated/company.js:362
msgid "Parts Supplied"
msgstr ""
-#: templates/js/translated/company.js:326
+#: templates/js/translated/company.js:371
msgid "Parts Manufactured"
msgstr ""
-#: templates/js/translated/company.js:339
+#: templates/js/translated/company.js:385
msgid "No company information found"
msgstr ""
-#: templates/js/translated/company.js:357
+#: templates/js/translated/company.js:404
msgid "The following manufacturer parts will be deleted"
msgstr ""
-#: templates/js/translated/company.js:374
+#: templates/js/translated/company.js:421
msgid "Delete Manufacturer Parts"
msgstr ""
-#: templates/js/translated/company.js:427
+#: templates/js/translated/company.js:475
msgid "No manufacturer parts found"
msgstr ""
-#: templates/js/translated/company.js:446
-#: templates/js/translated/company.js:696 templates/js/translated/part.js:288
-#: templates/js/translated/part.js:373
+#: templates/js/translated/company.js:495
+#: templates/js/translated/company.js:751 templates/js/translated/part.js:416
+#: templates/js/translated/part.js:501
msgid "Template part"
msgstr ""
-#: templates/js/translated/company.js:450
-#: templates/js/translated/company.js:700 templates/js/translated/part.js:292
-#: templates/js/translated/part.js:377
+#: templates/js/translated/company.js:499
+#: templates/js/translated/company.js:755 templates/js/translated/part.js:420
+#: templates/js/translated/part.js:505
msgid "Assembled part"
msgstr ""
-#: templates/js/translated/company.js:574 templates/js/translated/part.js:462
+#: templates/js/translated/company.js:626 templates/js/translated/part.js:593
msgid "No parameters found"
msgstr ""
-#: templates/js/translated/company.js:610 templates/js/translated/part.js:503
+#: templates/js/translated/company.js:663 templates/js/translated/part.js:635
msgid "Edit parameter"
msgstr ""
-#: templates/js/translated/company.js:611 templates/js/translated/part.js:504
+#: templates/js/translated/company.js:664 templates/js/translated/part.js:636
msgid "Delete parameter"
msgstr ""
-#: templates/js/translated/company.js:630 templates/js/translated/part.js:521
+#: templates/js/translated/company.js:683 templates/js/translated/part.js:653
msgid "Edit Parameter"
msgstr ""
-#: templates/js/translated/company.js:641 templates/js/translated/part.js:533
+#: templates/js/translated/company.js:694 templates/js/translated/part.js:665
msgid "Delete Parameter"
msgstr ""
-#: templates/js/translated/company.js:677
+#: templates/js/translated/company.js:731
msgid "No supplier parts found"
msgstr ""
-#: templates/js/translated/filters.js:167
-#: templates/js/translated/filters.js:404
+#: templates/js/translated/filters.js:178
+#: templates/js/translated/filters.js:402
msgid "true"
msgstr ""
-#: templates/js/translated/filters.js:171
-#: templates/js/translated/filters.js:405
+#: templates/js/translated/filters.js:182
+#: templates/js/translated/filters.js:403
msgid "false"
msgstr ""
-#: templates/js/translated/filters.js:193
+#: templates/js/translated/filters.js:204
msgid "Select filter"
msgstr ""
-#: templates/js/translated/filters.js:268
+#: templates/js/translated/filters.js:279
msgid "Reload data"
msgstr ""
-#: templates/js/translated/filters.js:270
+#: templates/js/translated/filters.js:281
msgid "Add new filter"
msgstr ""
-#: templates/js/translated/filters.js:273
+#: templates/js/translated/filters.js:284
msgid "Clear all filters"
msgstr ""
-#: templates/js/translated/filters.js:303
+#: templates/js/translated/filters.js:312
msgid "Create filter"
msgstr ""
-#: templates/js/translated/forms.js:289 templates/js/translated/forms.js:302
-#: templates/js/translated/forms.js:314 templates/js/translated/forms.js:326
+#: templates/js/translated/forms.js:323 templates/js/translated/forms.js:336
+#: templates/js/translated/forms.js:348 templates/js/translated/forms.js:360
msgid "Action Prohibited"
msgstr ""
-#: templates/js/translated/forms.js:290
+#: templates/js/translated/forms.js:324
msgid "Create operation not allowed"
msgstr ""
-#: templates/js/translated/forms.js:303
+#: templates/js/translated/forms.js:337
msgid "Update operation not allowed"
msgstr ""
-#: templates/js/translated/forms.js:315
+#: templates/js/translated/forms.js:349
msgid "Delete operation not allowed"
msgstr ""
-#: templates/js/translated/forms.js:327
+#: templates/js/translated/forms.js:361
msgid "View operation not allowed"
msgstr ""
-#: templates/js/translated/forms.js:865 templates/modals.html:21
+#: templates/js/translated/forms.js:889 templates/modals.html:21
#: templates/modals.html:47
msgid "Form errors exist"
msgstr ""
-#: templates/js/translated/forms.js:1258
+#: templates/js/translated/forms.js:1379
msgid "Searching"
msgstr ""
-#: templates/js/translated/forms.js:1423
+#: templates/js/translated/forms.js:1593
msgid "Clear input"
msgstr ""
-#: templates/js/translated/label.js:11
-msgid "Stock item(s) must be selected before printing labels"
+#: templates/js/translated/helpers.js:19
+msgid "YES"
msgstr ""
-#: templates/js/translated/label.js:29 templates/js/translated/label.js:79
-#: templates/js/translated/label.js:134
-msgid "No Labels Found"
+#: templates/js/translated/helpers.js:21
+msgid "NO"
msgstr ""
#: templates/js/translated/label.js:30
+msgid "Stock item(s) must be selected before printing labels"
+msgstr ""
+
+#: templates/js/translated/label.js:48 templates/js/translated/label.js:98
+#: templates/js/translated/label.js:153
+msgid "No Labels Found"
+msgstr ""
+
+#: templates/js/translated/label.js:49
msgid "No labels found which match selected stock item(s)"
msgstr ""
-#: templates/js/translated/label.js:61
+#: templates/js/translated/label.js:80
msgid "Select Stock Locations"
msgstr ""
-#: templates/js/translated/label.js:62
+#: templates/js/translated/label.js:81
msgid "Stock location(s) must be selected before printing labels"
msgstr ""
-#: templates/js/translated/label.js:80
+#: templates/js/translated/label.js:99
msgid "No labels found which match selected stock location(s)"
msgstr ""
-#: templates/js/translated/label.js:116
+#: templates/js/translated/label.js:135
msgid "Part(s) must be selected before printing labels"
msgstr ""
-#: templates/js/translated/label.js:135
+#: templates/js/translated/label.js:154
msgid "No labels found which match the selected part(s)"
msgstr ""
-#: templates/js/translated/label.js:209
+#: templates/js/translated/label.js:228
msgid "stock items selected"
msgstr ""
-#: templates/js/translated/label.js:217
+#: templates/js/translated/label.js:236
msgid "Select Label"
msgstr ""
-#: templates/js/translated/label.js:232
+#: templates/js/translated/label.js:251
msgid "Select Label Template"
msgstr ""
-#: templates/js/translated/modals.js:59 templates/js/translated/modals.js:103
-#: templates/js/translated/modals.js:593
+#: templates/js/translated/modals.js:76 templates/js/translated/modals.js:120
+#: templates/js/translated/modals.js:610
msgid "Cancel"
msgstr ""
-#: templates/js/translated/modals.js:60 templates/js/translated/modals.js:102
-#: templates/js/translated/modals.js:660 templates/js/translated/modals.js:956
+#: templates/js/translated/modals.js:77 templates/js/translated/modals.js:119
+#: templates/js/translated/modals.js:677 templates/js/translated/modals.js:970
#: templates/modals.html:30 templates/modals.html:55
msgid "Submit"
msgstr ""
-#: templates/js/translated/modals.js:101
+#: templates/js/translated/modals.js:118
msgid "Form Title"
msgstr ""
-#: templates/js/translated/modals.js:380
+#: templates/js/translated/modals.js:397
msgid "Waiting for server..."
msgstr ""
-#: templates/js/translated/modals.js:539
+#: templates/js/translated/modals.js:556
msgid "Show Error Information"
msgstr ""
-#: templates/js/translated/modals.js:592
+#: templates/js/translated/modals.js:609
msgid "Accept"
msgstr ""
-#: templates/js/translated/modals.js:649
+#: templates/js/translated/modals.js:666
msgid "Loading Data"
msgstr ""
-#: templates/js/translated/modals.js:907
+#: templates/js/translated/modals.js:922
msgid "Invalid response from server"
msgstr ""
-#: templates/js/translated/modals.js:907
+#: templates/js/translated/modals.js:922
msgid "Form data missing from server response"
msgstr ""
-#: templates/js/translated/modals.js:920
+#: templates/js/translated/modals.js:934
msgid "Error posting form data"
msgstr ""
-#: templates/js/translated/modals.js:1017
+#: templates/js/translated/modals.js:1031
msgid "JSON response missing form data"
msgstr ""
-#: templates/js/translated/modals.js:1032
+#: templates/js/translated/modals.js:1046
msgid "Error 400: Bad Request"
msgstr ""
-#: templates/js/translated/modals.js:1033
+#: templates/js/translated/modals.js:1047
msgid "Server returned error code 400"
msgstr ""
-#: templates/js/translated/modals.js:1056
+#: templates/js/translated/modals.js:1070
msgid "Error requesting form data"
msgstr ""
-#: templates/js/translated/model_renderers.js:38
+#: templates/js/translated/model_renderers.js:40
msgid "Company ID"
msgstr ""
-#: templates/js/translated/model_renderers.js:78
+#: templates/js/translated/model_renderers.js:82
msgid "Location ID"
msgstr ""
-#: templates/js/translated/model_renderers.js:95
+#: templates/js/translated/model_renderers.js:99
msgid "Build ID"
msgstr ""
-#: templates/js/translated/model_renderers.js:114
+#: templates/js/translated/model_renderers.js:119
msgid "Part ID"
msgstr ""
-#: templates/js/translated/model_renderers.js:163
+#: templates/js/translated/model_renderers.js:171
msgid "Category ID"
msgstr ""
-#: templates/js/translated/model_renderers.js:199
+#: templates/js/translated/model_renderers.js:208
msgid "Manufacturer Part ID"
msgstr ""
-#: templates/js/translated/model_renderers.js:227
+#: templates/js/translated/model_renderers.js:237
msgid "Supplier Part ID"
msgstr ""
-#: templates/js/translated/order.js:17
+#: templates/js/translated/order.js:45
msgid "Add Customer"
msgstr ""
-#: templates/js/translated/order.js:42
+#: templates/js/translated/order.js:70
msgid "Create Sales Order"
msgstr ""
-#: templates/js/translated/order.js:222
+#: templates/js/translated/order.js:295
msgid "No purchase orders found"
msgstr ""
-#: templates/js/translated/order.js:246 templates/js/translated/order.js:341
+#: templates/js/translated/order.js:320 templates/js/translated/order.js:682
msgid "Order is overdue"
msgstr ""
-#: templates/js/translated/order.js:318
+#: templates/js/translated/order.js:452
+msgid "No line items found"
+msgstr ""
+
+#: templates/js/translated/order.js:617
+msgid "Delete line item"
+msgstr ""
+
+#: templates/js/translated/order.js:621
+msgid "Receive line item"
+msgstr ""
+
+#: templates/js/translated/order.js:658
msgid "No sales orders found"
msgstr ""
-#: templates/js/translated/order.js:355
+#: templates/js/translated/order.js:696
msgid "Invalid Customer"
msgstr ""
-#: templates/js/translated/order.js:432
+#: templates/js/translated/order.js:774
msgid "No sales order allocations found"
msgstr ""
-#: templates/js/translated/part.js:10
-msgid "YES"
-msgstr ""
-
-#: templates/js/translated/part.js:12
-msgid "NO"
-msgstr ""
-
-#: templates/js/translated/part.js:22
-msgid "Add Part Category"
-msgstr ""
-
-#: templates/js/translated/part.js:53
+#: templates/js/translated/part.js:49
msgid "Part Attributes"
msgstr ""
-#: templates/js/translated/part.js:96
+#: templates/js/translated/part.js:53
msgid "Part Creation Options"
msgstr ""
-#: templates/js/translated/part.js:102
-msgid "Initial Stock Quantity"
-msgstr ""
-
-#: templates/js/translated/part.js:103
-msgid "Initialize part stock with specified quantity"
-msgstr ""
-
-#: templates/js/translated/part.js:109
-msgid "Copy Category Parameters"
-msgstr ""
-
-#: templates/js/translated/part.js:110
-msgid "Copy parameter templates from selected part category"
-msgstr ""
-
-#: templates/js/translated/part.js:120
+#: templates/js/translated/part.js:57
msgid "Part Duplication Options"
msgstr ""
-#: templates/js/translated/part.js:131
-msgid "Copy Image"
+#: templates/js/translated/part.js:61
+msgid "Supplier Options"
msgstr ""
-#: templates/js/translated/part.js:132
-msgid "Copy image from original part"
+#: templates/js/translated/part.js:75
+msgid "Add Part Category"
msgstr ""
-#: templates/js/translated/part.js:138
-msgid "Copy BOM"
+#: templates/js/translated/part.js:159
+msgid "Create Initial Stock"
msgstr ""
-#: templates/js/translated/part.js:139
-msgid "Copy bill of materials from original part"
+#: templates/js/translated/part.js:160
+msgid "Create an initial stock item for this part"
msgstr ""
-#: templates/js/translated/part.js:145
-msgid "Copy Parameters"
+#: templates/js/translated/part.js:167
+msgid "Initial Stock Quantity"
msgstr ""
-#: templates/js/translated/part.js:146
-msgid "Copy parameter data from original part"
+#: templates/js/translated/part.js:168
+msgid "Specify initial stock quantity for this part"
msgstr ""
-#: templates/js/translated/part.js:158
-msgid "Parent part category"
+#: templates/js/translated/part.js:175 templates/js/translated/stock.js:330
+msgid "Select destination stock location"
+msgstr ""
+
+#: templates/js/translated/part.js:186
+msgid "Copy Category Parameters"
+msgstr ""
+
+#: templates/js/translated/part.js:187
+msgid "Copy parameter templates from selected part category"
+msgstr ""
+
+#: templates/js/translated/part.js:195
+msgid "Add Supplier Data"
msgstr ""
#: templates/js/translated/part.js:196
+msgid "Create initial supplier data for this part"
+msgstr ""
+
+#: templates/js/translated/part.js:252
+msgid "Copy Image"
+msgstr ""
+
+#: templates/js/translated/part.js:253
+msgid "Copy image from original part"
+msgstr ""
+
+#: templates/js/translated/part.js:260
+msgid "Copy BOM"
+msgstr ""
+
+#: templates/js/translated/part.js:261
+msgid "Copy bill of materials from original part"
+msgstr ""
+
+#: templates/js/translated/part.js:268
+msgid "Copy Parameters"
+msgstr ""
+
+#: templates/js/translated/part.js:269
+msgid "Copy parameter data from original part"
+msgstr ""
+
+#: templates/js/translated/part.js:282
+msgid "Parent part category"
+msgstr ""
+
+#: templates/js/translated/part.js:323
msgid "Edit Part"
msgstr ""
-#: templates/js/translated/part.js:280 templates/js/translated/part.js:365
+#: templates/js/translated/part.js:408 templates/js/translated/part.js:493
msgid "Trackable part"
msgstr ""
-#: templates/js/translated/part.js:284 templates/js/translated/part.js:369
+#: templates/js/translated/part.js:412 templates/js/translated/part.js:497
msgid "Virtual part"
msgstr ""
-#: templates/js/translated/part.js:296
+#: templates/js/translated/part.js:424
msgid "Starred part"
msgstr ""
-#: templates/js/translated/part.js:300
+#: templates/js/translated/part.js:428
msgid "Salable part"
msgstr ""
-#: templates/js/translated/part.js:414
+#: templates/js/translated/part.js:543
msgid "No variants found"
msgstr ""
-#: templates/js/translated/part.js:601 templates/js/translated/part.js:840
+#: templates/js/translated/part.js:732 templates/js/translated/part.js:994
msgid "No parts found"
msgstr ""
-#: templates/js/translated/part.js:779
+#: templates/js/translated/part.js:921
msgid "No category"
msgstr ""
-#: templates/js/translated/part.js:797
-#: templates/js/translated/table_filters.js:337
+#: templates/js/translated/part.js:944
+#: templates/js/translated/table_filters.js:350
msgid "Low stock"
msgstr ""
-#: templates/js/translated/part.js:981 templates/js/translated/stock.js:1360
+#: templates/js/translated/part.js:1148 templates/js/translated/stock.js:1501
msgid "Path"
msgstr ""
-#: templates/js/translated/part.js:1024
+#: templates/js/translated/part.js:1191
msgid "No test templates matching query"
msgstr ""
-#: templates/js/translated/part.js:1075 templates/js/translated/stock.js:443
+#: templates/js/translated/part.js:1242 templates/js/translated/stock.js:514
msgid "Edit test result"
msgstr ""
-#: templates/js/translated/part.js:1076 templates/js/translated/stock.js:444
+#: templates/js/translated/part.js:1243 templates/js/translated/stock.js:515
msgid "Delete test result"
msgstr ""
-#: templates/js/translated/part.js:1082
+#: templates/js/translated/part.js:1249
msgid "This test is defined for a parent part"
msgstr ""
-#: templates/js/translated/part.js:1107
+#: templates/js/translated/part.js:1274
#, python-brace-format
msgid "No ${human_name} information found"
msgstr ""
-#: templates/js/translated/part.js:1160
+#: templates/js/translated/part.js:1329
#, python-brace-format
msgid "Edit ${human_name}"
msgstr ""
-#: templates/js/translated/part.js:1161
+#: templates/js/translated/part.js:1330
#, python-brace-format
msgid "Delete ${human_name}"
msgstr ""
-#: templates/js/translated/part.js:1261
+#: templates/js/translated/part.js:1431
msgid "Single Price"
msgstr ""
-#: templates/js/translated/part.js:1280
+#: templates/js/translated/part.js:1450
msgid "Single Price Difference"
msgstr ""
-#: templates/js/translated/stock.js:9
+#: templates/js/translated/stock.js:66
msgid "Parent stock location"
msgstr ""
-#: templates/js/translated/stock.js:39
+#: templates/js/translated/stock.js:96
msgid "Export Stock"
msgstr ""
-#: templates/js/translated/stock.js:42
+#: templates/js/translated/stock.js:99
msgid "Format"
msgstr ""
-#: templates/js/translated/stock.js:43
+#: templates/js/translated/stock.js:100
msgid "Select file format"
msgstr ""
-#: templates/js/translated/stock.js:55
+#: templates/js/translated/stock.js:124
msgid "Include Sublocations"
msgstr ""
-#: templates/js/translated/stock.js:56
+#: templates/js/translated/stock.js:125
msgid "Include stock items in sublocations"
msgstr ""
-#: templates/js/translated/stock.js:98
+#: templates/js/translated/stock.js:167
msgid "Transfer Stock"
msgstr ""
-#: templates/js/translated/stock.js:99
+#: templates/js/translated/stock.js:168
msgid "Move"
msgstr ""
-#: templates/js/translated/stock.js:105
+#: templates/js/translated/stock.js:174
msgid "Count Stock"
msgstr ""
-#: templates/js/translated/stock.js:106
+#: templates/js/translated/stock.js:175
msgid "Count"
msgstr ""
-#: templates/js/translated/stock.js:110
+#: templates/js/translated/stock.js:179
msgid "Remove Stock"
msgstr ""
-#: templates/js/translated/stock.js:111
+#: templates/js/translated/stock.js:180
msgid "Take"
msgstr ""
-#: templates/js/translated/stock.js:115
+#: templates/js/translated/stock.js:184
msgid "Add Stock"
msgstr ""
-#: templates/js/translated/stock.js:116 users/models.py:190
+#: templates/js/translated/stock.js:185 users/models.py:190
msgid "Add"
msgstr ""
-#: templates/js/translated/stock.js:120 templates/stock_table.html:63
+#: templates/js/translated/stock.js:189 templates/stock_table.html:63
msgid "Delete Stock"
msgstr ""
-#: templates/js/translated/stock.js:209
+#: templates/js/translated/stock.js:278
msgid "Quantity cannot be adjusted for serialized stock"
msgstr ""
-#: templates/js/translated/stock.js:209
+#: templates/js/translated/stock.js:278
msgid "Specify stock quantity"
msgstr ""
-#: templates/js/translated/stock.js:245
+#: templates/js/translated/stock.js:314
msgid "You must select at least one available stock item"
msgstr ""
-#: templates/js/translated/stock.js:261
-msgid "Select destination stock location"
-msgstr ""
-
-#: templates/js/translated/stock.js:269
+#: templates/js/translated/stock.js:339
msgid "Stock transaction notes"
msgstr ""
-#: templates/js/translated/stock.js:406
+#: templates/js/translated/stock.js:477
msgid "PASS"
msgstr ""
-#: templates/js/translated/stock.js:408
+#: templates/js/translated/stock.js:479
msgid "FAIL"
msgstr ""
-#: templates/js/translated/stock.js:413
+#: templates/js/translated/stock.js:484
msgid "NO RESULT"
msgstr ""
-#: templates/js/translated/stock.js:439
+#: templates/js/translated/stock.js:510
msgid "Add test result"
msgstr ""
-#: templates/js/translated/stock.js:465
+#: templates/js/translated/stock.js:536
msgid "No test results found"
msgstr ""
-#: templates/js/translated/stock.js:513
+#: templates/js/translated/stock.js:584
msgid "Test Date"
msgstr ""
-#: templates/js/translated/stock.js:621
+#: templates/js/translated/stock.js:691
msgid "In production"
msgstr ""
-#: templates/js/translated/stock.js:625
+#: templates/js/translated/stock.js:695
msgid "Installed in Stock Item"
msgstr ""
-#: templates/js/translated/stock.js:633
+#: templates/js/translated/stock.js:703
msgid "Assigned to Sales Order"
msgstr ""
-#: templates/js/translated/stock.js:709
-msgid "No stock items matching query"
-msgstr ""
-
-#: templates/js/translated/stock.js:729
-msgid "items"
-msgstr ""
-
-#: templates/js/translated/stock.js:821
-msgid "batches"
-msgstr ""
-
-#: templates/js/translated/stock.js:848
-msgid "locations"
-msgstr ""
-
-#: templates/js/translated/stock.js:850
-msgid "Undefined location"
-msgstr ""
-
-#: templates/js/translated/stock.js:951
+#: templates/js/translated/stock.js:865
msgid "Stock item is in production"
msgstr ""
-#: templates/js/translated/stock.js:956
+#: templates/js/translated/stock.js:870
msgid "Stock item assigned to sales order"
msgstr ""
-#: templates/js/translated/stock.js:959
+#: templates/js/translated/stock.js:873
msgid "Stock item assigned to customer"
msgstr ""
-#: templates/js/translated/stock.js:963
+#: templates/js/translated/stock.js:877
msgid "Stock item has expired"
msgstr ""
-#: templates/js/translated/stock.js:965
+#: templates/js/translated/stock.js:879
msgid "Stock item will expire soon"
msgstr ""
-#: templates/js/translated/stock.js:969
+#: templates/js/translated/stock.js:883
msgid "Stock item has been allocated"
msgstr ""
-#: templates/js/translated/stock.js:973
+#: templates/js/translated/stock.js:887
msgid "Stock item has been installed in another item"
msgstr ""
-#: templates/js/translated/stock.js:980
+#: templates/js/translated/stock.js:894
msgid "Stock item has been rejected"
msgstr ""
-#: templates/js/translated/stock.js:984
+#: templates/js/translated/stock.js:896
msgid "Stock item is lost"
msgstr ""
-#: templates/js/translated/stock.js:987
+#: templates/js/translated/stock.js:898
msgid "Stock item is destroyed"
msgstr ""
-#: templates/js/translated/stock.js:991
-#: templates/js/translated/table_filters.js:148
+#: templates/js/translated/stock.js:902
+#: templates/js/translated/table_filters.js:161
msgid "Depleted"
msgstr ""
-#: templates/js/translated/stock.js:1020
+#: templates/js/translated/stock.js:956
msgid "Stocktake"
msgstr ""
-#: templates/js/translated/stock.js:1073
+#: templates/js/translated/stock.js:1029
msgid "Supplier part not specified"
msgstr ""
-#: templates/js/translated/stock.js:1223
+#: templates/js/translated/stock.js:1067
+msgid "No stock items matching query"
+msgstr ""
+
+#: templates/js/translated/stock.js:1088 templates/js/translated/stock.js:1136
+msgid "items"
+msgstr ""
+
+#: templates/js/translated/stock.js:1176
+msgid "batches"
+msgstr ""
+
+#: templates/js/translated/stock.js:1203
+msgid "locations"
+msgstr ""
+
+#: templates/js/translated/stock.js:1205
+msgid "Undefined location"
+msgstr ""
+
+#: templates/js/translated/stock.js:1364
msgid "Stock Status"
msgstr ""
-#: templates/js/translated/stock.js:1238
+#: templates/js/translated/stock.js:1379
msgid "Set Stock Status"
msgstr ""
-#: templates/js/translated/stock.js:1252
+#: templates/js/translated/stock.js:1393
msgid "Select Status Code"
msgstr ""
-#: templates/js/translated/stock.js:1253
+#: templates/js/translated/stock.js:1394
msgid "Status code must be selected"
msgstr ""
-#: templates/js/translated/stock.js:1392
+#: templates/js/translated/stock.js:1533
msgid "Invalid date"
msgstr ""
-#: templates/js/translated/stock.js:1439
+#: templates/js/translated/stock.js:1580
msgid "Location no longer exists"
msgstr ""
-#: templates/js/translated/stock.js:1458
+#: templates/js/translated/stock.js:1599
msgid "Purchase order no longer exists"
msgstr ""
-#: templates/js/translated/stock.js:1477
+#: templates/js/translated/stock.js:1618
msgid "Customer no longer exists"
msgstr ""
-#: templates/js/translated/stock.js:1495
+#: templates/js/translated/stock.js:1636
msgid "Stock item no longer exists"
msgstr ""
-#: templates/js/translated/stock.js:1518
+#: templates/js/translated/stock.js:1659
msgid "Added"
msgstr ""
-#: templates/js/translated/stock.js:1526
+#: templates/js/translated/stock.js:1667
msgid "Removed"
msgstr ""
-#: templates/js/translated/stock.js:1570
+#: templates/js/translated/stock.js:1708
msgid "Edit tracking entry"
msgstr ""
-#: templates/js/translated/stock.js:1571
+#: templates/js/translated/stock.js:1709
msgid "Delete tracking entry"
msgstr ""
-#: templates/js/translated/stock.js:1715
+#: templates/js/translated/stock.js:1833
msgid "No installed items"
msgstr ""
-#: templates/js/translated/stock.js:1738
+#: templates/js/translated/stock.js:1856
msgid "Serial"
msgstr ""
-#: templates/js/translated/stock.js:1766
+#: templates/js/translated/stock.js:1884
msgid "Uninstall Stock Item"
msgstr ""
-#: templates/js/translated/table_filters.js:43
+#: templates/js/translated/table_filters.js:56
msgid "Trackable Part"
msgstr ""
-#: templates/js/translated/table_filters.js:47
+#: templates/js/translated/table_filters.js:60
msgid "Assembled Part"
msgstr ""
-#: templates/js/translated/table_filters.js:51
+#: templates/js/translated/table_filters.js:64
msgid "Validated"
msgstr ""
-#: templates/js/translated/table_filters.js:59
+#: templates/js/translated/table_filters.js:72
msgid "Allow Variant Stock"
msgstr ""
-#: templates/js/translated/table_filters.js:79
-#: templates/js/translated/table_filters.js:143
+#: templates/js/translated/table_filters.js:92
+#: templates/js/translated/table_filters.js:156
msgid "Include sublocations"
msgstr ""
-#: templates/js/translated/table_filters.js:80
+#: templates/js/translated/table_filters.js:93
msgid "Include locations"
msgstr ""
-#: templates/js/translated/table_filters.js:90
-#: templates/js/translated/table_filters.js:91
-#: templates/js/translated/table_filters.js:314
+#: templates/js/translated/table_filters.js:103
+#: templates/js/translated/table_filters.js:104
+#: templates/js/translated/table_filters.js:327
msgid "Include subcategories"
msgstr ""
-#: templates/js/translated/table_filters.js:101
-#: templates/js/translated/table_filters.js:178
+#: templates/js/translated/table_filters.js:114
+#: templates/js/translated/table_filters.js:191
msgid "Is Serialized"
msgstr ""
-#: templates/js/translated/table_filters.js:104
-#: templates/js/translated/table_filters.js:185
+#: templates/js/translated/table_filters.js:117
+#: templates/js/translated/table_filters.js:198
msgid "Serial number GTE"
msgstr ""
-#: templates/js/translated/table_filters.js:105
-#: templates/js/translated/table_filters.js:186
+#: templates/js/translated/table_filters.js:118
+#: templates/js/translated/table_filters.js:199
msgid "Serial number greater than or equal to"
msgstr ""
-#: templates/js/translated/table_filters.js:108
-#: templates/js/translated/table_filters.js:189
+#: templates/js/translated/table_filters.js:121
+#: templates/js/translated/table_filters.js:202
msgid "Serial number LTE"
msgstr ""
-#: templates/js/translated/table_filters.js:109
-#: templates/js/translated/table_filters.js:190
+#: templates/js/translated/table_filters.js:122
+#: templates/js/translated/table_filters.js:203
msgid "Serial number less than or equal to"
msgstr ""
-#: templates/js/translated/table_filters.js:112
-#: templates/js/translated/table_filters.js:113
-#: templates/js/translated/table_filters.js:181
-#: templates/js/translated/table_filters.js:182
+#: templates/js/translated/table_filters.js:125
+#: templates/js/translated/table_filters.js:126
+#: templates/js/translated/table_filters.js:194
+#: templates/js/translated/table_filters.js:195
msgid "Serial number"
msgstr ""
-#: templates/js/translated/table_filters.js:117
-#: templates/js/translated/table_filters.js:199
+#: templates/js/translated/table_filters.js:130
+#: templates/js/translated/table_filters.js:212
msgid "Batch code"
msgstr ""
-#: templates/js/translated/table_filters.js:128
-#: templates/js/translated/table_filters.js:304
+#: templates/js/translated/table_filters.js:141
+#: templates/js/translated/table_filters.js:317
msgid "Active parts"
msgstr ""
-#: templates/js/translated/table_filters.js:129
+#: templates/js/translated/table_filters.js:142
msgid "Show stock for active parts"
msgstr ""
-#: templates/js/translated/table_filters.js:134
+#: templates/js/translated/table_filters.js:147
msgid "Part is an assembly"
msgstr ""
-#: templates/js/translated/table_filters.js:138
+#: templates/js/translated/table_filters.js:151
msgid "Is allocated"
msgstr ""
-#: templates/js/translated/table_filters.js:139
+#: templates/js/translated/table_filters.js:152
msgid "Item has been allocated"
msgstr ""
-#: templates/js/translated/table_filters.js:144
+#: templates/js/translated/table_filters.js:157
msgid "Include stock in sublocations"
msgstr ""
-#: templates/js/translated/table_filters.js:149
+#: templates/js/translated/table_filters.js:162
msgid "Show stock items which are depleted"
msgstr ""
-#: templates/js/translated/table_filters.js:154
+#: templates/js/translated/table_filters.js:167
msgid "Show items which are in stock"
msgstr ""
-#: templates/js/translated/table_filters.js:158
+#: templates/js/translated/table_filters.js:171
msgid "In Production"
msgstr ""
-#: templates/js/translated/table_filters.js:159
+#: templates/js/translated/table_filters.js:172
msgid "Show items which are in production"
msgstr ""
-#: templates/js/translated/table_filters.js:163
+#: templates/js/translated/table_filters.js:176
msgid "Include Variants"
msgstr ""
-#: templates/js/translated/table_filters.js:164
+#: templates/js/translated/table_filters.js:177
msgid "Include stock items for variant parts"
msgstr ""
-#: templates/js/translated/table_filters.js:168
+#: templates/js/translated/table_filters.js:181
msgid "Installed"
msgstr ""
-#: templates/js/translated/table_filters.js:169
+#: templates/js/translated/table_filters.js:182
msgid "Show stock items which are installed in another item"
msgstr ""
-#: templates/js/translated/table_filters.js:174
+#: templates/js/translated/table_filters.js:187
msgid "Show items which have been assigned to a customer"
msgstr ""
-#: templates/js/translated/table_filters.js:194
-#: templates/js/translated/table_filters.js:195
+#: templates/js/translated/table_filters.js:207
+#: templates/js/translated/table_filters.js:208
msgid "Stock status"
msgstr ""
-#: templates/js/translated/table_filters.js:203
+#: templates/js/translated/table_filters.js:216
msgid "Has purchase price"
msgstr ""
-#: templates/js/translated/table_filters.js:204
+#: templates/js/translated/table_filters.js:217
msgid "Show stock items which have a purchase price set"
msgstr ""
-#: templates/js/translated/table_filters.js:213
+#: templates/js/translated/table_filters.js:226
msgid "Show stock items which have expired"
msgstr ""
-#: templates/js/translated/table_filters.js:219
+#: templates/js/translated/table_filters.js:232
msgid "Show stock which is close to expiring"
msgstr ""
-#: templates/js/translated/table_filters.js:250
+#: templates/js/translated/table_filters.js:263
msgid "Build status"
msgstr ""
-#: templates/js/translated/table_filters.js:269
-#: templates/js/translated/table_filters.js:286
+#: templates/js/translated/table_filters.js:282
+#: templates/js/translated/table_filters.js:299
msgid "Order status"
msgstr ""
-#: templates/js/translated/table_filters.js:274
-#: templates/js/translated/table_filters.js:291
+#: templates/js/translated/table_filters.js:287
+#: templates/js/translated/table_filters.js:304
msgid "Outstanding"
msgstr ""
-#: templates/js/translated/table_filters.js:315
+#: templates/js/translated/table_filters.js:328
msgid "Include parts in subcategories"
msgstr ""
-#: templates/js/translated/table_filters.js:319
+#: templates/js/translated/table_filters.js:332
msgid "Has IPN"
msgstr ""
-#: templates/js/translated/table_filters.js:320
+#: templates/js/translated/table_filters.js:333
msgid "Part has internal part number"
msgstr ""
-#: templates/js/translated/table_filters.js:325
+#: templates/js/translated/table_filters.js:338
msgid "Show active parts"
msgstr ""
-#: templates/js/translated/table_filters.js:333
+#: templates/js/translated/table_filters.js:346
msgid "Stock available"
msgstr ""
-#: templates/js/translated/table_filters.js:349
+#: templates/js/translated/table_filters.js:362
msgid "Starred"
msgstr ""
-#: templates/js/translated/table_filters.js:361
+#: templates/js/translated/table_filters.js:374
msgid "Purchasable"
msgstr ""
-#: templates/js/translated/tables.js:342
+#: templates/js/translated/tables.js:357
msgid "Loading data"
msgstr ""
-#: templates/js/translated/tables.js:345
+#: templates/js/translated/tables.js:360
msgid "rows per page"
msgstr ""
-#: templates/js/translated/tables.js:348
+#: templates/js/translated/tables.js:363
msgid "Showing"
msgstr ""
-#: templates/js/translated/tables.js:348
+#: templates/js/translated/tables.js:363
msgid "to"
msgstr ""
-#: templates/js/translated/tables.js:348
+#: templates/js/translated/tables.js:363
msgid "of"
msgstr ""
-#: templates/js/translated/tables.js:348
+#: templates/js/translated/tables.js:363
msgid "rows"
msgstr ""
-#: templates/js/translated/tables.js:354
+#: templates/js/translated/tables.js:369
msgid "No matching results"
msgstr ""
-#: templates/js/translated/tables.js:357
+#: templates/js/translated/tables.js:372
msgid "Hide/Show pagination"
msgstr ""
-#: templates/js/translated/tables.js:360
+#: templates/js/translated/tables.js:375
msgid "Refresh"
msgstr ""
-#: templates/js/translated/tables.js:363
+#: templates/js/translated/tables.js:378
msgid "Toggle"
msgstr ""
-#: templates/js/translated/tables.js:366
+#: templates/js/translated/tables.js:381
msgid "Columns"
msgstr ""
-#: templates/js/translated/tables.js:369
+#: templates/js/translated/tables.js:384
msgid "All"
msgstr ""
-#: templates/navbar.html:13
+#: templates/navbar.html:19
msgid "Toggle navigation"
msgstr ""
-#: templates/navbar.html:33
+#: templates/navbar.html:39
msgid "Buy"
msgstr ""
-#: templates/navbar.html:43
+#: templates/navbar.html:51
msgid "Sell"
msgstr ""
-#: templates/navbar.html:55
-msgid "Scan Barcode"
-msgstr ""
-
-#: templates/navbar.html:77 users/models.py:39
+#: templates/navbar.html:87 users/models.py:39
msgid "Admin"
msgstr ""
-#: templates/navbar.html:79
+#: templates/navbar.html:89
msgid "Logout"
msgstr ""
-#: templates/navbar.html:81 templates/registration/login.html:89
+#: templates/navbar.html:91 templates/registration/login.html:89
msgid "Login"
msgstr ""
-#: templates/navbar.html:104
+#: templates/navbar.html:114
msgid "About InvenTree"
msgstr ""
diff --git a/InvenTree/locale/th/LC_MESSAGES/django.po b/InvenTree/locale/th/LC_MESSAGES/django.po
index 1adb94f81f..3be3993f7b 100644
--- a/InvenTree/locale/th/LC_MESSAGES/django.po
+++ b/InvenTree/locale/th/LC_MESSAGES/django.po
@@ -2,8 +2,8 @@ msgid ""
msgstr ""
"Project-Id-Version: inventree\n"
"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2021-08-07 15:14+0000\n"
-"PO-Revision-Date: 2021-08-07 15:30\n"
+"POT-Creation-Date: 2021-09-12 13:15+0000\n"
+"PO-Revision-Date: 2021-09-12 13:44\n"
"Last-Translator: \n"
"Language-Team: Thai\n"
"Language: th_TH\n"
@@ -36,7 +36,7 @@ msgstr ""
#: InvenTree/forms.py:111 build/forms.py:102 build/forms.py:123
#: build/forms.py:145 build/forms.py:169 build/forms.py:185 build/forms.py:227
#: order/forms.py:30 order/forms.py:41 order/forms.py:52 order/forms.py:63
-#: order/forms.py:74 part/forms.py:108 templates/js/translated/forms.js:545
+#: order/forms.py:74 part/forms.py:108 templates/js/translated/forms.js:564
msgid "Confirm"
msgstr ""
@@ -73,7 +73,7 @@ msgstr ""
msgid "Duplicate serial: {n}"
msgstr ""
-#: InvenTree/helpers.py:408 order/models.py:315 order/models.py:425
+#: InvenTree/helpers.py:408 order/models.py:315 order/models.py:430
#: stock/views.py:1363
msgid "Invalid quantity provided"
msgstr ""
@@ -102,152 +102,181 @@ msgstr ""
msgid "Number of unique serial number ({s}) must match quantity ({q})"
msgstr ""
-#: InvenTree/models.py:61 stock/models.py:1815
+#: InvenTree/models.py:66 stock/models.py:1826
msgid "Attachment"
msgstr ""
-#: InvenTree/models.py:62
+#: InvenTree/models.py:67
msgid "Select file to attach"
msgstr ""
-#: InvenTree/models.py:64 templates/js/translated/attachment.js:52
+#: InvenTree/models.py:69 templates/js/translated/attachment.js:87
msgid "Comment"
msgstr ""
-#: InvenTree/models.py:64
+#: InvenTree/models.py:69
msgid "File comment"
msgstr ""
-#: InvenTree/models.py:70 InvenTree/models.py:71 common/models.py:969
-#: common/models.py:970 part/models.py:2035
+#: InvenTree/models.py:75 InvenTree/models.py:76 common/models.py:993
+#: common/models.py:994 part/models.py:2051
#: report/templates/report/inventree_test_report_base.html:91
-#: templates/js/translated/stock.js:1549
+#: templates/js/translated/stock.js:1690
msgid "User"
msgstr ""
-#: InvenTree/models.py:74
+#: InvenTree/models.py:79
msgid "upload date"
msgstr ""
-#: InvenTree/models.py:113
+#: InvenTree/models.py:99
+msgid "Filename must not be empty"
+msgstr ""
+
+#: InvenTree/models.py:122
+msgid "Invalid attachment directory"
+msgstr ""
+
+#: InvenTree/models.py:132
+#, python-brace-format
+msgid "Filename contains illegal character '{c}'"
+msgstr ""
+
+#: InvenTree/models.py:135
+msgid "Filename missing extension"
+msgstr ""
+
+#: InvenTree/models.py:142
+msgid "Attachment with this filename already exists"
+msgstr ""
+
+#: InvenTree/models.py:149
+msgid "Error renaming file"
+msgstr ""
+
+#: InvenTree/models.py:184
msgid "Invalid choice"
msgstr ""
-#: InvenTree/models.py:129 InvenTree/models.py:130 company/models.py:412
-#: label/models.py:112 part/models.py:656 part/models.py:2196
-#: part/templates/part/part_base.html:233 report/models.py:181
+#: InvenTree/models.py:200 InvenTree/models.py:201 company/models.py:414
+#: label/models.py:112 part/models.py:658 part/models.py:2212
+#: part/templates/part/part_base.html:241 report/models.py:181
#: templates/InvenTree/search.html:137 templates/InvenTree/search.html:289
-#: templates/js/translated/company.js:583 templates/js/translated/part.js:338
-#: templates/js/translated/part.js:471 templates/js/translated/part.js:963
-#: templates/js/translated/stock.js:1342
+#: templates/js/translated/company.js:636 templates/js/translated/part.js:466
+#: templates/js/translated/part.js:603 templates/js/translated/part.js:1130
+#: templates/js/translated/stock.js:1483
msgid "Name"
msgstr ""
-#: InvenTree/models.py:136 build/models.py:187
-#: build/templates/build/detail.html:24 company/models.py:351
-#: company/models.py:519 company/templates/company/manufacturer_part.html:76
+#: InvenTree/models.py:207 build/models.py:187
+#: build/templates/build/detail.html:24 company/models.py:353
+#: company/models.py:569 company/templates/company/manufacturer_part.html:76
#: company/templates/company/supplier_part.html:75 label/models.py:119
-#: order/models.py:158 order/templates/order/purchase_order_detail.html:312
-#: part/models.py:679 part/templates/part/part_base.html:238
+#: order/models.py:158 part/models.py:681
+#: part/templates/part/part_base.html:246
#: part/templates/part/set_category.html:14 report/models.py:194
#: report/models.py:551 report/models.py:590
#: report/templates/report/inventree_build_order_base.html:118
#: templates/InvenTree/search.html:144 templates/InvenTree/search.html:224
#: templates/InvenTree/search.html:296
#: templates/InvenTree/settings/header.html:9
-#: templates/js/translated/bom.js:210 templates/js/translated/build.js:868
-#: templates/js/translated/build.js:1162 templates/js/translated/company.js:299
-#: templates/js/translated/company.js:497
-#: templates/js/translated/company.js:779 templates/js/translated/order.js:267
-#: templates/js/translated/order.js:369 templates/js/translated/part.js:397
-#: templates/js/translated/part.js:581 templates/js/translated/part.js:758
-#: templates/js/translated/part.js:975 templates/js/translated/part.js:1043
-#: templates/js/translated/stock.js:926 templates/js/translated/stock.js:1354
-#: templates/js/translated/stock.js:1399
+#: templates/js/translated/bom.js:230 templates/js/translated/build.js:891
+#: templates/js/translated/build.js:1179 templates/js/translated/company.js:344
+#: templates/js/translated/company.js:546
+#: templates/js/translated/company.js:834 templates/js/translated/order.js:341
+#: templates/js/translated/order.js:486 templates/js/translated/order.js:710
+#: templates/js/translated/part.js:525 templates/js/translated/part.js:713
+#: templates/js/translated/part.js:902 templates/js/translated/part.js:1142
+#: templates/js/translated/part.js:1210 templates/js/translated/stock.js:840
+#: templates/js/translated/stock.js:1495 templates/js/translated/stock.js:1540
msgid "Description"
msgstr ""
-#: InvenTree/models.py:137
+#: InvenTree/models.py:208
msgid "Description (optional)"
msgstr ""
-#: InvenTree/models.py:145
+#: InvenTree/models.py:216
msgid "parent"
msgstr ""
-#: InvenTree/serializers.py:52 part/models.py:2438
+#: InvenTree/serializers.py:55 part/models.py:2454
msgid "Must be a valid number"
msgstr ""
-#: InvenTree/settings.py:518
-msgid "German"
-msgstr ""
-
-#: InvenTree/settings.py:519
-msgid "Greek"
-msgstr ""
-
-#: InvenTree/settings.py:520
-msgid "English"
-msgstr ""
-
-#: InvenTree/settings.py:521
-msgid "Spanish"
-msgstr ""
-
-#: InvenTree/settings.py:522
-msgid "French"
+#: InvenTree/serializers.py:244
+msgid "Filename"
msgstr ""
#: InvenTree/settings.py:523
-msgid "Hebrew"
+msgid "German"
msgstr ""
#: InvenTree/settings.py:524
-msgid "Italian"
+msgid "Greek"
msgstr ""
#: InvenTree/settings.py:525
-msgid "Japanese"
+msgid "English"
msgstr ""
#: InvenTree/settings.py:526
-msgid "Korean"
+msgid "Spanish"
msgstr ""
#: InvenTree/settings.py:527
-msgid "Dutch"
+msgid "French"
msgstr ""
#: InvenTree/settings.py:528
-msgid "Norwegian"
+msgid "Hebrew"
msgstr ""
#: InvenTree/settings.py:529
-msgid "Polish"
+msgid "Italian"
msgstr ""
#: InvenTree/settings.py:530
-msgid "Russian"
+msgid "Japanese"
msgstr ""
#: InvenTree/settings.py:531
-msgid "Swedish"
+msgid "Korean"
msgstr ""
#: InvenTree/settings.py:532
-msgid "Thai"
+msgid "Dutch"
msgstr ""
#: InvenTree/settings.py:533
-msgid "Turkish"
+msgid "Norwegian"
msgstr ""
#: InvenTree/settings.py:534
-msgid "Vietnamese"
+msgid "Polish"
msgstr ""
#: InvenTree/settings.py:535
+msgid "Russian"
+msgstr ""
+
+#: InvenTree/settings.py:536
+msgid "Swedish"
+msgstr ""
+
+#: InvenTree/settings.py:537
+msgid "Thai"
+msgstr ""
+
+#: InvenTree/settings.py:538
+msgid "Turkish"
+msgstr ""
+
+#: InvenTree/settings.py:539
+msgid "Vietnamese"
+msgstr ""
+
+#: InvenTree/settings.py:540
msgid "Chinese"
msgstr ""
@@ -372,7 +401,7 @@ msgstr ""
msgid "Split child item"
msgstr ""
-#: InvenTree/status_codes.py:294 templates/js/translated/table_filters.js:173
+#: InvenTree/status_codes.py:294 templates/js/translated/table_filters.js:186
msgid "Sent to customer"
msgstr ""
@@ -432,27 +461,27 @@ msgstr ""
msgid "Overage must be an integer value or a percentage"
msgstr ""
-#: InvenTree/views.py:612
+#: InvenTree/views.py:610
msgid "Delete Item"
msgstr ""
-#: InvenTree/views.py:661
+#: InvenTree/views.py:659
msgid "Check box to confirm item deletion"
msgstr ""
-#: InvenTree/views.py:676 templates/InvenTree/settings/user.html:14
+#: InvenTree/views.py:674 templates/InvenTree/settings/user.html:14
msgid "Edit User Information"
msgstr ""
-#: InvenTree/views.py:687 templates/InvenTree/settings/user.html:18
+#: InvenTree/views.py:685 templates/InvenTree/settings/user.html:18
msgid "Set Password"
msgstr ""
-#: InvenTree/views.py:706
+#: InvenTree/views.py:704
msgid "Password fields must match"
msgstr ""
-#: InvenTree/views.py:907 templates/navbar.html:95
+#: InvenTree/views.py:910 templates/navbar.html:105
msgid "System Information"
msgstr ""
@@ -509,8 +538,8 @@ msgstr ""
#: order/templates/order/order_base.html:124
#: order/templates/order/sales_order_base.html:119
#: report/templates/report/inventree_build_order_base.html:126
-#: templates/js/translated/build.js:945 templates/js/translated/order.js:284
-#: templates/js/translated/order.js:387
+#: templates/js/translated/build.js:962 templates/js/translated/order.js:358
+#: templates/js/translated/order.js:728
msgid "Target Date"
msgstr ""
@@ -522,19 +551,18 @@ msgstr ""
#: build/templates/build/allocation_card.html:23
#: build/templates/build/auto_allocate.html:17
#: build/templates/build/build_base.html:133
-#: build/templates/build/detail.html:34 common/models.py:1001
+#: build/templates/build/detail.html:34 common/models.py:1025
#: company/forms.py:42 company/templates/company/supplier_part.html:226
-#: order/forms.py:120 order/forms.py:142 order/forms.py:159 order/models.py:706
-#: order/models.py:952 order/templates/order/order_wizard/match_parts.html:30
+#: order/forms.py:120 order/forms.py:142 order/forms.py:159 order/models.py:712
+#: order/models.py:964 order/templates/order/order_wizard/match_parts.html:30
#: order/templates/order/order_wizard/select_parts.html:34
-#: order/templates/order/purchase_order_detail.html:348
-#: order/templates/order/sales_order_detail.html:200
-#: order/templates/order/sales_order_detail.html:207
-#: order/templates/order/sales_order_detail.html:292
-#: order/templates/order/sales_order_detail.html:364 part/forms.py:249
-#: part/forms.py:265 part/forms.py:281 part/models.py:2340
+#: order/templates/order/sales_order_detail.html:201
+#: order/templates/order/sales_order_detail.html:208
+#: order/templates/order/sales_order_detail.html:293
+#: order/templates/order/sales_order_detail.html:365 part/forms.py:249
+#: part/forms.py:265 part/forms.py:281 part/models.py:2356
#: part/templates/part/bom_upload/match_parts.html:31
-#: part/templates/part/detail.html:940 part/templates/part/detail.html:1026
+#: part/templates/part/detail.html:973 part/templates/part/detail.html:1059
#: part/templates/part/part_pricing.html:16
#: report/templates/report/inventree_build_order_base.html:114
#: report/templates/report/inventree_po_report.html:91
@@ -542,13 +570,14 @@ msgstr ""
#: report/templates/report/inventree_test_report_base.html:77
#: stock/forms.py:140 stock/templates/stock/item_base.html:269
#: stock/templates/stock/stock_adjust.html:18
-#: templates/js/translated/barcode.js:364 templates/js/translated/bom.js:225
-#: templates/js/translated/build.js:271 templates/js/translated/build.js:606
-#: templates/js/translated/build.js:1172
-#: templates/js/translated/model_renderers.js:56
-#: templates/js/translated/order.js:482 templates/js/translated/part.js:1148
-#: templates/js/translated/part.js:1270 templates/js/translated/part.js:1326
-#: templates/js/translated/stock.js:1534 templates/js/translated/stock.js:1732
+#: templates/js/translated/barcode.js:386 templates/js/translated/bom.js:245
+#: templates/js/translated/build.js:298 templates/js/translated/build.js:629
+#: templates/js/translated/build.js:1189
+#: templates/js/translated/model_renderers.js:59
+#: templates/js/translated/order.js:522 templates/js/translated/order.js:824
+#: templates/js/translated/part.js:1317 templates/js/translated/part.js:1440
+#: templates/js/translated/part.js:1518 templates/js/translated/stock.js:1675
+#: templates/js/translated/stock.js:1850
msgid "Quantity"
msgstr ""
@@ -589,13 +618,15 @@ msgid "Mark build as complete"
msgstr ""
#: build/forms.py:210 build/templates/build/auto_allocate.html:18
-#: stock/forms.py:280 stock/templates/stock/item_base.html:299
+#: order/serializers.py:216 order/serializers.py:275 stock/forms.py:280
+#: stock/templates/stock/item_base.html:299
#: stock/templates/stock/stock_adjust.html:17
-#: templates/InvenTree/search.html:260 templates/js/translated/barcode.js:363
-#: templates/js/translated/barcode.js:531 templates/js/translated/build.js:256
-#: templates/js/translated/build.js:620 templates/js/translated/order.js:467
-#: templates/js/translated/stock.js:134 templates/js/translated/stock.js:260
-#: templates/js/translated/stock.js:1012 templates/js/translated/stock.js:1426
+#: templates/InvenTree/search.html:260 templates/js/translated/barcode.js:385
+#: templates/js/translated/barcode.js:555 templates/js/translated/build.js:283
+#: templates/js/translated/build.js:643 templates/js/translated/order.js:809
+#: templates/js/translated/part.js:174 templates/js/translated/stock.js:203
+#: templates/js/translated/stock.js:329 templates/js/translated/stock.js:942
+#: templates/js/translated/stock.js:1567
msgid "Location"
msgstr ""
@@ -604,13 +635,13 @@ msgid "Location of completed parts"
msgstr ""
#: build/forms.py:215 build/templates/build/build_base.html:138
-#: build/templates/build/detail.html:62 order/models.py:549
-#: order/templates/order/receive_parts.html:24
+#: build/templates/build/detail.html:62 order/models.py:555
+#: order/serializers.py:230 order/templates/order/receive_parts.html:24
#: stock/templates/stock/item_base.html:422 templates/InvenTree/search.html:252
-#: templates/js/translated/barcode.js:119 templates/js/translated/build.js:902
-#: templates/js/translated/order.js:271 templates/js/translated/order.js:374
-#: templates/js/translated/stock.js:999 templates/js/translated/stock.js:1503
-#: templates/js/translated/stock.js:1748
+#: templates/js/translated/barcode.js:141 templates/js/translated/build.js:925
+#: templates/js/translated/order.js:345 templates/js/translated/order.js:715
+#: templates/js/translated/stock.js:917 templates/js/translated/stock.js:1644
+#: templates/js/translated/stock.js:1866
msgid "Status"
msgstr ""
@@ -649,7 +680,7 @@ msgstr ""
#: build/models.py:117 build/templates/build/build_base.html:9
#: build/templates/build/build_base.html:73
#: report/templates/report/inventree_build_order_base.html:106
-#: templates/js/translated/build.js:233
+#: templates/js/translated/build.js:260
msgid "Build Order"
msgstr ""
@@ -657,8 +688,8 @@ msgstr ""
#: build/templates/build/index.html:15
#: order/templates/order/sales_order_detail.html:34
#: order/templates/order/so_navbar.html:19
-#: order/templates/order/so_navbar.html:22 part/templates/part/navbar.html:42
-#: part/templates/part/navbar.html:45 templates/InvenTree/index.html:229
+#: order/templates/order/so_navbar.html:22 part/templates/part/navbar.html:50
+#: part/templates/part/navbar.html:53 templates/InvenTree/index.html:229
#: templates/InvenTree/search.html:185
#: templates/InvenTree/settings/navbar.html:101
#: templates/InvenTree/settings/navbar.html:103 users/models.py:44
@@ -669,14 +700,13 @@ msgstr ""
msgid "Build Order Reference"
msgstr ""
-#: build/models.py:179 order/models.py:246 order/models.py:533
-#: order/models.py:713 order/templates/order/purchase_order_detail.html:343
-#: order/templates/order/sales_order_detail.html:359 part/models.py:2349
-#: part/templates/part/bom_upload/match_parts.html:30
+#: build/models.py:179 order/models.py:246 order/models.py:539
+#: order/models.py:719 order/templates/order/sales_order_detail.html:360
+#: part/models.py:2365 part/templates/part/bom_upload/match_parts.html:30
#: report/templates/report/inventree_po_report.html:92
#: report/templates/report/inventree_so_report.html:92
-#: templates/js/translated/bom.js:217 templates/js/translated/build.js:695
-#: templates/js/translated/build.js:1166
+#: templates/js/translated/bom.js:237 templates/js/translated/build.js:718
+#: templates/js/translated/build.js:1183 templates/js/translated/order.js:517
msgid "Reference"
msgstr ""
@@ -695,15 +725,14 @@ msgstr ""
#: build/models.py:205 build/templates/build/auto_allocate.html:16
#: build/templates/build/build_base.html:128
-#: build/templates/build/detail.html:29 company/models.py:654
-#: order/models.py:766 order/models.py:825
+#: build/templates/build/detail.html:29 company/models.py:704
+#: order/models.py:772 order/models.py:837
#: order/templates/order/order_wizard/select_parts.html:32
-#: order/templates/order/purchase_order_detail.html:297
#: order/templates/order/receive_parts.html:19
-#: order/templates/order/sales_order_detail.html:344 part/models.py:295
-#: part/models.py:1980 part/models.py:1996 part/models.py:2015
-#: part/models.py:2033 part/models.py:2112 part/models.py:2234
-#: part/models.py:2324 part/templates/part/detail.html:199
+#: order/templates/order/sales_order_detail.html:345 part/models.py:297
+#: part/models.py:1996 part/models.py:2012 part/models.py:2031
+#: part/models.py:2049 part/models.py:2128 part/models.py:2250
+#: part/models.py:2340 part/templates/part/detail.html:199
#: part/templates/part/part_app_base.html:8
#: part/templates/part/part_pricing.html:12
#: part/templates/part/set_category.html:13
@@ -711,12 +740,13 @@ msgstr ""
#: report/templates/report/inventree_po_report.html:90
#: report/templates/report/inventree_so_report.html:90
#: templates/InvenTree/search.html:112 templates/InvenTree/search.html:210
-#: templates/js/translated/barcode.js:362 templates/js/translated/bom.js:183
-#: templates/js/translated/build.js:586 templates/js/translated/build.js:873
-#: templates/js/translated/build.js:1139 templates/js/translated/company.js:438
-#: templates/js/translated/company.js:688 templates/js/translated/part.js:562
-#: templates/js/translated/part.js:725 templates/js/translated/stock.js:132
-#: templates/js/translated/stock.js:895 templates/js/translated/stock.js:1720
+#: templates/js/translated/barcode.js:384 templates/js/translated/bom.js:203
+#: templates/js/translated/build.js:609 templates/js/translated/build.js:896
+#: templates/js/translated/build.js:1156 templates/js/translated/company.js:487
+#: templates/js/translated/company.js:743 templates/js/translated/order.js:471
+#: templates/js/translated/part.js:694 templates/js/translated/part.js:864
+#: templates/js/translated/stock.js:201 templates/js/translated/stock.js:797
+#: templates/js/translated/stock.js:1838
msgid "Part"
msgstr ""
@@ -764,7 +794,7 @@ msgstr ""
msgid "Number of stock items which have been completed"
msgstr ""
-#: build/models.py:257 part/templates/part/part_base.html:191
+#: build/models.py:257 part/templates/part/part_base.html:198
msgid "Build Status"
msgstr ""
@@ -772,7 +802,7 @@ msgstr ""
msgid "Build status code"
msgstr ""
-#: build/models.py:265 stock/models.py:507
+#: build/models.py:265 stock/models.py:513
msgid "Batch Code"
msgstr ""
@@ -780,16 +810,16 @@ msgstr ""
msgid "Batch code for this build output"
msgstr ""
-#: build/models.py:272 order/models.py:162 part/models.py:851
-#: part/templates/part/part_base.html:264 templates/js/translated/order.js:382
+#: build/models.py:272 order/models.py:162 part/models.py:853
+#: part/templates/part/part_base.html:272 templates/js/translated/order.js:723
msgid "Creation Date"
msgstr ""
-#: build/models.py:276 order/models.py:555
+#: build/models.py:276 order/models.py:561
msgid "Target completion date"
msgstr ""
-#: build/models.py:280 order/models.py:288 templates/js/translated/build.js:950
+#: build/models.py:280 order/models.py:288 templates/js/translated/build.js:967
msgid "Completion Date"
msgstr ""
@@ -797,7 +827,7 @@ msgstr ""
msgid "completed by"
msgstr ""
-#: build/models.py:294 templates/js/translated/build.js:915
+#: build/models.py:294 templates/js/translated/build.js:938
msgid "Issued by"
msgstr ""
@@ -808,9 +838,9 @@ msgstr ""
#: build/models.py:303 build/templates/build/build_base.html:184
#: build/templates/build/detail.html:108 order/models.py:176
#: order/templates/order/order_base.html:138
-#: order/templates/order/sales_order_base.html:140 part/models.py:855
+#: order/templates/order/sales_order_base.html:140 part/models.py:857
#: report/templates/report/inventree_build_order_base.html:159
-#: templates/js/translated/build.js:930
+#: templates/js/translated/build.js:950
msgid "Responsible"
msgstr ""
@@ -821,34 +851,33 @@ msgstr ""
#: build/models.py:309 build/templates/build/detail.html:94
#: company/templates/company/manufacturer_part.html:83
#: company/templates/company/supplier_part.html:82
-#: part/templates/part/part_base.html:258 stock/models.py:501
+#: part/templates/part/part_base.html:266 stock/models.py:507
#: stock/templates/stock/item_base.html:359
msgid "External Link"
msgstr ""
-#: build/models.py:310 part/models.py:713 stock/models.py:503
+#: build/models.py:310 part/models.py:715 stock/models.py:509
msgid "Link to external URL"
msgstr ""
#: build/models.py:314 build/templates/build/navbar.html:52
-#: company/models.py:139 company/models.py:526
-#: company/templates/company/navbar.html:63
-#: company/templates/company/navbar.html:66 order/models.py:180
-#: order/models.py:715 order/templates/order/po_navbar.html:38
+#: company/models.py:141 company/models.py:576
+#: company/templates/company/navbar.html:69
+#: company/templates/company/navbar.html:72 order/models.py:180
+#: order/models.py:721 order/templates/order/po_navbar.html:38
#: order/templates/order/po_navbar.html:41
-#: order/templates/order/purchase_order_detail.html:419
-#: order/templates/order/sales_order_detail.html:439
+#: order/templates/order/sales_order_detail.html:440
#: order/templates/order/so_navbar.html:33
-#: order/templates/order/so_navbar.html:36 part/models.py:840
-#: part/templates/part/detail.html:105 part/templates/part/navbar.html:108
-#: part/templates/part/navbar.html:111
+#: order/templates/order/so_navbar.html:36 part/models.py:842
+#: part/templates/part/detail.html:105 part/templates/part/navbar.html:120
+#: part/templates/part/navbar.html:123
#: report/templates/report/inventree_build_order_base.html:173
-#: stock/forms.py:138 stock/forms.py:250 stock/forms.py:282 stock/models.py:573
-#: stock/models.py:1715 stock/models.py:1821
-#: stock/templates/stock/navbar.html:57 templates/js/translated/barcode.js:37
-#: templates/js/translated/bom.js:369 templates/js/translated/company.js:784
-#: templates/js/translated/stock.js:268 templates/js/translated/stock.js:509
-#: templates/js/translated/stock.js:1090
+#: stock/forms.py:138 stock/forms.py:250 stock/forms.py:282 stock/models.py:579
+#: stock/models.py:1726 stock/models.py:1832
+#: stock/templates/stock/navbar.html:57 templates/js/translated/barcode.js:59
+#: templates/js/translated/bom.js:385 templates/js/translated/company.js:839
+#: templates/js/translated/order.js:604 templates/js/translated/stock.js:338
+#: templates/js/translated/stock.js:580 templates/js/translated/stock.js:1061
msgid "Notes"
msgstr ""
@@ -881,11 +910,11 @@ msgstr ""
msgid "Allocated quantity ({n}) must not exceed available quantity ({q})"
msgstr ""
-#: build/models.py:1244 order/models.py:926
+#: build/models.py:1244 order/models.py:938
msgid "StockItem is over-allocated"
msgstr ""
-#: build/models.py:1248 order/models.py:929
+#: build/models.py:1248 order/models.py:941
msgid "Allocation quantity must be greater than zero"
msgstr ""
@@ -899,8 +928,8 @@ msgid "Selected stock item not found in BOM for part '{p}'"
msgstr ""
#: build/models.py:1372 stock/templates/stock/item_base.html:331
-#: templates/InvenTree/search.html:183 templates/js/translated/build.js:846
-#: templates/navbar.html:29
+#: templates/InvenTree/search.html:183 templates/js/translated/build.js:869
+#: templates/navbar.html:35
msgid "Build"
msgstr ""
@@ -912,9 +941,9 @@ msgstr ""
#: stock/templates/stock/item_base.html:31
#: stock/templates/stock/item_base.html:353
#: stock/templates/stock/stock_adjust.html:16
-#: templates/js/translated/build.js:244 templates/js/translated/build.js:249
-#: templates/js/translated/build.js:993 templates/js/translated/order.js:455
-#: templates/js/translated/order.js:460 templates/js/translated/stock.js:1485
+#: templates/js/translated/build.js:271 templates/js/translated/build.js:276
+#: templates/js/translated/build.js:1012 templates/js/translated/order.js:797
+#: templates/js/translated/order.js:802 templates/js/translated/stock.js:1626
msgid "Stock Item"
msgstr ""
@@ -936,12 +965,12 @@ msgstr ""
#: build/templates/build/allocation_card.html:21
#: build/templates/build/complete_output.html:46
-#: order/templates/order/sales_order_detail.html:205
-#: order/templates/order/sales_order_detail.html:290
+#: order/templates/order/sales_order_detail.html:206
+#: order/templates/order/sales_order_detail.html:291
#: report/templates/report/inventree_test_report_base.html:75
-#: stock/models.py:495 stock/templates/stock/item_base.html:251
-#: templates/js/translated/build.js:604
-#: templates/js/translated/model_renderers.js:54
+#: stock/models.py:501 stock/templates/stock/item_base.html:251
+#: templates/js/translated/build.js:627
+#: templates/js/translated/model_renderers.js:57
msgid "Serial Number"
msgstr ""
@@ -993,7 +1022,7 @@ msgstr ""
#: company/templates/company/supplier_part.html:30
#: order/templates/order/order_base.html:26
#: order/templates/order/sales_order_base.html:37
-#: part/templates/part/category.html:27 part/templates/part/part_base.html:25
+#: part/templates/part/category.html:27 part/templates/part/part_base.html:30
#: stock/templates/stock/item_base.html:62
#: stock/templates/stock/location.html:31
msgid "Admin view"
@@ -1005,9 +1034,9 @@ msgstr ""
#: order/templates/order/order_base.html:86
#: order/templates/order/sales_order_base.html:43
#: order/templates/order/sales_order_base.html:88
-#: templates/js/translated/table_filters.js:259
-#: templates/js/translated/table_filters.js:278
-#: templates/js/translated/table_filters.js:295
+#: templates/js/translated/table_filters.js:272
+#: templates/js/translated/table_filters.js:291
+#: templates/js/translated/table_filters.js:308
msgid "Overdue"
msgstr ""
@@ -1057,14 +1086,14 @@ msgid "Progress"
msgstr ""
#: build/templates/build/build_base.html:170
-#: build/templates/build/detail.html:87 order/models.py:823
+#: build/templates/build/detail.html:87 order/models.py:835
#: order/templates/order/sales_order_base.html:9
#: order/templates/order/sales_order_base.html:35
#: order/templates/order/sales_order_ship.html:25
#: report/templates/report/inventree_build_order_base.html:136
#: report/templates/report/inventree_so_report.html:77
#: stock/templates/stock/item_base.html:293
-#: templates/js/translated/order.js:329
+#: templates/js/translated/order.js:670
msgid "Sales Order"
msgstr ""
@@ -1148,7 +1177,7 @@ msgstr ""
#: build/templates/build/create_build_item.html:11
#, python-format
-msgid "The allocated stock will be installed into the following build output:
%(output)s"
+msgid "The allocated stock will be installed into the following build output:
%(output)s"
msgstr ""
#: build/templates/build/create_build_item.html:17
@@ -1172,9 +1201,9 @@ msgstr ""
msgid "Stock can be taken from any available location."
msgstr ""
-#: build/templates/build/detail.html:49 order/forms.py:88 order/models.py:782
-#: order/templates/order/purchase_order_detail.html:408
+#: build/templates/build/detail.html:49 order/forms.py:88 order/models.py:794
#: order/templates/order/receive_parts.html:25 stock/forms.py:134
+#: templates/js/translated/order.js:593
msgid "Destination"
msgstr ""
@@ -1184,16 +1213,16 @@ msgstr ""
#: build/templates/build/detail.html:73
#: stock/templates/stock/item_base.html:317
-#: templates/js/translated/stock.js:1007 templates/js/translated/stock.js:1755
-#: templates/js/translated/table_filters.js:116
-#: templates/js/translated/table_filters.js:198
+#: templates/js/translated/stock.js:931 templates/js/translated/stock.js:1873
+#: templates/js/translated/table_filters.js:129
+#: templates/js/translated/table_filters.js:211
msgid "Batch"
msgstr ""
#: build/templates/build/detail.html:119
#: order/templates/order/order_base.html:111
#: order/templates/order/sales_order_base.html:113
-#: templates/js/translated/build.js:910
+#: templates/js/translated/build.js:933
msgid "Created"
msgstr ""
@@ -1201,7 +1230,7 @@ msgstr ""
msgid "No target date set"
msgstr ""
-#: build/templates/build/detail.html:135 templates/js/translated/build.js:888
+#: build/templates/build/detail.html:135 templates/js/translated/build.js:911
msgid "Completed"
msgstr ""
@@ -1225,7 +1254,7 @@ msgstr ""
msgid "Auto Allocate"
msgstr ""
-#: build/templates/build/detail.html:175 templates/js/translated/build.js:778
+#: build/templates/build/detail.html:175 templates/js/translated/build.js:801
msgid "Unallocate stock"
msgstr ""
@@ -1238,8 +1267,8 @@ msgid "Order required parts"
msgstr ""
#: build/templates/build/detail.html:180
-#: company/templates/company/detail.html:33
-#: company/templates/company/detail.html:75 order/views.py:679
+#: company/templates/company/detail.html:32
+#: company/templates/company/detail.html:72 order/views.py:679
#: part/templates/part/category.html:140
msgid "Order Parts"
msgstr ""
@@ -1288,8 +1317,8 @@ msgstr ""
#: build/templates/build/navbar.html:45 order/templates/order/po_navbar.html:35
#: order/templates/order/sales_order_detail.html:43
#: order/templates/order/so_navbar.html:29 part/templates/part/detail.html:173
-#: part/templates/part/navbar.html:102 part/templates/part/navbar.html:105
-#: stock/templates/stock/item.html:87 stock/templates/stock/navbar.html:47
+#: part/templates/part/navbar.html:114 part/templates/part/navbar.html:117
+#: stock/templates/stock/item.html:88 stock/templates/stock/navbar.html:47
#: stock/templates/stock/navbar.html:50
msgid "Attachments"
msgstr ""
@@ -1298,48 +1327,48 @@ msgstr ""
msgid "Build Notes"
msgstr ""
-#: build/templates/build/detail.html:261 build/templates/build/detail.html:397
-#: company/templates/company/detail.html:173
-#: company/templates/company/detail.html:200
+#: build/templates/build/detail.html:261 build/templates/build/detail.html:398
+#: company/templates/company/detail.html:169
+#: company/templates/company/detail.html:196
#: order/templates/order/purchase_order_detail.html:62
#: order/templates/order/purchase_order_detail.html:95
#: order/templates/order/sales_order_detail.html:58
#: order/templates/order/sales_order_detail.html:85
-#: part/templates/part/detail.html:109 stock/templates/stock/item.html:102
-#: stock/templates/stock/item.html:187
+#: part/templates/part/detail.html:109 stock/templates/stock/item.html:103
+#: stock/templates/stock/item.html:188
msgid "Edit Notes"
msgstr ""
#: build/templates/build/detail.html:357
#: order/templates/order/po_attachments.html:79
-#: order/templates/order/purchase_order_detail.html:156
-#: order/templates/order/sales_order_detail.html:145
-#: part/templates/part/detail.html:802 stock/templates/stock/item.html:251
+#: order/templates/order/purchase_order_detail.html:157
+#: order/templates/order/sales_order_detail.html:146
+#: part/templates/part/detail.html:920 stock/templates/stock/item.html:253
#: templates/attachment_table.html:6
msgid "Add Attachment"
msgstr ""
-#: build/templates/build/detail.html:375
+#: build/templates/build/detail.html:376
#: order/templates/order/po_attachments.html:51
-#: order/templates/order/purchase_order_detail.html:128
-#: order/templates/order/sales_order_detail.html:118
-#: part/templates/part/detail.html:756 stock/templates/stock/item.html:219
+#: order/templates/order/purchase_order_detail.html:129
+#: order/templates/order/sales_order_detail.html:119
+#: part/templates/part/detail.html:874 stock/templates/stock/item.html:221
msgid "Edit Attachment"
msgstr ""
-#: build/templates/build/detail.html:382
+#: build/templates/build/detail.html:383
#: order/templates/order/po_attachments.html:58
-#: order/templates/order/purchase_order_detail.html:135
-#: order/templates/order/sales_order_detail.html:124
-#: part/templates/part/detail.html:765 stock/templates/stock/item.html:228
+#: order/templates/order/purchase_order_detail.html:136
+#: order/templates/order/sales_order_detail.html:125
+#: part/templates/part/detail.html:883 stock/templates/stock/item.html:230
msgid "Confirm Delete Operation"
msgstr ""
-#: build/templates/build/detail.html:383
+#: build/templates/build/detail.html:384
#: order/templates/order/po_attachments.html:59
-#: order/templates/order/purchase_order_detail.html:136
-#: order/templates/order/sales_order_detail.html:125
-#: part/templates/part/detail.html:766 stock/templates/stock/item.html:229
+#: order/templates/order/purchase_order_detail.html:137
+#: order/templates/order/sales_order_detail.html:126
+#: part/templates/part/detail.html:884 stock/templates/stock/item.html:231
msgid "Delete Attachment"
msgstr ""
@@ -1372,7 +1401,7 @@ msgid "Build Order Details"
msgstr ""
#: build/templates/build/navbar.html:15 order/templates/order/po_navbar.html:15
-#: templates/js/translated/stock.js:1414
+#: templates/js/translated/stock.js:1555
msgid "Details"
msgstr ""
@@ -1501,9 +1530,9 @@ msgstr ""
msgid "Stock item is over-allocated"
msgstr ""
-#: build/views.py:705 templates/js/translated/bom.js:250
-#: templates/js/translated/build.js:705 templates/js/translated/build.js:1000
-#: templates/js/translated/build.js:1179
+#: build/views.py:705 templates/js/translated/bom.js:269
+#: templates/js/translated/build.js:728 templates/js/translated/build.js:1019
+#: templates/js/translated/build.js:1196
msgid "Available"
msgstr ""
@@ -1539,7 +1568,7 @@ msgstr ""
msgid "Error reading file (data could be corrupted)"
msgstr ""
-#: common/forms.py:34 templates/js/translated/attachment.js:42
+#: common/forms.py:34 templates/js/translated/attachment.js:54
msgid "File"
msgstr ""
@@ -1556,546 +1585,594 @@ msgstr ""
msgid "Select {name} file to upload"
msgstr ""
-#: common/models.py:322 common/models.py:815 common/models.py:962
+#: common/models.py:308 common/models.py:839 common/models.py:986
msgid "Settings key (must be unique - case insensitive"
msgstr ""
-#: common/models.py:324
+#: common/models.py:310
msgid "Settings value"
msgstr ""
-#: common/models.py:359
+#: common/models.py:345
msgid "Must be an integer value"
msgstr ""
-#: common/models.py:382
+#: common/models.py:368
msgid "Value must be a boolean value"
msgstr ""
-#: common/models.py:393
+#: common/models.py:379
msgid "Value must be an integer value"
msgstr ""
-#: common/models.py:416
+#: common/models.py:402
msgid "Key string must be unique"
msgstr ""
-#: common/models.py:523
+#: common/models.py:509
msgid "InvenTree Instance Name"
msgstr ""
-#: common/models.py:525
+#: common/models.py:511
msgid "String descriptor for the server instance"
msgstr ""
-#: common/models.py:529
+#: common/models.py:515
msgid "Use instance name"
msgstr ""
-#: common/models.py:530
+#: common/models.py:516
msgid "Use the instance name in the title-bar"
msgstr ""
-#: common/models.py:536 company/models.py:97 company/models.py:98
+#: common/models.py:522 company/models.py:99 company/models.py:100
msgid "Company name"
msgstr ""
-#: common/models.py:537
+#: common/models.py:523
msgid "Internal company name"
msgstr ""
-#: common/models.py:542
+#: common/models.py:528
msgid "Base URL"
msgstr ""
-#: common/models.py:543
+#: common/models.py:529
msgid "Base URL for server instance"
msgstr ""
-#: common/models.py:549
+#: common/models.py:535
msgid "Default Currency"
msgstr ""
-#: common/models.py:550
+#: common/models.py:536
msgid "Default currency"
msgstr ""
-#: common/models.py:556
+#: common/models.py:542
msgid "Download from URL"
msgstr ""
-#: common/models.py:557
+#: common/models.py:543
msgid "Allow download of remote images and files from external URL"
msgstr ""
-#: common/models.py:563
+#: common/models.py:549
msgid "Barcode Support"
msgstr ""
-#: common/models.py:564
+#: common/models.py:550
msgid "Enable barcode scanner support"
msgstr ""
-#: common/models.py:570
+#: common/models.py:556
msgid "IPN Regex"
msgstr ""
-#: common/models.py:571
+#: common/models.py:557
msgid "Regular expression pattern for matching Part IPN"
msgstr ""
-#: common/models.py:575
+#: common/models.py:561
msgid "Allow Duplicate IPN"
msgstr ""
-#: common/models.py:576
+#: common/models.py:562
msgid "Allow multiple parts to share the same IPN"
msgstr ""
-#: common/models.py:582
+#: common/models.py:568
msgid "Allow Editing IPN"
msgstr ""
-#: common/models.py:583
+#: common/models.py:569
msgid "Allow changing the IPN value while editing a part"
msgstr ""
-#: common/models.py:589
+#: common/models.py:575
msgid "Copy Part BOM Data"
msgstr ""
-#: common/models.py:590
+#: common/models.py:576
msgid "Copy BOM data by default when duplicating a part"
msgstr ""
-#: common/models.py:596
+#: common/models.py:582
msgid "Copy Part Parameter Data"
msgstr ""
-#: common/models.py:597
+#: common/models.py:583
msgid "Copy parameter data by default when duplicating a part"
msgstr ""
-#: common/models.py:603
+#: common/models.py:589
msgid "Copy Part Test Data"
msgstr ""
-#: common/models.py:604
+#: common/models.py:590
msgid "Copy test data by default when duplicating a part"
msgstr ""
-#: common/models.py:610
+#: common/models.py:596
msgid "Copy Category Parameter Templates"
msgstr ""
-#: common/models.py:611
+#: common/models.py:597
msgid "Copy category parameter templates when creating a part"
msgstr ""
-#: common/models.py:617 part/models.py:2236 report/models.py:187
-#: stock/forms.py:224 templates/js/translated/table_filters.js:25
-#: templates/js/translated/table_filters.js:329
+#: common/models.py:603 part/models.py:2252 report/models.py:187
+#: stock/forms.py:224 templates/js/translated/table_filters.js:38
+#: templates/js/translated/table_filters.js:342
msgid "Template"
msgstr ""
-#: common/models.py:618
+#: common/models.py:604
msgid "Parts are templates by default"
msgstr ""
-#: common/models.py:624 part/models.py:803
-#: templates/js/translated/table_filters.js:133
-#: templates/js/translated/table_filters.js:341
+#: common/models.py:610 part/models.py:805
+#: templates/js/translated/table_filters.js:146
+#: templates/js/translated/table_filters.js:354
msgid "Assembly"
msgstr ""
-#: common/models.py:625
+#: common/models.py:611
msgid "Parts can be assembled from other components by default"
msgstr ""
-#: common/models.py:631 part/models.py:809
-#: templates/js/translated/table_filters.js:345
+#: common/models.py:617 part/models.py:811
+#: templates/js/translated/table_filters.js:358
msgid "Component"
msgstr ""
-#: common/models.py:632
+#: common/models.py:618
msgid "Parts can be used as sub-components by default"
msgstr ""
-#: common/models.py:638 part/models.py:820
+#: common/models.py:624 part/models.py:822
msgid "Purchaseable"
msgstr ""
-#: common/models.py:639
+#: common/models.py:625
msgid "Parts are purchaseable by default"
msgstr ""
-#: common/models.py:645 part/models.py:825
-#: templates/js/translated/table_filters.js:353
+#: common/models.py:631 part/models.py:827
+#: templates/js/translated/table_filters.js:366
msgid "Salable"
msgstr ""
-#: common/models.py:646
+#: common/models.py:632
msgid "Parts are salable by default"
msgstr ""
-#: common/models.py:652 part/models.py:815
-#: templates/js/translated/table_filters.js:33
-#: templates/js/translated/table_filters.js:357
+#: common/models.py:638 part/models.py:817
+#: templates/js/translated/table_filters.js:46
+#: templates/js/translated/table_filters.js:370
msgid "Trackable"
msgstr ""
-#: common/models.py:653
+#: common/models.py:639
msgid "Parts are trackable by default"
msgstr ""
-#: common/models.py:659 part/models.py:835
-#: part/templates/part/part_base.html:61
-#: templates/js/translated/table_filters.js:29
+#: common/models.py:645 part/models.py:837
+#: part/templates/part/part_base.html:66
+#: templates/js/translated/table_filters.js:42
msgid "Virtual"
msgstr ""
-#: common/models.py:660
+#: common/models.py:646
msgid "Parts are virtual by default"
msgstr ""
-#: common/models.py:667
+#: common/models.py:653
msgid "Show Quantity in Forms"
msgstr ""
-#: common/models.py:668
+#: common/models.py:654
msgid "Display available part quantity in some forms"
msgstr ""
-#: common/models.py:674
+#: common/models.py:660
msgid "Show Import in Views"
msgstr ""
-#: common/models.py:675
+#: common/models.py:661
msgid "Display the import wizard in some part views"
msgstr ""
-#: common/models.py:681
+#: common/models.py:667
msgid "Show Price in Forms"
msgstr ""
-#: common/models.py:682
+#: common/models.py:668
msgid "Display part price in some forms"
msgstr ""
-#: common/models.py:688
+#: common/models.py:674
msgid "Show related parts"
msgstr ""
-#: common/models.py:689
+#: common/models.py:675
msgid "Display related parts for a part"
msgstr ""
-#: common/models.py:695
+#: common/models.py:681
msgid "Create initial stock"
msgstr ""
-#: common/models.py:696
+#: common/models.py:682
msgid "Create initial stock on part creation"
msgstr ""
-#: common/models.py:702
+#: common/models.py:688
msgid "Internal Prices"
msgstr ""
-#: common/models.py:703
+#: common/models.py:689
msgid "Enable internal prices for parts"
msgstr ""
-#: common/models.py:709
+#: common/models.py:695
msgid "Internal Price as BOM-Price"
msgstr ""
-#: common/models.py:710
+#: common/models.py:696
msgid "Use the internal price (if set) in BOM-price calculations"
msgstr ""
-#: common/models.py:716 templates/stats.html:25
+#: common/models.py:702 templates/stats.html:25
msgid "Debug Mode"
msgstr ""
-#: common/models.py:717
+#: common/models.py:703
msgid "Generate reports in debug mode (HTML output)"
msgstr ""
-#: common/models.py:723
+#: common/models.py:709
msgid "Page Size"
msgstr ""
-#: common/models.py:724
+#: common/models.py:710
msgid "Default page size for PDF reports"
msgstr ""
-#: common/models.py:734
+#: common/models.py:720
msgid "Test Reports"
msgstr ""
-#: common/models.py:735
+#: common/models.py:721
msgid "Enable generation of test reports"
msgstr ""
-#: common/models.py:741
+#: common/models.py:727
msgid "Stock Expiry"
msgstr ""
-#: common/models.py:742
+#: common/models.py:728
msgid "Enable stock expiry functionality"
msgstr ""
-#: common/models.py:748
+#: common/models.py:734
msgid "Sell Expired Stock"
msgstr ""
-#: common/models.py:749
+#: common/models.py:735
msgid "Allow sale of expired stock"
msgstr ""
-#: common/models.py:755
+#: common/models.py:741
msgid "Stock Stale Time"
msgstr ""
-#: common/models.py:756
+#: common/models.py:742
msgid "Number of days stock items are considered stale before expiring"
msgstr ""
-#: common/models.py:758
+#: common/models.py:744
msgid "days"
msgstr ""
-#: common/models.py:763
+#: common/models.py:749
msgid "Build Expired Stock"
msgstr ""
-#: common/models.py:764
+#: common/models.py:750
msgid "Allow building with expired stock"
msgstr ""
-#: common/models.py:770
+#: common/models.py:756
msgid "Stock Ownership Control"
msgstr ""
-#: common/models.py:771
+#: common/models.py:757
msgid "Enable ownership control over stock locations and items"
msgstr ""
-#: common/models.py:777
+#: common/models.py:763
msgid "Group by Part"
msgstr ""
-#: common/models.py:778
+#: common/models.py:764
msgid "Group stock items by part reference in table views"
msgstr ""
-#: common/models.py:784
+#: common/models.py:770
msgid "Build Order Reference Prefix"
msgstr ""
-#: common/models.py:785
+#: common/models.py:771
msgid "Prefix value for build order reference"
msgstr ""
-#: common/models.py:790
+#: common/models.py:776
msgid "Build Order Reference Regex"
msgstr ""
-#: common/models.py:791
+#: common/models.py:777
msgid "Regular expression pattern for matching build order reference"
msgstr ""
-#: common/models.py:795
+#: common/models.py:781
msgid "Sales Order Reference Prefix"
msgstr ""
-#: common/models.py:796
+#: common/models.py:782
msgid "Prefix value for sales order reference"
msgstr ""
-#: common/models.py:801
+#: common/models.py:787
msgid "Purchase Order Reference Prefix"
msgstr ""
-#: common/models.py:802
+#: common/models.py:788
msgid "Prefix value for purchase order reference"
msgstr ""
-#: common/models.py:826
+#: common/models.py:794
+msgid "Enable build"
+msgstr ""
+
+#: common/models.py:795
+msgid "Enable build functionality in InvenTree interface"
+msgstr ""
+
+#: common/models.py:800
+msgid "Enable buy"
+msgstr ""
+
+#: common/models.py:801
+msgid "Enable buy functionality in InvenTree interface"
+msgstr ""
+
+#: common/models.py:806
+msgid "Enable sell"
+msgstr ""
+
+#: common/models.py:807
+msgid "Enable sell functionality in InvenTree interface"
+msgstr ""
+
+#: common/models.py:812
+msgid "Enable stock"
+msgstr ""
+
+#: common/models.py:813
+msgid "Enable stock functionality in InvenTree interface"
+msgstr ""
+
+#: common/models.py:818
+msgid "Enable SO"
+msgstr ""
+
+#: common/models.py:819
+msgid "Enable SO functionality in InvenTree interface"
+msgstr ""
+
+#: common/models.py:824
+msgid "Enable PO"
+msgstr ""
+
+#: common/models.py:825
+msgid "Enable PO functionality in InvenTree interface"
+msgstr ""
+
+#: common/models.py:850
msgid "Show starred parts"
msgstr ""
-#: common/models.py:827
+#: common/models.py:851
msgid "Show starred parts on the homepage"
msgstr ""
-#: common/models.py:832
+#: common/models.py:856
msgid "Show latest parts"
msgstr ""
-#: common/models.py:833
+#: common/models.py:857
msgid "Show latest parts on the homepage"
msgstr ""
-#: common/models.py:838
+#: common/models.py:862
msgid "Recent Part Count"
msgstr ""
-#: common/models.py:839
+#: common/models.py:863
msgid "Number of recent parts to display on index page"
msgstr ""
-#: common/models.py:845
+#: common/models.py:869
msgid "Show unvalidated BOMs"
msgstr ""
-#: common/models.py:846
+#: common/models.py:870
msgid "Show BOMs that await validation on the homepage"
msgstr ""
-#: common/models.py:851
+#: common/models.py:875
msgid "Show recent stock changes"
msgstr ""
-#: common/models.py:852
+#: common/models.py:876
msgid "Show recently changed stock items on the homepage"
msgstr ""
-#: common/models.py:857
+#: common/models.py:881
msgid "Recent Stock Count"
msgstr ""
-#: common/models.py:858
+#: common/models.py:882
msgid "Number of recent stock items to display on index page"
msgstr ""
-#: common/models.py:863
+#: common/models.py:887
msgid "Show low stock"
msgstr ""
-#: common/models.py:864
+#: common/models.py:888
msgid "Show low stock items on the homepage"
msgstr ""
-#: common/models.py:869
+#: common/models.py:893
msgid "Show depleted stock"
msgstr ""
-#: common/models.py:870
+#: common/models.py:894
msgid "Show depleted stock items on the homepage"
msgstr ""
-#: common/models.py:875
+#: common/models.py:899
msgid "Show needed stock"
msgstr ""
-#: common/models.py:876
+#: common/models.py:900
msgid "Show stock items needed for builds on the homepage"
msgstr ""
-#: common/models.py:881
+#: common/models.py:905
msgid "Show expired stock"
msgstr ""
-#: common/models.py:882
+#: common/models.py:906
msgid "Show expired stock items on the homepage"
msgstr ""
-#: common/models.py:887
+#: common/models.py:911
msgid "Show stale stock"
msgstr ""
-#: common/models.py:888
+#: common/models.py:912
msgid "Show stale stock items on the homepage"
msgstr ""
-#: common/models.py:893
+#: common/models.py:917
msgid "Show pending builds"
msgstr ""
-#: common/models.py:894
+#: common/models.py:918
msgid "Show pending builds on the homepage"
msgstr ""
-#: common/models.py:899
+#: common/models.py:923
msgid "Show overdue builds"
msgstr ""
-#: common/models.py:900
+#: common/models.py:924
msgid "Show overdue builds on the homepage"
msgstr ""
-#: common/models.py:905
+#: common/models.py:929
msgid "Show outstanding POs"
msgstr ""
-#: common/models.py:906
+#: common/models.py:930
msgid "Show outstanding POs on the homepage"
msgstr ""
-#: common/models.py:911
+#: common/models.py:935
msgid "Show overdue POs"
msgstr ""
-#: common/models.py:912
+#: common/models.py:936
msgid "Show overdue POs on the homepage"
msgstr ""
-#: common/models.py:917
+#: common/models.py:941
msgid "Show outstanding SOs"
msgstr ""
-#: common/models.py:918
+#: common/models.py:942
msgid "Show outstanding SOs on the homepage"
msgstr ""
-#: common/models.py:923
+#: common/models.py:947
msgid "Show overdue SOs"
msgstr ""
-#: common/models.py:924
+#: common/models.py:948
msgid "Show overdue SOs on the homepage"
msgstr ""
-#: common/models.py:930
+#: common/models.py:954
msgid "Inline label display"
msgstr ""
-#: common/models.py:931
+#: common/models.py:955
msgid "Display PDF labels in the browser, instead of downloading as a file"
msgstr ""
-#: common/models.py:937
+#: common/models.py:961
msgid "Inline report display"
msgstr ""
-#: common/models.py:938
+#: common/models.py:962
msgid "Display PDF reports in the browser, instead of downloading as a file"
msgstr ""
-#: common/models.py:944
+#: common/models.py:968
msgid "Search Preview Results"
msgstr ""
-#: common/models.py:945
+#: common/models.py:969
msgid "Number of results to show in search preview window"
msgstr ""
-#: common/models.py:1002 company/forms.py:43
+#: common/models.py:1026 company/forms.py:43
msgid "Price break quantity"
msgstr ""
-#: common/models.py:1009 company/templates/company/supplier_part.html:231
-#: templates/js/translated/part.js:1153
+#: common/models.py:1033 company/templates/company/supplier_part.html:231
+#: templates/js/translated/part.js:1322
msgid "Price"
msgstr ""
-#: common/models.py:1010
+#: common/models.py:1034
msgid "Unit price at specified quantity"
msgstr ""
-#: common/models.py:1103
+#: common/models.py:1127
msgid "Default"
msgstr ""
@@ -2123,7 +2200,7 @@ msgstr ""
#: order/templates/order/po_navbar.html:19
#: order/templates/order/po_navbar.html:22
#: order/templates/order/purchase_order_detail.html:26 order/views.py:290
-#: part/templates/part/bom_upload/upload_file.html:45
+#: part/templates/part/bom_upload/upload_file.html:65
#: part/templates/part/import_wizard/part_upload.html:45 part/views.py:268
#: part/views.py:882
msgid "Upload File"
@@ -2154,7 +2231,7 @@ msgstr ""
#: order/templates/order/order_wizard/po_upload.html:40
#: 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:43
+#: part/templates/part/bom_upload/upload_file.html:63
#: 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:43
@@ -2169,244 +2246,249 @@ msgstr ""
msgid "Image URL"
msgstr ""
-#: company/models.py:102
+#: company/models.py:104
msgid "Company description"
msgstr ""
-#: company/models.py:103
+#: company/models.py:105
msgid "Description of the company"
msgstr ""
-#: company/models.py:109 company/templates/company/company_base.html:70
-#: templates/js/translated/company.js:303
+#: company/models.py:111 company/templates/company/company_base.html:70
+#: templates/js/translated/company.js:348
msgid "Website"
msgstr ""
-#: company/models.py:110
+#: company/models.py:112
msgid "Company website URL"
msgstr ""
-#: company/models.py:114 company/templates/company/company_base.html:88
+#: company/models.py:116 company/templates/company/company_base.html:88
msgid "Address"
msgstr ""
-#: company/models.py:115
+#: company/models.py:117
msgid "Company address"
msgstr ""
-#: company/models.py:118
+#: company/models.py:120
msgid "Phone number"
msgstr ""
-#: company/models.py:119
+#: company/models.py:121
msgid "Contact phone number"
msgstr ""
-#: company/models.py:122 company/templates/company/company_base.html:102
+#: company/models.py:124 company/templates/company/company_base.html:102
msgid "Email"
msgstr ""
-#: company/models.py:122
+#: company/models.py:124
msgid "Contact email address"
msgstr ""
-#: company/models.py:125 company/templates/company/company_base.html:109
+#: company/models.py:127 company/templates/company/company_base.html:109
msgid "Contact"
msgstr ""
-#: company/models.py:126
+#: company/models.py:128
msgid "Point of contact"
msgstr ""
-#: company/models.py:128 company/models.py:345 company/models.py:513
-#: order/models.py:160 part/models.py:712
+#: company/models.py:130 company/models.py:347 company/models.py:563
+#: order/models.py:160 part/models.py:714
#: report/templates/report/inventree_build_order_base.html:165
-#: templates/js/translated/company.js:486
-#: templates/js/translated/company.js:768 templates/js/translated/part.js:819
+#: templates/js/translated/company.js:535
+#: templates/js/translated/company.js:823 templates/js/translated/part.js:972
msgid "Link"
msgstr ""
-#: company/models.py:128
+#: company/models.py:130
msgid "Link to external company information"
msgstr ""
-#: company/models.py:136 part/models.py:722
+#: company/models.py:138 part/models.py:724
msgid "Image"
msgstr ""
-#: company/models.py:141
+#: company/models.py:143
msgid "is customer"
msgstr ""
-#: company/models.py:141
+#: company/models.py:143
msgid "Do you sell items to this company?"
msgstr ""
-#: company/models.py:143
+#: company/models.py:145
msgid "is supplier"
msgstr ""
-#: company/models.py:143
+#: company/models.py:145
msgid "Do you purchase items from this company?"
msgstr ""
-#: company/models.py:145
+#: company/models.py:147
msgid "is manufacturer"
msgstr ""
-#: company/models.py:145
+#: company/models.py:147
msgid "Does this company manufacture parts?"
msgstr ""
-#: company/models.py:149 company/serializers.py:245
-#: company/templates/company/company_base.html:76
+#: company/models.py:151 company/serializers.py:264
+#: company/templates/company/company_base.html:76 stock/serializers.py:155
msgid "Currency"
msgstr ""
-#: company/models.py:152
+#: company/models.py:154
msgid "Default currency used for this company"
msgstr ""
-#: company/models.py:317 company/models.py:484 stock/models.py:448
+#: company/models.py:319 company/models.py:534 stock/models.py:454
#: stock/templates/stock/item_base.html:237
msgid "Base Part"
msgstr ""
-#: company/models.py:321 company/models.py:488 order/views.py:1082
+#: company/models.py:323 company/models.py:538 order/views.py:1082
msgid "Select part"
msgstr ""
-#: company/models.py:332 company/templates/company/company_base.html:116
+#: company/models.py:334 company/templates/company/company_base.html:116
#: company/templates/company/manufacturer_part.html:89
#: company/templates/company/supplier_part.html:98 part/bom.py:170
#: part/bom.py:241 stock/templates/stock/item_base.html:366
-#: templates/js/translated/company.js:287
-#: templates/js/translated/company.js:463
-#: templates/js/translated/company.js:739
+#: templates/js/translated/company.js:332
+#: templates/js/translated/company.js:512
+#: templates/js/translated/company.js:794 templates/js/translated/part.js:222
msgid "Manufacturer"
msgstr ""
-#: company/models.py:333
+#: company/models.py:335 templates/js/translated/part.js:223
msgid "Select manufacturer"
msgstr ""
-#: company/models.py:339 company/templates/company/manufacturer_part.html:93
-#: company/templates/company/supplier_part.html:106
-#: order/templates/order/purchase_order_detail.html:331 part/bom.py:171
-#: part/bom.py:242 templates/js/translated/company.js:479
-#: templates/js/translated/company.js:757
+#: company/models.py:341 company/templates/company/manufacturer_part.html:93
+#: company/templates/company/supplier_part.html:106 part/bom.py:171
+#: part/bom.py:242 templates/js/translated/company.js:528
+#: templates/js/translated/company.js:812 templates/js/translated/order.js:505
+#: templates/js/translated/part.js:233
msgid "MPN"
msgstr ""
-#: company/models.py:340
+#: company/models.py:342 templates/js/translated/part.js:234
msgid "Manufacturer Part Number"
msgstr ""
-#: company/models.py:346
+#: company/models.py:348
msgid "URL for external manufacturer part link"
msgstr ""
-#: company/models.py:352
+#: company/models.py:354
msgid "Manufacturer part description"
msgstr ""
-#: company/models.py:406 company/models.py:507
+#: company/models.py:408 company/models.py:557
#: company/templates/company/manufacturer_part.html:6
#: company/templates/company/manufacturer_part.html:23
#: stock/templates/stock/item_base.html:376
msgid "Manufacturer Part"
msgstr ""
-#: company/models.py:413
+#: company/models.py:415
msgid "Parameter name"
msgstr ""
-#: company/models.py:419
+#: company/models.py:421
#: report/templates/report/inventree_test_report_base.html:90
-#: stock/models.py:1808 templates/InvenTree/settings/header.html:8
-#: templates/js/translated/company.js:589 templates/js/translated/part.js:480
-#: templates/js/translated/stock.js:505
+#: stock/models.py:1819 templates/InvenTree/settings/header.html:8
+#: templates/js/translated/company.js:642 templates/js/translated/part.js:612
+#: templates/js/translated/stock.js:576
msgid "Value"
msgstr ""
-#: company/models.py:420
+#: company/models.py:422
msgid "Parameter value"
msgstr ""
-#: company/models.py:426 part/models.py:797 part/models.py:2204
-#: templates/js/translated/company.js:595 templates/js/translated/part.js:486
+#: company/models.py:428 part/models.py:799 part/models.py:2220
+#: templates/js/translated/company.js:648 templates/js/translated/part.js:618
msgid "Units"
msgstr ""
-#: company/models.py:427
+#: company/models.py:429
msgid "Parameter units"
msgstr ""
-#: company/models.py:494 company/templates/company/company_base.html:121
+#: company/models.py:501
+msgid "Linked manufacturer part must reference the same base part"
+msgstr ""
+
+#: company/models.py:544 company/templates/company/company_base.html:121
#: company/templates/company/supplier_part.html:88 order/models.py:260
#: order/templates/order/order_base.html:92
#: order/templates/order/order_wizard/select_pos.html:30 part/bom.py:175
#: part/bom.py:286 stock/templates/stock/item_base.html:383
-#: templates/js/translated/company.js:291
-#: templates/js/translated/company.js:713 templates/js/translated/order.js:254
+#: templates/js/translated/company.js:336
+#: templates/js/translated/company.js:768 templates/js/translated/order.js:328
+#: templates/js/translated/part.js:203
msgid "Supplier"
msgstr ""
-#: company/models.py:495
+#: company/models.py:545 templates/js/translated/part.js:204
msgid "Select supplier"
msgstr ""
-#: company/models.py:500 company/templates/company/supplier_part.html:92
-#: order/templates/order/purchase_order_detail.html:318 part/bom.py:176
-#: part/bom.py:287
+#: company/models.py:550 company/templates/company/supplier_part.html:92
+#: part/bom.py:176 part/bom.py:287 templates/js/translated/order.js:492
+#: templates/js/translated/part.js:214
msgid "SKU"
msgstr ""
-#: company/models.py:501
+#: company/models.py:551 templates/js/translated/part.js:215
msgid "Supplier stock keeping unit"
msgstr ""
-#: company/models.py:508
+#: company/models.py:558
msgid "Select manufacturer part"
msgstr ""
-#: company/models.py:514
+#: company/models.py:564
msgid "URL for external supplier part link"
msgstr ""
-#: company/models.py:520
+#: company/models.py:570
msgid "Supplier part description"
msgstr ""
-#: company/models.py:525 company/templates/company/supplier_part.html:120
-#: part/models.py:2352 report/templates/report/inventree_po_report.html:93
+#: company/models.py:575 company/templates/company/supplier_part.html:120
+#: part/models.py:2368 report/templates/report/inventree_po_report.html:93
#: report/templates/report/inventree_so_report.html:93
msgid "Note"
msgstr ""
-#: company/models.py:529 part/models.py:1590
+#: company/models.py:579 part/models.py:1599
msgid "base cost"
msgstr ""
-#: company/models.py:529 part/models.py:1590
+#: company/models.py:579 part/models.py:1599
msgid "Minimum charge (e.g. stocking fee)"
msgstr ""
-#: company/models.py:531 company/templates/company/supplier_part.html:113
-#: stock/models.py:472 stock/templates/stock/item_base.html:324
-#: templates/js/translated/company.js:789 templates/js/translated/stock.js:1086
+#: company/models.py:581 company/templates/company/supplier_part.html:113
+#: stock/models.py:478 stock/templates/stock/item_base.html:324
+#: templates/js/translated/company.js:844 templates/js/translated/stock.js:1057
msgid "Packaging"
msgstr ""
-#: company/models.py:531
+#: company/models.py:581
msgid "Part packaging"
msgstr ""
-#: company/models.py:533 part/models.py:1592
+#: company/models.py:583 part/models.py:1601
msgid "multiple"
msgstr ""
-#: company/models.py:533
+#: company/models.py:583
msgid "Order multiple"
msgstr ""
@@ -2420,7 +2502,7 @@ msgstr ""
#: company/templates/company/company_base.html:9
#: company/templates/company/company_base.html:35
-#: templates/InvenTree/search.html:304 templates/js/translated/company.js:276
+#: templates/InvenTree/search.html:304 templates/js/translated/company.js:321
msgid "Company"
msgstr ""
@@ -2435,7 +2517,7 @@ msgid "Download image from URL"
msgstr ""
#: company/templates/company/company_base.html:46
-#: templates/js/translated/order.js:83
+#: templates/js/translated/order.js:117
msgid "Create Purchase Order"
msgstr ""
@@ -2460,16 +2542,16 @@ msgstr ""
msgid "Phone"
msgstr ""
-#: company/templates/company/company_base.html:126 order/models.py:544
-#: order/templates/order/sales_order_base.html:94 stock/models.py:490
-#: stock/models.py:491 stock/templates/stock/item_base.html:276
-#: templates/js/translated/company.js:283 templates/js/translated/order.js:351
-#: templates/js/translated/stock.js:1467
+#: company/templates/company/company_base.html:126 order/models.py:550
+#: order/templates/order/sales_order_base.html:94 stock/models.py:496
+#: stock/models.py:497 stock/templates/stock/item_base.html:276
+#: templates/js/translated/company.js:328 templates/js/translated/order.js:692
+#: templates/js/translated/stock.js:1608
msgid "Customer"
msgstr ""
#: company/templates/company/company_base.html:193
-#: part/templates/part/part_base.html:405
+#: part/templates/part/part_base.html:418
msgid "Upload Image"
msgstr ""
@@ -2490,8 +2572,8 @@ msgstr ""
msgid "New Supplier Part"
msgstr ""
-#: company/templates/company/detail.html:28
-#: company/templates/company/detail.html:70
+#: company/templates/company/detail.html:27
+#: company/templates/company/detail.html:67
#: company/templates/company/manufacturer_part.html:112
#: company/templates/company/manufacturer_part.html:136
#: part/templates/part/category.html:135 part/templates/part/detail.html:292
@@ -2499,106 +2581,106 @@ msgstr ""
msgid "Options"
msgstr ""
-#: company/templates/company/detail.html:33
-#: company/templates/company/detail.html:75
+#: company/templates/company/detail.html:32
+#: company/templates/company/detail.html:72
#: part/templates/part/category.html:140
msgid "Order parts"
msgstr ""
-#: company/templates/company/detail.html:36
-#: company/templates/company/detail.html:78
+#: company/templates/company/detail.html:35
+#: company/templates/company/detail.html:75
msgid "Delete parts"
msgstr ""
-#: company/templates/company/detail.html:36
-#: company/templates/company/detail.html:78
+#: company/templates/company/detail.html:35
+#: company/templates/company/detail.html:75
msgid "Delete Parts"
msgstr ""
-#: company/templates/company/detail.html:56 templates/InvenTree/search.html:149
+#: company/templates/company/detail.html:54 templates/InvenTree/search.html:149
msgid "Manufacturer Parts"
msgstr ""
-#: company/templates/company/detail.html:64
+#: company/templates/company/detail.html:62
msgid "Create new manufacturer part"
msgstr ""
-#: company/templates/company/detail.html:65 part/templates/part/detail.html:312
+#: company/templates/company/detail.html:63 part/templates/part/detail.html:312
msgid "New Manufacturer Part"
msgstr ""
-#: company/templates/company/detail.html:97
+#: company/templates/company/detail.html:93
msgid "Supplier Stock"
msgstr ""
-#: company/templates/company/detail.html:106
-#: company/templates/company/navbar.html:40
-#: company/templates/company/navbar.html:43
+#: company/templates/company/detail.html:102
+#: company/templates/company/navbar.html:46
+#: company/templates/company/navbar.html:49
#: order/templates/order/purchase_orders.html:8
#: order/templates/order/purchase_orders.html:13
-#: part/templates/part/detail.html:50 part/templates/part/navbar.html:71
-#: part/templates/part/navbar.html:74 templates/InvenTree/index.html:260
+#: part/templates/part/detail.html:50 part/templates/part/navbar.html:82
+#: part/templates/part/navbar.html:85 templates/InvenTree/index.html:260
#: templates/InvenTree/search.html:325
#: templates/InvenTree/settings/navbar.html:107
-#: templates/InvenTree/settings/navbar.html:109 templates/navbar.html:37
+#: templates/InvenTree/settings/navbar.html:109 templates/navbar.html:44
#: users/models.py:45
msgid "Purchase Orders"
msgstr ""
-#: company/templates/company/detail.html:112
+#: company/templates/company/detail.html:108
#: order/templates/order/purchase_orders.html:20
msgid "Create new purchase order"
msgstr ""
-#: company/templates/company/detail.html:113
+#: company/templates/company/detail.html:109
#: order/templates/order/purchase_orders.html:21
msgid "New Purchase Order"
msgstr ""
-#: company/templates/company/detail.html:128
-#: company/templates/company/navbar.html:49
-#: company/templates/company/navbar.html:52
+#: company/templates/company/detail.html:124
+#: company/templates/company/navbar.html:55
+#: company/templates/company/navbar.html:58
#: order/templates/order/sales_orders.html:8
#: order/templates/order/sales_orders.html:13
-#: part/templates/part/detail.html:71 part/templates/part/navbar.html:79
-#: part/templates/part/navbar.html:82 templates/InvenTree/index.html:291
+#: part/templates/part/detail.html:71 part/templates/part/navbar.html:91
+#: part/templates/part/navbar.html:94 templates/InvenTree/index.html:291
#: templates/InvenTree/search.html:345
#: templates/InvenTree/settings/navbar.html:113
-#: templates/InvenTree/settings/navbar.html:115 templates/navbar.html:46
+#: templates/InvenTree/settings/navbar.html:115 templates/navbar.html:55
#: users/models.py:46
msgid "Sales Orders"
msgstr ""
-#: company/templates/company/detail.html:134
+#: company/templates/company/detail.html:130
#: order/templates/order/sales_orders.html:20
msgid "Create new sales order"
msgstr ""
-#: company/templates/company/detail.html:135
+#: company/templates/company/detail.html:131
#: order/templates/order/sales_orders.html:21
msgid "New Sales Order"
msgstr ""
-#: company/templates/company/detail.html:151
-#: company/templates/company/navbar.html:55
-#: company/templates/company/navbar.html:58
-#: templates/js/translated/build.js:597
+#: company/templates/company/detail.html:147
+#: company/templates/company/navbar.html:61
+#: company/templates/company/navbar.html:64
+#: templates/js/translated/build.js:620
msgid "Assigned Stock"
msgstr ""
-#: company/templates/company/detail.html:169
+#: company/templates/company/detail.html:165
msgid "Company Notes"
msgstr ""
#: company/templates/company/detail.html:364
#: company/templates/company/manufacturer_part.html:200
-#: part/templates/part/detail.html:826
+#: part/templates/part/detail.html:357
msgid "Delete Supplier Parts?"
msgstr ""
#: company/templates/company/detail.html:365
#: company/templates/company/manufacturer_part.html:201
-#: part/templates/part/detail.html:827
+#: part/templates/part/detail.html:358
msgid "All selected supplier parts will be deleted"
msgstr ""
@@ -2609,17 +2691,17 @@ msgstr ""
#: company/templates/company/manufacturer_part.html:40
#: company/templates/company/supplier_part.html:40
#: company/templates/company/supplier_part.html:146
-#: part/templates/part/detail.html:55 part/templates/part/part_base.html:109
+#: part/templates/part/detail.html:55 part/templates/part/part_base.html:116
msgid "Order part"
msgstr ""
#: company/templates/company/manufacturer_part.html:45
-#: templates/js/translated/company.js:511
+#: templates/js/translated/company.js:560
msgid "Edit manufacturer part"
msgstr ""
#: company/templates/company/manufacturer_part.html:49
-#: templates/js/translated/company.js:512
+#: templates/js/translated/company.js:561
msgid "Delete manufacturer part"
msgstr ""
@@ -2634,9 +2716,9 @@ msgstr ""
#: company/templates/company/manufacturer_part.html:103
#: company/templates/company/manufacturer_part_navbar.html:21
-#: company/views.py:49 part/templates/part/navbar.html:65
-#: part/templates/part/navbar.html:68 part/templates/part/prices.html:144
-#: templates/InvenTree/search.html:316 templates/navbar.html:35
+#: company/views.py:49 part/templates/part/navbar.html:75
+#: part/templates/part/navbar.html:78 part/templates/part/prices.html:163
+#: templates/InvenTree/search.html:316 templates/navbar.html:41
msgid "Suppliers"
msgstr ""
@@ -2649,8 +2731,8 @@ msgstr ""
#: company/templates/company/manufacturer_part.html:138
#: company/templates/company/manufacturer_part.html:239
#: part/templates/part/detail.html:214 part/templates/part/detail.html:294
-#: part/templates/part/detail.html:317 templates/js/translated/company.js:377
-#: users/models.py:194
+#: part/templates/part/detail.html:317 templates/js/translated/company.js:424
+#: templates/js/translated/helpers.js:31 users/models.py:194
msgid "Delete"
msgstr ""
@@ -2659,8 +2741,8 @@ msgstr ""
#: company/templates/company/manufacturer_part_navbar.html:14
#: part/templates/part/category_navbar.html:38
#: part/templates/part/category_navbar.html:41
-#: part/templates/part/detail.html:155 part/templates/part/navbar.html:14
-#: part/templates/part/navbar.html:17
+#: part/templates/part/detail.html:155 part/templates/part/navbar.html:20
+#: part/templates/part/navbar.html:23
msgid "Parameters"
msgstr ""
@@ -2676,7 +2758,7 @@ msgid "Delete parameters"
msgstr ""
#: company/templates/company/manufacturer_part.html:176
-#: part/templates/part/detail.html:719
+#: part/templates/part/detail.html:834
msgid "Add Parameter"
msgstr ""
@@ -2693,18 +2775,18 @@ msgid "Manufacturer Part Stock"
msgstr ""
#: company/templates/company/manufacturer_part_navbar.html:29
-#: company/templates/company/navbar.html:34
+#: company/templates/company/navbar.html:39
#: company/templates/company/supplier_part_navbar.html:15
-#: part/templates/part/navbar.html:31 stock/api.py:53
+#: part/templates/part/navbar.html:38 stock/api.py:54
#: stock/templates/stock/loc_link.html:7 stock/templates/stock/location.html:36
#: stock/templates/stock/stock_app_base.html:10
#: templates/InvenTree/index.html:150 templates/InvenTree/search.html:196
#: templates/InvenTree/search.html:232
#: templates/InvenTree/settings/navbar.html:95
#: templates/InvenTree/settings/navbar.html:97
-#: templates/js/translated/part.js:401 templates/js/translated/part.js:626
-#: templates/js/translated/part.js:786 templates/js/translated/stock.js:133
-#: templates/js/translated/stock.js:935 templates/navbar.html:26
+#: templates/js/translated/part.js:529 templates/js/translated/part.js:758
+#: templates/js/translated/part.js:934 templates/js/translated/stock.js:202
+#: templates/js/translated/stock.js:850 templates/navbar.html:32
msgid "Stock"
msgstr ""
@@ -2717,41 +2799,41 @@ msgstr ""
msgid "Orders"
msgstr ""
-#: company/templates/company/navbar.html:13
-#: company/templates/company/navbar.html:16
+#: company/templates/company/navbar.html:17
+#: company/templates/company/navbar.html:20
msgid "Manufactured Parts"
msgstr ""
-#: company/templates/company/navbar.html:22
-#: company/templates/company/navbar.html:25
+#: company/templates/company/navbar.html:26
+#: company/templates/company/navbar.html:29
msgid "Supplied Parts"
msgstr ""
-#: company/templates/company/navbar.html:31 part/templates/part/navbar.html:28
+#: company/templates/company/navbar.html:36 part/templates/part/navbar.html:35
#: stock/templates/stock/location.html:119
#: stock/templates/stock/location.html:134
#: stock/templates/stock/location.html:148
#: stock/templates/stock/location_navbar.html:18
#: stock/templates/stock/location_navbar.html:21
-#: templates/InvenTree/search.html:198 templates/js/translated/stock.js:1366
+#: templates/InvenTree/search.html:198 templates/js/translated/stock.js:1507
#: templates/stats.html:93 templates/stats.html:102 users/models.py:43
msgid "Stock Items"
msgstr ""
#: company/templates/company/supplier_part.html:7
-#: company/templates/company/supplier_part.html:24 stock/models.py:457
+#: company/templates/company/supplier_part.html:24 stock/models.py:463
#: stock/templates/stock/item_base.html:388
-#: templates/js/translated/company.js:729 templates/js/translated/stock.js:1058
+#: templates/js/translated/company.js:784 templates/js/translated/stock.js:1014
msgid "Supplier Part"
msgstr ""
#: company/templates/company/supplier_part.html:44
-#: templates/js/translated/company.js:802
+#: templates/js/translated/company.js:857
msgid "Edit supplier part"
msgstr ""
#: company/templates/company/supplier_part.html:48
-#: templates/js/translated/company.js:803
+#: templates/js/translated/company.js:858
msgid "Delete supplier part"
msgstr ""
@@ -2775,13 +2857,13 @@ msgid "Order Part"
msgstr ""
#: company/templates/company/supplier_part.html:158
-#: part/templates/part/navbar.html:58 part/templates/part/prices.html:7
+#: part/templates/part/navbar.html:67 part/templates/part/prices.html:7
msgid "Pricing Information"
msgstr ""
#: company/templates/company/supplier_part.html:164
#: company/templates/company/supplier_part.html:265
-#: part/templates/part/prices.html:253 part/views.py:1722
+#: part/templates/part/prices.html:271 part/views.py:1730
msgid "Add Price Break"
msgstr ""
@@ -2789,11 +2871,11 @@ msgstr ""
msgid "No price break information found"
msgstr ""
-#: company/templates/company/supplier_part.html:199 part/views.py:1784
+#: company/templates/company/supplier_part.html:199 part/views.py:1792
msgid "Delete Price Break"
msgstr ""
-#: company/templates/company/supplier_part.html:213 part/views.py:1770
+#: company/templates/company/supplier_part.html:213 part/views.py:1778
msgid "Edit Price Break"
msgstr ""
@@ -2817,8 +2899,8 @@ msgstr ""
msgid "New Supplier"
msgstr ""
-#: company/views.py:55 part/templates/part/prices.html:148
-#: templates/InvenTree/search.html:306 templates/navbar.html:36
+#: company/views.py:55 part/templates/part/prices.html:167
+#: templates/InvenTree/search.html:306 templates/navbar.html:42
msgid "Manufacturers"
msgstr ""
@@ -2827,7 +2909,7 @@ msgid "New Manufacturer"
msgstr ""
#: company/views.py:61 templates/InvenTree/search.html:336
-#: templates/navbar.html:45
+#: templates/navbar.html:53
msgid "Customers"
msgstr ""
@@ -2929,6 +3011,10 @@ msgstr ""
msgid "Part query filters (comma-separated value of key=value pairs)"
msgstr ""
+#: order/api.py:302
+msgid "Destination location must be specified"
+msgstr ""
+
#: order/forms.py:30 order/templates/order/order_base.html:47
msgid "Place order"
msgstr ""
@@ -2978,11 +3064,11 @@ msgstr ""
msgid "Order notes"
msgstr ""
-#: order/models.py:247 order/models.py:534
+#: order/models.py:247 order/models.py:540
msgid "Order reference"
msgstr ""
-#: order/models.py:252 order/models.py:549
+#: order/models.py:252 order/models.py:555
msgid "Purchase order status"
msgstr ""
@@ -2991,7 +3077,7 @@ msgid "Company from which the items are being ordered"
msgstr ""
#: order/models.py:264 order/templates/order/order_base.html:98
-#: templates/js/translated/order.js:263
+#: templates/js/translated/order.js:337
msgid "Supplier Reference"
msgstr ""
@@ -3023,7 +3109,7 @@ msgstr ""
msgid "Date order was completed"
msgstr ""
-#: order/models.py:313 stock/models.py:345 stock/models.py:1060
+#: order/models.py:313 stock/models.py:351 stock/models.py:1072
msgid "Quantity must be greater than zero"
msgstr ""
@@ -3031,150 +3117,182 @@ msgstr ""
msgid "Part supplier must match PO supplier"
msgstr ""
-#: order/models.py:416
+#: order/models.py:421
msgid "Lines can only be received against an order marked as 'Placed'"
msgstr ""
-#: order/models.py:420
+#: order/models.py:425
msgid "Quantity must be an integer"
msgstr ""
-#: order/models.py:422
+#: order/models.py:427
msgid "Quantity must be a positive number"
msgstr ""
-#: order/models.py:545
+#: order/models.py:551
msgid "Company to which the items are being sold"
msgstr ""
-#: order/models.py:551
+#: order/models.py:557
msgid "Customer Reference "
msgstr ""
-#: order/models.py:551
+#: order/models.py:557
msgid "Customer order reference code"
msgstr ""
-#: order/models.py:556
+#: order/models.py:562
msgid "Target date for order completion. Order will be overdue after this date."
msgstr ""
-#: order/models.py:559 templates/js/translated/order.js:392
+#: order/models.py:565 templates/js/translated/order.js:733
msgid "Shipment Date"
msgstr ""
-#: order/models.py:566
+#: order/models.py:572
msgid "shipped by"
msgstr ""
-#: order/models.py:610
+#: order/models.py:616
msgid "SalesOrder cannot be shipped as it is not currently pending"
msgstr ""
-#: order/models.py:707
+#: order/models.py:713
msgid "Item quantity"
msgstr ""
-#: order/models.py:713
+#: order/models.py:719
msgid "Line item reference"
msgstr ""
-#: order/models.py:715
+#: order/models.py:721
msgid "Line item notes"
msgstr ""
-#: order/models.py:745 order/models.py:823 templates/js/translated/order.js:442
+#: order/models.py:751 order/models.py:835 templates/js/translated/order.js:785
msgid "Order"
msgstr ""
-#: order/models.py:746 order/templates/order/order_base.html:9
+#: order/models.py:752 order/templates/order/order_base.html:9
#: order/templates/order/order_base.html:24
#: report/templates/report/inventree_po_report.html:77
#: stock/templates/stock/item_base.html:338
-#: templates/js/translated/order.js:232 templates/js/translated/stock.js:1037
-#: templates/js/translated/stock.js:1448
+#: templates/js/translated/order.js:306 templates/js/translated/stock.js:991
+#: templates/js/translated/stock.js:1589
msgid "Purchase Order"
msgstr ""
-#: order/models.py:767
+#: order/models.py:773
msgid "Supplier part"
msgstr ""
-#: order/models.py:770 order/templates/order/order_base.html:131
-#: order/templates/order/purchase_order_detail.html:388
+#: order/models.py:780 order/templates/order/order_base.html:131
#: order/templates/order/receive_parts.html:22
#: order/templates/order/sales_order_base.html:133
+#: templates/js/translated/order.js:573
msgid "Received"
msgstr ""
-#: order/models.py:770
+#: order/models.py:781
msgid "Number of items received"
msgstr ""
-#: order/models.py:776 part/templates/part/prices.html:157 stock/models.py:582
-#: stock/templates/stock/item_base.html:345
-#: templates/js/translated/stock.js:1081
+#: order/models.py:788 part/templates/part/prices.html:176 stock/models.py:588
+#: stock/serializers.py:147 stock/templates/stock/item_base.html:345
+#: templates/js/translated/stock.js:1045
msgid "Purchase Price"
msgstr ""
-#: order/models.py:777
+#: order/models.py:789
msgid "Unit purchase price"
msgstr ""
-#: order/models.py:785
+#: order/models.py:797
msgid "Where does the Purchaser want this item to be stored?"
msgstr ""
-#: order/models.py:831 part/templates/part/part_pricing.html:97
-#: part/templates/part/prices.html:97 part/templates/part/prices.html:266
+#: order/models.py:843 part/templates/part/part_pricing.html:112
+#: part/templates/part/prices.html:116 part/templates/part/prices.html:284
msgid "Sale Price"
msgstr ""
-#: order/models.py:832
+#: order/models.py:844
msgid "Unit sale price"
msgstr ""
-#: order/models.py:911 order/models.py:913
+#: order/models.py:923 order/models.py:925
msgid "Stock item has not been assigned"
msgstr ""
-#: order/models.py:917
+#: order/models.py:929
msgid "Cannot allocate stock item to a line with a different part"
msgstr ""
-#: order/models.py:919
+#: order/models.py:931
msgid "Cannot allocate stock to a line without a part"
msgstr ""
-#: order/models.py:922
+#: order/models.py:934
msgid "Allocation quantity cannot exceed stock quantity"
msgstr ""
-#: order/models.py:932
+#: order/models.py:944
msgid "Quantity must be 1 for serialized stock item"
msgstr ""
-#: order/models.py:937
+#: order/models.py:949
msgid "Line"
msgstr ""
-#: order/models.py:948
+#: order/models.py:960
msgid "Item"
msgstr ""
-#: order/models.py:949
+#: order/models.py:961
msgid "Select stock item to allocate"
msgstr ""
-#: order/models.py:952
+#: order/models.py:964
msgid "Enter stock allocation quantity"
msgstr ""
-#: order/serializers.py:139
+#: order/serializers.py:166
msgid "Purchase price currency"
msgstr ""
-#: order/serializers.py:360
+#: order/serializers.py:201
+msgid "Line Item"
+msgstr ""
+
+#: order/serializers.py:207
+msgid "Line item does not match purchase order"
+msgstr ""
+
+#: order/serializers.py:217 order/serializers.py:276
+msgid "Select destination location for received items"
+msgstr ""
+
+#: order/serializers.py:234
+msgid "Barcode Hash"
+msgstr ""
+
+#: order/serializers.py:235
+msgid "Unique identifier field"
+msgstr ""
+
+#: order/serializers.py:250
+msgid "Barcode is already in use"
+msgstr ""
+
+#: order/serializers.py:289
+msgid "Line items must be provided"
+msgstr ""
+
+#: order/serializers.py:299
+msgid "Supplied barcode values must be unique"
+msgstr ""
+
+#: order/serializers.py:514
msgid "Sale price currency"
msgstr ""
@@ -3227,14 +3345,12 @@ msgid "Edit Purchase Order"
msgstr ""
#: order/templates/order/order_base.html:196
-#: order/templates/order/purchase_order_detail.html:265
-#: stock/templates/stock/location.html:250
+#: stock/templates/stock/location.html:250 templates/js/translated/order.js:437
msgid "New Location"
msgstr ""
#: order/templates/order/order_base.html:197
-#: order/templates/order/purchase_order_detail.html:266
-#: stock/templates/stock/location.html:42
+#: stock/templates/stock/location.html:42 templates/js/translated/order.js:438
msgid "Create new stock location"
msgstr ""
@@ -3336,7 +3452,7 @@ msgid "Upload File for Purchase Order"
msgstr ""
#: order/templates/order/order_wizard/po_upload.html:18
-#: part/templates/part/bom_upload/upload_file.html:24
+#: part/templates/part/bom_upload/upload_file.html:34
#: part/templates/part/import_wizard/ajax_part_upload.html:10
#: part/templates/part/import_wizard/part_upload.html:21
#, python-format
@@ -3369,7 +3485,7 @@ msgstr ""
#: order/templates/order/order_wizard/select_parts.html:65
#, python-format
-msgid "Select a supplier for %(name)s"
+msgid "Select a supplier for %(name)s"
msgstr ""
#: order/templates/order/order_wizard/select_parts.html:77
@@ -3386,7 +3502,7 @@ msgid "Select existing purchase orders, or create new orders."
msgstr ""
#: order/templates/order/order_wizard/select_pos.html:31
-#: templates/js/translated/order.js:289 templates/js/translated/order.js:397
+#: templates/js/translated/order.js:363 templates/js/translated/order.js:738
msgid "Items"
msgstr ""
@@ -3425,9 +3541,9 @@ msgid "Purchase Order Items"
msgstr ""
#: order/templates/order/purchase_order_detail.html:23
-#: order/templates/order/purchase_order_detail.html:202
+#: order/templates/order/purchase_order_detail.html:203
#: order/templates/order/sales_order_detail.html:23
-#: order/templates/order/sales_order_detail.html:176
+#: order/templates/order/sales_order_detail.html:177
msgid "Add Line Item"
msgstr ""
@@ -3436,49 +3552,6 @@ msgstr ""
msgid "Order Notes"
msgstr ""
-#: order/templates/order/purchase_order_detail.html:238
-#: order/templates/order/sales_order_detail.html:518
-msgid "Edit Line Item"
-msgstr ""
-
-#: order/templates/order/purchase_order_detail.html:248
-#: order/templates/order/sales_order_detail.html:528
-msgid "Delete Line Item"
-msgstr ""
-
-#: order/templates/order/purchase_order_detail.html:279
-msgid "No line items found"
-msgstr ""
-
-#: order/templates/order/purchase_order_detail.html:307
-#: order/templates/order/sales_order_detail.html:353
-msgid "Total"
-msgstr ""
-
-#: order/templates/order/purchase_order_detail.html:360
-#: order/templates/order/sales_order_detail.html:376
-#: templates/js/translated/part.js:1128 templates/js/translated/part.js:1317
-msgid "Unit Price"
-msgstr ""
-
-#: order/templates/order/purchase_order_detail.html:367
-#: order/templates/order/sales_order_detail.html:383
-msgid "Total price"
-msgstr ""
-
-#: order/templates/order/purchase_order_detail.html:431
-#: order/templates/order/sales_order_detail.html:489
-msgid "Edit line item"
-msgstr ""
-
-#: order/templates/order/purchase_order_detail.html:432
-msgid "Delete line item"
-msgstr ""
-
-#: order/templates/order/purchase_order_detail.html:437
-msgid "Receive line item"
-msgstr ""
-
#: order/templates/order/purchase_orders.html:24
#: order/templates/order/sales_orders.html:24
msgid "Print Order Reports"
@@ -3486,18 +3559,18 @@ msgstr ""
#: order/templates/order/receive_parts.html:8
#, python-format
-msgid "Receive outstanding parts for %(order)s - %(desc)s"
+msgid "Receive outstanding parts for %(order)s - %(desc)s"
msgstr ""
-#: order/templates/order/receive_parts.html:14 part/api.py:49
-#: part/models.py:296 part/templates/part/cat_link.html:7
+#: order/templates/order/receive_parts.html:14 part/api.py:54
+#: part/models.py:298 part/templates/part/cat_link.html:7
#: part/templates/part/category.html:108 part/templates/part/category.html:122
#: part/templates/part/category_navbar.html:21
#: part/templates/part/category_navbar.html:24
#: templates/InvenTree/index.html:102 templates/InvenTree/search.html:114
#: templates/InvenTree/settings/navbar.html:83
#: templates/InvenTree/settings/navbar.html:85
-#: templates/js/translated/part.js:987 templates/navbar.html:23
+#: templates/js/translated/part.js:1154 templates/navbar.html:29
#: templates/stats.html:80 templates/stats.html:89 users/models.py:41
msgid "Parts"
msgstr ""
@@ -3511,7 +3584,7 @@ msgid "Order Code"
msgstr ""
#: order/templates/order/receive_parts.html:21
-#: part/templates/part/part_base.html:160 templates/js/translated/part.js:802
+#: part/templates/part/part_base.html:167 templates/js/translated/part.js:949
msgid "On Order"
msgstr ""
@@ -3540,7 +3613,7 @@ msgid "Sales Order Details"
msgstr ""
#: order/templates/order/sales_order_base.html:100
-#: templates/js/translated/order.js:364
+#: templates/js/translated/order.js:705
msgid "Customer Reference"
msgstr ""
@@ -3563,71 +3636,102 @@ msgstr ""
msgid "Sales Order Items"
msgstr ""
-#: order/templates/order/sales_order_detail.html:225
-#: templates/js/translated/bom.js:378 templates/js/translated/build.js:759
-#: templates/js/translated/build.js:1202
+#: order/templates/order/sales_order_detail.html:226
+#: templates/js/translated/bom.js:394 templates/js/translated/build.js:782
+#: templates/js/translated/build.js:1219
msgid "Actions"
msgstr ""
-#: order/templates/order/sales_order_detail.html:232
-#: templates/js/translated/build.js:645 templates/js/translated/build.js:1011
+#: order/templates/order/sales_order_detail.html:233
+#: templates/js/translated/build.js:668 templates/js/translated/build.js:1030
msgid "Edit stock allocation"
msgstr ""
-#: order/templates/order/sales_order_detail.html:233
-#: templates/js/translated/build.js:647 templates/js/translated/build.js:1012
+#: order/templates/order/sales_order_detail.html:234
+#: templates/js/translated/build.js:670 templates/js/translated/build.js:1031
msgid "Delete stock allocation"
msgstr ""
-#: order/templates/order/sales_order_detail.html:306
+#: order/templates/order/sales_order_detail.html:307
msgid "No matching line items"
msgstr ""
-#: order/templates/order/sales_order_detail.html:336
+#: order/templates/order/sales_order_detail.html:337
msgid "ID"
msgstr ""
-#: order/templates/order/sales_order_detail.html:404
-#: templates/js/translated/build.js:710 templates/js/translated/build.js:1007
+#: order/templates/order/sales_order_detail.html:354
+#: templates/js/translated/order.js:481
+msgid "Total"
+msgstr ""
+
+#: order/templates/order/sales_order_detail.html:377
+#: templates/js/translated/order.js:534 templates/js/translated/part.js:1296
+#: templates/js/translated/part.js:1507
+msgid "Unit Price"
+msgstr ""
+
+#: order/templates/order/sales_order_detail.html:384
+#: templates/js/translated/order.js:543
+msgid "Total price"
+msgstr ""
+
+#: order/templates/order/sales_order_detail.html:405
+#: templates/js/translated/build.js:733 templates/js/translated/build.js:1026
msgid "Allocated"
msgstr ""
-#: order/templates/order/sales_order_detail.html:406
+#: order/templates/order/sales_order_detail.html:407
msgid "Fulfilled"
msgstr ""
-#: order/templates/order/sales_order_detail.html:443
+#: order/templates/order/sales_order_detail.html:444
msgid "PO"
msgstr ""
-#: order/templates/order/sales_order_detail.html:473
+#: order/templates/order/sales_order_detail.html:474
msgid "Allocate serial numbers"
msgstr ""
-#: order/templates/order/sales_order_detail.html:476
-#: templates/js/translated/build.js:773
+#: order/templates/order/sales_order_detail.html:477
+#: templates/js/translated/build.js:796
msgid "Allocate stock"
msgstr ""
-#: order/templates/order/sales_order_detail.html:479
+#: order/templates/order/sales_order_detail.html:480
msgid "Purchase stock"
msgstr ""
-#: order/templates/order/sales_order_detail.html:483
-#: templates/js/translated/build.js:766 templates/js/translated/build.js:1210
+#: order/templates/order/sales_order_detail.html:484
+#: templates/js/translated/build.js:789 templates/js/translated/build.js:1227
msgid "Build stock"
msgstr ""
-#: order/templates/order/sales_order_detail.html:486
-#: order/templates/order/sales_order_detail.html:605
+#: order/templates/order/sales_order_detail.html:487
+#: order/templates/order/sales_order_detail.html:606
msgid "Calculate price"
msgstr ""
#: order/templates/order/sales_order_detail.html:490
+#: templates/js/translated/order.js:616
+msgid "Edit line item"
+msgstr ""
+
+#: order/templates/order/sales_order_detail.html:491
msgid "Delete line item "
msgstr ""
-#: order/templates/order/sales_order_detail.html:611
+#: order/templates/order/sales_order_detail.html:519
+#: templates/js/translated/order.js:403
+msgid "Edit Line Item"
+msgstr ""
+
+#: order/templates/order/sales_order_detail.html:529
+#: templates/js/translated/order.js:415
+msgid "Delete Line Item"
+msgstr ""
+
+#: order/templates/order/sales_order_detail.html:612
msgid "Update Unit Price"
msgstr ""
@@ -3814,12 +3918,28 @@ msgstr ""
msgid "Updated {part} unit-price to {price} and quantity to {qty}"
msgstr ""
-#: part/bom.py:133 part/models.py:73 part/models.py:731
-#: part/templates/part/category.html:75 part/templates/part/part_base.html:282
+#: part/api.py:700
+msgid "Must be greater than zero"
+msgstr ""
+
+#: part/api.py:704
+msgid "Must be a valid quantity"
+msgstr ""
+
+#: part/api.py:719
+msgid "Specify location for initial part stock"
+msgstr ""
+
+#: part/api.py:750 part/api.py:754 part/api.py:769 part/api.py:773
+msgid "This field is required"
+msgstr ""
+
+#: part/bom.py:133 part/models.py:75 part/models.py:733
+#: part/templates/part/category.html:75 part/templates/part/part_base.html:290
msgid "Default Location"
msgstr ""
-#: part/bom.py:134 part/templates/part/part_base.html:149
+#: part/bom.py:134 part/templates/part/part_base.html:156
msgid "Available Stock"
msgstr ""
@@ -3879,7 +3999,7 @@ msgstr ""
msgid "Include part supplier data in exported BOM"
msgstr ""
-#: part/forms.py:96 part/models.py:2234
+#: part/forms.py:96 part/models.py:2250
msgid "Parent Part"
msgstr ""
@@ -3923,391 +4043,391 @@ msgstr ""
msgid "Input quantity for price calculation"
msgstr ""
-#: part/models.py:74
+#: part/models.py:76
msgid "Default location for parts in this category"
msgstr ""
-#: part/models.py:77
+#: part/models.py:79
msgid "Default keywords"
msgstr ""
-#: part/models.py:77
+#: part/models.py:79
msgid "Default keywords for parts in this category"
msgstr ""
-#: part/models.py:87 part/models.py:2280
+#: part/models.py:89 part/models.py:2296
#: part/templates/part/part_app_base.html:10
msgid "Part Category"
msgstr ""
-#: part/models.py:88 part/templates/part/category.html:32
+#: part/models.py:90 part/templates/part/category.html:32
#: part/templates/part/category.html:103 templates/InvenTree/search.html:127
#: templates/stats.html:84 users/models.py:40
msgid "Part Categories"
msgstr ""
-#: part/models.py:381
+#: part/models.py:383
msgid "Invalid choice for parent part"
msgstr ""
-#: part/models.py:433 part/models.py:445
+#: part/models.py:435 part/models.py:447
#, python-brace-format
msgid "Part '{p1}' is used in BOM for '{p2}' (recursive)"
msgstr ""
-#: part/models.py:542
+#: part/models.py:544
msgid "Next available serial numbers are"
msgstr ""
-#: part/models.py:546
+#: part/models.py:548
msgid "Next available serial number is"
msgstr ""
-#: part/models.py:551
+#: part/models.py:553
msgid "Most recent serial number is"
msgstr ""
-#: part/models.py:630
+#: part/models.py:632
msgid "Duplicate IPN not allowed in part settings"
msgstr ""
-#: part/models.py:655
+#: part/models.py:657
msgid "Part name"
msgstr ""
-#: part/models.py:662
+#: part/models.py:664
msgid "Is Template"
msgstr ""
-#: part/models.py:663
+#: part/models.py:665
msgid "Is this part a template part?"
msgstr ""
-#: part/models.py:673
+#: part/models.py:675
msgid "Is this part a variant of another part?"
msgstr ""
-#: part/models.py:674
+#: part/models.py:676
msgid "Variant Of"
msgstr ""
-#: part/models.py:680
+#: part/models.py:682
msgid "Part description"
msgstr ""
-#: part/models.py:685 part/templates/part/category.html:82
-#: part/templates/part/part_base.html:251
+#: part/models.py:687 part/templates/part/category.html:82
+#: part/templates/part/part_base.html:259
msgid "Keywords"
msgstr ""
-#: part/models.py:686
+#: part/models.py:688
msgid "Part keywords to improve visibility in search results"
msgstr ""
-#: part/models.py:693 part/models.py:2279
+#: part/models.py:695 part/models.py:2295
#: part/templates/part/set_category.html:15
#: templates/InvenTree/settings/settings.html:167
-#: templates/js/translated/part.js:773
+#: templates/js/translated/part.js:916
msgid "Category"
msgstr ""
-#: part/models.py:694
+#: part/models.py:696
msgid "Part category"
msgstr ""
-#: part/models.py:699 part/templates/part/part_base.html:227
-#: templates/js/translated/part.js:389 templates/js/translated/part.js:617
+#: part/models.py:701 part/templates/part/part_base.html:235
+#: templates/js/translated/part.js:517 templates/js/translated/part.js:749
msgid "IPN"
msgstr ""
-#: part/models.py:700
+#: part/models.py:702
msgid "Internal Part Number"
msgstr ""
-#: part/models.py:706
+#: part/models.py:708
msgid "Part revision or version number"
msgstr ""
-#: part/models.py:707 part/templates/part/part_base.html:244
-#: report/models.py:200 templates/js/translated/part.js:393
+#: part/models.py:709 part/templates/part/part_base.html:252
+#: report/models.py:200 templates/js/translated/part.js:521
msgid "Revision"
msgstr ""
-#: part/models.py:729
+#: part/models.py:731
msgid "Where is this item normally stored?"
msgstr ""
-#: part/models.py:776 part/templates/part/part_base.html:289
+#: part/models.py:778 part/templates/part/part_base.html:297
msgid "Default Supplier"
msgstr ""
-#: part/models.py:777
+#: part/models.py:779
msgid "Default supplier part"
msgstr ""
-#: part/models.py:784
+#: part/models.py:786
msgid "Default Expiry"
msgstr ""
-#: part/models.py:785
+#: part/models.py:787
msgid "Expiry time (in days) for stock items of this part"
msgstr ""
-#: part/models.py:790
+#: part/models.py:792
msgid "Minimum Stock"
msgstr ""
-#: part/models.py:791
+#: part/models.py:793
msgid "Minimum allowed stock level"
msgstr ""
-#: part/models.py:798
+#: part/models.py:800
msgid "Stock keeping units for this part"
msgstr ""
-#: part/models.py:804
+#: part/models.py:806
msgid "Can this part be built from other parts?"
msgstr ""
-#: part/models.py:810
+#: part/models.py:812
msgid "Can this part be used to build other parts?"
msgstr ""
-#: part/models.py:816
+#: part/models.py:818
msgid "Does this part have tracking for unique items?"
msgstr ""
-#: part/models.py:821
+#: part/models.py:823
msgid "Can this part be purchased from external suppliers?"
msgstr ""
-#: part/models.py:826
+#: part/models.py:828
msgid "Can this part be sold to customers?"
msgstr ""
-#: part/models.py:830 templates/js/translated/table_filters.js:21
-#: templates/js/translated/table_filters.js:69
-#: templates/js/translated/table_filters.js:255
-#: templates/js/translated/table_filters.js:324
+#: part/models.py:832 templates/js/translated/table_filters.js:34
+#: templates/js/translated/table_filters.js:82
+#: templates/js/translated/table_filters.js:268
+#: templates/js/translated/table_filters.js:337
msgid "Active"
msgstr ""
-#: part/models.py:831
+#: part/models.py:833
msgid "Is this part active?"
msgstr ""
-#: part/models.py:836
+#: part/models.py:838
msgid "Is this a virtual part, such as a software product or license?"
msgstr ""
-#: part/models.py:841
+#: part/models.py:843
msgid "Part notes - supports Markdown formatting"
msgstr ""
-#: part/models.py:844
+#: part/models.py:846
msgid "BOM checksum"
msgstr ""
-#: part/models.py:844
+#: part/models.py:846
msgid "Stored BOM checksum"
msgstr ""
-#: part/models.py:847
+#: part/models.py:849
msgid "BOM checked by"
msgstr ""
-#: part/models.py:849
+#: part/models.py:851
msgid "BOM checked date"
msgstr ""
-#: part/models.py:853
+#: part/models.py:855
msgid "Creation User"
msgstr ""
-#: part/models.py:1592
+#: part/models.py:1601
msgid "Sell multiple"
msgstr ""
-#: part/models.py:2080
+#: part/models.py:2096
msgid "Test templates can only be created for trackable parts"
msgstr ""
-#: part/models.py:2097
+#: part/models.py:2113
msgid "Test with this name already exists for this part"
msgstr ""
-#: part/models.py:2117 templates/js/translated/part.js:1038
-#: templates/js/translated/stock.js:485
+#: part/models.py:2133 templates/js/translated/part.js:1205
+#: templates/js/translated/stock.js:556
msgid "Test Name"
msgstr ""
-#: part/models.py:2118
+#: part/models.py:2134
msgid "Enter a name for the test"
msgstr ""
-#: part/models.py:2123
+#: part/models.py:2139
msgid "Test Description"
msgstr ""
-#: part/models.py:2124
+#: part/models.py:2140
msgid "Enter description for this test"
msgstr ""
-#: part/models.py:2129 templates/js/translated/part.js:1047
-#: templates/js/translated/table_filters.js:241
+#: part/models.py:2145 templates/js/translated/part.js:1214
+#: templates/js/translated/table_filters.js:254
msgid "Required"
msgstr ""
-#: part/models.py:2130
+#: part/models.py:2146
msgid "Is this test required to pass?"
msgstr ""
-#: part/models.py:2135 templates/js/translated/part.js:1055
+#: part/models.py:2151 templates/js/translated/part.js:1222
msgid "Requires Value"
msgstr ""
-#: part/models.py:2136
+#: part/models.py:2152
msgid "Does this test require a value when adding a test result?"
msgstr ""
-#: part/models.py:2141 templates/js/translated/part.js:1062
+#: part/models.py:2157 templates/js/translated/part.js:1229
msgid "Requires Attachment"
msgstr ""
-#: part/models.py:2142
+#: part/models.py:2158
msgid "Does this test require a file attachment when adding a test result?"
msgstr ""
-#: part/models.py:2153
+#: part/models.py:2169
#, python-brace-format
msgid "Illegal character in template name ({c})"
msgstr ""
-#: part/models.py:2189
+#: part/models.py:2205
msgid "Parameter template name must be unique"
msgstr ""
-#: part/models.py:2197
+#: part/models.py:2213
msgid "Parameter Name"
msgstr ""
-#: part/models.py:2204
+#: part/models.py:2220
msgid "Parameter Units"
msgstr ""
-#: part/models.py:2236 part/models.py:2285 part/models.py:2286
+#: part/models.py:2252 part/models.py:2301 part/models.py:2302
#: templates/InvenTree/settings/settings.html:162
msgid "Parameter Template"
msgstr ""
-#: part/models.py:2238
+#: part/models.py:2254
msgid "Data"
msgstr ""
-#: part/models.py:2238
+#: part/models.py:2254
msgid "Parameter Value"
msgstr ""
-#: part/models.py:2290 templates/InvenTree/settings/settings.html:171
+#: part/models.py:2306 templates/InvenTree/settings/settings.html:171
msgid "Default Value"
msgstr ""
-#: part/models.py:2291
+#: part/models.py:2307
msgid "Default Parameter Value"
msgstr ""
-#: part/models.py:2325
+#: part/models.py:2341
msgid "Select parent part"
msgstr ""
-#: part/models.py:2333
+#: part/models.py:2349
msgid "Sub part"
msgstr ""
-#: part/models.py:2334
+#: part/models.py:2350
msgid "Select part to be used in BOM"
msgstr ""
-#: part/models.py:2340
+#: part/models.py:2356
msgid "BOM quantity for this BOM item"
msgstr ""
-#: part/models.py:2342 templates/js/translated/bom.js:236
-#: templates/js/translated/bom.js:298
+#: part/models.py:2358 templates/js/translated/bom.js:256
+#: templates/js/translated/bom.js:314
msgid "Optional"
msgstr ""
-#: part/models.py:2342
+#: part/models.py:2358
msgid "This BOM item is optional"
msgstr ""
-#: part/models.py:2345
+#: part/models.py:2361
msgid "Overage"
msgstr ""
-#: part/models.py:2346
+#: part/models.py:2362
msgid "Estimated build wastage quantity (absolute or percentage)"
msgstr ""
-#: part/models.py:2349
+#: part/models.py:2365
msgid "BOM item reference"
msgstr ""
-#: part/models.py:2352
+#: part/models.py:2368
msgid "BOM item notes"
msgstr ""
-#: part/models.py:2354
+#: part/models.py:2370
msgid "Checksum"
msgstr ""
-#: part/models.py:2354
+#: part/models.py:2370
msgid "BOM line checksum"
msgstr ""
-#: part/models.py:2358 templates/js/translated/bom.js:315
-#: templates/js/translated/bom.js:322
-#: templates/js/translated/table_filters.js:55
+#: part/models.py:2374 templates/js/translated/bom.js:331
+#: templates/js/translated/bom.js:338
+#: templates/js/translated/table_filters.js:68
msgid "Inherited"
msgstr ""
-#: part/models.py:2359
+#: part/models.py:2375
msgid "This BOM item is inherited by BOMs for variant parts"
msgstr ""
-#: part/models.py:2364 templates/js/translated/bom.js:307
+#: part/models.py:2380 templates/js/translated/bom.js:323
msgid "Allow Variants"
msgstr ""
-#: part/models.py:2365
+#: part/models.py:2381
msgid "Stock items for variant parts can be used for this BOM item"
msgstr ""
-#: part/models.py:2450 stock/models.py:335
+#: part/models.py:2466 stock/models.py:341
msgid "Quantity must be integer value for trackable parts"
msgstr ""
-#: part/models.py:2459 part/models.py:2461
+#: part/models.py:2475 part/models.py:2477
msgid "Sub part must be specified"
msgstr ""
-#: part/models.py:2464
+#: part/models.py:2480
msgid "BOM Item"
msgstr ""
-#: part/models.py:2583
+#: part/models.py:2599
msgid "Part 1"
msgstr ""
-#: part/models.py:2587
+#: part/models.py:2603
msgid "Part 2"
msgstr ""
-#: part/models.py:2587
+#: part/models.py:2603
msgid "Select Related Part"
msgstr ""
-#: part/models.py:2619
+#: part/models.py:2635
msgid "Error creating relationship: check that the part is not related to itself and that the relationship is unique"
msgstr ""
@@ -4317,17 +4437,17 @@ msgstr ""
#: part/templates/part/bom.html:14
#, python-format
-msgid "The BOM for %(part)s has changed, and must be validated.
"
+msgid "The BOM for %(part)s has changed, and must be validated.
"
msgstr ""
#: part/templates/part/bom.html:16
#, python-format
-msgid "The BOM for %(part)s was last checked by %(checker)s on %(check_date)s"
+msgid "The BOM for %(part)s was last checked by %(checker)s on %(check_date)s"
msgstr ""
#: part/templates/part/bom.html:20
#, python-format
-msgid "The BOM for %(part)s has not been validated."
+msgid "The BOM for %(part)s has not been validated."
msgstr ""
#: part/templates/part/bom.html:27
@@ -4374,33 +4494,34 @@ msgstr ""
msgid "Select Part"
msgstr ""
-#: part/templates/part/bom_upload/upload_file.html:7
-msgid "Upload BOM File"
+#: part/templates/part/bom_upload/upload_file.html:13
+#: part/templates/part/bom_upload/upload_file.html:16
+msgid "Return To BOM"
msgstr ""
-#: part/templates/part/bom_upload/upload_file.html:12
+#: part/templates/part/bom_upload/upload_file.html:27
msgid "Upload Bill of Materials"
msgstr ""
-#: part/templates/part/bom_upload/upload_file.html:16
+#: part/templates/part/bom_upload/upload_file.html:46
msgid "Requirements for BOM upload"
msgstr ""
-#: part/templates/part/bom_upload/upload_file.html:18
+#: part/templates/part/bom_upload/upload_file.html:48
msgid "The BOM file must contain the required named columns as provided in the "
msgstr ""
-#: part/templates/part/bom_upload/upload_file.html:18
+#: part/templates/part/bom_upload/upload_file.html:48
msgid "BOM Upload Template"
msgstr ""
-#: part/templates/part/bom_upload/upload_file.html:19
+#: part/templates/part/bom_upload/upload_file.html:49
msgid "Each part must already exist in the database"
msgstr ""
#: part/templates/part/bom_validate.html:6
#, python-format
-msgid "Confirm that the Bill of Materials (BOM) is valid for:
%(part)s"
+msgid "Confirm that the Bill of Materials (BOM) is valid for:
%(part)s"
msgstr ""
#: part/templates/part/bom_validate.html:9
@@ -4435,7 +4556,7 @@ msgstr ""
msgid "Category Description"
msgstr ""
-#: part/templates/part/category.html:88 part/templates/part/category.html:174
+#: part/templates/part/category.html:88 part/templates/part/category.html:175
#: part/templates/part/category_navbar.html:14
#: part/templates/part/category_navbar.html:17
msgid "Subcategories"
@@ -4449,7 +4570,7 @@ msgstr ""
msgid "Export Part Data"
msgstr ""
-#: part/templates/part/category.html:127 part/templates/part/category.html:141
+#: part/templates/part/category.html:127 part/templates/part/category.html:142
msgid "Export"
msgstr ""
@@ -4470,26 +4591,30 @@ msgid "Set Category"
msgstr ""
#: part/templates/part/category.html:141
+msgid "Print Labels"
+msgstr ""
+
+#: part/templates/part/category.html:142
msgid "Export Data"
msgstr ""
-#: part/templates/part/category.html:145
+#: part/templates/part/category.html:146
msgid "View list display"
msgstr ""
-#: part/templates/part/category.html:148
+#: part/templates/part/category.html:149
msgid "View grid display"
msgstr ""
-#: part/templates/part/category.html:164
+#: part/templates/part/category.html:165
msgid "Part Parameters"
msgstr ""
-#: part/templates/part/category.html:253
+#: part/templates/part/category.html:254
msgid "Create Part Category"
msgstr ""
-#: part/templates/part/category.html:279
+#: part/templates/part/category.html:281
msgid "Create Part"
msgstr ""
@@ -4533,7 +4658,7 @@ msgstr ""
msgid "Import Parts"
msgstr ""
-#: part/templates/part/copy_part.html:9 templates/js/translated/part.js:224
+#: part/templates/part/copy_part.html:9 templates/js/translated/part.js:352
msgid "Duplicate Part"
msgstr ""
@@ -4554,7 +4679,7 @@ msgstr ""
#: part/templates/part/create_part.html:17
#, python-format
-msgid "%(full_name)s - %(desc)s (%(match_per)s%% match)"
+msgid "%(full_name)s - %(desc)s (%(match_per)s%% match)"
msgstr ""
#: part/templates/part/detail.html:16
@@ -4563,10 +4688,10 @@ msgstr ""
#: part/templates/part/detail.html:21
#, python-format
-msgid "Showing stock for all variants of %(full_name)s"
+msgid "Showing stock for all variants of %(full_name)s"
msgstr ""
-#: part/templates/part/detail.html:30 part/templates/part/navbar.html:87
+#: part/templates/part/detail.html:30 part/templates/part/navbar.html:99
msgid "Part Test Templates"
msgstr ""
@@ -4586,7 +4711,7 @@ msgstr ""
msgid "Sales Order Allocations"
msgstr ""
-#: part/templates/part/detail.html:130 part/templates/part/navbar.html:21
+#: part/templates/part/detail.html:130 part/templates/part/navbar.html:27
msgid "Part Variants"
msgstr ""
@@ -4602,8 +4727,8 @@ msgstr ""
msgid "Add new parameter"
msgstr ""
-#: part/templates/part/detail.html:182 part/templates/part/navbar.html:95
-#: part/templates/part/navbar.html:98
+#: part/templates/part/detail.html:182 part/templates/part/navbar.html:107
+#: part/templates/part/navbar.html:110
msgid "Related Parts"
msgstr ""
@@ -4611,8 +4736,8 @@ msgstr ""
msgid "Add Related"
msgstr ""
-#: part/templates/part/detail.html:228 part/templates/part/navbar.html:35
-#: part/templates/part/navbar.html:38
+#: part/templates/part/detail.html:228 part/templates/part/navbar.html:43
+#: part/templates/part/navbar.html:46
msgid "Bill of Materials"
msgstr ""
@@ -4644,50 +4769,50 @@ msgstr ""
msgid "Delete manufacturer parts"
msgstr ""
-#: part/templates/part/detail.html:402
+#: part/templates/part/detail.html:502
msgid "Delete selected BOM items?"
msgstr ""
-#: part/templates/part/detail.html:403
+#: part/templates/part/detail.html:503
msgid "All selected BOM items will be deleted"
msgstr ""
-#: part/templates/part/detail.html:454
+#: part/templates/part/detail.html:554
msgid "Create BOM Item"
msgstr ""
-#: part/templates/part/detail.html:589
+#: part/templates/part/detail.html:699
msgid "Add Test Result Template"
msgstr ""
-#: part/templates/part/detail.html:607
+#: part/templates/part/detail.html:716
msgid "Edit Test Result Template"
msgstr ""
-#: part/templates/part/detail.html:619
+#: part/templates/part/detail.html:728
msgid "Delete Test Result Template"
msgstr ""
-#: part/templates/part/detail.html:670
+#: part/templates/part/detail.html:784
msgid "Edit Part Notes"
msgstr ""
-#: part/templates/part/detail.html:903
+#: part/templates/part/detail.html:936
#, python-format
msgid "Purchase Unit Price - %(currency)s"
msgstr ""
-#: part/templates/part/detail.html:915
+#: part/templates/part/detail.html:948
#, python-format
msgid "Unit Price-Cost Difference - %(currency)s"
msgstr ""
-#: part/templates/part/detail.html:927
+#: part/templates/part/detail.html:960
#, python-format
msgid "Supplier Unit Cost - %(currency)s"
msgstr ""
-#: part/templates/part/detail.html:1016
+#: part/templates/part/detail.html:1049
#, python-format
msgid "Unit Price - %(currency)s"
msgstr ""
@@ -4701,19 +4826,19 @@ msgstr ""
msgid "Import Parts from File"
msgstr ""
-#: part/templates/part/navbar.html:24
+#: part/templates/part/navbar.html:30
msgid "Variants"
msgstr ""
-#: part/templates/part/navbar.html:51 part/templates/part/navbar.html:54
+#: part/templates/part/navbar.html:59 part/templates/part/navbar.html:62
msgid "Used In"
msgstr ""
-#: part/templates/part/navbar.html:61
+#: part/templates/part/navbar.html:70
msgid "Prices"
msgstr ""
-#: part/templates/part/navbar.html:90
+#: part/templates/part/navbar.html:102
msgid "Test Templates"
msgstr ""
@@ -4721,195 +4846,204 @@ msgstr ""
msgid "Part List"
msgstr ""
-#: part/templates/part/part_base.html:30
+#: part/templates/part/part_base.html:35
msgid "Part is a template part (variants can be made from this part)"
msgstr ""
-#: part/templates/part/part_base.html:33
+#: part/templates/part/part_base.html:38
msgid "Part can be assembled from other parts"
msgstr ""
-#: part/templates/part/part_base.html:36
+#: part/templates/part/part_base.html:41
msgid "Part can be used in assemblies"
msgstr ""
-#: part/templates/part/part_base.html:39
+#: part/templates/part/part_base.html:44
msgid "Part stock is tracked by serial number"
msgstr ""
-#: part/templates/part/part_base.html:42
+#: part/templates/part/part_base.html:47
msgid "Part can be purchased from external suppliers"
msgstr ""
-#: part/templates/part/part_base.html:45
+#: part/templates/part/part_base.html:50
msgid "Part can be sold to customers"
msgstr ""
-#: part/templates/part/part_base.html:52 part/templates/part/part_base.html:60
+#: part/templates/part/part_base.html:57 part/templates/part/part_base.html:65
msgid "Part is virtual (not a physical part)"
msgstr ""
-#: part/templates/part/part_base.html:53 templates/js/translated/company.js:454
-#: templates/js/translated/company.js:704 templates/js/translated/part.js:304
-#: templates/js/translated/part.js:381
+#: part/templates/part/part_base.html:58 templates/js/translated/company.js:503
+#: templates/js/translated/company.js:759 templates/js/translated/part.js:432
+#: templates/js/translated/part.js:509
msgid "Inactive"
msgstr ""
-#: part/templates/part/part_base.html:68
+#: part/templates/part/part_base.html:73
msgid "Star this part"
msgstr ""
-#: part/templates/part/part_base.html:75
+#: part/templates/part/part_base.html:80
#: stock/templates/stock/item_base.html:75
#: stock/templates/stock/location.html:51
msgid "Barcode actions"
msgstr ""
-#: part/templates/part/part_base.html:77
+#: part/templates/part/part_base.html:82
#: stock/templates/stock/item_base.html:77
#: stock/templates/stock/location.html:53 templates/qr_button.html:1
msgid "Show QR Code"
msgstr ""
-#: part/templates/part/part_base.html:78
+#: part/templates/part/part_base.html:83
#: stock/templates/stock/item_base.html:93
#: stock/templates/stock/location.html:54
msgid "Print Label"
msgstr ""
-#: part/templates/part/part_base.html:83
+#: part/templates/part/part_base.html:89
msgid "Show pricing information"
msgstr ""
-#: part/templates/part/part_base.html:88
+#: part/templates/part/part_base.html:95
#: stock/templates/stock/item_base.html:142
#: stock/templates/stock/location.html:62
msgid "Stock actions"
msgstr ""
-#: part/templates/part/part_base.html:95
+#: part/templates/part/part_base.html:102
msgid "Count part stock"
msgstr ""
-#: part/templates/part/part_base.html:101
+#: part/templates/part/part_base.html:108
msgid "Transfer part stock"
msgstr ""
-#: part/templates/part/part_base.html:118
+#: part/templates/part/part_base.html:125
msgid "Part actions"
msgstr ""
-#: part/templates/part/part_base.html:121
+#: part/templates/part/part_base.html:128
msgid "Duplicate part"
msgstr ""
-#: part/templates/part/part_base.html:124
+#: part/templates/part/part_base.html:131
msgid "Edit part"
msgstr ""
-#: part/templates/part/part_base.html:127
+#: part/templates/part/part_base.html:134
msgid "Delete part"
msgstr ""
-#: part/templates/part/part_base.html:139
+#: part/templates/part/part_base.html:146
#, python-format
msgid "This part is a variant of %(link)s"
msgstr ""
-#: part/templates/part/part_base.html:154
-#: templates/js/translated/table_filters.js:153
+#: part/templates/part/part_base.html:161
+#: templates/js/translated/table_filters.js:166
msgid "In Stock"
msgstr ""
-#: part/templates/part/part_base.html:167 templates/InvenTree/index.html:186
+#: part/templates/part/part_base.html:174 templates/InvenTree/index.html:186
msgid "Required for Build Orders"
msgstr ""
-#: part/templates/part/part_base.html:174
+#: part/templates/part/part_base.html:181
msgid "Required for Sales Orders"
msgstr ""
-#: part/templates/part/part_base.html:181
+#: part/templates/part/part_base.html:188
msgid "Allocated to Orders"
msgstr ""
-#: part/templates/part/part_base.html:196 templates/js/translated/bom.js:336
+#: part/templates/part/part_base.html:203 templates/js/translated/bom.js:352
msgid "Can Build"
msgstr ""
-#: part/templates/part/part_base.html:202 templates/js/translated/part.js:633
-#: templates/js/translated/part.js:806
+#: part/templates/part/part_base.html:209 templates/js/translated/part.js:765
+#: templates/js/translated/part.js:953
msgid "Building"
msgstr ""
-#: part/templates/part/part_base.html:275
+#: part/templates/part/part_base.html:223
+#: part/templates/part/part_base.html:524
+#: part/templates/part/part_base.html:550
+msgid "Show Part Details"
+msgstr ""
+
+#: part/templates/part/part_base.html:283
msgid "Latest Serial Number"
msgstr ""
-#: part/templates/part/part_base.html:383 part/templates/part/prices.html:125
+#: part/templates/part/part_base.html:396 part/templates/part/prices.html:144
msgid "Calculate"
msgstr ""
-#: part/templates/part/part_base.html:426
+#: part/templates/part/part_base.html:439
msgid "No matching images found"
msgstr ""
-#: part/templates/part/part_base.html:506
-#: part/templates/part/part_base.html:531
+#: part/templates/part/part_base.html:519
+#: part/templates/part/part_base.html:544
msgid "Hide Part Details"
msgstr ""
-#: part/templates/part/part_base.html:511
-#: part/templates/part/part_base.html:537
-msgid "Show Part Details"
-msgstr ""
-
#: part/templates/part/part_pricing.html:22 part/templates/part/prices.html:21
msgid "Supplier Pricing"
msgstr ""
#: part/templates/part/part_pricing.html:26
#: part/templates/part/part_pricing.html:52
-#: part/templates/part/part_pricing.html:85
-#: part/templates/part/part_pricing.html:100 part/templates/part/prices.html:25
-#: part/templates/part/prices.html:52 part/templates/part/prices.html:84
-#: part/templates/part/prices.html:101
+#: part/templates/part/part_pricing.html:100
+#: part/templates/part/part_pricing.html:115 part/templates/part/prices.html:25
+#: part/templates/part/prices.html:52 part/templates/part/prices.html:103
+#: part/templates/part/prices.html:120
msgid "Unit Cost"
msgstr ""
#: part/templates/part/part_pricing.html:32
#: part/templates/part/part_pricing.html:58
-#: part/templates/part/part_pricing.html:89
-#: part/templates/part/part_pricing.html:104 part/templates/part/prices.html:32
-#: part/templates/part/prices.html:59 part/templates/part/prices.html:89
-#: part/templates/part/prices.html:106
+#: part/templates/part/part_pricing.html:104
+#: part/templates/part/part_pricing.html:119 part/templates/part/prices.html:32
+#: part/templates/part/prices.html:59 part/templates/part/prices.html:108
+#: part/templates/part/prices.html:125
msgid "Total Cost"
msgstr ""
#: part/templates/part/part_pricing.html:40 part/templates/part/prices.html:40
-#: templates/js/translated/bom.js:291
+#: templates/js/translated/bom.js:307
msgid "No supplier pricing available"
msgstr ""
#: part/templates/part/part_pricing.html:48 part/templates/part/prices.html:49
-#: part/templates/part/prices.html:225
+#: part/templates/part/prices.html:243
msgid "BOM Pricing"
msgstr ""
-#: part/templates/part/part_pricing.html:66 part/templates/part/prices.html:67
+#: part/templates/part/part_pricing.html:65 part/templates/part/prices.html:69
+msgid "Unit Purchase Price"
+msgstr ""
+
+#: part/templates/part/part_pricing.html:71 part/templates/part/prices.html:76
+msgid "Total Purchase Price"
+msgstr ""
+
+#: part/templates/part/part_pricing.html:81 part/templates/part/prices.html:86
msgid "Note: BOM pricing is incomplete for this part"
msgstr ""
-#: part/templates/part/part_pricing.html:73 part/templates/part/prices.html:74
+#: part/templates/part/part_pricing.html:88 part/templates/part/prices.html:93
msgid "No BOM pricing available"
msgstr ""
-#: part/templates/part/part_pricing.html:82 part/templates/part/prices.html:83
+#: part/templates/part/part_pricing.html:97 part/templates/part/prices.html:102
msgid "Internal Price"
msgstr ""
-#: part/templates/part/part_pricing.html:113
-#: part/templates/part/prices.html:115
+#: part/templates/part/part_pricing.html:128
+#: part/templates/part/prices.html:134
msgid "No pricing information is available for this part."
msgstr ""
@@ -4919,7 +5053,7 @@ msgstr ""
#: part/templates/part/partial_delete.html:7
#, python-format
-msgid "Are you sure you want to delete part '%(full_name)s'?"
+msgid "Are you sure you want to delete part '%(full_name)s'?"
msgstr ""
#: part/templates/part/partial_delete.html:12
@@ -4963,53 +5097,53 @@ msgstr ""
msgid "Show BOM cost"
msgstr ""
-#: part/templates/part/prices.html:98
+#: part/templates/part/prices.html:117
msgid "Show sale cost"
msgstr ""
-#: part/templates/part/prices.html:99
+#: part/templates/part/prices.html:118
msgid "Show sale price"
msgstr ""
-#: part/templates/part/prices.html:121
+#: part/templates/part/prices.html:140
msgid "Calculation parameters"
msgstr ""
-#: part/templates/part/prices.html:136 templates/js/translated/bom.js:285
+#: part/templates/part/prices.html:155 templates/js/translated/bom.js:301
msgid "Supplier Cost"
msgstr ""
-#: part/templates/part/prices.html:137 part/templates/part/prices.html:158
-#: part/templates/part/prices.html:183 part/templates/part/prices.html:213
-#: part/templates/part/prices.html:239 part/templates/part/prices.html:267
+#: part/templates/part/prices.html:156 part/templates/part/prices.html:177
+#: part/templates/part/prices.html:201 part/templates/part/prices.html:231
+#: part/templates/part/prices.html:257 part/templates/part/prices.html:285
msgid "Jump to overview"
msgstr ""
-#: part/templates/part/prices.html:162
+#: part/templates/part/prices.html:181
msgid "Stock Pricing"
msgstr ""
-#: part/templates/part/prices.html:172
+#: part/templates/part/prices.html:190
msgid "No stock pricing history is available for this part."
msgstr ""
-#: part/templates/part/prices.html:182
+#: part/templates/part/prices.html:200
msgid "Internal Cost"
msgstr ""
-#: part/templates/part/prices.html:197 part/views.py:1793
+#: part/templates/part/prices.html:215 part/views.py:1801
msgid "Add Internal Price Break"
msgstr ""
-#: part/templates/part/prices.html:212
+#: part/templates/part/prices.html:230
msgid "BOM Cost"
msgstr ""
-#: part/templates/part/prices.html:238
+#: part/templates/part/prices.html:256
msgid "Sale Cost"
msgstr ""
-#: part/templates/part/prices.html:278
+#: part/templates/part/prices.html:296
msgid "No sale pice history available for this part."
msgstr ""
@@ -5017,8 +5151,8 @@ msgstr ""
msgid "Set category for the following parts"
msgstr ""
-#: part/templates/part/stock_count.html:7 templates/js/translated/bom.js:259
-#: templates/js/translated/part.js:623 templates/js/translated/part.js:810
+#: part/templates/part/stock_count.html:7 templates/js/translated/bom.js:278
+#: templates/js/translated/part.js:755 templates/js/translated/part.js:957
msgid "No Stock"
msgstr ""
@@ -5032,10 +5166,10 @@ msgstr ""
#: part/templates/part/variant_part.html:10
#, python-format
-msgid "Create a new variant of template '%(full_name)s'."
+msgid "Create a new variant of template '%(full_name)s'."
msgstr ""
-#: part/templatetags/inventree_extras.py:105
+#: part/templatetags/inventree_extras.py:106
msgid "Unknown database"
msgstr ""
@@ -5116,51 +5250,51 @@ msgstr ""
msgid "Part Pricing"
msgstr ""
-#: part/views.py:1429
+#: part/views.py:1437
msgid "Create Part Parameter Template"
msgstr ""
-#: part/views.py:1439
+#: part/views.py:1447
msgid "Edit Part Parameter Template"
msgstr ""
-#: part/views.py:1446
+#: part/views.py:1454
msgid "Delete Part Parameter Template"
msgstr ""
-#: part/views.py:1494 templates/js/translated/part.js:179
+#: part/views.py:1502 templates/js/translated/part.js:303
msgid "Edit Part Category"
msgstr ""
-#: part/views.py:1532
+#: part/views.py:1540
msgid "Delete Part Category"
msgstr ""
-#: part/views.py:1538
+#: part/views.py:1546
msgid "Part category was deleted"
msgstr ""
-#: part/views.py:1547
+#: part/views.py:1555
msgid "Create Category Parameter Template"
msgstr ""
-#: part/views.py:1648
+#: part/views.py:1656
msgid "Edit Category Parameter Template"
msgstr ""
-#: part/views.py:1704
+#: part/views.py:1712
msgid "Delete Category Parameter Template"
msgstr ""
-#: part/views.py:1726
+#: part/views.py:1734
msgid "Added new price break"
msgstr ""
-#: part/views.py:1802
+#: part/views.py:1810
msgid "Edit Internal Price Break"
msgstr ""
-#: part/views.py:1810
+#: part/views.py:1818
msgid "Delete Internal Price Break"
msgstr ""
@@ -5266,17 +5400,17 @@ msgid "Test Results"
msgstr ""
#: report/templates/report/inventree_test_report_base.html:88
-#: stock/models.py:1796
+#: stock/models.py:1807
msgid "Test"
msgstr ""
#: report/templates/report/inventree_test_report_base.html:89
-#: stock/models.py:1802
+#: stock/models.py:1813
msgid "Result"
msgstr ""
#: report/templates/report/inventree_test_report_base.html:92
-#: templates/js/translated/order.js:279 templates/js/translated/stock.js:1382
+#: templates/js/translated/order.js:353 templates/js/translated/stock.js:1523
msgid "Date"
msgstr ""
@@ -5288,51 +5422,51 @@ msgstr ""
msgid "Fail"
msgstr ""
-#: stock/api.py:145
+#: stock/api.py:146
msgid "Request must contain list of stock items"
msgstr ""
-#: stock/api.py:153
+#: stock/api.py:154
msgid "Improperly formatted data"
msgstr ""
-#: stock/api.py:161
+#: stock/api.py:162
msgid "Each entry must contain a valid integer primary-key"
msgstr ""
-#: stock/api.py:167
+#: stock/api.py:168
msgid "Primary key does not match valid stock item"
msgstr ""
-#: stock/api.py:177
+#: stock/api.py:178
msgid "Invalid quantity value"
msgstr ""
-#: stock/api.py:182
+#: stock/api.py:183
msgid "Quantity must not be less than zero"
msgstr ""
-#: stock/api.py:210
+#: stock/api.py:211
#, python-brace-format
msgid "Updated stock for {n} items"
msgstr ""
-#: stock/api.py:246 stock/api.py:279
+#: stock/api.py:247 stock/api.py:280
msgid "Specified quantity exceeds stock quantity"
msgstr ""
-#: stock/api.py:269
+#: stock/api.py:270
msgid "Valid location must be specified"
msgstr ""
-#: stock/api.py:289
+#: stock/api.py:290
#, python-brace-format
msgid "Moved {n} parts to {loc}"
msgstr ""
-#: stock/forms.py:79 stock/forms.py:307 stock/models.py:550
+#: stock/forms.py:79 stock/forms.py:307 stock/models.py:556
#: stock/templates/stock/item_base.html:395
-#: templates/js/translated/stock.js:1025
+#: templates/js/translated/stock.js:967
msgid "Expiry Date"
msgstr ""
@@ -5384,258 +5518,266 @@ msgstr ""
msgid "Confirm removal of installed stock items"
msgstr ""
-#: stock/models.py:57 stock/models.py:587
+#: stock/models.py:57 stock/models.py:593
msgid "Owner"
msgstr ""
-#: stock/models.py:58 stock/models.py:588
+#: stock/models.py:58 stock/models.py:594
msgid "Select Owner"
msgstr ""
-#: stock/models.py:316
+#: stock/models.py:322
msgid "StockItem with this serial number already exists"
msgstr ""
-#: stock/models.py:352
+#: stock/models.py:358
#, python-brace-format
msgid "Part type ('{pf}') must be {pe}"
msgstr ""
-#: stock/models.py:362 stock/models.py:371
+#: stock/models.py:368 stock/models.py:377
msgid "Quantity must be 1 for item with a serial number"
msgstr ""
-#: stock/models.py:363
+#: stock/models.py:369
msgid "Serial number cannot be set if quantity greater than 1"
msgstr ""
-#: stock/models.py:385
+#: stock/models.py:391
msgid "Item cannot belong to itself"
msgstr ""
-#: stock/models.py:391
+#: stock/models.py:397
msgid "Item must have a build reference if is_building=True"
msgstr ""
-#: stock/models.py:398
+#: stock/models.py:404
msgid "Build reference does not point to the same part object"
msgstr ""
-#: stock/models.py:440
+#: stock/models.py:446
msgid "Parent Stock Item"
msgstr ""
-#: stock/models.py:449
+#: stock/models.py:455
msgid "Base part"
msgstr ""
-#: stock/models.py:458
+#: stock/models.py:464
msgid "Select a matching supplier part for this stock item"
msgstr ""
-#: stock/models.py:463 stock/templates/stock/stock_app_base.html:8
+#: stock/models.py:469 stock/templates/stock/stock_app_base.html:8
msgid "Stock Location"
msgstr ""
-#: stock/models.py:466
+#: stock/models.py:472
msgid "Where is this stock item located?"
msgstr ""
-#: stock/models.py:473
+#: stock/models.py:479
msgid "Packaging this stock item is stored in"
msgstr ""
-#: stock/models.py:478 stock/templates/stock/item_base.html:284
+#: stock/models.py:484 stock/templates/stock/item_base.html:284
msgid "Installed In"
msgstr ""
-#: stock/models.py:481
+#: stock/models.py:487
msgid "Is this item installed in another item?"
msgstr ""
-#: stock/models.py:497
+#: stock/models.py:503
msgid "Serial number for this item"
msgstr ""
-#: stock/models.py:509
+#: stock/models.py:515
msgid "Batch code for this stock item"
msgstr ""
-#: stock/models.py:513
+#: stock/models.py:519
msgid "Stock Quantity"
msgstr ""
-#: stock/models.py:522
+#: stock/models.py:528
msgid "Source Build"
msgstr ""
-#: stock/models.py:524
+#: stock/models.py:530
msgid "Build for this stock item"
msgstr ""
-#: stock/models.py:535
+#: stock/models.py:541
msgid "Source Purchase Order"
msgstr ""
-#: stock/models.py:538
+#: stock/models.py:544
msgid "Purchase order for this stock item"
msgstr ""
-#: stock/models.py:544
+#: stock/models.py:550
msgid "Destination Sales Order"
msgstr ""
-#: stock/models.py:551
+#: stock/models.py:557
msgid "Expiry date for stock item. Stock will be considered expired after this date"
msgstr ""
-#: stock/models.py:564
+#: stock/models.py:570
msgid "Delete on deplete"
msgstr ""
-#: stock/models.py:564
+#: stock/models.py:570
msgid "Delete this Stock Item when stock is depleted"
msgstr ""
-#: stock/models.py:574 stock/templates/stock/item.html:98
+#: stock/models.py:580 stock/templates/stock/item.html:99
#: stock/templates/stock/navbar.html:54
msgid "Stock Item Notes"
msgstr ""
-#: stock/models.py:583
+#: stock/models.py:589
msgid "Single unit purchase price at time of purchase"
msgstr ""
-#: stock/models.py:1051
-msgid "Part is not set as trackable"
+#: stock/models.py:599
+msgid "Scheduled for deletion"
msgstr ""
-#: stock/models.py:1057
-msgid "Quantity must be integer"
+#: stock/models.py:600
+msgid "This StockItem will be deleted by the background worker"
msgstr ""
#: stock/models.py:1063
+msgid "Part is not set as trackable"
+msgstr ""
+
+#: stock/models.py:1069
+msgid "Quantity must be integer"
+msgstr ""
+
+#: stock/models.py:1075
#, python-brace-format
msgid "Quantity must not exceed available stock quantity ({n})"
msgstr ""
-#: stock/models.py:1066
+#: stock/models.py:1078
msgid "Serial numbers must be a list of integers"
msgstr ""
-#: stock/models.py:1069
+#: stock/models.py:1081
msgid "Quantity does not match serial numbers"
msgstr ""
-#: stock/models.py:1076
+#: stock/models.py:1088
#, python-brace-format
msgid "Serial numbers already exist: {exists}"
msgstr ""
-#: stock/models.py:1234
+#: stock/models.py:1246
msgid "StockItem cannot be moved as it is not in stock"
msgstr ""
-#: stock/models.py:1716
+#: stock/models.py:1727
msgid "Entry notes"
msgstr ""
-#: stock/models.py:1773
+#: stock/models.py:1784
msgid "Value must be provided for this test"
msgstr ""
-#: stock/models.py:1779
+#: stock/models.py:1790
msgid "Attachment must be uploaded for this test"
msgstr ""
-#: stock/models.py:1797
+#: stock/models.py:1808
msgid "Test name"
msgstr ""
-#: stock/models.py:1803 templates/js/translated/table_filters.js:231
+#: stock/models.py:1814 templates/js/translated/table_filters.js:244
msgid "Test result"
msgstr ""
-#: stock/models.py:1809
+#: stock/models.py:1820
msgid "Test output value"
msgstr ""
-#: stock/models.py:1816
+#: stock/models.py:1827
msgid "Test result attachment"
msgstr ""
-#: stock/models.py:1822
+#: stock/models.py:1833
msgid "Test notes"
msgstr ""
-#: stock/templates/stock/item.html:16
+#: stock/templates/stock/item.html:17
msgid "Stock Tracking Information"
msgstr ""
-#: stock/templates/stock/item.html:29
+#: stock/templates/stock/item.html:30
msgid "New Entry"
msgstr ""
-#: stock/templates/stock/item.html:42
+#: stock/templates/stock/item.html:43
msgid "Child Stock Items"
msgstr ""
-#: stock/templates/stock/item.html:49
+#: stock/templates/stock/item.html:50
msgid "This stock item does not have any child items"
msgstr ""
-#: stock/templates/stock/item.html:57 stock/templates/stock/navbar.html:19
+#: stock/templates/stock/item.html:58 stock/templates/stock/navbar.html:19
#: stock/templates/stock/navbar.html:22
msgid "Test Data"
msgstr ""
-#: stock/templates/stock/item.html:65
+#: stock/templates/stock/item.html:66
msgid "Delete Test Data"
msgstr ""
-#: stock/templates/stock/item.html:69
+#: stock/templates/stock/item.html:70
msgid "Add Test Data"
msgstr ""
-#: stock/templates/stock/item.html:72 stock/templates/stock/item_base.html:95
+#: stock/templates/stock/item.html:73 stock/templates/stock/item_base.html:95
msgid "Test Report"
msgstr ""
-#: stock/templates/stock/item.html:119 stock/templates/stock/navbar.html:27
+#: stock/templates/stock/item.html:120 stock/templates/stock/navbar.html:27
msgid "Installed Stock Items"
msgstr ""
-#: stock/templates/stock/item.html:124 stock/views.py:534
+#: stock/templates/stock/item.html:125 stock/views.py:534
msgid "Install Stock Item"
msgstr ""
-#: stock/templates/stock/item.html:299 stock/templates/stock/item.html:324
+#: stock/templates/stock/item.html:301 stock/templates/stock/item.html:326
msgid "Add Test Result"
msgstr ""
-#: stock/templates/stock/item.html:344
+#: stock/templates/stock/item.html:346
msgid "Edit Test Result"
msgstr ""
-#: stock/templates/stock/item.html:358
+#: stock/templates/stock/item.html:360
msgid "Delete Test Result"
msgstr ""
#: stock/templates/stock/item_base.html:33
#: stock/templates/stock/item_base.html:399
-#: templates/js/translated/table_filters.js:212
+#: templates/js/translated/table_filters.js:225
msgid "Expired"
msgstr ""
#: stock/templates/stock/item_base.html:43
#: stock/templates/stock/item_base.html:401
-#: templates/js/translated/table_filters.js:218
+#: templates/js/translated/table_filters.js:231
msgid "Stale"
msgstr ""
#: stock/templates/stock/item_base.html:80
-#: templates/js/translated/barcode.js:309
-#: templates/js/translated/barcode.js:314
+#: templates/js/translated/barcode.js:331
+#: templates/js/translated/barcode.js:336
msgid "Unlink Barcode"
msgstr ""
@@ -5768,7 +5910,7 @@ msgid "next page"
msgstr ""
#: stock/templates/stock/item_base.html:303
-#: templates/js/translated/build.js:628
+#: templates/js/translated/build.js:651
msgid "No location set"
msgstr ""
@@ -5795,7 +5937,7 @@ msgid "This StockItem expires on %(item.expiry_date)s"
msgstr ""
#: stock/templates/stock/item_base.html:408
-#: templates/js/translated/stock.js:1032
+#: templates/js/translated/stock.js:980
msgid "Last Updated"
msgstr ""
@@ -5825,7 +5967,7 @@ msgstr ""
#: stock/templates/stock/item_delete.html:12
#, python-format
-msgid "This will remove %(qty)s units of %(full_name)s from stock."
+msgid "This will remove %(qty)s units of %(full_name)s from stock."
msgstr ""
#: stock/templates/stock/item_install.html:8
@@ -5975,7 +6117,7 @@ msgstr ""
#: stock/templates/stock/stockitem_convert.html:8
#, python-format
-msgid "This stock item is current an instance of %(part)s"
+msgid "This stock item is current an instance of %(part)s"
msgstr ""
#: stock/templates/stock/stockitem_convert.html:9
@@ -6039,7 +6181,7 @@ msgstr ""
msgid "Uninstall Stock Items"
msgstr ""
-#: stock/views.py:780 templates/js/translated/stock.js:282
+#: stock/views.py:780 templates/js/translated/stock.js:353
msgid "Confirm stock adjustment"
msgstr ""
@@ -6059,7 +6201,7 @@ msgstr ""
msgid "Serialize Stock"
msgstr ""
-#: stock/views.py:1143 templates/js/translated/build.js:365
+#: stock/views.py:1143 templates/js/translated/build.js:392
msgid "Create new Stock Item"
msgstr ""
@@ -6171,11 +6313,11 @@ msgstr ""
msgid "Enter a search query"
msgstr ""
-#: templates/InvenTree/search.html:268 templates/js/translated/stock.js:629
+#: templates/InvenTree/search.html:268 templates/js/translated/stock.js:699
msgid "Shipped to customer"
msgstr ""
-#: templates/InvenTree/search.html:271 templates/js/translated/stock.js:639
+#: templates/InvenTree/search.html:271 templates/js/translated/stock.js:709
msgid "No stock location set"
msgstr ""
@@ -6240,7 +6382,7 @@ msgstr ""
#: templates/InvenTree/settings/navbar.html:27
#: templates/InvenTree/settings/navbar.html:29
-#: templates/js/translated/tables.js:351 templates/search_form.html:6
+#: templates/js/translated/tables.js:366 templates/search_form.html:6
#: templates/search_form.html:8
msgid "Search"
msgstr ""
@@ -6257,7 +6399,7 @@ msgstr ""
#: templates/InvenTree/settings/navbar.html:46
#: templates/InvenTree/settings/navbar.html:48
-#: templates/InvenTree/settings/settings.html:8 templates/navbar.html:84
+#: templates/InvenTree/settings/settings.html:8 templates/navbar.html:94
msgid "Settings"
msgstr ""
@@ -6332,16 +6474,16 @@ msgid "No category parameter templates found"
msgstr ""
#: templates/InvenTree/settings/settings.html:174
-#: templates/InvenTree/settings/settings.html:271
+#: templates/InvenTree/settings/settings.html:273
msgid "Edit Template"
msgstr ""
#: templates/InvenTree/settings/settings.html:175
-#: templates/InvenTree/settings/settings.html:272
+#: templates/InvenTree/settings/settings.html:274
msgid "Delete Template"
msgstr ""
-#: templates/InvenTree/settings/settings.html:251
+#: templates/InvenTree/settings/settings.html:253
msgid "No part parameter templates found"
msgstr ""
@@ -6358,6 +6500,7 @@ msgid "Account Settings"
msgstr ""
#: templates/InvenTree/settings/user.html:15
+#: templates/js/translated/helpers.js:26
msgid "Edit"
msgstr ""
@@ -6436,65 +6579,69 @@ msgstr ""
msgid "InvenTree Version"
msgstr ""
-#: templates/about.html:26
+#: templates/about.html:27
+msgid "Development Version"
+msgstr ""
+
+#: templates/about.html:30
msgid "Up to Date"
msgstr ""
-#: templates/about.html:28
+#: templates/about.html:32
msgid "Update Available"
msgstr ""
-#: templates/about.html:34
-msgid "API Version"
-msgstr ""
-
-#: templates/about.html:39
-msgid "Python Version"
-msgstr ""
-
-#: templates/about.html:44
-msgid "Django Version"
-msgstr ""
-
-#: templates/about.html:51
+#: templates/about.html:42
msgid "Commit Hash"
msgstr ""
-#: templates/about.html:58
+#: templates/about.html:49
msgid "Commit Date"
msgstr ""
-#: templates/about.html:63
+#: templates/about.html:55
msgid "InvenTree Documentation"
msgstr ""
-#: templates/about.html:68
+#: templates/about.html:60
+msgid "API Version"
+msgstr ""
+
+#: templates/about.html:65
+msgid "Python Version"
+msgstr ""
+
+#: templates/about.html:70
+msgid "Django Version"
+msgstr ""
+
+#: templates/about.html:75
msgid "View Code on GitHub"
msgstr ""
-#: templates/about.html:73
+#: templates/about.html:80
msgid "Credits"
msgstr ""
-#: templates/about.html:78
+#: templates/about.html:85
msgid "Mobile App"
msgstr ""
-#: templates/about.html:83
+#: templates/about.html:90
msgid "Submit Bug Report"
msgstr ""
-#: templates/about.html:90 templates/clip.html:4
+#: templates/about.html:97 templates/clip.html:4
msgid "copy to clipboard"
msgstr ""
-#: templates/about.html:90
+#: templates/about.html:97
msgid "copy version information"
msgstr ""
-#: templates/about.html:100 templates/js/translated/modals.js:33
-#: templates/js/translated/modals.js:567 templates/js/translated/modals.js:661
-#: templates/js/translated/modals.js:957 templates/modals.html:29
+#: templates/about.html:107 templates/js/translated/modals.js:50
+#: templates/js/translated/modals.js:584 templates/js/translated/modals.js:678
+#: templates/js/translated/modals.js:971 templates/modals.html:29
#: templates/modals.html:54
msgid "Close"
msgstr ""
@@ -6515,1358 +6662,1390 @@ msgstr ""
msgid "Remote image must not exceed maximum allowable file size"
msgstr ""
-#: templates/js/report.js:47 templates/js/translated/report.js:47
+#: templates/js/report.js:47 templates/js/translated/report.js:67
msgid "items selected"
msgstr ""
-#: templates/js/report.js:55 templates/js/translated/report.js:55
+#: templates/js/report.js:55 templates/js/translated/report.js:75
msgid "Select Report Template"
msgstr ""
-#: templates/js/report.js:70 templates/js/translated/report.js:70
+#: templates/js/report.js:70 templates/js/translated/report.js:90
msgid "Select Test Report Template"
msgstr ""
-#: templates/js/report.js:98 templates/js/translated/label.js:10
-#: templates/js/translated/report.js:98 templates/js/translated/stock.js:244
+#: templates/js/report.js:98 templates/js/translated/label.js:29
+#: templates/js/translated/report.js:118 templates/js/translated/stock.js:313
msgid "Select Stock Items"
msgstr ""
-#: templates/js/report.js:99 templates/js/translated/report.js:99
+#: templates/js/report.js:99 templates/js/translated/report.js:119
msgid "Stock item(s) must be selected before printing reports"
msgstr ""
#: templates/js/report.js:116 templates/js/report.js:169
#: templates/js/report.js:223 templates/js/report.js:277
-#: templates/js/report.js:331 templates/js/translated/report.js:116
-#: templates/js/translated/report.js:169 templates/js/translated/report.js:223
-#: templates/js/translated/report.js:277 templates/js/translated/report.js:331
+#: templates/js/report.js:331 templates/js/translated/report.js:136
+#: templates/js/translated/report.js:189 templates/js/translated/report.js:243
+#: templates/js/translated/report.js:297 templates/js/translated/report.js:351
msgid "No Reports Found"
msgstr ""
-#: templates/js/report.js:117 templates/js/translated/report.js:117
+#: templates/js/report.js:117 templates/js/translated/report.js:137
msgid "No report templates found which match selected stock item(s)"
msgstr ""
-#: templates/js/report.js:152 templates/js/translated/report.js:152
+#: templates/js/report.js:152 templates/js/translated/report.js:172
msgid "Select Builds"
msgstr ""
-#: templates/js/report.js:153 templates/js/translated/report.js:153
+#: templates/js/report.js:153 templates/js/translated/report.js:173
msgid "Build(s) must be selected before printing reports"
msgstr ""
-#: templates/js/report.js:170 templates/js/translated/report.js:170
+#: templates/js/report.js:170 templates/js/translated/report.js:190
msgid "No report templates found which match selected build(s)"
msgstr ""
-#: templates/js/report.js:205 templates/js/translated/label.js:115
-#: templates/js/translated/report.js:205
+#: templates/js/report.js:205 templates/js/translated/label.js:134
+#: templates/js/translated/report.js:225
msgid "Select Parts"
msgstr ""
-#: templates/js/report.js:206 templates/js/translated/report.js:206
+#: templates/js/report.js:206 templates/js/translated/report.js:226
msgid "Part(s) must be selected before printing reports"
msgstr ""
-#: templates/js/report.js:224 templates/js/translated/report.js:224
+#: templates/js/report.js:224 templates/js/translated/report.js:244
msgid "No report templates found which match selected part(s)"
msgstr ""
-#: templates/js/report.js:259 templates/js/translated/report.js:259
+#: templates/js/report.js:259 templates/js/translated/report.js:279
msgid "Select Purchase Orders"
msgstr ""
-#: templates/js/report.js:260 templates/js/translated/report.js:260
+#: templates/js/report.js:260 templates/js/translated/report.js:280
msgid "Purchase Order(s) must be selected before printing report"
msgstr ""
#: templates/js/report.js:278 templates/js/report.js:332
-#: templates/js/translated/report.js:278 templates/js/translated/report.js:332
+#: templates/js/translated/report.js:298 templates/js/translated/report.js:352
msgid "No report templates found which match selected orders"
msgstr ""
-#: templates/js/report.js:313 templates/js/translated/report.js:313
+#: templates/js/report.js:313 templates/js/translated/report.js:333
msgid "Select Sales Orders"
msgstr ""
-#: templates/js/report.js:314 templates/js/translated/report.js:314
+#: templates/js/report.js:314 templates/js/translated/report.js:334
msgid "Sales Order(s) must be selected before printing report"
msgstr ""
-#: templates/js/translated/api.js:161 templates/js/translated/modals.js:1027
+#: templates/js/translated/api.js:174 templates/js/translated/modals.js:1041
msgid "No Response"
msgstr ""
-#: templates/js/translated/api.js:162 templates/js/translated/modals.js:1028
+#: templates/js/translated/api.js:175 templates/js/translated/modals.js:1042
msgid "No response from the InvenTree server"
msgstr ""
-#: templates/js/translated/api.js:167
+#: templates/js/translated/api.js:181
msgid "Error 400: Bad request"
msgstr ""
-#: templates/js/translated/api.js:168
+#: templates/js/translated/api.js:182
msgid "API request returned error code 400"
msgstr ""
-#: templates/js/translated/api.js:171 templates/js/translated/modals.js:1037
+#: templates/js/translated/api.js:186 templates/js/translated/modals.js:1051
msgid "Error 401: Not Authenticated"
msgstr ""
-#: templates/js/translated/api.js:172 templates/js/translated/modals.js:1038
+#: templates/js/translated/api.js:187 templates/js/translated/modals.js:1052
msgid "Authentication credentials not supplied"
msgstr ""
-#: templates/js/translated/api.js:175 templates/js/translated/modals.js:1042
+#: templates/js/translated/api.js:191 templates/js/translated/modals.js:1056
msgid "Error 403: Permission Denied"
msgstr ""
-#: templates/js/translated/api.js:176 templates/js/translated/modals.js:1043
+#: templates/js/translated/api.js:192 templates/js/translated/modals.js:1057
msgid "You do not have the required permissions to access this function"
msgstr ""
-#: templates/js/translated/api.js:179 templates/js/translated/modals.js:1047
+#: templates/js/translated/api.js:196 templates/js/translated/modals.js:1061
msgid "Error 404: Resource Not Found"
msgstr ""
-#: templates/js/translated/api.js:180 templates/js/translated/modals.js:1048
+#: templates/js/translated/api.js:197 templates/js/translated/modals.js:1062
msgid "The requested resource could not be located on the server"
msgstr ""
-#: templates/js/translated/api.js:183 templates/js/translated/modals.js:1052
+#: templates/js/translated/api.js:201 templates/js/translated/modals.js:1066
msgid "Error 408: Timeout"
msgstr ""
-#: templates/js/translated/api.js:184 templates/js/translated/modals.js:1053
+#: templates/js/translated/api.js:202 templates/js/translated/modals.js:1067
msgid "Connection timeout while requesting data from server"
msgstr ""
-#: templates/js/translated/api.js:187
+#: templates/js/translated/api.js:205
msgid "Unhandled Error Code"
msgstr ""
-#: templates/js/translated/api.js:188
+#: templates/js/translated/api.js:206
msgid "Error code"
msgstr ""
-#: templates/js/translated/attachment.js:16
+#: templates/js/translated/attachment.js:27
msgid "No attachments found"
msgstr ""
-#: templates/js/translated/attachment.js:56
+#: templates/js/translated/attachment.js:91
msgid "Upload Date"
msgstr ""
-#: templates/js/translated/attachment.js:69
+#: templates/js/translated/attachment.js:104
msgid "Edit attachment"
msgstr ""
-#: templates/js/translated/attachment.js:76
+#: templates/js/translated/attachment.js:111
msgid "Delete attachment"
msgstr ""
-#: templates/js/translated/barcode.js:8
+#: templates/js/translated/barcode.js:30
msgid "Scan barcode data here using wedge scanner"
msgstr ""
-#: templates/js/translated/barcode.js:10
+#: templates/js/translated/barcode.js:32
msgid "Enter barcode data"
msgstr ""
-#: templates/js/translated/barcode.js:14
+#: templates/js/translated/barcode.js:36
msgid "Barcode"
msgstr ""
-#: templates/js/translated/barcode.js:32
+#: templates/js/translated/barcode.js:54
msgid "Enter optional notes for stock transfer"
msgstr ""
-#: templates/js/translated/barcode.js:33
+#: templates/js/translated/barcode.js:55
msgid "Enter notes"
msgstr ""
-#: templates/js/translated/barcode.js:71
+#: templates/js/translated/barcode.js:93
msgid "Server error"
msgstr ""
-#: templates/js/translated/barcode.js:92
+#: templates/js/translated/barcode.js:114
msgid "Unknown response from server"
msgstr ""
-#: templates/js/translated/barcode.js:119
-#: templates/js/translated/modals.js:1017
+#: templates/js/translated/barcode.js:141
+#: templates/js/translated/modals.js:1031
msgid "Invalid server response"
msgstr ""
-#: templates/js/translated/barcode.js:212
+#: templates/js/translated/barcode.js:234
msgid "Scan barcode data below"
msgstr ""
-#: templates/js/translated/barcode.js:270
+#: templates/js/translated/barcode.js:281 templates/navbar.html:65
+msgid "Scan Barcode"
+msgstr ""
+
+#: templates/js/translated/barcode.js:292
msgid "No URL in response"
msgstr ""
-#: templates/js/translated/barcode.js:288
+#: templates/js/translated/barcode.js:310
msgid "Link Barcode to Stock Item"
msgstr ""
-#: templates/js/translated/barcode.js:311
+#: templates/js/translated/barcode.js:333
msgid "This will remove the association between this stock item and the barcode"
msgstr ""
-#: templates/js/translated/barcode.js:317
+#: templates/js/translated/barcode.js:339
msgid "Unlink"
msgstr ""
-#: templates/js/translated/barcode.js:376 templates/js/translated/stock.js:220
+#: templates/js/translated/barcode.js:398 templates/js/translated/stock.js:289
msgid "Remove stock item"
msgstr ""
-#: templates/js/translated/barcode.js:418
+#: templates/js/translated/barcode.js:440
msgid "Check Stock Items into Location"
msgstr ""
-#: templates/js/translated/barcode.js:422
-#: templates/js/translated/barcode.js:547
+#: templates/js/translated/barcode.js:444
+#: templates/js/translated/barcode.js:571
msgid "Check In"
msgstr ""
-#: templates/js/translated/barcode.js:462
-#: templates/js/translated/barcode.js:586
+#: templates/js/translated/barcode.js:486
+#: templates/js/translated/barcode.js:610
msgid "Error transferring stock"
msgstr ""
-#: templates/js/translated/barcode.js:481
+#: templates/js/translated/barcode.js:505
msgid "Stock Item already scanned"
msgstr ""
-#: templates/js/translated/barcode.js:485
+#: templates/js/translated/barcode.js:509
msgid "Stock Item already in this location"
msgstr ""
-#: templates/js/translated/barcode.js:492
+#: templates/js/translated/barcode.js:516
msgid "Added stock item"
msgstr ""
-#: templates/js/translated/barcode.js:499
+#: templates/js/translated/barcode.js:523
msgid "Barcode does not match Stock Item"
msgstr ""
-#: templates/js/translated/barcode.js:542
+#: templates/js/translated/barcode.js:566
msgid "Check Into Location"
msgstr ""
-#: templates/js/translated/barcode.js:605
+#: templates/js/translated/barcode.js:629
msgid "Barcode does not match a valid location"
msgstr ""
-#: templates/js/translated/bom.js:195 templates/js/translated/build.js:1152
+#: templates/js/translated/bom.js:215 templates/js/translated/build.js:1169
msgid "Open subassembly"
msgstr ""
-#: templates/js/translated/bom.js:269
+#: templates/js/translated/bom.js:287
msgid "Purchase Price Range"
msgstr ""
-#: templates/js/translated/bom.js:277
+#: templates/js/translated/bom.js:294
msgid "Purchase Price Average"
msgstr ""
-#: templates/js/translated/bom.js:326 templates/js/translated/bom.js:412
+#: templates/js/translated/bom.js:342 templates/js/translated/bom.js:428
msgid "View BOM"
msgstr ""
-#: templates/js/translated/bom.js:386
+#: templates/js/translated/bom.js:402
msgid "Validate BOM Item"
msgstr ""
-#: templates/js/translated/bom.js:388
+#: templates/js/translated/bom.js:404
msgid "This line has been validated"
msgstr ""
-#: templates/js/translated/bom.js:390 templates/js/translated/bom.js:555
+#: templates/js/translated/bom.js:406 templates/js/translated/bom.js:569
msgid "Edit BOM Item"
msgstr ""
-#: templates/js/translated/bom.js:392 templates/js/translated/bom.js:539
+#: templates/js/translated/bom.js:408 templates/js/translated/bom.js:554
msgid "Delete BOM Item"
msgstr ""
-#: templates/js/translated/bom.js:483 templates/js/translated/build.js:458
-#: templates/js/translated/build.js:1250
+#: templates/js/translated/bom.js:499 templates/js/translated/build.js:483
+#: templates/js/translated/build.js:1267
msgid "No BOM items found"
msgstr ""
-#: templates/js/translated/build.js:42
+#: templates/js/translated/build.js:69
msgid "Edit Build Order"
msgstr ""
-#: templates/js/translated/build.js:68
+#: templates/js/translated/build.js:95
msgid "Create Build Order"
msgstr ""
-#: templates/js/translated/build.js:100
+#: templates/js/translated/build.js:127
msgid "Auto-allocate stock items to this output"
msgstr ""
-#: templates/js/translated/build.js:108
+#: templates/js/translated/build.js:135
msgid "Unallocate stock from build output"
msgstr ""
-#: templates/js/translated/build.js:118
+#: templates/js/translated/build.js:145
msgid "Complete build output"
msgstr ""
-#: templates/js/translated/build.js:127
+#: templates/js/translated/build.js:154
msgid "Delete build output"
msgstr ""
-#: templates/js/translated/build.js:222
+#: templates/js/translated/build.js:249
msgid "No build order allocations found"
msgstr ""
-#: templates/js/translated/build.js:260 templates/js/translated/order.js:471
+#: templates/js/translated/build.js:287 templates/js/translated/order.js:813
msgid "Location not specified"
msgstr ""
-#: templates/js/translated/build.js:364 templates/stock_table.html:20
+#: templates/js/translated/build.js:391 templates/stock_table.html:20
msgid "New Stock Item"
msgstr ""
-#: templates/js/translated/build.js:679
+#: templates/js/translated/build.js:702
msgid "Required Part"
msgstr ""
-#: templates/js/translated/build.js:700
+#: templates/js/translated/build.js:723
msgid "Quantity Per"
msgstr ""
-#: templates/js/translated/build.js:770 templates/js/translated/build.js:1214
+#: templates/js/translated/build.js:793 templates/js/translated/build.js:1231
#: templates/stock_table.html:59
msgid "Order stock"
msgstr ""
-#: templates/js/translated/build.js:823
+#: templates/js/translated/build.js:846
msgid "No builds matching query"
msgstr ""
-#: templates/js/translated/build.js:840 templates/js/translated/part.js:711
-#: templates/js/translated/part.js:956 templates/js/translated/stock.js:883
-#: templates/js/translated/stock.js:1336
+#: templates/js/translated/build.js:863 templates/js/translated/part.js:845
+#: templates/js/translated/part.js:1123 templates/js/translated/stock.js:783
+#: templates/js/translated/stock.js:1477
msgid "Select"
msgstr ""
-#: templates/js/translated/build.js:860
+#: templates/js/translated/build.js:883
msgid "Build order is overdue"
msgstr ""
-#: templates/js/translated/build.js:924 templates/js/translated/stock.js:1558
+#: templates/js/translated/build.js:944 templates/js/translated/stock.js:1696
msgid "No user information"
msgstr ""
-#: templates/js/translated/build.js:939
+#: templates/js/translated/build.js:956
msgid "No information"
msgstr ""
-#: templates/js/translated/build.js:989
+#: templates/js/translated/build.js:1007
msgid "No parts allocated for"
msgstr ""
-#: templates/js/translated/company.js:34
+#: templates/js/translated/company.js:65
msgid "Add Manufacturer"
msgstr ""
-#: templates/js/translated/company.js:47 templates/js/translated/company.js:136
+#: templates/js/translated/company.js:78 templates/js/translated/company.js:176
msgid "Add Manufacturer Part"
msgstr ""
-#: templates/js/translated/company.js:59
+#: templates/js/translated/company.js:99
msgid "Edit Manufacturer Part"
msgstr ""
-#: templates/js/translated/company.js:68
+#: templates/js/translated/company.js:108
msgid "Delete Manufacturer Part"
msgstr ""
-#: templates/js/translated/company.js:124 templates/js/translated/order.js:58
+#: templates/js/translated/company.js:164 templates/js/translated/order.js:86
msgid "Add Supplier"
msgstr ""
-#: templates/js/translated/company.js:152
+#: templates/js/translated/company.js:192
msgid "Add Supplier Part"
msgstr ""
-#: templates/js/translated/company.js:162
+#: templates/js/translated/company.js:207
msgid "Edit Supplier Part"
msgstr ""
-#: templates/js/translated/company.js:172
+#: templates/js/translated/company.js:217
msgid "Delete Supplier Part"
msgstr ""
-#: templates/js/translated/company.js:219
+#: templates/js/translated/company.js:264
msgid "Edit Company"
msgstr ""
-#: templates/js/translated/company.js:240
+#: templates/js/translated/company.js:285
msgid "Add new Company"
msgstr ""
-#: templates/js/translated/company.js:317
+#: templates/js/translated/company.js:362
msgid "Parts Supplied"
msgstr ""
-#: templates/js/translated/company.js:326
+#: templates/js/translated/company.js:371
msgid "Parts Manufactured"
msgstr ""
-#: templates/js/translated/company.js:339
+#: templates/js/translated/company.js:385
msgid "No company information found"
msgstr ""
-#: templates/js/translated/company.js:357
+#: templates/js/translated/company.js:404
msgid "The following manufacturer parts will be deleted"
msgstr ""
-#: templates/js/translated/company.js:374
+#: templates/js/translated/company.js:421
msgid "Delete Manufacturer Parts"
msgstr ""
-#: templates/js/translated/company.js:427
+#: templates/js/translated/company.js:475
msgid "No manufacturer parts found"
msgstr ""
-#: templates/js/translated/company.js:446
-#: templates/js/translated/company.js:696 templates/js/translated/part.js:288
-#: templates/js/translated/part.js:373
+#: templates/js/translated/company.js:495
+#: templates/js/translated/company.js:751 templates/js/translated/part.js:416
+#: templates/js/translated/part.js:501
msgid "Template part"
msgstr ""
-#: templates/js/translated/company.js:450
-#: templates/js/translated/company.js:700 templates/js/translated/part.js:292
-#: templates/js/translated/part.js:377
+#: templates/js/translated/company.js:499
+#: templates/js/translated/company.js:755 templates/js/translated/part.js:420
+#: templates/js/translated/part.js:505
msgid "Assembled part"
msgstr ""
-#: templates/js/translated/company.js:574 templates/js/translated/part.js:462
+#: templates/js/translated/company.js:626 templates/js/translated/part.js:593
msgid "No parameters found"
msgstr ""
-#: templates/js/translated/company.js:610 templates/js/translated/part.js:503
+#: templates/js/translated/company.js:663 templates/js/translated/part.js:635
msgid "Edit parameter"
msgstr ""
-#: templates/js/translated/company.js:611 templates/js/translated/part.js:504
+#: templates/js/translated/company.js:664 templates/js/translated/part.js:636
msgid "Delete parameter"
msgstr ""
-#: templates/js/translated/company.js:630 templates/js/translated/part.js:521
+#: templates/js/translated/company.js:683 templates/js/translated/part.js:653
msgid "Edit Parameter"
msgstr ""
-#: templates/js/translated/company.js:641 templates/js/translated/part.js:533
+#: templates/js/translated/company.js:694 templates/js/translated/part.js:665
msgid "Delete Parameter"
msgstr ""
-#: templates/js/translated/company.js:677
+#: templates/js/translated/company.js:731
msgid "No supplier parts found"
msgstr ""
-#: templates/js/translated/filters.js:167
-#: templates/js/translated/filters.js:404
+#: templates/js/translated/filters.js:178
+#: templates/js/translated/filters.js:402
msgid "true"
msgstr ""
-#: templates/js/translated/filters.js:171
-#: templates/js/translated/filters.js:405
+#: templates/js/translated/filters.js:182
+#: templates/js/translated/filters.js:403
msgid "false"
msgstr ""
-#: templates/js/translated/filters.js:193
+#: templates/js/translated/filters.js:204
msgid "Select filter"
msgstr ""
-#: templates/js/translated/filters.js:268
+#: templates/js/translated/filters.js:279
msgid "Reload data"
msgstr ""
-#: templates/js/translated/filters.js:270
+#: templates/js/translated/filters.js:281
msgid "Add new filter"
msgstr ""
-#: templates/js/translated/filters.js:273
+#: templates/js/translated/filters.js:284
msgid "Clear all filters"
msgstr ""
-#: templates/js/translated/filters.js:303
+#: templates/js/translated/filters.js:312
msgid "Create filter"
msgstr ""
-#: templates/js/translated/forms.js:289 templates/js/translated/forms.js:302
-#: templates/js/translated/forms.js:314 templates/js/translated/forms.js:326
+#: templates/js/translated/forms.js:323 templates/js/translated/forms.js:336
+#: templates/js/translated/forms.js:348 templates/js/translated/forms.js:360
msgid "Action Prohibited"
msgstr ""
-#: templates/js/translated/forms.js:290
+#: templates/js/translated/forms.js:324
msgid "Create operation not allowed"
msgstr ""
-#: templates/js/translated/forms.js:303
+#: templates/js/translated/forms.js:337
msgid "Update operation not allowed"
msgstr ""
-#: templates/js/translated/forms.js:315
+#: templates/js/translated/forms.js:349
msgid "Delete operation not allowed"
msgstr ""
-#: templates/js/translated/forms.js:327
+#: templates/js/translated/forms.js:361
msgid "View operation not allowed"
msgstr ""
-#: templates/js/translated/forms.js:865 templates/modals.html:21
+#: templates/js/translated/forms.js:889 templates/modals.html:21
#: templates/modals.html:47
msgid "Form errors exist"
msgstr ""
-#: templates/js/translated/forms.js:1258
+#: templates/js/translated/forms.js:1379
msgid "Searching"
msgstr ""
-#: templates/js/translated/forms.js:1423
+#: templates/js/translated/forms.js:1593
msgid "Clear input"
msgstr ""
-#: templates/js/translated/label.js:11
-msgid "Stock item(s) must be selected before printing labels"
+#: templates/js/translated/helpers.js:19
+msgid "YES"
msgstr ""
-#: templates/js/translated/label.js:29 templates/js/translated/label.js:79
-#: templates/js/translated/label.js:134
-msgid "No Labels Found"
+#: templates/js/translated/helpers.js:21
+msgid "NO"
msgstr ""
#: templates/js/translated/label.js:30
+msgid "Stock item(s) must be selected before printing labels"
+msgstr ""
+
+#: templates/js/translated/label.js:48 templates/js/translated/label.js:98
+#: templates/js/translated/label.js:153
+msgid "No Labels Found"
+msgstr ""
+
+#: templates/js/translated/label.js:49
msgid "No labels found which match selected stock item(s)"
msgstr ""
-#: templates/js/translated/label.js:61
+#: templates/js/translated/label.js:80
msgid "Select Stock Locations"
msgstr ""
-#: templates/js/translated/label.js:62
+#: templates/js/translated/label.js:81
msgid "Stock location(s) must be selected before printing labels"
msgstr ""
-#: templates/js/translated/label.js:80
+#: templates/js/translated/label.js:99
msgid "No labels found which match selected stock location(s)"
msgstr ""
-#: templates/js/translated/label.js:116
+#: templates/js/translated/label.js:135
msgid "Part(s) must be selected before printing labels"
msgstr ""
-#: templates/js/translated/label.js:135
+#: templates/js/translated/label.js:154
msgid "No labels found which match the selected part(s)"
msgstr ""
-#: templates/js/translated/label.js:209
+#: templates/js/translated/label.js:228
msgid "stock items selected"
msgstr ""
-#: templates/js/translated/label.js:217
+#: templates/js/translated/label.js:236
msgid "Select Label"
msgstr ""
-#: templates/js/translated/label.js:232
+#: templates/js/translated/label.js:251
msgid "Select Label Template"
msgstr ""
-#: templates/js/translated/modals.js:59 templates/js/translated/modals.js:103
-#: templates/js/translated/modals.js:593
+#: templates/js/translated/modals.js:76 templates/js/translated/modals.js:120
+#: templates/js/translated/modals.js:610
msgid "Cancel"
msgstr ""
-#: templates/js/translated/modals.js:60 templates/js/translated/modals.js:102
-#: templates/js/translated/modals.js:660 templates/js/translated/modals.js:956
+#: templates/js/translated/modals.js:77 templates/js/translated/modals.js:119
+#: templates/js/translated/modals.js:677 templates/js/translated/modals.js:970
#: templates/modals.html:30 templates/modals.html:55
msgid "Submit"
msgstr ""
-#: templates/js/translated/modals.js:101
+#: templates/js/translated/modals.js:118
msgid "Form Title"
msgstr ""
-#: templates/js/translated/modals.js:380
+#: templates/js/translated/modals.js:397
msgid "Waiting for server..."
msgstr ""
-#: templates/js/translated/modals.js:539
+#: templates/js/translated/modals.js:556
msgid "Show Error Information"
msgstr ""
-#: templates/js/translated/modals.js:592
+#: templates/js/translated/modals.js:609
msgid "Accept"
msgstr ""
-#: templates/js/translated/modals.js:649
+#: templates/js/translated/modals.js:666
msgid "Loading Data"
msgstr ""
-#: templates/js/translated/modals.js:907
+#: templates/js/translated/modals.js:922
msgid "Invalid response from server"
msgstr ""
-#: templates/js/translated/modals.js:907
+#: templates/js/translated/modals.js:922
msgid "Form data missing from server response"
msgstr ""
-#: templates/js/translated/modals.js:920
+#: templates/js/translated/modals.js:934
msgid "Error posting form data"
msgstr ""
-#: templates/js/translated/modals.js:1017
+#: templates/js/translated/modals.js:1031
msgid "JSON response missing form data"
msgstr ""
-#: templates/js/translated/modals.js:1032
+#: templates/js/translated/modals.js:1046
msgid "Error 400: Bad Request"
msgstr ""
-#: templates/js/translated/modals.js:1033
+#: templates/js/translated/modals.js:1047
msgid "Server returned error code 400"
msgstr ""
-#: templates/js/translated/modals.js:1056
+#: templates/js/translated/modals.js:1070
msgid "Error requesting form data"
msgstr ""
-#: templates/js/translated/model_renderers.js:38
+#: templates/js/translated/model_renderers.js:40
msgid "Company ID"
msgstr ""
-#: templates/js/translated/model_renderers.js:78
+#: templates/js/translated/model_renderers.js:82
msgid "Location ID"
msgstr ""
-#: templates/js/translated/model_renderers.js:95
+#: templates/js/translated/model_renderers.js:99
msgid "Build ID"
msgstr ""
-#: templates/js/translated/model_renderers.js:114
+#: templates/js/translated/model_renderers.js:119
msgid "Part ID"
msgstr ""
-#: templates/js/translated/model_renderers.js:163
+#: templates/js/translated/model_renderers.js:171
msgid "Category ID"
msgstr ""
-#: templates/js/translated/model_renderers.js:199
+#: templates/js/translated/model_renderers.js:208
msgid "Manufacturer Part ID"
msgstr ""
-#: templates/js/translated/model_renderers.js:227
+#: templates/js/translated/model_renderers.js:237
msgid "Supplier Part ID"
msgstr ""
-#: templates/js/translated/order.js:17
+#: templates/js/translated/order.js:45
msgid "Add Customer"
msgstr ""
-#: templates/js/translated/order.js:42
+#: templates/js/translated/order.js:70
msgid "Create Sales Order"
msgstr ""
-#: templates/js/translated/order.js:222
+#: templates/js/translated/order.js:295
msgid "No purchase orders found"
msgstr ""
-#: templates/js/translated/order.js:246 templates/js/translated/order.js:341
+#: templates/js/translated/order.js:320 templates/js/translated/order.js:682
msgid "Order is overdue"
msgstr ""
-#: templates/js/translated/order.js:318
+#: templates/js/translated/order.js:452
+msgid "No line items found"
+msgstr ""
+
+#: templates/js/translated/order.js:617
+msgid "Delete line item"
+msgstr ""
+
+#: templates/js/translated/order.js:621
+msgid "Receive line item"
+msgstr ""
+
+#: templates/js/translated/order.js:658
msgid "No sales orders found"
msgstr ""
-#: templates/js/translated/order.js:355
+#: templates/js/translated/order.js:696
msgid "Invalid Customer"
msgstr ""
-#: templates/js/translated/order.js:432
+#: templates/js/translated/order.js:774
msgid "No sales order allocations found"
msgstr ""
-#: templates/js/translated/part.js:10
-msgid "YES"
-msgstr ""
-
-#: templates/js/translated/part.js:12
-msgid "NO"
-msgstr ""
-
-#: templates/js/translated/part.js:22
-msgid "Add Part Category"
-msgstr ""
-
-#: templates/js/translated/part.js:53
+#: templates/js/translated/part.js:49
msgid "Part Attributes"
msgstr ""
-#: templates/js/translated/part.js:96
+#: templates/js/translated/part.js:53
msgid "Part Creation Options"
msgstr ""
-#: templates/js/translated/part.js:102
-msgid "Initial Stock Quantity"
-msgstr ""
-
-#: templates/js/translated/part.js:103
-msgid "Initialize part stock with specified quantity"
-msgstr ""
-
-#: templates/js/translated/part.js:109
-msgid "Copy Category Parameters"
-msgstr ""
-
-#: templates/js/translated/part.js:110
-msgid "Copy parameter templates from selected part category"
-msgstr ""
-
-#: templates/js/translated/part.js:120
+#: templates/js/translated/part.js:57
msgid "Part Duplication Options"
msgstr ""
-#: templates/js/translated/part.js:131
-msgid "Copy Image"
+#: templates/js/translated/part.js:61
+msgid "Supplier Options"
msgstr ""
-#: templates/js/translated/part.js:132
-msgid "Copy image from original part"
+#: templates/js/translated/part.js:75
+msgid "Add Part Category"
msgstr ""
-#: templates/js/translated/part.js:138
-msgid "Copy BOM"
+#: templates/js/translated/part.js:159
+msgid "Create Initial Stock"
msgstr ""
-#: templates/js/translated/part.js:139
-msgid "Copy bill of materials from original part"
+#: templates/js/translated/part.js:160
+msgid "Create an initial stock item for this part"
msgstr ""
-#: templates/js/translated/part.js:145
-msgid "Copy Parameters"
+#: templates/js/translated/part.js:167
+msgid "Initial Stock Quantity"
msgstr ""
-#: templates/js/translated/part.js:146
-msgid "Copy parameter data from original part"
+#: templates/js/translated/part.js:168
+msgid "Specify initial stock quantity for this part"
msgstr ""
-#: templates/js/translated/part.js:158
-msgid "Parent part category"
+#: templates/js/translated/part.js:175 templates/js/translated/stock.js:330
+msgid "Select destination stock location"
+msgstr ""
+
+#: templates/js/translated/part.js:186
+msgid "Copy Category Parameters"
+msgstr ""
+
+#: templates/js/translated/part.js:187
+msgid "Copy parameter templates from selected part category"
+msgstr ""
+
+#: templates/js/translated/part.js:195
+msgid "Add Supplier Data"
msgstr ""
#: templates/js/translated/part.js:196
+msgid "Create initial supplier data for this part"
+msgstr ""
+
+#: templates/js/translated/part.js:252
+msgid "Copy Image"
+msgstr ""
+
+#: templates/js/translated/part.js:253
+msgid "Copy image from original part"
+msgstr ""
+
+#: templates/js/translated/part.js:260
+msgid "Copy BOM"
+msgstr ""
+
+#: templates/js/translated/part.js:261
+msgid "Copy bill of materials from original part"
+msgstr ""
+
+#: templates/js/translated/part.js:268
+msgid "Copy Parameters"
+msgstr ""
+
+#: templates/js/translated/part.js:269
+msgid "Copy parameter data from original part"
+msgstr ""
+
+#: templates/js/translated/part.js:282
+msgid "Parent part category"
+msgstr ""
+
+#: templates/js/translated/part.js:323
msgid "Edit Part"
msgstr ""
-#: templates/js/translated/part.js:280 templates/js/translated/part.js:365
+#: templates/js/translated/part.js:408 templates/js/translated/part.js:493
msgid "Trackable part"
msgstr ""
-#: templates/js/translated/part.js:284 templates/js/translated/part.js:369
+#: templates/js/translated/part.js:412 templates/js/translated/part.js:497
msgid "Virtual part"
msgstr ""
-#: templates/js/translated/part.js:296
+#: templates/js/translated/part.js:424
msgid "Starred part"
msgstr ""
-#: templates/js/translated/part.js:300
+#: templates/js/translated/part.js:428
msgid "Salable part"
msgstr ""
-#: templates/js/translated/part.js:414
+#: templates/js/translated/part.js:543
msgid "No variants found"
msgstr ""
-#: templates/js/translated/part.js:601 templates/js/translated/part.js:840
+#: templates/js/translated/part.js:732 templates/js/translated/part.js:994
msgid "No parts found"
msgstr ""
-#: templates/js/translated/part.js:779
+#: templates/js/translated/part.js:921
msgid "No category"
msgstr ""
-#: templates/js/translated/part.js:797
-#: templates/js/translated/table_filters.js:337
+#: templates/js/translated/part.js:944
+#: templates/js/translated/table_filters.js:350
msgid "Low stock"
msgstr ""
-#: templates/js/translated/part.js:981 templates/js/translated/stock.js:1360
+#: templates/js/translated/part.js:1148 templates/js/translated/stock.js:1501
msgid "Path"
msgstr ""
-#: templates/js/translated/part.js:1024
+#: templates/js/translated/part.js:1191
msgid "No test templates matching query"
msgstr ""
-#: templates/js/translated/part.js:1075 templates/js/translated/stock.js:443
+#: templates/js/translated/part.js:1242 templates/js/translated/stock.js:514
msgid "Edit test result"
msgstr ""
-#: templates/js/translated/part.js:1076 templates/js/translated/stock.js:444
+#: templates/js/translated/part.js:1243 templates/js/translated/stock.js:515
msgid "Delete test result"
msgstr ""
-#: templates/js/translated/part.js:1082
+#: templates/js/translated/part.js:1249
msgid "This test is defined for a parent part"
msgstr ""
-#: templates/js/translated/part.js:1107
+#: templates/js/translated/part.js:1274
#, python-brace-format
msgid "No ${human_name} information found"
msgstr ""
-#: templates/js/translated/part.js:1160
+#: templates/js/translated/part.js:1329
#, python-brace-format
msgid "Edit ${human_name}"
msgstr ""
-#: templates/js/translated/part.js:1161
+#: templates/js/translated/part.js:1330
#, python-brace-format
msgid "Delete ${human_name}"
msgstr ""
-#: templates/js/translated/part.js:1261
+#: templates/js/translated/part.js:1431
msgid "Single Price"
msgstr ""
-#: templates/js/translated/part.js:1280
+#: templates/js/translated/part.js:1450
msgid "Single Price Difference"
msgstr ""
-#: templates/js/translated/stock.js:9
+#: templates/js/translated/stock.js:66
msgid "Parent stock location"
msgstr ""
-#: templates/js/translated/stock.js:39
+#: templates/js/translated/stock.js:96
msgid "Export Stock"
msgstr ""
-#: templates/js/translated/stock.js:42
+#: templates/js/translated/stock.js:99
msgid "Format"
msgstr ""
-#: templates/js/translated/stock.js:43
+#: templates/js/translated/stock.js:100
msgid "Select file format"
msgstr ""
-#: templates/js/translated/stock.js:55
+#: templates/js/translated/stock.js:124
msgid "Include Sublocations"
msgstr ""
-#: templates/js/translated/stock.js:56
+#: templates/js/translated/stock.js:125
msgid "Include stock items in sublocations"
msgstr ""
-#: templates/js/translated/stock.js:98
+#: templates/js/translated/stock.js:167
msgid "Transfer Stock"
msgstr ""
-#: templates/js/translated/stock.js:99
+#: templates/js/translated/stock.js:168
msgid "Move"
msgstr ""
-#: templates/js/translated/stock.js:105
+#: templates/js/translated/stock.js:174
msgid "Count Stock"
msgstr ""
-#: templates/js/translated/stock.js:106
+#: templates/js/translated/stock.js:175
msgid "Count"
msgstr ""
-#: templates/js/translated/stock.js:110
+#: templates/js/translated/stock.js:179
msgid "Remove Stock"
msgstr ""
-#: templates/js/translated/stock.js:111
+#: templates/js/translated/stock.js:180
msgid "Take"
msgstr ""
-#: templates/js/translated/stock.js:115
+#: templates/js/translated/stock.js:184
msgid "Add Stock"
msgstr ""
-#: templates/js/translated/stock.js:116 users/models.py:190
+#: templates/js/translated/stock.js:185 users/models.py:190
msgid "Add"
msgstr ""
-#: templates/js/translated/stock.js:120 templates/stock_table.html:63
+#: templates/js/translated/stock.js:189 templates/stock_table.html:63
msgid "Delete Stock"
msgstr ""
-#: templates/js/translated/stock.js:209
+#: templates/js/translated/stock.js:278
msgid "Quantity cannot be adjusted for serialized stock"
msgstr ""
-#: templates/js/translated/stock.js:209
+#: templates/js/translated/stock.js:278
msgid "Specify stock quantity"
msgstr ""
-#: templates/js/translated/stock.js:245
+#: templates/js/translated/stock.js:314
msgid "You must select at least one available stock item"
msgstr ""
-#: templates/js/translated/stock.js:261
-msgid "Select destination stock location"
-msgstr ""
-
-#: templates/js/translated/stock.js:269
+#: templates/js/translated/stock.js:339
msgid "Stock transaction notes"
msgstr ""
-#: templates/js/translated/stock.js:406
+#: templates/js/translated/stock.js:477
msgid "PASS"
msgstr ""
-#: templates/js/translated/stock.js:408
+#: templates/js/translated/stock.js:479
msgid "FAIL"
msgstr ""
-#: templates/js/translated/stock.js:413
+#: templates/js/translated/stock.js:484
msgid "NO RESULT"
msgstr ""
-#: templates/js/translated/stock.js:439
+#: templates/js/translated/stock.js:510
msgid "Add test result"
msgstr ""
-#: templates/js/translated/stock.js:465
+#: templates/js/translated/stock.js:536
msgid "No test results found"
msgstr ""
-#: templates/js/translated/stock.js:513
+#: templates/js/translated/stock.js:584
msgid "Test Date"
msgstr ""
-#: templates/js/translated/stock.js:621
+#: templates/js/translated/stock.js:691
msgid "In production"
msgstr ""
-#: templates/js/translated/stock.js:625
+#: templates/js/translated/stock.js:695
msgid "Installed in Stock Item"
msgstr ""
-#: templates/js/translated/stock.js:633
+#: templates/js/translated/stock.js:703
msgid "Assigned to Sales Order"
msgstr ""
-#: templates/js/translated/stock.js:709
-msgid "No stock items matching query"
-msgstr ""
-
-#: templates/js/translated/stock.js:729
-msgid "items"
-msgstr ""
-
-#: templates/js/translated/stock.js:821
-msgid "batches"
-msgstr ""
-
-#: templates/js/translated/stock.js:848
-msgid "locations"
-msgstr ""
-
-#: templates/js/translated/stock.js:850
-msgid "Undefined location"
-msgstr ""
-
-#: templates/js/translated/stock.js:951
+#: templates/js/translated/stock.js:865
msgid "Stock item is in production"
msgstr ""
-#: templates/js/translated/stock.js:956
+#: templates/js/translated/stock.js:870
msgid "Stock item assigned to sales order"
msgstr ""
-#: templates/js/translated/stock.js:959
+#: templates/js/translated/stock.js:873
msgid "Stock item assigned to customer"
msgstr ""
-#: templates/js/translated/stock.js:963
+#: templates/js/translated/stock.js:877
msgid "Stock item has expired"
msgstr ""
-#: templates/js/translated/stock.js:965
+#: templates/js/translated/stock.js:879
msgid "Stock item will expire soon"
msgstr ""
-#: templates/js/translated/stock.js:969
+#: templates/js/translated/stock.js:883
msgid "Stock item has been allocated"
msgstr ""
-#: templates/js/translated/stock.js:973
+#: templates/js/translated/stock.js:887
msgid "Stock item has been installed in another item"
msgstr ""
-#: templates/js/translated/stock.js:980
+#: templates/js/translated/stock.js:894
msgid "Stock item has been rejected"
msgstr ""
-#: templates/js/translated/stock.js:984
+#: templates/js/translated/stock.js:896
msgid "Stock item is lost"
msgstr ""
-#: templates/js/translated/stock.js:987
+#: templates/js/translated/stock.js:898
msgid "Stock item is destroyed"
msgstr ""
-#: templates/js/translated/stock.js:991
-#: templates/js/translated/table_filters.js:148
+#: templates/js/translated/stock.js:902
+#: templates/js/translated/table_filters.js:161
msgid "Depleted"
msgstr ""
-#: templates/js/translated/stock.js:1020
+#: templates/js/translated/stock.js:956
msgid "Stocktake"
msgstr ""
-#: templates/js/translated/stock.js:1073
+#: templates/js/translated/stock.js:1029
msgid "Supplier part not specified"
msgstr ""
-#: templates/js/translated/stock.js:1223
+#: templates/js/translated/stock.js:1067
+msgid "No stock items matching query"
+msgstr ""
+
+#: templates/js/translated/stock.js:1088 templates/js/translated/stock.js:1136
+msgid "items"
+msgstr ""
+
+#: templates/js/translated/stock.js:1176
+msgid "batches"
+msgstr ""
+
+#: templates/js/translated/stock.js:1203
+msgid "locations"
+msgstr ""
+
+#: templates/js/translated/stock.js:1205
+msgid "Undefined location"
+msgstr ""
+
+#: templates/js/translated/stock.js:1364
msgid "Stock Status"
msgstr ""
-#: templates/js/translated/stock.js:1238
+#: templates/js/translated/stock.js:1379
msgid "Set Stock Status"
msgstr ""
-#: templates/js/translated/stock.js:1252
+#: templates/js/translated/stock.js:1393
msgid "Select Status Code"
msgstr ""
-#: templates/js/translated/stock.js:1253
+#: templates/js/translated/stock.js:1394
msgid "Status code must be selected"
msgstr ""
-#: templates/js/translated/stock.js:1392
+#: templates/js/translated/stock.js:1533
msgid "Invalid date"
msgstr ""
-#: templates/js/translated/stock.js:1439
+#: templates/js/translated/stock.js:1580
msgid "Location no longer exists"
msgstr ""
-#: templates/js/translated/stock.js:1458
+#: templates/js/translated/stock.js:1599
msgid "Purchase order no longer exists"
msgstr ""
-#: templates/js/translated/stock.js:1477
+#: templates/js/translated/stock.js:1618
msgid "Customer no longer exists"
msgstr ""
-#: templates/js/translated/stock.js:1495
+#: templates/js/translated/stock.js:1636
msgid "Stock item no longer exists"
msgstr ""
-#: templates/js/translated/stock.js:1518
+#: templates/js/translated/stock.js:1659
msgid "Added"
msgstr ""
-#: templates/js/translated/stock.js:1526
+#: templates/js/translated/stock.js:1667
msgid "Removed"
msgstr ""
-#: templates/js/translated/stock.js:1570
+#: templates/js/translated/stock.js:1708
msgid "Edit tracking entry"
msgstr ""
-#: templates/js/translated/stock.js:1571
+#: templates/js/translated/stock.js:1709
msgid "Delete tracking entry"
msgstr ""
-#: templates/js/translated/stock.js:1715
+#: templates/js/translated/stock.js:1833
msgid "No installed items"
msgstr ""
-#: templates/js/translated/stock.js:1738
+#: templates/js/translated/stock.js:1856
msgid "Serial"
msgstr ""
-#: templates/js/translated/stock.js:1766
+#: templates/js/translated/stock.js:1884
msgid "Uninstall Stock Item"
msgstr ""
-#: templates/js/translated/table_filters.js:43
+#: templates/js/translated/table_filters.js:56
msgid "Trackable Part"
msgstr ""
-#: templates/js/translated/table_filters.js:47
+#: templates/js/translated/table_filters.js:60
msgid "Assembled Part"
msgstr ""
-#: templates/js/translated/table_filters.js:51
+#: templates/js/translated/table_filters.js:64
msgid "Validated"
msgstr ""
-#: templates/js/translated/table_filters.js:59
+#: templates/js/translated/table_filters.js:72
msgid "Allow Variant Stock"
msgstr ""
-#: templates/js/translated/table_filters.js:79
-#: templates/js/translated/table_filters.js:143
+#: templates/js/translated/table_filters.js:92
+#: templates/js/translated/table_filters.js:156
msgid "Include sublocations"
msgstr ""
-#: templates/js/translated/table_filters.js:80
+#: templates/js/translated/table_filters.js:93
msgid "Include locations"
msgstr ""
-#: templates/js/translated/table_filters.js:90
-#: templates/js/translated/table_filters.js:91
-#: templates/js/translated/table_filters.js:314
+#: templates/js/translated/table_filters.js:103
+#: templates/js/translated/table_filters.js:104
+#: templates/js/translated/table_filters.js:327
msgid "Include subcategories"
msgstr ""
-#: templates/js/translated/table_filters.js:101
-#: templates/js/translated/table_filters.js:178
+#: templates/js/translated/table_filters.js:114
+#: templates/js/translated/table_filters.js:191
msgid "Is Serialized"
msgstr ""
-#: templates/js/translated/table_filters.js:104
-#: templates/js/translated/table_filters.js:185
+#: templates/js/translated/table_filters.js:117
+#: templates/js/translated/table_filters.js:198
msgid "Serial number GTE"
msgstr ""
-#: templates/js/translated/table_filters.js:105
-#: templates/js/translated/table_filters.js:186
+#: templates/js/translated/table_filters.js:118
+#: templates/js/translated/table_filters.js:199
msgid "Serial number greater than or equal to"
msgstr ""
-#: templates/js/translated/table_filters.js:108
-#: templates/js/translated/table_filters.js:189
+#: templates/js/translated/table_filters.js:121
+#: templates/js/translated/table_filters.js:202
msgid "Serial number LTE"
msgstr ""
-#: templates/js/translated/table_filters.js:109
-#: templates/js/translated/table_filters.js:190
+#: templates/js/translated/table_filters.js:122
+#: templates/js/translated/table_filters.js:203
msgid "Serial number less than or equal to"
msgstr ""
-#: templates/js/translated/table_filters.js:112
-#: templates/js/translated/table_filters.js:113
-#: templates/js/translated/table_filters.js:181
-#: templates/js/translated/table_filters.js:182
+#: templates/js/translated/table_filters.js:125
+#: templates/js/translated/table_filters.js:126
+#: templates/js/translated/table_filters.js:194
+#: templates/js/translated/table_filters.js:195
msgid "Serial number"
msgstr ""
-#: templates/js/translated/table_filters.js:117
-#: templates/js/translated/table_filters.js:199
+#: templates/js/translated/table_filters.js:130
+#: templates/js/translated/table_filters.js:212
msgid "Batch code"
msgstr ""
-#: templates/js/translated/table_filters.js:128
-#: templates/js/translated/table_filters.js:304
+#: templates/js/translated/table_filters.js:141
+#: templates/js/translated/table_filters.js:317
msgid "Active parts"
msgstr ""
-#: templates/js/translated/table_filters.js:129
+#: templates/js/translated/table_filters.js:142
msgid "Show stock for active parts"
msgstr ""
-#: templates/js/translated/table_filters.js:134
+#: templates/js/translated/table_filters.js:147
msgid "Part is an assembly"
msgstr ""
-#: templates/js/translated/table_filters.js:138
+#: templates/js/translated/table_filters.js:151
msgid "Is allocated"
msgstr ""
-#: templates/js/translated/table_filters.js:139
+#: templates/js/translated/table_filters.js:152
msgid "Item has been allocated"
msgstr ""
-#: templates/js/translated/table_filters.js:144
+#: templates/js/translated/table_filters.js:157
msgid "Include stock in sublocations"
msgstr ""
-#: templates/js/translated/table_filters.js:149
+#: templates/js/translated/table_filters.js:162
msgid "Show stock items which are depleted"
msgstr ""
-#: templates/js/translated/table_filters.js:154
+#: templates/js/translated/table_filters.js:167
msgid "Show items which are in stock"
msgstr ""
-#: templates/js/translated/table_filters.js:158
+#: templates/js/translated/table_filters.js:171
msgid "In Production"
msgstr ""
-#: templates/js/translated/table_filters.js:159
+#: templates/js/translated/table_filters.js:172
msgid "Show items which are in production"
msgstr ""
-#: templates/js/translated/table_filters.js:163
+#: templates/js/translated/table_filters.js:176
msgid "Include Variants"
msgstr ""
-#: templates/js/translated/table_filters.js:164
+#: templates/js/translated/table_filters.js:177
msgid "Include stock items for variant parts"
msgstr ""
-#: templates/js/translated/table_filters.js:168
+#: templates/js/translated/table_filters.js:181
msgid "Installed"
msgstr ""
-#: templates/js/translated/table_filters.js:169
+#: templates/js/translated/table_filters.js:182
msgid "Show stock items which are installed in another item"
msgstr ""
-#: templates/js/translated/table_filters.js:174
+#: templates/js/translated/table_filters.js:187
msgid "Show items which have been assigned to a customer"
msgstr ""
-#: templates/js/translated/table_filters.js:194
-#: templates/js/translated/table_filters.js:195
+#: templates/js/translated/table_filters.js:207
+#: templates/js/translated/table_filters.js:208
msgid "Stock status"
msgstr ""
-#: templates/js/translated/table_filters.js:203
+#: templates/js/translated/table_filters.js:216
msgid "Has purchase price"
msgstr ""
-#: templates/js/translated/table_filters.js:204
+#: templates/js/translated/table_filters.js:217
msgid "Show stock items which have a purchase price set"
msgstr ""
-#: templates/js/translated/table_filters.js:213
+#: templates/js/translated/table_filters.js:226
msgid "Show stock items which have expired"
msgstr ""
-#: templates/js/translated/table_filters.js:219
+#: templates/js/translated/table_filters.js:232
msgid "Show stock which is close to expiring"
msgstr ""
-#: templates/js/translated/table_filters.js:250
+#: templates/js/translated/table_filters.js:263
msgid "Build status"
msgstr ""
-#: templates/js/translated/table_filters.js:269
-#: templates/js/translated/table_filters.js:286
+#: templates/js/translated/table_filters.js:282
+#: templates/js/translated/table_filters.js:299
msgid "Order status"
msgstr ""
-#: templates/js/translated/table_filters.js:274
-#: templates/js/translated/table_filters.js:291
+#: templates/js/translated/table_filters.js:287
+#: templates/js/translated/table_filters.js:304
msgid "Outstanding"
msgstr ""
-#: templates/js/translated/table_filters.js:315
+#: templates/js/translated/table_filters.js:328
msgid "Include parts in subcategories"
msgstr ""
-#: templates/js/translated/table_filters.js:319
+#: templates/js/translated/table_filters.js:332
msgid "Has IPN"
msgstr ""
-#: templates/js/translated/table_filters.js:320
+#: templates/js/translated/table_filters.js:333
msgid "Part has internal part number"
msgstr ""
-#: templates/js/translated/table_filters.js:325
+#: templates/js/translated/table_filters.js:338
msgid "Show active parts"
msgstr ""
-#: templates/js/translated/table_filters.js:333
+#: templates/js/translated/table_filters.js:346
msgid "Stock available"
msgstr ""
-#: templates/js/translated/table_filters.js:349
+#: templates/js/translated/table_filters.js:362
msgid "Starred"
msgstr ""
-#: templates/js/translated/table_filters.js:361
+#: templates/js/translated/table_filters.js:374
msgid "Purchasable"
msgstr ""
-#: templates/js/translated/tables.js:342
+#: templates/js/translated/tables.js:357
msgid "Loading data"
msgstr ""
-#: templates/js/translated/tables.js:345
+#: templates/js/translated/tables.js:360
msgid "rows per page"
msgstr ""
-#: templates/js/translated/tables.js:348
+#: templates/js/translated/tables.js:363
msgid "Showing"
msgstr ""
-#: templates/js/translated/tables.js:348
+#: templates/js/translated/tables.js:363
msgid "to"
msgstr ""
-#: templates/js/translated/tables.js:348
+#: templates/js/translated/tables.js:363
msgid "of"
msgstr ""
-#: templates/js/translated/tables.js:348
+#: templates/js/translated/tables.js:363
msgid "rows"
msgstr ""
-#: templates/js/translated/tables.js:354
+#: templates/js/translated/tables.js:369
msgid "No matching results"
msgstr ""
-#: templates/js/translated/tables.js:357
+#: templates/js/translated/tables.js:372
msgid "Hide/Show pagination"
msgstr ""
-#: templates/js/translated/tables.js:360
+#: templates/js/translated/tables.js:375
msgid "Refresh"
msgstr ""
-#: templates/js/translated/tables.js:363
+#: templates/js/translated/tables.js:378
msgid "Toggle"
msgstr ""
-#: templates/js/translated/tables.js:366
+#: templates/js/translated/tables.js:381
msgid "Columns"
msgstr ""
-#: templates/js/translated/tables.js:369
+#: templates/js/translated/tables.js:384
msgid "All"
msgstr ""
-#: templates/navbar.html:13
+#: templates/navbar.html:19
msgid "Toggle navigation"
msgstr ""
-#: templates/navbar.html:33
+#: templates/navbar.html:39
msgid "Buy"
msgstr ""
-#: templates/navbar.html:43
+#: templates/navbar.html:51
msgid "Sell"
msgstr ""
-#: templates/navbar.html:55
-msgid "Scan Barcode"
-msgstr ""
-
-#: templates/navbar.html:77 users/models.py:39
+#: templates/navbar.html:87 users/models.py:39
msgid "Admin"
msgstr ""
-#: templates/navbar.html:79
+#: templates/navbar.html:89
msgid "Logout"
msgstr ""
-#: templates/navbar.html:81 templates/registration/login.html:89
+#: templates/navbar.html:91 templates/registration/login.html:89
msgid "Login"
msgstr ""
-#: templates/navbar.html:104
+#: templates/navbar.html:114
msgid "About InvenTree"
msgstr ""
diff --git a/InvenTree/locale/tr/LC_MESSAGES/django.po b/InvenTree/locale/tr/LC_MESSAGES/django.po
index b51c8640a5..81567b4a83 100644
--- a/InvenTree/locale/tr/LC_MESSAGES/django.po
+++ b/InvenTree/locale/tr/LC_MESSAGES/django.po
@@ -2,8 +2,8 @@ msgid ""
msgstr ""
"Project-Id-Version: inventree\n"
"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2021-08-07 15:14+0000\n"
-"PO-Revision-Date: 2021-08-07 15:30\n"
+"POT-Creation-Date: 2021-09-12 13:15+0000\n"
+"PO-Revision-Date: 2021-09-12 13:44\n"
"Last-Translator: \n"
"Language-Team: Turkish\n"
"Language: tr_TR\n"
@@ -36,7 +36,7 @@ msgstr "Tarih giriniz"
#: InvenTree/forms.py:111 build/forms.py:102 build/forms.py:123
#: build/forms.py:145 build/forms.py:169 build/forms.py:185 build/forms.py:227
#: order/forms.py:30 order/forms.py:41 order/forms.py:52 order/forms.py:63
-#: order/forms.py:74 part/forms.py:108 templates/js/translated/forms.js:545
+#: order/forms.py:74 part/forms.py:108 templates/js/translated/forms.js:564
msgid "Confirm"
msgstr "Onay"
@@ -73,7 +73,7 @@ msgstr "Kategori Seçin"
msgid "Duplicate serial: {n}"
msgstr "Tekrarlanan seri {n}"
-#: InvenTree/helpers.py:408 order/models.py:315 order/models.py:425
+#: InvenTree/helpers.py:408 order/models.py:315 order/models.py:430
#: stock/views.py:1363
msgid "Invalid quantity provided"
msgstr "Geçersiz veri sağlandı"
@@ -102,152 +102,181 @@ 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:61 stock/models.py:1815
+#: InvenTree/models.py:66 stock/models.py:1826
msgid "Attachment"
msgstr "Ek"
-#: InvenTree/models.py:62
+#: InvenTree/models.py:67
msgid "Select file to attach"
msgstr "Eklenecek dosyayı seç"
-#: InvenTree/models.py:64 templates/js/translated/attachment.js:52
+#: InvenTree/models.py:69 templates/js/translated/attachment.js:87
msgid "Comment"
msgstr "Yorum"
-#: InvenTree/models.py:64
+#: InvenTree/models.py:69
msgid "File comment"
msgstr "Dosya yorumu"
-#: InvenTree/models.py:70 InvenTree/models.py:71 common/models.py:969
-#: common/models.py:970 part/models.py:2035
+#: InvenTree/models.py:75 InvenTree/models.py:76 common/models.py:993
+#: common/models.py:994 part/models.py:2051
#: report/templates/report/inventree_test_report_base.html:91
-#: templates/js/translated/stock.js:1549
+#: templates/js/translated/stock.js:1690
msgid "User"
msgstr "Kullanıcı"
-#: InvenTree/models.py:74
+#: InvenTree/models.py:79
msgid "upload date"
msgstr "yükleme tarihi"
-#: InvenTree/models.py:113
+#: InvenTree/models.py:99
+msgid "Filename must not be empty"
+msgstr ""
+
+#: InvenTree/models.py:122
+msgid "Invalid attachment directory"
+msgstr ""
+
+#: InvenTree/models.py:132
+#, python-brace-format
+msgid "Filename contains illegal character '{c}'"
+msgstr ""
+
+#: InvenTree/models.py:135
+msgid "Filename missing extension"
+msgstr ""
+
+#: InvenTree/models.py:142
+msgid "Attachment with this filename already exists"
+msgstr ""
+
+#: InvenTree/models.py:149
+msgid "Error renaming file"
+msgstr ""
+
+#: InvenTree/models.py:184
msgid "Invalid choice"
msgstr "Geçersiz seçim"
-#: InvenTree/models.py:129 InvenTree/models.py:130 company/models.py:412
-#: label/models.py:112 part/models.py:656 part/models.py:2196
-#: part/templates/part/part_base.html:233 report/models.py:181
+#: InvenTree/models.py:200 InvenTree/models.py:201 company/models.py:414
+#: label/models.py:112 part/models.py:658 part/models.py:2212
+#: part/templates/part/part_base.html:241 report/models.py:181
#: templates/InvenTree/search.html:137 templates/InvenTree/search.html:289
-#: templates/js/translated/company.js:583 templates/js/translated/part.js:338
-#: templates/js/translated/part.js:471 templates/js/translated/part.js:963
-#: templates/js/translated/stock.js:1342
+#: templates/js/translated/company.js:636 templates/js/translated/part.js:466
+#: templates/js/translated/part.js:603 templates/js/translated/part.js:1130
+#: templates/js/translated/stock.js:1483
msgid "Name"
msgstr "Adı"
-#: InvenTree/models.py:136 build/models.py:187
-#: build/templates/build/detail.html:24 company/models.py:351
-#: company/models.py:519 company/templates/company/manufacturer_part.html:76
+#: InvenTree/models.py:207 build/models.py:187
+#: build/templates/build/detail.html:24 company/models.py:353
+#: company/models.py:569 company/templates/company/manufacturer_part.html:76
#: company/templates/company/supplier_part.html:75 label/models.py:119
-#: order/models.py:158 order/templates/order/purchase_order_detail.html:312
-#: part/models.py:679 part/templates/part/part_base.html:238
+#: order/models.py:158 part/models.py:681
+#: part/templates/part/part_base.html:246
#: part/templates/part/set_category.html:14 report/models.py:194
#: report/models.py:551 report/models.py:590
#: report/templates/report/inventree_build_order_base.html:118
#: templates/InvenTree/search.html:144 templates/InvenTree/search.html:224
#: templates/InvenTree/search.html:296
#: templates/InvenTree/settings/header.html:9
-#: templates/js/translated/bom.js:210 templates/js/translated/build.js:868
-#: templates/js/translated/build.js:1162 templates/js/translated/company.js:299
-#: templates/js/translated/company.js:497
-#: templates/js/translated/company.js:779 templates/js/translated/order.js:267
-#: templates/js/translated/order.js:369 templates/js/translated/part.js:397
-#: templates/js/translated/part.js:581 templates/js/translated/part.js:758
-#: templates/js/translated/part.js:975 templates/js/translated/part.js:1043
-#: templates/js/translated/stock.js:926 templates/js/translated/stock.js:1354
-#: templates/js/translated/stock.js:1399
+#: templates/js/translated/bom.js:230 templates/js/translated/build.js:891
+#: templates/js/translated/build.js:1179 templates/js/translated/company.js:344
+#: templates/js/translated/company.js:546
+#: templates/js/translated/company.js:834 templates/js/translated/order.js:341
+#: templates/js/translated/order.js:486 templates/js/translated/order.js:710
+#: templates/js/translated/part.js:525 templates/js/translated/part.js:713
+#: templates/js/translated/part.js:902 templates/js/translated/part.js:1142
+#: templates/js/translated/part.js:1210 templates/js/translated/stock.js:840
+#: templates/js/translated/stock.js:1495 templates/js/translated/stock.js:1540
msgid "Description"
msgstr "Açıklama"
-#: InvenTree/models.py:137
+#: InvenTree/models.py:208
msgid "Description (optional)"
msgstr "Açıklama (isteğe bağlı)"
-#: InvenTree/models.py:145
+#: InvenTree/models.py:216
msgid "parent"
msgstr "üst"
-#: InvenTree/serializers.py:52 part/models.py:2438
+#: InvenTree/serializers.py:55 part/models.py:2454
msgid "Must be a valid number"
msgstr "Geçerli bir numara olmalı"
-#: InvenTree/settings.py:518
+#: InvenTree/serializers.py:244
+msgid "Filename"
+msgstr ""
+
+#: InvenTree/settings.py:523
msgid "German"
msgstr "Almanca"
-#: InvenTree/settings.py:519
+#: InvenTree/settings.py:524
msgid "Greek"
msgstr "Yunanca"
-#: InvenTree/settings.py:520
+#: InvenTree/settings.py:525
msgid "English"
msgstr "İngilizce"
-#: InvenTree/settings.py:521
+#: InvenTree/settings.py:526
msgid "Spanish"
msgstr "İspanyolca"
-#: InvenTree/settings.py:522
+#: InvenTree/settings.py:527
msgid "French"
msgstr "Fransızca"
-#: InvenTree/settings.py:523
+#: InvenTree/settings.py:528
msgid "Hebrew"
msgstr "İbranice"
-#: InvenTree/settings.py:524
+#: InvenTree/settings.py:529
msgid "Italian"
msgstr "İtalyanca"
-#: InvenTree/settings.py:525
+#: InvenTree/settings.py:530
msgid "Japanese"
msgstr "Japonca"
-#: InvenTree/settings.py:526
+#: InvenTree/settings.py:531
msgid "Korean"
msgstr "Korece"
-#: InvenTree/settings.py:527
+#: InvenTree/settings.py:532
msgid "Dutch"
msgstr "Flemenkçe"
-#: InvenTree/settings.py:528
+#: InvenTree/settings.py:533
msgid "Norwegian"
msgstr "Norveççe"
-#: InvenTree/settings.py:529
+#: InvenTree/settings.py:534
msgid "Polish"
msgstr "Polonyaca"
-#: InvenTree/settings.py:530
+#: InvenTree/settings.py:535
msgid "Russian"
msgstr "Rusça"
-#: InvenTree/settings.py:531
+#: InvenTree/settings.py:536
msgid "Swedish"
msgstr "İsveççe"
-#: InvenTree/settings.py:532
+#: InvenTree/settings.py:537
msgid "Thai"
msgstr "Tay dili"
-#: InvenTree/settings.py:533
+#: InvenTree/settings.py:538
msgid "Turkish"
msgstr "Türkçe"
-#: InvenTree/settings.py:534
+#: InvenTree/settings.py:539
msgid "Vietnamese"
msgstr ""
-#: InvenTree/settings.py:535
+#: InvenTree/settings.py:540
msgid "Chinese"
msgstr "Çince"
@@ -372,7 +401,7 @@ msgstr "Üst ögeden ayır"
msgid "Split child item"
msgstr "Alt ögeyi ayır"
-#: InvenTree/status_codes.py:294 templates/js/translated/table_filters.js:173
+#: InvenTree/status_codes.py:294 templates/js/translated/table_filters.js:186
msgid "Sent to customer"
msgstr "Müşteriye gönderildi"
@@ -432,27 +461,27 @@ msgstr "Fazlalık %100'ü geçmemelidir"
msgid "Overage must be an integer value or a percentage"
msgstr "Fazlalık bir tamsayı veya yüzde olmalıdır"
-#: InvenTree/views.py:612
+#: InvenTree/views.py:610
msgid "Delete Item"
msgstr "Ögeyi Sil"
-#: InvenTree/views.py:661
+#: InvenTree/views.py:659
msgid "Check box to confirm item deletion"
msgstr "Öge silme işlemini onaylamak için kutuyu işaretleyin"
-#: InvenTree/views.py:676 templates/InvenTree/settings/user.html:14
+#: InvenTree/views.py:674 templates/InvenTree/settings/user.html:14
msgid "Edit User Information"
msgstr "Kullanıcı Bilgisini Düzenle"
-#: InvenTree/views.py:687 templates/InvenTree/settings/user.html:18
+#: InvenTree/views.py:685 templates/InvenTree/settings/user.html:18
msgid "Set Password"
msgstr "Şifre Belirle"
-#: InvenTree/views.py:706
+#: InvenTree/views.py:704
msgid "Password fields must match"
msgstr "Parola alanları eşleşmelidir"
-#: InvenTree/views.py:907 templates/navbar.html:95
+#: InvenTree/views.py:910 templates/navbar.html:105
msgid "System Information"
msgstr "Sistem Bilgisi"
@@ -509,8 +538,8 @@ msgstr "Emir hedef tarihi"
#: order/templates/order/order_base.html:124
#: order/templates/order/sales_order_base.html:119
#: report/templates/report/inventree_build_order_base.html:126
-#: templates/js/translated/build.js:945 templates/js/translated/order.js:284
-#: templates/js/translated/order.js:387
+#: templates/js/translated/build.js:962 templates/js/translated/order.js:358
+#: templates/js/translated/order.js:728
msgid "Target Date"
msgstr "Hedeflenen tarih"
@@ -522,19 +551,18 @@ msgstr "Yapım işinin tamamlanması için hedef tarih. Bu tarihten sonra yapım
#: build/templates/build/allocation_card.html:23
#: build/templates/build/auto_allocate.html:17
#: build/templates/build/build_base.html:133
-#: build/templates/build/detail.html:34 common/models.py:1001
+#: build/templates/build/detail.html:34 common/models.py:1025
#: company/forms.py:42 company/templates/company/supplier_part.html:226
-#: order/forms.py:120 order/forms.py:142 order/forms.py:159 order/models.py:706
-#: order/models.py:952 order/templates/order/order_wizard/match_parts.html:30
+#: order/forms.py:120 order/forms.py:142 order/forms.py:159 order/models.py:712
+#: order/models.py:964 order/templates/order/order_wizard/match_parts.html:30
#: order/templates/order/order_wizard/select_parts.html:34
-#: order/templates/order/purchase_order_detail.html:348
-#: order/templates/order/sales_order_detail.html:200
-#: order/templates/order/sales_order_detail.html:207
-#: order/templates/order/sales_order_detail.html:292
-#: order/templates/order/sales_order_detail.html:364 part/forms.py:249
-#: part/forms.py:265 part/forms.py:281 part/models.py:2340
+#: order/templates/order/sales_order_detail.html:201
+#: order/templates/order/sales_order_detail.html:208
+#: order/templates/order/sales_order_detail.html:293
+#: order/templates/order/sales_order_detail.html:365 part/forms.py:249
+#: part/forms.py:265 part/forms.py:281 part/models.py:2356
#: part/templates/part/bom_upload/match_parts.html:31
-#: part/templates/part/detail.html:940 part/templates/part/detail.html:1026
+#: part/templates/part/detail.html:973 part/templates/part/detail.html:1059
#: part/templates/part/part_pricing.html:16
#: report/templates/report/inventree_build_order_base.html:114
#: report/templates/report/inventree_po_report.html:91
@@ -542,13 +570,14 @@ msgstr "Yapım işinin tamamlanması için hedef tarih. Bu tarihten sonra yapım
#: report/templates/report/inventree_test_report_base.html:77
#: stock/forms.py:140 stock/templates/stock/item_base.html:269
#: stock/templates/stock/stock_adjust.html:18
-#: templates/js/translated/barcode.js:364 templates/js/translated/bom.js:225
-#: templates/js/translated/build.js:271 templates/js/translated/build.js:606
-#: templates/js/translated/build.js:1172
-#: templates/js/translated/model_renderers.js:56
-#: templates/js/translated/order.js:482 templates/js/translated/part.js:1148
-#: templates/js/translated/part.js:1270 templates/js/translated/part.js:1326
-#: templates/js/translated/stock.js:1534 templates/js/translated/stock.js:1732
+#: templates/js/translated/barcode.js:386 templates/js/translated/bom.js:245
+#: templates/js/translated/build.js:298 templates/js/translated/build.js:629
+#: templates/js/translated/build.js:1189
+#: templates/js/translated/model_renderers.js:59
+#: templates/js/translated/order.js:522 templates/js/translated/order.js:824
+#: templates/js/translated/part.js:1317 templates/js/translated/part.js:1440
+#: templates/js/translated/part.js:1518 templates/js/translated/stock.js:1675
+#: templates/js/translated/stock.js:1850
msgid "Quantity"
msgstr "Miktar"
@@ -589,13 +618,15 @@ msgid "Mark build as complete"
msgstr "Yapım işini tamamlandı olarak işaretle"
#: build/forms.py:210 build/templates/build/auto_allocate.html:18
-#: stock/forms.py:280 stock/templates/stock/item_base.html:299
+#: order/serializers.py:216 order/serializers.py:275 stock/forms.py:280
+#: stock/templates/stock/item_base.html:299
#: stock/templates/stock/stock_adjust.html:17
-#: templates/InvenTree/search.html:260 templates/js/translated/barcode.js:363
-#: templates/js/translated/barcode.js:531 templates/js/translated/build.js:256
-#: templates/js/translated/build.js:620 templates/js/translated/order.js:467
-#: templates/js/translated/stock.js:134 templates/js/translated/stock.js:260
-#: templates/js/translated/stock.js:1012 templates/js/translated/stock.js:1426
+#: templates/InvenTree/search.html:260 templates/js/translated/barcode.js:385
+#: templates/js/translated/barcode.js:555 templates/js/translated/build.js:283
+#: templates/js/translated/build.js:643 templates/js/translated/order.js:809
+#: templates/js/translated/part.js:174 templates/js/translated/stock.js:203
+#: templates/js/translated/stock.js:329 templates/js/translated/stock.js:942
+#: templates/js/translated/stock.js:1567
msgid "Location"
msgstr "Konum"
@@ -604,13 +635,13 @@ msgid "Location of completed parts"
msgstr "Tamamlanmış parçaların konumu"
#: build/forms.py:215 build/templates/build/build_base.html:138
-#: build/templates/build/detail.html:62 order/models.py:549
-#: order/templates/order/receive_parts.html:24
+#: build/templates/build/detail.html:62 order/models.py:555
+#: order/serializers.py:230 order/templates/order/receive_parts.html:24
#: stock/templates/stock/item_base.html:422 templates/InvenTree/search.html:252
-#: templates/js/translated/barcode.js:119 templates/js/translated/build.js:902
-#: templates/js/translated/order.js:271 templates/js/translated/order.js:374
-#: templates/js/translated/stock.js:999 templates/js/translated/stock.js:1503
-#: templates/js/translated/stock.js:1748
+#: templates/js/translated/barcode.js:141 templates/js/translated/build.js:925
+#: templates/js/translated/order.js:345 templates/js/translated/order.js:715
+#: templates/js/translated/stock.js:917 templates/js/translated/stock.js:1644
+#: templates/js/translated/stock.js:1866
msgid "Status"
msgstr "Durum"
@@ -649,7 +680,7 @@ msgstr ""
#: build/models.py:117 build/templates/build/build_base.html:9
#: build/templates/build/build_base.html:73
#: report/templates/report/inventree_build_order_base.html:106
-#: templates/js/translated/build.js:233
+#: templates/js/translated/build.js:260
msgid "Build Order"
msgstr "Yapım İşi Emri"
@@ -657,8 +688,8 @@ msgstr "Yapım İşi Emri"
#: build/templates/build/index.html:15
#: order/templates/order/sales_order_detail.html:34
#: order/templates/order/so_navbar.html:19
-#: order/templates/order/so_navbar.html:22 part/templates/part/navbar.html:42
-#: part/templates/part/navbar.html:45 templates/InvenTree/index.html:229
+#: order/templates/order/so_navbar.html:22 part/templates/part/navbar.html:50
+#: part/templates/part/navbar.html:53 templates/InvenTree/index.html:229
#: templates/InvenTree/search.html:185
#: templates/InvenTree/settings/navbar.html:101
#: templates/InvenTree/settings/navbar.html:103 users/models.py:44
@@ -669,14 +700,13 @@ msgstr "Yapım İşi Emirleri"
msgid "Build Order Reference"
msgstr "Yapım İşi Emri Referansı"
-#: build/models.py:179 order/models.py:246 order/models.py:533
-#: order/models.py:713 order/templates/order/purchase_order_detail.html:343
-#: order/templates/order/sales_order_detail.html:359 part/models.py:2349
-#: part/templates/part/bom_upload/match_parts.html:30
+#: build/models.py:179 order/models.py:246 order/models.py:539
+#: order/models.py:719 order/templates/order/sales_order_detail.html:360
+#: part/models.py:2365 part/templates/part/bom_upload/match_parts.html:30
#: report/templates/report/inventree_po_report.html:92
#: report/templates/report/inventree_so_report.html:92
-#: templates/js/translated/bom.js:217 templates/js/translated/build.js:695
-#: templates/js/translated/build.js:1166
+#: templates/js/translated/bom.js:237 templates/js/translated/build.js:718
+#: templates/js/translated/build.js:1183 templates/js/translated/order.js:517
msgid "Reference"
msgstr "Referans"
@@ -695,15 +725,14 @@ msgstr "Bu yapım işinin tahsis edildiği yapım işi emri"
#: build/models.py:205 build/templates/build/auto_allocate.html:16
#: build/templates/build/build_base.html:128
-#: build/templates/build/detail.html:29 company/models.py:654
-#: order/models.py:766 order/models.py:825
+#: build/templates/build/detail.html:29 company/models.py:704
+#: order/models.py:772 order/models.py:837
#: order/templates/order/order_wizard/select_parts.html:32
-#: order/templates/order/purchase_order_detail.html:297
#: order/templates/order/receive_parts.html:19
-#: order/templates/order/sales_order_detail.html:344 part/models.py:295
-#: part/models.py:1980 part/models.py:1996 part/models.py:2015
-#: part/models.py:2033 part/models.py:2112 part/models.py:2234
-#: part/models.py:2324 part/templates/part/detail.html:199
+#: order/templates/order/sales_order_detail.html:345 part/models.py:297
+#: part/models.py:1996 part/models.py:2012 part/models.py:2031
+#: part/models.py:2049 part/models.py:2128 part/models.py:2250
+#: part/models.py:2340 part/templates/part/detail.html:199
#: part/templates/part/part_app_base.html:8
#: part/templates/part/part_pricing.html:12
#: part/templates/part/set_category.html:13
@@ -711,12 +740,13 @@ msgstr "Bu yapım işinin tahsis edildiği yapım işi emri"
#: report/templates/report/inventree_po_report.html:90
#: report/templates/report/inventree_so_report.html:90
#: templates/InvenTree/search.html:112 templates/InvenTree/search.html:210
-#: templates/js/translated/barcode.js:362 templates/js/translated/bom.js:183
-#: templates/js/translated/build.js:586 templates/js/translated/build.js:873
-#: templates/js/translated/build.js:1139 templates/js/translated/company.js:438
-#: templates/js/translated/company.js:688 templates/js/translated/part.js:562
-#: templates/js/translated/part.js:725 templates/js/translated/stock.js:132
-#: templates/js/translated/stock.js:895 templates/js/translated/stock.js:1720
+#: templates/js/translated/barcode.js:384 templates/js/translated/bom.js:203
+#: templates/js/translated/build.js:609 templates/js/translated/build.js:896
+#: templates/js/translated/build.js:1156 templates/js/translated/company.js:487
+#: templates/js/translated/company.js:743 templates/js/translated/order.js:471
+#: templates/js/translated/part.js:694 templates/js/translated/part.js:864
+#: templates/js/translated/stock.js:201 templates/js/translated/stock.js:797
+#: templates/js/translated/stock.js:1838
msgid "Part"
msgstr "Parça"
@@ -764,7 +794,7 @@ msgstr "Tamamlanmış ögeler"
msgid "Number of stock items which have been completed"
msgstr "Tamamlanan stok kalemlerinin sayısı"
-#: build/models.py:257 part/templates/part/part_base.html:191
+#: build/models.py:257 part/templates/part/part_base.html:198
msgid "Build Status"
msgstr "Yapım İşi Durumu"
@@ -772,7 +802,7 @@ msgstr "Yapım İşi Durumu"
msgid "Build status code"
msgstr "Yapım işi durum kodu"
-#: build/models.py:265 stock/models.py:507
+#: build/models.py:265 stock/models.py:513
msgid "Batch Code"
msgstr "Sıra numarası"
@@ -780,16 +810,16 @@ msgstr "Sıra numarası"
msgid "Batch code for this build output"
msgstr "Yapım işi çıktısı için sıra numarası"
-#: build/models.py:272 order/models.py:162 part/models.py:851
-#: part/templates/part/part_base.html:264 templates/js/translated/order.js:382
+#: build/models.py:272 order/models.py:162 part/models.py:853
+#: part/templates/part/part_base.html:272 templates/js/translated/order.js:723
msgid "Creation Date"
msgstr "Oluşturulma tarihi"
-#: build/models.py:276 order/models.py:555
+#: build/models.py:276 order/models.py:561
msgid "Target completion date"
msgstr "Hedef tamamlama tarihi"
-#: build/models.py:280 order/models.py:288 templates/js/translated/build.js:950
+#: build/models.py:280 order/models.py:288 templates/js/translated/build.js:967
msgid "Completion Date"
msgstr "Tamamlama tarihi"
@@ -797,7 +827,7 @@ msgstr "Tamamlama tarihi"
msgid "completed by"
msgstr "tamamlayan"
-#: build/models.py:294 templates/js/translated/build.js:915
+#: build/models.py:294 templates/js/translated/build.js:938
msgid "Issued by"
msgstr "Veren"
@@ -808,9 +838,9 @@ msgstr "Bu yapım işi emrini veren kullanıcı"
#: build/models.py:303 build/templates/build/build_base.html:184
#: build/templates/build/detail.html:108 order/models.py:176
#: order/templates/order/order_base.html:138
-#: order/templates/order/sales_order_base.html:140 part/models.py:855
+#: order/templates/order/sales_order_base.html:140 part/models.py:857
#: report/templates/report/inventree_build_order_base.html:159
-#: templates/js/translated/build.js:930
+#: templates/js/translated/build.js:950
msgid "Responsible"
msgstr "Sorumlu"
@@ -821,34 +851,33 @@ msgstr "Bu yapım işi emrinden sorumlu kullanıcı"
#: build/models.py:309 build/templates/build/detail.html:94
#: company/templates/company/manufacturer_part.html:83
#: company/templates/company/supplier_part.html:82
-#: part/templates/part/part_base.html:258 stock/models.py:501
+#: part/templates/part/part_base.html:266 stock/models.py:507
#: stock/templates/stock/item_base.html:359
msgid "External Link"
msgstr "Harici Bağlantı"
-#: build/models.py:310 part/models.py:713 stock/models.py:503
+#: build/models.py:310 part/models.py:715 stock/models.py:509
msgid "Link to external URL"
msgstr "Harici URL'ye bağlantı"
#: build/models.py:314 build/templates/build/navbar.html:52
-#: company/models.py:139 company/models.py:526
-#: company/templates/company/navbar.html:63
-#: company/templates/company/navbar.html:66 order/models.py:180
-#: order/models.py:715 order/templates/order/po_navbar.html:38
+#: company/models.py:141 company/models.py:576
+#: company/templates/company/navbar.html:69
+#: company/templates/company/navbar.html:72 order/models.py:180
+#: order/models.py:721 order/templates/order/po_navbar.html:38
#: order/templates/order/po_navbar.html:41
-#: order/templates/order/purchase_order_detail.html:419
-#: order/templates/order/sales_order_detail.html:439
+#: order/templates/order/sales_order_detail.html:440
#: order/templates/order/so_navbar.html:33
-#: order/templates/order/so_navbar.html:36 part/models.py:840
-#: part/templates/part/detail.html:105 part/templates/part/navbar.html:108
-#: part/templates/part/navbar.html:111
+#: order/templates/order/so_navbar.html:36 part/models.py:842
+#: part/templates/part/detail.html:105 part/templates/part/navbar.html:120
+#: part/templates/part/navbar.html:123
#: report/templates/report/inventree_build_order_base.html:173
-#: stock/forms.py:138 stock/forms.py:250 stock/forms.py:282 stock/models.py:573
-#: stock/models.py:1715 stock/models.py:1821
-#: stock/templates/stock/navbar.html:57 templates/js/translated/barcode.js:37
-#: templates/js/translated/bom.js:369 templates/js/translated/company.js:784
-#: templates/js/translated/stock.js:268 templates/js/translated/stock.js:509
-#: templates/js/translated/stock.js:1090
+#: stock/forms.py:138 stock/forms.py:250 stock/forms.py:282 stock/models.py:579
+#: stock/models.py:1726 stock/models.py:1832
+#: stock/templates/stock/navbar.html:57 templates/js/translated/barcode.js:59
+#: templates/js/translated/bom.js:385 templates/js/translated/company.js:839
+#: templates/js/translated/order.js:604 templates/js/translated/stock.js:338
+#: templates/js/translated/stock.js:580 templates/js/translated/stock.js:1061
msgid "Notes"
msgstr "Notlar"
@@ -881,11 +910,11 @@ msgstr "Ana parça izlenebilir olarak işaretlendiğinden, yapım işi çıktıs
msgid "Allocated quantity ({n}) must not exceed available quantity ({q})"
msgstr "Tahsis edilecek miktar ({n}) mevcut miktarı ({q}) geçmemeli"
-#: build/models.py:1244 order/models.py:926
+#: build/models.py:1244 order/models.py:938
msgid "StockItem is over-allocated"
msgstr "Stok kalemi fazladan tahsis edilmiş"
-#: build/models.py:1248 order/models.py:929
+#: build/models.py:1248 order/models.py:941
msgid "Allocation quantity must be greater than zero"
msgstr "Tahsis edilen miktar sıfırdan büyük olmalıdır"
@@ -899,8 +928,8 @@ msgid "Selected stock item not found in BOM for part '{p}'"
msgstr "{p} parçasının malzeme listesindeki seçili stok kalemi bulunamadı"
#: build/models.py:1372 stock/templates/stock/item_base.html:331
-#: templates/InvenTree/search.html:183 templates/js/translated/build.js:846
-#: templates/navbar.html:29
+#: templates/InvenTree/search.html:183 templates/js/translated/build.js:869
+#: templates/navbar.html:35
msgid "Build"
msgstr "Yapım İşi"
@@ -912,9 +941,9 @@ msgstr "Yapım işi için tahsis edilen parçalar"
#: stock/templates/stock/item_base.html:31
#: stock/templates/stock/item_base.html:353
#: stock/templates/stock/stock_adjust.html:16
-#: templates/js/translated/build.js:244 templates/js/translated/build.js:249
-#: templates/js/translated/build.js:993 templates/js/translated/order.js:455
-#: templates/js/translated/order.js:460 templates/js/translated/stock.js:1485
+#: templates/js/translated/build.js:271 templates/js/translated/build.js:276
+#: templates/js/translated/build.js:1012 templates/js/translated/order.js:797
+#: templates/js/translated/order.js:802 templates/js/translated/stock.js:1626
msgid "Stock Item"
msgstr "Stok Kalemi"
@@ -936,12 +965,12 @@ msgstr "Hedef stok kalemi"
#: build/templates/build/allocation_card.html:21
#: build/templates/build/complete_output.html:46
-#: order/templates/order/sales_order_detail.html:205
-#: order/templates/order/sales_order_detail.html:290
+#: order/templates/order/sales_order_detail.html:206
+#: order/templates/order/sales_order_detail.html:291
#: report/templates/report/inventree_test_report_base.html:75
-#: stock/models.py:495 stock/templates/stock/item_base.html:251
-#: templates/js/translated/build.js:604
-#: templates/js/translated/model_renderers.js:54
+#: stock/models.py:501 stock/templates/stock/item_base.html:251
+#: templates/js/translated/build.js:627
+#: templates/js/translated/model_renderers.js:57
msgid "Serial Number"
msgstr "Seri Numara"
@@ -993,7 +1022,7 @@ msgstr "Stok, yapım işi emri için tamamen tahsis edilemedi"
#: company/templates/company/supplier_part.html:30
#: order/templates/order/order_base.html:26
#: order/templates/order/sales_order_base.html:37
-#: part/templates/part/category.html:27 part/templates/part/part_base.html:25
+#: part/templates/part/category.html:27 part/templates/part/part_base.html:30
#: stock/templates/stock/item_base.html:62
#: stock/templates/stock/location.html:31
msgid "Admin view"
@@ -1005,9 +1034,9 @@ msgstr "Yönetici görünümü"
#: order/templates/order/order_base.html:86
#: order/templates/order/sales_order_base.html:43
#: order/templates/order/sales_order_base.html:88
-#: templates/js/translated/table_filters.js:259
-#: templates/js/translated/table_filters.js:278
-#: templates/js/translated/table_filters.js:295
+#: templates/js/translated/table_filters.js:272
+#: templates/js/translated/table_filters.js:291
+#: templates/js/translated/table_filters.js:308
msgid "Overdue"
msgstr "Vadesi geçmiş"
@@ -1057,14 +1086,14 @@ msgid "Progress"
msgstr "İlerleme"
#: build/templates/build/build_base.html:170
-#: build/templates/build/detail.html:87 order/models.py:823
+#: build/templates/build/detail.html:87 order/models.py:835
#: order/templates/order/sales_order_base.html:9
#: order/templates/order/sales_order_base.html:35
#: order/templates/order/sales_order_ship.html:25
#: report/templates/report/inventree_build_order_base.html:136
#: report/templates/report/inventree_so_report.html:77
#: stock/templates/stock/item_base.html:293
-#: templates/js/translated/order.js:329
+#: templates/js/translated/order.js:670
msgid "Sales Order"
msgstr "Sipariş Emri"
@@ -1148,8 +1177,8 @@ msgstr "Seçili yapım işi emri için tahsis edilecek bir stok kalemi seçiniz"
#: build/templates/build/create_build_item.html:11
#, python-format
-msgid "The allocated stock will be installed into the following build output:
%(output)s"
-msgstr "Tahsis edilen stok bu yapım işi çıktısının kurulmasında kullanılacak:
%(output)s"
+msgid "The allocated stock will be installed into the following build output:
%(output)s"
+msgstr ""
#: build/templates/build/create_build_item.html:17
#, python-format
@@ -1172,9 +1201,9 @@ msgstr "Stok Kaynağı"
msgid "Stock can be taken from any available location."
msgstr "Stok herhangi bir konumdan alınabilir."
-#: build/templates/build/detail.html:49 order/forms.py:88 order/models.py:782
-#: order/templates/order/purchase_order_detail.html:408
+#: build/templates/build/detail.html:49 order/forms.py:88 order/models.py:794
#: order/templates/order/receive_parts.html:25 stock/forms.py:134
+#: templates/js/translated/order.js:593
msgid "Destination"
msgstr "Hedef"
@@ -1184,16 +1213,16 @@ msgstr "Hedef konumu belirtilmedi"
#: build/templates/build/detail.html:73
#: stock/templates/stock/item_base.html:317
-#: templates/js/translated/stock.js:1007 templates/js/translated/stock.js:1755
-#: templates/js/translated/table_filters.js:116
-#: templates/js/translated/table_filters.js:198
+#: templates/js/translated/stock.js:931 templates/js/translated/stock.js:1873
+#: templates/js/translated/table_filters.js:129
+#: templates/js/translated/table_filters.js:211
msgid "Batch"
msgstr "Toplu"
#: build/templates/build/detail.html:119
#: order/templates/order/order_base.html:111
#: order/templates/order/sales_order_base.html:113
-#: templates/js/translated/build.js:910
+#: templates/js/translated/build.js:933
msgid "Created"
msgstr "Oluşturuldu"
@@ -1201,7 +1230,7 @@ msgstr "Oluşturuldu"
msgid "No target date set"
msgstr "Hedef tarih ayarlanmadı"
-#: build/templates/build/detail.html:135 templates/js/translated/build.js:888
+#: build/templates/build/detail.html:135 templates/js/translated/build.js:911
msgid "Completed"
msgstr "Tamamlandı"
@@ -1225,7 +1254,7 @@ msgstr "Yapım işi için stok tahsis et"
msgid "Auto Allocate"
msgstr "Otomatik Tahsis Et"
-#: build/templates/build/detail.html:175 templates/js/translated/build.js:778
+#: build/templates/build/detail.html:175 templates/js/translated/build.js:801
msgid "Unallocate stock"
msgstr "Stok tahsisini kaldır"
@@ -1238,8 +1267,8 @@ msgid "Order required parts"
msgstr "Gerekli parçaları sipariş edin"
#: build/templates/build/detail.html:180
-#: company/templates/company/detail.html:33
-#: company/templates/company/detail.html:75 order/views.py:679
+#: company/templates/company/detail.html:32
+#: company/templates/company/detail.html:72 order/views.py:679
#: part/templates/part/category.html:140
msgid "Order Parts"
msgstr "Parça Siparişi"
@@ -1288,8 +1317,8 @@ msgstr "Tamamlanmış Yapım İşi Çıktıları"
#: build/templates/build/navbar.html:45 order/templates/order/po_navbar.html:35
#: order/templates/order/sales_order_detail.html:43
#: order/templates/order/so_navbar.html:29 part/templates/part/detail.html:173
-#: part/templates/part/navbar.html:102 part/templates/part/navbar.html:105
-#: stock/templates/stock/item.html:87 stock/templates/stock/navbar.html:47
+#: part/templates/part/navbar.html:114 part/templates/part/navbar.html:117
+#: stock/templates/stock/item.html:88 stock/templates/stock/navbar.html:47
#: stock/templates/stock/navbar.html:50
msgid "Attachments"
msgstr "Ekler"
@@ -1298,48 +1327,48 @@ msgstr "Ekler"
msgid "Build Notes"
msgstr "Yapım İşi Notları"
-#: build/templates/build/detail.html:261 build/templates/build/detail.html:397
-#: company/templates/company/detail.html:173
-#: company/templates/company/detail.html:200
+#: build/templates/build/detail.html:261 build/templates/build/detail.html:398
+#: company/templates/company/detail.html:169
+#: company/templates/company/detail.html:196
#: order/templates/order/purchase_order_detail.html:62
#: order/templates/order/purchase_order_detail.html:95
#: order/templates/order/sales_order_detail.html:58
#: order/templates/order/sales_order_detail.html:85
-#: part/templates/part/detail.html:109 stock/templates/stock/item.html:102
-#: stock/templates/stock/item.html:187
+#: part/templates/part/detail.html:109 stock/templates/stock/item.html:103
+#: stock/templates/stock/item.html:188
msgid "Edit Notes"
msgstr "Notları Düzenle"
#: build/templates/build/detail.html:357
#: order/templates/order/po_attachments.html:79
-#: order/templates/order/purchase_order_detail.html:156
-#: order/templates/order/sales_order_detail.html:145
-#: part/templates/part/detail.html:802 stock/templates/stock/item.html:251
+#: order/templates/order/purchase_order_detail.html:157
+#: order/templates/order/sales_order_detail.html:146
+#: part/templates/part/detail.html:920 stock/templates/stock/item.html:253
#: templates/attachment_table.html:6
msgid "Add Attachment"
msgstr "Dosya Ekle"
-#: build/templates/build/detail.html:375
+#: build/templates/build/detail.html:376
#: order/templates/order/po_attachments.html:51
-#: order/templates/order/purchase_order_detail.html:128
-#: order/templates/order/sales_order_detail.html:118
-#: part/templates/part/detail.html:756 stock/templates/stock/item.html:219
+#: order/templates/order/purchase_order_detail.html:129
+#: order/templates/order/sales_order_detail.html:119
+#: part/templates/part/detail.html:874 stock/templates/stock/item.html:221
msgid "Edit Attachment"
msgstr "Ek Düzenle"
-#: build/templates/build/detail.html:382
+#: build/templates/build/detail.html:383
#: order/templates/order/po_attachments.html:58
-#: order/templates/order/purchase_order_detail.html:135
-#: order/templates/order/sales_order_detail.html:124
-#: part/templates/part/detail.html:765 stock/templates/stock/item.html:228
+#: order/templates/order/purchase_order_detail.html:136
+#: order/templates/order/sales_order_detail.html:125
+#: part/templates/part/detail.html:883 stock/templates/stock/item.html:230
msgid "Confirm Delete Operation"
msgstr "Silme İşlemini Onayla"
-#: build/templates/build/detail.html:383
+#: build/templates/build/detail.html:384
#: order/templates/order/po_attachments.html:59
-#: order/templates/order/purchase_order_detail.html:136
-#: order/templates/order/sales_order_detail.html:125
-#: part/templates/part/detail.html:766 stock/templates/stock/item.html:229
+#: order/templates/order/purchase_order_detail.html:137
+#: order/templates/order/sales_order_detail.html:126
+#: part/templates/part/detail.html:884 stock/templates/stock/item.html:231
msgid "Delete Attachment"
msgstr "Eki Sil"
@@ -1372,7 +1401,7 @@ msgid "Build Order Details"
msgstr "Yapım İşi Emri Detayları"
#: build/templates/build/navbar.html:15 order/templates/order/po_navbar.html:15
-#: templates/js/translated/stock.js:1414
+#: templates/js/translated/stock.js:1555
msgid "Details"
msgstr "Detaylar"
@@ -1501,9 +1530,9 @@ msgstr "Öge stokta bulunmalı"
msgid "Stock item is over-allocated"
msgstr "Stok kalemi fazladan tahsis edilmiş"
-#: build/views.py:705 templates/js/translated/bom.js:250
-#: templates/js/translated/build.js:705 templates/js/translated/build.js:1000
-#: templates/js/translated/build.js:1179
+#: build/views.py:705 templates/js/translated/bom.js:269
+#: templates/js/translated/build.js:728 templates/js/translated/build.js:1019
+#: templates/js/translated/build.js:1196
msgid "Available"
msgstr "Mevcut"
@@ -1539,7 +1568,7 @@ msgstr "Dosya okurken hata (hatalı ölçüler)"
msgid "Error reading file (data could be corrupted)"
msgstr "Dosya okurken hata (veri bozulmuş olabilir)"
-#: common/forms.py:34 templates/js/translated/attachment.js:42
+#: common/forms.py:34 templates/js/translated/attachment.js:54
msgid "File"
msgstr "Dosya"
@@ -1556,546 +1585,594 @@ msgstr "{name.title()} Dosya"
msgid "Select {name} file to upload"
msgstr "{name} dosyasını yüklemek için seçin"
-#: common/models.py:322 common/models.py:815 common/models.py:962
+#: common/models.py:308 common/models.py:839 common/models.py:986
msgid "Settings key (must be unique - case insensitive"
msgstr ""
-#: common/models.py:324
+#: common/models.py:310
msgid "Settings value"
msgstr ""
-#: common/models.py:359
+#: common/models.py:345
msgid "Must be an integer value"
msgstr "Bir tam sayı olmalı"
-#: common/models.py:382
+#: common/models.py:368
msgid "Value must be a boolean value"
msgstr ""
-#: common/models.py:393
+#: common/models.py:379
msgid "Value must be an integer value"
msgstr ""
-#: common/models.py:416
+#: common/models.py:402
msgid "Key string must be unique"
msgstr "Anahtar dizesi benzersiz olmalı"
-#: common/models.py:523
+#: common/models.py:509
msgid "InvenTree Instance Name"
msgstr ""
-#: common/models.py:525
+#: common/models.py:511
msgid "String descriptor for the server instance"
msgstr ""
-#: common/models.py:529
+#: common/models.py:515
msgid "Use instance name"
msgstr ""
-#: common/models.py:530
+#: common/models.py:516
msgid "Use the instance name in the title-bar"
msgstr ""
-#: common/models.py:536 company/models.py:97 company/models.py:98
+#: common/models.py:522 company/models.py:99 company/models.py:100
msgid "Company name"
msgstr "Şirket adı"
-#: common/models.py:537
+#: common/models.py:523
msgid "Internal company name"
msgstr ""
-#: common/models.py:542
+#: common/models.py:528
msgid "Base URL"
msgstr "Ana URL"
-#: common/models.py:543
+#: common/models.py:529
msgid "Base URL for server instance"
msgstr ""
-#: common/models.py:549
+#: common/models.py:535
msgid "Default Currency"
msgstr "Varsayılan Para Birimi"
-#: common/models.py:550
+#: common/models.py:536
msgid "Default currency"
msgstr "Varsayılan para birimi"
-#: common/models.py:556
+#: common/models.py:542
msgid "Download from URL"
msgstr "URL'den indir"
-#: common/models.py:557
+#: common/models.py:543
msgid "Allow download of remote images and files from external URL"
msgstr "Harici URL'den resim ve dosyaların indirilmesine izin ver"
-#: common/models.py:563
+#: common/models.py:549
msgid "Barcode Support"
msgstr "Barkod Desteği"
-#: common/models.py:564
+#: common/models.py:550
msgid "Enable barcode scanner support"
msgstr "Barkod tarayıcı desteğini etkinleştir"
-#: common/models.py:570
+#: common/models.py:556
msgid "IPN Regex"
msgstr "DPN Regex"
-#: common/models.py:571
+#: common/models.py:557
msgid "Regular expression pattern for matching Part IPN"
msgstr "Parça DPN eşleştirmesi için Düzenli İfade Kalıbı (Regex)"
-#: common/models.py:575
+#: common/models.py:561
msgid "Allow Duplicate IPN"
msgstr "Yinelenen DPN'ye İzin Ver"
-#: common/models.py:576
+#: common/models.py:562
msgid "Allow multiple parts to share the same IPN"
msgstr "Birden çok parçanın aynı DPN'yi paylaşmasına izin ver"
-#: common/models.py:582
+#: common/models.py:568
msgid "Allow Editing IPN"
msgstr "DPN Düzenlemeye İzin Ver"
-#: common/models.py:583
+#: common/models.py:569
msgid "Allow changing the IPN value while editing a part"
msgstr "Parçayı düzenlerken DPN değiştirmeye izin ver"
-#: common/models.py:589
+#: common/models.py:575
msgid "Copy Part BOM Data"
msgstr ""
-#: common/models.py:590
+#: common/models.py:576
msgid "Copy BOM data by default when duplicating a part"
msgstr ""
-#: common/models.py:596
+#: common/models.py:582
msgid "Copy Part Parameter Data"
msgstr ""
-#: common/models.py:597
+#: common/models.py:583
msgid "Copy parameter data by default when duplicating a part"
msgstr ""
-#: common/models.py:603
+#: common/models.py:589
msgid "Copy Part Test Data"
msgstr ""
-#: common/models.py:604
+#: common/models.py:590
msgid "Copy test data by default when duplicating a part"
msgstr ""
-#: common/models.py:610
+#: common/models.py:596
msgid "Copy Category Parameter Templates"
msgstr "Kategori Paremetre Sablonu Kopyala"
-#: common/models.py:611
+#: common/models.py:597
msgid "Copy category parameter templates when creating a part"
msgstr "Parça oluştururken kategori parametre şablonlarını kopyala"
-#: common/models.py:617 part/models.py:2236 report/models.py:187
-#: stock/forms.py:224 templates/js/translated/table_filters.js:25
-#: templates/js/translated/table_filters.js:329
+#: common/models.py:603 part/models.py:2252 report/models.py:187
+#: stock/forms.py:224 templates/js/translated/table_filters.js:38
+#: templates/js/translated/table_filters.js:342
msgid "Template"
msgstr "Şablon"
-#: common/models.py:618
+#: common/models.py:604
msgid "Parts are templates by default"
msgstr "Parçaları varsayılan olan şablondur"
-#: common/models.py:624 part/models.py:803
-#: templates/js/translated/table_filters.js:133
-#: templates/js/translated/table_filters.js:341
+#: common/models.py:610 part/models.py:805
+#: templates/js/translated/table_filters.js:146
+#: templates/js/translated/table_filters.js:354
msgid "Assembly"
msgstr "Montaj"
-#: common/models.py:625
+#: common/models.py:611
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:631 part/models.py:809
-#: templates/js/translated/table_filters.js:345
+#: common/models.py:617 part/models.py:811
+#: templates/js/translated/table_filters.js:358
msgid "Component"
msgstr "Bileşen"
-#: common/models.py:632
+#: common/models.py:618
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:638 part/models.py:820
+#: common/models.py:624 part/models.py:822
msgid "Purchaseable"
msgstr "Satın Alınabilir"
-#: common/models.py:639
+#: common/models.py:625
msgid "Parts are purchaseable by default"
msgstr "Parçalar varsayılan olarak satın alınabilir"
-#: common/models.py:645 part/models.py:825
-#: templates/js/translated/table_filters.js:353
+#: common/models.py:631 part/models.py:827
+#: templates/js/translated/table_filters.js:366
msgid "Salable"
msgstr "Satılabilir"
-#: common/models.py:646
+#: common/models.py:632
msgid "Parts are salable by default"
msgstr "Parçalar varsayılan olarak satılabilir"
-#: common/models.py:652 part/models.py:815
-#: templates/js/translated/table_filters.js:33
-#: templates/js/translated/table_filters.js:357
+#: common/models.py:638 part/models.py:817
+#: templates/js/translated/table_filters.js:46
+#: templates/js/translated/table_filters.js:370
msgid "Trackable"
msgstr "Takip Edilebilir"
-#: common/models.py:653
+#: common/models.py:639
msgid "Parts are trackable by default"
msgstr "Parçalar varsayılan olarak takip edilebilir"
-#: common/models.py:659 part/models.py:835
-#: part/templates/part/part_base.html:61
-#: templates/js/translated/table_filters.js:29
+#: common/models.py:645 part/models.py:837
+#: part/templates/part/part_base.html:66
+#: templates/js/translated/table_filters.js:42
msgid "Virtual"
msgstr "Sanal"
-#: common/models.py:660
+#: common/models.py:646
msgid "Parts are virtual by default"
msgstr "Parçalar varsayılan olarak sanaldır"
-#: common/models.py:667
+#: common/models.py:653
msgid "Show Quantity in Forms"
msgstr "Formlarda Miktarı Göster"
-#: common/models.py:668
+#: common/models.py:654
msgid "Display available part quantity in some forms"
msgstr ""
-#: common/models.py:674
+#: common/models.py:660
msgid "Show Import in Views"
msgstr ""
-#: common/models.py:675
+#: common/models.py:661
msgid "Display the import wizard in some part views"
msgstr ""
-#: common/models.py:681
+#: common/models.py:667
msgid "Show Price in Forms"
msgstr "Formlarda Fiyat Göster"
-#: common/models.py:682
+#: common/models.py:668
msgid "Display part price in some forms"
msgstr ""
-#: common/models.py:688
+#: common/models.py:674
msgid "Show related parts"
msgstr "İlgili parçaları göster"
-#: common/models.py:689
+#: common/models.py:675
msgid "Display related parts for a part"
msgstr ""
-#: common/models.py:695
+#: common/models.py:681
msgid "Create initial stock"
msgstr ""
-#: common/models.py:696
+#: common/models.py:682
msgid "Create initial stock on part creation"
msgstr ""
-#: common/models.py:702
+#: common/models.py:688
msgid "Internal Prices"
msgstr ""
-#: common/models.py:703
+#: common/models.py:689
msgid "Enable internal prices for parts"
msgstr ""
-#: common/models.py:709
+#: common/models.py:695
msgid "Internal Price as BOM-Price"
msgstr ""
-#: common/models.py:710
+#: common/models.py:696
msgid "Use the internal price (if set) in BOM-price calculations"
msgstr ""
-#: common/models.py:716 templates/stats.html:25
+#: common/models.py:702 templates/stats.html:25
msgid "Debug Mode"
msgstr "Hata Ayıklama Modu"
-#: common/models.py:717
+#: common/models.py:703
msgid "Generate reports in debug mode (HTML output)"
msgstr "Raporları hata ayıklama modunda üret (HTML çıktısı)"
-#: common/models.py:723
+#: common/models.py:709
msgid "Page Size"
msgstr "Sayfa Boyutu"
-#: common/models.py:724
+#: common/models.py:710
msgid "Default page size for PDF reports"
msgstr "PDF raporlar için varsayılan sayfa boyutu"
-#: common/models.py:734
+#: common/models.py:720
msgid "Test Reports"
msgstr "Test Raporları"
-#: common/models.py:735
+#: common/models.py:721
msgid "Enable generation of test reports"
msgstr ""
-#: common/models.py:741
+#: common/models.py:727
msgid "Stock Expiry"
msgstr ""
-#: common/models.py:742
+#: common/models.py:728
msgid "Enable stock expiry functionality"
msgstr ""
-#: common/models.py:748
+#: common/models.py:734
msgid "Sell Expired Stock"
msgstr ""
-#: common/models.py:749
+#: common/models.py:735
msgid "Allow sale of expired stock"
msgstr ""
-#: common/models.py:755
+#: common/models.py:741
msgid "Stock Stale Time"
msgstr ""
-#: common/models.py:756
+#: common/models.py:742
msgid "Number of days stock items are considered stale before expiring"
msgstr ""
-#: common/models.py:758
+#: common/models.py:744
msgid "days"
msgstr "günler"
-#: common/models.py:763
+#: common/models.py:749
msgid "Build Expired Stock"
msgstr ""
-#: common/models.py:764
+#: common/models.py:750
msgid "Allow building with expired stock"
msgstr ""
-#: common/models.py:770
+#: common/models.py:756
msgid "Stock Ownership Control"
msgstr ""
-#: common/models.py:771
+#: common/models.py:757
msgid "Enable ownership control over stock locations and items"
msgstr "Stok konumu ve ögeler üzerinde sahiplik kontrolünü etkinleştirin"
-#: common/models.py:777
+#: common/models.py:763
msgid "Group by Part"
msgstr ""
-#: common/models.py:778
+#: common/models.py:764
msgid "Group stock items by part reference in table views"
msgstr ""
-#: common/models.py:784
+#: common/models.py:770
msgid "Build Order Reference Prefix"
msgstr ""
-#: common/models.py:785
+#: common/models.py:771
msgid "Prefix value for build order reference"
msgstr ""
-#: common/models.py:790
+#: common/models.py:776
msgid "Build Order Reference Regex"
msgstr ""
-#: common/models.py:791
+#: common/models.py:777
msgid "Regular expression pattern for matching build order reference"
msgstr ""
-#: common/models.py:795
+#: common/models.py:781
msgid "Sales Order Reference Prefix"
msgstr ""
-#: common/models.py:796
+#: common/models.py:782
msgid "Prefix value for sales order reference"
msgstr ""
-#: common/models.py:801
+#: common/models.py:787
msgid "Purchase Order Reference Prefix"
msgstr ""
-#: common/models.py:802
+#: common/models.py:788
msgid "Prefix value for purchase order reference"
msgstr ""
-#: common/models.py:826
+#: common/models.py:794
+msgid "Enable build"
+msgstr ""
+
+#: common/models.py:795
+msgid "Enable build functionality in InvenTree interface"
+msgstr ""
+
+#: common/models.py:800
+msgid "Enable buy"
+msgstr ""
+
+#: common/models.py:801
+msgid "Enable buy functionality in InvenTree interface"
+msgstr ""
+
+#: common/models.py:806
+msgid "Enable sell"
+msgstr ""
+
+#: common/models.py:807
+msgid "Enable sell functionality in InvenTree interface"
+msgstr ""
+
+#: common/models.py:812
+msgid "Enable stock"
+msgstr ""
+
+#: common/models.py:813
+msgid "Enable stock functionality in InvenTree interface"
+msgstr ""
+
+#: common/models.py:818
+msgid "Enable SO"
+msgstr ""
+
+#: common/models.py:819
+msgid "Enable SO functionality in InvenTree interface"
+msgstr ""
+
+#: common/models.py:824
+msgid "Enable PO"
+msgstr ""
+
+#: common/models.py:825
+msgid "Enable PO functionality in InvenTree interface"
+msgstr ""
+
+#: common/models.py:850
msgid "Show starred parts"
msgstr ""
-#: common/models.py:827
+#: common/models.py:851
msgid "Show starred parts on the homepage"
msgstr ""
-#: common/models.py:832
+#: common/models.py:856
msgid "Show latest parts"
msgstr ""
-#: common/models.py:833
+#: common/models.py:857
msgid "Show latest parts on the homepage"
msgstr ""
-#: common/models.py:838
+#: common/models.py:862
msgid "Recent Part Count"
msgstr ""
-#: common/models.py:839
+#: common/models.py:863
msgid "Number of recent parts to display on index page"
msgstr ""
-#: common/models.py:845
+#: common/models.py:869
msgid "Show unvalidated BOMs"
msgstr ""
-#: common/models.py:846
+#: common/models.py:870
msgid "Show BOMs that await validation on the homepage"
msgstr ""
-#: common/models.py:851
+#: common/models.py:875
msgid "Show recent stock changes"
msgstr ""
-#: common/models.py:852
+#: common/models.py:876
msgid "Show recently changed stock items on the homepage"
msgstr ""
-#: common/models.py:857
+#: common/models.py:881
msgid "Recent Stock Count"
msgstr ""
-#: common/models.py:858
+#: common/models.py:882
msgid "Number of recent stock items to display on index page"
msgstr ""
-#: common/models.py:863
+#: common/models.py:887
msgid "Show low stock"
msgstr ""
-#: common/models.py:864
+#: common/models.py:888
msgid "Show low stock items on the homepage"
msgstr ""
-#: common/models.py:869
+#: common/models.py:893
msgid "Show depleted stock"
msgstr ""
-#: common/models.py:870
+#: common/models.py:894
msgid "Show depleted stock items on the homepage"
msgstr ""
-#: common/models.py:875
+#: common/models.py:899
msgid "Show needed stock"
msgstr ""
-#: common/models.py:876
+#: common/models.py:900
msgid "Show stock items needed for builds on the homepage"
msgstr ""
-#: common/models.py:881
+#: common/models.py:905
msgid "Show expired stock"
msgstr ""
-#: common/models.py:882
+#: common/models.py:906
msgid "Show expired stock items on the homepage"
msgstr ""
-#: common/models.py:887
+#: common/models.py:911
msgid "Show stale stock"
msgstr ""
-#: common/models.py:888
+#: common/models.py:912
msgid "Show stale stock items on the homepage"
msgstr ""
-#: common/models.py:893
+#: common/models.py:917
msgid "Show pending builds"
msgstr ""
-#: common/models.py:894
+#: common/models.py:918
msgid "Show pending builds on the homepage"
msgstr ""
-#: common/models.py:899
+#: common/models.py:923
msgid "Show overdue builds"
msgstr ""
-#: common/models.py:900
+#: common/models.py:924
msgid "Show overdue builds on the homepage"
msgstr ""
-#: common/models.py:905
+#: common/models.py:929
msgid "Show outstanding POs"
msgstr ""
-#: common/models.py:906
+#: common/models.py:930
msgid "Show outstanding POs on the homepage"
msgstr ""
-#: common/models.py:911
+#: common/models.py:935
msgid "Show overdue POs"
msgstr ""
-#: common/models.py:912
+#: common/models.py:936
msgid "Show overdue POs on the homepage"
msgstr ""
-#: common/models.py:917
+#: common/models.py:941
msgid "Show outstanding SOs"
msgstr ""
-#: common/models.py:918
+#: common/models.py:942
msgid "Show outstanding SOs on the homepage"
msgstr ""
-#: common/models.py:923
+#: common/models.py:947
msgid "Show overdue SOs"
msgstr ""
-#: common/models.py:924
+#: common/models.py:948
msgid "Show overdue SOs on the homepage"
msgstr ""
-#: common/models.py:930
+#: common/models.py:954
msgid "Inline label display"
msgstr ""
-#: common/models.py:931
+#: common/models.py:955
msgid "Display PDF labels in the browser, instead of downloading as a file"
msgstr ""
-#: common/models.py:937
+#: common/models.py:961
msgid "Inline report display"
msgstr ""
-#: common/models.py:938
+#: common/models.py:962
msgid "Display PDF reports in the browser, instead of downloading as a file"
msgstr ""
-#: common/models.py:944
+#: common/models.py:968
msgid "Search Preview Results"
msgstr ""
-#: common/models.py:945
+#: common/models.py:969
msgid "Number of results to show in search preview window"
msgstr ""
-#: common/models.py:1002 company/forms.py:43
+#: common/models.py:1026 company/forms.py:43
msgid "Price break quantity"
msgstr ""
-#: common/models.py:1009 company/templates/company/supplier_part.html:231
-#: templates/js/translated/part.js:1153
+#: common/models.py:1033 company/templates/company/supplier_part.html:231
+#: templates/js/translated/part.js:1322
msgid "Price"
msgstr "Fiyat"
-#: common/models.py:1010
+#: common/models.py:1034
msgid "Unit price at specified quantity"
msgstr ""
-#: common/models.py:1103
+#: common/models.py:1127
msgid "Default"
msgstr "Varsayılan"
@@ -2123,7 +2200,7 @@ msgstr "Kullanıcı Ayarlarını Değiştir"
#: order/templates/order/po_navbar.html:19
#: order/templates/order/po_navbar.html:22
#: order/templates/order/purchase_order_detail.html:26 order/views.py:290
-#: part/templates/part/bom_upload/upload_file.html:45
+#: part/templates/part/bom_upload/upload_file.html:65
#: part/templates/part/import_wizard/part_upload.html:45 part/views.py:268
#: part/views.py:882
msgid "Upload File"
@@ -2154,7 +2231,7 @@ msgstr ""
#: order/templates/order/order_wizard/po_upload.html:40
#: 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:43
+#: part/templates/part/bom_upload/upload_file.html:63
#: 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:43
@@ -2169,244 +2246,249 @@ msgstr ""
msgid "Image URL"
msgstr ""
-#: company/models.py:102
+#: company/models.py:104
msgid "Company description"
msgstr ""
-#: company/models.py:103
+#: company/models.py:105
msgid "Description of the company"
msgstr ""
-#: company/models.py:109 company/templates/company/company_base.html:70
-#: templates/js/translated/company.js:303
+#: company/models.py:111 company/templates/company/company_base.html:70
+#: templates/js/translated/company.js:348
msgid "Website"
msgstr ""
-#: company/models.py:110
+#: company/models.py:112
msgid "Company website URL"
msgstr "Şirket web sitesi"
-#: company/models.py:114 company/templates/company/company_base.html:88
+#: company/models.py:116 company/templates/company/company_base.html:88
msgid "Address"
msgstr "Adres"
-#: company/models.py:115
+#: company/models.py:117
msgid "Company address"
msgstr "Şirket adresi"
-#: company/models.py:118
+#: company/models.py:120
msgid "Phone number"
msgstr "Telefon numarası"
-#: company/models.py:119
+#: company/models.py:121
msgid "Contact phone number"
msgstr "İletişim telefon numarası"
-#: company/models.py:122 company/templates/company/company_base.html:102
+#: company/models.py:124 company/templates/company/company_base.html:102
msgid "Email"
msgstr "E-posta"
-#: company/models.py:122
+#: company/models.py:124
msgid "Contact email address"
msgstr "İletişim e-posta adresi"
-#: company/models.py:125 company/templates/company/company_base.html:109
+#: company/models.py:127 company/templates/company/company_base.html:109
msgid "Contact"
msgstr "İletişim"
-#: company/models.py:126
+#: company/models.py:128
msgid "Point of contact"
msgstr ""
-#: company/models.py:128 company/models.py:345 company/models.py:513
-#: order/models.py:160 part/models.py:712
+#: company/models.py:130 company/models.py:347 company/models.py:563
+#: order/models.py:160 part/models.py:714
#: report/templates/report/inventree_build_order_base.html:165
-#: templates/js/translated/company.js:486
-#: templates/js/translated/company.js:768 templates/js/translated/part.js:819
+#: templates/js/translated/company.js:535
+#: templates/js/translated/company.js:823 templates/js/translated/part.js:972
msgid "Link"
msgstr "Bağlantı"
-#: company/models.py:128
+#: company/models.py:130
msgid "Link to external company information"
msgstr ""
-#: company/models.py:136 part/models.py:722
+#: company/models.py:138 part/models.py:724
msgid "Image"
msgstr "Resim"
-#: company/models.py:141
+#: company/models.py:143
msgid "is customer"
msgstr "müşteri mi"
-#: company/models.py:141
+#: company/models.py:143
msgid "Do you sell items to this company?"
msgstr "Bu şirkete ürün satıyor musunuz?"
-#: company/models.py:143
+#: company/models.py:145
msgid "is supplier"
msgstr "tedarikçi mi"
-#: company/models.py:143
+#: company/models.py:145
msgid "Do you purchase items from this company?"
msgstr "Bu şirketten ürün satın alıyor musunuz?"
-#: company/models.py:145
+#: company/models.py:147
msgid "is manufacturer"
msgstr "üretici mi"
-#: company/models.py:145
+#: company/models.py:147
msgid "Does this company manufacture parts?"
msgstr "Bu şirket üretim yapıyor mu?"
-#: company/models.py:149 company/serializers.py:245
-#: company/templates/company/company_base.html:76
+#: company/models.py:151 company/serializers.py:264
+#: company/templates/company/company_base.html:76 stock/serializers.py:155
msgid "Currency"
msgstr "Para birimi"
-#: company/models.py:152
+#: company/models.py:154
msgid "Default currency used for this company"
msgstr "Bu şirket için varsayılan para birimi"
-#: company/models.py:317 company/models.py:484 stock/models.py:448
+#: company/models.py:319 company/models.py:534 stock/models.py:454
#: stock/templates/stock/item_base.html:237
msgid "Base Part"
msgstr "Temel Parça"
-#: company/models.py:321 company/models.py:488 order/views.py:1082
+#: company/models.py:323 company/models.py:538 order/views.py:1082
msgid "Select part"
msgstr "Parça seçin"
-#: company/models.py:332 company/templates/company/company_base.html:116
+#: company/models.py:334 company/templates/company/company_base.html:116
#: company/templates/company/manufacturer_part.html:89
#: company/templates/company/supplier_part.html:98 part/bom.py:170
#: part/bom.py:241 stock/templates/stock/item_base.html:366
-#: templates/js/translated/company.js:287
-#: templates/js/translated/company.js:463
-#: templates/js/translated/company.js:739
+#: templates/js/translated/company.js:332
+#: templates/js/translated/company.js:512
+#: templates/js/translated/company.js:794 templates/js/translated/part.js:222
msgid "Manufacturer"
msgstr "Üretici"
-#: company/models.py:333
+#: company/models.py:335 templates/js/translated/part.js:223
msgid "Select manufacturer"
msgstr "Üretici seçin"
-#: company/models.py:339 company/templates/company/manufacturer_part.html:93
-#: company/templates/company/supplier_part.html:106
-#: order/templates/order/purchase_order_detail.html:331 part/bom.py:171
-#: part/bom.py:242 templates/js/translated/company.js:479
-#: templates/js/translated/company.js:757
+#: company/models.py:341 company/templates/company/manufacturer_part.html:93
+#: company/templates/company/supplier_part.html:106 part/bom.py:171
+#: part/bom.py:242 templates/js/translated/company.js:528
+#: templates/js/translated/company.js:812 templates/js/translated/order.js:505
+#: templates/js/translated/part.js:233
msgid "MPN"
msgstr "ÜPN"
-#: company/models.py:340
+#: company/models.py:342 templates/js/translated/part.js:234
msgid "Manufacturer Part Number"
msgstr "Üretici Parça Numarası"
-#: company/models.py:346
+#: company/models.py:348
msgid "URL for external manufacturer part link"
msgstr ""
-#: company/models.py:352
+#: company/models.py:354
msgid "Manufacturer part description"
msgstr ""
-#: company/models.py:406 company/models.py:507
+#: company/models.py:408 company/models.py:557
#: company/templates/company/manufacturer_part.html:6
#: company/templates/company/manufacturer_part.html:23
#: stock/templates/stock/item_base.html:376
msgid "Manufacturer Part"
msgstr ""
-#: company/models.py:413
+#: company/models.py:415
msgid "Parameter name"
msgstr "Parametre adı"
-#: company/models.py:419
+#: company/models.py:421
#: report/templates/report/inventree_test_report_base.html:90
-#: stock/models.py:1808 templates/InvenTree/settings/header.html:8
-#: templates/js/translated/company.js:589 templates/js/translated/part.js:480
-#: templates/js/translated/stock.js:505
+#: stock/models.py:1819 templates/InvenTree/settings/header.html:8
+#: templates/js/translated/company.js:642 templates/js/translated/part.js:612
+#: templates/js/translated/stock.js:576
msgid "Value"
msgstr "Değer"
-#: company/models.py:420
+#: company/models.py:422
msgid "Parameter value"
msgstr "Parametre değeri"
-#: company/models.py:426 part/models.py:797 part/models.py:2204
-#: templates/js/translated/company.js:595 templates/js/translated/part.js:486
+#: company/models.py:428 part/models.py:799 part/models.py:2220
+#: templates/js/translated/company.js:648 templates/js/translated/part.js:618
msgid "Units"
msgstr ""
-#: company/models.py:427
+#: company/models.py:429
msgid "Parameter units"
msgstr ""
-#: company/models.py:494 company/templates/company/company_base.html:121
+#: company/models.py:501
+msgid "Linked manufacturer part must reference the same base part"
+msgstr ""
+
+#: company/models.py:544 company/templates/company/company_base.html:121
#: company/templates/company/supplier_part.html:88 order/models.py:260
#: order/templates/order/order_base.html:92
#: order/templates/order/order_wizard/select_pos.html:30 part/bom.py:175
#: part/bom.py:286 stock/templates/stock/item_base.html:383
-#: templates/js/translated/company.js:291
-#: templates/js/translated/company.js:713 templates/js/translated/order.js:254
+#: templates/js/translated/company.js:336
+#: templates/js/translated/company.js:768 templates/js/translated/order.js:328
+#: templates/js/translated/part.js:203
msgid "Supplier"
msgstr "Tedarikçi"
-#: company/models.py:495
+#: company/models.py:545 templates/js/translated/part.js:204
msgid "Select supplier"
msgstr "Tedarikçi seçin"
-#: company/models.py:500 company/templates/company/supplier_part.html:92
-#: order/templates/order/purchase_order_detail.html:318 part/bom.py:176
-#: part/bom.py:287
+#: company/models.py:550 company/templates/company/supplier_part.html:92
+#: part/bom.py:176 part/bom.py:287 templates/js/translated/order.js:492
+#: templates/js/translated/part.js:214
msgid "SKU"
msgstr "SKU"
-#: company/models.py:501
+#: company/models.py:551 templates/js/translated/part.js:215
msgid "Supplier stock keeping unit"
msgstr ""
-#: company/models.py:508
+#: company/models.py:558
msgid "Select manufacturer part"
msgstr ""
-#: company/models.py:514
+#: company/models.py:564
msgid "URL for external supplier part link"
msgstr ""
-#: company/models.py:520
+#: company/models.py:570
msgid "Supplier part description"
msgstr ""
-#: company/models.py:525 company/templates/company/supplier_part.html:120
-#: part/models.py:2352 report/templates/report/inventree_po_report.html:93
+#: company/models.py:575 company/templates/company/supplier_part.html:120
+#: part/models.py:2368 report/templates/report/inventree_po_report.html:93
#: report/templates/report/inventree_so_report.html:93
msgid "Note"
msgstr "Not"
-#: company/models.py:529 part/models.py:1590
+#: company/models.py:579 part/models.py:1599
msgid "base cost"
msgstr "temel maliyet"
-#: company/models.py:529 part/models.py:1590
+#: company/models.py:579 part/models.py:1599
msgid "Minimum charge (e.g. stocking fee)"
msgstr ""
-#: company/models.py:531 company/templates/company/supplier_part.html:113
-#: stock/models.py:472 stock/templates/stock/item_base.html:324
-#: templates/js/translated/company.js:789 templates/js/translated/stock.js:1086
+#: company/models.py:581 company/templates/company/supplier_part.html:113
+#: stock/models.py:478 stock/templates/stock/item_base.html:324
+#: templates/js/translated/company.js:844 templates/js/translated/stock.js:1057
msgid "Packaging"
msgstr "Paketleme"
-#: company/models.py:531
+#: company/models.py:581
msgid "Part packaging"
msgstr ""
-#: company/models.py:533 part/models.py:1592
+#: company/models.py:583 part/models.py:1601
msgid "multiple"
msgstr "çoklu"
-#: company/models.py:533
+#: company/models.py:583
msgid "Order multiple"
msgstr ""
@@ -2420,7 +2502,7 @@ msgstr "Para Birimi Kodu"
#: company/templates/company/company_base.html:9
#: company/templates/company/company_base.html:35
-#: templates/InvenTree/search.html:304 templates/js/translated/company.js:276
+#: templates/InvenTree/search.html:304 templates/js/translated/company.js:321
msgid "Company"
msgstr ""
@@ -2435,7 +2517,7 @@ msgid "Download image from URL"
msgstr ""
#: company/templates/company/company_base.html:46
-#: templates/js/translated/order.js:83
+#: templates/js/translated/order.js:117
msgid "Create Purchase Order"
msgstr "Satın Alma Emri Oluştur"
@@ -2460,16 +2542,16 @@ msgstr ""
msgid "Phone"
msgstr ""
-#: company/templates/company/company_base.html:126 order/models.py:544
-#: order/templates/order/sales_order_base.html:94 stock/models.py:490
-#: stock/models.py:491 stock/templates/stock/item_base.html:276
-#: templates/js/translated/company.js:283 templates/js/translated/order.js:351
-#: templates/js/translated/stock.js:1467
+#: company/templates/company/company_base.html:126 order/models.py:550
+#: order/templates/order/sales_order_base.html:94 stock/models.py:496
+#: stock/models.py:497 stock/templates/stock/item_base.html:276
+#: templates/js/translated/company.js:328 templates/js/translated/order.js:692
+#: templates/js/translated/stock.js:1608
msgid "Customer"
msgstr "Müşteri"
#: company/templates/company/company_base.html:193
-#: part/templates/part/part_base.html:405
+#: part/templates/part/part_base.html:418
msgid "Upload Image"
msgstr ""
@@ -2490,8 +2572,8 @@ msgstr "Yeni tedarikçi parçası oluştur"
msgid "New Supplier Part"
msgstr "Yeni Tedarikçi Parçası"
-#: company/templates/company/detail.html:28
-#: company/templates/company/detail.html:70
+#: company/templates/company/detail.html:27
+#: company/templates/company/detail.html:67
#: company/templates/company/manufacturer_part.html:112
#: company/templates/company/manufacturer_part.html:136
#: part/templates/part/category.html:135 part/templates/part/detail.html:292
@@ -2499,106 +2581,106 @@ msgstr "Yeni Tedarikçi Parçası"
msgid "Options"
msgstr ""
-#: company/templates/company/detail.html:33
-#: company/templates/company/detail.html:75
+#: company/templates/company/detail.html:32
+#: company/templates/company/detail.html:72
#: part/templates/part/category.html:140
msgid "Order parts"
msgstr ""
-#: company/templates/company/detail.html:36
-#: company/templates/company/detail.html:78
+#: company/templates/company/detail.html:35
+#: company/templates/company/detail.html:75
msgid "Delete parts"
msgstr "Parçaları sil"
-#: company/templates/company/detail.html:36
-#: company/templates/company/detail.html:78
+#: company/templates/company/detail.html:35
+#: company/templates/company/detail.html:75
msgid "Delete Parts"
msgstr "Parçaları Sil"
-#: company/templates/company/detail.html:56 templates/InvenTree/search.html:149
+#: company/templates/company/detail.html:54 templates/InvenTree/search.html:149
msgid "Manufacturer Parts"
msgstr ""
-#: company/templates/company/detail.html:64
+#: company/templates/company/detail.html:62
msgid "Create new manufacturer part"
msgstr ""
-#: company/templates/company/detail.html:65 part/templates/part/detail.html:312
+#: company/templates/company/detail.html:63 part/templates/part/detail.html:312
msgid "New Manufacturer Part"
msgstr ""
-#: company/templates/company/detail.html:97
+#: company/templates/company/detail.html:93
msgid "Supplier Stock"
msgstr "Tedarikçi Stoku"
-#: company/templates/company/detail.html:106
-#: company/templates/company/navbar.html:40
-#: company/templates/company/navbar.html:43
+#: company/templates/company/detail.html:102
+#: company/templates/company/navbar.html:46
+#: company/templates/company/navbar.html:49
#: order/templates/order/purchase_orders.html:8
#: order/templates/order/purchase_orders.html:13
-#: part/templates/part/detail.html:50 part/templates/part/navbar.html:71
-#: part/templates/part/navbar.html:74 templates/InvenTree/index.html:260
+#: part/templates/part/detail.html:50 part/templates/part/navbar.html:82
+#: part/templates/part/navbar.html:85 templates/InvenTree/index.html:260
#: templates/InvenTree/search.html:325
#: templates/InvenTree/settings/navbar.html:107
-#: templates/InvenTree/settings/navbar.html:109 templates/navbar.html:37
+#: templates/InvenTree/settings/navbar.html:109 templates/navbar.html:44
#: users/models.py:45
msgid "Purchase Orders"
msgstr "Satın Alma Emirleri"
-#: company/templates/company/detail.html:112
+#: company/templates/company/detail.html:108
#: order/templates/order/purchase_orders.html:20
msgid "Create new purchase order"
msgstr "Yeni satın alma emri oluştur"
-#: company/templates/company/detail.html:113
+#: company/templates/company/detail.html:109
#: order/templates/order/purchase_orders.html:21
msgid "New Purchase Order"
msgstr "Yeni Satın Alma Emri"
-#: company/templates/company/detail.html:128
-#: company/templates/company/navbar.html:49
-#: company/templates/company/navbar.html:52
+#: company/templates/company/detail.html:124
+#: company/templates/company/navbar.html:55
+#: company/templates/company/navbar.html:58
#: order/templates/order/sales_orders.html:8
#: order/templates/order/sales_orders.html:13
-#: part/templates/part/detail.html:71 part/templates/part/navbar.html:79
-#: part/templates/part/navbar.html:82 templates/InvenTree/index.html:291
+#: part/templates/part/detail.html:71 part/templates/part/navbar.html:91
+#: part/templates/part/navbar.html:94 templates/InvenTree/index.html:291
#: templates/InvenTree/search.html:345
#: templates/InvenTree/settings/navbar.html:113
-#: templates/InvenTree/settings/navbar.html:115 templates/navbar.html:46
+#: templates/InvenTree/settings/navbar.html:115 templates/navbar.html:55
#: users/models.py:46
msgid "Sales Orders"
msgstr "Satış Emirleri"
-#: company/templates/company/detail.html:134
+#: company/templates/company/detail.html:130
#: order/templates/order/sales_orders.html:20
msgid "Create new sales order"
msgstr "Yeni satış emri oluştur"
-#: company/templates/company/detail.html:135
+#: company/templates/company/detail.html:131
#: order/templates/order/sales_orders.html:21
msgid "New Sales Order"
msgstr "Yeni Satış Emri"
-#: company/templates/company/detail.html:151
-#: company/templates/company/navbar.html:55
-#: company/templates/company/navbar.html:58
-#: templates/js/translated/build.js:597
+#: company/templates/company/detail.html:147
+#: company/templates/company/navbar.html:61
+#: company/templates/company/navbar.html:64
+#: templates/js/translated/build.js:620
msgid "Assigned Stock"
msgstr "Atanan Stok"
-#: company/templates/company/detail.html:169
+#: company/templates/company/detail.html:165
msgid "Company Notes"
msgstr ""
#: company/templates/company/detail.html:364
#: company/templates/company/manufacturer_part.html:200
-#: part/templates/part/detail.html:826
+#: part/templates/part/detail.html:357
msgid "Delete Supplier Parts?"
msgstr ""
#: company/templates/company/detail.html:365
#: company/templates/company/manufacturer_part.html:201
-#: part/templates/part/detail.html:827
+#: part/templates/part/detail.html:358
msgid "All selected supplier parts will be deleted"
msgstr ""
@@ -2609,17 +2691,17 @@ msgstr ""
#: company/templates/company/manufacturer_part.html:40
#: company/templates/company/supplier_part.html:40
#: company/templates/company/supplier_part.html:146
-#: part/templates/part/detail.html:55 part/templates/part/part_base.html:109
+#: part/templates/part/detail.html:55 part/templates/part/part_base.html:116
msgid "Order part"
msgstr "Parça siparişi"
#: company/templates/company/manufacturer_part.html:45
-#: templates/js/translated/company.js:511
+#: templates/js/translated/company.js:560
msgid "Edit manufacturer part"
msgstr ""
#: company/templates/company/manufacturer_part.html:49
-#: templates/js/translated/company.js:512
+#: templates/js/translated/company.js:561
msgid "Delete manufacturer part"
msgstr ""
@@ -2634,9 +2716,9 @@ msgstr ""
#: company/templates/company/manufacturer_part.html:103
#: company/templates/company/manufacturer_part_navbar.html:21
-#: company/views.py:49 part/templates/part/navbar.html:65
-#: part/templates/part/navbar.html:68 part/templates/part/prices.html:144
-#: templates/InvenTree/search.html:316 templates/navbar.html:35
+#: company/views.py:49 part/templates/part/navbar.html:75
+#: part/templates/part/navbar.html:78 part/templates/part/prices.html:163
+#: templates/InvenTree/search.html:316 templates/navbar.html:41
msgid "Suppliers"
msgstr ""
@@ -2649,8 +2731,8 @@ msgstr "Tedarikçi parçalarını sil"
#: company/templates/company/manufacturer_part.html:138
#: company/templates/company/manufacturer_part.html:239
#: part/templates/part/detail.html:214 part/templates/part/detail.html:294
-#: part/templates/part/detail.html:317 templates/js/translated/company.js:377
-#: users/models.py:194
+#: part/templates/part/detail.html:317 templates/js/translated/company.js:424
+#: templates/js/translated/helpers.js:31 users/models.py:194
msgid "Delete"
msgstr ""
@@ -2659,8 +2741,8 @@ msgstr ""
#: company/templates/company/manufacturer_part_navbar.html:14
#: part/templates/part/category_navbar.html:38
#: part/templates/part/category_navbar.html:41
-#: part/templates/part/detail.html:155 part/templates/part/navbar.html:14
-#: part/templates/part/navbar.html:17
+#: part/templates/part/detail.html:155 part/templates/part/navbar.html:20
+#: part/templates/part/navbar.html:23
msgid "Parameters"
msgstr ""
@@ -2676,7 +2758,7 @@ msgid "Delete parameters"
msgstr ""
#: company/templates/company/manufacturer_part.html:176
-#: part/templates/part/detail.html:719
+#: part/templates/part/detail.html:834
msgid "Add Parameter"
msgstr ""
@@ -2693,18 +2775,18 @@ msgid "Manufacturer Part Stock"
msgstr ""
#: company/templates/company/manufacturer_part_navbar.html:29
-#: company/templates/company/navbar.html:34
+#: company/templates/company/navbar.html:39
#: company/templates/company/supplier_part_navbar.html:15
-#: part/templates/part/navbar.html:31 stock/api.py:53
+#: part/templates/part/navbar.html:38 stock/api.py:54
#: stock/templates/stock/loc_link.html:7 stock/templates/stock/location.html:36
#: stock/templates/stock/stock_app_base.html:10
#: templates/InvenTree/index.html:150 templates/InvenTree/search.html:196
#: templates/InvenTree/search.html:232
#: templates/InvenTree/settings/navbar.html:95
#: templates/InvenTree/settings/navbar.html:97
-#: templates/js/translated/part.js:401 templates/js/translated/part.js:626
-#: templates/js/translated/part.js:786 templates/js/translated/stock.js:133
-#: templates/js/translated/stock.js:935 templates/navbar.html:26
+#: templates/js/translated/part.js:529 templates/js/translated/part.js:758
+#: templates/js/translated/part.js:934 templates/js/translated/stock.js:202
+#: templates/js/translated/stock.js:850 templates/navbar.html:32
msgid "Stock"
msgstr "Stok"
@@ -2717,41 +2799,41 @@ msgstr ""
msgid "Orders"
msgstr ""
-#: company/templates/company/navbar.html:13
-#: company/templates/company/navbar.html:16
+#: company/templates/company/navbar.html:17
+#: company/templates/company/navbar.html:20
msgid "Manufactured Parts"
msgstr ""
-#: company/templates/company/navbar.html:22
-#: company/templates/company/navbar.html:25
+#: company/templates/company/navbar.html:26
+#: company/templates/company/navbar.html:29
msgid "Supplied Parts"
msgstr ""
-#: company/templates/company/navbar.html:31 part/templates/part/navbar.html:28
+#: company/templates/company/navbar.html:36 part/templates/part/navbar.html:35
#: stock/templates/stock/location.html:119
#: stock/templates/stock/location.html:134
#: stock/templates/stock/location.html:148
#: stock/templates/stock/location_navbar.html:18
#: stock/templates/stock/location_navbar.html:21
-#: templates/InvenTree/search.html:198 templates/js/translated/stock.js:1366
+#: templates/InvenTree/search.html:198 templates/js/translated/stock.js:1507
#: templates/stats.html:93 templates/stats.html:102 users/models.py:43
msgid "Stock Items"
msgstr "Stok Kalemleri"
#: company/templates/company/supplier_part.html:7
-#: company/templates/company/supplier_part.html:24 stock/models.py:457
+#: company/templates/company/supplier_part.html:24 stock/models.py:463
#: stock/templates/stock/item_base.html:388
-#: templates/js/translated/company.js:729 templates/js/translated/stock.js:1058
+#: templates/js/translated/company.js:784 templates/js/translated/stock.js:1014
msgid "Supplier Part"
msgstr "Tedarikçi Parçası"
#: company/templates/company/supplier_part.html:44
-#: templates/js/translated/company.js:802
+#: templates/js/translated/company.js:857
msgid "Edit supplier part"
msgstr "Tedarikçi parçasını düzenle"
#: company/templates/company/supplier_part.html:48
-#: templates/js/translated/company.js:803
+#: templates/js/translated/company.js:858
msgid "Delete supplier part"
msgstr "Tedarikçi parçasını sil"
@@ -2775,13 +2857,13 @@ msgid "Order Part"
msgstr ""
#: company/templates/company/supplier_part.html:158
-#: part/templates/part/navbar.html:58 part/templates/part/prices.html:7
+#: part/templates/part/navbar.html:67 part/templates/part/prices.html:7
msgid "Pricing Information"
msgstr "Fiyat Bilgisi"
#: company/templates/company/supplier_part.html:164
#: company/templates/company/supplier_part.html:265
-#: part/templates/part/prices.html:253 part/views.py:1722
+#: part/templates/part/prices.html:271 part/views.py:1730
msgid "Add Price Break"
msgstr ""
@@ -2789,11 +2871,11 @@ msgstr ""
msgid "No price break information found"
msgstr ""
-#: company/templates/company/supplier_part.html:199 part/views.py:1784
+#: company/templates/company/supplier_part.html:199 part/views.py:1792
msgid "Delete Price Break"
msgstr ""
-#: company/templates/company/supplier_part.html:213 part/views.py:1770
+#: company/templates/company/supplier_part.html:213 part/views.py:1778
msgid "Edit Price Break"
msgstr ""
@@ -2817,8 +2899,8 @@ msgstr "Fiyatlandırma"
msgid "New Supplier"
msgstr "Yeni Tedarikçi"
-#: company/views.py:55 part/templates/part/prices.html:148
-#: templates/InvenTree/search.html:306 templates/navbar.html:36
+#: company/views.py:55 part/templates/part/prices.html:167
+#: templates/InvenTree/search.html:306 templates/navbar.html:42
msgid "Manufacturers"
msgstr "Üreticiler"
@@ -2827,7 +2909,7 @@ msgid "New Manufacturer"
msgstr "Yeni Üretici"
#: company/views.py:61 templates/InvenTree/search.html:336
-#: templates/navbar.html:45
+#: templates/navbar.html:53
msgid "Customers"
msgstr "Müşteriler"
@@ -2929,6 +3011,10 @@ msgstr ""
msgid "Part query filters (comma-separated value of key=value pairs)"
msgstr ""
+#: order/api.py:302
+msgid "Destination location must be specified"
+msgstr ""
+
#: order/forms.py:30 order/templates/order/order_base.html:47
msgid "Place order"
msgstr "Sipariş ver"
@@ -2978,11 +3064,11 @@ msgstr ""
msgid "Order notes"
msgstr "Sipariş notları"
-#: order/models.py:247 order/models.py:534
+#: order/models.py:247 order/models.py:540
msgid "Order reference"
msgstr "Sipariş referansı"
-#: order/models.py:252 order/models.py:549
+#: order/models.py:252 order/models.py:555
msgid "Purchase order status"
msgstr ""
@@ -2991,7 +3077,7 @@ msgid "Company from which the items are being ordered"
msgstr ""
#: order/models.py:264 order/templates/order/order_base.html:98
-#: templates/js/translated/order.js:263
+#: templates/js/translated/order.js:337
msgid "Supplier Reference"
msgstr ""
@@ -3023,7 +3109,7 @@ msgstr ""
msgid "Date order was completed"
msgstr ""
-#: order/models.py:313 stock/models.py:345 stock/models.py:1060
+#: order/models.py:313 stock/models.py:351 stock/models.py:1072
msgid "Quantity must be greater than zero"
msgstr ""
@@ -3031,150 +3117,182 @@ msgstr ""
msgid "Part supplier must match PO supplier"
msgstr ""
-#: order/models.py:416
+#: order/models.py:421
msgid "Lines can only be received against an order marked as 'Placed'"
msgstr ""
-#: order/models.py:420
+#: order/models.py:425
msgid "Quantity must be an integer"
msgstr ""
-#: order/models.py:422
+#: order/models.py:427
msgid "Quantity must be a positive number"
msgstr ""
-#: order/models.py:545
+#: order/models.py:551
msgid "Company to which the items are being sold"
msgstr ""
-#: order/models.py:551
+#: order/models.py:557
msgid "Customer Reference "
msgstr ""
-#: order/models.py:551
+#: order/models.py:557
msgid "Customer order reference code"
msgstr ""
-#: order/models.py:556
+#: order/models.py:562
msgid "Target date for order completion. Order will be overdue after this date."
msgstr ""
-#: order/models.py:559 templates/js/translated/order.js:392
+#: order/models.py:565 templates/js/translated/order.js:733
msgid "Shipment Date"
msgstr ""
-#: order/models.py:566
+#: order/models.py:572
msgid "shipped by"
msgstr ""
-#: order/models.py:610
+#: order/models.py:616
msgid "SalesOrder cannot be shipped as it is not currently pending"
msgstr ""
-#: order/models.py:707
+#: order/models.py:713
msgid "Item quantity"
msgstr ""
-#: order/models.py:713
+#: order/models.py:719
msgid "Line item reference"
msgstr ""
-#: order/models.py:715
+#: order/models.py:721
msgid "Line item notes"
msgstr ""
-#: order/models.py:745 order/models.py:823 templates/js/translated/order.js:442
+#: order/models.py:751 order/models.py:835 templates/js/translated/order.js:785
msgid "Order"
msgstr ""
-#: order/models.py:746 order/templates/order/order_base.html:9
+#: order/models.py:752 order/templates/order/order_base.html:9
#: order/templates/order/order_base.html:24
#: report/templates/report/inventree_po_report.html:77
#: stock/templates/stock/item_base.html:338
-#: templates/js/translated/order.js:232 templates/js/translated/stock.js:1037
-#: templates/js/translated/stock.js:1448
+#: templates/js/translated/order.js:306 templates/js/translated/stock.js:991
+#: templates/js/translated/stock.js:1589
msgid "Purchase Order"
msgstr ""
-#: order/models.py:767
+#: order/models.py:773
msgid "Supplier part"
msgstr ""
-#: order/models.py:770 order/templates/order/order_base.html:131
-#: order/templates/order/purchase_order_detail.html:388
+#: order/models.py:780 order/templates/order/order_base.html:131
#: order/templates/order/receive_parts.html:22
#: order/templates/order/sales_order_base.html:133
+#: templates/js/translated/order.js:573
msgid "Received"
msgstr ""
-#: order/models.py:770
+#: order/models.py:781
msgid "Number of items received"
msgstr ""
-#: order/models.py:776 part/templates/part/prices.html:157 stock/models.py:582
-#: stock/templates/stock/item_base.html:345
-#: templates/js/translated/stock.js:1081
+#: order/models.py:788 part/templates/part/prices.html:176 stock/models.py:588
+#: stock/serializers.py:147 stock/templates/stock/item_base.html:345
+#: templates/js/translated/stock.js:1045
msgid "Purchase Price"
msgstr ""
-#: order/models.py:777
+#: order/models.py:789
msgid "Unit purchase price"
msgstr ""
-#: order/models.py:785
+#: order/models.py:797
msgid "Where does the Purchaser want this item to be stored?"
msgstr ""
-#: order/models.py:831 part/templates/part/part_pricing.html:97
-#: part/templates/part/prices.html:97 part/templates/part/prices.html:266
+#: order/models.py:843 part/templates/part/part_pricing.html:112
+#: part/templates/part/prices.html:116 part/templates/part/prices.html:284
msgid "Sale Price"
msgstr ""
-#: order/models.py:832
+#: order/models.py:844
msgid "Unit sale price"
msgstr ""
-#: order/models.py:911 order/models.py:913
+#: order/models.py:923 order/models.py:925
msgid "Stock item has not been assigned"
msgstr ""
-#: order/models.py:917
+#: order/models.py:929
msgid "Cannot allocate stock item to a line with a different part"
msgstr ""
-#: order/models.py:919
+#: order/models.py:931
msgid "Cannot allocate stock to a line without a part"
msgstr ""
-#: order/models.py:922
+#: order/models.py:934
msgid "Allocation quantity cannot exceed stock quantity"
msgstr "Tahsis miktarı stok miktarını aşamaz"
-#: order/models.py:932
+#: order/models.py:944
msgid "Quantity must be 1 for serialized stock item"
msgstr "Seri numaralı stok kalemi için miktar bir olmalı"
-#: order/models.py:937
+#: order/models.py:949
msgid "Line"
msgstr ""
-#: order/models.py:948
+#: order/models.py:960
msgid "Item"
msgstr ""
-#: order/models.py:949
+#: order/models.py:961
msgid "Select stock item to allocate"
msgstr ""
-#: order/models.py:952
+#: order/models.py:964
msgid "Enter stock allocation quantity"
msgstr "Stok tahsis miktarını girin"
-#: order/serializers.py:139
+#: order/serializers.py:166
msgid "Purchase price currency"
msgstr ""
-#: order/serializers.py:360
+#: order/serializers.py:201
+msgid "Line Item"
+msgstr ""
+
+#: order/serializers.py:207
+msgid "Line item does not match purchase order"
+msgstr ""
+
+#: order/serializers.py:217 order/serializers.py:276
+msgid "Select destination location for received items"
+msgstr ""
+
+#: order/serializers.py:234
+msgid "Barcode Hash"
+msgstr ""
+
+#: order/serializers.py:235
+msgid "Unique identifier field"
+msgstr ""
+
+#: order/serializers.py:250
+msgid "Barcode is already in use"
+msgstr ""
+
+#: order/serializers.py:289
+msgid "Line items must be provided"
+msgstr ""
+
+#: order/serializers.py:299
+msgid "Supplied barcode values must be unique"
+msgstr ""
+
+#: order/serializers.py:514
msgid "Sale price currency"
msgstr ""
@@ -3227,14 +3345,12 @@ msgid "Edit Purchase Order"
msgstr ""
#: order/templates/order/order_base.html:196
-#: order/templates/order/purchase_order_detail.html:265
-#: stock/templates/stock/location.html:250
+#: stock/templates/stock/location.html:250 templates/js/translated/order.js:437
msgid "New Location"
msgstr "Yeni Konum"
#: order/templates/order/order_base.html:197
-#: order/templates/order/purchase_order_detail.html:266
-#: stock/templates/stock/location.html:42
+#: stock/templates/stock/location.html:42 templates/js/translated/order.js:438
msgid "Create new stock location"
msgstr "Yeni stok konumu oluştur"
@@ -3336,7 +3452,7 @@ msgid "Upload File for Purchase Order"
msgstr "Sipariş Emri için Dosya Yükle"
#: order/templates/order/order_wizard/po_upload.html:18
-#: part/templates/part/bom_upload/upload_file.html:24
+#: part/templates/part/bom_upload/upload_file.html:34
#: part/templates/part/import_wizard/ajax_part_upload.html:10
#: part/templates/part/import_wizard/part_upload.html:21
#, python-format
@@ -3369,7 +3485,7 @@ msgstr ""
#: order/templates/order/order_wizard/select_parts.html:65
#, python-format
-msgid "Select a supplier for %(name)s"
+msgid "Select a supplier for %(name)s"
msgstr ""
#: order/templates/order/order_wizard/select_parts.html:77
@@ -3386,7 +3502,7 @@ msgid "Select existing purchase orders, or create new orders."
msgstr ""
#: order/templates/order/order_wizard/select_pos.html:31
-#: templates/js/translated/order.js:289 templates/js/translated/order.js:397
+#: templates/js/translated/order.js:363 templates/js/translated/order.js:738
msgid "Items"
msgstr "Ürünler"
@@ -3425,9 +3541,9 @@ msgid "Purchase Order Items"
msgstr ""
#: order/templates/order/purchase_order_detail.html:23
-#: order/templates/order/purchase_order_detail.html:202
+#: order/templates/order/purchase_order_detail.html:203
#: order/templates/order/sales_order_detail.html:23
-#: order/templates/order/sales_order_detail.html:176
+#: order/templates/order/sales_order_detail.html:177
msgid "Add Line Item"
msgstr ""
@@ -3436,49 +3552,6 @@ msgstr ""
msgid "Order Notes"
msgstr "Sipariş Notları"
-#: order/templates/order/purchase_order_detail.html:238
-#: order/templates/order/sales_order_detail.html:518
-msgid "Edit Line Item"
-msgstr ""
-
-#: order/templates/order/purchase_order_detail.html:248
-#: order/templates/order/sales_order_detail.html:528
-msgid "Delete Line Item"
-msgstr ""
-
-#: order/templates/order/purchase_order_detail.html:279
-msgid "No line items found"
-msgstr ""
-
-#: order/templates/order/purchase_order_detail.html:307
-#: order/templates/order/sales_order_detail.html:353
-msgid "Total"
-msgstr ""
-
-#: order/templates/order/purchase_order_detail.html:360
-#: order/templates/order/sales_order_detail.html:376
-#: templates/js/translated/part.js:1128 templates/js/translated/part.js:1317
-msgid "Unit Price"
-msgstr ""
-
-#: order/templates/order/purchase_order_detail.html:367
-#: order/templates/order/sales_order_detail.html:383
-msgid "Total price"
-msgstr "Toplam fiyat"
-
-#: order/templates/order/purchase_order_detail.html:431
-#: order/templates/order/sales_order_detail.html:489
-msgid "Edit line item"
-msgstr ""
-
-#: order/templates/order/purchase_order_detail.html:432
-msgid "Delete line item"
-msgstr ""
-
-#: order/templates/order/purchase_order_detail.html:437
-msgid "Receive line item"
-msgstr ""
-
#: order/templates/order/purchase_orders.html:24
#: order/templates/order/sales_orders.html:24
msgid "Print Order Reports"
@@ -3486,18 +3559,18 @@ msgstr ""
#: order/templates/order/receive_parts.html:8
#, python-format
-msgid "Receive outstanding parts for %(order)s - %(desc)s"
+msgid "Receive outstanding parts for %(order)s - %(desc)s"
msgstr ""
-#: order/templates/order/receive_parts.html:14 part/api.py:49
-#: part/models.py:296 part/templates/part/cat_link.html:7
+#: order/templates/order/receive_parts.html:14 part/api.py:54
+#: part/models.py:298 part/templates/part/cat_link.html:7
#: part/templates/part/category.html:108 part/templates/part/category.html:122
#: part/templates/part/category_navbar.html:21
#: part/templates/part/category_navbar.html:24
#: templates/InvenTree/index.html:102 templates/InvenTree/search.html:114
#: templates/InvenTree/settings/navbar.html:83
#: templates/InvenTree/settings/navbar.html:85
-#: templates/js/translated/part.js:987 templates/navbar.html:23
+#: templates/js/translated/part.js:1154 templates/navbar.html:29
#: templates/stats.html:80 templates/stats.html:89 users/models.py:41
msgid "Parts"
msgstr "Parçalar"
@@ -3511,7 +3584,7 @@ msgid "Order Code"
msgstr ""
#: order/templates/order/receive_parts.html:21
-#: part/templates/part/part_base.html:160 templates/js/translated/part.js:802
+#: part/templates/part/part_base.html:167 templates/js/translated/part.js:949
msgid "On Order"
msgstr ""
@@ -3540,7 +3613,7 @@ msgid "Sales Order Details"
msgstr ""
#: order/templates/order/sales_order_base.html:100
-#: templates/js/translated/order.js:364
+#: templates/js/translated/order.js:705
msgid "Customer Reference"
msgstr ""
@@ -3563,71 +3636,102 @@ msgstr ""
msgid "Sales Order Items"
msgstr ""
-#: order/templates/order/sales_order_detail.html:225
-#: templates/js/translated/bom.js:378 templates/js/translated/build.js:759
-#: templates/js/translated/build.js:1202
+#: order/templates/order/sales_order_detail.html:226
+#: templates/js/translated/bom.js:394 templates/js/translated/build.js:782
+#: templates/js/translated/build.js:1219
msgid "Actions"
msgstr "İşlemler"
-#: order/templates/order/sales_order_detail.html:232
-#: templates/js/translated/build.js:645 templates/js/translated/build.js:1011
+#: order/templates/order/sales_order_detail.html:233
+#: templates/js/translated/build.js:668 templates/js/translated/build.js:1030
msgid "Edit stock allocation"
msgstr "Stok tahsisini düzenle"
-#: order/templates/order/sales_order_detail.html:233
-#: templates/js/translated/build.js:647 templates/js/translated/build.js:1012
+#: order/templates/order/sales_order_detail.html:234
+#: templates/js/translated/build.js:670 templates/js/translated/build.js:1031
msgid "Delete stock allocation"
msgstr "Stok tahsisini sil"
-#: order/templates/order/sales_order_detail.html:306
+#: order/templates/order/sales_order_detail.html:307
msgid "No matching line items"
msgstr ""
-#: order/templates/order/sales_order_detail.html:336
+#: order/templates/order/sales_order_detail.html:337
msgid "ID"
msgstr "ID"
-#: order/templates/order/sales_order_detail.html:404
-#: templates/js/translated/build.js:710 templates/js/translated/build.js:1007
+#: order/templates/order/sales_order_detail.html:354
+#: templates/js/translated/order.js:481
+msgid "Total"
+msgstr ""
+
+#: order/templates/order/sales_order_detail.html:377
+#: templates/js/translated/order.js:534 templates/js/translated/part.js:1296
+#: templates/js/translated/part.js:1507
+msgid "Unit Price"
+msgstr ""
+
+#: order/templates/order/sales_order_detail.html:384
+#: templates/js/translated/order.js:543
+msgid "Total price"
+msgstr "Toplam fiyat"
+
+#: order/templates/order/sales_order_detail.html:405
+#: templates/js/translated/build.js:733 templates/js/translated/build.js:1026
msgid "Allocated"
msgstr ""
-#: order/templates/order/sales_order_detail.html:406
+#: order/templates/order/sales_order_detail.html:407
msgid "Fulfilled"
msgstr ""
-#: order/templates/order/sales_order_detail.html:443
+#: order/templates/order/sales_order_detail.html:444
msgid "PO"
msgstr ""
-#: order/templates/order/sales_order_detail.html:473
+#: order/templates/order/sales_order_detail.html:474
msgid "Allocate serial numbers"
msgstr "Seri numaralarını tahsis et"
-#: order/templates/order/sales_order_detail.html:476
-#: templates/js/translated/build.js:773
+#: order/templates/order/sales_order_detail.html:477
+#: templates/js/translated/build.js:796
msgid "Allocate stock"
msgstr ""
-#: order/templates/order/sales_order_detail.html:479
+#: order/templates/order/sales_order_detail.html:480
msgid "Purchase stock"
msgstr ""
-#: order/templates/order/sales_order_detail.html:483
-#: templates/js/translated/build.js:766 templates/js/translated/build.js:1210
+#: order/templates/order/sales_order_detail.html:484
+#: templates/js/translated/build.js:789 templates/js/translated/build.js:1227
msgid "Build stock"
msgstr ""
-#: order/templates/order/sales_order_detail.html:486
-#: order/templates/order/sales_order_detail.html:605
+#: order/templates/order/sales_order_detail.html:487
+#: order/templates/order/sales_order_detail.html:606
msgid "Calculate price"
msgstr ""
#: order/templates/order/sales_order_detail.html:490
+#: templates/js/translated/order.js:616
+msgid "Edit line item"
+msgstr ""
+
+#: order/templates/order/sales_order_detail.html:491
msgid "Delete line item "
msgstr ""
-#: order/templates/order/sales_order_detail.html:611
+#: order/templates/order/sales_order_detail.html:519
+#: templates/js/translated/order.js:403
+msgid "Edit Line Item"
+msgstr ""
+
+#: order/templates/order/sales_order_detail.html:529
+#: templates/js/translated/order.js:415
+msgid "Delete Line Item"
+msgstr ""
+
+#: order/templates/order/sales_order_detail.html:612
msgid "Update Unit Price"
msgstr ""
@@ -3814,12 +3918,28 @@ msgstr ""
msgid "Updated {part} unit-price to {price} and quantity to {qty}"
msgstr ""
-#: part/bom.py:133 part/models.py:73 part/models.py:731
-#: part/templates/part/category.html:75 part/templates/part/part_base.html:282
+#: part/api.py:700
+msgid "Must be greater than zero"
+msgstr ""
+
+#: part/api.py:704
+msgid "Must be a valid quantity"
+msgstr ""
+
+#: part/api.py:719
+msgid "Specify location for initial part stock"
+msgstr ""
+
+#: part/api.py:750 part/api.py:754 part/api.py:769 part/api.py:773
+msgid "This field is required"
+msgstr ""
+
+#: part/bom.py:133 part/models.py:75 part/models.py:733
+#: part/templates/part/category.html:75 part/templates/part/part_base.html:290
msgid "Default Location"
msgstr "Varsayılan Konum"
-#: part/bom.py:134 part/templates/part/part_base.html:149
+#: part/bom.py:134 part/templates/part/part_base.html:156
msgid "Available Stock"
msgstr ""
@@ -3879,7 +3999,7 @@ msgstr ""
msgid "Include part supplier data in exported BOM"
msgstr "Dışa aktarılan malzeme listesine parça tedarikçisi verilerini dahil edin"
-#: part/forms.py:96 part/models.py:2234
+#: part/forms.py:96 part/models.py:2250
msgid "Parent Part"
msgstr ""
@@ -3923,391 +4043,391 @@ msgstr "Parametre şablonunu tüm kategorilere ekle"
msgid "Input quantity for price calculation"
msgstr ""
-#: part/models.py:74
+#: part/models.py:76
msgid "Default location for parts in this category"
msgstr "Bu kategori içindeki parçalar için varsayılan konum"
-#: part/models.py:77
+#: part/models.py:79
msgid "Default keywords"
msgstr ""
-#: part/models.py:77
+#: part/models.py:79
msgid "Default keywords for parts in this category"
msgstr ""
-#: part/models.py:87 part/models.py:2280
+#: part/models.py:89 part/models.py:2296
#: part/templates/part/part_app_base.html:10
msgid "Part Category"
msgstr ""
-#: part/models.py:88 part/templates/part/category.html:32
+#: part/models.py:90 part/templates/part/category.html:32
#: part/templates/part/category.html:103 templates/InvenTree/search.html:127
#: templates/stats.html:84 users/models.py:40
msgid "Part Categories"
msgstr "Parça Kategorileri"
-#: part/models.py:381
+#: part/models.py:383
msgid "Invalid choice for parent part"
msgstr ""
-#: part/models.py:433 part/models.py:445
+#: part/models.py:435 part/models.py:447
#, python-brace-format
msgid "Part '{p1}' is used in BOM for '{p2}' (recursive)"
msgstr ""
-#: part/models.py:542
+#: part/models.py:544
msgid "Next available serial numbers are"
msgstr "Sonraki kullanılabilir seri numaraları"
-#: part/models.py:546
+#: part/models.py:548
msgid "Next available serial number is"
msgstr "Sonraki müsait seri numarası"
-#: part/models.py:551
+#: part/models.py:553
msgid "Most recent serial number is"
msgstr "En son seri numarası"
-#: part/models.py:630
+#: part/models.py:632
msgid "Duplicate IPN not allowed in part settings"
msgstr "Yinelenen DPN'ye parça ayarlarında izin verilmiyor"
-#: part/models.py:655
+#: part/models.py:657
msgid "Part name"
msgstr "Parça adı"
-#: part/models.py:662
+#: part/models.py:664
msgid "Is Template"
msgstr "Şablon Mu"
-#: part/models.py:663
+#: part/models.py:665
msgid "Is this part a template part?"
msgstr "Bu parça bir şablon parçası mı?"
-#: part/models.py:673
+#: part/models.py:675
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:674
+#: part/models.py:676
msgid "Variant Of"
msgstr "Çeşidi"
-#: part/models.py:680
+#: part/models.py:682
msgid "Part description"
msgstr "Parça açıklaması"
-#: part/models.py:685 part/templates/part/category.html:82
-#: part/templates/part/part_base.html:251
+#: part/models.py:687 part/templates/part/category.html:82
+#: part/templates/part/part_base.html:259
msgid "Keywords"
msgstr "Anahtar kelimeler"
-#: part/models.py:686
+#: part/models.py:688
msgid "Part keywords to improve visibility in search results"
msgstr ""
-#: part/models.py:693 part/models.py:2279
+#: part/models.py:695 part/models.py:2295
#: part/templates/part/set_category.html:15
#: templates/InvenTree/settings/settings.html:167
-#: templates/js/translated/part.js:773
+#: templates/js/translated/part.js:916
msgid "Category"
msgstr ""
-#: part/models.py:694
+#: part/models.py:696
msgid "Part category"
msgstr ""
-#: part/models.py:699 part/templates/part/part_base.html:227
-#: templates/js/translated/part.js:389 templates/js/translated/part.js:617
+#: part/models.py:701 part/templates/part/part_base.html:235
+#: templates/js/translated/part.js:517 templates/js/translated/part.js:749
msgid "IPN"
msgstr "DPN"
-#: part/models.py:700
+#: part/models.py:702
msgid "Internal Part Number"
msgstr ""
-#: part/models.py:706
+#: part/models.py:708
msgid "Part revision or version number"
msgstr "Parça revizyon veya versiyon numarası"
-#: part/models.py:707 part/templates/part/part_base.html:244
-#: report/models.py:200 templates/js/translated/part.js:393
+#: part/models.py:709 part/templates/part/part_base.html:252
+#: report/models.py:200 templates/js/translated/part.js:521
msgid "Revision"
msgstr "Revizyon"
-#: part/models.py:729
+#: part/models.py:731
msgid "Where is this item normally stored?"
msgstr ""
-#: part/models.py:776 part/templates/part/part_base.html:289
+#: part/models.py:778 part/templates/part/part_base.html:297
msgid "Default Supplier"
msgstr "Varsayılan Tedarikçi"
-#: part/models.py:777
+#: part/models.py:779
msgid "Default supplier part"
msgstr "Varsayılan tedarikçi parçası"
-#: part/models.py:784
+#: part/models.py:786
msgid "Default Expiry"
msgstr ""
-#: part/models.py:785
+#: part/models.py:787
msgid "Expiry time (in days) for stock items of this part"
msgstr ""
-#: part/models.py:790
+#: part/models.py:792
msgid "Minimum Stock"
msgstr "Minimum Stok"
-#: part/models.py:791
+#: part/models.py:793
msgid "Minimum allowed stock level"
msgstr ""
-#: part/models.py:798
+#: part/models.py:800
msgid "Stock keeping units for this part"
msgstr ""
-#: part/models.py:804
+#: part/models.py:806
msgid "Can this part be built from other parts?"
msgstr "Bu parça diğer parçalardan yapılabilir mi?"
-#: part/models.py:810
+#: part/models.py:812
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:816
+#: part/models.py:818
msgid "Does this part have tracking for unique items?"
msgstr ""
-#: part/models.py:821
+#: part/models.py:823
msgid "Can this part be purchased from external suppliers?"
msgstr "Bu parça dış tedarikçilerden satın alınabilir mi?"
-#: part/models.py:826
+#: part/models.py:828
msgid "Can this part be sold to customers?"
msgstr "Bu parça müşterilere satılabilir mi?"
-#: part/models.py:830 templates/js/translated/table_filters.js:21
-#: templates/js/translated/table_filters.js:69
-#: templates/js/translated/table_filters.js:255
-#: templates/js/translated/table_filters.js:324
+#: part/models.py:832 templates/js/translated/table_filters.js:34
+#: templates/js/translated/table_filters.js:82
+#: templates/js/translated/table_filters.js:268
+#: templates/js/translated/table_filters.js:337
msgid "Active"
msgstr "Aktif"
-#: part/models.py:831
+#: part/models.py:833
msgid "Is this part active?"
msgstr "Bu parça aktif mi?"
-#: part/models.py:836
+#: part/models.py:838
msgid "Is this a virtual part, such as a software product or license?"
msgstr ""
-#: part/models.py:841
+#: part/models.py:843
msgid "Part notes - supports Markdown formatting"
msgstr ""
-#: part/models.py:844
+#: part/models.py:846
msgid "BOM checksum"
msgstr ""
-#: part/models.py:844
+#: part/models.py:846
msgid "Stored BOM checksum"
msgstr ""
-#: part/models.py:847
+#: part/models.py:849
msgid "BOM checked by"
msgstr ""
-#: part/models.py:849
+#: part/models.py:851
msgid "BOM checked date"
msgstr ""
-#: part/models.py:853
+#: part/models.py:855
msgid "Creation User"
msgstr "Oluşturan Kullanıcı"
-#: part/models.py:1592
+#: part/models.py:1601
msgid "Sell multiple"
msgstr ""
-#: part/models.py:2080
+#: part/models.py:2096
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:2097
+#: part/models.py:2113
msgid "Test with this name already exists for this part"
msgstr ""
-#: part/models.py:2117 templates/js/translated/part.js:1038
-#: templates/js/translated/stock.js:485
+#: part/models.py:2133 templates/js/translated/part.js:1205
+#: templates/js/translated/stock.js:556
msgid "Test Name"
msgstr "Test Adı"
-#: part/models.py:2118
+#: part/models.py:2134
msgid "Enter a name for the test"
msgstr ""
-#: part/models.py:2123
+#: part/models.py:2139
msgid "Test Description"
msgstr "Test Açıklaması"
-#: part/models.py:2124
+#: part/models.py:2140
msgid "Enter description for this test"
msgstr ""
-#: part/models.py:2129 templates/js/translated/part.js:1047
-#: templates/js/translated/table_filters.js:241
+#: part/models.py:2145 templates/js/translated/part.js:1214
+#: templates/js/translated/table_filters.js:254
msgid "Required"
msgstr "Gerekli"
-#: part/models.py:2130
+#: part/models.py:2146
msgid "Is this test required to pass?"
msgstr "Testi geçmesi için bu gerekli mi?"
-#: part/models.py:2135 templates/js/translated/part.js:1055
+#: part/models.py:2151 templates/js/translated/part.js:1222
msgid "Requires Value"
msgstr ""
-#: part/models.py:2136
+#: part/models.py:2152
msgid "Does this test require a value when adding a test result?"
msgstr ""
-#: part/models.py:2141 templates/js/translated/part.js:1062
+#: part/models.py:2157 templates/js/translated/part.js:1229
msgid "Requires Attachment"
msgstr ""
-#: part/models.py:2142
+#: part/models.py:2158
msgid "Does this test require a file attachment when adding a test result?"
msgstr ""
-#: part/models.py:2153
+#: part/models.py:2169
#, python-brace-format
msgid "Illegal character in template name ({c})"
msgstr ""
-#: part/models.py:2189
+#: part/models.py:2205
msgid "Parameter template name must be unique"
msgstr "Parametre şablon adı benzersiz olmalıdır"
-#: part/models.py:2197
+#: part/models.py:2213
msgid "Parameter Name"
msgstr ""
-#: part/models.py:2204
+#: part/models.py:2220
msgid "Parameter Units"
msgstr ""
-#: part/models.py:2236 part/models.py:2285 part/models.py:2286
+#: part/models.py:2252 part/models.py:2301 part/models.py:2302
#: templates/InvenTree/settings/settings.html:162
msgid "Parameter Template"
msgstr "Parametre Şablonu"
-#: part/models.py:2238
+#: part/models.py:2254
msgid "Data"
msgstr ""
-#: part/models.py:2238
+#: part/models.py:2254
msgid "Parameter Value"
msgstr ""
-#: part/models.py:2290 templates/InvenTree/settings/settings.html:171
+#: part/models.py:2306 templates/InvenTree/settings/settings.html:171
msgid "Default Value"
msgstr ""
-#: part/models.py:2291
+#: part/models.py:2307
msgid "Default Parameter Value"
msgstr ""
-#: part/models.py:2325
+#: part/models.py:2341
msgid "Select parent part"
msgstr ""
-#: part/models.py:2333
+#: part/models.py:2349
msgid "Sub part"
msgstr ""
-#: part/models.py:2334
+#: part/models.py:2350
msgid "Select part to be used in BOM"
msgstr ""
-#: part/models.py:2340
+#: part/models.py:2356
msgid "BOM quantity for this BOM item"
msgstr ""
-#: part/models.py:2342 templates/js/translated/bom.js:236
-#: templates/js/translated/bom.js:298
+#: part/models.py:2358 templates/js/translated/bom.js:256
+#: templates/js/translated/bom.js:314
msgid "Optional"
msgstr ""
-#: part/models.py:2342
+#: part/models.py:2358
msgid "This BOM item is optional"
msgstr ""
-#: part/models.py:2345
+#: part/models.py:2361
msgid "Overage"
msgstr ""
-#: part/models.py:2346
+#: part/models.py:2362
msgid "Estimated build wastage quantity (absolute or percentage)"
msgstr ""
-#: part/models.py:2349
+#: part/models.py:2365
msgid "BOM item reference"
msgstr ""
-#: part/models.py:2352
+#: part/models.py:2368
msgid "BOM item notes"
msgstr ""
-#: part/models.py:2354
+#: part/models.py:2370
msgid "Checksum"
msgstr ""
-#: part/models.py:2354
+#: part/models.py:2370
msgid "BOM line checksum"
msgstr ""
-#: part/models.py:2358 templates/js/translated/bom.js:315
-#: templates/js/translated/bom.js:322
-#: templates/js/translated/table_filters.js:55
+#: part/models.py:2374 templates/js/translated/bom.js:331
+#: templates/js/translated/bom.js:338
+#: templates/js/translated/table_filters.js:68
msgid "Inherited"
msgstr ""
-#: part/models.py:2359
+#: part/models.py:2375
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:2364 templates/js/translated/bom.js:307
+#: part/models.py:2380 templates/js/translated/bom.js:323
msgid "Allow Variants"
msgstr "Çeşide İzin Ver"
-#: part/models.py:2365
+#: part/models.py:2381
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:2450 stock/models.py:335
+#: part/models.py:2466 stock/models.py:341
msgid "Quantity must be integer value for trackable parts"
msgstr ""
-#: part/models.py:2459 part/models.py:2461
+#: part/models.py:2475 part/models.py:2477
msgid "Sub part must be specified"
msgstr ""
-#: part/models.py:2464
+#: part/models.py:2480
msgid "BOM Item"
msgstr ""
-#: part/models.py:2583
+#: part/models.py:2599
msgid "Part 1"
msgstr ""
-#: part/models.py:2587
+#: part/models.py:2603
msgid "Part 2"
msgstr ""
-#: part/models.py:2587
+#: part/models.py:2603
msgid "Select Related Part"
msgstr ""
-#: part/models.py:2619
+#: part/models.py:2635
msgid "Error creating relationship: check that the part is not related to itself and that the relationship is unique"
msgstr ""
@@ -4317,17 +4437,17 @@ msgstr ""
#: part/templates/part/bom.html:14
#, python-format
-msgid "The BOM for %(part)s has changed, and must be validated.
"
+msgid "The BOM for %(part)s has changed, and must be validated.
"
msgstr ""
#: part/templates/part/bom.html:16
#, python-format
-msgid "The BOM for %(part)s was last checked by %(checker)s on %(check_date)s"
+msgid "The BOM for %(part)s was last checked by %(checker)s on %(check_date)s"
msgstr ""
#: part/templates/part/bom.html:20
#, python-format
-msgid "The BOM for %(part)s has not been validated."
+msgid "The BOM for %(part)s has not been validated."
msgstr ""
#: part/templates/part/bom.html:27
@@ -4374,33 +4494,34 @@ msgstr ""
msgid "Select Part"
msgstr ""
-#: part/templates/part/bom_upload/upload_file.html:7
-msgid "Upload BOM File"
+#: part/templates/part/bom_upload/upload_file.html:13
+#: part/templates/part/bom_upload/upload_file.html:16
+msgid "Return To BOM"
msgstr ""
-#: part/templates/part/bom_upload/upload_file.html:12
+#: part/templates/part/bom_upload/upload_file.html:27
msgid "Upload Bill of Materials"
msgstr ""
-#: part/templates/part/bom_upload/upload_file.html:16
+#: part/templates/part/bom_upload/upload_file.html:46
msgid "Requirements for BOM upload"
msgstr ""
-#: part/templates/part/bom_upload/upload_file.html:18
+#: part/templates/part/bom_upload/upload_file.html:48
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:18
+#: part/templates/part/bom_upload/upload_file.html:48
msgid "BOM Upload Template"
msgstr "Malzeme Listesi Şablonu Yükle"
-#: part/templates/part/bom_upload/upload_file.html:19
+#: part/templates/part/bom_upload/upload_file.html:49
msgid "Each part must already exist in the database"
msgstr ""
#: part/templates/part/bom_validate.html:6
#, python-format
-msgid "Confirm that the Bill of Materials (BOM) is valid for:
%(part)s"
+msgid "Confirm that the Bill of Materials (BOM) is valid for:
%(part)s"
msgstr ""
#: part/templates/part/bom_validate.html:9
@@ -4435,7 +4556,7 @@ msgstr ""
msgid "Category Description"
msgstr ""
-#: part/templates/part/category.html:88 part/templates/part/category.html:174
+#: part/templates/part/category.html:88 part/templates/part/category.html:175
#: part/templates/part/category_navbar.html:14
#: part/templates/part/category_navbar.html:17
msgid "Subcategories"
@@ -4449,7 +4570,7 @@ msgstr "Parçalar (Alt kategoriler dahil)"
msgid "Export Part Data"
msgstr ""
-#: part/templates/part/category.html:127 part/templates/part/category.html:141
+#: part/templates/part/category.html:127 part/templates/part/category.html:142
msgid "Export"
msgstr ""
@@ -4470,26 +4591,30 @@ msgid "Set Category"
msgstr "Kategori Ayarla"
#: part/templates/part/category.html:141
+msgid "Print Labels"
+msgstr ""
+
+#: part/templates/part/category.html:142
msgid "Export Data"
msgstr ""
-#: part/templates/part/category.html:145
+#: part/templates/part/category.html:146
msgid "View list display"
msgstr ""
-#: part/templates/part/category.html:148
+#: part/templates/part/category.html:149
msgid "View grid display"
msgstr ""
-#: part/templates/part/category.html:164
+#: part/templates/part/category.html:165
msgid "Part Parameters"
msgstr ""
-#: part/templates/part/category.html:253
+#: part/templates/part/category.html:254
msgid "Create Part Category"
msgstr ""
-#: part/templates/part/category.html:279
+#: part/templates/part/category.html:281
msgid "Create Part"
msgstr ""
@@ -4533,7 +4658,7 @@ msgstr ""
msgid "Import Parts"
msgstr ""
-#: part/templates/part/copy_part.html:9 templates/js/translated/part.js:224
+#: part/templates/part/copy_part.html:9 templates/js/translated/part.js:352
msgid "Duplicate Part"
msgstr ""
@@ -4554,7 +4679,7 @@ msgstr ""
#: part/templates/part/create_part.html:17
#, python-format
-msgid "%(full_name)s - %(desc)s (%(match_per)s%% match)"
+msgid "%(full_name)s - %(desc)s (%(match_per)s%% match)"
msgstr ""
#: part/templates/part/detail.html:16
@@ -4563,10 +4688,10 @@ msgstr "Parça Stoku"
#: part/templates/part/detail.html:21
#, python-format
-msgid "Showing stock for all variants of %(full_name)s"
-msgstr "%(full_name)s için tüm çeşitlerin stokları gösteriliyor"
+msgid "Showing stock for all variants of %(full_name)s"
+msgstr ""
-#: part/templates/part/detail.html:30 part/templates/part/navbar.html:87
+#: part/templates/part/detail.html:30 part/templates/part/navbar.html:99
msgid "Part Test Templates"
msgstr "Parça Test Şablonları"
@@ -4586,7 +4711,7 @@ msgstr "Yeni Sipariş"
msgid "Sales Order Allocations"
msgstr ""
-#: part/templates/part/detail.html:130 part/templates/part/navbar.html:21
+#: part/templates/part/detail.html:130 part/templates/part/navbar.html:27
msgid "Part Variants"
msgstr "Parça Çeşitleri"
@@ -4602,8 +4727,8 @@ msgstr "Yeni Çeşit"
msgid "Add new parameter"
msgstr ""
-#: part/templates/part/detail.html:182 part/templates/part/navbar.html:95
-#: part/templates/part/navbar.html:98
+#: part/templates/part/detail.html:182 part/templates/part/navbar.html:107
+#: part/templates/part/navbar.html:110
msgid "Related Parts"
msgstr ""
@@ -4611,8 +4736,8 @@ msgstr ""
msgid "Add Related"
msgstr ""
-#: part/templates/part/detail.html:228 part/templates/part/navbar.html:35
-#: part/templates/part/navbar.html:38
+#: part/templates/part/detail.html:228 part/templates/part/navbar.html:43
+#: part/templates/part/navbar.html:46
msgid "Bill of Materials"
msgstr ""
@@ -4644,50 +4769,50 @@ msgstr ""
msgid "Delete manufacturer parts"
msgstr ""
-#: part/templates/part/detail.html:402
+#: part/templates/part/detail.html:502
msgid "Delete selected BOM items?"
msgstr ""
-#: part/templates/part/detail.html:403
+#: part/templates/part/detail.html:503
msgid "All selected BOM items will be deleted"
msgstr ""
-#: part/templates/part/detail.html:454
+#: part/templates/part/detail.html:554
msgid "Create BOM Item"
msgstr ""
-#: part/templates/part/detail.html:589
+#: part/templates/part/detail.html:699
msgid "Add Test Result Template"
msgstr ""
-#: part/templates/part/detail.html:607
+#: part/templates/part/detail.html:716
msgid "Edit Test Result Template"
msgstr ""
-#: part/templates/part/detail.html:619
+#: part/templates/part/detail.html:728
msgid "Delete Test Result Template"
msgstr ""
-#: part/templates/part/detail.html:670
+#: part/templates/part/detail.html:784
msgid "Edit Part Notes"
msgstr ""
-#: part/templates/part/detail.html:903
+#: part/templates/part/detail.html:936
#, python-format
msgid "Purchase Unit Price - %(currency)s"
msgstr ""
-#: part/templates/part/detail.html:915
+#: part/templates/part/detail.html:948
#, python-format
msgid "Unit Price-Cost Difference - %(currency)s"
msgstr ""
-#: part/templates/part/detail.html:927
+#: part/templates/part/detail.html:960
#, python-format
msgid "Supplier Unit Cost - %(currency)s"
msgstr ""
-#: part/templates/part/detail.html:1016
+#: part/templates/part/detail.html:1049
#, python-format
msgid "Unit Price - %(currency)s"
msgstr ""
@@ -4701,19 +4826,19 @@ msgstr ""
msgid "Import Parts from File"
msgstr ""
-#: part/templates/part/navbar.html:24
+#: part/templates/part/navbar.html:30
msgid "Variants"
msgstr "Çeşitler"
-#: part/templates/part/navbar.html:51 part/templates/part/navbar.html:54
+#: part/templates/part/navbar.html:59 part/templates/part/navbar.html:62
msgid "Used In"
msgstr ""
-#: part/templates/part/navbar.html:61
+#: part/templates/part/navbar.html:70
msgid "Prices"
msgstr "Fiyatlar"
-#: part/templates/part/navbar.html:90
+#: part/templates/part/navbar.html:102
msgid "Test Templates"
msgstr ""
@@ -4721,195 +4846,204 @@ msgstr ""
msgid "Part List"
msgstr ""
-#: part/templates/part/part_base.html:30
+#: part/templates/part/part_base.html:35
msgid "Part is a template part (variants can be made from this part)"
msgstr "Bu parça bir şablon parçadır (Bu parçanın çeşitleri yapılabilir)"
-#: part/templates/part/part_base.html:33
+#: part/templates/part/part_base.html:38
msgid "Part can be assembled from other parts"
msgstr ""
-#: part/templates/part/part_base.html:36
+#: part/templates/part/part_base.html:41
msgid "Part can be used in assemblies"
msgstr ""
-#: part/templates/part/part_base.html:39
+#: part/templates/part/part_base.html:44
msgid "Part stock is tracked by serial number"
msgstr "Parça stoku seri numarası ile takip edilebilir"
-#: part/templates/part/part_base.html:42
+#: part/templates/part/part_base.html:47
msgid "Part can be purchased from external suppliers"
msgstr "Bu parça harici tedarikçilerden satın alınabilir"
-#: part/templates/part/part_base.html:45
+#: part/templates/part/part_base.html:50
msgid "Part can be sold to customers"
msgstr ""
-#: part/templates/part/part_base.html:52 part/templates/part/part_base.html:60
+#: part/templates/part/part_base.html:57 part/templates/part/part_base.html:65
msgid "Part is virtual (not a physical part)"
msgstr ""
-#: part/templates/part/part_base.html:53 templates/js/translated/company.js:454
-#: templates/js/translated/company.js:704 templates/js/translated/part.js:304
-#: templates/js/translated/part.js:381
+#: part/templates/part/part_base.html:58 templates/js/translated/company.js:503
+#: templates/js/translated/company.js:759 templates/js/translated/part.js:432
+#: templates/js/translated/part.js:509
msgid "Inactive"
msgstr "Pasif"
-#: part/templates/part/part_base.html:68
+#: part/templates/part/part_base.html:73
msgid "Star this part"
msgstr ""
-#: part/templates/part/part_base.html:75
+#: part/templates/part/part_base.html:80
#: stock/templates/stock/item_base.html:75
#: stock/templates/stock/location.html:51
msgid "Barcode actions"
msgstr "Barkod işlemleri"
-#: part/templates/part/part_base.html:77
+#: part/templates/part/part_base.html:82
#: stock/templates/stock/item_base.html:77
#: stock/templates/stock/location.html:53 templates/qr_button.html:1
msgid "Show QR Code"
msgstr ""
-#: part/templates/part/part_base.html:78
+#: part/templates/part/part_base.html:83
#: stock/templates/stock/item_base.html:93
#: stock/templates/stock/location.html:54
msgid "Print Label"
msgstr "Etiket Yazdır"
-#: part/templates/part/part_base.html:83
+#: part/templates/part/part_base.html:89
msgid "Show pricing information"
msgstr ""
-#: part/templates/part/part_base.html:88
+#: part/templates/part/part_base.html:95
#: stock/templates/stock/item_base.html:142
#: stock/templates/stock/location.html:62
msgid "Stock actions"
msgstr "Stok işlemleri"
-#: part/templates/part/part_base.html:95
+#: part/templates/part/part_base.html:102
msgid "Count part stock"
msgstr ""
-#: part/templates/part/part_base.html:101
+#: part/templates/part/part_base.html:108
msgid "Transfer part stock"
msgstr ""
-#: part/templates/part/part_base.html:118
+#: part/templates/part/part_base.html:125
msgid "Part actions"
msgstr "Parça işlemleri"
-#: part/templates/part/part_base.html:121
+#: part/templates/part/part_base.html:128
msgid "Duplicate part"
msgstr ""
-#: part/templates/part/part_base.html:124
+#: part/templates/part/part_base.html:131
msgid "Edit part"
msgstr ""
-#: part/templates/part/part_base.html:127
+#: part/templates/part/part_base.html:134
msgid "Delete part"
msgstr ""
-#: part/templates/part/part_base.html:139
+#: part/templates/part/part_base.html:146
#, python-format
msgid "This part is a variant of %(link)s"
msgstr "Bu parça %(link)s parçasının bir çeşididir"
-#: part/templates/part/part_base.html:154
-#: templates/js/translated/table_filters.js:153
+#: part/templates/part/part_base.html:161
+#: templates/js/translated/table_filters.js:166
msgid "In Stock"
msgstr ""
-#: part/templates/part/part_base.html:167 templates/InvenTree/index.html:186
+#: part/templates/part/part_base.html:174 templates/InvenTree/index.html:186
msgid "Required for Build Orders"
msgstr "Yapım İşi Emirleri için Gerekli"
-#: part/templates/part/part_base.html:174
+#: part/templates/part/part_base.html:181
msgid "Required for Sales Orders"
msgstr "Satış Emirleri için Gerekli"
-#: part/templates/part/part_base.html:181
+#: part/templates/part/part_base.html:188
msgid "Allocated to Orders"
msgstr ""
-#: part/templates/part/part_base.html:196 templates/js/translated/bom.js:336
+#: part/templates/part/part_base.html:203 templates/js/translated/bom.js:352
msgid "Can Build"
msgstr ""
-#: part/templates/part/part_base.html:202 templates/js/translated/part.js:633
-#: templates/js/translated/part.js:806
+#: part/templates/part/part_base.html:209 templates/js/translated/part.js:765
+#: templates/js/translated/part.js:953
msgid "Building"
msgstr ""
-#: part/templates/part/part_base.html:275
+#: part/templates/part/part_base.html:223
+#: part/templates/part/part_base.html:524
+#: part/templates/part/part_base.html:550
+msgid "Show Part Details"
+msgstr ""
+
+#: part/templates/part/part_base.html:283
msgid "Latest Serial Number"
msgstr "Son Seri Numarası"
-#: part/templates/part/part_base.html:383 part/templates/part/prices.html:125
+#: part/templates/part/part_base.html:396 part/templates/part/prices.html:144
msgid "Calculate"
msgstr "Hesapla"
-#: part/templates/part/part_base.html:426
+#: part/templates/part/part_base.html:439
msgid "No matching images found"
msgstr ""
-#: part/templates/part/part_base.html:506
-#: part/templates/part/part_base.html:531
+#: part/templates/part/part_base.html:519
+#: part/templates/part/part_base.html:544
msgid "Hide Part Details"
msgstr ""
-#: part/templates/part/part_base.html:511
-#: part/templates/part/part_base.html:537
-msgid "Show Part Details"
-msgstr ""
-
#: part/templates/part/part_pricing.html:22 part/templates/part/prices.html:21
msgid "Supplier Pricing"
msgstr ""
#: part/templates/part/part_pricing.html:26
#: part/templates/part/part_pricing.html:52
-#: part/templates/part/part_pricing.html:85
-#: part/templates/part/part_pricing.html:100 part/templates/part/prices.html:25
-#: part/templates/part/prices.html:52 part/templates/part/prices.html:84
-#: part/templates/part/prices.html:101
+#: part/templates/part/part_pricing.html:100
+#: part/templates/part/part_pricing.html:115 part/templates/part/prices.html:25
+#: part/templates/part/prices.html:52 part/templates/part/prices.html:103
+#: part/templates/part/prices.html:120
msgid "Unit Cost"
msgstr "Birim Maliyeti"
#: part/templates/part/part_pricing.html:32
#: part/templates/part/part_pricing.html:58
-#: part/templates/part/part_pricing.html:89
-#: part/templates/part/part_pricing.html:104 part/templates/part/prices.html:32
-#: part/templates/part/prices.html:59 part/templates/part/prices.html:89
-#: part/templates/part/prices.html:106
+#: part/templates/part/part_pricing.html:104
+#: part/templates/part/part_pricing.html:119 part/templates/part/prices.html:32
+#: part/templates/part/prices.html:59 part/templates/part/prices.html:108
+#: part/templates/part/prices.html:125
msgid "Total Cost"
msgstr "Toplam Maliyet"
#: part/templates/part/part_pricing.html:40 part/templates/part/prices.html:40
-#: templates/js/translated/bom.js:291
+#: templates/js/translated/bom.js:307
msgid "No supplier pricing available"
msgstr ""
#: part/templates/part/part_pricing.html:48 part/templates/part/prices.html:49
-#: part/templates/part/prices.html:225
+#: part/templates/part/prices.html:243
msgid "BOM Pricing"
msgstr ""
-#: part/templates/part/part_pricing.html:66 part/templates/part/prices.html:67
+#: part/templates/part/part_pricing.html:65 part/templates/part/prices.html:69
+msgid "Unit Purchase Price"
+msgstr ""
+
+#: part/templates/part/part_pricing.html:71 part/templates/part/prices.html:76
+msgid "Total Purchase Price"
+msgstr ""
+
+#: part/templates/part/part_pricing.html:81 part/templates/part/prices.html:86
msgid "Note: BOM pricing is incomplete for this part"
msgstr ""
-#: part/templates/part/part_pricing.html:73 part/templates/part/prices.html:74
+#: part/templates/part/part_pricing.html:88 part/templates/part/prices.html:93
msgid "No BOM pricing available"
msgstr ""
-#: part/templates/part/part_pricing.html:82 part/templates/part/prices.html:83
+#: part/templates/part/part_pricing.html:97 part/templates/part/prices.html:102
msgid "Internal Price"
msgstr ""
-#: part/templates/part/part_pricing.html:113
-#: part/templates/part/prices.html:115
+#: part/templates/part/part_pricing.html:128
+#: part/templates/part/prices.html:134
msgid "No pricing information is available for this part."
msgstr ""
@@ -4919,7 +5053,7 @@ msgstr ""
#: part/templates/part/partial_delete.html:7
#, python-format
-msgid "Are you sure you want to delete part '%(full_name)s'?"
+msgid "Are you sure you want to delete part '%(full_name)s'?"
msgstr ""
#: part/templates/part/partial_delete.html:12
@@ -4963,53 +5097,53 @@ msgstr ""
msgid "Show BOM cost"
msgstr ""
-#: part/templates/part/prices.html:98
+#: part/templates/part/prices.html:117
msgid "Show sale cost"
msgstr ""
-#: part/templates/part/prices.html:99
+#: part/templates/part/prices.html:118
msgid "Show sale price"
msgstr ""
-#: part/templates/part/prices.html:121
+#: part/templates/part/prices.html:140
msgid "Calculation parameters"
msgstr ""
-#: part/templates/part/prices.html:136 templates/js/translated/bom.js:285
+#: part/templates/part/prices.html:155 templates/js/translated/bom.js:301
msgid "Supplier Cost"
msgstr ""
-#: part/templates/part/prices.html:137 part/templates/part/prices.html:158
-#: part/templates/part/prices.html:183 part/templates/part/prices.html:213
-#: part/templates/part/prices.html:239 part/templates/part/prices.html:267
+#: part/templates/part/prices.html:156 part/templates/part/prices.html:177
+#: part/templates/part/prices.html:201 part/templates/part/prices.html:231
+#: part/templates/part/prices.html:257 part/templates/part/prices.html:285
msgid "Jump to overview"
msgstr ""
-#: part/templates/part/prices.html:162
+#: part/templates/part/prices.html:181
msgid "Stock Pricing"
msgstr ""
-#: part/templates/part/prices.html:172
+#: part/templates/part/prices.html:190
msgid "No stock pricing history is available for this part."
msgstr ""
-#: part/templates/part/prices.html:182
+#: part/templates/part/prices.html:200
msgid "Internal Cost"
msgstr ""
-#: part/templates/part/prices.html:197 part/views.py:1793
+#: part/templates/part/prices.html:215 part/views.py:1801
msgid "Add Internal Price Break"
msgstr ""
-#: part/templates/part/prices.html:212
+#: part/templates/part/prices.html:230
msgid "BOM Cost"
msgstr ""
-#: part/templates/part/prices.html:238
+#: part/templates/part/prices.html:256
msgid "Sale Cost"
msgstr ""
-#: part/templates/part/prices.html:278
+#: part/templates/part/prices.html:296
msgid "No sale pice history available for this part."
msgstr ""
@@ -5017,8 +5151,8 @@ 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:259
-#: templates/js/translated/part.js:623 templates/js/translated/part.js:810
+#: part/templates/part/stock_count.html:7 templates/js/translated/bom.js:278
+#: templates/js/translated/part.js:755 templates/js/translated/part.js:957
msgid "No Stock"
msgstr "Stok Yok"
@@ -5032,10 +5166,10 @@ msgstr "Yeni parça çeşidi oluştur"
#: part/templates/part/variant_part.html:10
#, python-format
-msgid "Create a new variant of template '%(full_name)s'."
-msgstr "%(full_name)s şablonu için yeni bir çeşit oluştur."
+msgid "Create a new variant of template '%(full_name)s'."
+msgstr ""
-#: part/templatetags/inventree_extras.py:105
+#: part/templatetags/inventree_extras.py:106
msgid "Unknown database"
msgstr ""
@@ -5116,51 +5250,51 @@ msgstr ""
msgid "Part Pricing"
msgstr ""
-#: part/views.py:1429
+#: part/views.py:1437
msgid "Create Part Parameter Template"
msgstr "Parça Parametre Şablonu Oluştur"
-#: part/views.py:1439
+#: part/views.py:1447
msgid "Edit Part Parameter Template"
msgstr "Parça Parametre Şablonu Düzenle"
-#: part/views.py:1446
+#: part/views.py:1454
msgid "Delete Part Parameter Template"
msgstr "Parça Parametre Şablonu Sil"
-#: part/views.py:1494 templates/js/translated/part.js:179
+#: part/views.py:1502 templates/js/translated/part.js:303
msgid "Edit Part Category"
msgstr ""
-#: part/views.py:1532
+#: part/views.py:1540
msgid "Delete Part Category"
msgstr ""
-#: part/views.py:1538
+#: part/views.py:1546
msgid "Part category was deleted"
msgstr ""
-#: part/views.py:1547
+#: part/views.py:1555
msgid "Create Category Parameter Template"
msgstr "Kategori Parametre Şablonu Oluştur"
-#: part/views.py:1648
+#: part/views.py:1656
msgid "Edit Category Parameter Template"
msgstr "Kategori Parametre Şablonu Düzenle"
-#: part/views.py:1704
+#: part/views.py:1712
msgid "Delete Category Parameter Template"
msgstr "Kategori Parametre Şablonu Sil"
-#: part/views.py:1726
+#: part/views.py:1734
msgid "Added new price break"
msgstr ""
-#: part/views.py:1802
+#: part/views.py:1810
msgid "Edit Internal Price Break"
msgstr ""
-#: part/views.py:1810
+#: part/views.py:1818
msgid "Delete Internal Price Break"
msgstr ""
@@ -5266,17 +5400,17 @@ msgid "Test Results"
msgstr ""
#: report/templates/report/inventree_test_report_base.html:88
-#: stock/models.py:1796
+#: stock/models.py:1807
msgid "Test"
msgstr ""
#: report/templates/report/inventree_test_report_base.html:89
-#: stock/models.py:1802
+#: stock/models.py:1813
msgid "Result"
msgstr ""
#: report/templates/report/inventree_test_report_base.html:92
-#: templates/js/translated/order.js:279 templates/js/translated/stock.js:1382
+#: templates/js/translated/order.js:353 templates/js/translated/stock.js:1523
msgid "Date"
msgstr ""
@@ -5288,51 +5422,51 @@ msgstr ""
msgid "Fail"
msgstr ""
-#: stock/api.py:145
+#: stock/api.py:146
msgid "Request must contain list of stock items"
msgstr ""
-#: stock/api.py:153
+#: stock/api.py:154
msgid "Improperly formatted data"
msgstr ""
-#: stock/api.py:161
+#: stock/api.py:162
msgid "Each entry must contain a valid integer primary-key"
msgstr ""
-#: stock/api.py:167
+#: stock/api.py:168
msgid "Primary key does not match valid stock item"
msgstr ""
-#: stock/api.py:177
+#: stock/api.py:178
msgid "Invalid quantity value"
msgstr ""
-#: stock/api.py:182
+#: stock/api.py:183
msgid "Quantity must not be less than zero"
msgstr ""
-#: stock/api.py:210
+#: stock/api.py:211
#, python-brace-format
msgid "Updated stock for {n} items"
msgstr "{n} öge için stok güncellendi"
-#: stock/api.py:246 stock/api.py:279
+#: stock/api.py:247 stock/api.py:280
msgid "Specified quantity exceeds stock quantity"
msgstr ""
-#: stock/api.py:269
+#: stock/api.py:270
msgid "Valid location must be specified"
msgstr ""
-#: stock/api.py:289
+#: stock/api.py:290
#, python-brace-format
msgid "Moved {n} parts to {loc}"
msgstr ""
-#: stock/forms.py:79 stock/forms.py:307 stock/models.py:550
+#: stock/forms.py:79 stock/forms.py:307 stock/models.py:556
#: stock/templates/stock/item_base.html:395
-#: templates/js/translated/stock.js:1025
+#: templates/js/translated/stock.js:967
msgid "Expiry Date"
msgstr ""
@@ -5384,258 +5518,266 @@ msgstr ""
msgid "Confirm removal of installed stock items"
msgstr "Kurulu stok kalemlerinin kaldırılmasını onayla"
-#: stock/models.py:57 stock/models.py:587
+#: stock/models.py:57 stock/models.py:593
msgid "Owner"
msgstr ""
-#: stock/models.py:58 stock/models.py:588
+#: stock/models.py:58 stock/models.py:594
msgid "Select Owner"
msgstr ""
-#: stock/models.py:316
+#: stock/models.py:322
msgid "StockItem with this serial number already exists"
msgstr "Bu seri numarasına sahip stok kalemi zaten var"
-#: stock/models.py:352
+#: stock/models.py:358
#, python-brace-format
msgid "Part type ('{pf}') must be {pe}"
msgstr ""
-#: stock/models.py:362 stock/models.py:371
+#: stock/models.py:368 stock/models.py:377
msgid "Quantity must be 1 for item with a serial number"
msgstr "Seri numarası olan ögenin miktarı bir olmalı"
-#: stock/models.py:363
+#: stock/models.py:369
msgid "Serial number cannot be set if quantity greater than 1"
msgstr "Miktar birden büyük ise seri numarası ayarlanamaz"
-#: stock/models.py:385
+#: stock/models.py:391
msgid "Item cannot belong to itself"
msgstr ""
-#: stock/models.py:391
+#: stock/models.py:397
msgid "Item must have a build reference if is_building=True"
msgstr ""
-#: stock/models.py:398
+#: stock/models.py:404
msgid "Build reference does not point to the same part object"
msgstr ""
-#: stock/models.py:440
+#: stock/models.py:446
msgid "Parent Stock Item"
msgstr "Üst Stok Kalemi"
-#: stock/models.py:449
+#: stock/models.py:455
msgid "Base part"
msgstr ""
-#: stock/models.py:458
+#: stock/models.py:464
msgid "Select a matching supplier part for this stock item"
msgstr "Bu stok kalemi için tedarikçi parçası seçin"
-#: stock/models.py:463 stock/templates/stock/stock_app_base.html:8
+#: stock/models.py:469 stock/templates/stock/stock_app_base.html:8
msgid "Stock Location"
msgstr "Stok Konumu"
-#: stock/models.py:466
+#: stock/models.py:472
msgid "Where is this stock item located?"
msgstr ""
-#: stock/models.py:473
+#: stock/models.py:479
msgid "Packaging this stock item is stored in"
msgstr ""
-#: stock/models.py:478 stock/templates/stock/item_base.html:284
+#: stock/models.py:484 stock/templates/stock/item_base.html:284
msgid "Installed In"
msgstr ""
-#: stock/models.py:481
+#: stock/models.py:487
msgid "Is this item installed in another item?"
msgstr ""
-#: stock/models.py:497
+#: stock/models.py:503
msgid "Serial number for this item"
msgstr "Bu öge için seri numarası"
-#: stock/models.py:509
+#: stock/models.py:515
msgid "Batch code for this stock item"
msgstr ""
-#: stock/models.py:513
+#: stock/models.py:519
msgid "Stock Quantity"
msgstr ""
-#: stock/models.py:522
+#: stock/models.py:528
msgid "Source Build"
msgstr ""
-#: stock/models.py:524
+#: stock/models.py:530
msgid "Build for this stock item"
msgstr ""
-#: stock/models.py:535
+#: stock/models.py:541
msgid "Source Purchase Order"
msgstr ""
-#: stock/models.py:538
+#: stock/models.py:544
msgid "Purchase order for this stock item"
msgstr ""
-#: stock/models.py:544
+#: stock/models.py:550
msgid "Destination Sales Order"
msgstr ""
-#: stock/models.py:551
+#: stock/models.py:557
msgid "Expiry date for stock item. Stock will be considered expired after this date"
msgstr ""
-#: stock/models.py:564
+#: stock/models.py:570
msgid "Delete on deplete"
msgstr ""
-#: stock/models.py:564
+#: stock/models.py:570
msgid "Delete this Stock Item when stock is depleted"
msgstr ""
-#: stock/models.py:574 stock/templates/stock/item.html:98
+#: stock/models.py:580 stock/templates/stock/item.html:99
#: stock/templates/stock/navbar.html:54
msgid "Stock Item Notes"
msgstr ""
-#: stock/models.py:583
+#: stock/models.py:589
msgid "Single unit purchase price at time of purchase"
msgstr ""
-#: stock/models.py:1051
-msgid "Part is not set as trackable"
+#: stock/models.py:599
+msgid "Scheduled for deletion"
msgstr ""
-#: stock/models.py:1057
-msgid "Quantity must be integer"
+#: stock/models.py:600
+msgid "This StockItem will be deleted by the background worker"
msgstr ""
#: stock/models.py:1063
+msgid "Part is not set as trackable"
+msgstr ""
+
+#: stock/models.py:1069
+msgid "Quantity must be integer"
+msgstr ""
+
+#: stock/models.py:1075
#, python-brace-format
msgid "Quantity must not exceed available stock quantity ({n})"
msgstr ""
-#: stock/models.py:1066
+#: stock/models.py:1078
msgid "Serial numbers must be a list of integers"
msgstr "Seri numaraları tam sayı listesi olmalı"
-#: stock/models.py:1069
+#: stock/models.py:1081
msgid "Quantity does not match serial numbers"
msgstr "Miktar seri numaları ile eşleşmiyor"
-#: stock/models.py:1076
+#: stock/models.py:1088
#, python-brace-format
msgid "Serial numbers already exist: {exists}"
msgstr "Seri numaraları zaten mevcut: {exists}"
-#: stock/models.py:1234
+#: stock/models.py:1246
msgid "StockItem cannot be moved as it is not in stock"
msgstr "Stok kalemi stokta olmadığı için taşınamaz"
-#: stock/models.py:1716
+#: stock/models.py:1727
msgid "Entry notes"
msgstr ""
-#: stock/models.py:1773
+#: stock/models.py:1784
msgid "Value must be provided for this test"
msgstr ""
-#: stock/models.py:1779
+#: stock/models.py:1790
msgid "Attachment must be uploaded for this test"
msgstr ""
-#: stock/models.py:1797
+#: stock/models.py:1808
msgid "Test name"
msgstr ""
-#: stock/models.py:1803 templates/js/translated/table_filters.js:231
+#: stock/models.py:1814 templates/js/translated/table_filters.js:244
msgid "Test result"
msgstr ""
-#: stock/models.py:1809
+#: stock/models.py:1820
msgid "Test output value"
msgstr ""
-#: stock/models.py:1816
+#: stock/models.py:1827
msgid "Test result attachment"
msgstr ""
-#: stock/models.py:1822
+#: stock/models.py:1833
msgid "Test notes"
msgstr ""
-#: stock/templates/stock/item.html:16
+#: stock/templates/stock/item.html:17
msgid "Stock Tracking Information"
msgstr ""
-#: stock/templates/stock/item.html:29
+#: stock/templates/stock/item.html:30
msgid "New Entry"
msgstr ""
-#: stock/templates/stock/item.html:42
+#: stock/templates/stock/item.html:43
msgid "Child Stock Items"
msgstr ""
-#: stock/templates/stock/item.html:49
+#: stock/templates/stock/item.html:50
msgid "This stock item does not have any child items"
msgstr ""
-#: stock/templates/stock/item.html:57 stock/templates/stock/navbar.html:19
+#: stock/templates/stock/item.html:58 stock/templates/stock/navbar.html:19
#: stock/templates/stock/navbar.html:22
msgid "Test Data"
msgstr ""
-#: stock/templates/stock/item.html:65
+#: stock/templates/stock/item.html:66
msgid "Delete Test Data"
msgstr ""
-#: stock/templates/stock/item.html:69
+#: stock/templates/stock/item.html:70
msgid "Add Test Data"
msgstr ""
-#: stock/templates/stock/item.html:72 stock/templates/stock/item_base.html:95
+#: stock/templates/stock/item.html:73 stock/templates/stock/item_base.html:95
msgid "Test Report"
msgstr ""
-#: stock/templates/stock/item.html:119 stock/templates/stock/navbar.html:27
+#: stock/templates/stock/item.html:120 stock/templates/stock/navbar.html:27
msgid "Installed Stock Items"
msgstr ""
-#: stock/templates/stock/item.html:124 stock/views.py:534
+#: stock/templates/stock/item.html:125 stock/views.py:534
msgid "Install Stock Item"
msgstr ""
-#: stock/templates/stock/item.html:299 stock/templates/stock/item.html:324
+#: stock/templates/stock/item.html:301 stock/templates/stock/item.html:326
msgid "Add Test Result"
msgstr ""
-#: stock/templates/stock/item.html:344
+#: stock/templates/stock/item.html:346
msgid "Edit Test Result"
msgstr ""
-#: stock/templates/stock/item.html:358
+#: stock/templates/stock/item.html:360
msgid "Delete Test Result"
msgstr ""
#: stock/templates/stock/item_base.html:33
#: stock/templates/stock/item_base.html:399
-#: templates/js/translated/table_filters.js:212
+#: templates/js/translated/table_filters.js:225
msgid "Expired"
msgstr ""
#: stock/templates/stock/item_base.html:43
#: stock/templates/stock/item_base.html:401
-#: templates/js/translated/table_filters.js:218
+#: templates/js/translated/table_filters.js:231
msgid "Stale"
msgstr ""
#: stock/templates/stock/item_base.html:80
-#: templates/js/translated/barcode.js:309
-#: templates/js/translated/barcode.js:314
+#: templates/js/translated/barcode.js:331
+#: templates/js/translated/barcode.js:336
msgid "Unlink Barcode"
msgstr ""
@@ -5768,7 +5910,7 @@ msgid "next page"
msgstr ""
#: stock/templates/stock/item_base.html:303
-#: templates/js/translated/build.js:628
+#: templates/js/translated/build.js:651
msgid "No location set"
msgstr "Konum ayarlanmadı"
@@ -5795,7 +5937,7 @@ 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:408
-#: templates/js/translated/stock.js:1032
+#: templates/js/translated/stock.js:980
msgid "Last Updated"
msgstr ""
@@ -5825,7 +5967,7 @@ msgstr ""
#: stock/templates/stock/item_delete.html:12
#, python-format
-msgid "This will remove %(qty)s units of %(full_name)s from stock."
+msgid "This will remove %(qty)s units of %(full_name)s from stock."
msgstr ""
#: stock/templates/stock/item_install.html:8
@@ -5975,8 +6117,8 @@ msgstr "Stok Kalemine Dönüştür"
#: stock/templates/stock/stockitem_convert.html:8
#, python-format
-msgid "This stock item is current an instance of %(part)s"
-msgstr "Bu stok kalemi şu anda %(part)s parçasının örneğidir"
+msgid "This stock item is current an instance of %(part)s"
+msgstr ""
#: stock/templates/stock/stockitem_convert.html:9
msgid "It can be converted to one of the part variants listed below."
@@ -6039,7 +6181,7 @@ msgstr ""
msgid "Uninstall Stock Items"
msgstr ""
-#: stock/views.py:780 templates/js/translated/stock.js:282
+#: stock/views.py:780 templates/js/translated/stock.js:353
msgid "Confirm stock adjustment"
msgstr "Stok ayarlamasını onayla"
@@ -6059,7 +6201,7 @@ msgstr "Yeni Stok konumu oluştur"
msgid "Serialize Stock"
msgstr "Stoku Seri Numarala"
-#: stock/views.py:1143 templates/js/translated/build.js:365
+#: stock/views.py:1143 templates/js/translated/build.js:392
msgid "Create new Stock Item"
msgstr ""
@@ -6171,11 +6313,11 @@ msgstr ""
msgid "Enter a search query"
msgstr ""
-#: templates/InvenTree/search.html:268 templates/js/translated/stock.js:629
+#: templates/InvenTree/search.html:268 templates/js/translated/stock.js:699
msgid "Shipped to customer"
msgstr ""
-#: templates/InvenTree/search.html:271 templates/js/translated/stock.js:639
+#: templates/InvenTree/search.html:271 templates/js/translated/stock.js:709
msgid "No stock location set"
msgstr "Stok konumu ayarlanmadı"
@@ -6240,7 +6382,7 @@ msgstr ""
#: templates/InvenTree/settings/navbar.html:27
#: templates/InvenTree/settings/navbar.html:29
-#: templates/js/translated/tables.js:351 templates/search_form.html:6
+#: templates/js/translated/tables.js:366 templates/search_form.html:6
#: templates/search_form.html:8
msgid "Search"
msgstr ""
@@ -6257,7 +6399,7 @@ msgstr ""
#: templates/InvenTree/settings/navbar.html:46
#: templates/InvenTree/settings/navbar.html:48
-#: templates/InvenTree/settings/settings.html:8 templates/navbar.html:84
+#: templates/InvenTree/settings/settings.html:8 templates/navbar.html:94
msgid "Settings"
msgstr ""
@@ -6332,16 +6474,16 @@ msgid "No category parameter templates found"
msgstr "Kategori parametre şablonu bulunamadı"
#: templates/InvenTree/settings/settings.html:174
-#: templates/InvenTree/settings/settings.html:271
+#: templates/InvenTree/settings/settings.html:273
msgid "Edit Template"
msgstr "Şablonu Düzenle"
#: templates/InvenTree/settings/settings.html:175
-#: templates/InvenTree/settings/settings.html:272
+#: templates/InvenTree/settings/settings.html:274
msgid "Delete Template"
msgstr "Şablonu Sil"
-#: templates/InvenTree/settings/settings.html:251
+#: templates/InvenTree/settings/settings.html:253
msgid "No part parameter templates found"
msgstr "Parça parametre şablonu bulunamadı"
@@ -6358,6 +6500,7 @@ msgid "Account Settings"
msgstr ""
#: templates/InvenTree/settings/user.html:15
+#: templates/js/translated/helpers.js:26
msgid "Edit"
msgstr ""
@@ -6436,65 +6579,69 @@ msgstr "InvenTree Sürüm Bilgisi"
msgid "InvenTree Version"
msgstr "InvenTree Sürümü"
-#: templates/about.html:26
+#: templates/about.html:27
+msgid "Development Version"
+msgstr ""
+
+#: templates/about.html:30
msgid "Up to Date"
msgstr "Güncel"
-#: templates/about.html:28
+#: templates/about.html:32
msgid "Update Available"
msgstr "Güncelleme Mevcut"
-#: templates/about.html:34
-msgid "API Version"
-msgstr "API Sürümü"
-
-#: templates/about.html:39
-msgid "Python Version"
-msgstr "Python Sürümü"
-
-#: templates/about.html:44
-msgid "Django Version"
-msgstr "Django Sürümü"
-
-#: templates/about.html:51
+#: templates/about.html:42
msgid "Commit Hash"
msgstr "Commit Hash Değeri"
-#: templates/about.html:58
+#: templates/about.html:49
msgid "Commit Date"
msgstr "Commit Tarihi"
-#: templates/about.html:63
+#: templates/about.html:55
msgid "InvenTree Documentation"
msgstr ""
-#: templates/about.html:68
+#: templates/about.html:60
+msgid "API Version"
+msgstr "API Sürümü"
+
+#: templates/about.html:65
+msgid "Python Version"
+msgstr "Python Sürümü"
+
+#: templates/about.html:70
+msgid "Django Version"
+msgstr "Django Sürümü"
+
+#: templates/about.html:75
msgid "View Code on GitHub"
msgstr ""
-#: templates/about.html:73
+#: templates/about.html:80
msgid "Credits"
msgstr "Katkıda Bulunanlar"
-#: templates/about.html:78
+#: templates/about.html:85
msgid "Mobile App"
msgstr "Mobil Uygulama"
-#: templates/about.html:83
+#: templates/about.html:90
msgid "Submit Bug Report"
msgstr "Hata Raporu Gönder"
-#: templates/about.html:90 templates/clip.html:4
+#: templates/about.html:97 templates/clip.html:4
msgid "copy to clipboard"
msgstr "panoya kopyala"
-#: templates/about.html:90
+#: templates/about.html:97
msgid "copy version information"
msgstr "sürüm bilgisini kopyala"
-#: templates/about.html:100 templates/js/translated/modals.js:33
-#: templates/js/translated/modals.js:567 templates/js/translated/modals.js:661
-#: templates/js/translated/modals.js:957 templates/modals.html:29
+#: templates/about.html:107 templates/js/translated/modals.js:50
+#: templates/js/translated/modals.js:584 templates/js/translated/modals.js:678
+#: templates/js/translated/modals.js:971 templates/modals.html:29
#: templates/modals.html:54
msgid "Close"
msgstr "Kapat"
@@ -6515,1358 +6662,1390 @@ msgstr ""
msgid "Remote image must not exceed maximum allowable file size"
msgstr ""
-#: templates/js/report.js:47 templates/js/translated/report.js:47
+#: templates/js/report.js:47 templates/js/translated/report.js:67
msgid "items selected"
msgstr ""
-#: templates/js/report.js:55 templates/js/translated/report.js:55
+#: templates/js/report.js:55 templates/js/translated/report.js:75
msgid "Select Report Template"
msgstr "Rapor Şablonu Seç"
-#: templates/js/report.js:70 templates/js/translated/report.js:70
+#: templates/js/report.js:70 templates/js/translated/report.js:90
msgid "Select Test Report Template"
msgstr "Test Raporu Şablonu Seç"
-#: templates/js/report.js:98 templates/js/translated/label.js:10
-#: templates/js/translated/report.js:98 templates/js/translated/stock.js:244
+#: templates/js/report.js:98 templates/js/translated/label.js:29
+#: templates/js/translated/report.js:118 templates/js/translated/stock.js:313
msgid "Select Stock Items"
msgstr ""
-#: templates/js/report.js:99 templates/js/translated/report.js:99
+#: templates/js/report.js:99 templates/js/translated/report.js:119
msgid "Stock item(s) must be selected before printing reports"
msgstr ""
#: templates/js/report.js:116 templates/js/report.js:169
#: templates/js/report.js:223 templates/js/report.js:277
-#: templates/js/report.js:331 templates/js/translated/report.js:116
-#: templates/js/translated/report.js:169 templates/js/translated/report.js:223
-#: templates/js/translated/report.js:277 templates/js/translated/report.js:331
+#: templates/js/report.js:331 templates/js/translated/report.js:136
+#: templates/js/translated/report.js:189 templates/js/translated/report.js:243
+#: templates/js/translated/report.js:297 templates/js/translated/report.js:351
msgid "No Reports Found"
msgstr ""
-#: templates/js/report.js:117 templates/js/translated/report.js:117
+#: templates/js/report.js:117 templates/js/translated/report.js:137
msgid "No report templates found which match selected stock item(s)"
msgstr "Seçili stok kalemleri için rapor şablonu bulunamadı"
-#: templates/js/report.js:152 templates/js/translated/report.js:152
+#: templates/js/report.js:152 templates/js/translated/report.js:172
msgid "Select Builds"
msgstr ""
-#: templates/js/report.js:153 templates/js/translated/report.js:153
+#: templates/js/report.js:153 templates/js/translated/report.js:173
msgid "Build(s) must be selected before printing reports"
msgstr ""
-#: templates/js/report.js:170 templates/js/translated/report.js:170
+#: templates/js/report.js:170 templates/js/translated/report.js:190
msgid "No report templates found which match selected build(s)"
msgstr "Seçili yapım işleri için rapor şablonu bulunamadı"
-#: templates/js/report.js:205 templates/js/translated/label.js:115
-#: templates/js/translated/report.js:205
+#: templates/js/report.js:205 templates/js/translated/label.js:134
+#: templates/js/translated/report.js:225
msgid "Select Parts"
msgstr "Parçaları Seçin"
-#: templates/js/report.js:206 templates/js/translated/report.js:206
+#: templates/js/report.js:206 templates/js/translated/report.js:226
msgid "Part(s) must be selected before printing reports"
msgstr ""
-#: templates/js/report.js:224 templates/js/translated/report.js:224
+#: templates/js/report.js:224 templates/js/translated/report.js:244
msgid "No report templates found which match selected part(s)"
msgstr "Seçili parçalar için rapor şablonu bulunamadı"
-#: templates/js/report.js:259 templates/js/translated/report.js:259
+#: templates/js/report.js:259 templates/js/translated/report.js:279
msgid "Select Purchase Orders"
msgstr ""
-#: templates/js/report.js:260 templates/js/translated/report.js:260
+#: templates/js/report.js:260 templates/js/translated/report.js:280
msgid "Purchase Order(s) must be selected before printing report"
msgstr ""
#: templates/js/report.js:278 templates/js/report.js:332
-#: templates/js/translated/report.js:278 templates/js/translated/report.js:332
+#: templates/js/translated/report.js:298 templates/js/translated/report.js:352
msgid "No report templates found which match selected orders"
msgstr "Seçili emirler için rapor şablonu bulunamadı"
-#: templates/js/report.js:313 templates/js/translated/report.js:313
+#: templates/js/report.js:313 templates/js/translated/report.js:333
msgid "Select Sales Orders"
msgstr ""
-#: templates/js/report.js:314 templates/js/translated/report.js:314
+#: templates/js/report.js:314 templates/js/translated/report.js:334
msgid "Sales Order(s) must be selected before printing report"
msgstr ""
-#: templates/js/translated/api.js:161 templates/js/translated/modals.js:1027
+#: templates/js/translated/api.js:174 templates/js/translated/modals.js:1041
msgid "No Response"
msgstr "Cevap Yok"
-#: templates/js/translated/api.js:162 templates/js/translated/modals.js:1028
+#: templates/js/translated/api.js:175 templates/js/translated/modals.js:1042
msgid "No response from the InvenTree server"
msgstr ""
-#: templates/js/translated/api.js:167
+#: templates/js/translated/api.js:181
msgid "Error 400: Bad request"
msgstr ""
-#: templates/js/translated/api.js:168
+#: templates/js/translated/api.js:182
msgid "API request returned error code 400"
msgstr ""
-#: templates/js/translated/api.js:171 templates/js/translated/modals.js:1037
+#: templates/js/translated/api.js:186 templates/js/translated/modals.js:1051
msgid "Error 401: Not Authenticated"
msgstr ""
-#: templates/js/translated/api.js:172 templates/js/translated/modals.js:1038
+#: templates/js/translated/api.js:187 templates/js/translated/modals.js:1052
msgid "Authentication credentials not supplied"
msgstr ""
-#: templates/js/translated/api.js:175 templates/js/translated/modals.js:1042
+#: templates/js/translated/api.js:191 templates/js/translated/modals.js:1056
msgid "Error 403: Permission Denied"
msgstr ""
-#: templates/js/translated/api.js:176 templates/js/translated/modals.js:1043
+#: templates/js/translated/api.js:192 templates/js/translated/modals.js:1057
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:179 templates/js/translated/modals.js:1047
+#: templates/js/translated/api.js:196 templates/js/translated/modals.js:1061
msgid "Error 404: Resource Not Found"
msgstr ""
-#: templates/js/translated/api.js:180 templates/js/translated/modals.js:1048
+#: templates/js/translated/api.js:197 templates/js/translated/modals.js:1062
msgid "The requested resource could not be located on the server"
msgstr ""
-#: templates/js/translated/api.js:183 templates/js/translated/modals.js:1052
+#: templates/js/translated/api.js:201 templates/js/translated/modals.js:1066
msgid "Error 408: Timeout"
msgstr ""
-#: templates/js/translated/api.js:184 templates/js/translated/modals.js:1053
+#: templates/js/translated/api.js:202 templates/js/translated/modals.js:1067
msgid "Connection timeout while requesting data from server"
msgstr ""
-#: templates/js/translated/api.js:187
+#: templates/js/translated/api.js:205
msgid "Unhandled Error Code"
msgstr ""
-#: templates/js/translated/api.js:188
+#: templates/js/translated/api.js:206
msgid "Error code"
msgstr ""
-#: templates/js/translated/attachment.js:16
+#: templates/js/translated/attachment.js:27
msgid "No attachments found"
msgstr ""
-#: templates/js/translated/attachment.js:56
+#: templates/js/translated/attachment.js:91
msgid "Upload Date"
msgstr ""
-#: templates/js/translated/attachment.js:69
+#: templates/js/translated/attachment.js:104
msgid "Edit attachment"
msgstr ""
-#: templates/js/translated/attachment.js:76
+#: templates/js/translated/attachment.js:111
msgid "Delete attachment"
msgstr ""
-#: templates/js/translated/barcode.js:8
+#: templates/js/translated/barcode.js:30
msgid "Scan barcode data here using wedge scanner"
msgstr ""
-#: templates/js/translated/barcode.js:10
+#: templates/js/translated/barcode.js:32
msgid "Enter barcode data"
msgstr ""
-#: templates/js/translated/barcode.js:14
+#: templates/js/translated/barcode.js:36
msgid "Barcode"
msgstr ""
-#: templates/js/translated/barcode.js:32
+#: templates/js/translated/barcode.js:54
msgid "Enter optional notes for stock transfer"
msgstr ""
-#: templates/js/translated/barcode.js:33
+#: templates/js/translated/barcode.js:55
msgid "Enter notes"
msgstr ""
-#: templates/js/translated/barcode.js:71
+#: templates/js/translated/barcode.js:93
msgid "Server error"
msgstr ""
-#: templates/js/translated/barcode.js:92
+#: templates/js/translated/barcode.js:114
msgid "Unknown response from server"
msgstr ""
-#: templates/js/translated/barcode.js:119
-#: templates/js/translated/modals.js:1017
+#: templates/js/translated/barcode.js:141
+#: templates/js/translated/modals.js:1031
msgid "Invalid server response"
msgstr ""
-#: templates/js/translated/barcode.js:212
+#: templates/js/translated/barcode.js:234
msgid "Scan barcode data below"
msgstr ""
-#: templates/js/translated/barcode.js:270
+#: templates/js/translated/barcode.js:281 templates/navbar.html:65
+msgid "Scan Barcode"
+msgstr ""
+
+#: templates/js/translated/barcode.js:292
msgid "No URL in response"
msgstr ""
-#: templates/js/translated/barcode.js:288
+#: templates/js/translated/barcode.js:310
msgid "Link Barcode to Stock Item"
msgstr ""
-#: templates/js/translated/barcode.js:311
+#: templates/js/translated/barcode.js:333
msgid "This will remove the association between this stock item and the barcode"
msgstr ""
-#: templates/js/translated/barcode.js:317
+#: templates/js/translated/barcode.js:339
msgid "Unlink"
msgstr ""
-#: templates/js/translated/barcode.js:376 templates/js/translated/stock.js:220
+#: templates/js/translated/barcode.js:398 templates/js/translated/stock.js:289
msgid "Remove stock item"
msgstr ""
-#: templates/js/translated/barcode.js:418
+#: templates/js/translated/barcode.js:440
msgid "Check Stock Items into Location"
msgstr "Stok Kalemlerini bu konuma kaydet"
-#: templates/js/translated/barcode.js:422
-#: templates/js/translated/barcode.js:547
+#: templates/js/translated/barcode.js:444
+#: templates/js/translated/barcode.js:571
msgid "Check In"
msgstr ""
-#: templates/js/translated/barcode.js:462
-#: templates/js/translated/barcode.js:586
+#: templates/js/translated/barcode.js:486
+#: templates/js/translated/barcode.js:610
msgid "Error transferring stock"
msgstr ""
-#: templates/js/translated/barcode.js:481
+#: templates/js/translated/barcode.js:505
msgid "Stock Item already scanned"
msgstr ""
-#: templates/js/translated/barcode.js:485
+#: templates/js/translated/barcode.js:509
msgid "Stock Item already in this location"
msgstr "Stok kalemi zaten bu konumda"
-#: templates/js/translated/barcode.js:492
+#: templates/js/translated/barcode.js:516
msgid "Added stock item"
msgstr ""
-#: templates/js/translated/barcode.js:499
+#: templates/js/translated/barcode.js:523
msgid "Barcode does not match Stock Item"
msgstr ""
-#: templates/js/translated/barcode.js:542
+#: templates/js/translated/barcode.js:566
msgid "Check Into Location"
msgstr "Konuma Kaydet"
-#: templates/js/translated/barcode.js:605
+#: templates/js/translated/barcode.js:629
msgid "Barcode does not match a valid location"
msgstr "Barkod geçerli bir konumla eşleşmiyor"
-#: templates/js/translated/bom.js:195 templates/js/translated/build.js:1152
+#: templates/js/translated/bom.js:215 templates/js/translated/build.js:1169
msgid "Open subassembly"
msgstr ""
-#: templates/js/translated/bom.js:269
+#: templates/js/translated/bom.js:287
msgid "Purchase Price Range"
msgstr ""
-#: templates/js/translated/bom.js:277
+#: templates/js/translated/bom.js:294
msgid "Purchase Price Average"
msgstr ""
-#: templates/js/translated/bom.js:326 templates/js/translated/bom.js:412
+#: templates/js/translated/bom.js:342 templates/js/translated/bom.js:428
msgid "View BOM"
msgstr ""
-#: templates/js/translated/bom.js:386
+#: templates/js/translated/bom.js:402
msgid "Validate BOM Item"
msgstr ""
-#: templates/js/translated/bom.js:388
+#: templates/js/translated/bom.js:404
msgid "This line has been validated"
msgstr ""
-#: templates/js/translated/bom.js:390 templates/js/translated/bom.js:555
+#: templates/js/translated/bom.js:406 templates/js/translated/bom.js:569
msgid "Edit BOM Item"
msgstr ""
-#: templates/js/translated/bom.js:392 templates/js/translated/bom.js:539
+#: templates/js/translated/bom.js:408 templates/js/translated/bom.js:554
msgid "Delete BOM Item"
msgstr ""
-#: templates/js/translated/bom.js:483 templates/js/translated/build.js:458
-#: templates/js/translated/build.js:1250
+#: templates/js/translated/bom.js:499 templates/js/translated/build.js:483
+#: templates/js/translated/build.js:1267
msgid "No BOM items found"
msgstr ""
-#: templates/js/translated/build.js:42
+#: templates/js/translated/build.js:69
msgid "Edit Build Order"
msgstr ""
-#: templates/js/translated/build.js:68
+#: templates/js/translated/build.js:95
msgid "Create Build Order"
msgstr ""
-#: templates/js/translated/build.js:100
+#: templates/js/translated/build.js:127
msgid "Auto-allocate stock items to this output"
msgstr ""
-#: templates/js/translated/build.js:108
+#: templates/js/translated/build.js:135
msgid "Unallocate stock from build output"
msgstr ""
-#: templates/js/translated/build.js:118
+#: templates/js/translated/build.js:145
msgid "Complete build output"
msgstr ""
-#: templates/js/translated/build.js:127
+#: templates/js/translated/build.js:154
msgid "Delete build output"
msgstr ""
-#: templates/js/translated/build.js:222
+#: templates/js/translated/build.js:249
msgid "No build order allocations found"
msgstr ""
-#: templates/js/translated/build.js:260 templates/js/translated/order.js:471
+#: templates/js/translated/build.js:287 templates/js/translated/order.js:813
msgid "Location not specified"
msgstr ""
-#: templates/js/translated/build.js:364 templates/stock_table.html:20
+#: templates/js/translated/build.js:391 templates/stock_table.html:20
msgid "New Stock Item"
msgstr ""
-#: templates/js/translated/build.js:679
+#: templates/js/translated/build.js:702
msgid "Required Part"
msgstr "Gerekli Parça"
-#: templates/js/translated/build.js:700
+#: templates/js/translated/build.js:723
msgid "Quantity Per"
msgstr ""
-#: templates/js/translated/build.js:770 templates/js/translated/build.js:1214
+#: templates/js/translated/build.js:793 templates/js/translated/build.js:1231
#: templates/stock_table.html:59
msgid "Order stock"
msgstr ""
-#: templates/js/translated/build.js:823
+#: templates/js/translated/build.js:846
msgid "No builds matching query"
msgstr ""
-#: templates/js/translated/build.js:840 templates/js/translated/part.js:711
-#: templates/js/translated/part.js:956 templates/js/translated/stock.js:883
-#: templates/js/translated/stock.js:1336
+#: templates/js/translated/build.js:863 templates/js/translated/part.js:845
+#: templates/js/translated/part.js:1123 templates/js/translated/stock.js:783
+#: templates/js/translated/stock.js:1477
msgid "Select"
msgstr ""
-#: templates/js/translated/build.js:860
+#: templates/js/translated/build.js:883
msgid "Build order is overdue"
msgstr ""
-#: templates/js/translated/build.js:924 templates/js/translated/stock.js:1558
+#: templates/js/translated/build.js:944 templates/js/translated/stock.js:1696
msgid "No user information"
msgstr ""
-#: templates/js/translated/build.js:939
+#: templates/js/translated/build.js:956
msgid "No information"
msgstr ""
-#: templates/js/translated/build.js:989
+#: templates/js/translated/build.js:1007
msgid "No parts allocated for"
msgstr ""
-#: templates/js/translated/company.js:34
+#: templates/js/translated/company.js:65
msgid "Add Manufacturer"
msgstr ""
-#: templates/js/translated/company.js:47 templates/js/translated/company.js:136
+#: templates/js/translated/company.js:78 templates/js/translated/company.js:176
msgid "Add Manufacturer Part"
msgstr ""
-#: templates/js/translated/company.js:59
+#: templates/js/translated/company.js:99
msgid "Edit Manufacturer Part"
msgstr ""
-#: templates/js/translated/company.js:68
+#: templates/js/translated/company.js:108
msgid "Delete Manufacturer Part"
msgstr ""
-#: templates/js/translated/company.js:124 templates/js/translated/order.js:58
+#: templates/js/translated/company.js:164 templates/js/translated/order.js:86
msgid "Add Supplier"
msgstr ""
-#: templates/js/translated/company.js:152
+#: templates/js/translated/company.js:192
msgid "Add Supplier Part"
msgstr ""
-#: templates/js/translated/company.js:162
+#: templates/js/translated/company.js:207
msgid "Edit Supplier Part"
msgstr ""
-#: templates/js/translated/company.js:172
+#: templates/js/translated/company.js:217
msgid "Delete Supplier Part"
msgstr ""
-#: templates/js/translated/company.js:219
+#: templates/js/translated/company.js:264
msgid "Edit Company"
msgstr ""
-#: templates/js/translated/company.js:240
+#: templates/js/translated/company.js:285
msgid "Add new Company"
msgstr ""
-#: templates/js/translated/company.js:317
+#: templates/js/translated/company.js:362
msgid "Parts Supplied"
msgstr ""
-#: templates/js/translated/company.js:326
+#: templates/js/translated/company.js:371
msgid "Parts Manufactured"
msgstr ""
-#: templates/js/translated/company.js:339
+#: templates/js/translated/company.js:385
msgid "No company information found"
msgstr ""
-#: templates/js/translated/company.js:357
+#: templates/js/translated/company.js:404
msgid "The following manufacturer parts will be deleted"
msgstr ""
-#: templates/js/translated/company.js:374
+#: templates/js/translated/company.js:421
msgid "Delete Manufacturer Parts"
msgstr ""
-#: templates/js/translated/company.js:427
+#: templates/js/translated/company.js:475
msgid "No manufacturer parts found"
msgstr ""
-#: templates/js/translated/company.js:446
-#: templates/js/translated/company.js:696 templates/js/translated/part.js:288
-#: templates/js/translated/part.js:373
+#: templates/js/translated/company.js:495
+#: templates/js/translated/company.js:751 templates/js/translated/part.js:416
+#: templates/js/translated/part.js:501
msgid "Template part"
msgstr "Şablon Parça"
-#: templates/js/translated/company.js:450
-#: templates/js/translated/company.js:700 templates/js/translated/part.js:292
-#: templates/js/translated/part.js:377
+#: templates/js/translated/company.js:499
+#: templates/js/translated/company.js:755 templates/js/translated/part.js:420
+#: templates/js/translated/part.js:505
msgid "Assembled part"
msgstr ""
-#: templates/js/translated/company.js:574 templates/js/translated/part.js:462
+#: templates/js/translated/company.js:626 templates/js/translated/part.js:593
msgid "No parameters found"
msgstr ""
-#: templates/js/translated/company.js:610 templates/js/translated/part.js:503
+#: templates/js/translated/company.js:663 templates/js/translated/part.js:635
msgid "Edit parameter"
msgstr ""
-#: templates/js/translated/company.js:611 templates/js/translated/part.js:504
+#: templates/js/translated/company.js:664 templates/js/translated/part.js:636
msgid "Delete parameter"
msgstr ""
-#: templates/js/translated/company.js:630 templates/js/translated/part.js:521
+#: templates/js/translated/company.js:683 templates/js/translated/part.js:653
msgid "Edit Parameter"
msgstr ""
-#: templates/js/translated/company.js:641 templates/js/translated/part.js:533
+#: templates/js/translated/company.js:694 templates/js/translated/part.js:665
msgid "Delete Parameter"
msgstr ""
-#: templates/js/translated/company.js:677
+#: templates/js/translated/company.js:731
msgid "No supplier parts found"
msgstr ""
-#: templates/js/translated/filters.js:167
-#: templates/js/translated/filters.js:404
+#: templates/js/translated/filters.js:178
+#: templates/js/translated/filters.js:402
msgid "true"
msgstr "doğru"
-#: templates/js/translated/filters.js:171
-#: templates/js/translated/filters.js:405
+#: templates/js/translated/filters.js:182
+#: templates/js/translated/filters.js:403
msgid "false"
msgstr "yanlış"
-#: templates/js/translated/filters.js:193
+#: templates/js/translated/filters.js:204
msgid "Select filter"
msgstr ""
-#: templates/js/translated/filters.js:268
+#: templates/js/translated/filters.js:279
msgid "Reload data"
msgstr ""
-#: templates/js/translated/filters.js:270
+#: templates/js/translated/filters.js:281
msgid "Add new filter"
msgstr ""
-#: templates/js/translated/filters.js:273
+#: templates/js/translated/filters.js:284
msgid "Clear all filters"
msgstr ""
-#: templates/js/translated/filters.js:303
+#: templates/js/translated/filters.js:312
msgid "Create filter"
msgstr ""
-#: templates/js/translated/forms.js:289 templates/js/translated/forms.js:302
-#: templates/js/translated/forms.js:314 templates/js/translated/forms.js:326
+#: templates/js/translated/forms.js:323 templates/js/translated/forms.js:336
+#: templates/js/translated/forms.js:348 templates/js/translated/forms.js:360
msgid "Action Prohibited"
msgstr ""
-#: templates/js/translated/forms.js:290
+#: templates/js/translated/forms.js:324
msgid "Create operation not allowed"
msgstr ""
-#: templates/js/translated/forms.js:303
+#: templates/js/translated/forms.js:337
msgid "Update operation not allowed"
msgstr ""
-#: templates/js/translated/forms.js:315
+#: templates/js/translated/forms.js:349
msgid "Delete operation not allowed"
msgstr ""
-#: templates/js/translated/forms.js:327
+#: templates/js/translated/forms.js:361
msgid "View operation not allowed"
msgstr ""
-#: templates/js/translated/forms.js:865 templates/modals.html:21
+#: templates/js/translated/forms.js:889 templates/modals.html:21
#: templates/modals.html:47
msgid "Form errors exist"
msgstr ""
-#: templates/js/translated/forms.js:1258
+#: templates/js/translated/forms.js:1379
msgid "Searching"
msgstr ""
-#: templates/js/translated/forms.js:1423
+#: templates/js/translated/forms.js:1593
msgid "Clear input"
msgstr ""
-#: templates/js/translated/label.js:11
+#: templates/js/translated/helpers.js:19
+msgid "YES"
+msgstr ""
+
+#: templates/js/translated/helpers.js:21
+msgid "NO"
+msgstr ""
+
+#: templates/js/translated/label.js:30
msgid "Stock item(s) must be selected before printing labels"
msgstr "Etiket yazdırılmadan önce stok kalemleri seçilmeli"
-#: templates/js/translated/label.js:29 templates/js/translated/label.js:79
-#: templates/js/translated/label.js:134
+#: templates/js/translated/label.js:48 templates/js/translated/label.js:98
+#: templates/js/translated/label.js:153
msgid "No Labels Found"
msgstr "Etiket Bulunamadı"
-#: templates/js/translated/label.js:30
+#: templates/js/translated/label.js:49
msgid "No labels found which match selected stock item(s)"
msgstr "Seçili stok kalemleri için etiket bulunamadı"
-#: templates/js/translated/label.js:61
+#: templates/js/translated/label.js:80
msgid "Select Stock Locations"
msgstr "Stok Konumu Seç"
-#: templates/js/translated/label.js:62
+#: templates/js/translated/label.js:81
msgid "Stock location(s) must be selected before printing labels"
msgstr "Etiket yazdırılmadan önce stok konumları seçilmeli"
-#: templates/js/translated/label.js:80
+#: templates/js/translated/label.js:99
msgid "No labels found which match selected stock location(s)"
msgstr "Seçili konumlarla eşleşen etiket bulunamadı"
-#: templates/js/translated/label.js:116
+#: templates/js/translated/label.js:135
msgid "Part(s) must be selected before printing labels"
msgstr ""
-#: templates/js/translated/label.js:135
+#: templates/js/translated/label.js:154
msgid "No labels found which match the selected part(s)"
msgstr ""
-#: templates/js/translated/label.js:209
+#: templates/js/translated/label.js:228
msgid "stock items selected"
msgstr ""
-#: templates/js/translated/label.js:217
+#: templates/js/translated/label.js:236
msgid "Select Label"
msgstr "Etiket Seç"
-#: templates/js/translated/label.js:232
+#: templates/js/translated/label.js:251
msgid "Select Label Template"
msgstr "Etiket Şablonu Seç"
-#: templates/js/translated/modals.js:59 templates/js/translated/modals.js:103
-#: templates/js/translated/modals.js:593
+#: templates/js/translated/modals.js:76 templates/js/translated/modals.js:120
+#: templates/js/translated/modals.js:610
msgid "Cancel"
msgstr ""
-#: templates/js/translated/modals.js:60 templates/js/translated/modals.js:102
-#: templates/js/translated/modals.js:660 templates/js/translated/modals.js:956
+#: templates/js/translated/modals.js:77 templates/js/translated/modals.js:119
+#: templates/js/translated/modals.js:677 templates/js/translated/modals.js:970
#: templates/modals.html:30 templates/modals.html:55
msgid "Submit"
msgstr ""
-#: templates/js/translated/modals.js:101
+#: templates/js/translated/modals.js:118
msgid "Form Title"
msgstr ""
-#: templates/js/translated/modals.js:380
+#: templates/js/translated/modals.js:397
msgid "Waiting for server..."
msgstr ""
-#: templates/js/translated/modals.js:539
+#: templates/js/translated/modals.js:556
msgid "Show Error Information"
msgstr ""
-#: templates/js/translated/modals.js:592
+#: templates/js/translated/modals.js:609
msgid "Accept"
msgstr ""
-#: templates/js/translated/modals.js:649
+#: templates/js/translated/modals.js:666
msgid "Loading Data"
msgstr ""
-#: templates/js/translated/modals.js:907
+#: templates/js/translated/modals.js:922
msgid "Invalid response from server"
msgstr ""
-#: templates/js/translated/modals.js:907
+#: templates/js/translated/modals.js:922
msgid "Form data missing from server response"
msgstr ""
-#: templates/js/translated/modals.js:920
+#: templates/js/translated/modals.js:934
msgid "Error posting form data"
msgstr ""
-#: templates/js/translated/modals.js:1017
+#: templates/js/translated/modals.js:1031
msgid "JSON response missing form data"
msgstr ""
-#: templates/js/translated/modals.js:1032
+#: templates/js/translated/modals.js:1046
msgid "Error 400: Bad Request"
msgstr ""
-#: templates/js/translated/modals.js:1033
+#: templates/js/translated/modals.js:1047
msgid "Server returned error code 400"
msgstr ""
-#: templates/js/translated/modals.js:1056
+#: templates/js/translated/modals.js:1070
msgid "Error requesting form data"
msgstr ""
-#: templates/js/translated/model_renderers.js:38
+#: templates/js/translated/model_renderers.js:40
msgid "Company ID"
msgstr ""
-#: templates/js/translated/model_renderers.js:78
+#: templates/js/translated/model_renderers.js:82
msgid "Location ID"
msgstr ""
-#: templates/js/translated/model_renderers.js:95
+#: templates/js/translated/model_renderers.js:99
msgid "Build ID"
msgstr ""
-#: templates/js/translated/model_renderers.js:114
+#: templates/js/translated/model_renderers.js:119
msgid "Part ID"
msgstr ""
-#: templates/js/translated/model_renderers.js:163
+#: templates/js/translated/model_renderers.js:171
msgid "Category ID"
msgstr ""
-#: templates/js/translated/model_renderers.js:199
+#: templates/js/translated/model_renderers.js:208
msgid "Manufacturer Part ID"
msgstr ""
-#: templates/js/translated/model_renderers.js:227
+#: templates/js/translated/model_renderers.js:237
msgid "Supplier Part ID"
msgstr ""
-#: templates/js/translated/order.js:17
+#: templates/js/translated/order.js:45
msgid "Add Customer"
msgstr ""
-#: templates/js/translated/order.js:42
+#: templates/js/translated/order.js:70
msgid "Create Sales Order"
msgstr ""
-#: templates/js/translated/order.js:222
+#: templates/js/translated/order.js:295
msgid "No purchase orders found"
msgstr ""
-#: templates/js/translated/order.js:246 templates/js/translated/order.js:341
+#: templates/js/translated/order.js:320 templates/js/translated/order.js:682
msgid "Order is overdue"
msgstr ""
-#: templates/js/translated/order.js:318
+#: templates/js/translated/order.js:452
+msgid "No line items found"
+msgstr ""
+
+#: templates/js/translated/order.js:617
+msgid "Delete line item"
+msgstr ""
+
+#: templates/js/translated/order.js:621
+msgid "Receive line item"
+msgstr ""
+
+#: templates/js/translated/order.js:658
msgid "No sales orders found"
msgstr ""
-#: templates/js/translated/order.js:355
+#: templates/js/translated/order.js:696
msgid "Invalid Customer"
msgstr ""
-#: templates/js/translated/order.js:432
+#: templates/js/translated/order.js:774
msgid "No sales order allocations found"
msgstr ""
-#: templates/js/translated/part.js:10
-msgid "YES"
-msgstr ""
-
-#: templates/js/translated/part.js:12
-msgid "NO"
-msgstr ""
-
-#: templates/js/translated/part.js:22
-msgid "Add Part Category"
-msgstr ""
-
-#: templates/js/translated/part.js:53
+#: templates/js/translated/part.js:49
msgid "Part Attributes"
msgstr ""
-#: templates/js/translated/part.js:96
+#: templates/js/translated/part.js:53
msgid "Part Creation Options"
msgstr ""
-#: templates/js/translated/part.js:102
-msgid "Initial Stock Quantity"
-msgstr ""
-
-#: templates/js/translated/part.js:103
-msgid "Initialize part stock with specified quantity"
-msgstr ""
-
-#: templates/js/translated/part.js:109
-msgid "Copy Category Parameters"
-msgstr ""
-
-#: templates/js/translated/part.js:110
-msgid "Copy parameter templates from selected part category"
-msgstr ""
-
-#: templates/js/translated/part.js:120
+#: templates/js/translated/part.js:57
msgid "Part Duplication Options"
msgstr ""
-#: templates/js/translated/part.js:131
-msgid "Copy Image"
+#: templates/js/translated/part.js:61
+msgid "Supplier Options"
msgstr ""
-#: templates/js/translated/part.js:132
-msgid "Copy image from original part"
+#: templates/js/translated/part.js:75
+msgid "Add Part Category"
msgstr ""
-#: templates/js/translated/part.js:138
-msgid "Copy BOM"
+#: templates/js/translated/part.js:159
+msgid "Create Initial Stock"
msgstr ""
-#: templates/js/translated/part.js:139
-msgid "Copy bill of materials from original part"
+#: templates/js/translated/part.js:160
+msgid "Create an initial stock item for this part"
msgstr ""
-#: templates/js/translated/part.js:145
-msgid "Copy Parameters"
+#: templates/js/translated/part.js:167
+msgid "Initial Stock Quantity"
msgstr ""
-#: templates/js/translated/part.js:146
-msgid "Copy parameter data from original part"
+#: templates/js/translated/part.js:168
+msgid "Specify initial stock quantity for this part"
msgstr ""
-#: templates/js/translated/part.js:158
-msgid "Parent part category"
+#: templates/js/translated/part.js:175 templates/js/translated/stock.js:330
+msgid "Select destination stock location"
+msgstr ""
+
+#: templates/js/translated/part.js:186
+msgid "Copy Category Parameters"
+msgstr ""
+
+#: templates/js/translated/part.js:187
+msgid "Copy parameter templates from selected part category"
+msgstr ""
+
+#: templates/js/translated/part.js:195
+msgid "Add Supplier Data"
msgstr ""
#: templates/js/translated/part.js:196
+msgid "Create initial supplier data for this part"
+msgstr ""
+
+#: templates/js/translated/part.js:252
+msgid "Copy Image"
+msgstr ""
+
+#: templates/js/translated/part.js:253
+msgid "Copy image from original part"
+msgstr ""
+
+#: templates/js/translated/part.js:260
+msgid "Copy BOM"
+msgstr ""
+
+#: templates/js/translated/part.js:261
+msgid "Copy bill of materials from original part"
+msgstr ""
+
+#: templates/js/translated/part.js:268
+msgid "Copy Parameters"
+msgstr ""
+
+#: templates/js/translated/part.js:269
+msgid "Copy parameter data from original part"
+msgstr ""
+
+#: templates/js/translated/part.js:282
+msgid "Parent part category"
+msgstr ""
+
+#: templates/js/translated/part.js:323
msgid "Edit Part"
msgstr ""
-#: templates/js/translated/part.js:280 templates/js/translated/part.js:365
+#: templates/js/translated/part.js:408 templates/js/translated/part.js:493
msgid "Trackable part"
msgstr ""
-#: templates/js/translated/part.js:284 templates/js/translated/part.js:369
+#: templates/js/translated/part.js:412 templates/js/translated/part.js:497
msgid "Virtual part"
msgstr ""
-#: templates/js/translated/part.js:296
+#: templates/js/translated/part.js:424
msgid "Starred part"
msgstr ""
-#: templates/js/translated/part.js:300
+#: templates/js/translated/part.js:428
msgid "Salable part"
msgstr ""
-#: templates/js/translated/part.js:414
+#: templates/js/translated/part.js:543
msgid "No variants found"
msgstr "Çeşit bulunamadı"
-#: templates/js/translated/part.js:601 templates/js/translated/part.js:840
+#: templates/js/translated/part.js:732 templates/js/translated/part.js:994
msgid "No parts found"
msgstr ""
-#: templates/js/translated/part.js:779
+#: templates/js/translated/part.js:921
msgid "No category"
msgstr ""
-#: templates/js/translated/part.js:797
-#: templates/js/translated/table_filters.js:337
+#: templates/js/translated/part.js:944
+#: templates/js/translated/table_filters.js:350
msgid "Low stock"
msgstr ""
-#: templates/js/translated/part.js:981 templates/js/translated/stock.js:1360
+#: templates/js/translated/part.js:1148 templates/js/translated/stock.js:1501
msgid "Path"
msgstr ""
-#: templates/js/translated/part.js:1024
+#: templates/js/translated/part.js:1191
msgid "No test templates matching query"
msgstr "Sorgu ile eşleşen test şablonu bulunamadı"
-#: templates/js/translated/part.js:1075 templates/js/translated/stock.js:443
+#: templates/js/translated/part.js:1242 templates/js/translated/stock.js:514
msgid "Edit test result"
msgstr ""
-#: templates/js/translated/part.js:1076 templates/js/translated/stock.js:444
+#: templates/js/translated/part.js:1243 templates/js/translated/stock.js:515
msgid "Delete test result"
msgstr ""
-#: templates/js/translated/part.js:1082
+#: templates/js/translated/part.js:1249
msgid "This test is defined for a parent part"
msgstr ""
-#: templates/js/translated/part.js:1107
+#: templates/js/translated/part.js:1274
#, python-brace-format
msgid "No ${human_name} information found"
msgstr ""
-#: templates/js/translated/part.js:1160
+#: templates/js/translated/part.js:1329
#, python-brace-format
msgid "Edit ${human_name}"
msgstr ""
-#: templates/js/translated/part.js:1161
+#: templates/js/translated/part.js:1330
#, python-brace-format
msgid "Delete ${human_name}"
msgstr ""
-#: templates/js/translated/part.js:1261
+#: templates/js/translated/part.js:1431
msgid "Single Price"
msgstr ""
-#: templates/js/translated/part.js:1280
+#: templates/js/translated/part.js:1450
msgid "Single Price Difference"
msgstr ""
-#: templates/js/translated/stock.js:9
+#: templates/js/translated/stock.js:66
msgid "Parent stock location"
msgstr ""
-#: templates/js/translated/stock.js:39
+#: templates/js/translated/stock.js:96
msgid "Export Stock"
msgstr ""
-#: templates/js/translated/stock.js:42
+#: templates/js/translated/stock.js:99
msgid "Format"
msgstr ""
-#: templates/js/translated/stock.js:43
+#: templates/js/translated/stock.js:100
msgid "Select file format"
msgstr ""
-#: templates/js/translated/stock.js:55
+#: templates/js/translated/stock.js:124
msgid "Include Sublocations"
msgstr ""
-#: templates/js/translated/stock.js:56
+#: templates/js/translated/stock.js:125
msgid "Include stock items in sublocations"
msgstr ""
-#: templates/js/translated/stock.js:98
+#: templates/js/translated/stock.js:167
msgid "Transfer Stock"
msgstr ""
-#: templates/js/translated/stock.js:99
+#: templates/js/translated/stock.js:168
msgid "Move"
msgstr ""
-#: templates/js/translated/stock.js:105
+#: templates/js/translated/stock.js:174
msgid "Count Stock"
msgstr ""
-#: templates/js/translated/stock.js:106
+#: templates/js/translated/stock.js:175
msgid "Count"
msgstr ""
-#: templates/js/translated/stock.js:110
+#: templates/js/translated/stock.js:179
msgid "Remove Stock"
msgstr ""
-#: templates/js/translated/stock.js:111
+#: templates/js/translated/stock.js:180
msgid "Take"
msgstr ""
-#: templates/js/translated/stock.js:115
+#: templates/js/translated/stock.js:184
msgid "Add Stock"
msgstr ""
-#: templates/js/translated/stock.js:116 users/models.py:190
+#: templates/js/translated/stock.js:185 users/models.py:190
msgid "Add"
msgstr ""
-#: templates/js/translated/stock.js:120 templates/stock_table.html:63
+#: templates/js/translated/stock.js:189 templates/stock_table.html:63
msgid "Delete Stock"
msgstr ""
-#: templates/js/translated/stock.js:209
+#: templates/js/translated/stock.js:278
msgid "Quantity cannot be adjusted for serialized stock"
msgstr ""
-#: templates/js/translated/stock.js:209
+#: templates/js/translated/stock.js:278
msgid "Specify stock quantity"
msgstr ""
-#: templates/js/translated/stock.js:245
+#: templates/js/translated/stock.js:314
msgid "You must select at least one available stock item"
msgstr ""
-#: templates/js/translated/stock.js:261
-msgid "Select destination stock location"
-msgstr ""
-
-#: templates/js/translated/stock.js:269
+#: templates/js/translated/stock.js:339
msgid "Stock transaction notes"
msgstr ""
-#: templates/js/translated/stock.js:406
+#: templates/js/translated/stock.js:477
msgid "PASS"
msgstr ""
-#: templates/js/translated/stock.js:408
+#: templates/js/translated/stock.js:479
msgid "FAIL"
msgstr ""
-#: templates/js/translated/stock.js:413
+#: templates/js/translated/stock.js:484
msgid "NO RESULT"
msgstr ""
-#: templates/js/translated/stock.js:439
+#: templates/js/translated/stock.js:510
msgid "Add test result"
msgstr ""
-#: templates/js/translated/stock.js:465
+#: templates/js/translated/stock.js:536
msgid "No test results found"
msgstr ""
-#: templates/js/translated/stock.js:513
+#: templates/js/translated/stock.js:584
msgid "Test Date"
msgstr ""
-#: templates/js/translated/stock.js:621
+#: templates/js/translated/stock.js:691
msgid "In production"
msgstr ""
-#: templates/js/translated/stock.js:625
+#: templates/js/translated/stock.js:695
msgid "Installed in Stock Item"
msgstr ""
-#: templates/js/translated/stock.js:633
+#: templates/js/translated/stock.js:703
msgid "Assigned to Sales Order"
msgstr ""
-#: templates/js/translated/stock.js:709
-msgid "No stock items matching query"
-msgstr ""
-
-#: templates/js/translated/stock.js:729
-msgid "items"
-msgstr ""
-
-#: templates/js/translated/stock.js:821
-msgid "batches"
-msgstr ""
-
-#: templates/js/translated/stock.js:848
-msgid "locations"
-msgstr "konumlar"
-
-#: templates/js/translated/stock.js:850
-msgid "Undefined location"
-msgstr "Tanımsız konum"
-
-#: templates/js/translated/stock.js:951
+#: templates/js/translated/stock.js:865
msgid "Stock item is in production"
msgstr ""
-#: templates/js/translated/stock.js:956
+#: templates/js/translated/stock.js:870
msgid "Stock item assigned to sales order"
msgstr ""
-#: templates/js/translated/stock.js:959
+#: templates/js/translated/stock.js:873
msgid "Stock item assigned to customer"
msgstr ""
-#: templates/js/translated/stock.js:963
+#: templates/js/translated/stock.js:877
msgid "Stock item has expired"
msgstr ""
-#: templates/js/translated/stock.js:965
+#: templates/js/translated/stock.js:879
msgid "Stock item will expire soon"
msgstr ""
-#: templates/js/translated/stock.js:969
+#: templates/js/translated/stock.js:883
msgid "Stock item has been allocated"
msgstr ""
-#: templates/js/translated/stock.js:973
+#: templates/js/translated/stock.js:887
msgid "Stock item has been installed in another item"
msgstr ""
-#: templates/js/translated/stock.js:980
+#: templates/js/translated/stock.js:894
msgid "Stock item has been rejected"
msgstr ""
-#: templates/js/translated/stock.js:984
+#: templates/js/translated/stock.js:896
msgid "Stock item is lost"
msgstr ""
-#: templates/js/translated/stock.js:987
+#: templates/js/translated/stock.js:898
msgid "Stock item is destroyed"
msgstr ""
-#: templates/js/translated/stock.js:991
-#: templates/js/translated/table_filters.js:148
+#: templates/js/translated/stock.js:902
+#: templates/js/translated/table_filters.js:161
msgid "Depleted"
msgstr ""
-#: templates/js/translated/stock.js:1020
+#: templates/js/translated/stock.js:956
msgid "Stocktake"
msgstr ""
-#: templates/js/translated/stock.js:1073
+#: templates/js/translated/stock.js:1029
msgid "Supplier part not specified"
msgstr ""
-#: templates/js/translated/stock.js:1223
+#: templates/js/translated/stock.js:1067
+msgid "No stock items matching query"
+msgstr ""
+
+#: templates/js/translated/stock.js:1088 templates/js/translated/stock.js:1136
+msgid "items"
+msgstr ""
+
+#: templates/js/translated/stock.js:1176
+msgid "batches"
+msgstr ""
+
+#: templates/js/translated/stock.js:1203
+msgid "locations"
+msgstr "konumlar"
+
+#: templates/js/translated/stock.js:1205
+msgid "Undefined location"
+msgstr "Tanımsız konum"
+
+#: templates/js/translated/stock.js:1364
msgid "Stock Status"
msgstr ""
-#: templates/js/translated/stock.js:1238
+#: templates/js/translated/stock.js:1379
msgid "Set Stock Status"
msgstr ""
-#: templates/js/translated/stock.js:1252
+#: templates/js/translated/stock.js:1393
msgid "Select Status Code"
msgstr ""
-#: templates/js/translated/stock.js:1253
+#: templates/js/translated/stock.js:1394
msgid "Status code must be selected"
msgstr ""
-#: templates/js/translated/stock.js:1392
+#: templates/js/translated/stock.js:1533
msgid "Invalid date"
msgstr ""
-#: templates/js/translated/stock.js:1439
+#: templates/js/translated/stock.js:1580
msgid "Location no longer exists"
msgstr "Konum artık yok"
-#: templates/js/translated/stock.js:1458
+#: templates/js/translated/stock.js:1599
msgid "Purchase order no longer exists"
msgstr ""
-#: templates/js/translated/stock.js:1477
+#: templates/js/translated/stock.js:1618
msgid "Customer no longer exists"
msgstr ""
-#: templates/js/translated/stock.js:1495
+#: templates/js/translated/stock.js:1636
msgid "Stock item no longer exists"
msgstr ""
-#: templates/js/translated/stock.js:1518
+#: templates/js/translated/stock.js:1659
msgid "Added"
msgstr ""
-#: templates/js/translated/stock.js:1526
+#: templates/js/translated/stock.js:1667
msgid "Removed"
msgstr ""
-#: templates/js/translated/stock.js:1570
+#: templates/js/translated/stock.js:1708
msgid "Edit tracking entry"
msgstr ""
-#: templates/js/translated/stock.js:1571
+#: templates/js/translated/stock.js:1709
msgid "Delete tracking entry"
msgstr ""
-#: templates/js/translated/stock.js:1715
+#: templates/js/translated/stock.js:1833
msgid "No installed items"
msgstr ""
-#: templates/js/translated/stock.js:1738
+#: templates/js/translated/stock.js:1856
msgid "Serial"
msgstr "Seri No"
-#: templates/js/translated/stock.js:1766
+#: templates/js/translated/stock.js:1884
msgid "Uninstall Stock Item"
msgstr ""
-#: templates/js/translated/table_filters.js:43
+#: templates/js/translated/table_filters.js:56
msgid "Trackable Part"
msgstr ""
-#: templates/js/translated/table_filters.js:47
+#: templates/js/translated/table_filters.js:60
msgid "Assembled Part"
msgstr ""
-#: templates/js/translated/table_filters.js:51
+#: templates/js/translated/table_filters.js:64
msgid "Validated"
msgstr ""
-#: templates/js/translated/table_filters.js:59
+#: templates/js/translated/table_filters.js:72
msgid "Allow Variant Stock"
msgstr "Çeşit Stokuna İzin Ver"
-#: templates/js/translated/table_filters.js:79
-#: templates/js/translated/table_filters.js:143
+#: templates/js/translated/table_filters.js:92
+#: templates/js/translated/table_filters.js:156
msgid "Include sublocations"
msgstr "Alt konumları dahil et"
-#: templates/js/translated/table_filters.js:80
+#: templates/js/translated/table_filters.js:93
msgid "Include locations"
msgstr "Konumları dahil et"
-#: templates/js/translated/table_filters.js:90
-#: templates/js/translated/table_filters.js:91
-#: templates/js/translated/table_filters.js:314
+#: templates/js/translated/table_filters.js:103
+#: templates/js/translated/table_filters.js:104
+#: templates/js/translated/table_filters.js:327
msgid "Include subcategories"
msgstr ""
-#: templates/js/translated/table_filters.js:101
-#: templates/js/translated/table_filters.js:178
+#: templates/js/translated/table_filters.js:114
+#: templates/js/translated/table_filters.js:191
msgid "Is Serialized"
msgstr "Seri Numaralı"
-#: templates/js/translated/table_filters.js:104
-#: templates/js/translated/table_filters.js:185
+#: templates/js/translated/table_filters.js:117
+#: templates/js/translated/table_filters.js:198
msgid "Serial number GTE"
msgstr "Seri numarası BvE"
-#: templates/js/translated/table_filters.js:105
-#: templates/js/translated/table_filters.js:186
+#: templates/js/translated/table_filters.js:118
+#: templates/js/translated/table_filters.js:199
msgid "Serial number greater than or equal to"
msgstr "Seri numarası büyük veya eşit"
-#: templates/js/translated/table_filters.js:108
-#: templates/js/translated/table_filters.js:189
+#: templates/js/translated/table_filters.js:121
+#: templates/js/translated/table_filters.js:202
msgid "Serial number LTE"
msgstr "Seri numarası KvE"
-#: templates/js/translated/table_filters.js:109
-#: templates/js/translated/table_filters.js:190
+#: templates/js/translated/table_filters.js:122
+#: templates/js/translated/table_filters.js:203
msgid "Serial number less than or equal to"
msgstr "Seri numarası küçük veya eşit"
-#: templates/js/translated/table_filters.js:112
-#: templates/js/translated/table_filters.js:113
-#: templates/js/translated/table_filters.js:181
-#: templates/js/translated/table_filters.js:182
+#: templates/js/translated/table_filters.js:125
+#: templates/js/translated/table_filters.js:126
+#: templates/js/translated/table_filters.js:194
+#: templates/js/translated/table_filters.js:195
msgid "Serial number"
msgstr "Seri numarası"
-#: templates/js/translated/table_filters.js:117
-#: templates/js/translated/table_filters.js:199
+#: templates/js/translated/table_filters.js:130
+#: templates/js/translated/table_filters.js:212
msgid "Batch code"
msgstr ""
-#: templates/js/translated/table_filters.js:128
-#: templates/js/translated/table_filters.js:304
+#: templates/js/translated/table_filters.js:141
+#: templates/js/translated/table_filters.js:317
msgid "Active parts"
msgstr ""
-#: templates/js/translated/table_filters.js:129
+#: templates/js/translated/table_filters.js:142
msgid "Show stock for active parts"
msgstr ""
-#: templates/js/translated/table_filters.js:134
+#: templates/js/translated/table_filters.js:147
msgid "Part is an assembly"
msgstr ""
-#: templates/js/translated/table_filters.js:138
+#: templates/js/translated/table_filters.js:151
msgid "Is allocated"
msgstr ""
-#: templates/js/translated/table_filters.js:139
+#: templates/js/translated/table_filters.js:152
msgid "Item has been allocated"
msgstr ""
-#: templates/js/translated/table_filters.js:144
+#: templates/js/translated/table_filters.js:157
msgid "Include stock in sublocations"
msgstr "Alt konumlardaki stoku dahil et"
-#: templates/js/translated/table_filters.js:149
+#: templates/js/translated/table_filters.js:162
msgid "Show stock items which are depleted"
msgstr ""
-#: templates/js/translated/table_filters.js:154
+#: templates/js/translated/table_filters.js:167
msgid "Show items which are in stock"
msgstr ""
-#: templates/js/translated/table_filters.js:158
+#: templates/js/translated/table_filters.js:171
msgid "In Production"
msgstr ""
-#: templates/js/translated/table_filters.js:159
+#: templates/js/translated/table_filters.js:172
msgid "Show items which are in production"
msgstr ""
-#: templates/js/translated/table_filters.js:163
+#: templates/js/translated/table_filters.js:176
msgid "Include Variants"
msgstr "Çeşitleri Dahil Et"
-#: templates/js/translated/table_filters.js:164
+#: templates/js/translated/table_filters.js:177
msgid "Include stock items for variant parts"
msgstr "Çeşit parçaların stok kalemlerini dahil et"
-#: templates/js/translated/table_filters.js:168
+#: templates/js/translated/table_filters.js:181
msgid "Installed"
msgstr ""
-#: templates/js/translated/table_filters.js:169
+#: templates/js/translated/table_filters.js:182
msgid "Show stock items which are installed in another item"
msgstr ""
-#: templates/js/translated/table_filters.js:174
+#: templates/js/translated/table_filters.js:187
msgid "Show items which have been assigned to a customer"
msgstr ""
-#: templates/js/translated/table_filters.js:194
-#: templates/js/translated/table_filters.js:195
+#: templates/js/translated/table_filters.js:207
+#: templates/js/translated/table_filters.js:208
msgid "Stock status"
msgstr ""
-#: templates/js/translated/table_filters.js:203
+#: templates/js/translated/table_filters.js:216
msgid "Has purchase price"
msgstr ""
-#: templates/js/translated/table_filters.js:204
+#: templates/js/translated/table_filters.js:217
msgid "Show stock items which have a purchase price set"
msgstr ""
-#: templates/js/translated/table_filters.js:213
+#: templates/js/translated/table_filters.js:226
msgid "Show stock items which have expired"
msgstr ""
-#: templates/js/translated/table_filters.js:219
+#: templates/js/translated/table_filters.js:232
msgid "Show stock which is close to expiring"
msgstr ""
-#: templates/js/translated/table_filters.js:250
+#: templates/js/translated/table_filters.js:263
msgid "Build status"
msgstr ""
-#: templates/js/translated/table_filters.js:269
-#: templates/js/translated/table_filters.js:286
+#: templates/js/translated/table_filters.js:282
+#: templates/js/translated/table_filters.js:299
msgid "Order status"
msgstr ""
-#: templates/js/translated/table_filters.js:274
-#: templates/js/translated/table_filters.js:291
+#: templates/js/translated/table_filters.js:287
+#: templates/js/translated/table_filters.js:304
msgid "Outstanding"
msgstr ""
-#: templates/js/translated/table_filters.js:315
+#: templates/js/translated/table_filters.js:328
msgid "Include parts in subcategories"
msgstr "Alt kategorilerdeki parçaları dahil et"
-#: templates/js/translated/table_filters.js:319
+#: templates/js/translated/table_filters.js:332
msgid "Has IPN"
msgstr "DPN Var"
-#: templates/js/translated/table_filters.js:320
+#: templates/js/translated/table_filters.js:333
msgid "Part has internal part number"
msgstr ""
-#: templates/js/translated/table_filters.js:325
+#: templates/js/translated/table_filters.js:338
msgid "Show active parts"
msgstr ""
-#: templates/js/translated/table_filters.js:333
+#: templates/js/translated/table_filters.js:346
msgid "Stock available"
msgstr ""
-#: templates/js/translated/table_filters.js:349
+#: templates/js/translated/table_filters.js:362
msgid "Starred"
msgstr ""
-#: templates/js/translated/table_filters.js:361
+#: templates/js/translated/table_filters.js:374
msgid "Purchasable"
msgstr ""
-#: templates/js/translated/tables.js:342
+#: templates/js/translated/tables.js:357
msgid "Loading data"
msgstr ""
-#: templates/js/translated/tables.js:345
+#: templates/js/translated/tables.js:360
msgid "rows per page"
msgstr ""
-#: templates/js/translated/tables.js:348
+#: templates/js/translated/tables.js:363
msgid "Showing"
msgstr ""
-#: templates/js/translated/tables.js:348
+#: templates/js/translated/tables.js:363
msgid "to"
msgstr ""
-#: templates/js/translated/tables.js:348
+#: templates/js/translated/tables.js:363
msgid "of"
msgstr ""
-#: templates/js/translated/tables.js:348
+#: templates/js/translated/tables.js:363
msgid "rows"
msgstr ""
-#: templates/js/translated/tables.js:354
+#: templates/js/translated/tables.js:369
msgid "No matching results"
msgstr ""
-#: templates/js/translated/tables.js:357
+#: templates/js/translated/tables.js:372
msgid "Hide/Show pagination"
msgstr ""
-#: templates/js/translated/tables.js:360
+#: templates/js/translated/tables.js:375
msgid "Refresh"
msgstr ""
-#: templates/js/translated/tables.js:363
+#: templates/js/translated/tables.js:378
msgid "Toggle"
msgstr ""
-#: templates/js/translated/tables.js:366
+#: templates/js/translated/tables.js:381
msgid "Columns"
msgstr ""
-#: templates/js/translated/tables.js:369
+#: templates/js/translated/tables.js:384
msgid "All"
msgstr ""
-#: templates/navbar.html:13
+#: templates/navbar.html:19
msgid "Toggle navigation"
msgstr ""
-#: templates/navbar.html:33
+#: templates/navbar.html:39
msgid "Buy"
msgstr ""
-#: templates/navbar.html:43
+#: templates/navbar.html:51
msgid "Sell"
msgstr ""
-#: templates/navbar.html:55
-msgid "Scan Barcode"
-msgstr ""
-
-#: templates/navbar.html:77 users/models.py:39
+#: templates/navbar.html:87 users/models.py:39
msgid "Admin"
msgstr ""
-#: templates/navbar.html:79
+#: templates/navbar.html:89
msgid "Logout"
msgstr ""
-#: templates/navbar.html:81 templates/registration/login.html:89
+#: templates/navbar.html:91 templates/registration/login.html:89
msgid "Login"
msgstr ""
-#: templates/navbar.html:104
+#: templates/navbar.html:114
msgid "About InvenTree"
msgstr ""
diff --git a/InvenTree/locale/vi/LC_MESSAGES/django.po b/InvenTree/locale/vi/LC_MESSAGES/django.po
index 8c651efac6..49924e132a 100644
--- a/InvenTree/locale/vi/LC_MESSAGES/django.po
+++ b/InvenTree/locale/vi/LC_MESSAGES/django.po
@@ -2,8 +2,8 @@ msgid ""
msgstr ""
"Project-Id-Version: inventree\n"
"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2021-08-07 15:14+0000\n"
-"PO-Revision-Date: 2021-08-07 15:30\n"
+"POT-Creation-Date: 2021-09-12 13:15+0000\n"
+"PO-Revision-Date: 2021-09-12 13:44\n"
"Last-Translator: \n"
"Language-Team: Vietnamese\n"
"Language: vi_VN\n"
@@ -36,7 +36,7 @@ msgstr ""
#: InvenTree/forms.py:111 build/forms.py:102 build/forms.py:123
#: build/forms.py:145 build/forms.py:169 build/forms.py:185 build/forms.py:227
#: order/forms.py:30 order/forms.py:41 order/forms.py:52 order/forms.py:63
-#: order/forms.py:74 part/forms.py:108 templates/js/translated/forms.js:545
+#: order/forms.py:74 part/forms.py:108 templates/js/translated/forms.js:564
msgid "Confirm"
msgstr ""
@@ -73,7 +73,7 @@ msgstr ""
msgid "Duplicate serial: {n}"
msgstr ""
-#: InvenTree/helpers.py:408 order/models.py:315 order/models.py:425
+#: InvenTree/helpers.py:408 order/models.py:315 order/models.py:430
#: stock/views.py:1363
msgid "Invalid quantity provided"
msgstr ""
@@ -102,152 +102,181 @@ msgstr ""
msgid "Number of unique serial number ({s}) must match quantity ({q})"
msgstr ""
-#: InvenTree/models.py:61 stock/models.py:1815
+#: InvenTree/models.py:66 stock/models.py:1826
msgid "Attachment"
msgstr ""
-#: InvenTree/models.py:62
+#: InvenTree/models.py:67
msgid "Select file to attach"
msgstr ""
-#: InvenTree/models.py:64 templates/js/translated/attachment.js:52
+#: InvenTree/models.py:69 templates/js/translated/attachment.js:87
msgid "Comment"
msgstr ""
-#: InvenTree/models.py:64
+#: InvenTree/models.py:69
msgid "File comment"
msgstr ""
-#: InvenTree/models.py:70 InvenTree/models.py:71 common/models.py:969
-#: common/models.py:970 part/models.py:2035
+#: InvenTree/models.py:75 InvenTree/models.py:76 common/models.py:993
+#: common/models.py:994 part/models.py:2051
#: report/templates/report/inventree_test_report_base.html:91
-#: templates/js/translated/stock.js:1549
+#: templates/js/translated/stock.js:1690
msgid "User"
msgstr ""
-#: InvenTree/models.py:74
+#: InvenTree/models.py:79
msgid "upload date"
msgstr ""
-#: InvenTree/models.py:113
+#: InvenTree/models.py:99
+msgid "Filename must not be empty"
+msgstr ""
+
+#: InvenTree/models.py:122
+msgid "Invalid attachment directory"
+msgstr ""
+
+#: InvenTree/models.py:132
+#, python-brace-format
+msgid "Filename contains illegal character '{c}'"
+msgstr ""
+
+#: InvenTree/models.py:135
+msgid "Filename missing extension"
+msgstr ""
+
+#: InvenTree/models.py:142
+msgid "Attachment with this filename already exists"
+msgstr ""
+
+#: InvenTree/models.py:149
+msgid "Error renaming file"
+msgstr ""
+
+#: InvenTree/models.py:184
msgid "Invalid choice"
msgstr ""
-#: InvenTree/models.py:129 InvenTree/models.py:130 company/models.py:412
-#: label/models.py:112 part/models.py:656 part/models.py:2196
-#: part/templates/part/part_base.html:233 report/models.py:181
+#: InvenTree/models.py:200 InvenTree/models.py:201 company/models.py:414
+#: label/models.py:112 part/models.py:658 part/models.py:2212
+#: part/templates/part/part_base.html:241 report/models.py:181
#: templates/InvenTree/search.html:137 templates/InvenTree/search.html:289
-#: templates/js/translated/company.js:583 templates/js/translated/part.js:338
-#: templates/js/translated/part.js:471 templates/js/translated/part.js:963
-#: templates/js/translated/stock.js:1342
+#: templates/js/translated/company.js:636 templates/js/translated/part.js:466
+#: templates/js/translated/part.js:603 templates/js/translated/part.js:1130
+#: templates/js/translated/stock.js:1483
msgid "Name"
msgstr ""
-#: InvenTree/models.py:136 build/models.py:187
-#: build/templates/build/detail.html:24 company/models.py:351
-#: company/models.py:519 company/templates/company/manufacturer_part.html:76
+#: InvenTree/models.py:207 build/models.py:187
+#: build/templates/build/detail.html:24 company/models.py:353
+#: company/models.py:569 company/templates/company/manufacturer_part.html:76
#: company/templates/company/supplier_part.html:75 label/models.py:119
-#: order/models.py:158 order/templates/order/purchase_order_detail.html:312
-#: part/models.py:679 part/templates/part/part_base.html:238
+#: order/models.py:158 part/models.py:681
+#: part/templates/part/part_base.html:246
#: part/templates/part/set_category.html:14 report/models.py:194
#: report/models.py:551 report/models.py:590
#: report/templates/report/inventree_build_order_base.html:118
#: templates/InvenTree/search.html:144 templates/InvenTree/search.html:224
#: templates/InvenTree/search.html:296
#: templates/InvenTree/settings/header.html:9
-#: templates/js/translated/bom.js:210 templates/js/translated/build.js:868
-#: templates/js/translated/build.js:1162 templates/js/translated/company.js:299
-#: templates/js/translated/company.js:497
-#: templates/js/translated/company.js:779 templates/js/translated/order.js:267
-#: templates/js/translated/order.js:369 templates/js/translated/part.js:397
-#: templates/js/translated/part.js:581 templates/js/translated/part.js:758
-#: templates/js/translated/part.js:975 templates/js/translated/part.js:1043
-#: templates/js/translated/stock.js:926 templates/js/translated/stock.js:1354
-#: templates/js/translated/stock.js:1399
+#: templates/js/translated/bom.js:230 templates/js/translated/build.js:891
+#: templates/js/translated/build.js:1179 templates/js/translated/company.js:344
+#: templates/js/translated/company.js:546
+#: templates/js/translated/company.js:834 templates/js/translated/order.js:341
+#: templates/js/translated/order.js:486 templates/js/translated/order.js:710
+#: templates/js/translated/part.js:525 templates/js/translated/part.js:713
+#: templates/js/translated/part.js:902 templates/js/translated/part.js:1142
+#: templates/js/translated/part.js:1210 templates/js/translated/stock.js:840
+#: templates/js/translated/stock.js:1495 templates/js/translated/stock.js:1540
msgid "Description"
msgstr ""
-#: InvenTree/models.py:137
+#: InvenTree/models.py:208
msgid "Description (optional)"
msgstr ""
-#: InvenTree/models.py:145
+#: InvenTree/models.py:216
msgid "parent"
msgstr ""
-#: InvenTree/serializers.py:52 part/models.py:2438
+#: InvenTree/serializers.py:55 part/models.py:2454
msgid "Must be a valid number"
msgstr ""
-#: InvenTree/settings.py:518
-msgid "German"
-msgstr ""
-
-#: InvenTree/settings.py:519
-msgid "Greek"
-msgstr ""
-
-#: InvenTree/settings.py:520
-msgid "English"
-msgstr ""
-
-#: InvenTree/settings.py:521
-msgid "Spanish"
-msgstr ""
-
-#: InvenTree/settings.py:522
-msgid "French"
+#: InvenTree/serializers.py:244
+msgid "Filename"
msgstr ""
#: InvenTree/settings.py:523
-msgid "Hebrew"
+msgid "German"
msgstr ""
#: InvenTree/settings.py:524
-msgid "Italian"
+msgid "Greek"
msgstr ""
#: InvenTree/settings.py:525
-msgid "Japanese"
+msgid "English"
msgstr ""
#: InvenTree/settings.py:526
-msgid "Korean"
+msgid "Spanish"
msgstr ""
#: InvenTree/settings.py:527
-msgid "Dutch"
+msgid "French"
msgstr ""
#: InvenTree/settings.py:528
-msgid "Norwegian"
+msgid "Hebrew"
msgstr ""
#: InvenTree/settings.py:529
-msgid "Polish"
+msgid "Italian"
msgstr ""
#: InvenTree/settings.py:530
-msgid "Russian"
+msgid "Japanese"
msgstr ""
#: InvenTree/settings.py:531
-msgid "Swedish"
+msgid "Korean"
msgstr ""
#: InvenTree/settings.py:532
-msgid "Thai"
+msgid "Dutch"
msgstr ""
#: InvenTree/settings.py:533
-msgid "Turkish"
+msgid "Norwegian"
msgstr ""
#: InvenTree/settings.py:534
-msgid "Vietnamese"
+msgid "Polish"
msgstr ""
#: InvenTree/settings.py:535
+msgid "Russian"
+msgstr ""
+
+#: InvenTree/settings.py:536
+msgid "Swedish"
+msgstr ""
+
+#: InvenTree/settings.py:537
+msgid "Thai"
+msgstr ""
+
+#: InvenTree/settings.py:538
+msgid "Turkish"
+msgstr ""
+
+#: InvenTree/settings.py:539
+msgid "Vietnamese"
+msgstr ""
+
+#: InvenTree/settings.py:540
msgid "Chinese"
msgstr ""
@@ -372,7 +401,7 @@ msgstr ""
msgid "Split child item"
msgstr ""
-#: InvenTree/status_codes.py:294 templates/js/translated/table_filters.js:173
+#: InvenTree/status_codes.py:294 templates/js/translated/table_filters.js:186
msgid "Sent to customer"
msgstr ""
@@ -432,27 +461,27 @@ msgstr ""
msgid "Overage must be an integer value or a percentage"
msgstr ""
-#: InvenTree/views.py:612
+#: InvenTree/views.py:610
msgid "Delete Item"
msgstr ""
-#: InvenTree/views.py:661
+#: InvenTree/views.py:659
msgid "Check box to confirm item deletion"
msgstr ""
-#: InvenTree/views.py:676 templates/InvenTree/settings/user.html:14
+#: InvenTree/views.py:674 templates/InvenTree/settings/user.html:14
msgid "Edit User Information"
msgstr ""
-#: InvenTree/views.py:687 templates/InvenTree/settings/user.html:18
+#: InvenTree/views.py:685 templates/InvenTree/settings/user.html:18
msgid "Set Password"
msgstr ""
-#: InvenTree/views.py:706
+#: InvenTree/views.py:704
msgid "Password fields must match"
msgstr ""
-#: InvenTree/views.py:907 templates/navbar.html:95
+#: InvenTree/views.py:910 templates/navbar.html:105
msgid "System Information"
msgstr ""
@@ -509,8 +538,8 @@ msgstr ""
#: order/templates/order/order_base.html:124
#: order/templates/order/sales_order_base.html:119
#: report/templates/report/inventree_build_order_base.html:126
-#: templates/js/translated/build.js:945 templates/js/translated/order.js:284
-#: templates/js/translated/order.js:387
+#: templates/js/translated/build.js:962 templates/js/translated/order.js:358
+#: templates/js/translated/order.js:728
msgid "Target Date"
msgstr ""
@@ -522,19 +551,18 @@ msgstr ""
#: build/templates/build/allocation_card.html:23
#: build/templates/build/auto_allocate.html:17
#: build/templates/build/build_base.html:133
-#: build/templates/build/detail.html:34 common/models.py:1001
+#: build/templates/build/detail.html:34 common/models.py:1025
#: company/forms.py:42 company/templates/company/supplier_part.html:226
-#: order/forms.py:120 order/forms.py:142 order/forms.py:159 order/models.py:706
-#: order/models.py:952 order/templates/order/order_wizard/match_parts.html:30
+#: order/forms.py:120 order/forms.py:142 order/forms.py:159 order/models.py:712
+#: order/models.py:964 order/templates/order/order_wizard/match_parts.html:30
#: order/templates/order/order_wizard/select_parts.html:34
-#: order/templates/order/purchase_order_detail.html:348
-#: order/templates/order/sales_order_detail.html:200
-#: order/templates/order/sales_order_detail.html:207
-#: order/templates/order/sales_order_detail.html:292
-#: order/templates/order/sales_order_detail.html:364 part/forms.py:249
-#: part/forms.py:265 part/forms.py:281 part/models.py:2340
+#: order/templates/order/sales_order_detail.html:201
+#: order/templates/order/sales_order_detail.html:208
+#: order/templates/order/sales_order_detail.html:293
+#: order/templates/order/sales_order_detail.html:365 part/forms.py:249
+#: part/forms.py:265 part/forms.py:281 part/models.py:2356
#: part/templates/part/bom_upload/match_parts.html:31
-#: part/templates/part/detail.html:940 part/templates/part/detail.html:1026
+#: part/templates/part/detail.html:973 part/templates/part/detail.html:1059
#: part/templates/part/part_pricing.html:16
#: report/templates/report/inventree_build_order_base.html:114
#: report/templates/report/inventree_po_report.html:91
@@ -542,13 +570,14 @@ msgstr ""
#: report/templates/report/inventree_test_report_base.html:77
#: stock/forms.py:140 stock/templates/stock/item_base.html:269
#: stock/templates/stock/stock_adjust.html:18
-#: templates/js/translated/barcode.js:364 templates/js/translated/bom.js:225
-#: templates/js/translated/build.js:271 templates/js/translated/build.js:606
-#: templates/js/translated/build.js:1172
-#: templates/js/translated/model_renderers.js:56
-#: templates/js/translated/order.js:482 templates/js/translated/part.js:1148
-#: templates/js/translated/part.js:1270 templates/js/translated/part.js:1326
-#: templates/js/translated/stock.js:1534 templates/js/translated/stock.js:1732
+#: templates/js/translated/barcode.js:386 templates/js/translated/bom.js:245
+#: templates/js/translated/build.js:298 templates/js/translated/build.js:629
+#: templates/js/translated/build.js:1189
+#: templates/js/translated/model_renderers.js:59
+#: templates/js/translated/order.js:522 templates/js/translated/order.js:824
+#: templates/js/translated/part.js:1317 templates/js/translated/part.js:1440
+#: templates/js/translated/part.js:1518 templates/js/translated/stock.js:1675
+#: templates/js/translated/stock.js:1850
msgid "Quantity"
msgstr ""
@@ -589,13 +618,15 @@ msgid "Mark build as complete"
msgstr ""
#: build/forms.py:210 build/templates/build/auto_allocate.html:18
-#: stock/forms.py:280 stock/templates/stock/item_base.html:299
+#: order/serializers.py:216 order/serializers.py:275 stock/forms.py:280
+#: stock/templates/stock/item_base.html:299
#: stock/templates/stock/stock_adjust.html:17
-#: templates/InvenTree/search.html:260 templates/js/translated/barcode.js:363
-#: templates/js/translated/barcode.js:531 templates/js/translated/build.js:256
-#: templates/js/translated/build.js:620 templates/js/translated/order.js:467
-#: templates/js/translated/stock.js:134 templates/js/translated/stock.js:260
-#: templates/js/translated/stock.js:1012 templates/js/translated/stock.js:1426
+#: templates/InvenTree/search.html:260 templates/js/translated/barcode.js:385
+#: templates/js/translated/barcode.js:555 templates/js/translated/build.js:283
+#: templates/js/translated/build.js:643 templates/js/translated/order.js:809
+#: templates/js/translated/part.js:174 templates/js/translated/stock.js:203
+#: templates/js/translated/stock.js:329 templates/js/translated/stock.js:942
+#: templates/js/translated/stock.js:1567
msgid "Location"
msgstr ""
@@ -604,13 +635,13 @@ msgid "Location of completed parts"
msgstr ""
#: build/forms.py:215 build/templates/build/build_base.html:138
-#: build/templates/build/detail.html:62 order/models.py:549
-#: order/templates/order/receive_parts.html:24
+#: build/templates/build/detail.html:62 order/models.py:555
+#: order/serializers.py:230 order/templates/order/receive_parts.html:24
#: stock/templates/stock/item_base.html:422 templates/InvenTree/search.html:252
-#: templates/js/translated/barcode.js:119 templates/js/translated/build.js:902
-#: templates/js/translated/order.js:271 templates/js/translated/order.js:374
-#: templates/js/translated/stock.js:999 templates/js/translated/stock.js:1503
-#: templates/js/translated/stock.js:1748
+#: templates/js/translated/barcode.js:141 templates/js/translated/build.js:925
+#: templates/js/translated/order.js:345 templates/js/translated/order.js:715
+#: templates/js/translated/stock.js:917 templates/js/translated/stock.js:1644
+#: templates/js/translated/stock.js:1866
msgid "Status"
msgstr ""
@@ -649,7 +680,7 @@ msgstr ""
#: build/models.py:117 build/templates/build/build_base.html:9
#: build/templates/build/build_base.html:73
#: report/templates/report/inventree_build_order_base.html:106
-#: templates/js/translated/build.js:233
+#: templates/js/translated/build.js:260
msgid "Build Order"
msgstr ""
@@ -657,8 +688,8 @@ msgstr ""
#: build/templates/build/index.html:15
#: order/templates/order/sales_order_detail.html:34
#: order/templates/order/so_navbar.html:19
-#: order/templates/order/so_navbar.html:22 part/templates/part/navbar.html:42
-#: part/templates/part/navbar.html:45 templates/InvenTree/index.html:229
+#: order/templates/order/so_navbar.html:22 part/templates/part/navbar.html:50
+#: part/templates/part/navbar.html:53 templates/InvenTree/index.html:229
#: templates/InvenTree/search.html:185
#: templates/InvenTree/settings/navbar.html:101
#: templates/InvenTree/settings/navbar.html:103 users/models.py:44
@@ -669,14 +700,13 @@ msgstr ""
msgid "Build Order Reference"
msgstr ""
-#: build/models.py:179 order/models.py:246 order/models.py:533
-#: order/models.py:713 order/templates/order/purchase_order_detail.html:343
-#: order/templates/order/sales_order_detail.html:359 part/models.py:2349
-#: part/templates/part/bom_upload/match_parts.html:30
+#: build/models.py:179 order/models.py:246 order/models.py:539
+#: order/models.py:719 order/templates/order/sales_order_detail.html:360
+#: part/models.py:2365 part/templates/part/bom_upload/match_parts.html:30
#: report/templates/report/inventree_po_report.html:92
#: report/templates/report/inventree_so_report.html:92
-#: templates/js/translated/bom.js:217 templates/js/translated/build.js:695
-#: templates/js/translated/build.js:1166
+#: templates/js/translated/bom.js:237 templates/js/translated/build.js:718
+#: templates/js/translated/build.js:1183 templates/js/translated/order.js:517
msgid "Reference"
msgstr ""
@@ -695,15 +725,14 @@ msgstr ""
#: build/models.py:205 build/templates/build/auto_allocate.html:16
#: build/templates/build/build_base.html:128
-#: build/templates/build/detail.html:29 company/models.py:654
-#: order/models.py:766 order/models.py:825
+#: build/templates/build/detail.html:29 company/models.py:704
+#: order/models.py:772 order/models.py:837
#: order/templates/order/order_wizard/select_parts.html:32
-#: order/templates/order/purchase_order_detail.html:297
#: order/templates/order/receive_parts.html:19
-#: order/templates/order/sales_order_detail.html:344 part/models.py:295
-#: part/models.py:1980 part/models.py:1996 part/models.py:2015
-#: part/models.py:2033 part/models.py:2112 part/models.py:2234
-#: part/models.py:2324 part/templates/part/detail.html:199
+#: order/templates/order/sales_order_detail.html:345 part/models.py:297
+#: part/models.py:1996 part/models.py:2012 part/models.py:2031
+#: part/models.py:2049 part/models.py:2128 part/models.py:2250
+#: part/models.py:2340 part/templates/part/detail.html:199
#: part/templates/part/part_app_base.html:8
#: part/templates/part/part_pricing.html:12
#: part/templates/part/set_category.html:13
@@ -711,12 +740,13 @@ msgstr ""
#: report/templates/report/inventree_po_report.html:90
#: report/templates/report/inventree_so_report.html:90
#: templates/InvenTree/search.html:112 templates/InvenTree/search.html:210
-#: templates/js/translated/barcode.js:362 templates/js/translated/bom.js:183
-#: templates/js/translated/build.js:586 templates/js/translated/build.js:873
-#: templates/js/translated/build.js:1139 templates/js/translated/company.js:438
-#: templates/js/translated/company.js:688 templates/js/translated/part.js:562
-#: templates/js/translated/part.js:725 templates/js/translated/stock.js:132
-#: templates/js/translated/stock.js:895 templates/js/translated/stock.js:1720
+#: templates/js/translated/barcode.js:384 templates/js/translated/bom.js:203
+#: templates/js/translated/build.js:609 templates/js/translated/build.js:896
+#: templates/js/translated/build.js:1156 templates/js/translated/company.js:487
+#: templates/js/translated/company.js:743 templates/js/translated/order.js:471
+#: templates/js/translated/part.js:694 templates/js/translated/part.js:864
+#: templates/js/translated/stock.js:201 templates/js/translated/stock.js:797
+#: templates/js/translated/stock.js:1838
msgid "Part"
msgstr ""
@@ -764,7 +794,7 @@ msgstr ""
msgid "Number of stock items which have been completed"
msgstr ""
-#: build/models.py:257 part/templates/part/part_base.html:191
+#: build/models.py:257 part/templates/part/part_base.html:198
msgid "Build Status"
msgstr ""
@@ -772,7 +802,7 @@ msgstr ""
msgid "Build status code"
msgstr ""
-#: build/models.py:265 stock/models.py:507
+#: build/models.py:265 stock/models.py:513
msgid "Batch Code"
msgstr ""
@@ -780,16 +810,16 @@ msgstr ""
msgid "Batch code for this build output"
msgstr ""
-#: build/models.py:272 order/models.py:162 part/models.py:851
-#: part/templates/part/part_base.html:264 templates/js/translated/order.js:382
+#: build/models.py:272 order/models.py:162 part/models.py:853
+#: part/templates/part/part_base.html:272 templates/js/translated/order.js:723
msgid "Creation Date"
msgstr ""
-#: build/models.py:276 order/models.py:555
+#: build/models.py:276 order/models.py:561
msgid "Target completion date"
msgstr ""
-#: build/models.py:280 order/models.py:288 templates/js/translated/build.js:950
+#: build/models.py:280 order/models.py:288 templates/js/translated/build.js:967
msgid "Completion Date"
msgstr ""
@@ -797,7 +827,7 @@ msgstr ""
msgid "completed by"
msgstr ""
-#: build/models.py:294 templates/js/translated/build.js:915
+#: build/models.py:294 templates/js/translated/build.js:938
msgid "Issued by"
msgstr ""
@@ -808,9 +838,9 @@ msgstr ""
#: build/models.py:303 build/templates/build/build_base.html:184
#: build/templates/build/detail.html:108 order/models.py:176
#: order/templates/order/order_base.html:138
-#: order/templates/order/sales_order_base.html:140 part/models.py:855
+#: order/templates/order/sales_order_base.html:140 part/models.py:857
#: report/templates/report/inventree_build_order_base.html:159
-#: templates/js/translated/build.js:930
+#: templates/js/translated/build.js:950
msgid "Responsible"
msgstr ""
@@ -821,34 +851,33 @@ msgstr ""
#: build/models.py:309 build/templates/build/detail.html:94
#: company/templates/company/manufacturer_part.html:83
#: company/templates/company/supplier_part.html:82
-#: part/templates/part/part_base.html:258 stock/models.py:501
+#: part/templates/part/part_base.html:266 stock/models.py:507
#: stock/templates/stock/item_base.html:359
msgid "External Link"
msgstr ""
-#: build/models.py:310 part/models.py:713 stock/models.py:503
+#: build/models.py:310 part/models.py:715 stock/models.py:509
msgid "Link to external URL"
msgstr ""
#: build/models.py:314 build/templates/build/navbar.html:52
-#: company/models.py:139 company/models.py:526
-#: company/templates/company/navbar.html:63
-#: company/templates/company/navbar.html:66 order/models.py:180
-#: order/models.py:715 order/templates/order/po_navbar.html:38
+#: company/models.py:141 company/models.py:576
+#: company/templates/company/navbar.html:69
+#: company/templates/company/navbar.html:72 order/models.py:180
+#: order/models.py:721 order/templates/order/po_navbar.html:38
#: order/templates/order/po_navbar.html:41
-#: order/templates/order/purchase_order_detail.html:419
-#: order/templates/order/sales_order_detail.html:439
+#: order/templates/order/sales_order_detail.html:440
#: order/templates/order/so_navbar.html:33
-#: order/templates/order/so_navbar.html:36 part/models.py:840
-#: part/templates/part/detail.html:105 part/templates/part/navbar.html:108
-#: part/templates/part/navbar.html:111
+#: order/templates/order/so_navbar.html:36 part/models.py:842
+#: part/templates/part/detail.html:105 part/templates/part/navbar.html:120
+#: part/templates/part/navbar.html:123
#: report/templates/report/inventree_build_order_base.html:173
-#: stock/forms.py:138 stock/forms.py:250 stock/forms.py:282 stock/models.py:573
-#: stock/models.py:1715 stock/models.py:1821
-#: stock/templates/stock/navbar.html:57 templates/js/translated/barcode.js:37
-#: templates/js/translated/bom.js:369 templates/js/translated/company.js:784
-#: templates/js/translated/stock.js:268 templates/js/translated/stock.js:509
-#: templates/js/translated/stock.js:1090
+#: stock/forms.py:138 stock/forms.py:250 stock/forms.py:282 stock/models.py:579
+#: stock/models.py:1726 stock/models.py:1832
+#: stock/templates/stock/navbar.html:57 templates/js/translated/barcode.js:59
+#: templates/js/translated/bom.js:385 templates/js/translated/company.js:839
+#: templates/js/translated/order.js:604 templates/js/translated/stock.js:338
+#: templates/js/translated/stock.js:580 templates/js/translated/stock.js:1061
msgid "Notes"
msgstr ""
@@ -881,11 +910,11 @@ msgstr ""
msgid "Allocated quantity ({n}) must not exceed available quantity ({q})"
msgstr ""
-#: build/models.py:1244 order/models.py:926
+#: build/models.py:1244 order/models.py:938
msgid "StockItem is over-allocated"
msgstr ""
-#: build/models.py:1248 order/models.py:929
+#: build/models.py:1248 order/models.py:941
msgid "Allocation quantity must be greater than zero"
msgstr ""
@@ -899,8 +928,8 @@ msgid "Selected stock item not found in BOM for part '{p}'"
msgstr ""
#: build/models.py:1372 stock/templates/stock/item_base.html:331
-#: templates/InvenTree/search.html:183 templates/js/translated/build.js:846
-#: templates/navbar.html:29
+#: templates/InvenTree/search.html:183 templates/js/translated/build.js:869
+#: templates/navbar.html:35
msgid "Build"
msgstr ""
@@ -912,9 +941,9 @@ msgstr ""
#: stock/templates/stock/item_base.html:31
#: stock/templates/stock/item_base.html:353
#: stock/templates/stock/stock_adjust.html:16
-#: templates/js/translated/build.js:244 templates/js/translated/build.js:249
-#: templates/js/translated/build.js:993 templates/js/translated/order.js:455
-#: templates/js/translated/order.js:460 templates/js/translated/stock.js:1485
+#: templates/js/translated/build.js:271 templates/js/translated/build.js:276
+#: templates/js/translated/build.js:1012 templates/js/translated/order.js:797
+#: templates/js/translated/order.js:802 templates/js/translated/stock.js:1626
msgid "Stock Item"
msgstr ""
@@ -936,12 +965,12 @@ msgstr ""
#: build/templates/build/allocation_card.html:21
#: build/templates/build/complete_output.html:46
-#: order/templates/order/sales_order_detail.html:205
-#: order/templates/order/sales_order_detail.html:290
+#: order/templates/order/sales_order_detail.html:206
+#: order/templates/order/sales_order_detail.html:291
#: report/templates/report/inventree_test_report_base.html:75
-#: stock/models.py:495 stock/templates/stock/item_base.html:251
-#: templates/js/translated/build.js:604
-#: templates/js/translated/model_renderers.js:54
+#: stock/models.py:501 stock/templates/stock/item_base.html:251
+#: templates/js/translated/build.js:627
+#: templates/js/translated/model_renderers.js:57
msgid "Serial Number"
msgstr ""
@@ -993,7 +1022,7 @@ msgstr ""
#: company/templates/company/supplier_part.html:30
#: order/templates/order/order_base.html:26
#: order/templates/order/sales_order_base.html:37
-#: part/templates/part/category.html:27 part/templates/part/part_base.html:25
+#: part/templates/part/category.html:27 part/templates/part/part_base.html:30
#: stock/templates/stock/item_base.html:62
#: stock/templates/stock/location.html:31
msgid "Admin view"
@@ -1005,9 +1034,9 @@ msgstr ""
#: order/templates/order/order_base.html:86
#: order/templates/order/sales_order_base.html:43
#: order/templates/order/sales_order_base.html:88
-#: templates/js/translated/table_filters.js:259
-#: templates/js/translated/table_filters.js:278
-#: templates/js/translated/table_filters.js:295
+#: templates/js/translated/table_filters.js:272
+#: templates/js/translated/table_filters.js:291
+#: templates/js/translated/table_filters.js:308
msgid "Overdue"
msgstr ""
@@ -1057,14 +1086,14 @@ msgid "Progress"
msgstr ""
#: build/templates/build/build_base.html:170
-#: build/templates/build/detail.html:87 order/models.py:823
+#: build/templates/build/detail.html:87 order/models.py:835
#: order/templates/order/sales_order_base.html:9
#: order/templates/order/sales_order_base.html:35
#: order/templates/order/sales_order_ship.html:25
#: report/templates/report/inventree_build_order_base.html:136
#: report/templates/report/inventree_so_report.html:77
#: stock/templates/stock/item_base.html:293
-#: templates/js/translated/order.js:329
+#: templates/js/translated/order.js:670
msgid "Sales Order"
msgstr ""
@@ -1148,7 +1177,7 @@ msgstr ""
#: build/templates/build/create_build_item.html:11
#, python-format
-msgid "The allocated stock will be installed into the following build output:
%(output)s"
+msgid "The allocated stock will be installed into the following build output:
%(output)s"
msgstr ""
#: build/templates/build/create_build_item.html:17
@@ -1172,9 +1201,9 @@ msgstr ""
msgid "Stock can be taken from any available location."
msgstr ""
-#: build/templates/build/detail.html:49 order/forms.py:88 order/models.py:782
-#: order/templates/order/purchase_order_detail.html:408
+#: build/templates/build/detail.html:49 order/forms.py:88 order/models.py:794
#: order/templates/order/receive_parts.html:25 stock/forms.py:134
+#: templates/js/translated/order.js:593
msgid "Destination"
msgstr ""
@@ -1184,16 +1213,16 @@ msgstr ""
#: build/templates/build/detail.html:73
#: stock/templates/stock/item_base.html:317
-#: templates/js/translated/stock.js:1007 templates/js/translated/stock.js:1755
-#: templates/js/translated/table_filters.js:116
-#: templates/js/translated/table_filters.js:198
+#: templates/js/translated/stock.js:931 templates/js/translated/stock.js:1873
+#: templates/js/translated/table_filters.js:129
+#: templates/js/translated/table_filters.js:211
msgid "Batch"
msgstr ""
#: build/templates/build/detail.html:119
#: order/templates/order/order_base.html:111
#: order/templates/order/sales_order_base.html:113
-#: templates/js/translated/build.js:910
+#: templates/js/translated/build.js:933
msgid "Created"
msgstr ""
@@ -1201,7 +1230,7 @@ msgstr ""
msgid "No target date set"
msgstr ""
-#: build/templates/build/detail.html:135 templates/js/translated/build.js:888
+#: build/templates/build/detail.html:135 templates/js/translated/build.js:911
msgid "Completed"
msgstr ""
@@ -1225,7 +1254,7 @@ msgstr ""
msgid "Auto Allocate"
msgstr ""
-#: build/templates/build/detail.html:175 templates/js/translated/build.js:778
+#: build/templates/build/detail.html:175 templates/js/translated/build.js:801
msgid "Unallocate stock"
msgstr ""
@@ -1238,8 +1267,8 @@ msgid "Order required parts"
msgstr ""
#: build/templates/build/detail.html:180
-#: company/templates/company/detail.html:33
-#: company/templates/company/detail.html:75 order/views.py:679
+#: company/templates/company/detail.html:32
+#: company/templates/company/detail.html:72 order/views.py:679
#: part/templates/part/category.html:140
msgid "Order Parts"
msgstr ""
@@ -1288,8 +1317,8 @@ msgstr ""
#: build/templates/build/navbar.html:45 order/templates/order/po_navbar.html:35
#: order/templates/order/sales_order_detail.html:43
#: order/templates/order/so_navbar.html:29 part/templates/part/detail.html:173
-#: part/templates/part/navbar.html:102 part/templates/part/navbar.html:105
-#: stock/templates/stock/item.html:87 stock/templates/stock/navbar.html:47
+#: part/templates/part/navbar.html:114 part/templates/part/navbar.html:117
+#: stock/templates/stock/item.html:88 stock/templates/stock/navbar.html:47
#: stock/templates/stock/navbar.html:50
msgid "Attachments"
msgstr ""
@@ -1298,48 +1327,48 @@ msgstr ""
msgid "Build Notes"
msgstr ""
-#: build/templates/build/detail.html:261 build/templates/build/detail.html:397
-#: company/templates/company/detail.html:173
-#: company/templates/company/detail.html:200
+#: build/templates/build/detail.html:261 build/templates/build/detail.html:398
+#: company/templates/company/detail.html:169
+#: company/templates/company/detail.html:196
#: order/templates/order/purchase_order_detail.html:62
#: order/templates/order/purchase_order_detail.html:95
#: order/templates/order/sales_order_detail.html:58
#: order/templates/order/sales_order_detail.html:85
-#: part/templates/part/detail.html:109 stock/templates/stock/item.html:102
-#: stock/templates/stock/item.html:187
+#: part/templates/part/detail.html:109 stock/templates/stock/item.html:103
+#: stock/templates/stock/item.html:188
msgid "Edit Notes"
msgstr ""
#: build/templates/build/detail.html:357
#: order/templates/order/po_attachments.html:79
-#: order/templates/order/purchase_order_detail.html:156
-#: order/templates/order/sales_order_detail.html:145
-#: part/templates/part/detail.html:802 stock/templates/stock/item.html:251
+#: order/templates/order/purchase_order_detail.html:157
+#: order/templates/order/sales_order_detail.html:146
+#: part/templates/part/detail.html:920 stock/templates/stock/item.html:253
#: templates/attachment_table.html:6
msgid "Add Attachment"
msgstr ""
-#: build/templates/build/detail.html:375
+#: build/templates/build/detail.html:376
#: order/templates/order/po_attachments.html:51
-#: order/templates/order/purchase_order_detail.html:128
-#: order/templates/order/sales_order_detail.html:118
-#: part/templates/part/detail.html:756 stock/templates/stock/item.html:219
+#: order/templates/order/purchase_order_detail.html:129
+#: order/templates/order/sales_order_detail.html:119
+#: part/templates/part/detail.html:874 stock/templates/stock/item.html:221
msgid "Edit Attachment"
msgstr ""
-#: build/templates/build/detail.html:382
+#: build/templates/build/detail.html:383
#: order/templates/order/po_attachments.html:58
-#: order/templates/order/purchase_order_detail.html:135
-#: order/templates/order/sales_order_detail.html:124
-#: part/templates/part/detail.html:765 stock/templates/stock/item.html:228
+#: order/templates/order/purchase_order_detail.html:136
+#: order/templates/order/sales_order_detail.html:125
+#: part/templates/part/detail.html:883 stock/templates/stock/item.html:230
msgid "Confirm Delete Operation"
msgstr ""
-#: build/templates/build/detail.html:383
+#: build/templates/build/detail.html:384
#: order/templates/order/po_attachments.html:59
-#: order/templates/order/purchase_order_detail.html:136
-#: order/templates/order/sales_order_detail.html:125
-#: part/templates/part/detail.html:766 stock/templates/stock/item.html:229
+#: order/templates/order/purchase_order_detail.html:137
+#: order/templates/order/sales_order_detail.html:126
+#: part/templates/part/detail.html:884 stock/templates/stock/item.html:231
msgid "Delete Attachment"
msgstr ""
@@ -1372,7 +1401,7 @@ msgid "Build Order Details"
msgstr ""
#: build/templates/build/navbar.html:15 order/templates/order/po_navbar.html:15
-#: templates/js/translated/stock.js:1414
+#: templates/js/translated/stock.js:1555
msgid "Details"
msgstr ""
@@ -1501,9 +1530,9 @@ msgstr ""
msgid "Stock item is over-allocated"
msgstr ""
-#: build/views.py:705 templates/js/translated/bom.js:250
-#: templates/js/translated/build.js:705 templates/js/translated/build.js:1000
-#: templates/js/translated/build.js:1179
+#: build/views.py:705 templates/js/translated/bom.js:269
+#: templates/js/translated/build.js:728 templates/js/translated/build.js:1019
+#: templates/js/translated/build.js:1196
msgid "Available"
msgstr ""
@@ -1539,7 +1568,7 @@ msgstr ""
msgid "Error reading file (data could be corrupted)"
msgstr ""
-#: common/forms.py:34 templates/js/translated/attachment.js:42
+#: common/forms.py:34 templates/js/translated/attachment.js:54
msgid "File"
msgstr ""
@@ -1556,546 +1585,594 @@ msgstr ""
msgid "Select {name} file to upload"
msgstr ""
-#: common/models.py:322 common/models.py:815 common/models.py:962
+#: common/models.py:308 common/models.py:839 common/models.py:986
msgid "Settings key (must be unique - case insensitive"
msgstr ""
-#: common/models.py:324
+#: common/models.py:310
msgid "Settings value"
msgstr ""
-#: common/models.py:359
+#: common/models.py:345
msgid "Must be an integer value"
msgstr ""
-#: common/models.py:382
+#: common/models.py:368
msgid "Value must be a boolean value"
msgstr ""
-#: common/models.py:393
+#: common/models.py:379
msgid "Value must be an integer value"
msgstr ""
-#: common/models.py:416
+#: common/models.py:402
msgid "Key string must be unique"
msgstr ""
-#: common/models.py:523
+#: common/models.py:509
msgid "InvenTree Instance Name"
msgstr ""
-#: common/models.py:525
+#: common/models.py:511
msgid "String descriptor for the server instance"
msgstr ""
-#: common/models.py:529
+#: common/models.py:515
msgid "Use instance name"
msgstr ""
-#: common/models.py:530
+#: common/models.py:516
msgid "Use the instance name in the title-bar"
msgstr ""
-#: common/models.py:536 company/models.py:97 company/models.py:98
+#: common/models.py:522 company/models.py:99 company/models.py:100
msgid "Company name"
msgstr ""
-#: common/models.py:537
+#: common/models.py:523
msgid "Internal company name"
msgstr ""
-#: common/models.py:542
+#: common/models.py:528
msgid "Base URL"
msgstr ""
-#: common/models.py:543
+#: common/models.py:529
msgid "Base URL for server instance"
msgstr ""
-#: common/models.py:549
+#: common/models.py:535
msgid "Default Currency"
msgstr ""
-#: common/models.py:550
+#: common/models.py:536
msgid "Default currency"
msgstr ""
-#: common/models.py:556
+#: common/models.py:542
msgid "Download from URL"
msgstr ""
-#: common/models.py:557
+#: common/models.py:543
msgid "Allow download of remote images and files from external URL"
msgstr ""
-#: common/models.py:563
+#: common/models.py:549
msgid "Barcode Support"
msgstr ""
-#: common/models.py:564
+#: common/models.py:550
msgid "Enable barcode scanner support"
msgstr ""
-#: common/models.py:570
+#: common/models.py:556
msgid "IPN Regex"
msgstr ""
-#: common/models.py:571
+#: common/models.py:557
msgid "Regular expression pattern for matching Part IPN"
msgstr ""
-#: common/models.py:575
+#: common/models.py:561
msgid "Allow Duplicate IPN"
msgstr ""
-#: common/models.py:576
+#: common/models.py:562
msgid "Allow multiple parts to share the same IPN"
msgstr ""
-#: common/models.py:582
+#: common/models.py:568
msgid "Allow Editing IPN"
msgstr ""
-#: common/models.py:583
+#: common/models.py:569
msgid "Allow changing the IPN value while editing a part"
msgstr ""
-#: common/models.py:589
+#: common/models.py:575
msgid "Copy Part BOM Data"
msgstr ""
-#: common/models.py:590
+#: common/models.py:576
msgid "Copy BOM data by default when duplicating a part"
msgstr ""
-#: common/models.py:596
+#: common/models.py:582
msgid "Copy Part Parameter Data"
msgstr ""
-#: common/models.py:597
+#: common/models.py:583
msgid "Copy parameter data by default when duplicating a part"
msgstr ""
-#: common/models.py:603
+#: common/models.py:589
msgid "Copy Part Test Data"
msgstr ""
-#: common/models.py:604
+#: common/models.py:590
msgid "Copy test data by default when duplicating a part"
msgstr ""
-#: common/models.py:610
+#: common/models.py:596
msgid "Copy Category Parameter Templates"
msgstr ""
-#: common/models.py:611
+#: common/models.py:597
msgid "Copy category parameter templates when creating a part"
msgstr ""
-#: common/models.py:617 part/models.py:2236 report/models.py:187
-#: stock/forms.py:224 templates/js/translated/table_filters.js:25
-#: templates/js/translated/table_filters.js:329
+#: common/models.py:603 part/models.py:2252 report/models.py:187
+#: stock/forms.py:224 templates/js/translated/table_filters.js:38
+#: templates/js/translated/table_filters.js:342
msgid "Template"
msgstr ""
-#: common/models.py:618
+#: common/models.py:604
msgid "Parts are templates by default"
msgstr ""
-#: common/models.py:624 part/models.py:803
-#: templates/js/translated/table_filters.js:133
-#: templates/js/translated/table_filters.js:341
+#: common/models.py:610 part/models.py:805
+#: templates/js/translated/table_filters.js:146
+#: templates/js/translated/table_filters.js:354
msgid "Assembly"
msgstr ""
-#: common/models.py:625
+#: common/models.py:611
msgid "Parts can be assembled from other components by default"
msgstr ""
-#: common/models.py:631 part/models.py:809
-#: templates/js/translated/table_filters.js:345
+#: common/models.py:617 part/models.py:811
+#: templates/js/translated/table_filters.js:358
msgid "Component"
msgstr ""
-#: common/models.py:632
+#: common/models.py:618
msgid "Parts can be used as sub-components by default"
msgstr ""
-#: common/models.py:638 part/models.py:820
+#: common/models.py:624 part/models.py:822
msgid "Purchaseable"
msgstr ""
-#: common/models.py:639
+#: common/models.py:625
msgid "Parts are purchaseable by default"
msgstr ""
-#: common/models.py:645 part/models.py:825
-#: templates/js/translated/table_filters.js:353
+#: common/models.py:631 part/models.py:827
+#: templates/js/translated/table_filters.js:366
msgid "Salable"
msgstr ""
-#: common/models.py:646
+#: common/models.py:632
msgid "Parts are salable by default"
msgstr ""
-#: common/models.py:652 part/models.py:815
-#: templates/js/translated/table_filters.js:33
-#: templates/js/translated/table_filters.js:357
+#: common/models.py:638 part/models.py:817
+#: templates/js/translated/table_filters.js:46
+#: templates/js/translated/table_filters.js:370
msgid "Trackable"
msgstr ""
-#: common/models.py:653
+#: common/models.py:639
msgid "Parts are trackable by default"
msgstr ""
-#: common/models.py:659 part/models.py:835
-#: part/templates/part/part_base.html:61
-#: templates/js/translated/table_filters.js:29
+#: common/models.py:645 part/models.py:837
+#: part/templates/part/part_base.html:66
+#: templates/js/translated/table_filters.js:42
msgid "Virtual"
msgstr ""
-#: common/models.py:660
+#: common/models.py:646
msgid "Parts are virtual by default"
msgstr ""
-#: common/models.py:667
+#: common/models.py:653
msgid "Show Quantity in Forms"
msgstr ""
-#: common/models.py:668
+#: common/models.py:654
msgid "Display available part quantity in some forms"
msgstr ""
-#: common/models.py:674
+#: common/models.py:660
msgid "Show Import in Views"
msgstr ""
-#: common/models.py:675
+#: common/models.py:661
msgid "Display the import wizard in some part views"
msgstr ""
-#: common/models.py:681
+#: common/models.py:667
msgid "Show Price in Forms"
msgstr ""
-#: common/models.py:682
+#: common/models.py:668
msgid "Display part price in some forms"
msgstr ""
-#: common/models.py:688
+#: common/models.py:674
msgid "Show related parts"
msgstr ""
-#: common/models.py:689
+#: common/models.py:675
msgid "Display related parts for a part"
msgstr ""
-#: common/models.py:695
+#: common/models.py:681
msgid "Create initial stock"
msgstr ""
-#: common/models.py:696
+#: common/models.py:682
msgid "Create initial stock on part creation"
msgstr ""
-#: common/models.py:702
+#: common/models.py:688
msgid "Internal Prices"
msgstr ""
-#: common/models.py:703
+#: common/models.py:689
msgid "Enable internal prices for parts"
msgstr ""
-#: common/models.py:709
+#: common/models.py:695
msgid "Internal Price as BOM-Price"
msgstr ""
-#: common/models.py:710
+#: common/models.py:696
msgid "Use the internal price (if set) in BOM-price calculations"
msgstr ""
-#: common/models.py:716 templates/stats.html:25
+#: common/models.py:702 templates/stats.html:25
msgid "Debug Mode"
msgstr ""
-#: common/models.py:717
+#: common/models.py:703
msgid "Generate reports in debug mode (HTML output)"
msgstr ""
-#: common/models.py:723
+#: common/models.py:709
msgid "Page Size"
msgstr ""
-#: common/models.py:724
+#: common/models.py:710
msgid "Default page size for PDF reports"
msgstr ""
-#: common/models.py:734
+#: common/models.py:720
msgid "Test Reports"
msgstr ""
-#: common/models.py:735
+#: common/models.py:721
msgid "Enable generation of test reports"
msgstr ""
-#: common/models.py:741
+#: common/models.py:727
msgid "Stock Expiry"
msgstr ""
-#: common/models.py:742
+#: common/models.py:728
msgid "Enable stock expiry functionality"
msgstr ""
-#: common/models.py:748
+#: common/models.py:734
msgid "Sell Expired Stock"
msgstr ""
-#: common/models.py:749
+#: common/models.py:735
msgid "Allow sale of expired stock"
msgstr ""
-#: common/models.py:755
+#: common/models.py:741
msgid "Stock Stale Time"
msgstr ""
-#: common/models.py:756
+#: common/models.py:742
msgid "Number of days stock items are considered stale before expiring"
msgstr ""
-#: common/models.py:758
+#: common/models.py:744
msgid "days"
msgstr ""
-#: common/models.py:763
+#: common/models.py:749
msgid "Build Expired Stock"
msgstr ""
-#: common/models.py:764
+#: common/models.py:750
msgid "Allow building with expired stock"
msgstr ""
-#: common/models.py:770
+#: common/models.py:756
msgid "Stock Ownership Control"
msgstr ""
-#: common/models.py:771
+#: common/models.py:757
msgid "Enable ownership control over stock locations and items"
msgstr ""
-#: common/models.py:777
+#: common/models.py:763
msgid "Group by Part"
msgstr ""
-#: common/models.py:778
+#: common/models.py:764
msgid "Group stock items by part reference in table views"
msgstr ""
-#: common/models.py:784
+#: common/models.py:770
msgid "Build Order Reference Prefix"
msgstr ""
-#: common/models.py:785
+#: common/models.py:771
msgid "Prefix value for build order reference"
msgstr ""
-#: common/models.py:790
+#: common/models.py:776
msgid "Build Order Reference Regex"
msgstr ""
-#: common/models.py:791
+#: common/models.py:777
msgid "Regular expression pattern for matching build order reference"
msgstr ""
-#: common/models.py:795
+#: common/models.py:781
msgid "Sales Order Reference Prefix"
msgstr ""
-#: common/models.py:796
+#: common/models.py:782
msgid "Prefix value for sales order reference"
msgstr ""
-#: common/models.py:801
+#: common/models.py:787
msgid "Purchase Order Reference Prefix"
msgstr ""
-#: common/models.py:802
+#: common/models.py:788
msgid "Prefix value for purchase order reference"
msgstr ""
-#: common/models.py:826
+#: common/models.py:794
+msgid "Enable build"
+msgstr ""
+
+#: common/models.py:795
+msgid "Enable build functionality in InvenTree interface"
+msgstr ""
+
+#: common/models.py:800
+msgid "Enable buy"
+msgstr ""
+
+#: common/models.py:801
+msgid "Enable buy functionality in InvenTree interface"
+msgstr ""
+
+#: common/models.py:806
+msgid "Enable sell"
+msgstr ""
+
+#: common/models.py:807
+msgid "Enable sell functionality in InvenTree interface"
+msgstr ""
+
+#: common/models.py:812
+msgid "Enable stock"
+msgstr ""
+
+#: common/models.py:813
+msgid "Enable stock functionality in InvenTree interface"
+msgstr ""
+
+#: common/models.py:818
+msgid "Enable SO"
+msgstr ""
+
+#: common/models.py:819
+msgid "Enable SO functionality in InvenTree interface"
+msgstr ""
+
+#: common/models.py:824
+msgid "Enable PO"
+msgstr ""
+
+#: common/models.py:825
+msgid "Enable PO functionality in InvenTree interface"
+msgstr ""
+
+#: common/models.py:850
msgid "Show starred parts"
msgstr ""
-#: common/models.py:827
+#: common/models.py:851
msgid "Show starred parts on the homepage"
msgstr ""
-#: common/models.py:832
+#: common/models.py:856
msgid "Show latest parts"
msgstr ""
-#: common/models.py:833
+#: common/models.py:857
msgid "Show latest parts on the homepage"
msgstr ""
-#: common/models.py:838
+#: common/models.py:862
msgid "Recent Part Count"
msgstr ""
-#: common/models.py:839
+#: common/models.py:863
msgid "Number of recent parts to display on index page"
msgstr ""
-#: common/models.py:845
+#: common/models.py:869
msgid "Show unvalidated BOMs"
msgstr ""
-#: common/models.py:846
+#: common/models.py:870
msgid "Show BOMs that await validation on the homepage"
msgstr ""
-#: common/models.py:851
+#: common/models.py:875
msgid "Show recent stock changes"
msgstr ""
-#: common/models.py:852
+#: common/models.py:876
msgid "Show recently changed stock items on the homepage"
msgstr ""
-#: common/models.py:857
+#: common/models.py:881
msgid "Recent Stock Count"
msgstr ""
-#: common/models.py:858
+#: common/models.py:882
msgid "Number of recent stock items to display on index page"
msgstr ""
-#: common/models.py:863
+#: common/models.py:887
msgid "Show low stock"
msgstr ""
-#: common/models.py:864
+#: common/models.py:888
msgid "Show low stock items on the homepage"
msgstr ""
-#: common/models.py:869
+#: common/models.py:893
msgid "Show depleted stock"
msgstr ""
-#: common/models.py:870
+#: common/models.py:894
msgid "Show depleted stock items on the homepage"
msgstr ""
-#: common/models.py:875
+#: common/models.py:899
msgid "Show needed stock"
msgstr ""
-#: common/models.py:876
+#: common/models.py:900
msgid "Show stock items needed for builds on the homepage"
msgstr ""
-#: common/models.py:881
+#: common/models.py:905
msgid "Show expired stock"
msgstr ""
-#: common/models.py:882
+#: common/models.py:906
msgid "Show expired stock items on the homepage"
msgstr ""
-#: common/models.py:887
+#: common/models.py:911
msgid "Show stale stock"
msgstr ""
-#: common/models.py:888
+#: common/models.py:912
msgid "Show stale stock items on the homepage"
msgstr ""
-#: common/models.py:893
+#: common/models.py:917
msgid "Show pending builds"
msgstr ""
-#: common/models.py:894
+#: common/models.py:918
msgid "Show pending builds on the homepage"
msgstr ""
-#: common/models.py:899
+#: common/models.py:923
msgid "Show overdue builds"
msgstr ""
-#: common/models.py:900
+#: common/models.py:924
msgid "Show overdue builds on the homepage"
msgstr ""
-#: common/models.py:905
+#: common/models.py:929
msgid "Show outstanding POs"
msgstr ""
-#: common/models.py:906
+#: common/models.py:930
msgid "Show outstanding POs on the homepage"
msgstr ""
-#: common/models.py:911
+#: common/models.py:935
msgid "Show overdue POs"
msgstr ""
-#: common/models.py:912
+#: common/models.py:936
msgid "Show overdue POs on the homepage"
msgstr ""
-#: common/models.py:917
+#: common/models.py:941
msgid "Show outstanding SOs"
msgstr ""
-#: common/models.py:918
+#: common/models.py:942
msgid "Show outstanding SOs on the homepage"
msgstr ""
-#: common/models.py:923
+#: common/models.py:947
msgid "Show overdue SOs"
msgstr ""
-#: common/models.py:924
+#: common/models.py:948
msgid "Show overdue SOs on the homepage"
msgstr ""
-#: common/models.py:930
+#: common/models.py:954
msgid "Inline label display"
msgstr ""
-#: common/models.py:931
+#: common/models.py:955
msgid "Display PDF labels in the browser, instead of downloading as a file"
msgstr ""
-#: common/models.py:937
+#: common/models.py:961
msgid "Inline report display"
msgstr ""
-#: common/models.py:938
+#: common/models.py:962
msgid "Display PDF reports in the browser, instead of downloading as a file"
msgstr ""
-#: common/models.py:944
+#: common/models.py:968
msgid "Search Preview Results"
msgstr ""
-#: common/models.py:945
+#: common/models.py:969
msgid "Number of results to show in search preview window"
msgstr ""
-#: common/models.py:1002 company/forms.py:43
+#: common/models.py:1026 company/forms.py:43
msgid "Price break quantity"
msgstr ""
-#: common/models.py:1009 company/templates/company/supplier_part.html:231
-#: templates/js/translated/part.js:1153
+#: common/models.py:1033 company/templates/company/supplier_part.html:231
+#: templates/js/translated/part.js:1322
msgid "Price"
msgstr ""
-#: common/models.py:1010
+#: common/models.py:1034
msgid "Unit price at specified quantity"
msgstr ""
-#: common/models.py:1103
+#: common/models.py:1127
msgid "Default"
msgstr ""
@@ -2123,7 +2200,7 @@ msgstr ""
#: order/templates/order/po_navbar.html:19
#: order/templates/order/po_navbar.html:22
#: order/templates/order/purchase_order_detail.html:26 order/views.py:290
-#: part/templates/part/bom_upload/upload_file.html:45
+#: part/templates/part/bom_upload/upload_file.html:65
#: part/templates/part/import_wizard/part_upload.html:45 part/views.py:268
#: part/views.py:882
msgid "Upload File"
@@ -2154,7 +2231,7 @@ msgstr ""
#: order/templates/order/order_wizard/po_upload.html:40
#: 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:43
+#: part/templates/part/bom_upload/upload_file.html:63
#: 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:43
@@ -2169,244 +2246,249 @@ msgstr ""
msgid "Image URL"
msgstr ""
-#: company/models.py:102
+#: company/models.py:104
msgid "Company description"
msgstr ""
-#: company/models.py:103
+#: company/models.py:105
msgid "Description of the company"
msgstr ""
-#: company/models.py:109 company/templates/company/company_base.html:70
-#: templates/js/translated/company.js:303
+#: company/models.py:111 company/templates/company/company_base.html:70
+#: templates/js/translated/company.js:348
msgid "Website"
msgstr ""
-#: company/models.py:110
+#: company/models.py:112
msgid "Company website URL"
msgstr ""
-#: company/models.py:114 company/templates/company/company_base.html:88
+#: company/models.py:116 company/templates/company/company_base.html:88
msgid "Address"
msgstr ""
-#: company/models.py:115
+#: company/models.py:117
msgid "Company address"
msgstr ""
-#: company/models.py:118
+#: company/models.py:120
msgid "Phone number"
msgstr ""
-#: company/models.py:119
+#: company/models.py:121
msgid "Contact phone number"
msgstr ""
-#: company/models.py:122 company/templates/company/company_base.html:102
+#: company/models.py:124 company/templates/company/company_base.html:102
msgid "Email"
msgstr ""
-#: company/models.py:122
+#: company/models.py:124
msgid "Contact email address"
msgstr ""
-#: company/models.py:125 company/templates/company/company_base.html:109
+#: company/models.py:127 company/templates/company/company_base.html:109
msgid "Contact"
msgstr ""
-#: company/models.py:126
+#: company/models.py:128
msgid "Point of contact"
msgstr ""
-#: company/models.py:128 company/models.py:345 company/models.py:513
-#: order/models.py:160 part/models.py:712
+#: company/models.py:130 company/models.py:347 company/models.py:563
+#: order/models.py:160 part/models.py:714
#: report/templates/report/inventree_build_order_base.html:165
-#: templates/js/translated/company.js:486
-#: templates/js/translated/company.js:768 templates/js/translated/part.js:819
+#: templates/js/translated/company.js:535
+#: templates/js/translated/company.js:823 templates/js/translated/part.js:972
msgid "Link"
msgstr ""
-#: company/models.py:128
+#: company/models.py:130
msgid "Link to external company information"
msgstr ""
-#: company/models.py:136 part/models.py:722
+#: company/models.py:138 part/models.py:724
msgid "Image"
msgstr ""
-#: company/models.py:141
+#: company/models.py:143
msgid "is customer"
msgstr ""
-#: company/models.py:141
+#: company/models.py:143
msgid "Do you sell items to this company?"
msgstr ""
-#: company/models.py:143
+#: company/models.py:145
msgid "is supplier"
msgstr ""
-#: company/models.py:143
+#: company/models.py:145
msgid "Do you purchase items from this company?"
msgstr ""
-#: company/models.py:145
+#: company/models.py:147
msgid "is manufacturer"
msgstr ""
-#: company/models.py:145
+#: company/models.py:147
msgid "Does this company manufacture parts?"
msgstr ""
-#: company/models.py:149 company/serializers.py:245
-#: company/templates/company/company_base.html:76
+#: company/models.py:151 company/serializers.py:264
+#: company/templates/company/company_base.html:76 stock/serializers.py:155
msgid "Currency"
msgstr ""
-#: company/models.py:152
+#: company/models.py:154
msgid "Default currency used for this company"
msgstr ""
-#: company/models.py:317 company/models.py:484 stock/models.py:448
+#: company/models.py:319 company/models.py:534 stock/models.py:454
#: stock/templates/stock/item_base.html:237
msgid "Base Part"
msgstr ""
-#: company/models.py:321 company/models.py:488 order/views.py:1082
+#: company/models.py:323 company/models.py:538 order/views.py:1082
msgid "Select part"
msgstr ""
-#: company/models.py:332 company/templates/company/company_base.html:116
+#: company/models.py:334 company/templates/company/company_base.html:116
#: company/templates/company/manufacturer_part.html:89
#: company/templates/company/supplier_part.html:98 part/bom.py:170
#: part/bom.py:241 stock/templates/stock/item_base.html:366
-#: templates/js/translated/company.js:287
-#: templates/js/translated/company.js:463
-#: templates/js/translated/company.js:739
+#: templates/js/translated/company.js:332
+#: templates/js/translated/company.js:512
+#: templates/js/translated/company.js:794 templates/js/translated/part.js:222
msgid "Manufacturer"
msgstr ""
-#: company/models.py:333
+#: company/models.py:335 templates/js/translated/part.js:223
msgid "Select manufacturer"
msgstr ""
-#: company/models.py:339 company/templates/company/manufacturer_part.html:93
-#: company/templates/company/supplier_part.html:106
-#: order/templates/order/purchase_order_detail.html:331 part/bom.py:171
-#: part/bom.py:242 templates/js/translated/company.js:479
-#: templates/js/translated/company.js:757
+#: company/models.py:341 company/templates/company/manufacturer_part.html:93
+#: company/templates/company/supplier_part.html:106 part/bom.py:171
+#: part/bom.py:242 templates/js/translated/company.js:528
+#: templates/js/translated/company.js:812 templates/js/translated/order.js:505
+#: templates/js/translated/part.js:233
msgid "MPN"
msgstr ""
-#: company/models.py:340
+#: company/models.py:342 templates/js/translated/part.js:234
msgid "Manufacturer Part Number"
msgstr ""
-#: company/models.py:346
+#: company/models.py:348
msgid "URL for external manufacturer part link"
msgstr ""
-#: company/models.py:352
+#: company/models.py:354
msgid "Manufacturer part description"
msgstr ""
-#: company/models.py:406 company/models.py:507
+#: company/models.py:408 company/models.py:557
#: company/templates/company/manufacturer_part.html:6
#: company/templates/company/manufacturer_part.html:23
#: stock/templates/stock/item_base.html:376
msgid "Manufacturer Part"
msgstr ""
-#: company/models.py:413
+#: company/models.py:415
msgid "Parameter name"
msgstr ""
-#: company/models.py:419
+#: company/models.py:421
#: report/templates/report/inventree_test_report_base.html:90
-#: stock/models.py:1808 templates/InvenTree/settings/header.html:8
-#: templates/js/translated/company.js:589 templates/js/translated/part.js:480
-#: templates/js/translated/stock.js:505
+#: stock/models.py:1819 templates/InvenTree/settings/header.html:8
+#: templates/js/translated/company.js:642 templates/js/translated/part.js:612
+#: templates/js/translated/stock.js:576
msgid "Value"
msgstr ""
-#: company/models.py:420
+#: company/models.py:422
msgid "Parameter value"
msgstr ""
-#: company/models.py:426 part/models.py:797 part/models.py:2204
-#: templates/js/translated/company.js:595 templates/js/translated/part.js:486
+#: company/models.py:428 part/models.py:799 part/models.py:2220
+#: templates/js/translated/company.js:648 templates/js/translated/part.js:618
msgid "Units"
msgstr ""
-#: company/models.py:427
+#: company/models.py:429
msgid "Parameter units"
msgstr ""
-#: company/models.py:494 company/templates/company/company_base.html:121
+#: company/models.py:501
+msgid "Linked manufacturer part must reference the same base part"
+msgstr ""
+
+#: company/models.py:544 company/templates/company/company_base.html:121
#: company/templates/company/supplier_part.html:88 order/models.py:260
#: order/templates/order/order_base.html:92
#: order/templates/order/order_wizard/select_pos.html:30 part/bom.py:175
#: part/bom.py:286 stock/templates/stock/item_base.html:383
-#: templates/js/translated/company.js:291
-#: templates/js/translated/company.js:713 templates/js/translated/order.js:254
+#: templates/js/translated/company.js:336
+#: templates/js/translated/company.js:768 templates/js/translated/order.js:328
+#: templates/js/translated/part.js:203
msgid "Supplier"
msgstr ""
-#: company/models.py:495
+#: company/models.py:545 templates/js/translated/part.js:204
msgid "Select supplier"
msgstr ""
-#: company/models.py:500 company/templates/company/supplier_part.html:92
-#: order/templates/order/purchase_order_detail.html:318 part/bom.py:176
-#: part/bom.py:287
+#: company/models.py:550 company/templates/company/supplier_part.html:92
+#: part/bom.py:176 part/bom.py:287 templates/js/translated/order.js:492
+#: templates/js/translated/part.js:214
msgid "SKU"
msgstr ""
-#: company/models.py:501
+#: company/models.py:551 templates/js/translated/part.js:215
msgid "Supplier stock keeping unit"
msgstr ""
-#: company/models.py:508
+#: company/models.py:558
msgid "Select manufacturer part"
msgstr ""
-#: company/models.py:514
+#: company/models.py:564
msgid "URL for external supplier part link"
msgstr ""
-#: company/models.py:520
+#: company/models.py:570
msgid "Supplier part description"
msgstr ""
-#: company/models.py:525 company/templates/company/supplier_part.html:120
-#: part/models.py:2352 report/templates/report/inventree_po_report.html:93
+#: company/models.py:575 company/templates/company/supplier_part.html:120
+#: part/models.py:2368 report/templates/report/inventree_po_report.html:93
#: report/templates/report/inventree_so_report.html:93
msgid "Note"
msgstr ""
-#: company/models.py:529 part/models.py:1590
+#: company/models.py:579 part/models.py:1599
msgid "base cost"
msgstr ""
-#: company/models.py:529 part/models.py:1590
+#: company/models.py:579 part/models.py:1599
msgid "Minimum charge (e.g. stocking fee)"
msgstr ""
-#: company/models.py:531 company/templates/company/supplier_part.html:113
-#: stock/models.py:472 stock/templates/stock/item_base.html:324
-#: templates/js/translated/company.js:789 templates/js/translated/stock.js:1086
+#: company/models.py:581 company/templates/company/supplier_part.html:113
+#: stock/models.py:478 stock/templates/stock/item_base.html:324
+#: templates/js/translated/company.js:844 templates/js/translated/stock.js:1057
msgid "Packaging"
msgstr ""
-#: company/models.py:531
+#: company/models.py:581
msgid "Part packaging"
msgstr ""
-#: company/models.py:533 part/models.py:1592
+#: company/models.py:583 part/models.py:1601
msgid "multiple"
msgstr ""
-#: company/models.py:533
+#: company/models.py:583
msgid "Order multiple"
msgstr ""
@@ -2420,7 +2502,7 @@ msgstr ""
#: company/templates/company/company_base.html:9
#: company/templates/company/company_base.html:35
-#: templates/InvenTree/search.html:304 templates/js/translated/company.js:276
+#: templates/InvenTree/search.html:304 templates/js/translated/company.js:321
msgid "Company"
msgstr ""
@@ -2435,7 +2517,7 @@ msgid "Download image from URL"
msgstr ""
#: company/templates/company/company_base.html:46
-#: templates/js/translated/order.js:83
+#: templates/js/translated/order.js:117
msgid "Create Purchase Order"
msgstr ""
@@ -2460,16 +2542,16 @@ msgstr ""
msgid "Phone"
msgstr ""
-#: company/templates/company/company_base.html:126 order/models.py:544
-#: order/templates/order/sales_order_base.html:94 stock/models.py:490
-#: stock/models.py:491 stock/templates/stock/item_base.html:276
-#: templates/js/translated/company.js:283 templates/js/translated/order.js:351
-#: templates/js/translated/stock.js:1467
+#: company/templates/company/company_base.html:126 order/models.py:550
+#: order/templates/order/sales_order_base.html:94 stock/models.py:496
+#: stock/models.py:497 stock/templates/stock/item_base.html:276
+#: templates/js/translated/company.js:328 templates/js/translated/order.js:692
+#: templates/js/translated/stock.js:1608
msgid "Customer"
msgstr ""
#: company/templates/company/company_base.html:193
-#: part/templates/part/part_base.html:405
+#: part/templates/part/part_base.html:418
msgid "Upload Image"
msgstr ""
@@ -2490,8 +2572,8 @@ msgstr ""
msgid "New Supplier Part"
msgstr ""
-#: company/templates/company/detail.html:28
-#: company/templates/company/detail.html:70
+#: company/templates/company/detail.html:27
+#: company/templates/company/detail.html:67
#: company/templates/company/manufacturer_part.html:112
#: company/templates/company/manufacturer_part.html:136
#: part/templates/part/category.html:135 part/templates/part/detail.html:292
@@ -2499,106 +2581,106 @@ msgstr ""
msgid "Options"
msgstr ""
-#: company/templates/company/detail.html:33
-#: company/templates/company/detail.html:75
+#: company/templates/company/detail.html:32
+#: company/templates/company/detail.html:72
#: part/templates/part/category.html:140
msgid "Order parts"
msgstr ""
-#: company/templates/company/detail.html:36
-#: company/templates/company/detail.html:78
+#: company/templates/company/detail.html:35
+#: company/templates/company/detail.html:75
msgid "Delete parts"
msgstr ""
-#: company/templates/company/detail.html:36
-#: company/templates/company/detail.html:78
+#: company/templates/company/detail.html:35
+#: company/templates/company/detail.html:75
msgid "Delete Parts"
msgstr ""
-#: company/templates/company/detail.html:56 templates/InvenTree/search.html:149
+#: company/templates/company/detail.html:54 templates/InvenTree/search.html:149
msgid "Manufacturer Parts"
msgstr ""
-#: company/templates/company/detail.html:64
+#: company/templates/company/detail.html:62
msgid "Create new manufacturer part"
msgstr ""
-#: company/templates/company/detail.html:65 part/templates/part/detail.html:312
+#: company/templates/company/detail.html:63 part/templates/part/detail.html:312
msgid "New Manufacturer Part"
msgstr ""
-#: company/templates/company/detail.html:97
+#: company/templates/company/detail.html:93
msgid "Supplier Stock"
msgstr ""
-#: company/templates/company/detail.html:106
-#: company/templates/company/navbar.html:40
-#: company/templates/company/navbar.html:43
+#: company/templates/company/detail.html:102
+#: company/templates/company/navbar.html:46
+#: company/templates/company/navbar.html:49
#: order/templates/order/purchase_orders.html:8
#: order/templates/order/purchase_orders.html:13
-#: part/templates/part/detail.html:50 part/templates/part/navbar.html:71
-#: part/templates/part/navbar.html:74 templates/InvenTree/index.html:260
+#: part/templates/part/detail.html:50 part/templates/part/navbar.html:82
+#: part/templates/part/navbar.html:85 templates/InvenTree/index.html:260
#: templates/InvenTree/search.html:325
#: templates/InvenTree/settings/navbar.html:107
-#: templates/InvenTree/settings/navbar.html:109 templates/navbar.html:37
+#: templates/InvenTree/settings/navbar.html:109 templates/navbar.html:44
#: users/models.py:45
msgid "Purchase Orders"
msgstr ""
-#: company/templates/company/detail.html:112
+#: company/templates/company/detail.html:108
#: order/templates/order/purchase_orders.html:20
msgid "Create new purchase order"
msgstr ""
-#: company/templates/company/detail.html:113
+#: company/templates/company/detail.html:109
#: order/templates/order/purchase_orders.html:21
msgid "New Purchase Order"
msgstr ""
-#: company/templates/company/detail.html:128
-#: company/templates/company/navbar.html:49
-#: company/templates/company/navbar.html:52
+#: company/templates/company/detail.html:124
+#: company/templates/company/navbar.html:55
+#: company/templates/company/navbar.html:58
#: order/templates/order/sales_orders.html:8
#: order/templates/order/sales_orders.html:13
-#: part/templates/part/detail.html:71 part/templates/part/navbar.html:79
-#: part/templates/part/navbar.html:82 templates/InvenTree/index.html:291
+#: part/templates/part/detail.html:71 part/templates/part/navbar.html:91
+#: part/templates/part/navbar.html:94 templates/InvenTree/index.html:291
#: templates/InvenTree/search.html:345
#: templates/InvenTree/settings/navbar.html:113
-#: templates/InvenTree/settings/navbar.html:115 templates/navbar.html:46
+#: templates/InvenTree/settings/navbar.html:115 templates/navbar.html:55
#: users/models.py:46
msgid "Sales Orders"
msgstr ""
-#: company/templates/company/detail.html:134
+#: company/templates/company/detail.html:130
#: order/templates/order/sales_orders.html:20
msgid "Create new sales order"
msgstr ""
-#: company/templates/company/detail.html:135
+#: company/templates/company/detail.html:131
#: order/templates/order/sales_orders.html:21
msgid "New Sales Order"
msgstr ""
-#: company/templates/company/detail.html:151
-#: company/templates/company/navbar.html:55
-#: company/templates/company/navbar.html:58
-#: templates/js/translated/build.js:597
+#: company/templates/company/detail.html:147
+#: company/templates/company/navbar.html:61
+#: company/templates/company/navbar.html:64
+#: templates/js/translated/build.js:620
msgid "Assigned Stock"
msgstr ""
-#: company/templates/company/detail.html:169
+#: company/templates/company/detail.html:165
msgid "Company Notes"
msgstr ""
#: company/templates/company/detail.html:364
#: company/templates/company/manufacturer_part.html:200
-#: part/templates/part/detail.html:826
+#: part/templates/part/detail.html:357
msgid "Delete Supplier Parts?"
msgstr ""
#: company/templates/company/detail.html:365
#: company/templates/company/manufacturer_part.html:201
-#: part/templates/part/detail.html:827
+#: part/templates/part/detail.html:358
msgid "All selected supplier parts will be deleted"
msgstr ""
@@ -2609,17 +2691,17 @@ msgstr ""
#: company/templates/company/manufacturer_part.html:40
#: company/templates/company/supplier_part.html:40
#: company/templates/company/supplier_part.html:146
-#: part/templates/part/detail.html:55 part/templates/part/part_base.html:109
+#: part/templates/part/detail.html:55 part/templates/part/part_base.html:116
msgid "Order part"
msgstr ""
#: company/templates/company/manufacturer_part.html:45
-#: templates/js/translated/company.js:511
+#: templates/js/translated/company.js:560
msgid "Edit manufacturer part"
msgstr ""
#: company/templates/company/manufacturer_part.html:49
-#: templates/js/translated/company.js:512
+#: templates/js/translated/company.js:561
msgid "Delete manufacturer part"
msgstr ""
@@ -2634,9 +2716,9 @@ msgstr ""
#: company/templates/company/manufacturer_part.html:103
#: company/templates/company/manufacturer_part_navbar.html:21
-#: company/views.py:49 part/templates/part/navbar.html:65
-#: part/templates/part/navbar.html:68 part/templates/part/prices.html:144
-#: templates/InvenTree/search.html:316 templates/navbar.html:35
+#: company/views.py:49 part/templates/part/navbar.html:75
+#: part/templates/part/navbar.html:78 part/templates/part/prices.html:163
+#: templates/InvenTree/search.html:316 templates/navbar.html:41
msgid "Suppliers"
msgstr ""
@@ -2649,8 +2731,8 @@ msgstr ""
#: company/templates/company/manufacturer_part.html:138
#: company/templates/company/manufacturer_part.html:239
#: part/templates/part/detail.html:214 part/templates/part/detail.html:294
-#: part/templates/part/detail.html:317 templates/js/translated/company.js:377
-#: users/models.py:194
+#: part/templates/part/detail.html:317 templates/js/translated/company.js:424
+#: templates/js/translated/helpers.js:31 users/models.py:194
msgid "Delete"
msgstr ""
@@ -2659,8 +2741,8 @@ msgstr ""
#: company/templates/company/manufacturer_part_navbar.html:14
#: part/templates/part/category_navbar.html:38
#: part/templates/part/category_navbar.html:41
-#: part/templates/part/detail.html:155 part/templates/part/navbar.html:14
-#: part/templates/part/navbar.html:17
+#: part/templates/part/detail.html:155 part/templates/part/navbar.html:20
+#: part/templates/part/navbar.html:23
msgid "Parameters"
msgstr ""
@@ -2676,7 +2758,7 @@ msgid "Delete parameters"
msgstr ""
#: company/templates/company/manufacturer_part.html:176
-#: part/templates/part/detail.html:719
+#: part/templates/part/detail.html:834
msgid "Add Parameter"
msgstr ""
@@ -2693,18 +2775,18 @@ msgid "Manufacturer Part Stock"
msgstr ""
#: company/templates/company/manufacturer_part_navbar.html:29
-#: company/templates/company/navbar.html:34
+#: company/templates/company/navbar.html:39
#: company/templates/company/supplier_part_navbar.html:15
-#: part/templates/part/navbar.html:31 stock/api.py:53
+#: part/templates/part/navbar.html:38 stock/api.py:54
#: stock/templates/stock/loc_link.html:7 stock/templates/stock/location.html:36
#: stock/templates/stock/stock_app_base.html:10
#: templates/InvenTree/index.html:150 templates/InvenTree/search.html:196
#: templates/InvenTree/search.html:232
#: templates/InvenTree/settings/navbar.html:95
#: templates/InvenTree/settings/navbar.html:97
-#: templates/js/translated/part.js:401 templates/js/translated/part.js:626
-#: templates/js/translated/part.js:786 templates/js/translated/stock.js:133
-#: templates/js/translated/stock.js:935 templates/navbar.html:26
+#: templates/js/translated/part.js:529 templates/js/translated/part.js:758
+#: templates/js/translated/part.js:934 templates/js/translated/stock.js:202
+#: templates/js/translated/stock.js:850 templates/navbar.html:32
msgid "Stock"
msgstr ""
@@ -2717,41 +2799,41 @@ msgstr ""
msgid "Orders"
msgstr ""
-#: company/templates/company/navbar.html:13
-#: company/templates/company/navbar.html:16
+#: company/templates/company/navbar.html:17
+#: company/templates/company/navbar.html:20
msgid "Manufactured Parts"
msgstr ""
-#: company/templates/company/navbar.html:22
-#: company/templates/company/navbar.html:25
+#: company/templates/company/navbar.html:26
+#: company/templates/company/navbar.html:29
msgid "Supplied Parts"
msgstr ""
-#: company/templates/company/navbar.html:31 part/templates/part/navbar.html:28
+#: company/templates/company/navbar.html:36 part/templates/part/navbar.html:35
#: stock/templates/stock/location.html:119
#: stock/templates/stock/location.html:134
#: stock/templates/stock/location.html:148
#: stock/templates/stock/location_navbar.html:18
#: stock/templates/stock/location_navbar.html:21
-#: templates/InvenTree/search.html:198 templates/js/translated/stock.js:1366
+#: templates/InvenTree/search.html:198 templates/js/translated/stock.js:1507
#: templates/stats.html:93 templates/stats.html:102 users/models.py:43
msgid "Stock Items"
msgstr ""
#: company/templates/company/supplier_part.html:7
-#: company/templates/company/supplier_part.html:24 stock/models.py:457
+#: company/templates/company/supplier_part.html:24 stock/models.py:463
#: stock/templates/stock/item_base.html:388
-#: templates/js/translated/company.js:729 templates/js/translated/stock.js:1058
+#: templates/js/translated/company.js:784 templates/js/translated/stock.js:1014
msgid "Supplier Part"
msgstr ""
#: company/templates/company/supplier_part.html:44
-#: templates/js/translated/company.js:802
+#: templates/js/translated/company.js:857
msgid "Edit supplier part"
msgstr ""
#: company/templates/company/supplier_part.html:48
-#: templates/js/translated/company.js:803
+#: templates/js/translated/company.js:858
msgid "Delete supplier part"
msgstr ""
@@ -2775,13 +2857,13 @@ msgid "Order Part"
msgstr ""
#: company/templates/company/supplier_part.html:158
-#: part/templates/part/navbar.html:58 part/templates/part/prices.html:7
+#: part/templates/part/navbar.html:67 part/templates/part/prices.html:7
msgid "Pricing Information"
msgstr ""
#: company/templates/company/supplier_part.html:164
#: company/templates/company/supplier_part.html:265
-#: part/templates/part/prices.html:253 part/views.py:1722
+#: part/templates/part/prices.html:271 part/views.py:1730
msgid "Add Price Break"
msgstr ""
@@ -2789,11 +2871,11 @@ msgstr ""
msgid "No price break information found"
msgstr ""
-#: company/templates/company/supplier_part.html:199 part/views.py:1784
+#: company/templates/company/supplier_part.html:199 part/views.py:1792
msgid "Delete Price Break"
msgstr ""
-#: company/templates/company/supplier_part.html:213 part/views.py:1770
+#: company/templates/company/supplier_part.html:213 part/views.py:1778
msgid "Edit Price Break"
msgstr ""
@@ -2817,8 +2899,8 @@ msgstr ""
msgid "New Supplier"
msgstr ""
-#: company/views.py:55 part/templates/part/prices.html:148
-#: templates/InvenTree/search.html:306 templates/navbar.html:36
+#: company/views.py:55 part/templates/part/prices.html:167
+#: templates/InvenTree/search.html:306 templates/navbar.html:42
msgid "Manufacturers"
msgstr ""
@@ -2827,7 +2909,7 @@ msgid "New Manufacturer"
msgstr ""
#: company/views.py:61 templates/InvenTree/search.html:336
-#: templates/navbar.html:45
+#: templates/navbar.html:53
msgid "Customers"
msgstr ""
@@ -2929,6 +3011,10 @@ msgstr ""
msgid "Part query filters (comma-separated value of key=value pairs)"
msgstr ""
+#: order/api.py:302
+msgid "Destination location must be specified"
+msgstr ""
+
#: order/forms.py:30 order/templates/order/order_base.html:47
msgid "Place order"
msgstr ""
@@ -2978,11 +3064,11 @@ msgstr ""
msgid "Order notes"
msgstr ""
-#: order/models.py:247 order/models.py:534
+#: order/models.py:247 order/models.py:540
msgid "Order reference"
msgstr ""
-#: order/models.py:252 order/models.py:549
+#: order/models.py:252 order/models.py:555
msgid "Purchase order status"
msgstr ""
@@ -2991,7 +3077,7 @@ msgid "Company from which the items are being ordered"
msgstr ""
#: order/models.py:264 order/templates/order/order_base.html:98
-#: templates/js/translated/order.js:263
+#: templates/js/translated/order.js:337
msgid "Supplier Reference"
msgstr ""
@@ -3023,7 +3109,7 @@ msgstr ""
msgid "Date order was completed"
msgstr ""
-#: order/models.py:313 stock/models.py:345 stock/models.py:1060
+#: order/models.py:313 stock/models.py:351 stock/models.py:1072
msgid "Quantity must be greater than zero"
msgstr ""
@@ -3031,150 +3117,182 @@ msgstr ""
msgid "Part supplier must match PO supplier"
msgstr ""
-#: order/models.py:416
+#: order/models.py:421
msgid "Lines can only be received against an order marked as 'Placed'"
msgstr ""
-#: order/models.py:420
+#: order/models.py:425
msgid "Quantity must be an integer"
msgstr ""
-#: order/models.py:422
+#: order/models.py:427
msgid "Quantity must be a positive number"
msgstr ""
-#: order/models.py:545
+#: order/models.py:551
msgid "Company to which the items are being sold"
msgstr ""
-#: order/models.py:551
+#: order/models.py:557
msgid "Customer Reference "
msgstr ""
-#: order/models.py:551
+#: order/models.py:557
msgid "Customer order reference code"
msgstr ""
-#: order/models.py:556
+#: order/models.py:562
msgid "Target date for order completion. Order will be overdue after this date."
msgstr ""
-#: order/models.py:559 templates/js/translated/order.js:392
+#: order/models.py:565 templates/js/translated/order.js:733
msgid "Shipment Date"
msgstr ""
-#: order/models.py:566
+#: order/models.py:572
msgid "shipped by"
msgstr ""
-#: order/models.py:610
+#: order/models.py:616
msgid "SalesOrder cannot be shipped as it is not currently pending"
msgstr ""
-#: order/models.py:707
+#: order/models.py:713
msgid "Item quantity"
msgstr ""
-#: order/models.py:713
+#: order/models.py:719
msgid "Line item reference"
msgstr ""
-#: order/models.py:715
+#: order/models.py:721
msgid "Line item notes"
msgstr ""
-#: order/models.py:745 order/models.py:823 templates/js/translated/order.js:442
+#: order/models.py:751 order/models.py:835 templates/js/translated/order.js:785
msgid "Order"
msgstr ""
-#: order/models.py:746 order/templates/order/order_base.html:9
+#: order/models.py:752 order/templates/order/order_base.html:9
#: order/templates/order/order_base.html:24
#: report/templates/report/inventree_po_report.html:77
#: stock/templates/stock/item_base.html:338
-#: templates/js/translated/order.js:232 templates/js/translated/stock.js:1037
-#: templates/js/translated/stock.js:1448
+#: templates/js/translated/order.js:306 templates/js/translated/stock.js:991
+#: templates/js/translated/stock.js:1589
msgid "Purchase Order"
msgstr ""
-#: order/models.py:767
+#: order/models.py:773
msgid "Supplier part"
msgstr ""
-#: order/models.py:770 order/templates/order/order_base.html:131
-#: order/templates/order/purchase_order_detail.html:388
+#: order/models.py:780 order/templates/order/order_base.html:131
#: order/templates/order/receive_parts.html:22
#: order/templates/order/sales_order_base.html:133
+#: templates/js/translated/order.js:573
msgid "Received"
msgstr ""
-#: order/models.py:770
+#: order/models.py:781
msgid "Number of items received"
msgstr ""
-#: order/models.py:776 part/templates/part/prices.html:157 stock/models.py:582
-#: stock/templates/stock/item_base.html:345
-#: templates/js/translated/stock.js:1081
+#: order/models.py:788 part/templates/part/prices.html:176 stock/models.py:588
+#: stock/serializers.py:147 stock/templates/stock/item_base.html:345
+#: templates/js/translated/stock.js:1045
msgid "Purchase Price"
msgstr ""
-#: order/models.py:777
+#: order/models.py:789
msgid "Unit purchase price"
msgstr ""
-#: order/models.py:785
+#: order/models.py:797
msgid "Where does the Purchaser want this item to be stored?"
msgstr ""
-#: order/models.py:831 part/templates/part/part_pricing.html:97
-#: part/templates/part/prices.html:97 part/templates/part/prices.html:266
+#: order/models.py:843 part/templates/part/part_pricing.html:112
+#: part/templates/part/prices.html:116 part/templates/part/prices.html:284
msgid "Sale Price"
msgstr ""
-#: order/models.py:832
+#: order/models.py:844
msgid "Unit sale price"
msgstr ""
-#: order/models.py:911 order/models.py:913
+#: order/models.py:923 order/models.py:925
msgid "Stock item has not been assigned"
msgstr ""
-#: order/models.py:917
+#: order/models.py:929
msgid "Cannot allocate stock item to a line with a different part"
msgstr ""
-#: order/models.py:919
+#: order/models.py:931
msgid "Cannot allocate stock to a line without a part"
msgstr ""
-#: order/models.py:922
+#: order/models.py:934
msgid "Allocation quantity cannot exceed stock quantity"
msgstr ""
-#: order/models.py:932
+#: order/models.py:944
msgid "Quantity must be 1 for serialized stock item"
msgstr ""
-#: order/models.py:937
+#: order/models.py:949
msgid "Line"
msgstr ""
-#: order/models.py:948
+#: order/models.py:960
msgid "Item"
msgstr ""
-#: order/models.py:949
+#: order/models.py:961
msgid "Select stock item to allocate"
msgstr ""
-#: order/models.py:952
+#: order/models.py:964
msgid "Enter stock allocation quantity"
msgstr ""
-#: order/serializers.py:139
+#: order/serializers.py:166
msgid "Purchase price currency"
msgstr ""
-#: order/serializers.py:360
+#: order/serializers.py:201
+msgid "Line Item"
+msgstr ""
+
+#: order/serializers.py:207
+msgid "Line item does not match purchase order"
+msgstr ""
+
+#: order/serializers.py:217 order/serializers.py:276
+msgid "Select destination location for received items"
+msgstr ""
+
+#: order/serializers.py:234
+msgid "Barcode Hash"
+msgstr ""
+
+#: order/serializers.py:235
+msgid "Unique identifier field"
+msgstr ""
+
+#: order/serializers.py:250
+msgid "Barcode is already in use"
+msgstr ""
+
+#: order/serializers.py:289
+msgid "Line items must be provided"
+msgstr ""
+
+#: order/serializers.py:299
+msgid "Supplied barcode values must be unique"
+msgstr ""
+
+#: order/serializers.py:514
msgid "Sale price currency"
msgstr ""
@@ -3227,14 +3345,12 @@ msgid "Edit Purchase Order"
msgstr ""
#: order/templates/order/order_base.html:196
-#: order/templates/order/purchase_order_detail.html:265
-#: stock/templates/stock/location.html:250
+#: stock/templates/stock/location.html:250 templates/js/translated/order.js:437
msgid "New Location"
msgstr ""
#: order/templates/order/order_base.html:197
-#: order/templates/order/purchase_order_detail.html:266
-#: stock/templates/stock/location.html:42
+#: stock/templates/stock/location.html:42 templates/js/translated/order.js:438
msgid "Create new stock location"
msgstr ""
@@ -3336,7 +3452,7 @@ msgid "Upload File for Purchase Order"
msgstr ""
#: order/templates/order/order_wizard/po_upload.html:18
-#: part/templates/part/bom_upload/upload_file.html:24
+#: part/templates/part/bom_upload/upload_file.html:34
#: part/templates/part/import_wizard/ajax_part_upload.html:10
#: part/templates/part/import_wizard/part_upload.html:21
#, python-format
@@ -3369,7 +3485,7 @@ msgstr ""
#: order/templates/order/order_wizard/select_parts.html:65
#, python-format
-msgid "Select a supplier for %(name)s"
+msgid "Select a supplier for %(name)s"
msgstr ""
#: order/templates/order/order_wizard/select_parts.html:77
@@ -3386,7 +3502,7 @@ msgid "Select existing purchase orders, or create new orders."
msgstr ""
#: order/templates/order/order_wizard/select_pos.html:31
-#: templates/js/translated/order.js:289 templates/js/translated/order.js:397
+#: templates/js/translated/order.js:363 templates/js/translated/order.js:738
msgid "Items"
msgstr ""
@@ -3425,9 +3541,9 @@ msgid "Purchase Order Items"
msgstr ""
#: order/templates/order/purchase_order_detail.html:23
-#: order/templates/order/purchase_order_detail.html:202
+#: order/templates/order/purchase_order_detail.html:203
#: order/templates/order/sales_order_detail.html:23
-#: order/templates/order/sales_order_detail.html:176
+#: order/templates/order/sales_order_detail.html:177
msgid "Add Line Item"
msgstr ""
@@ -3436,49 +3552,6 @@ msgstr ""
msgid "Order Notes"
msgstr ""
-#: order/templates/order/purchase_order_detail.html:238
-#: order/templates/order/sales_order_detail.html:518
-msgid "Edit Line Item"
-msgstr ""
-
-#: order/templates/order/purchase_order_detail.html:248
-#: order/templates/order/sales_order_detail.html:528
-msgid "Delete Line Item"
-msgstr ""
-
-#: order/templates/order/purchase_order_detail.html:279
-msgid "No line items found"
-msgstr ""
-
-#: order/templates/order/purchase_order_detail.html:307
-#: order/templates/order/sales_order_detail.html:353
-msgid "Total"
-msgstr ""
-
-#: order/templates/order/purchase_order_detail.html:360
-#: order/templates/order/sales_order_detail.html:376
-#: templates/js/translated/part.js:1128 templates/js/translated/part.js:1317
-msgid "Unit Price"
-msgstr ""
-
-#: order/templates/order/purchase_order_detail.html:367
-#: order/templates/order/sales_order_detail.html:383
-msgid "Total price"
-msgstr ""
-
-#: order/templates/order/purchase_order_detail.html:431
-#: order/templates/order/sales_order_detail.html:489
-msgid "Edit line item"
-msgstr ""
-
-#: order/templates/order/purchase_order_detail.html:432
-msgid "Delete line item"
-msgstr ""
-
-#: order/templates/order/purchase_order_detail.html:437
-msgid "Receive line item"
-msgstr ""
-
#: order/templates/order/purchase_orders.html:24
#: order/templates/order/sales_orders.html:24
msgid "Print Order Reports"
@@ -3486,18 +3559,18 @@ msgstr ""
#: order/templates/order/receive_parts.html:8
#, python-format
-msgid "Receive outstanding parts for %(order)s - %(desc)s"
+msgid "Receive outstanding parts for %(order)s - %(desc)s"
msgstr ""
-#: order/templates/order/receive_parts.html:14 part/api.py:49
-#: part/models.py:296 part/templates/part/cat_link.html:7
+#: order/templates/order/receive_parts.html:14 part/api.py:54
+#: part/models.py:298 part/templates/part/cat_link.html:7
#: part/templates/part/category.html:108 part/templates/part/category.html:122
#: part/templates/part/category_navbar.html:21
#: part/templates/part/category_navbar.html:24
#: templates/InvenTree/index.html:102 templates/InvenTree/search.html:114
#: templates/InvenTree/settings/navbar.html:83
#: templates/InvenTree/settings/navbar.html:85
-#: templates/js/translated/part.js:987 templates/navbar.html:23
+#: templates/js/translated/part.js:1154 templates/navbar.html:29
#: templates/stats.html:80 templates/stats.html:89 users/models.py:41
msgid "Parts"
msgstr ""
@@ -3511,7 +3584,7 @@ msgid "Order Code"
msgstr ""
#: order/templates/order/receive_parts.html:21
-#: part/templates/part/part_base.html:160 templates/js/translated/part.js:802
+#: part/templates/part/part_base.html:167 templates/js/translated/part.js:949
msgid "On Order"
msgstr ""
@@ -3540,7 +3613,7 @@ msgid "Sales Order Details"
msgstr ""
#: order/templates/order/sales_order_base.html:100
-#: templates/js/translated/order.js:364
+#: templates/js/translated/order.js:705
msgid "Customer Reference"
msgstr ""
@@ -3563,71 +3636,102 @@ msgstr ""
msgid "Sales Order Items"
msgstr ""
-#: order/templates/order/sales_order_detail.html:225
-#: templates/js/translated/bom.js:378 templates/js/translated/build.js:759
-#: templates/js/translated/build.js:1202
+#: order/templates/order/sales_order_detail.html:226
+#: templates/js/translated/bom.js:394 templates/js/translated/build.js:782
+#: templates/js/translated/build.js:1219
msgid "Actions"
msgstr ""
-#: order/templates/order/sales_order_detail.html:232
-#: templates/js/translated/build.js:645 templates/js/translated/build.js:1011
+#: order/templates/order/sales_order_detail.html:233
+#: templates/js/translated/build.js:668 templates/js/translated/build.js:1030
msgid "Edit stock allocation"
msgstr ""
-#: order/templates/order/sales_order_detail.html:233
-#: templates/js/translated/build.js:647 templates/js/translated/build.js:1012
+#: order/templates/order/sales_order_detail.html:234
+#: templates/js/translated/build.js:670 templates/js/translated/build.js:1031
msgid "Delete stock allocation"
msgstr ""
-#: order/templates/order/sales_order_detail.html:306
+#: order/templates/order/sales_order_detail.html:307
msgid "No matching line items"
msgstr ""
-#: order/templates/order/sales_order_detail.html:336
+#: order/templates/order/sales_order_detail.html:337
msgid "ID"
msgstr ""
-#: order/templates/order/sales_order_detail.html:404
-#: templates/js/translated/build.js:710 templates/js/translated/build.js:1007
+#: order/templates/order/sales_order_detail.html:354
+#: templates/js/translated/order.js:481
+msgid "Total"
+msgstr ""
+
+#: order/templates/order/sales_order_detail.html:377
+#: templates/js/translated/order.js:534 templates/js/translated/part.js:1296
+#: templates/js/translated/part.js:1507
+msgid "Unit Price"
+msgstr ""
+
+#: order/templates/order/sales_order_detail.html:384
+#: templates/js/translated/order.js:543
+msgid "Total price"
+msgstr ""
+
+#: order/templates/order/sales_order_detail.html:405
+#: templates/js/translated/build.js:733 templates/js/translated/build.js:1026
msgid "Allocated"
msgstr ""
-#: order/templates/order/sales_order_detail.html:406
+#: order/templates/order/sales_order_detail.html:407
msgid "Fulfilled"
msgstr ""
-#: order/templates/order/sales_order_detail.html:443
+#: order/templates/order/sales_order_detail.html:444
msgid "PO"
msgstr ""
-#: order/templates/order/sales_order_detail.html:473
+#: order/templates/order/sales_order_detail.html:474
msgid "Allocate serial numbers"
msgstr ""
-#: order/templates/order/sales_order_detail.html:476
-#: templates/js/translated/build.js:773
+#: order/templates/order/sales_order_detail.html:477
+#: templates/js/translated/build.js:796
msgid "Allocate stock"
msgstr ""
-#: order/templates/order/sales_order_detail.html:479
+#: order/templates/order/sales_order_detail.html:480
msgid "Purchase stock"
msgstr ""
-#: order/templates/order/sales_order_detail.html:483
-#: templates/js/translated/build.js:766 templates/js/translated/build.js:1210
+#: order/templates/order/sales_order_detail.html:484
+#: templates/js/translated/build.js:789 templates/js/translated/build.js:1227
msgid "Build stock"
msgstr ""
-#: order/templates/order/sales_order_detail.html:486
-#: order/templates/order/sales_order_detail.html:605
+#: order/templates/order/sales_order_detail.html:487
+#: order/templates/order/sales_order_detail.html:606
msgid "Calculate price"
msgstr ""
#: order/templates/order/sales_order_detail.html:490
+#: templates/js/translated/order.js:616
+msgid "Edit line item"
+msgstr ""
+
+#: order/templates/order/sales_order_detail.html:491
msgid "Delete line item "
msgstr ""
-#: order/templates/order/sales_order_detail.html:611
+#: order/templates/order/sales_order_detail.html:519
+#: templates/js/translated/order.js:403
+msgid "Edit Line Item"
+msgstr ""
+
+#: order/templates/order/sales_order_detail.html:529
+#: templates/js/translated/order.js:415
+msgid "Delete Line Item"
+msgstr ""
+
+#: order/templates/order/sales_order_detail.html:612
msgid "Update Unit Price"
msgstr ""
@@ -3814,12 +3918,28 @@ msgstr ""
msgid "Updated {part} unit-price to {price} and quantity to {qty}"
msgstr ""
-#: part/bom.py:133 part/models.py:73 part/models.py:731
-#: part/templates/part/category.html:75 part/templates/part/part_base.html:282
+#: part/api.py:700
+msgid "Must be greater than zero"
+msgstr ""
+
+#: part/api.py:704
+msgid "Must be a valid quantity"
+msgstr ""
+
+#: part/api.py:719
+msgid "Specify location for initial part stock"
+msgstr ""
+
+#: part/api.py:750 part/api.py:754 part/api.py:769 part/api.py:773
+msgid "This field is required"
+msgstr ""
+
+#: part/bom.py:133 part/models.py:75 part/models.py:733
+#: part/templates/part/category.html:75 part/templates/part/part_base.html:290
msgid "Default Location"
msgstr ""
-#: part/bom.py:134 part/templates/part/part_base.html:149
+#: part/bom.py:134 part/templates/part/part_base.html:156
msgid "Available Stock"
msgstr ""
@@ -3879,7 +3999,7 @@ msgstr ""
msgid "Include part supplier data in exported BOM"
msgstr ""
-#: part/forms.py:96 part/models.py:2234
+#: part/forms.py:96 part/models.py:2250
msgid "Parent Part"
msgstr ""
@@ -3923,391 +4043,391 @@ msgstr ""
msgid "Input quantity for price calculation"
msgstr ""
-#: part/models.py:74
+#: part/models.py:76
msgid "Default location for parts in this category"
msgstr ""
-#: part/models.py:77
+#: part/models.py:79
msgid "Default keywords"
msgstr ""
-#: part/models.py:77
+#: part/models.py:79
msgid "Default keywords for parts in this category"
msgstr ""
-#: part/models.py:87 part/models.py:2280
+#: part/models.py:89 part/models.py:2296
#: part/templates/part/part_app_base.html:10
msgid "Part Category"
msgstr ""
-#: part/models.py:88 part/templates/part/category.html:32
+#: part/models.py:90 part/templates/part/category.html:32
#: part/templates/part/category.html:103 templates/InvenTree/search.html:127
#: templates/stats.html:84 users/models.py:40
msgid "Part Categories"
msgstr ""
-#: part/models.py:381
+#: part/models.py:383
msgid "Invalid choice for parent part"
msgstr ""
-#: part/models.py:433 part/models.py:445
+#: part/models.py:435 part/models.py:447
#, python-brace-format
msgid "Part '{p1}' is used in BOM for '{p2}' (recursive)"
msgstr ""
-#: part/models.py:542
+#: part/models.py:544
msgid "Next available serial numbers are"
msgstr ""
-#: part/models.py:546
+#: part/models.py:548
msgid "Next available serial number is"
msgstr ""
-#: part/models.py:551
+#: part/models.py:553
msgid "Most recent serial number is"
msgstr ""
-#: part/models.py:630
+#: part/models.py:632
msgid "Duplicate IPN not allowed in part settings"
msgstr ""
-#: part/models.py:655
+#: part/models.py:657
msgid "Part name"
msgstr ""
-#: part/models.py:662
+#: part/models.py:664
msgid "Is Template"
msgstr ""
-#: part/models.py:663
+#: part/models.py:665
msgid "Is this part a template part?"
msgstr ""
-#: part/models.py:673
+#: part/models.py:675
msgid "Is this part a variant of another part?"
msgstr ""
-#: part/models.py:674
+#: part/models.py:676
msgid "Variant Of"
msgstr ""
-#: part/models.py:680
+#: part/models.py:682
msgid "Part description"
msgstr ""
-#: part/models.py:685 part/templates/part/category.html:82
-#: part/templates/part/part_base.html:251
+#: part/models.py:687 part/templates/part/category.html:82
+#: part/templates/part/part_base.html:259
msgid "Keywords"
msgstr ""
-#: part/models.py:686
+#: part/models.py:688
msgid "Part keywords to improve visibility in search results"
msgstr ""
-#: part/models.py:693 part/models.py:2279
+#: part/models.py:695 part/models.py:2295
#: part/templates/part/set_category.html:15
#: templates/InvenTree/settings/settings.html:167
-#: templates/js/translated/part.js:773
+#: templates/js/translated/part.js:916
msgid "Category"
msgstr ""
-#: part/models.py:694
+#: part/models.py:696
msgid "Part category"
msgstr ""
-#: part/models.py:699 part/templates/part/part_base.html:227
-#: templates/js/translated/part.js:389 templates/js/translated/part.js:617
+#: part/models.py:701 part/templates/part/part_base.html:235
+#: templates/js/translated/part.js:517 templates/js/translated/part.js:749
msgid "IPN"
msgstr ""
-#: part/models.py:700
+#: part/models.py:702
msgid "Internal Part Number"
msgstr ""
-#: part/models.py:706
+#: part/models.py:708
msgid "Part revision or version number"
msgstr ""
-#: part/models.py:707 part/templates/part/part_base.html:244
-#: report/models.py:200 templates/js/translated/part.js:393
+#: part/models.py:709 part/templates/part/part_base.html:252
+#: report/models.py:200 templates/js/translated/part.js:521
msgid "Revision"
msgstr ""
-#: part/models.py:729
+#: part/models.py:731
msgid "Where is this item normally stored?"
msgstr ""
-#: part/models.py:776 part/templates/part/part_base.html:289
+#: part/models.py:778 part/templates/part/part_base.html:297
msgid "Default Supplier"
msgstr ""
-#: part/models.py:777
+#: part/models.py:779
msgid "Default supplier part"
msgstr ""
-#: part/models.py:784
+#: part/models.py:786
msgid "Default Expiry"
msgstr ""
-#: part/models.py:785
+#: part/models.py:787
msgid "Expiry time (in days) for stock items of this part"
msgstr ""
-#: part/models.py:790
+#: part/models.py:792
msgid "Minimum Stock"
msgstr ""
-#: part/models.py:791
+#: part/models.py:793
msgid "Minimum allowed stock level"
msgstr ""
-#: part/models.py:798
+#: part/models.py:800
msgid "Stock keeping units for this part"
msgstr ""
-#: part/models.py:804
+#: part/models.py:806
msgid "Can this part be built from other parts?"
msgstr ""
-#: part/models.py:810
+#: part/models.py:812
msgid "Can this part be used to build other parts?"
msgstr ""
-#: part/models.py:816
+#: part/models.py:818
msgid "Does this part have tracking for unique items?"
msgstr ""
-#: part/models.py:821
+#: part/models.py:823
msgid "Can this part be purchased from external suppliers?"
msgstr ""
-#: part/models.py:826
+#: part/models.py:828
msgid "Can this part be sold to customers?"
msgstr ""
-#: part/models.py:830 templates/js/translated/table_filters.js:21
-#: templates/js/translated/table_filters.js:69
-#: templates/js/translated/table_filters.js:255
-#: templates/js/translated/table_filters.js:324
+#: part/models.py:832 templates/js/translated/table_filters.js:34
+#: templates/js/translated/table_filters.js:82
+#: templates/js/translated/table_filters.js:268
+#: templates/js/translated/table_filters.js:337
msgid "Active"
msgstr ""
-#: part/models.py:831
+#: part/models.py:833
msgid "Is this part active?"
msgstr ""
-#: part/models.py:836
+#: part/models.py:838
msgid "Is this a virtual part, such as a software product or license?"
msgstr ""
-#: part/models.py:841
+#: part/models.py:843
msgid "Part notes - supports Markdown formatting"
msgstr ""
-#: part/models.py:844
+#: part/models.py:846
msgid "BOM checksum"
msgstr ""
-#: part/models.py:844
+#: part/models.py:846
msgid "Stored BOM checksum"
msgstr ""
-#: part/models.py:847
+#: part/models.py:849
msgid "BOM checked by"
msgstr ""
-#: part/models.py:849
+#: part/models.py:851
msgid "BOM checked date"
msgstr ""
-#: part/models.py:853
+#: part/models.py:855
msgid "Creation User"
msgstr ""
-#: part/models.py:1592
+#: part/models.py:1601
msgid "Sell multiple"
msgstr ""
-#: part/models.py:2080
+#: part/models.py:2096
msgid "Test templates can only be created for trackable parts"
msgstr ""
-#: part/models.py:2097
+#: part/models.py:2113
msgid "Test with this name already exists for this part"
msgstr ""
-#: part/models.py:2117 templates/js/translated/part.js:1038
-#: templates/js/translated/stock.js:485
+#: part/models.py:2133 templates/js/translated/part.js:1205
+#: templates/js/translated/stock.js:556
msgid "Test Name"
msgstr ""
-#: part/models.py:2118
+#: part/models.py:2134
msgid "Enter a name for the test"
msgstr ""
-#: part/models.py:2123
+#: part/models.py:2139
msgid "Test Description"
msgstr ""
-#: part/models.py:2124
+#: part/models.py:2140
msgid "Enter description for this test"
msgstr ""
-#: part/models.py:2129 templates/js/translated/part.js:1047
-#: templates/js/translated/table_filters.js:241
+#: part/models.py:2145 templates/js/translated/part.js:1214
+#: templates/js/translated/table_filters.js:254
msgid "Required"
msgstr ""
-#: part/models.py:2130
+#: part/models.py:2146
msgid "Is this test required to pass?"
msgstr ""
-#: part/models.py:2135 templates/js/translated/part.js:1055
+#: part/models.py:2151 templates/js/translated/part.js:1222
msgid "Requires Value"
msgstr ""
-#: part/models.py:2136
+#: part/models.py:2152
msgid "Does this test require a value when adding a test result?"
msgstr ""
-#: part/models.py:2141 templates/js/translated/part.js:1062
+#: part/models.py:2157 templates/js/translated/part.js:1229
msgid "Requires Attachment"
msgstr ""
-#: part/models.py:2142
+#: part/models.py:2158
msgid "Does this test require a file attachment when adding a test result?"
msgstr ""
-#: part/models.py:2153
+#: part/models.py:2169
#, python-brace-format
msgid "Illegal character in template name ({c})"
msgstr ""
-#: part/models.py:2189
+#: part/models.py:2205
msgid "Parameter template name must be unique"
msgstr ""
-#: part/models.py:2197
+#: part/models.py:2213
msgid "Parameter Name"
msgstr ""
-#: part/models.py:2204
+#: part/models.py:2220
msgid "Parameter Units"
msgstr ""
-#: part/models.py:2236 part/models.py:2285 part/models.py:2286
+#: part/models.py:2252 part/models.py:2301 part/models.py:2302
#: templates/InvenTree/settings/settings.html:162
msgid "Parameter Template"
msgstr ""
-#: part/models.py:2238
+#: part/models.py:2254
msgid "Data"
msgstr ""
-#: part/models.py:2238
+#: part/models.py:2254
msgid "Parameter Value"
msgstr ""
-#: part/models.py:2290 templates/InvenTree/settings/settings.html:171
+#: part/models.py:2306 templates/InvenTree/settings/settings.html:171
msgid "Default Value"
msgstr ""
-#: part/models.py:2291
+#: part/models.py:2307
msgid "Default Parameter Value"
msgstr ""
-#: part/models.py:2325
+#: part/models.py:2341
msgid "Select parent part"
msgstr ""
-#: part/models.py:2333
+#: part/models.py:2349
msgid "Sub part"
msgstr ""
-#: part/models.py:2334
+#: part/models.py:2350
msgid "Select part to be used in BOM"
msgstr ""
-#: part/models.py:2340
+#: part/models.py:2356
msgid "BOM quantity for this BOM item"
msgstr ""
-#: part/models.py:2342 templates/js/translated/bom.js:236
-#: templates/js/translated/bom.js:298
+#: part/models.py:2358 templates/js/translated/bom.js:256
+#: templates/js/translated/bom.js:314
msgid "Optional"
msgstr ""
-#: part/models.py:2342
+#: part/models.py:2358
msgid "This BOM item is optional"
msgstr ""
-#: part/models.py:2345
+#: part/models.py:2361
msgid "Overage"
msgstr ""
-#: part/models.py:2346
+#: part/models.py:2362
msgid "Estimated build wastage quantity (absolute or percentage)"
msgstr ""
-#: part/models.py:2349
+#: part/models.py:2365
msgid "BOM item reference"
msgstr ""
-#: part/models.py:2352
+#: part/models.py:2368
msgid "BOM item notes"
msgstr ""
-#: part/models.py:2354
+#: part/models.py:2370
msgid "Checksum"
msgstr ""
-#: part/models.py:2354
+#: part/models.py:2370
msgid "BOM line checksum"
msgstr ""
-#: part/models.py:2358 templates/js/translated/bom.js:315
-#: templates/js/translated/bom.js:322
-#: templates/js/translated/table_filters.js:55
+#: part/models.py:2374 templates/js/translated/bom.js:331
+#: templates/js/translated/bom.js:338
+#: templates/js/translated/table_filters.js:68
msgid "Inherited"
msgstr ""
-#: part/models.py:2359
+#: part/models.py:2375
msgid "This BOM item is inherited by BOMs for variant parts"
msgstr ""
-#: part/models.py:2364 templates/js/translated/bom.js:307
+#: part/models.py:2380 templates/js/translated/bom.js:323
msgid "Allow Variants"
msgstr ""
-#: part/models.py:2365
+#: part/models.py:2381
msgid "Stock items for variant parts can be used for this BOM item"
msgstr ""
-#: part/models.py:2450 stock/models.py:335
+#: part/models.py:2466 stock/models.py:341
msgid "Quantity must be integer value for trackable parts"
msgstr ""
-#: part/models.py:2459 part/models.py:2461
+#: part/models.py:2475 part/models.py:2477
msgid "Sub part must be specified"
msgstr ""
-#: part/models.py:2464
+#: part/models.py:2480
msgid "BOM Item"
msgstr ""
-#: part/models.py:2583
+#: part/models.py:2599
msgid "Part 1"
msgstr ""
-#: part/models.py:2587
+#: part/models.py:2603
msgid "Part 2"
msgstr ""
-#: part/models.py:2587
+#: part/models.py:2603
msgid "Select Related Part"
msgstr ""
-#: part/models.py:2619
+#: part/models.py:2635
msgid "Error creating relationship: check that the part is not related to itself and that the relationship is unique"
msgstr ""
@@ -4317,17 +4437,17 @@ msgstr ""
#: part/templates/part/bom.html:14
#, python-format
-msgid "The BOM for %(part)s has changed, and must be validated.
"
+msgid "The BOM for %(part)s has changed, and must be validated.
"
msgstr ""
#: part/templates/part/bom.html:16
#, python-format
-msgid "The BOM for %(part)s was last checked by %(checker)s on %(check_date)s"
+msgid "The BOM for %(part)s was last checked by %(checker)s on %(check_date)s"
msgstr ""
#: part/templates/part/bom.html:20
#, python-format
-msgid "The BOM for %(part)s has not been validated."
+msgid "The BOM for %(part)s has not been validated."
msgstr ""
#: part/templates/part/bom.html:27
@@ -4374,33 +4494,34 @@ msgstr ""
msgid "Select Part"
msgstr ""
-#: part/templates/part/bom_upload/upload_file.html:7
-msgid "Upload BOM File"
+#: part/templates/part/bom_upload/upload_file.html:13
+#: part/templates/part/bom_upload/upload_file.html:16
+msgid "Return To BOM"
msgstr ""
-#: part/templates/part/bom_upload/upload_file.html:12
+#: part/templates/part/bom_upload/upload_file.html:27
msgid "Upload Bill of Materials"
msgstr ""
-#: part/templates/part/bom_upload/upload_file.html:16
+#: part/templates/part/bom_upload/upload_file.html:46
msgid "Requirements for BOM upload"
msgstr ""
-#: part/templates/part/bom_upload/upload_file.html:18
+#: part/templates/part/bom_upload/upload_file.html:48
msgid "The BOM file must contain the required named columns as provided in the "
msgstr ""
-#: part/templates/part/bom_upload/upload_file.html:18
+#: part/templates/part/bom_upload/upload_file.html:48
msgid "BOM Upload Template"
msgstr ""
-#: part/templates/part/bom_upload/upload_file.html:19
+#: part/templates/part/bom_upload/upload_file.html:49
msgid "Each part must already exist in the database"
msgstr ""
#: part/templates/part/bom_validate.html:6
#, python-format
-msgid "Confirm that the Bill of Materials (BOM) is valid for:
%(part)s"
+msgid "Confirm that the Bill of Materials (BOM) is valid for:
%(part)s"
msgstr ""
#: part/templates/part/bom_validate.html:9
@@ -4435,7 +4556,7 @@ msgstr ""
msgid "Category Description"
msgstr ""
-#: part/templates/part/category.html:88 part/templates/part/category.html:174
+#: part/templates/part/category.html:88 part/templates/part/category.html:175
#: part/templates/part/category_navbar.html:14
#: part/templates/part/category_navbar.html:17
msgid "Subcategories"
@@ -4449,7 +4570,7 @@ msgstr ""
msgid "Export Part Data"
msgstr ""
-#: part/templates/part/category.html:127 part/templates/part/category.html:141
+#: part/templates/part/category.html:127 part/templates/part/category.html:142
msgid "Export"
msgstr ""
@@ -4470,26 +4591,30 @@ msgid "Set Category"
msgstr ""
#: part/templates/part/category.html:141
+msgid "Print Labels"
+msgstr ""
+
+#: part/templates/part/category.html:142
msgid "Export Data"
msgstr ""
-#: part/templates/part/category.html:145
+#: part/templates/part/category.html:146
msgid "View list display"
msgstr ""
-#: part/templates/part/category.html:148
+#: part/templates/part/category.html:149
msgid "View grid display"
msgstr ""
-#: part/templates/part/category.html:164
+#: part/templates/part/category.html:165
msgid "Part Parameters"
msgstr ""
-#: part/templates/part/category.html:253
+#: part/templates/part/category.html:254
msgid "Create Part Category"
msgstr ""
-#: part/templates/part/category.html:279
+#: part/templates/part/category.html:281
msgid "Create Part"
msgstr ""
@@ -4533,7 +4658,7 @@ msgstr ""
msgid "Import Parts"
msgstr ""
-#: part/templates/part/copy_part.html:9 templates/js/translated/part.js:224
+#: part/templates/part/copy_part.html:9 templates/js/translated/part.js:352
msgid "Duplicate Part"
msgstr ""
@@ -4554,7 +4679,7 @@ msgstr ""
#: part/templates/part/create_part.html:17
#, python-format
-msgid "%(full_name)s - %(desc)s (%(match_per)s%% match)"
+msgid "%(full_name)s - %(desc)s (%(match_per)s%% match)"
msgstr ""
#: part/templates/part/detail.html:16
@@ -4563,10 +4688,10 @@ msgstr ""
#: part/templates/part/detail.html:21
#, python-format
-msgid "Showing stock for all variants of %(full_name)s"
+msgid "Showing stock for all variants of %(full_name)s"
msgstr ""
-#: part/templates/part/detail.html:30 part/templates/part/navbar.html:87
+#: part/templates/part/detail.html:30 part/templates/part/navbar.html:99
msgid "Part Test Templates"
msgstr ""
@@ -4586,7 +4711,7 @@ msgstr ""
msgid "Sales Order Allocations"
msgstr ""
-#: part/templates/part/detail.html:130 part/templates/part/navbar.html:21
+#: part/templates/part/detail.html:130 part/templates/part/navbar.html:27
msgid "Part Variants"
msgstr ""
@@ -4602,8 +4727,8 @@ msgstr ""
msgid "Add new parameter"
msgstr ""
-#: part/templates/part/detail.html:182 part/templates/part/navbar.html:95
-#: part/templates/part/navbar.html:98
+#: part/templates/part/detail.html:182 part/templates/part/navbar.html:107
+#: part/templates/part/navbar.html:110
msgid "Related Parts"
msgstr ""
@@ -4611,8 +4736,8 @@ msgstr ""
msgid "Add Related"
msgstr ""
-#: part/templates/part/detail.html:228 part/templates/part/navbar.html:35
-#: part/templates/part/navbar.html:38
+#: part/templates/part/detail.html:228 part/templates/part/navbar.html:43
+#: part/templates/part/navbar.html:46
msgid "Bill of Materials"
msgstr ""
@@ -4644,50 +4769,50 @@ msgstr ""
msgid "Delete manufacturer parts"
msgstr ""
-#: part/templates/part/detail.html:402
+#: part/templates/part/detail.html:502
msgid "Delete selected BOM items?"
msgstr ""
-#: part/templates/part/detail.html:403
+#: part/templates/part/detail.html:503
msgid "All selected BOM items will be deleted"
msgstr ""
-#: part/templates/part/detail.html:454
+#: part/templates/part/detail.html:554
msgid "Create BOM Item"
msgstr ""
-#: part/templates/part/detail.html:589
+#: part/templates/part/detail.html:699
msgid "Add Test Result Template"
msgstr ""
-#: part/templates/part/detail.html:607
+#: part/templates/part/detail.html:716
msgid "Edit Test Result Template"
msgstr ""
-#: part/templates/part/detail.html:619
+#: part/templates/part/detail.html:728
msgid "Delete Test Result Template"
msgstr ""
-#: part/templates/part/detail.html:670
+#: part/templates/part/detail.html:784
msgid "Edit Part Notes"
msgstr ""
-#: part/templates/part/detail.html:903
+#: part/templates/part/detail.html:936
#, python-format
msgid "Purchase Unit Price - %(currency)s"
msgstr ""
-#: part/templates/part/detail.html:915
+#: part/templates/part/detail.html:948
#, python-format
msgid "Unit Price-Cost Difference - %(currency)s"
msgstr ""
-#: part/templates/part/detail.html:927
+#: part/templates/part/detail.html:960
#, python-format
msgid "Supplier Unit Cost - %(currency)s"
msgstr ""
-#: part/templates/part/detail.html:1016
+#: part/templates/part/detail.html:1049
#, python-format
msgid "Unit Price - %(currency)s"
msgstr ""
@@ -4701,19 +4826,19 @@ msgstr ""
msgid "Import Parts from File"
msgstr ""
-#: part/templates/part/navbar.html:24
+#: part/templates/part/navbar.html:30
msgid "Variants"
msgstr ""
-#: part/templates/part/navbar.html:51 part/templates/part/navbar.html:54
+#: part/templates/part/navbar.html:59 part/templates/part/navbar.html:62
msgid "Used In"
msgstr ""
-#: part/templates/part/navbar.html:61
+#: part/templates/part/navbar.html:70
msgid "Prices"
msgstr ""
-#: part/templates/part/navbar.html:90
+#: part/templates/part/navbar.html:102
msgid "Test Templates"
msgstr ""
@@ -4721,195 +4846,204 @@ msgstr ""
msgid "Part List"
msgstr ""
-#: part/templates/part/part_base.html:30
+#: part/templates/part/part_base.html:35
msgid "Part is a template part (variants can be made from this part)"
msgstr ""
-#: part/templates/part/part_base.html:33
+#: part/templates/part/part_base.html:38
msgid "Part can be assembled from other parts"
msgstr ""
-#: part/templates/part/part_base.html:36
+#: part/templates/part/part_base.html:41
msgid "Part can be used in assemblies"
msgstr ""
-#: part/templates/part/part_base.html:39
+#: part/templates/part/part_base.html:44
msgid "Part stock is tracked by serial number"
msgstr ""
-#: part/templates/part/part_base.html:42
+#: part/templates/part/part_base.html:47
msgid "Part can be purchased from external suppliers"
msgstr ""
-#: part/templates/part/part_base.html:45
+#: part/templates/part/part_base.html:50
msgid "Part can be sold to customers"
msgstr ""
-#: part/templates/part/part_base.html:52 part/templates/part/part_base.html:60
+#: part/templates/part/part_base.html:57 part/templates/part/part_base.html:65
msgid "Part is virtual (not a physical part)"
msgstr ""
-#: part/templates/part/part_base.html:53 templates/js/translated/company.js:454
-#: templates/js/translated/company.js:704 templates/js/translated/part.js:304
-#: templates/js/translated/part.js:381
+#: part/templates/part/part_base.html:58 templates/js/translated/company.js:503
+#: templates/js/translated/company.js:759 templates/js/translated/part.js:432
+#: templates/js/translated/part.js:509
msgid "Inactive"
msgstr ""
-#: part/templates/part/part_base.html:68
+#: part/templates/part/part_base.html:73
msgid "Star this part"
msgstr ""
-#: part/templates/part/part_base.html:75
+#: part/templates/part/part_base.html:80
#: stock/templates/stock/item_base.html:75
#: stock/templates/stock/location.html:51
msgid "Barcode actions"
msgstr ""
-#: part/templates/part/part_base.html:77
+#: part/templates/part/part_base.html:82
#: stock/templates/stock/item_base.html:77
#: stock/templates/stock/location.html:53 templates/qr_button.html:1
msgid "Show QR Code"
msgstr ""
-#: part/templates/part/part_base.html:78
+#: part/templates/part/part_base.html:83
#: stock/templates/stock/item_base.html:93
#: stock/templates/stock/location.html:54
msgid "Print Label"
msgstr ""
-#: part/templates/part/part_base.html:83
+#: part/templates/part/part_base.html:89
msgid "Show pricing information"
msgstr ""
-#: part/templates/part/part_base.html:88
+#: part/templates/part/part_base.html:95
#: stock/templates/stock/item_base.html:142
#: stock/templates/stock/location.html:62
msgid "Stock actions"
msgstr ""
-#: part/templates/part/part_base.html:95
+#: part/templates/part/part_base.html:102
msgid "Count part stock"
msgstr ""
-#: part/templates/part/part_base.html:101
+#: part/templates/part/part_base.html:108
msgid "Transfer part stock"
msgstr ""
-#: part/templates/part/part_base.html:118
+#: part/templates/part/part_base.html:125
msgid "Part actions"
msgstr ""
-#: part/templates/part/part_base.html:121
+#: part/templates/part/part_base.html:128
msgid "Duplicate part"
msgstr ""
-#: part/templates/part/part_base.html:124
+#: part/templates/part/part_base.html:131
msgid "Edit part"
msgstr ""
-#: part/templates/part/part_base.html:127
+#: part/templates/part/part_base.html:134
msgid "Delete part"
msgstr ""
-#: part/templates/part/part_base.html:139
+#: part/templates/part/part_base.html:146
#, python-format
msgid "This part is a variant of %(link)s"
msgstr ""
-#: part/templates/part/part_base.html:154
-#: templates/js/translated/table_filters.js:153
+#: part/templates/part/part_base.html:161
+#: templates/js/translated/table_filters.js:166
msgid "In Stock"
msgstr ""
-#: part/templates/part/part_base.html:167 templates/InvenTree/index.html:186
+#: part/templates/part/part_base.html:174 templates/InvenTree/index.html:186
msgid "Required for Build Orders"
msgstr ""
-#: part/templates/part/part_base.html:174
+#: part/templates/part/part_base.html:181
msgid "Required for Sales Orders"
msgstr ""
-#: part/templates/part/part_base.html:181
+#: part/templates/part/part_base.html:188
msgid "Allocated to Orders"
msgstr ""
-#: part/templates/part/part_base.html:196 templates/js/translated/bom.js:336
+#: part/templates/part/part_base.html:203 templates/js/translated/bom.js:352
msgid "Can Build"
msgstr ""
-#: part/templates/part/part_base.html:202 templates/js/translated/part.js:633
-#: templates/js/translated/part.js:806
+#: part/templates/part/part_base.html:209 templates/js/translated/part.js:765
+#: templates/js/translated/part.js:953
msgid "Building"
msgstr ""
-#: part/templates/part/part_base.html:275
+#: part/templates/part/part_base.html:223
+#: part/templates/part/part_base.html:524
+#: part/templates/part/part_base.html:550
+msgid "Show Part Details"
+msgstr ""
+
+#: part/templates/part/part_base.html:283
msgid "Latest Serial Number"
msgstr ""
-#: part/templates/part/part_base.html:383 part/templates/part/prices.html:125
+#: part/templates/part/part_base.html:396 part/templates/part/prices.html:144
msgid "Calculate"
msgstr ""
-#: part/templates/part/part_base.html:426
+#: part/templates/part/part_base.html:439
msgid "No matching images found"
msgstr ""
-#: part/templates/part/part_base.html:506
-#: part/templates/part/part_base.html:531
+#: part/templates/part/part_base.html:519
+#: part/templates/part/part_base.html:544
msgid "Hide Part Details"
msgstr ""
-#: part/templates/part/part_base.html:511
-#: part/templates/part/part_base.html:537
-msgid "Show Part Details"
-msgstr ""
-
#: part/templates/part/part_pricing.html:22 part/templates/part/prices.html:21
msgid "Supplier Pricing"
msgstr ""
#: part/templates/part/part_pricing.html:26
#: part/templates/part/part_pricing.html:52
-#: part/templates/part/part_pricing.html:85
-#: part/templates/part/part_pricing.html:100 part/templates/part/prices.html:25
-#: part/templates/part/prices.html:52 part/templates/part/prices.html:84
-#: part/templates/part/prices.html:101
+#: part/templates/part/part_pricing.html:100
+#: part/templates/part/part_pricing.html:115 part/templates/part/prices.html:25
+#: part/templates/part/prices.html:52 part/templates/part/prices.html:103
+#: part/templates/part/prices.html:120
msgid "Unit Cost"
msgstr ""
#: part/templates/part/part_pricing.html:32
#: part/templates/part/part_pricing.html:58
-#: part/templates/part/part_pricing.html:89
-#: part/templates/part/part_pricing.html:104 part/templates/part/prices.html:32
-#: part/templates/part/prices.html:59 part/templates/part/prices.html:89
-#: part/templates/part/prices.html:106
+#: part/templates/part/part_pricing.html:104
+#: part/templates/part/part_pricing.html:119 part/templates/part/prices.html:32
+#: part/templates/part/prices.html:59 part/templates/part/prices.html:108
+#: part/templates/part/prices.html:125
msgid "Total Cost"
msgstr ""
#: part/templates/part/part_pricing.html:40 part/templates/part/prices.html:40
-#: templates/js/translated/bom.js:291
+#: templates/js/translated/bom.js:307
msgid "No supplier pricing available"
msgstr ""
#: part/templates/part/part_pricing.html:48 part/templates/part/prices.html:49
-#: part/templates/part/prices.html:225
+#: part/templates/part/prices.html:243
msgid "BOM Pricing"
msgstr ""
-#: part/templates/part/part_pricing.html:66 part/templates/part/prices.html:67
+#: part/templates/part/part_pricing.html:65 part/templates/part/prices.html:69
+msgid "Unit Purchase Price"
+msgstr ""
+
+#: part/templates/part/part_pricing.html:71 part/templates/part/prices.html:76
+msgid "Total Purchase Price"
+msgstr ""
+
+#: part/templates/part/part_pricing.html:81 part/templates/part/prices.html:86
msgid "Note: BOM pricing is incomplete for this part"
msgstr ""
-#: part/templates/part/part_pricing.html:73 part/templates/part/prices.html:74
+#: part/templates/part/part_pricing.html:88 part/templates/part/prices.html:93
msgid "No BOM pricing available"
msgstr ""
-#: part/templates/part/part_pricing.html:82 part/templates/part/prices.html:83
+#: part/templates/part/part_pricing.html:97 part/templates/part/prices.html:102
msgid "Internal Price"
msgstr ""
-#: part/templates/part/part_pricing.html:113
-#: part/templates/part/prices.html:115
+#: part/templates/part/part_pricing.html:128
+#: part/templates/part/prices.html:134
msgid "No pricing information is available for this part."
msgstr ""
@@ -4919,7 +5053,7 @@ msgstr ""
#: part/templates/part/partial_delete.html:7
#, python-format
-msgid "Are you sure you want to delete part '%(full_name)s'?"
+msgid "Are you sure you want to delete part '%(full_name)s'?"
msgstr ""
#: part/templates/part/partial_delete.html:12
@@ -4963,53 +5097,53 @@ msgstr ""
msgid "Show BOM cost"
msgstr ""
-#: part/templates/part/prices.html:98
+#: part/templates/part/prices.html:117
msgid "Show sale cost"
msgstr ""
-#: part/templates/part/prices.html:99
+#: part/templates/part/prices.html:118
msgid "Show sale price"
msgstr ""
-#: part/templates/part/prices.html:121
+#: part/templates/part/prices.html:140
msgid "Calculation parameters"
msgstr ""
-#: part/templates/part/prices.html:136 templates/js/translated/bom.js:285
+#: part/templates/part/prices.html:155 templates/js/translated/bom.js:301
msgid "Supplier Cost"
msgstr ""
-#: part/templates/part/prices.html:137 part/templates/part/prices.html:158
-#: part/templates/part/prices.html:183 part/templates/part/prices.html:213
-#: part/templates/part/prices.html:239 part/templates/part/prices.html:267
+#: part/templates/part/prices.html:156 part/templates/part/prices.html:177
+#: part/templates/part/prices.html:201 part/templates/part/prices.html:231
+#: part/templates/part/prices.html:257 part/templates/part/prices.html:285
msgid "Jump to overview"
msgstr ""
-#: part/templates/part/prices.html:162
+#: part/templates/part/prices.html:181
msgid "Stock Pricing"
msgstr ""
-#: part/templates/part/prices.html:172
+#: part/templates/part/prices.html:190
msgid "No stock pricing history is available for this part."
msgstr ""
-#: part/templates/part/prices.html:182
+#: part/templates/part/prices.html:200
msgid "Internal Cost"
msgstr ""
-#: part/templates/part/prices.html:197 part/views.py:1793
+#: part/templates/part/prices.html:215 part/views.py:1801
msgid "Add Internal Price Break"
msgstr ""
-#: part/templates/part/prices.html:212
+#: part/templates/part/prices.html:230
msgid "BOM Cost"
msgstr ""
-#: part/templates/part/prices.html:238
+#: part/templates/part/prices.html:256
msgid "Sale Cost"
msgstr ""
-#: part/templates/part/prices.html:278
+#: part/templates/part/prices.html:296
msgid "No sale pice history available for this part."
msgstr ""
@@ -5017,8 +5151,8 @@ msgstr ""
msgid "Set category for the following parts"
msgstr ""
-#: part/templates/part/stock_count.html:7 templates/js/translated/bom.js:259
-#: templates/js/translated/part.js:623 templates/js/translated/part.js:810
+#: part/templates/part/stock_count.html:7 templates/js/translated/bom.js:278
+#: templates/js/translated/part.js:755 templates/js/translated/part.js:957
msgid "No Stock"
msgstr ""
@@ -5032,10 +5166,10 @@ msgstr ""
#: part/templates/part/variant_part.html:10
#, python-format
-msgid "Create a new variant of template '%(full_name)s'."
+msgid "Create a new variant of template '%(full_name)s'."
msgstr ""
-#: part/templatetags/inventree_extras.py:105
+#: part/templatetags/inventree_extras.py:106
msgid "Unknown database"
msgstr ""
@@ -5116,51 +5250,51 @@ msgstr ""
msgid "Part Pricing"
msgstr ""
-#: part/views.py:1429
+#: part/views.py:1437
msgid "Create Part Parameter Template"
msgstr ""
-#: part/views.py:1439
+#: part/views.py:1447
msgid "Edit Part Parameter Template"
msgstr ""
-#: part/views.py:1446
+#: part/views.py:1454
msgid "Delete Part Parameter Template"
msgstr ""
-#: part/views.py:1494 templates/js/translated/part.js:179
+#: part/views.py:1502 templates/js/translated/part.js:303
msgid "Edit Part Category"
msgstr ""
-#: part/views.py:1532
+#: part/views.py:1540
msgid "Delete Part Category"
msgstr ""
-#: part/views.py:1538
+#: part/views.py:1546
msgid "Part category was deleted"
msgstr ""
-#: part/views.py:1547
+#: part/views.py:1555
msgid "Create Category Parameter Template"
msgstr ""
-#: part/views.py:1648
+#: part/views.py:1656
msgid "Edit Category Parameter Template"
msgstr ""
-#: part/views.py:1704
+#: part/views.py:1712
msgid "Delete Category Parameter Template"
msgstr ""
-#: part/views.py:1726
+#: part/views.py:1734
msgid "Added new price break"
msgstr ""
-#: part/views.py:1802
+#: part/views.py:1810
msgid "Edit Internal Price Break"
msgstr ""
-#: part/views.py:1810
+#: part/views.py:1818
msgid "Delete Internal Price Break"
msgstr ""
@@ -5266,17 +5400,17 @@ msgid "Test Results"
msgstr ""
#: report/templates/report/inventree_test_report_base.html:88
-#: stock/models.py:1796
+#: stock/models.py:1807
msgid "Test"
msgstr ""
#: report/templates/report/inventree_test_report_base.html:89
-#: stock/models.py:1802
+#: stock/models.py:1813
msgid "Result"
msgstr ""
#: report/templates/report/inventree_test_report_base.html:92
-#: templates/js/translated/order.js:279 templates/js/translated/stock.js:1382
+#: templates/js/translated/order.js:353 templates/js/translated/stock.js:1523
msgid "Date"
msgstr ""
@@ -5288,51 +5422,51 @@ msgstr ""
msgid "Fail"
msgstr ""
-#: stock/api.py:145
+#: stock/api.py:146
msgid "Request must contain list of stock items"
msgstr ""
-#: stock/api.py:153
+#: stock/api.py:154
msgid "Improperly formatted data"
msgstr ""
-#: stock/api.py:161
+#: stock/api.py:162
msgid "Each entry must contain a valid integer primary-key"
msgstr ""
-#: stock/api.py:167
+#: stock/api.py:168
msgid "Primary key does not match valid stock item"
msgstr ""
-#: stock/api.py:177
+#: stock/api.py:178
msgid "Invalid quantity value"
msgstr ""
-#: stock/api.py:182
+#: stock/api.py:183
msgid "Quantity must not be less than zero"
msgstr ""
-#: stock/api.py:210
+#: stock/api.py:211
#, python-brace-format
msgid "Updated stock for {n} items"
msgstr ""
-#: stock/api.py:246 stock/api.py:279
+#: stock/api.py:247 stock/api.py:280
msgid "Specified quantity exceeds stock quantity"
msgstr ""
-#: stock/api.py:269
+#: stock/api.py:270
msgid "Valid location must be specified"
msgstr ""
-#: stock/api.py:289
+#: stock/api.py:290
#, python-brace-format
msgid "Moved {n} parts to {loc}"
msgstr ""
-#: stock/forms.py:79 stock/forms.py:307 stock/models.py:550
+#: stock/forms.py:79 stock/forms.py:307 stock/models.py:556
#: stock/templates/stock/item_base.html:395
-#: templates/js/translated/stock.js:1025
+#: templates/js/translated/stock.js:967
msgid "Expiry Date"
msgstr ""
@@ -5384,258 +5518,266 @@ msgstr ""
msgid "Confirm removal of installed stock items"
msgstr ""
-#: stock/models.py:57 stock/models.py:587
+#: stock/models.py:57 stock/models.py:593
msgid "Owner"
msgstr ""
-#: stock/models.py:58 stock/models.py:588
+#: stock/models.py:58 stock/models.py:594
msgid "Select Owner"
msgstr ""
-#: stock/models.py:316
+#: stock/models.py:322
msgid "StockItem with this serial number already exists"
msgstr ""
-#: stock/models.py:352
+#: stock/models.py:358
#, python-brace-format
msgid "Part type ('{pf}') must be {pe}"
msgstr ""
-#: stock/models.py:362 stock/models.py:371
+#: stock/models.py:368 stock/models.py:377
msgid "Quantity must be 1 for item with a serial number"
msgstr ""
-#: stock/models.py:363
+#: stock/models.py:369
msgid "Serial number cannot be set if quantity greater than 1"
msgstr ""
-#: stock/models.py:385
+#: stock/models.py:391
msgid "Item cannot belong to itself"
msgstr ""
-#: stock/models.py:391
+#: stock/models.py:397
msgid "Item must have a build reference if is_building=True"
msgstr ""
-#: stock/models.py:398
+#: stock/models.py:404
msgid "Build reference does not point to the same part object"
msgstr ""
-#: stock/models.py:440
+#: stock/models.py:446
msgid "Parent Stock Item"
msgstr ""
-#: stock/models.py:449
+#: stock/models.py:455
msgid "Base part"
msgstr ""
-#: stock/models.py:458
+#: stock/models.py:464
msgid "Select a matching supplier part for this stock item"
msgstr ""
-#: stock/models.py:463 stock/templates/stock/stock_app_base.html:8
+#: stock/models.py:469 stock/templates/stock/stock_app_base.html:8
msgid "Stock Location"
msgstr ""
-#: stock/models.py:466
+#: stock/models.py:472
msgid "Where is this stock item located?"
msgstr ""
-#: stock/models.py:473
+#: stock/models.py:479
msgid "Packaging this stock item is stored in"
msgstr ""
-#: stock/models.py:478 stock/templates/stock/item_base.html:284
+#: stock/models.py:484 stock/templates/stock/item_base.html:284
msgid "Installed In"
msgstr ""
-#: stock/models.py:481
+#: stock/models.py:487
msgid "Is this item installed in another item?"
msgstr ""
-#: stock/models.py:497
+#: stock/models.py:503
msgid "Serial number for this item"
msgstr ""
-#: stock/models.py:509
+#: stock/models.py:515
msgid "Batch code for this stock item"
msgstr ""
-#: stock/models.py:513
+#: stock/models.py:519
msgid "Stock Quantity"
msgstr ""
-#: stock/models.py:522
+#: stock/models.py:528
msgid "Source Build"
msgstr ""
-#: stock/models.py:524
+#: stock/models.py:530
msgid "Build for this stock item"
msgstr ""
-#: stock/models.py:535
+#: stock/models.py:541
msgid "Source Purchase Order"
msgstr ""
-#: stock/models.py:538
+#: stock/models.py:544
msgid "Purchase order for this stock item"
msgstr ""
-#: stock/models.py:544
+#: stock/models.py:550
msgid "Destination Sales Order"
msgstr ""
-#: stock/models.py:551
+#: stock/models.py:557
msgid "Expiry date for stock item. Stock will be considered expired after this date"
msgstr ""
-#: stock/models.py:564
+#: stock/models.py:570
msgid "Delete on deplete"
msgstr ""
-#: stock/models.py:564
+#: stock/models.py:570
msgid "Delete this Stock Item when stock is depleted"
msgstr ""
-#: stock/models.py:574 stock/templates/stock/item.html:98
+#: stock/models.py:580 stock/templates/stock/item.html:99
#: stock/templates/stock/navbar.html:54
msgid "Stock Item Notes"
msgstr ""
-#: stock/models.py:583
+#: stock/models.py:589
msgid "Single unit purchase price at time of purchase"
msgstr ""
-#: stock/models.py:1051
-msgid "Part is not set as trackable"
+#: stock/models.py:599
+msgid "Scheduled for deletion"
msgstr ""
-#: stock/models.py:1057
-msgid "Quantity must be integer"
+#: stock/models.py:600
+msgid "This StockItem will be deleted by the background worker"
msgstr ""
#: stock/models.py:1063
+msgid "Part is not set as trackable"
+msgstr ""
+
+#: stock/models.py:1069
+msgid "Quantity must be integer"
+msgstr ""
+
+#: stock/models.py:1075
#, python-brace-format
msgid "Quantity must not exceed available stock quantity ({n})"
msgstr ""
-#: stock/models.py:1066
+#: stock/models.py:1078
msgid "Serial numbers must be a list of integers"
msgstr ""
-#: stock/models.py:1069
+#: stock/models.py:1081
msgid "Quantity does not match serial numbers"
msgstr ""
-#: stock/models.py:1076
+#: stock/models.py:1088
#, python-brace-format
msgid "Serial numbers already exist: {exists}"
msgstr ""
-#: stock/models.py:1234
+#: stock/models.py:1246
msgid "StockItem cannot be moved as it is not in stock"
msgstr ""
-#: stock/models.py:1716
+#: stock/models.py:1727
msgid "Entry notes"
msgstr ""
-#: stock/models.py:1773
+#: stock/models.py:1784
msgid "Value must be provided for this test"
msgstr ""
-#: stock/models.py:1779
+#: stock/models.py:1790
msgid "Attachment must be uploaded for this test"
msgstr ""
-#: stock/models.py:1797
+#: stock/models.py:1808
msgid "Test name"
msgstr ""
-#: stock/models.py:1803 templates/js/translated/table_filters.js:231
+#: stock/models.py:1814 templates/js/translated/table_filters.js:244
msgid "Test result"
msgstr ""
-#: stock/models.py:1809
+#: stock/models.py:1820
msgid "Test output value"
msgstr ""
-#: stock/models.py:1816
+#: stock/models.py:1827
msgid "Test result attachment"
msgstr ""
-#: stock/models.py:1822
+#: stock/models.py:1833
msgid "Test notes"
msgstr ""
-#: stock/templates/stock/item.html:16
+#: stock/templates/stock/item.html:17
msgid "Stock Tracking Information"
msgstr ""
-#: stock/templates/stock/item.html:29
+#: stock/templates/stock/item.html:30
msgid "New Entry"
msgstr ""
-#: stock/templates/stock/item.html:42
+#: stock/templates/stock/item.html:43
msgid "Child Stock Items"
msgstr ""
-#: stock/templates/stock/item.html:49
+#: stock/templates/stock/item.html:50
msgid "This stock item does not have any child items"
msgstr ""
-#: stock/templates/stock/item.html:57 stock/templates/stock/navbar.html:19
+#: stock/templates/stock/item.html:58 stock/templates/stock/navbar.html:19
#: stock/templates/stock/navbar.html:22
msgid "Test Data"
msgstr ""
-#: stock/templates/stock/item.html:65
+#: stock/templates/stock/item.html:66
msgid "Delete Test Data"
msgstr ""
-#: stock/templates/stock/item.html:69
+#: stock/templates/stock/item.html:70
msgid "Add Test Data"
msgstr ""
-#: stock/templates/stock/item.html:72 stock/templates/stock/item_base.html:95
+#: stock/templates/stock/item.html:73 stock/templates/stock/item_base.html:95
msgid "Test Report"
msgstr ""
-#: stock/templates/stock/item.html:119 stock/templates/stock/navbar.html:27
+#: stock/templates/stock/item.html:120 stock/templates/stock/navbar.html:27
msgid "Installed Stock Items"
msgstr ""
-#: stock/templates/stock/item.html:124 stock/views.py:534
+#: stock/templates/stock/item.html:125 stock/views.py:534
msgid "Install Stock Item"
msgstr ""
-#: stock/templates/stock/item.html:299 stock/templates/stock/item.html:324
+#: stock/templates/stock/item.html:301 stock/templates/stock/item.html:326
msgid "Add Test Result"
msgstr ""
-#: stock/templates/stock/item.html:344
+#: stock/templates/stock/item.html:346
msgid "Edit Test Result"
msgstr ""
-#: stock/templates/stock/item.html:358
+#: stock/templates/stock/item.html:360
msgid "Delete Test Result"
msgstr ""
#: stock/templates/stock/item_base.html:33
#: stock/templates/stock/item_base.html:399
-#: templates/js/translated/table_filters.js:212
+#: templates/js/translated/table_filters.js:225
msgid "Expired"
msgstr ""
#: stock/templates/stock/item_base.html:43
#: stock/templates/stock/item_base.html:401
-#: templates/js/translated/table_filters.js:218
+#: templates/js/translated/table_filters.js:231
msgid "Stale"
msgstr ""
#: stock/templates/stock/item_base.html:80
-#: templates/js/translated/barcode.js:309
-#: templates/js/translated/barcode.js:314
+#: templates/js/translated/barcode.js:331
+#: templates/js/translated/barcode.js:336
msgid "Unlink Barcode"
msgstr ""
@@ -5768,7 +5910,7 @@ msgid "next page"
msgstr ""
#: stock/templates/stock/item_base.html:303
-#: templates/js/translated/build.js:628
+#: templates/js/translated/build.js:651
msgid "No location set"
msgstr ""
@@ -5795,7 +5937,7 @@ msgid "This StockItem expires on %(item.expiry_date)s"
msgstr ""
#: stock/templates/stock/item_base.html:408
-#: templates/js/translated/stock.js:1032
+#: templates/js/translated/stock.js:980
msgid "Last Updated"
msgstr ""
@@ -5825,7 +5967,7 @@ msgstr ""
#: stock/templates/stock/item_delete.html:12
#, python-format
-msgid "This will remove %(qty)s units of %(full_name)s from stock."
+msgid "This will remove %(qty)s units of %(full_name)s from stock."
msgstr ""
#: stock/templates/stock/item_install.html:8
@@ -5975,7 +6117,7 @@ msgstr ""
#: stock/templates/stock/stockitem_convert.html:8
#, python-format
-msgid "This stock item is current an instance of %(part)s"
+msgid "This stock item is current an instance of %(part)s"
msgstr ""
#: stock/templates/stock/stockitem_convert.html:9
@@ -6039,7 +6181,7 @@ msgstr ""
msgid "Uninstall Stock Items"
msgstr ""
-#: stock/views.py:780 templates/js/translated/stock.js:282
+#: stock/views.py:780 templates/js/translated/stock.js:353
msgid "Confirm stock adjustment"
msgstr ""
@@ -6059,7 +6201,7 @@ msgstr ""
msgid "Serialize Stock"
msgstr ""
-#: stock/views.py:1143 templates/js/translated/build.js:365
+#: stock/views.py:1143 templates/js/translated/build.js:392
msgid "Create new Stock Item"
msgstr ""
@@ -6171,11 +6313,11 @@ msgstr ""
msgid "Enter a search query"
msgstr ""
-#: templates/InvenTree/search.html:268 templates/js/translated/stock.js:629
+#: templates/InvenTree/search.html:268 templates/js/translated/stock.js:699
msgid "Shipped to customer"
msgstr ""
-#: templates/InvenTree/search.html:271 templates/js/translated/stock.js:639
+#: templates/InvenTree/search.html:271 templates/js/translated/stock.js:709
msgid "No stock location set"
msgstr ""
@@ -6240,7 +6382,7 @@ msgstr ""
#: templates/InvenTree/settings/navbar.html:27
#: templates/InvenTree/settings/navbar.html:29
-#: templates/js/translated/tables.js:351 templates/search_form.html:6
+#: templates/js/translated/tables.js:366 templates/search_form.html:6
#: templates/search_form.html:8
msgid "Search"
msgstr ""
@@ -6257,7 +6399,7 @@ msgstr ""
#: templates/InvenTree/settings/navbar.html:46
#: templates/InvenTree/settings/navbar.html:48
-#: templates/InvenTree/settings/settings.html:8 templates/navbar.html:84
+#: templates/InvenTree/settings/settings.html:8 templates/navbar.html:94
msgid "Settings"
msgstr ""
@@ -6332,16 +6474,16 @@ msgid "No category parameter templates found"
msgstr ""
#: templates/InvenTree/settings/settings.html:174
-#: templates/InvenTree/settings/settings.html:271
+#: templates/InvenTree/settings/settings.html:273
msgid "Edit Template"
msgstr ""
#: templates/InvenTree/settings/settings.html:175
-#: templates/InvenTree/settings/settings.html:272
+#: templates/InvenTree/settings/settings.html:274
msgid "Delete Template"
msgstr ""
-#: templates/InvenTree/settings/settings.html:251
+#: templates/InvenTree/settings/settings.html:253
msgid "No part parameter templates found"
msgstr ""
@@ -6358,6 +6500,7 @@ msgid "Account Settings"
msgstr ""
#: templates/InvenTree/settings/user.html:15
+#: templates/js/translated/helpers.js:26
msgid "Edit"
msgstr ""
@@ -6436,65 +6579,69 @@ msgstr ""
msgid "InvenTree Version"
msgstr ""
-#: templates/about.html:26
+#: templates/about.html:27
+msgid "Development Version"
+msgstr ""
+
+#: templates/about.html:30
msgid "Up to Date"
msgstr ""
-#: templates/about.html:28
+#: templates/about.html:32
msgid "Update Available"
msgstr ""
-#: templates/about.html:34
-msgid "API Version"
-msgstr ""
-
-#: templates/about.html:39
-msgid "Python Version"
-msgstr ""
-
-#: templates/about.html:44
-msgid "Django Version"
-msgstr ""
-
-#: templates/about.html:51
+#: templates/about.html:42
msgid "Commit Hash"
msgstr ""
-#: templates/about.html:58
+#: templates/about.html:49
msgid "Commit Date"
msgstr ""
-#: templates/about.html:63
+#: templates/about.html:55
msgid "InvenTree Documentation"
msgstr ""
-#: templates/about.html:68
+#: templates/about.html:60
+msgid "API Version"
+msgstr ""
+
+#: templates/about.html:65
+msgid "Python Version"
+msgstr ""
+
+#: templates/about.html:70
+msgid "Django Version"
+msgstr ""
+
+#: templates/about.html:75
msgid "View Code on GitHub"
msgstr ""
-#: templates/about.html:73
+#: templates/about.html:80
msgid "Credits"
msgstr ""
-#: templates/about.html:78
+#: templates/about.html:85
msgid "Mobile App"
msgstr ""
-#: templates/about.html:83
+#: templates/about.html:90
msgid "Submit Bug Report"
msgstr ""
-#: templates/about.html:90 templates/clip.html:4
+#: templates/about.html:97 templates/clip.html:4
msgid "copy to clipboard"
msgstr ""
-#: templates/about.html:90
+#: templates/about.html:97
msgid "copy version information"
msgstr ""
-#: templates/about.html:100 templates/js/translated/modals.js:33
-#: templates/js/translated/modals.js:567 templates/js/translated/modals.js:661
-#: templates/js/translated/modals.js:957 templates/modals.html:29
+#: templates/about.html:107 templates/js/translated/modals.js:50
+#: templates/js/translated/modals.js:584 templates/js/translated/modals.js:678
+#: templates/js/translated/modals.js:971 templates/modals.html:29
#: templates/modals.html:54
msgid "Close"
msgstr ""
@@ -6515,1358 +6662,1390 @@ msgstr ""
msgid "Remote image must not exceed maximum allowable file size"
msgstr ""
-#: templates/js/report.js:47 templates/js/translated/report.js:47
+#: templates/js/report.js:47 templates/js/translated/report.js:67
msgid "items selected"
msgstr ""
-#: templates/js/report.js:55 templates/js/translated/report.js:55
+#: templates/js/report.js:55 templates/js/translated/report.js:75
msgid "Select Report Template"
msgstr ""
-#: templates/js/report.js:70 templates/js/translated/report.js:70
+#: templates/js/report.js:70 templates/js/translated/report.js:90
msgid "Select Test Report Template"
msgstr ""
-#: templates/js/report.js:98 templates/js/translated/label.js:10
-#: templates/js/translated/report.js:98 templates/js/translated/stock.js:244
+#: templates/js/report.js:98 templates/js/translated/label.js:29
+#: templates/js/translated/report.js:118 templates/js/translated/stock.js:313
msgid "Select Stock Items"
msgstr ""
-#: templates/js/report.js:99 templates/js/translated/report.js:99
+#: templates/js/report.js:99 templates/js/translated/report.js:119
msgid "Stock item(s) must be selected before printing reports"
msgstr ""
#: templates/js/report.js:116 templates/js/report.js:169
#: templates/js/report.js:223 templates/js/report.js:277
-#: templates/js/report.js:331 templates/js/translated/report.js:116
-#: templates/js/translated/report.js:169 templates/js/translated/report.js:223
-#: templates/js/translated/report.js:277 templates/js/translated/report.js:331
+#: templates/js/report.js:331 templates/js/translated/report.js:136
+#: templates/js/translated/report.js:189 templates/js/translated/report.js:243
+#: templates/js/translated/report.js:297 templates/js/translated/report.js:351
msgid "No Reports Found"
msgstr ""
-#: templates/js/report.js:117 templates/js/translated/report.js:117
+#: templates/js/report.js:117 templates/js/translated/report.js:137
msgid "No report templates found which match selected stock item(s)"
msgstr ""
-#: templates/js/report.js:152 templates/js/translated/report.js:152
+#: templates/js/report.js:152 templates/js/translated/report.js:172
msgid "Select Builds"
msgstr ""
-#: templates/js/report.js:153 templates/js/translated/report.js:153
+#: templates/js/report.js:153 templates/js/translated/report.js:173
msgid "Build(s) must be selected before printing reports"
msgstr ""
-#: templates/js/report.js:170 templates/js/translated/report.js:170
+#: templates/js/report.js:170 templates/js/translated/report.js:190
msgid "No report templates found which match selected build(s)"
msgstr ""
-#: templates/js/report.js:205 templates/js/translated/label.js:115
-#: templates/js/translated/report.js:205
+#: templates/js/report.js:205 templates/js/translated/label.js:134
+#: templates/js/translated/report.js:225
msgid "Select Parts"
msgstr ""
-#: templates/js/report.js:206 templates/js/translated/report.js:206
+#: templates/js/report.js:206 templates/js/translated/report.js:226
msgid "Part(s) must be selected before printing reports"
msgstr ""
-#: templates/js/report.js:224 templates/js/translated/report.js:224
+#: templates/js/report.js:224 templates/js/translated/report.js:244
msgid "No report templates found which match selected part(s)"
msgstr ""
-#: templates/js/report.js:259 templates/js/translated/report.js:259
+#: templates/js/report.js:259 templates/js/translated/report.js:279
msgid "Select Purchase Orders"
msgstr ""
-#: templates/js/report.js:260 templates/js/translated/report.js:260
+#: templates/js/report.js:260 templates/js/translated/report.js:280
msgid "Purchase Order(s) must be selected before printing report"
msgstr ""
#: templates/js/report.js:278 templates/js/report.js:332
-#: templates/js/translated/report.js:278 templates/js/translated/report.js:332
+#: templates/js/translated/report.js:298 templates/js/translated/report.js:352
msgid "No report templates found which match selected orders"
msgstr ""
-#: templates/js/report.js:313 templates/js/translated/report.js:313
+#: templates/js/report.js:313 templates/js/translated/report.js:333
msgid "Select Sales Orders"
msgstr ""
-#: templates/js/report.js:314 templates/js/translated/report.js:314
+#: templates/js/report.js:314 templates/js/translated/report.js:334
msgid "Sales Order(s) must be selected before printing report"
msgstr ""
-#: templates/js/translated/api.js:161 templates/js/translated/modals.js:1027
+#: templates/js/translated/api.js:174 templates/js/translated/modals.js:1041
msgid "No Response"
msgstr ""
-#: templates/js/translated/api.js:162 templates/js/translated/modals.js:1028
+#: templates/js/translated/api.js:175 templates/js/translated/modals.js:1042
msgid "No response from the InvenTree server"
msgstr ""
-#: templates/js/translated/api.js:167
+#: templates/js/translated/api.js:181
msgid "Error 400: Bad request"
msgstr ""
-#: templates/js/translated/api.js:168
+#: templates/js/translated/api.js:182
msgid "API request returned error code 400"
msgstr ""
-#: templates/js/translated/api.js:171 templates/js/translated/modals.js:1037
+#: templates/js/translated/api.js:186 templates/js/translated/modals.js:1051
msgid "Error 401: Not Authenticated"
msgstr ""
-#: templates/js/translated/api.js:172 templates/js/translated/modals.js:1038
+#: templates/js/translated/api.js:187 templates/js/translated/modals.js:1052
msgid "Authentication credentials not supplied"
msgstr ""
-#: templates/js/translated/api.js:175 templates/js/translated/modals.js:1042
+#: templates/js/translated/api.js:191 templates/js/translated/modals.js:1056
msgid "Error 403: Permission Denied"
msgstr ""
-#: templates/js/translated/api.js:176 templates/js/translated/modals.js:1043
+#: templates/js/translated/api.js:192 templates/js/translated/modals.js:1057
msgid "You do not have the required permissions to access this function"
msgstr ""
-#: templates/js/translated/api.js:179 templates/js/translated/modals.js:1047
+#: templates/js/translated/api.js:196 templates/js/translated/modals.js:1061
msgid "Error 404: Resource Not Found"
msgstr ""
-#: templates/js/translated/api.js:180 templates/js/translated/modals.js:1048
+#: templates/js/translated/api.js:197 templates/js/translated/modals.js:1062
msgid "The requested resource could not be located on the server"
msgstr ""
-#: templates/js/translated/api.js:183 templates/js/translated/modals.js:1052
+#: templates/js/translated/api.js:201 templates/js/translated/modals.js:1066
msgid "Error 408: Timeout"
msgstr ""
-#: templates/js/translated/api.js:184 templates/js/translated/modals.js:1053
+#: templates/js/translated/api.js:202 templates/js/translated/modals.js:1067
msgid "Connection timeout while requesting data from server"
msgstr ""
-#: templates/js/translated/api.js:187
+#: templates/js/translated/api.js:205
msgid "Unhandled Error Code"
msgstr ""
-#: templates/js/translated/api.js:188
+#: templates/js/translated/api.js:206
msgid "Error code"
msgstr ""
-#: templates/js/translated/attachment.js:16
+#: templates/js/translated/attachment.js:27
msgid "No attachments found"
msgstr ""
-#: templates/js/translated/attachment.js:56
+#: templates/js/translated/attachment.js:91
msgid "Upload Date"
msgstr ""
-#: templates/js/translated/attachment.js:69
+#: templates/js/translated/attachment.js:104
msgid "Edit attachment"
msgstr ""
-#: templates/js/translated/attachment.js:76
+#: templates/js/translated/attachment.js:111
msgid "Delete attachment"
msgstr ""
-#: templates/js/translated/barcode.js:8
+#: templates/js/translated/barcode.js:30
msgid "Scan barcode data here using wedge scanner"
msgstr ""
-#: templates/js/translated/barcode.js:10
+#: templates/js/translated/barcode.js:32
msgid "Enter barcode data"
msgstr ""
-#: templates/js/translated/barcode.js:14
+#: templates/js/translated/barcode.js:36
msgid "Barcode"
msgstr ""
-#: templates/js/translated/barcode.js:32
+#: templates/js/translated/barcode.js:54
msgid "Enter optional notes for stock transfer"
msgstr ""
-#: templates/js/translated/barcode.js:33
+#: templates/js/translated/barcode.js:55
msgid "Enter notes"
msgstr ""
-#: templates/js/translated/barcode.js:71
+#: templates/js/translated/barcode.js:93
msgid "Server error"
msgstr ""
-#: templates/js/translated/barcode.js:92
+#: templates/js/translated/barcode.js:114
msgid "Unknown response from server"
msgstr ""
-#: templates/js/translated/barcode.js:119
-#: templates/js/translated/modals.js:1017
+#: templates/js/translated/barcode.js:141
+#: templates/js/translated/modals.js:1031
msgid "Invalid server response"
msgstr ""
-#: templates/js/translated/barcode.js:212
+#: templates/js/translated/barcode.js:234
msgid "Scan barcode data below"
msgstr ""
-#: templates/js/translated/barcode.js:270
+#: templates/js/translated/barcode.js:281 templates/navbar.html:65
+msgid "Scan Barcode"
+msgstr ""
+
+#: templates/js/translated/barcode.js:292
msgid "No URL in response"
msgstr ""
-#: templates/js/translated/barcode.js:288
+#: templates/js/translated/barcode.js:310
msgid "Link Barcode to Stock Item"
msgstr ""
-#: templates/js/translated/barcode.js:311
+#: templates/js/translated/barcode.js:333
msgid "This will remove the association between this stock item and the barcode"
msgstr ""
-#: templates/js/translated/barcode.js:317
+#: templates/js/translated/barcode.js:339
msgid "Unlink"
msgstr ""
-#: templates/js/translated/barcode.js:376 templates/js/translated/stock.js:220
+#: templates/js/translated/barcode.js:398 templates/js/translated/stock.js:289
msgid "Remove stock item"
msgstr ""
-#: templates/js/translated/barcode.js:418
+#: templates/js/translated/barcode.js:440
msgid "Check Stock Items into Location"
msgstr ""
-#: templates/js/translated/barcode.js:422
-#: templates/js/translated/barcode.js:547
+#: templates/js/translated/barcode.js:444
+#: templates/js/translated/barcode.js:571
msgid "Check In"
msgstr ""
-#: templates/js/translated/barcode.js:462
-#: templates/js/translated/barcode.js:586
+#: templates/js/translated/barcode.js:486
+#: templates/js/translated/barcode.js:610
msgid "Error transferring stock"
msgstr ""
-#: templates/js/translated/barcode.js:481
+#: templates/js/translated/barcode.js:505
msgid "Stock Item already scanned"
msgstr ""
-#: templates/js/translated/barcode.js:485
+#: templates/js/translated/barcode.js:509
msgid "Stock Item already in this location"
msgstr ""
-#: templates/js/translated/barcode.js:492
+#: templates/js/translated/barcode.js:516
msgid "Added stock item"
msgstr ""
-#: templates/js/translated/barcode.js:499
+#: templates/js/translated/barcode.js:523
msgid "Barcode does not match Stock Item"
msgstr ""
-#: templates/js/translated/barcode.js:542
+#: templates/js/translated/barcode.js:566
msgid "Check Into Location"
msgstr ""
-#: templates/js/translated/barcode.js:605
+#: templates/js/translated/barcode.js:629
msgid "Barcode does not match a valid location"
msgstr ""
-#: templates/js/translated/bom.js:195 templates/js/translated/build.js:1152
+#: templates/js/translated/bom.js:215 templates/js/translated/build.js:1169
msgid "Open subassembly"
msgstr ""
-#: templates/js/translated/bom.js:269
+#: templates/js/translated/bom.js:287
msgid "Purchase Price Range"
msgstr ""
-#: templates/js/translated/bom.js:277
+#: templates/js/translated/bom.js:294
msgid "Purchase Price Average"
msgstr ""
-#: templates/js/translated/bom.js:326 templates/js/translated/bom.js:412
+#: templates/js/translated/bom.js:342 templates/js/translated/bom.js:428
msgid "View BOM"
msgstr ""
-#: templates/js/translated/bom.js:386
+#: templates/js/translated/bom.js:402
msgid "Validate BOM Item"
msgstr ""
-#: templates/js/translated/bom.js:388
+#: templates/js/translated/bom.js:404
msgid "This line has been validated"
msgstr ""
-#: templates/js/translated/bom.js:390 templates/js/translated/bom.js:555
+#: templates/js/translated/bom.js:406 templates/js/translated/bom.js:569
msgid "Edit BOM Item"
msgstr ""
-#: templates/js/translated/bom.js:392 templates/js/translated/bom.js:539
+#: templates/js/translated/bom.js:408 templates/js/translated/bom.js:554
msgid "Delete BOM Item"
msgstr ""
-#: templates/js/translated/bom.js:483 templates/js/translated/build.js:458
-#: templates/js/translated/build.js:1250
+#: templates/js/translated/bom.js:499 templates/js/translated/build.js:483
+#: templates/js/translated/build.js:1267
msgid "No BOM items found"
msgstr ""
-#: templates/js/translated/build.js:42
+#: templates/js/translated/build.js:69
msgid "Edit Build Order"
msgstr ""
-#: templates/js/translated/build.js:68
+#: templates/js/translated/build.js:95
msgid "Create Build Order"
msgstr ""
-#: templates/js/translated/build.js:100
+#: templates/js/translated/build.js:127
msgid "Auto-allocate stock items to this output"
msgstr ""
-#: templates/js/translated/build.js:108
+#: templates/js/translated/build.js:135
msgid "Unallocate stock from build output"
msgstr ""
-#: templates/js/translated/build.js:118
+#: templates/js/translated/build.js:145
msgid "Complete build output"
msgstr ""
-#: templates/js/translated/build.js:127
+#: templates/js/translated/build.js:154
msgid "Delete build output"
msgstr ""
-#: templates/js/translated/build.js:222
+#: templates/js/translated/build.js:249
msgid "No build order allocations found"
msgstr ""
-#: templates/js/translated/build.js:260 templates/js/translated/order.js:471
+#: templates/js/translated/build.js:287 templates/js/translated/order.js:813
msgid "Location not specified"
msgstr ""
-#: templates/js/translated/build.js:364 templates/stock_table.html:20
+#: templates/js/translated/build.js:391 templates/stock_table.html:20
msgid "New Stock Item"
msgstr ""
-#: templates/js/translated/build.js:679
+#: templates/js/translated/build.js:702
msgid "Required Part"
msgstr ""
-#: templates/js/translated/build.js:700
+#: templates/js/translated/build.js:723
msgid "Quantity Per"
msgstr ""
-#: templates/js/translated/build.js:770 templates/js/translated/build.js:1214
+#: templates/js/translated/build.js:793 templates/js/translated/build.js:1231
#: templates/stock_table.html:59
msgid "Order stock"
msgstr ""
-#: templates/js/translated/build.js:823
+#: templates/js/translated/build.js:846
msgid "No builds matching query"
msgstr ""
-#: templates/js/translated/build.js:840 templates/js/translated/part.js:711
-#: templates/js/translated/part.js:956 templates/js/translated/stock.js:883
-#: templates/js/translated/stock.js:1336
+#: templates/js/translated/build.js:863 templates/js/translated/part.js:845
+#: templates/js/translated/part.js:1123 templates/js/translated/stock.js:783
+#: templates/js/translated/stock.js:1477
msgid "Select"
msgstr ""
-#: templates/js/translated/build.js:860
+#: templates/js/translated/build.js:883
msgid "Build order is overdue"
msgstr ""
-#: templates/js/translated/build.js:924 templates/js/translated/stock.js:1558
+#: templates/js/translated/build.js:944 templates/js/translated/stock.js:1696
msgid "No user information"
msgstr ""
-#: templates/js/translated/build.js:939
+#: templates/js/translated/build.js:956
msgid "No information"
msgstr ""
-#: templates/js/translated/build.js:989
+#: templates/js/translated/build.js:1007
msgid "No parts allocated for"
msgstr ""
-#: templates/js/translated/company.js:34
+#: templates/js/translated/company.js:65
msgid "Add Manufacturer"
msgstr ""
-#: templates/js/translated/company.js:47 templates/js/translated/company.js:136
+#: templates/js/translated/company.js:78 templates/js/translated/company.js:176
msgid "Add Manufacturer Part"
msgstr ""
-#: templates/js/translated/company.js:59
+#: templates/js/translated/company.js:99
msgid "Edit Manufacturer Part"
msgstr ""
-#: templates/js/translated/company.js:68
+#: templates/js/translated/company.js:108
msgid "Delete Manufacturer Part"
msgstr ""
-#: templates/js/translated/company.js:124 templates/js/translated/order.js:58
+#: templates/js/translated/company.js:164 templates/js/translated/order.js:86
msgid "Add Supplier"
msgstr ""
-#: templates/js/translated/company.js:152
+#: templates/js/translated/company.js:192
msgid "Add Supplier Part"
msgstr ""
-#: templates/js/translated/company.js:162
+#: templates/js/translated/company.js:207
msgid "Edit Supplier Part"
msgstr ""
-#: templates/js/translated/company.js:172
+#: templates/js/translated/company.js:217
msgid "Delete Supplier Part"
msgstr ""
-#: templates/js/translated/company.js:219
+#: templates/js/translated/company.js:264
msgid "Edit Company"
msgstr ""
-#: templates/js/translated/company.js:240
+#: templates/js/translated/company.js:285
msgid "Add new Company"
msgstr ""
-#: templates/js/translated/company.js:317
+#: templates/js/translated/company.js:362
msgid "Parts Supplied"
msgstr ""
-#: templates/js/translated/company.js:326
+#: templates/js/translated/company.js:371
msgid "Parts Manufactured"
msgstr ""
-#: templates/js/translated/company.js:339
+#: templates/js/translated/company.js:385
msgid "No company information found"
msgstr ""
-#: templates/js/translated/company.js:357
+#: templates/js/translated/company.js:404
msgid "The following manufacturer parts will be deleted"
msgstr ""
-#: templates/js/translated/company.js:374
+#: templates/js/translated/company.js:421
msgid "Delete Manufacturer Parts"
msgstr ""
-#: templates/js/translated/company.js:427
+#: templates/js/translated/company.js:475
msgid "No manufacturer parts found"
msgstr ""
-#: templates/js/translated/company.js:446
-#: templates/js/translated/company.js:696 templates/js/translated/part.js:288
-#: templates/js/translated/part.js:373
+#: templates/js/translated/company.js:495
+#: templates/js/translated/company.js:751 templates/js/translated/part.js:416
+#: templates/js/translated/part.js:501
msgid "Template part"
msgstr ""
-#: templates/js/translated/company.js:450
-#: templates/js/translated/company.js:700 templates/js/translated/part.js:292
-#: templates/js/translated/part.js:377
+#: templates/js/translated/company.js:499
+#: templates/js/translated/company.js:755 templates/js/translated/part.js:420
+#: templates/js/translated/part.js:505
msgid "Assembled part"
msgstr ""
-#: templates/js/translated/company.js:574 templates/js/translated/part.js:462
+#: templates/js/translated/company.js:626 templates/js/translated/part.js:593
msgid "No parameters found"
msgstr ""
-#: templates/js/translated/company.js:610 templates/js/translated/part.js:503
+#: templates/js/translated/company.js:663 templates/js/translated/part.js:635
msgid "Edit parameter"
msgstr ""
-#: templates/js/translated/company.js:611 templates/js/translated/part.js:504
+#: templates/js/translated/company.js:664 templates/js/translated/part.js:636
msgid "Delete parameter"
msgstr ""
-#: templates/js/translated/company.js:630 templates/js/translated/part.js:521
+#: templates/js/translated/company.js:683 templates/js/translated/part.js:653
msgid "Edit Parameter"
msgstr ""
-#: templates/js/translated/company.js:641 templates/js/translated/part.js:533
+#: templates/js/translated/company.js:694 templates/js/translated/part.js:665
msgid "Delete Parameter"
msgstr ""
-#: templates/js/translated/company.js:677
+#: templates/js/translated/company.js:731
msgid "No supplier parts found"
msgstr ""
-#: templates/js/translated/filters.js:167
-#: templates/js/translated/filters.js:404
+#: templates/js/translated/filters.js:178
+#: templates/js/translated/filters.js:402
msgid "true"
msgstr ""
-#: templates/js/translated/filters.js:171
-#: templates/js/translated/filters.js:405
+#: templates/js/translated/filters.js:182
+#: templates/js/translated/filters.js:403
msgid "false"
msgstr ""
-#: templates/js/translated/filters.js:193
+#: templates/js/translated/filters.js:204
msgid "Select filter"
msgstr ""
-#: templates/js/translated/filters.js:268
+#: templates/js/translated/filters.js:279
msgid "Reload data"
msgstr ""
-#: templates/js/translated/filters.js:270
+#: templates/js/translated/filters.js:281
msgid "Add new filter"
msgstr ""
-#: templates/js/translated/filters.js:273
+#: templates/js/translated/filters.js:284
msgid "Clear all filters"
msgstr ""
-#: templates/js/translated/filters.js:303
+#: templates/js/translated/filters.js:312
msgid "Create filter"
msgstr ""
-#: templates/js/translated/forms.js:289 templates/js/translated/forms.js:302
-#: templates/js/translated/forms.js:314 templates/js/translated/forms.js:326
+#: templates/js/translated/forms.js:323 templates/js/translated/forms.js:336
+#: templates/js/translated/forms.js:348 templates/js/translated/forms.js:360
msgid "Action Prohibited"
msgstr ""
-#: templates/js/translated/forms.js:290
+#: templates/js/translated/forms.js:324
msgid "Create operation not allowed"
msgstr ""
-#: templates/js/translated/forms.js:303
+#: templates/js/translated/forms.js:337
msgid "Update operation not allowed"
msgstr ""
-#: templates/js/translated/forms.js:315
+#: templates/js/translated/forms.js:349
msgid "Delete operation not allowed"
msgstr ""
-#: templates/js/translated/forms.js:327
+#: templates/js/translated/forms.js:361
msgid "View operation not allowed"
msgstr ""
-#: templates/js/translated/forms.js:865 templates/modals.html:21
+#: templates/js/translated/forms.js:889 templates/modals.html:21
#: templates/modals.html:47
msgid "Form errors exist"
msgstr ""
-#: templates/js/translated/forms.js:1258
+#: templates/js/translated/forms.js:1379
msgid "Searching"
msgstr ""
-#: templates/js/translated/forms.js:1423
+#: templates/js/translated/forms.js:1593
msgid "Clear input"
msgstr ""
-#: templates/js/translated/label.js:11
-msgid "Stock item(s) must be selected before printing labels"
+#: templates/js/translated/helpers.js:19
+msgid "YES"
msgstr ""
-#: templates/js/translated/label.js:29 templates/js/translated/label.js:79
-#: templates/js/translated/label.js:134
-msgid "No Labels Found"
+#: templates/js/translated/helpers.js:21
+msgid "NO"
msgstr ""
#: templates/js/translated/label.js:30
+msgid "Stock item(s) must be selected before printing labels"
+msgstr ""
+
+#: templates/js/translated/label.js:48 templates/js/translated/label.js:98
+#: templates/js/translated/label.js:153
+msgid "No Labels Found"
+msgstr ""
+
+#: templates/js/translated/label.js:49
msgid "No labels found which match selected stock item(s)"
msgstr ""
-#: templates/js/translated/label.js:61
+#: templates/js/translated/label.js:80
msgid "Select Stock Locations"
msgstr ""
-#: templates/js/translated/label.js:62
+#: templates/js/translated/label.js:81
msgid "Stock location(s) must be selected before printing labels"
msgstr ""
-#: templates/js/translated/label.js:80
+#: templates/js/translated/label.js:99
msgid "No labels found which match selected stock location(s)"
msgstr ""
-#: templates/js/translated/label.js:116
+#: templates/js/translated/label.js:135
msgid "Part(s) must be selected before printing labels"
msgstr ""
-#: templates/js/translated/label.js:135
+#: templates/js/translated/label.js:154
msgid "No labels found which match the selected part(s)"
msgstr ""
-#: templates/js/translated/label.js:209
+#: templates/js/translated/label.js:228
msgid "stock items selected"
msgstr ""
-#: templates/js/translated/label.js:217
+#: templates/js/translated/label.js:236
msgid "Select Label"
msgstr ""
-#: templates/js/translated/label.js:232
+#: templates/js/translated/label.js:251
msgid "Select Label Template"
msgstr ""
-#: templates/js/translated/modals.js:59 templates/js/translated/modals.js:103
-#: templates/js/translated/modals.js:593
+#: templates/js/translated/modals.js:76 templates/js/translated/modals.js:120
+#: templates/js/translated/modals.js:610
msgid "Cancel"
msgstr ""
-#: templates/js/translated/modals.js:60 templates/js/translated/modals.js:102
-#: templates/js/translated/modals.js:660 templates/js/translated/modals.js:956
+#: templates/js/translated/modals.js:77 templates/js/translated/modals.js:119
+#: templates/js/translated/modals.js:677 templates/js/translated/modals.js:970
#: templates/modals.html:30 templates/modals.html:55
msgid "Submit"
msgstr ""
-#: templates/js/translated/modals.js:101
+#: templates/js/translated/modals.js:118
msgid "Form Title"
msgstr ""
-#: templates/js/translated/modals.js:380
+#: templates/js/translated/modals.js:397
msgid "Waiting for server..."
msgstr ""
-#: templates/js/translated/modals.js:539
+#: templates/js/translated/modals.js:556
msgid "Show Error Information"
msgstr ""
-#: templates/js/translated/modals.js:592
+#: templates/js/translated/modals.js:609
msgid "Accept"
msgstr ""
-#: templates/js/translated/modals.js:649
+#: templates/js/translated/modals.js:666
msgid "Loading Data"
msgstr ""
-#: templates/js/translated/modals.js:907
+#: templates/js/translated/modals.js:922
msgid "Invalid response from server"
msgstr ""
-#: templates/js/translated/modals.js:907
+#: templates/js/translated/modals.js:922
msgid "Form data missing from server response"
msgstr ""
-#: templates/js/translated/modals.js:920
+#: templates/js/translated/modals.js:934
msgid "Error posting form data"
msgstr ""
-#: templates/js/translated/modals.js:1017
+#: templates/js/translated/modals.js:1031
msgid "JSON response missing form data"
msgstr ""
-#: templates/js/translated/modals.js:1032
+#: templates/js/translated/modals.js:1046
msgid "Error 400: Bad Request"
msgstr ""
-#: templates/js/translated/modals.js:1033
+#: templates/js/translated/modals.js:1047
msgid "Server returned error code 400"
msgstr ""
-#: templates/js/translated/modals.js:1056
+#: templates/js/translated/modals.js:1070
msgid "Error requesting form data"
msgstr ""
-#: templates/js/translated/model_renderers.js:38
+#: templates/js/translated/model_renderers.js:40
msgid "Company ID"
msgstr ""
-#: templates/js/translated/model_renderers.js:78
+#: templates/js/translated/model_renderers.js:82
msgid "Location ID"
msgstr ""
-#: templates/js/translated/model_renderers.js:95
+#: templates/js/translated/model_renderers.js:99
msgid "Build ID"
msgstr ""
-#: templates/js/translated/model_renderers.js:114
+#: templates/js/translated/model_renderers.js:119
msgid "Part ID"
msgstr ""
-#: templates/js/translated/model_renderers.js:163
+#: templates/js/translated/model_renderers.js:171
msgid "Category ID"
msgstr ""
-#: templates/js/translated/model_renderers.js:199
+#: templates/js/translated/model_renderers.js:208
msgid "Manufacturer Part ID"
msgstr ""
-#: templates/js/translated/model_renderers.js:227
+#: templates/js/translated/model_renderers.js:237
msgid "Supplier Part ID"
msgstr ""
-#: templates/js/translated/order.js:17
+#: templates/js/translated/order.js:45
msgid "Add Customer"
msgstr ""
-#: templates/js/translated/order.js:42
+#: templates/js/translated/order.js:70
msgid "Create Sales Order"
msgstr ""
-#: templates/js/translated/order.js:222
+#: templates/js/translated/order.js:295
msgid "No purchase orders found"
msgstr ""
-#: templates/js/translated/order.js:246 templates/js/translated/order.js:341
+#: templates/js/translated/order.js:320 templates/js/translated/order.js:682
msgid "Order is overdue"
msgstr ""
-#: templates/js/translated/order.js:318
+#: templates/js/translated/order.js:452
+msgid "No line items found"
+msgstr ""
+
+#: templates/js/translated/order.js:617
+msgid "Delete line item"
+msgstr ""
+
+#: templates/js/translated/order.js:621
+msgid "Receive line item"
+msgstr ""
+
+#: templates/js/translated/order.js:658
msgid "No sales orders found"
msgstr ""
-#: templates/js/translated/order.js:355
+#: templates/js/translated/order.js:696
msgid "Invalid Customer"
msgstr ""
-#: templates/js/translated/order.js:432
+#: templates/js/translated/order.js:774
msgid "No sales order allocations found"
msgstr ""
-#: templates/js/translated/part.js:10
-msgid "YES"
-msgstr ""
-
-#: templates/js/translated/part.js:12
-msgid "NO"
-msgstr ""
-
-#: templates/js/translated/part.js:22
-msgid "Add Part Category"
-msgstr ""
-
-#: templates/js/translated/part.js:53
+#: templates/js/translated/part.js:49
msgid "Part Attributes"
msgstr ""
-#: templates/js/translated/part.js:96
+#: templates/js/translated/part.js:53
msgid "Part Creation Options"
msgstr ""
-#: templates/js/translated/part.js:102
-msgid "Initial Stock Quantity"
-msgstr ""
-
-#: templates/js/translated/part.js:103
-msgid "Initialize part stock with specified quantity"
-msgstr ""
-
-#: templates/js/translated/part.js:109
-msgid "Copy Category Parameters"
-msgstr ""
-
-#: templates/js/translated/part.js:110
-msgid "Copy parameter templates from selected part category"
-msgstr ""
-
-#: templates/js/translated/part.js:120
+#: templates/js/translated/part.js:57
msgid "Part Duplication Options"
msgstr ""
-#: templates/js/translated/part.js:131
-msgid "Copy Image"
+#: templates/js/translated/part.js:61
+msgid "Supplier Options"
msgstr ""
-#: templates/js/translated/part.js:132
-msgid "Copy image from original part"
+#: templates/js/translated/part.js:75
+msgid "Add Part Category"
msgstr ""
-#: templates/js/translated/part.js:138
-msgid "Copy BOM"
+#: templates/js/translated/part.js:159
+msgid "Create Initial Stock"
msgstr ""
-#: templates/js/translated/part.js:139
-msgid "Copy bill of materials from original part"
+#: templates/js/translated/part.js:160
+msgid "Create an initial stock item for this part"
msgstr ""
-#: templates/js/translated/part.js:145
-msgid "Copy Parameters"
+#: templates/js/translated/part.js:167
+msgid "Initial Stock Quantity"
msgstr ""
-#: templates/js/translated/part.js:146
-msgid "Copy parameter data from original part"
+#: templates/js/translated/part.js:168
+msgid "Specify initial stock quantity for this part"
msgstr ""
-#: templates/js/translated/part.js:158
-msgid "Parent part category"
+#: templates/js/translated/part.js:175 templates/js/translated/stock.js:330
+msgid "Select destination stock location"
+msgstr ""
+
+#: templates/js/translated/part.js:186
+msgid "Copy Category Parameters"
+msgstr ""
+
+#: templates/js/translated/part.js:187
+msgid "Copy parameter templates from selected part category"
+msgstr ""
+
+#: templates/js/translated/part.js:195
+msgid "Add Supplier Data"
msgstr ""
#: templates/js/translated/part.js:196
+msgid "Create initial supplier data for this part"
+msgstr ""
+
+#: templates/js/translated/part.js:252
+msgid "Copy Image"
+msgstr ""
+
+#: templates/js/translated/part.js:253
+msgid "Copy image from original part"
+msgstr ""
+
+#: templates/js/translated/part.js:260
+msgid "Copy BOM"
+msgstr ""
+
+#: templates/js/translated/part.js:261
+msgid "Copy bill of materials from original part"
+msgstr ""
+
+#: templates/js/translated/part.js:268
+msgid "Copy Parameters"
+msgstr ""
+
+#: templates/js/translated/part.js:269
+msgid "Copy parameter data from original part"
+msgstr ""
+
+#: templates/js/translated/part.js:282
+msgid "Parent part category"
+msgstr ""
+
+#: templates/js/translated/part.js:323
msgid "Edit Part"
msgstr ""
-#: templates/js/translated/part.js:280 templates/js/translated/part.js:365
+#: templates/js/translated/part.js:408 templates/js/translated/part.js:493
msgid "Trackable part"
msgstr ""
-#: templates/js/translated/part.js:284 templates/js/translated/part.js:369
+#: templates/js/translated/part.js:412 templates/js/translated/part.js:497
msgid "Virtual part"
msgstr ""
-#: templates/js/translated/part.js:296
+#: templates/js/translated/part.js:424
msgid "Starred part"
msgstr ""
-#: templates/js/translated/part.js:300
+#: templates/js/translated/part.js:428
msgid "Salable part"
msgstr ""
-#: templates/js/translated/part.js:414
+#: templates/js/translated/part.js:543
msgid "No variants found"
msgstr ""
-#: templates/js/translated/part.js:601 templates/js/translated/part.js:840
+#: templates/js/translated/part.js:732 templates/js/translated/part.js:994
msgid "No parts found"
msgstr ""
-#: templates/js/translated/part.js:779
+#: templates/js/translated/part.js:921
msgid "No category"
msgstr ""
-#: templates/js/translated/part.js:797
-#: templates/js/translated/table_filters.js:337
+#: templates/js/translated/part.js:944
+#: templates/js/translated/table_filters.js:350
msgid "Low stock"
msgstr ""
-#: templates/js/translated/part.js:981 templates/js/translated/stock.js:1360
+#: templates/js/translated/part.js:1148 templates/js/translated/stock.js:1501
msgid "Path"
msgstr ""
-#: templates/js/translated/part.js:1024
+#: templates/js/translated/part.js:1191
msgid "No test templates matching query"
msgstr ""
-#: templates/js/translated/part.js:1075 templates/js/translated/stock.js:443
+#: templates/js/translated/part.js:1242 templates/js/translated/stock.js:514
msgid "Edit test result"
msgstr ""
-#: templates/js/translated/part.js:1076 templates/js/translated/stock.js:444
+#: templates/js/translated/part.js:1243 templates/js/translated/stock.js:515
msgid "Delete test result"
msgstr ""
-#: templates/js/translated/part.js:1082
+#: templates/js/translated/part.js:1249
msgid "This test is defined for a parent part"
msgstr ""
-#: templates/js/translated/part.js:1107
+#: templates/js/translated/part.js:1274
#, python-brace-format
msgid "No ${human_name} information found"
msgstr ""
-#: templates/js/translated/part.js:1160
+#: templates/js/translated/part.js:1329
#, python-brace-format
msgid "Edit ${human_name}"
msgstr ""
-#: templates/js/translated/part.js:1161
+#: templates/js/translated/part.js:1330
#, python-brace-format
msgid "Delete ${human_name}"
msgstr ""
-#: templates/js/translated/part.js:1261
+#: templates/js/translated/part.js:1431
msgid "Single Price"
msgstr ""
-#: templates/js/translated/part.js:1280
+#: templates/js/translated/part.js:1450
msgid "Single Price Difference"
msgstr ""
-#: templates/js/translated/stock.js:9
+#: templates/js/translated/stock.js:66
msgid "Parent stock location"
msgstr ""
-#: templates/js/translated/stock.js:39
+#: templates/js/translated/stock.js:96
msgid "Export Stock"
msgstr ""
-#: templates/js/translated/stock.js:42
+#: templates/js/translated/stock.js:99
msgid "Format"
msgstr ""
-#: templates/js/translated/stock.js:43
+#: templates/js/translated/stock.js:100
msgid "Select file format"
msgstr ""
-#: templates/js/translated/stock.js:55
+#: templates/js/translated/stock.js:124
msgid "Include Sublocations"
msgstr ""
-#: templates/js/translated/stock.js:56
+#: templates/js/translated/stock.js:125
msgid "Include stock items in sublocations"
msgstr ""
-#: templates/js/translated/stock.js:98
+#: templates/js/translated/stock.js:167
msgid "Transfer Stock"
msgstr ""
-#: templates/js/translated/stock.js:99
+#: templates/js/translated/stock.js:168
msgid "Move"
msgstr ""
-#: templates/js/translated/stock.js:105
+#: templates/js/translated/stock.js:174
msgid "Count Stock"
msgstr ""
-#: templates/js/translated/stock.js:106
+#: templates/js/translated/stock.js:175
msgid "Count"
msgstr ""
-#: templates/js/translated/stock.js:110
+#: templates/js/translated/stock.js:179
msgid "Remove Stock"
msgstr ""
-#: templates/js/translated/stock.js:111
+#: templates/js/translated/stock.js:180
msgid "Take"
msgstr ""
-#: templates/js/translated/stock.js:115
+#: templates/js/translated/stock.js:184
msgid "Add Stock"
msgstr ""
-#: templates/js/translated/stock.js:116 users/models.py:190
+#: templates/js/translated/stock.js:185 users/models.py:190
msgid "Add"
msgstr ""
-#: templates/js/translated/stock.js:120 templates/stock_table.html:63
+#: templates/js/translated/stock.js:189 templates/stock_table.html:63
msgid "Delete Stock"
msgstr ""
-#: templates/js/translated/stock.js:209
+#: templates/js/translated/stock.js:278
msgid "Quantity cannot be adjusted for serialized stock"
msgstr ""
-#: templates/js/translated/stock.js:209
+#: templates/js/translated/stock.js:278
msgid "Specify stock quantity"
msgstr ""
-#: templates/js/translated/stock.js:245
+#: templates/js/translated/stock.js:314
msgid "You must select at least one available stock item"
msgstr ""
-#: templates/js/translated/stock.js:261
-msgid "Select destination stock location"
-msgstr ""
-
-#: templates/js/translated/stock.js:269
+#: templates/js/translated/stock.js:339
msgid "Stock transaction notes"
msgstr ""
-#: templates/js/translated/stock.js:406
+#: templates/js/translated/stock.js:477
msgid "PASS"
msgstr ""
-#: templates/js/translated/stock.js:408
+#: templates/js/translated/stock.js:479
msgid "FAIL"
msgstr ""
-#: templates/js/translated/stock.js:413
+#: templates/js/translated/stock.js:484
msgid "NO RESULT"
msgstr ""
-#: templates/js/translated/stock.js:439
+#: templates/js/translated/stock.js:510
msgid "Add test result"
msgstr ""
-#: templates/js/translated/stock.js:465
+#: templates/js/translated/stock.js:536
msgid "No test results found"
msgstr ""
-#: templates/js/translated/stock.js:513
+#: templates/js/translated/stock.js:584
msgid "Test Date"
msgstr ""
-#: templates/js/translated/stock.js:621
+#: templates/js/translated/stock.js:691
msgid "In production"
msgstr ""
-#: templates/js/translated/stock.js:625
+#: templates/js/translated/stock.js:695
msgid "Installed in Stock Item"
msgstr ""
-#: templates/js/translated/stock.js:633
+#: templates/js/translated/stock.js:703
msgid "Assigned to Sales Order"
msgstr ""
-#: templates/js/translated/stock.js:709
-msgid "No stock items matching query"
-msgstr ""
-
-#: templates/js/translated/stock.js:729
-msgid "items"
-msgstr ""
-
-#: templates/js/translated/stock.js:821
-msgid "batches"
-msgstr ""
-
-#: templates/js/translated/stock.js:848
-msgid "locations"
-msgstr ""
-
-#: templates/js/translated/stock.js:850
-msgid "Undefined location"
-msgstr ""
-
-#: templates/js/translated/stock.js:951
+#: templates/js/translated/stock.js:865
msgid "Stock item is in production"
msgstr ""
-#: templates/js/translated/stock.js:956
+#: templates/js/translated/stock.js:870
msgid "Stock item assigned to sales order"
msgstr ""
-#: templates/js/translated/stock.js:959
+#: templates/js/translated/stock.js:873
msgid "Stock item assigned to customer"
msgstr ""
-#: templates/js/translated/stock.js:963
+#: templates/js/translated/stock.js:877
msgid "Stock item has expired"
msgstr ""
-#: templates/js/translated/stock.js:965
+#: templates/js/translated/stock.js:879
msgid "Stock item will expire soon"
msgstr ""
-#: templates/js/translated/stock.js:969
+#: templates/js/translated/stock.js:883
msgid "Stock item has been allocated"
msgstr ""
-#: templates/js/translated/stock.js:973
+#: templates/js/translated/stock.js:887
msgid "Stock item has been installed in another item"
msgstr ""
-#: templates/js/translated/stock.js:980
+#: templates/js/translated/stock.js:894
msgid "Stock item has been rejected"
msgstr ""
-#: templates/js/translated/stock.js:984
+#: templates/js/translated/stock.js:896
msgid "Stock item is lost"
msgstr ""
-#: templates/js/translated/stock.js:987
+#: templates/js/translated/stock.js:898
msgid "Stock item is destroyed"
msgstr ""
-#: templates/js/translated/stock.js:991
-#: templates/js/translated/table_filters.js:148
+#: templates/js/translated/stock.js:902
+#: templates/js/translated/table_filters.js:161
msgid "Depleted"
msgstr ""
-#: templates/js/translated/stock.js:1020
+#: templates/js/translated/stock.js:956
msgid "Stocktake"
msgstr ""
-#: templates/js/translated/stock.js:1073
+#: templates/js/translated/stock.js:1029
msgid "Supplier part not specified"
msgstr ""
-#: templates/js/translated/stock.js:1223
+#: templates/js/translated/stock.js:1067
+msgid "No stock items matching query"
+msgstr ""
+
+#: templates/js/translated/stock.js:1088 templates/js/translated/stock.js:1136
+msgid "items"
+msgstr ""
+
+#: templates/js/translated/stock.js:1176
+msgid "batches"
+msgstr ""
+
+#: templates/js/translated/stock.js:1203
+msgid "locations"
+msgstr ""
+
+#: templates/js/translated/stock.js:1205
+msgid "Undefined location"
+msgstr ""
+
+#: templates/js/translated/stock.js:1364
msgid "Stock Status"
msgstr ""
-#: templates/js/translated/stock.js:1238
+#: templates/js/translated/stock.js:1379
msgid "Set Stock Status"
msgstr ""
-#: templates/js/translated/stock.js:1252
+#: templates/js/translated/stock.js:1393
msgid "Select Status Code"
msgstr ""
-#: templates/js/translated/stock.js:1253
+#: templates/js/translated/stock.js:1394
msgid "Status code must be selected"
msgstr ""
-#: templates/js/translated/stock.js:1392
+#: templates/js/translated/stock.js:1533
msgid "Invalid date"
msgstr ""
-#: templates/js/translated/stock.js:1439
+#: templates/js/translated/stock.js:1580
msgid "Location no longer exists"
msgstr ""
-#: templates/js/translated/stock.js:1458
+#: templates/js/translated/stock.js:1599
msgid "Purchase order no longer exists"
msgstr ""
-#: templates/js/translated/stock.js:1477
+#: templates/js/translated/stock.js:1618
msgid "Customer no longer exists"
msgstr ""
-#: templates/js/translated/stock.js:1495
+#: templates/js/translated/stock.js:1636
msgid "Stock item no longer exists"
msgstr ""
-#: templates/js/translated/stock.js:1518
+#: templates/js/translated/stock.js:1659
msgid "Added"
msgstr ""
-#: templates/js/translated/stock.js:1526
+#: templates/js/translated/stock.js:1667
msgid "Removed"
msgstr ""
-#: templates/js/translated/stock.js:1570
+#: templates/js/translated/stock.js:1708
msgid "Edit tracking entry"
msgstr ""
-#: templates/js/translated/stock.js:1571
+#: templates/js/translated/stock.js:1709
msgid "Delete tracking entry"
msgstr ""
-#: templates/js/translated/stock.js:1715
+#: templates/js/translated/stock.js:1833
msgid "No installed items"
msgstr ""
-#: templates/js/translated/stock.js:1738
+#: templates/js/translated/stock.js:1856
msgid "Serial"
msgstr ""
-#: templates/js/translated/stock.js:1766
+#: templates/js/translated/stock.js:1884
msgid "Uninstall Stock Item"
msgstr ""
-#: templates/js/translated/table_filters.js:43
+#: templates/js/translated/table_filters.js:56
msgid "Trackable Part"
msgstr ""
-#: templates/js/translated/table_filters.js:47
+#: templates/js/translated/table_filters.js:60
msgid "Assembled Part"
msgstr ""
-#: templates/js/translated/table_filters.js:51
+#: templates/js/translated/table_filters.js:64
msgid "Validated"
msgstr ""
-#: templates/js/translated/table_filters.js:59
+#: templates/js/translated/table_filters.js:72
msgid "Allow Variant Stock"
msgstr ""
-#: templates/js/translated/table_filters.js:79
-#: templates/js/translated/table_filters.js:143
+#: templates/js/translated/table_filters.js:92
+#: templates/js/translated/table_filters.js:156
msgid "Include sublocations"
msgstr ""
-#: templates/js/translated/table_filters.js:80
+#: templates/js/translated/table_filters.js:93
msgid "Include locations"
msgstr ""
-#: templates/js/translated/table_filters.js:90
-#: templates/js/translated/table_filters.js:91
-#: templates/js/translated/table_filters.js:314
+#: templates/js/translated/table_filters.js:103
+#: templates/js/translated/table_filters.js:104
+#: templates/js/translated/table_filters.js:327
msgid "Include subcategories"
msgstr ""
-#: templates/js/translated/table_filters.js:101
-#: templates/js/translated/table_filters.js:178
+#: templates/js/translated/table_filters.js:114
+#: templates/js/translated/table_filters.js:191
msgid "Is Serialized"
msgstr ""
-#: templates/js/translated/table_filters.js:104
-#: templates/js/translated/table_filters.js:185
+#: templates/js/translated/table_filters.js:117
+#: templates/js/translated/table_filters.js:198
msgid "Serial number GTE"
msgstr ""
-#: templates/js/translated/table_filters.js:105
-#: templates/js/translated/table_filters.js:186
+#: templates/js/translated/table_filters.js:118
+#: templates/js/translated/table_filters.js:199
msgid "Serial number greater than or equal to"
msgstr ""
-#: templates/js/translated/table_filters.js:108
-#: templates/js/translated/table_filters.js:189
+#: templates/js/translated/table_filters.js:121
+#: templates/js/translated/table_filters.js:202
msgid "Serial number LTE"
msgstr ""
-#: templates/js/translated/table_filters.js:109
-#: templates/js/translated/table_filters.js:190
+#: templates/js/translated/table_filters.js:122
+#: templates/js/translated/table_filters.js:203
msgid "Serial number less than or equal to"
msgstr ""
-#: templates/js/translated/table_filters.js:112
-#: templates/js/translated/table_filters.js:113
-#: templates/js/translated/table_filters.js:181
-#: templates/js/translated/table_filters.js:182
+#: templates/js/translated/table_filters.js:125
+#: templates/js/translated/table_filters.js:126
+#: templates/js/translated/table_filters.js:194
+#: templates/js/translated/table_filters.js:195
msgid "Serial number"
msgstr ""
-#: templates/js/translated/table_filters.js:117
-#: templates/js/translated/table_filters.js:199
+#: templates/js/translated/table_filters.js:130
+#: templates/js/translated/table_filters.js:212
msgid "Batch code"
msgstr ""
-#: templates/js/translated/table_filters.js:128
-#: templates/js/translated/table_filters.js:304
+#: templates/js/translated/table_filters.js:141
+#: templates/js/translated/table_filters.js:317
msgid "Active parts"
msgstr ""
-#: templates/js/translated/table_filters.js:129
+#: templates/js/translated/table_filters.js:142
msgid "Show stock for active parts"
msgstr ""
-#: templates/js/translated/table_filters.js:134
+#: templates/js/translated/table_filters.js:147
msgid "Part is an assembly"
msgstr ""
-#: templates/js/translated/table_filters.js:138
+#: templates/js/translated/table_filters.js:151
msgid "Is allocated"
msgstr ""
-#: templates/js/translated/table_filters.js:139
+#: templates/js/translated/table_filters.js:152
msgid "Item has been allocated"
msgstr ""
-#: templates/js/translated/table_filters.js:144
+#: templates/js/translated/table_filters.js:157
msgid "Include stock in sublocations"
msgstr ""
-#: templates/js/translated/table_filters.js:149
+#: templates/js/translated/table_filters.js:162
msgid "Show stock items which are depleted"
msgstr ""
-#: templates/js/translated/table_filters.js:154
+#: templates/js/translated/table_filters.js:167
msgid "Show items which are in stock"
msgstr ""
-#: templates/js/translated/table_filters.js:158
+#: templates/js/translated/table_filters.js:171
msgid "In Production"
msgstr ""
-#: templates/js/translated/table_filters.js:159
+#: templates/js/translated/table_filters.js:172
msgid "Show items which are in production"
msgstr ""
-#: templates/js/translated/table_filters.js:163
+#: templates/js/translated/table_filters.js:176
msgid "Include Variants"
msgstr ""
-#: templates/js/translated/table_filters.js:164
+#: templates/js/translated/table_filters.js:177
msgid "Include stock items for variant parts"
msgstr ""
-#: templates/js/translated/table_filters.js:168
+#: templates/js/translated/table_filters.js:181
msgid "Installed"
msgstr ""
-#: templates/js/translated/table_filters.js:169
+#: templates/js/translated/table_filters.js:182
msgid "Show stock items which are installed in another item"
msgstr ""
-#: templates/js/translated/table_filters.js:174
+#: templates/js/translated/table_filters.js:187
msgid "Show items which have been assigned to a customer"
msgstr ""
-#: templates/js/translated/table_filters.js:194
-#: templates/js/translated/table_filters.js:195
+#: templates/js/translated/table_filters.js:207
+#: templates/js/translated/table_filters.js:208
msgid "Stock status"
msgstr ""
-#: templates/js/translated/table_filters.js:203
+#: templates/js/translated/table_filters.js:216
msgid "Has purchase price"
msgstr ""
-#: templates/js/translated/table_filters.js:204
+#: templates/js/translated/table_filters.js:217
msgid "Show stock items which have a purchase price set"
msgstr ""
-#: templates/js/translated/table_filters.js:213
+#: templates/js/translated/table_filters.js:226
msgid "Show stock items which have expired"
msgstr ""
-#: templates/js/translated/table_filters.js:219
+#: templates/js/translated/table_filters.js:232
msgid "Show stock which is close to expiring"
msgstr ""
-#: templates/js/translated/table_filters.js:250
+#: templates/js/translated/table_filters.js:263
msgid "Build status"
msgstr ""
-#: templates/js/translated/table_filters.js:269
-#: templates/js/translated/table_filters.js:286
+#: templates/js/translated/table_filters.js:282
+#: templates/js/translated/table_filters.js:299
msgid "Order status"
msgstr ""
-#: templates/js/translated/table_filters.js:274
-#: templates/js/translated/table_filters.js:291
+#: templates/js/translated/table_filters.js:287
+#: templates/js/translated/table_filters.js:304
msgid "Outstanding"
msgstr ""
-#: templates/js/translated/table_filters.js:315
+#: templates/js/translated/table_filters.js:328
msgid "Include parts in subcategories"
msgstr ""
-#: templates/js/translated/table_filters.js:319
+#: templates/js/translated/table_filters.js:332
msgid "Has IPN"
msgstr ""
-#: templates/js/translated/table_filters.js:320
+#: templates/js/translated/table_filters.js:333
msgid "Part has internal part number"
msgstr ""
-#: templates/js/translated/table_filters.js:325
+#: templates/js/translated/table_filters.js:338
msgid "Show active parts"
msgstr ""
-#: templates/js/translated/table_filters.js:333
+#: templates/js/translated/table_filters.js:346
msgid "Stock available"
msgstr ""
-#: templates/js/translated/table_filters.js:349
+#: templates/js/translated/table_filters.js:362
msgid "Starred"
msgstr ""
-#: templates/js/translated/table_filters.js:361
+#: templates/js/translated/table_filters.js:374
msgid "Purchasable"
msgstr ""
-#: templates/js/translated/tables.js:342
+#: templates/js/translated/tables.js:357
msgid "Loading data"
msgstr ""
-#: templates/js/translated/tables.js:345
+#: templates/js/translated/tables.js:360
msgid "rows per page"
msgstr ""
-#: templates/js/translated/tables.js:348
+#: templates/js/translated/tables.js:363
msgid "Showing"
msgstr ""
-#: templates/js/translated/tables.js:348
+#: templates/js/translated/tables.js:363
msgid "to"
msgstr ""
-#: templates/js/translated/tables.js:348
+#: templates/js/translated/tables.js:363
msgid "of"
msgstr ""
-#: templates/js/translated/tables.js:348
+#: templates/js/translated/tables.js:363
msgid "rows"
msgstr ""
-#: templates/js/translated/tables.js:354
+#: templates/js/translated/tables.js:369
msgid "No matching results"
msgstr ""
-#: templates/js/translated/tables.js:357
+#: templates/js/translated/tables.js:372
msgid "Hide/Show pagination"
msgstr ""
-#: templates/js/translated/tables.js:360
+#: templates/js/translated/tables.js:375
msgid "Refresh"
msgstr ""
-#: templates/js/translated/tables.js:363
+#: templates/js/translated/tables.js:378
msgid "Toggle"
msgstr ""
-#: templates/js/translated/tables.js:366
+#: templates/js/translated/tables.js:381
msgid "Columns"
msgstr ""
-#: templates/js/translated/tables.js:369
+#: templates/js/translated/tables.js:384
msgid "All"
msgstr ""
-#: templates/navbar.html:13
+#: templates/navbar.html:19
msgid "Toggle navigation"
msgstr ""
-#: templates/navbar.html:33
+#: templates/navbar.html:39
msgid "Buy"
msgstr ""
-#: templates/navbar.html:43
+#: templates/navbar.html:51
msgid "Sell"
msgstr ""
-#: templates/navbar.html:55
-msgid "Scan Barcode"
-msgstr ""
-
-#: templates/navbar.html:77 users/models.py:39
+#: templates/navbar.html:87 users/models.py:39
msgid "Admin"
msgstr ""
-#: templates/navbar.html:79
+#: templates/navbar.html:89
msgid "Logout"
msgstr ""
-#: templates/navbar.html:81 templates/registration/login.html:89
+#: templates/navbar.html:91 templates/registration/login.html:89
msgid "Login"
msgstr ""
-#: templates/navbar.html:104
+#: templates/navbar.html:114
msgid "About InvenTree"
msgstr ""
diff --git a/InvenTree/locale/zh/LC_MESSAGES/django.po b/InvenTree/locale/zh/LC_MESSAGES/django.po
index 0bd8a11455..f3febfab99 100644
--- a/InvenTree/locale/zh/LC_MESSAGES/django.po
+++ b/InvenTree/locale/zh/LC_MESSAGES/django.po
@@ -2,8 +2,8 @@ msgid ""
msgstr ""
"Project-Id-Version: inventree\n"
"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2021-08-07 15:14+0000\n"
-"PO-Revision-Date: 2021-08-07 15:30\n"
+"POT-Creation-Date: 2021-09-12 13:15+0000\n"
+"PO-Revision-Date: 2021-09-12 13:44\n"
"Last-Translator: \n"
"Language-Team: Chinese Simplified\n"
"Language: zh_CN\n"
@@ -36,7 +36,7 @@ msgstr "输入日期"
#: InvenTree/forms.py:111 build/forms.py:102 build/forms.py:123
#: build/forms.py:145 build/forms.py:169 build/forms.py:185 build/forms.py:227
#: order/forms.py:30 order/forms.py:41 order/forms.py:52 order/forms.py:63
-#: order/forms.py:74 part/forms.py:108 templates/js/translated/forms.js:545
+#: order/forms.py:74 part/forms.py:108 templates/js/translated/forms.js:564
msgid "Confirm"
msgstr "确认"
@@ -46,7 +46,7 @@ msgstr "确认删除"
#: InvenTree/forms.py:128
msgid "Confirm item deletion"
-msgstr ""
+msgstr "确认删除"
#: InvenTree/forms.py:160 templates/registration/login.html:76
msgid "Enter password"
@@ -71,27 +71,27 @@ msgstr "选择分类"
#: InvenTree/helpers.py:401
#, python-brace-format
msgid "Duplicate serial: {n}"
-msgstr ""
+msgstr "重复的序列号: {n}"
-#: InvenTree/helpers.py:408 order/models.py:315 order/models.py:425
+#: InvenTree/helpers.py:408 order/models.py:315 order/models.py:430
#: stock/views.py:1363
msgid "Invalid quantity provided"
-msgstr ""
+msgstr "提供的数量无效"
#: InvenTree/helpers.py:411
msgid "Empty serial number string"
-msgstr ""
+msgstr "空序列号字符串"
#: InvenTree/helpers.py:433 InvenTree/helpers.py:436 InvenTree/helpers.py:439
#: InvenTree/helpers.py:464
#, python-brace-format
msgid "Invalid group: {g}"
-msgstr ""
+msgstr "无效的群组: {g}"
#: InvenTree/helpers.py:469
#, python-brace-format
msgid "Duplicate serial: {g}"
-msgstr ""
+msgstr "重复的序列号: {g}"
#: InvenTree/helpers.py:477
msgid "No serial numbers found"
@@ -100,441 +100,469 @@ msgstr "未找到序列号"
#: InvenTree/helpers.py:481
#, python-brace-format
msgid "Number of unique serial number ({s}) must match quantity ({q})"
-msgstr ""
+msgstr "唯一序列号 ({s}) 必须匹配数量 ({q})"
-#: InvenTree/models.py:61 stock/models.py:1815
+#: InvenTree/models.py:66 stock/models.py:1826
msgid "Attachment"
msgstr "附件"
-#: InvenTree/models.py:62
+#: InvenTree/models.py:67
msgid "Select file to attach"
msgstr "选择附件"
-#: InvenTree/models.py:64 templates/js/translated/attachment.js:52
+#: InvenTree/models.py:69 templates/js/translated/attachment.js:87
msgid "Comment"
msgstr "注释"
-#: InvenTree/models.py:64
+#: InvenTree/models.py:69
msgid "File comment"
msgstr "文件注释"
-#: InvenTree/models.py:70 InvenTree/models.py:71 common/models.py:969
-#: common/models.py:970 part/models.py:2035
+#: InvenTree/models.py:75 InvenTree/models.py:76 common/models.py:993
+#: common/models.py:994 part/models.py:2051
#: report/templates/report/inventree_test_report_base.html:91
-#: templates/js/translated/stock.js:1549
+#: templates/js/translated/stock.js:1690
msgid "User"
msgstr "用户"
-#: InvenTree/models.py:74
+#: InvenTree/models.py:79
msgid "upload date"
msgstr "上传日期"
-#: InvenTree/models.py:113
-msgid "Invalid choice"
-msgstr ""
+#: InvenTree/models.py:99
+msgid "Filename must not be empty"
+msgstr "文件名不能为空!"
-#: InvenTree/models.py:129 InvenTree/models.py:130 company/models.py:412
-#: label/models.py:112 part/models.py:656 part/models.py:2196
-#: part/templates/part/part_base.html:233 report/models.py:181
+#: InvenTree/models.py:122
+msgid "Invalid attachment directory"
+msgstr "非法的附件目录"
+
+#: InvenTree/models.py:132
+#, python-brace-format
+msgid "Filename contains illegal character '{c}'"
+msgstr "文件名包含非法字符 '{c}'"
+
+#: InvenTree/models.py:135
+msgid "Filename missing extension"
+msgstr "缺少文件名扩展"
+
+#: InvenTree/models.py:142
+msgid "Attachment with this filename already exists"
+msgstr "使用此文件名的附件已存在"
+
+#: InvenTree/models.py:149
+msgid "Error renaming file"
+msgstr "重命名文件出错"
+
+#: InvenTree/models.py:184
+msgid "Invalid choice"
+msgstr "选择无效"
+
+#: InvenTree/models.py:200 InvenTree/models.py:201 company/models.py:414
+#: label/models.py:112 part/models.py:658 part/models.py:2212
+#: part/templates/part/part_base.html:241 report/models.py:181
#: templates/InvenTree/search.html:137 templates/InvenTree/search.html:289
-#: templates/js/translated/company.js:583 templates/js/translated/part.js:338
-#: templates/js/translated/part.js:471 templates/js/translated/part.js:963
-#: templates/js/translated/stock.js:1342
+#: templates/js/translated/company.js:636 templates/js/translated/part.js:466
+#: templates/js/translated/part.js:603 templates/js/translated/part.js:1130
+#: templates/js/translated/stock.js:1483
msgid "Name"
msgstr "名称"
-#: InvenTree/models.py:136 build/models.py:187
-#: build/templates/build/detail.html:24 company/models.py:351
-#: company/models.py:519 company/templates/company/manufacturer_part.html:76
+#: InvenTree/models.py:207 build/models.py:187
+#: build/templates/build/detail.html:24 company/models.py:353
+#: company/models.py:569 company/templates/company/manufacturer_part.html:76
#: company/templates/company/supplier_part.html:75 label/models.py:119
-#: order/models.py:158 order/templates/order/purchase_order_detail.html:312
-#: part/models.py:679 part/templates/part/part_base.html:238
+#: order/models.py:158 part/models.py:681
+#: part/templates/part/part_base.html:246
#: part/templates/part/set_category.html:14 report/models.py:194
#: report/models.py:551 report/models.py:590
#: report/templates/report/inventree_build_order_base.html:118
#: templates/InvenTree/search.html:144 templates/InvenTree/search.html:224
#: templates/InvenTree/search.html:296
#: templates/InvenTree/settings/header.html:9
-#: templates/js/translated/bom.js:210 templates/js/translated/build.js:868
-#: templates/js/translated/build.js:1162 templates/js/translated/company.js:299
-#: templates/js/translated/company.js:497
-#: templates/js/translated/company.js:779 templates/js/translated/order.js:267
-#: templates/js/translated/order.js:369 templates/js/translated/part.js:397
-#: templates/js/translated/part.js:581 templates/js/translated/part.js:758
-#: templates/js/translated/part.js:975 templates/js/translated/part.js:1043
-#: templates/js/translated/stock.js:926 templates/js/translated/stock.js:1354
-#: templates/js/translated/stock.js:1399
+#: templates/js/translated/bom.js:230 templates/js/translated/build.js:891
+#: templates/js/translated/build.js:1179 templates/js/translated/company.js:344
+#: templates/js/translated/company.js:546
+#: templates/js/translated/company.js:834 templates/js/translated/order.js:341
+#: templates/js/translated/order.js:486 templates/js/translated/order.js:710
+#: templates/js/translated/part.js:525 templates/js/translated/part.js:713
+#: templates/js/translated/part.js:902 templates/js/translated/part.js:1142
+#: templates/js/translated/part.js:1210 templates/js/translated/stock.js:840
+#: templates/js/translated/stock.js:1495 templates/js/translated/stock.js:1540
msgid "Description"
-msgstr ""
+msgstr "描述信息"
-#: InvenTree/models.py:137
+#: InvenTree/models.py:208
msgid "Description (optional)"
-msgstr ""
+msgstr "描述 (可选)"
-#: InvenTree/models.py:145
+#: InvenTree/models.py:216
msgid "parent"
-msgstr ""
+msgstr "上级项"
-#: InvenTree/serializers.py:52 part/models.py:2438
+#: InvenTree/serializers.py:55 part/models.py:2454
msgid "Must be a valid number"
-msgstr ""
+msgstr "必须是有效数字"
-#: InvenTree/settings.py:518
-msgid "German"
-msgstr ""
-
-#: InvenTree/settings.py:519
-msgid "Greek"
-msgstr ""
-
-#: InvenTree/settings.py:520
-msgid "English"
-msgstr ""
-
-#: InvenTree/settings.py:521
-msgid "Spanish"
-msgstr ""
-
-#: InvenTree/settings.py:522
-msgid "French"
-msgstr ""
+#: InvenTree/serializers.py:244
+msgid "Filename"
+msgstr "文件名"
#: InvenTree/settings.py:523
-msgid "Hebrew"
-msgstr ""
+msgid "German"
+msgstr "德语"
#: InvenTree/settings.py:524
-msgid "Italian"
-msgstr ""
+msgid "Greek"
+msgstr "希腊语"
#: InvenTree/settings.py:525
-msgid "Japanese"
-msgstr ""
+msgid "English"
+msgstr "英语"
#: InvenTree/settings.py:526
-msgid "Korean"
-msgstr ""
+msgid "Spanish"
+msgstr "西班牙语"
#: InvenTree/settings.py:527
-msgid "Dutch"
-msgstr ""
+msgid "French"
+msgstr "法语"
#: InvenTree/settings.py:528
-msgid "Norwegian"
-msgstr ""
+msgid "Hebrew"
+msgstr "希伯来语"
#: InvenTree/settings.py:529
-msgid "Polish"
-msgstr ""
+msgid "Italian"
+msgstr "意大利语"
#: InvenTree/settings.py:530
-msgid "Russian"
-msgstr ""
+msgid "Japanese"
+msgstr "日语"
#: InvenTree/settings.py:531
-msgid "Swedish"
-msgstr ""
+msgid "Korean"
+msgstr "韩语"
#: InvenTree/settings.py:532
-msgid "Thai"
-msgstr ""
+msgid "Dutch"
+msgstr "荷兰语"
#: InvenTree/settings.py:533
-msgid "Turkish"
-msgstr ""
+msgid "Norwegian"
+msgstr "挪威语"
#: InvenTree/settings.py:534
-msgid "Vietnamese"
-msgstr ""
+msgid "Polish"
+msgstr "波兰语"
#: InvenTree/settings.py:535
+msgid "Russian"
+msgstr "俄语"
+
+#: InvenTree/settings.py:536
+msgid "Swedish"
+msgstr "瑞典语"
+
+#: InvenTree/settings.py:537
+msgid "Thai"
+msgstr "泰语"
+
+#: InvenTree/settings.py:538
+msgid "Turkish"
+msgstr "土耳其语"
+
+#: InvenTree/settings.py:539
+msgid "Vietnamese"
+msgstr "越南语"
+
+#: InvenTree/settings.py:540
msgid "Chinese"
-msgstr ""
+msgstr "中文(简体)"
#: InvenTree/status.py:94
msgid "Background worker check failed"
-msgstr ""
+msgstr "后台工作人员检查失败"
#: InvenTree/status.py:98
msgid "Email backend not configured"
-msgstr ""
+msgstr "未配置电子邮件后端"
#: InvenTree/status.py:101
msgid "InvenTree system health checks failed"
-msgstr ""
+msgstr "InventTree系统健康检查失败"
#: InvenTree/status_codes.py:104 InvenTree/status_codes.py:145
#: InvenTree/status_codes.py:314
msgid "Pending"
-msgstr ""
+msgstr "待定"
#: InvenTree/status_codes.py:105
msgid "Placed"
-msgstr ""
+msgstr "已添加"
#: InvenTree/status_codes.py:106 InvenTree/status_codes.py:317
msgid "Complete"
-msgstr ""
+msgstr "完成"
#: InvenTree/status_codes.py:107 InvenTree/status_codes.py:147
#: InvenTree/status_codes.py:316
msgid "Cancelled"
-msgstr ""
+msgstr "已取消"
#: InvenTree/status_codes.py:108 InvenTree/status_codes.py:148
#: InvenTree/status_codes.py:190
msgid "Lost"
-msgstr ""
+msgstr "丢失"
#: InvenTree/status_codes.py:109 InvenTree/status_codes.py:149
#: InvenTree/status_codes.py:192
msgid "Returned"
-msgstr ""
+msgstr "已退回"
#: InvenTree/status_codes.py:146
#: order/templates/order/sales_order_base.html:126
msgid "Shipped"
-msgstr ""
+msgstr "已发货"
#: InvenTree/status_codes.py:186
msgid "OK"
-msgstr ""
+msgstr "确定"
#: InvenTree/status_codes.py:187
msgid "Attention needed"
-msgstr ""
+msgstr "注意"
#: InvenTree/status_codes.py:188
msgid "Damaged"
-msgstr ""
+msgstr "破损"
#: InvenTree/status_codes.py:189
msgid "Destroyed"
-msgstr ""
+msgstr "销毁"
#: InvenTree/status_codes.py:191
msgid "Rejected"
-msgstr ""
+msgstr "已拒绝"
#: InvenTree/status_codes.py:272
msgid "Legacy stock tracking entry"
-msgstr ""
+msgstr "旧库存跟踪条目"
#: InvenTree/status_codes.py:274
msgid "Stock item created"
-msgstr ""
+msgstr "库存项已创建"
#: InvenTree/status_codes.py:276
msgid "Edited stock item"
-msgstr ""
+msgstr "已编辑库存项"
#: InvenTree/status_codes.py:277
msgid "Assigned serial number"
-msgstr ""
+msgstr "已分配序列号"
#: InvenTree/status_codes.py:279
msgid "Stock counted"
-msgstr ""
+msgstr "库存计数"
#: InvenTree/status_codes.py:280
msgid "Stock manually added"
-msgstr ""
+msgstr "已手动添加库存"
#: InvenTree/status_codes.py:281
msgid "Stock manually removed"
-msgstr ""
+msgstr "库存手动删除"
#: InvenTree/status_codes.py:283
msgid "Location changed"
-msgstr ""
+msgstr "位置已更改"
#: InvenTree/status_codes.py:285
msgid "Installed into assembly"
-msgstr ""
+msgstr "安装到组装中"
#: InvenTree/status_codes.py:286
msgid "Removed from assembly"
-msgstr ""
+msgstr "已从组装中删除"
#: InvenTree/status_codes.py:288
msgid "Installed component item"
-msgstr ""
+msgstr "已安装组件项"
#: InvenTree/status_codes.py:289
msgid "Removed component item"
-msgstr ""
+msgstr "已删除组件项"
#: InvenTree/status_codes.py:291
msgid "Split from parent item"
-msgstr ""
+msgstr "从父项拆分"
#: InvenTree/status_codes.py:292
msgid "Split child item"
-msgstr ""
+msgstr "拆分子项"
-#: InvenTree/status_codes.py:294 templates/js/translated/table_filters.js:173
+#: InvenTree/status_codes.py:294 templates/js/translated/table_filters.js:186
msgid "Sent to customer"
-msgstr ""
+msgstr "发送给客户"
#: InvenTree/status_codes.py:295
msgid "Returned from customer"
-msgstr ""
+msgstr "从客户退货"
#: InvenTree/status_codes.py:297
msgid "Build order output created"
-msgstr ""
+msgstr "已创建生产订单输出"
#: InvenTree/status_codes.py:298
msgid "Build order output completed"
-msgstr ""
+msgstr "生产订单输出已完成"
#: InvenTree/status_codes.py:300
msgid "Received against purchase order"
-msgstr ""
+msgstr "收到定购单"
#: InvenTree/status_codes.py:315
msgid "Production"
-msgstr ""
+msgstr "产品"
#: InvenTree/validators.py:22
msgid "Not a valid currency code"
-msgstr ""
+msgstr "不是有效的货币代码"
#: InvenTree/validators.py:50
msgid "Invalid character in part name"
-msgstr ""
+msgstr "部件名称中存在无效字符"
#: InvenTree/validators.py:63
#, python-brace-format
msgid "IPN must match regex pattern {pat}"
-msgstr ""
+msgstr "IPN 必须匹配正则表达式 {pat}"
#: InvenTree/validators.py:77 InvenTree/validators.py:91
#: InvenTree/validators.py:105
#, python-brace-format
msgid "Reference must match pattern {pattern}"
-msgstr ""
+msgstr "引用必须匹配模板 {pattern}"
#: InvenTree/validators.py:113
#, python-brace-format
msgid "Illegal character in name ({x})"
-msgstr ""
+msgstr "名称中存在非法字符 ({x})"
#: InvenTree/validators.py:132 InvenTree/validators.py:148
msgid "Overage value must not be negative"
-msgstr ""
+msgstr "备损值不能为负数"
#: InvenTree/validators.py:150
msgid "Overage must not exceed 100%"
-msgstr ""
+msgstr "备损不能超过 100%"
#: InvenTree/validators.py:157
msgid "Overage must be an integer value or a percentage"
-msgstr ""
+msgstr "备损必须是整数值或百分比"
-#: InvenTree/views.py:612
+#: InvenTree/views.py:610
msgid "Delete Item"
-msgstr ""
+msgstr "删除项"
-#: InvenTree/views.py:661
+#: InvenTree/views.py:659
msgid "Check box to confirm item deletion"
-msgstr ""
+msgstr "选中方框以确认项目删除"
-#: InvenTree/views.py:676 templates/InvenTree/settings/user.html:14
+#: InvenTree/views.py:674 templates/InvenTree/settings/user.html:14
msgid "Edit User Information"
-msgstr ""
+msgstr "编辑用户信息"
-#: InvenTree/views.py:687 templates/InvenTree/settings/user.html:18
+#: InvenTree/views.py:685 templates/InvenTree/settings/user.html:18
msgid "Set Password"
-msgstr ""
+msgstr "设置密码"
-#: InvenTree/views.py:706
+#: InvenTree/views.py:704
msgid "Password fields must match"
-msgstr ""
+msgstr "密码字段必须相匹配。"
-#: InvenTree/views.py:907 templates/navbar.html:95
+#: InvenTree/views.py:910 templates/navbar.html:105
msgid "System Information"
-msgstr ""
+msgstr "系统信息"
#: barcodes/api.py:53 barcodes/api.py:150
msgid "Must provide barcode_data parameter"
-msgstr ""
+msgstr "必须提供条码数据参数"
#: barcodes/api.py:126
msgid "No match found for barcode data"
-msgstr ""
+msgstr "未找到匹配条形码数据"
#: barcodes/api.py:128
msgid "Match found for barcode data"
-msgstr ""
+msgstr "找到匹配条形码数据"
#: barcodes/api.py:153
msgid "Must provide stockitem parameter"
-msgstr ""
+msgstr "必须提供库存项参数"
#: barcodes/api.py:160
msgid "No matching stock item found"
-msgstr ""
+msgstr "未找到匹配的库存项"
#: barcodes/api.py:190
msgid "Barcode already matches StockItem object"
-msgstr ""
+msgstr "条形码已经匹配库存项"
#: barcodes/api.py:194
msgid "Barcode already matches StockLocation object"
-msgstr ""
+msgstr "条形码已经匹配库存地对象"
#: barcodes/api.py:198
msgid "Barcode already matches Part object"
-msgstr ""
+msgstr "条形码已经匹配部件对象"
#: barcodes/api.py:204 barcodes/api.py:216
msgid "Barcode hash already matches StockItem object"
-msgstr ""
+msgstr "条码哈希值已经匹配库存项目"
#: barcodes/api.py:222
msgid "Barcode associated with StockItem"
-msgstr ""
+msgstr "与库存项关联的条形码"
#: build/forms.py:37
msgid "Build Order reference"
-msgstr ""
+msgstr "相关生产订单"
#: build/forms.py:38
msgid "Order target date"
-msgstr ""
+msgstr "订单预计日期"
#: build/forms.py:42 build/templates/build/build_base.html:146
#: build/templates/build/detail.html:124
#: order/templates/order/order_base.html:124
#: order/templates/order/sales_order_base.html:119
#: report/templates/report/inventree_build_order_base.html:126
-#: templates/js/translated/build.js:945 templates/js/translated/order.js:284
-#: templates/js/translated/order.js:387
+#: templates/js/translated/build.js:962 templates/js/translated/order.js:358
+#: templates/js/translated/order.js:728
msgid "Target Date"
-msgstr ""
+msgstr "预计日期"
#: build/forms.py:43 build/models.py:277
msgid "Target date for build completion. Build will be overdue after this date."
-msgstr ""
+msgstr "生产完成的目标日期。生产将在此日期之后逾期。"
#: build/forms.py:48 build/forms.py:90 build/forms.py:266 build/models.py:1402
#: build/templates/build/allocation_card.html:23
#: build/templates/build/auto_allocate.html:17
#: build/templates/build/build_base.html:133
-#: build/templates/build/detail.html:34 common/models.py:1001
+#: build/templates/build/detail.html:34 common/models.py:1025
#: company/forms.py:42 company/templates/company/supplier_part.html:226
-#: order/forms.py:120 order/forms.py:142 order/forms.py:159 order/models.py:706
-#: order/models.py:952 order/templates/order/order_wizard/match_parts.html:30
+#: order/forms.py:120 order/forms.py:142 order/forms.py:159 order/models.py:712
+#: order/models.py:964 order/templates/order/order_wizard/match_parts.html:30
#: order/templates/order/order_wizard/select_parts.html:34
-#: order/templates/order/purchase_order_detail.html:348
-#: order/templates/order/sales_order_detail.html:200
-#: order/templates/order/sales_order_detail.html:207
-#: order/templates/order/sales_order_detail.html:292
-#: order/templates/order/sales_order_detail.html:364 part/forms.py:249
-#: part/forms.py:265 part/forms.py:281 part/models.py:2340
+#: order/templates/order/sales_order_detail.html:201
+#: order/templates/order/sales_order_detail.html:208
+#: order/templates/order/sales_order_detail.html:293
+#: order/templates/order/sales_order_detail.html:365 part/forms.py:249
+#: part/forms.py:265 part/forms.py:281 part/models.py:2356
#: part/templates/part/bom_upload/match_parts.html:31
-#: part/templates/part/detail.html:940 part/templates/part/detail.html:1026
+#: part/templates/part/detail.html:973 part/templates/part/detail.html:1059
#: part/templates/part/part_pricing.html:16
#: report/templates/report/inventree_build_order_base.html:114
#: report/templates/report/inventree_po_report.html:91
@@ -542,168 +570,169 @@ msgstr ""
#: report/templates/report/inventree_test_report_base.html:77
#: stock/forms.py:140 stock/templates/stock/item_base.html:269
#: stock/templates/stock/stock_adjust.html:18
-#: templates/js/translated/barcode.js:364 templates/js/translated/bom.js:225
-#: templates/js/translated/build.js:271 templates/js/translated/build.js:606
-#: templates/js/translated/build.js:1172
-#: templates/js/translated/model_renderers.js:56
-#: templates/js/translated/order.js:482 templates/js/translated/part.js:1148
-#: templates/js/translated/part.js:1270 templates/js/translated/part.js:1326
-#: templates/js/translated/stock.js:1534 templates/js/translated/stock.js:1732
+#: templates/js/translated/barcode.js:386 templates/js/translated/bom.js:245
+#: templates/js/translated/build.js:298 templates/js/translated/build.js:629
+#: templates/js/translated/build.js:1189
+#: templates/js/translated/model_renderers.js:59
+#: templates/js/translated/order.js:522 templates/js/translated/order.js:824
+#: templates/js/translated/part.js:1317 templates/js/translated/part.js:1440
+#: templates/js/translated/part.js:1518 templates/js/translated/stock.js:1675
+#: templates/js/translated/stock.js:1850
msgid "Quantity"
-msgstr ""
+msgstr "库存数"
#: build/forms.py:49
msgid "Number of items to build"
-msgstr ""
+msgstr "要生产的项目数量"
#: build/forms.py:91
msgid "Enter quantity for build output"
-msgstr ""
+msgstr "输入生产产出数量"
#: build/forms.py:95 order/forms.py:114 stock/forms.py:83
msgid "Serial Numbers"
-msgstr ""
+msgstr "序列号"
#: build/forms.py:97
msgid "Enter serial numbers for build outputs"
-msgstr ""
+msgstr "输入生产产出的序列号"
#: build/forms.py:103
msgid "Confirm creation of build output"
-msgstr ""
+msgstr "确认创建生产产出"
#: build/forms.py:124
msgid "Confirm deletion of build output"
-msgstr ""
+msgstr "确认删除生产产出"
#: build/forms.py:145
msgid "Confirm unallocation of stock"
-msgstr ""
+msgstr "确认取消分配库存"
#: build/forms.py:169
msgid "Confirm stock allocation"
-msgstr ""
+msgstr "确认库存分配"
#: build/forms.py:186
msgid "Mark build as complete"
-msgstr ""
+msgstr "标记生产已完成"
#: build/forms.py:210 build/templates/build/auto_allocate.html:18
-#: stock/forms.py:280 stock/templates/stock/item_base.html:299
+#: order/serializers.py:216 order/serializers.py:275 stock/forms.py:280
+#: stock/templates/stock/item_base.html:299
#: stock/templates/stock/stock_adjust.html:17
-#: templates/InvenTree/search.html:260 templates/js/translated/barcode.js:363
-#: templates/js/translated/barcode.js:531 templates/js/translated/build.js:256
-#: templates/js/translated/build.js:620 templates/js/translated/order.js:467
-#: templates/js/translated/stock.js:134 templates/js/translated/stock.js:260
-#: templates/js/translated/stock.js:1012 templates/js/translated/stock.js:1426
+#: templates/InvenTree/search.html:260 templates/js/translated/barcode.js:385
+#: templates/js/translated/barcode.js:555 templates/js/translated/build.js:283
+#: templates/js/translated/build.js:643 templates/js/translated/order.js:809
+#: templates/js/translated/part.js:174 templates/js/translated/stock.js:203
+#: templates/js/translated/stock.js:329 templates/js/translated/stock.js:942
+#: templates/js/translated/stock.js:1567
msgid "Location"
-msgstr ""
+msgstr "所在地"
#: build/forms.py:211
msgid "Location of completed parts"
-msgstr ""
+msgstr "已完成部件所在地"
#: build/forms.py:215 build/templates/build/build_base.html:138
-#: build/templates/build/detail.html:62 order/models.py:549
-#: order/templates/order/receive_parts.html:24
+#: build/templates/build/detail.html:62 order/models.py:555
+#: order/serializers.py:230 order/templates/order/receive_parts.html:24
#: stock/templates/stock/item_base.html:422 templates/InvenTree/search.html:252
-#: templates/js/translated/barcode.js:119 templates/js/translated/build.js:902
-#: templates/js/translated/order.js:271 templates/js/translated/order.js:374
-#: templates/js/translated/stock.js:999 templates/js/translated/stock.js:1503
-#: templates/js/translated/stock.js:1748
+#: templates/js/translated/barcode.js:141 templates/js/translated/build.js:925
+#: templates/js/translated/order.js:345 templates/js/translated/order.js:715
+#: templates/js/translated/stock.js:917 templates/js/translated/stock.js:1644
+#: templates/js/translated/stock.js:1866
msgid "Status"
-msgstr ""
+msgstr "状态"
#: build/forms.py:216
msgid "Build output stock status"
-msgstr ""
+msgstr "生产产出库存状态"
#: build/forms.py:223
msgid "Confirm incomplete"
-msgstr ""
+msgstr "确认未完成"
#: build/forms.py:224
msgid "Confirm completion with incomplete stock allocation"
-msgstr ""
+msgstr "确认以未完成库存分配方式完成"
#: build/forms.py:227
msgid "Confirm build completion"
-msgstr ""
+msgstr "确认生产完成"
#: build/forms.py:252
msgid "Confirm cancel"
-msgstr ""
+msgstr "确认取消"
#: build/forms.py:252 build/views.py:65
msgid "Confirm build cancellation"
-msgstr ""
+msgstr "确认生产取消"
#: build/forms.py:266
msgid "Select quantity of stock to allocate"
-msgstr ""
+msgstr "选择要分配的库存数量"
#: build/models.py:113
msgid "Invalid choice for parent build"
-msgstr ""
+msgstr "上级生产选项无效"
#: build/models.py:117 build/templates/build/build_base.html:9
#: build/templates/build/build_base.html:73
#: report/templates/report/inventree_build_order_base.html:106
-#: templates/js/translated/build.js:233
+#: templates/js/translated/build.js:260
msgid "Build Order"
-msgstr ""
+msgstr "生产订单"
#: build/models.py:118 build/templates/build/index.html:8
#: build/templates/build/index.html:15
#: order/templates/order/sales_order_detail.html:34
#: order/templates/order/so_navbar.html:19
-#: order/templates/order/so_navbar.html:22 part/templates/part/navbar.html:42
-#: part/templates/part/navbar.html:45 templates/InvenTree/index.html:229
+#: order/templates/order/so_navbar.html:22 part/templates/part/navbar.html:50
+#: part/templates/part/navbar.html:53 templates/InvenTree/index.html:229
#: templates/InvenTree/search.html:185
#: templates/InvenTree/settings/navbar.html:101
#: templates/InvenTree/settings/navbar.html:103 users/models.py:44
msgid "Build Orders"
-msgstr ""
+msgstr "生产订单"
#: build/models.py:178
msgid "Build Order Reference"
-msgstr ""
+msgstr "相关生产订单"
-#: build/models.py:179 order/models.py:246 order/models.py:533
-#: order/models.py:713 order/templates/order/purchase_order_detail.html:343
-#: order/templates/order/sales_order_detail.html:359 part/models.py:2349
-#: part/templates/part/bom_upload/match_parts.html:30
+#: build/models.py:179 order/models.py:246 order/models.py:539
+#: order/models.py:719 order/templates/order/sales_order_detail.html:360
+#: part/models.py:2365 part/templates/part/bom_upload/match_parts.html:30
#: report/templates/report/inventree_po_report.html:92
#: report/templates/report/inventree_so_report.html:92
-#: templates/js/translated/bom.js:217 templates/js/translated/build.js:695
-#: templates/js/translated/build.js:1166
+#: templates/js/translated/bom.js:237 templates/js/translated/build.js:718
+#: templates/js/translated/build.js:1183 templates/js/translated/order.js:517
msgid "Reference"
-msgstr ""
+msgstr "引用"
#: build/models.py:190
msgid "Brief description of the build"
-msgstr ""
+msgstr "生产的简短描述."
#: build/models.py:199 build/templates/build/build_base.html:163
#: build/templates/build/detail.html:80
msgid "Parent Build"
-msgstr ""
+msgstr "上级生产"
#: build/models.py:200
msgid "BuildOrder to which this build is allocated"
-msgstr ""
+msgstr "此次生生匹配的订单"
#: build/models.py:205 build/templates/build/auto_allocate.html:16
#: build/templates/build/build_base.html:128
-#: build/templates/build/detail.html:29 company/models.py:654
-#: order/models.py:766 order/models.py:825
+#: build/templates/build/detail.html:29 company/models.py:704
+#: order/models.py:772 order/models.py:837
#: order/templates/order/order_wizard/select_parts.html:32
-#: order/templates/order/purchase_order_detail.html:297
#: order/templates/order/receive_parts.html:19
-#: order/templates/order/sales_order_detail.html:344 part/models.py:295
-#: part/models.py:1980 part/models.py:1996 part/models.py:2015
-#: part/models.py:2033 part/models.py:2112 part/models.py:2234
-#: part/models.py:2324 part/templates/part/detail.html:199
+#: order/templates/order/sales_order_detail.html:345 part/models.py:297
+#: part/models.py:1996 part/models.py:2012 part/models.py:2031
+#: part/models.py:2049 part/models.py:2128 part/models.py:2250
+#: part/models.py:2340 part/templates/part/detail.html:199
#: part/templates/part/part_app_base.html:8
#: part/templates/part/part_pricing.html:12
#: part/templates/part/set_category.html:13
@@ -711,30 +740,31 @@ msgstr ""
#: report/templates/report/inventree_po_report.html:90
#: report/templates/report/inventree_so_report.html:90
#: templates/InvenTree/search.html:112 templates/InvenTree/search.html:210
-#: templates/js/translated/barcode.js:362 templates/js/translated/bom.js:183
-#: templates/js/translated/build.js:586 templates/js/translated/build.js:873
-#: templates/js/translated/build.js:1139 templates/js/translated/company.js:438
-#: templates/js/translated/company.js:688 templates/js/translated/part.js:562
-#: templates/js/translated/part.js:725 templates/js/translated/stock.js:132
-#: templates/js/translated/stock.js:895 templates/js/translated/stock.js:1720
+#: templates/js/translated/barcode.js:384 templates/js/translated/bom.js:203
+#: templates/js/translated/build.js:609 templates/js/translated/build.js:896
+#: templates/js/translated/build.js:1156 templates/js/translated/company.js:487
+#: templates/js/translated/company.js:743 templates/js/translated/order.js:471
+#: templates/js/translated/part.js:694 templates/js/translated/part.js:864
+#: templates/js/translated/stock.js:201 templates/js/translated/stock.js:797
+#: templates/js/translated/stock.js:1838
msgid "Part"
-msgstr ""
+msgstr "部件"
#: build/models.py:213
msgid "Select part to build"
-msgstr ""
+msgstr "选择生产所需部件"
#: build/models.py:218
msgid "Sales Order Reference"
-msgstr ""
+msgstr "相关销售订单"
#: build/models.py:222
msgid "SalesOrder to which this build is allocated"
-msgstr ""
+msgstr "此次生产匹配的销售订单"
#: build/models.py:227
msgid "Source Location"
-msgstr ""
+msgstr "来源地点"
#: build/models.py:231
msgid "Select location to take stock from for this build (leave blank to take from any stock location)"
@@ -742,131 +772,130 @@ msgstr ""
#: build/models.py:236
msgid "Destination Location"
-msgstr ""
+msgstr "目标地点"
#: build/models.py:240
msgid "Select location where the completed items will be stored"
-msgstr ""
+msgstr "选择已完成项目存储的位置"
#: build/models.py:244
msgid "Build Quantity"
-msgstr ""
+msgstr "生产数量"
#: build/models.py:247
msgid "Number of stock items to build"
-msgstr ""
+msgstr "要生产的项目数量"
#: build/models.py:251
msgid "Completed items"
-msgstr ""
+msgstr "已完成项目"
#: build/models.py:253
msgid "Number of stock items which have been completed"
-msgstr ""
+msgstr "已完成的库存项目数量"
-#: build/models.py:257 part/templates/part/part_base.html:191
+#: build/models.py:257 part/templates/part/part_base.html:198
msgid "Build Status"
-msgstr ""
+msgstr "生产状态"
#: build/models.py:261
msgid "Build status code"
-msgstr ""
+msgstr "生产状态代码"
-#: build/models.py:265 stock/models.py:507
+#: build/models.py:265 stock/models.py:513
msgid "Batch Code"
-msgstr ""
+msgstr "批量代码"
#: build/models.py:269
msgid "Batch code for this build output"
-msgstr ""
+msgstr "此生产产出的批量代码"
-#: build/models.py:272 order/models.py:162 part/models.py:851
-#: part/templates/part/part_base.html:264 templates/js/translated/order.js:382
+#: build/models.py:272 order/models.py:162 part/models.py:853
+#: part/templates/part/part_base.html:272 templates/js/translated/order.js:723
msgid "Creation Date"
-msgstr ""
+msgstr "创建日期"
-#: build/models.py:276 order/models.py:555
+#: build/models.py:276 order/models.py:561
msgid "Target completion date"
-msgstr ""
+msgstr "预计完成日期"
-#: build/models.py:280 order/models.py:288 templates/js/translated/build.js:950
+#: build/models.py:280 order/models.py:288 templates/js/translated/build.js:967
msgid "Completion Date"
-msgstr ""
+msgstr "完成日期:"
#: build/models.py:286
msgid "completed by"
-msgstr ""
+msgstr "完成人"
-#: build/models.py:294 templates/js/translated/build.js:915
+#: build/models.py:294 templates/js/translated/build.js:938
msgid "Issued by"
-msgstr ""
+msgstr "发布者"
#: build/models.py:295
msgid "User who issued this build order"
-msgstr ""
+msgstr "发布此生产订单的用户"
#: build/models.py:303 build/templates/build/build_base.html:184
#: build/templates/build/detail.html:108 order/models.py:176
#: order/templates/order/order_base.html:138
-#: order/templates/order/sales_order_base.html:140 part/models.py:855
+#: order/templates/order/sales_order_base.html:140 part/models.py:857
#: report/templates/report/inventree_build_order_base.html:159
-#: templates/js/translated/build.js:930
+#: templates/js/translated/build.js:950
msgid "Responsible"
-msgstr ""
+msgstr "责任人"
#: build/models.py:304
msgid "User responsible for this build order"
-msgstr ""
+msgstr "负责此生产订单的用户"
#: build/models.py:309 build/templates/build/detail.html:94
#: company/templates/company/manufacturer_part.html:83
#: company/templates/company/supplier_part.html:82
-#: part/templates/part/part_base.html:258 stock/models.py:501
+#: part/templates/part/part_base.html:266 stock/models.py:507
#: stock/templates/stock/item_base.html:359
msgid "External Link"
-msgstr ""
+msgstr "外部链接"
-#: build/models.py:310 part/models.py:713 stock/models.py:503
+#: build/models.py:310 part/models.py:715 stock/models.py:509
msgid "Link to external URL"
-msgstr ""
+msgstr "链接到外部 URL"
#: build/models.py:314 build/templates/build/navbar.html:52
-#: company/models.py:139 company/models.py:526
-#: company/templates/company/navbar.html:63
-#: company/templates/company/navbar.html:66 order/models.py:180
-#: order/models.py:715 order/templates/order/po_navbar.html:38
+#: company/models.py:141 company/models.py:576
+#: company/templates/company/navbar.html:69
+#: company/templates/company/navbar.html:72 order/models.py:180
+#: order/models.py:721 order/templates/order/po_navbar.html:38
#: order/templates/order/po_navbar.html:41
-#: order/templates/order/purchase_order_detail.html:419
-#: order/templates/order/sales_order_detail.html:439
+#: order/templates/order/sales_order_detail.html:440
#: order/templates/order/so_navbar.html:33
-#: order/templates/order/so_navbar.html:36 part/models.py:840
-#: part/templates/part/detail.html:105 part/templates/part/navbar.html:108
-#: part/templates/part/navbar.html:111
+#: order/templates/order/so_navbar.html:36 part/models.py:842
+#: part/templates/part/detail.html:105 part/templates/part/navbar.html:120
+#: part/templates/part/navbar.html:123
#: report/templates/report/inventree_build_order_base.html:173
-#: stock/forms.py:138 stock/forms.py:250 stock/forms.py:282 stock/models.py:573
-#: stock/models.py:1715 stock/models.py:1821
-#: stock/templates/stock/navbar.html:57 templates/js/translated/barcode.js:37
-#: templates/js/translated/bom.js:369 templates/js/translated/company.js:784
-#: templates/js/translated/stock.js:268 templates/js/translated/stock.js:509
-#: templates/js/translated/stock.js:1090
+#: stock/forms.py:138 stock/forms.py:250 stock/forms.py:282 stock/models.py:579
+#: stock/models.py:1726 stock/models.py:1832
+#: stock/templates/stock/navbar.html:57 templates/js/translated/barcode.js:59
+#: templates/js/translated/bom.js:385 templates/js/translated/company.js:839
+#: templates/js/translated/order.js:604 templates/js/translated/stock.js:338
+#: templates/js/translated/stock.js:580 templates/js/translated/stock.js:1061
msgid "Notes"
-msgstr ""
+msgstr "备注"
#: build/models.py:315
msgid "Extra build notes"
-msgstr ""
+msgstr "额外的生产备注"
#: build/models.py:792
msgid "No build output specified"
-msgstr ""
+msgstr "未指定生产产出"
#: build/models.py:795
msgid "Build output is already completed"
-msgstr ""
+msgstr "生产产出已完成"
#: build/models.py:798
msgid "Build output does not match Build Order"
-msgstr ""
+msgstr "生产产出与订单不匹配"
#: build/models.py:1208
msgid "BuildItem must be unique for build, stock_item and install_into"
@@ -881,13 +910,13 @@ msgstr ""
msgid "Allocated quantity ({n}) must not exceed available quantity ({q})"
msgstr ""
-#: build/models.py:1244 order/models.py:926
+#: build/models.py:1244 order/models.py:938
msgid "StockItem is over-allocated"
msgstr ""
-#: build/models.py:1248 order/models.py:929
+#: build/models.py:1248 order/models.py:941
msgid "Allocation quantity must be greater than zero"
-msgstr ""
+msgstr "分配数量必须大于0"
#: build/models.py:1252
msgid "Quantity must be 1 for serialized stock"
@@ -899,10 +928,10 @@ msgid "Selected stock item not found in BOM for part '{p}'"
msgstr ""
#: build/models.py:1372 stock/templates/stock/item_base.html:331
-#: templates/InvenTree/search.html:183 templates/js/translated/build.js:846
-#: templates/navbar.html:29
+#: templates/InvenTree/search.html:183 templates/js/translated/build.js:869
+#: templates/navbar.html:35
msgid "Build"
-msgstr ""
+msgstr "生产"
#: build/models.py:1373
msgid "Build to allocate parts"
@@ -912,15 +941,15 @@ msgstr ""
#: stock/templates/stock/item_base.html:31
#: stock/templates/stock/item_base.html:353
#: stock/templates/stock/stock_adjust.html:16
-#: templates/js/translated/build.js:244 templates/js/translated/build.js:249
-#: templates/js/translated/build.js:993 templates/js/translated/order.js:455
-#: templates/js/translated/order.js:460 templates/js/translated/stock.js:1485
+#: templates/js/translated/build.js:271 templates/js/translated/build.js:276
+#: templates/js/translated/build.js:1012 templates/js/translated/order.js:797
+#: templates/js/translated/order.js:802 templates/js/translated/stock.js:1626
msgid "Stock Item"
-msgstr ""
+msgstr "库存项"
#: build/models.py:1390
msgid "Source stock item"
-msgstr ""
+msgstr "源库存项"
#: build/models.py:1403
msgid "Stock quantity to allocate to build"
@@ -936,14 +965,14 @@ msgstr ""
#: build/templates/build/allocation_card.html:21
#: build/templates/build/complete_output.html:46
-#: order/templates/order/sales_order_detail.html:205
-#: order/templates/order/sales_order_detail.html:290
+#: order/templates/order/sales_order_detail.html:206
+#: order/templates/order/sales_order_detail.html:291
#: report/templates/report/inventree_test_report_base.html:75
-#: stock/models.py:495 stock/templates/stock/item_base.html:251
-#: templates/js/translated/build.js:604
-#: templates/js/translated/model_renderers.js:54
+#: stock/models.py:501 stock/templates/stock/item_base.html:251
+#: templates/js/translated/build.js:627
+#: templates/js/translated/model_renderers.js:57
msgid "Serial Number"
-msgstr ""
+msgstr "序列号"
#: build/templates/build/auto_allocate.html:9
msgid "Automatically Allocate Stock"
@@ -993,11 +1022,11 @@ msgstr ""
#: company/templates/company/supplier_part.html:30
#: order/templates/order/order_base.html:26
#: order/templates/order/sales_order_base.html:37
-#: part/templates/part/category.html:27 part/templates/part/part_base.html:25
+#: part/templates/part/category.html:27 part/templates/part/part_base.html:30
#: stock/templates/stock/item_base.html:62
#: stock/templates/stock/location.html:31
msgid "Admin view"
-msgstr ""
+msgstr "管理界面"
#: build/templates/build/build_base.html:81
#: build/templates/build/build_base.html:150
@@ -1005,78 +1034,78 @@ msgstr ""
#: order/templates/order/order_base.html:86
#: order/templates/order/sales_order_base.html:43
#: order/templates/order/sales_order_base.html:88
-#: templates/js/translated/table_filters.js:259
-#: templates/js/translated/table_filters.js:278
-#: templates/js/translated/table_filters.js:295
+#: templates/js/translated/table_filters.js:272
+#: templates/js/translated/table_filters.js:291
+#: templates/js/translated/table_filters.js:308
msgid "Overdue"
-msgstr ""
+msgstr "逾期"
#: build/templates/build/build_base.html:90
msgid "Print actions"
-msgstr ""
+msgstr "打印操作"
#: build/templates/build/build_base.html:94
msgid "Print Build Order"
-msgstr ""
+msgstr "打印生产订单"
#: build/templates/build/build_base.html:100
#: build/templates/build/build_base.html:222
msgid "Complete Build"
-msgstr ""
+msgstr "生产完成"
#: build/templates/build/build_base.html:105
msgid "Build actions"
-msgstr ""
+msgstr "生产操作"
#: build/templates/build/build_base.html:109
msgid "Edit Build"
-msgstr ""
+msgstr "编辑生产"
#: build/templates/build/build_base.html:111
#: build/templates/build/build_base.html:206 build/views.py:56
msgid "Cancel Build"
-msgstr ""
+msgstr "取消生产"
#: build/templates/build/build_base.html:114
msgid "Delete Build"
-msgstr ""
+msgstr "删除生产"
#: build/templates/build/build_base.html:124
#: build/templates/build/detail.html:15
msgid "Build Details"
-msgstr ""
+msgstr "生产详情"
#: build/templates/build/build_base.html:150
#, python-format
msgid "This build was due on %(target)s"
-msgstr ""
+msgstr "此次生产的截止日期为 %(target)s"
#: build/templates/build/build_base.html:157
#: build/templates/build/detail.html:67
msgid "Progress"
-msgstr ""
+msgstr "生产进度"
#: build/templates/build/build_base.html:170
-#: build/templates/build/detail.html:87 order/models.py:823
+#: build/templates/build/detail.html:87 order/models.py:835
#: order/templates/order/sales_order_base.html:9
#: order/templates/order/sales_order_base.html:35
#: order/templates/order/sales_order_ship.html:25
#: report/templates/report/inventree_build_order_base.html:136
#: report/templates/report/inventree_so_report.html:77
#: stock/templates/stock/item_base.html:293
-#: templates/js/translated/order.js:329
+#: templates/js/translated/order.js:670
msgid "Sales Order"
-msgstr ""
+msgstr "销售订单"
#: build/templates/build/build_base.html:177
#: build/templates/build/detail.html:101
#: report/templates/report/inventree_build_order_base.html:153
msgid "Issued By"
-msgstr ""
+msgstr "发布者"
#: build/templates/build/build_base.html:214
msgid "Incomplete Outputs"
-msgstr ""
+msgstr "未完成输出"
#: build/templates/build/build_base.html:215
msgid "Build Order cannot be completed as incomplete build outputs remain"
@@ -1108,11 +1137,11 @@ msgstr ""
#: build/templates/build/complete.html:8
msgid "Build Order is complete"
-msgstr ""
+msgstr "生产订单已完成"
#: build/templates/build/complete.html:12
msgid "Build Order is incomplete"
-msgstr ""
+msgstr "生产订单未完成"
#: build/templates/build/complete.html:15
msgid "Incompleted build outputs remain"
@@ -1120,7 +1149,7 @@ msgstr ""
#: build/templates/build/complete.html:18
msgid "Required build quantity has not been completed"
-msgstr ""
+msgstr "所需生产数量尚未完成"
#: build/templates/build/complete.html:21
msgid "Required stock has not been fully allocated"
@@ -1132,7 +1161,7 @@ msgstr ""
#: build/templates/build/complete_output.html:14
msgid "Stock allocation is incomplete"
-msgstr ""
+msgstr "库存分配尚未完成"
#: build/templates/build/complete_output.html:20
msgid "tracked parts have not been fully allocated"
@@ -1148,7 +1177,7 @@ msgstr ""
#: build/templates/build/create_build_item.html:11
#, python-format
-msgid "The allocated stock will be installed into the following build output:
%(output)s"
+msgid "The allocated stock will be installed into the following build output:
%(output)s"
msgstr ""
#: build/templates/build/create_build_item.html:17
@@ -1172,9 +1201,9 @@ msgstr ""
msgid "Stock can be taken from any available location."
msgstr ""
-#: build/templates/build/detail.html:49 order/forms.py:88 order/models.py:782
-#: order/templates/order/purchase_order_detail.html:408
+#: build/templates/build/detail.html:49 order/forms.py:88 order/models.py:794
#: order/templates/order/receive_parts.html:25 stock/forms.py:134
+#: templates/js/translated/order.js:593
msgid "Destination"
msgstr ""
@@ -1184,24 +1213,24 @@ msgstr ""
#: build/templates/build/detail.html:73
#: stock/templates/stock/item_base.html:317
-#: templates/js/translated/stock.js:1007 templates/js/translated/stock.js:1755
-#: templates/js/translated/table_filters.js:116
-#: templates/js/translated/table_filters.js:198
+#: templates/js/translated/stock.js:931 templates/js/translated/stock.js:1873
+#: templates/js/translated/table_filters.js:129
+#: templates/js/translated/table_filters.js:211
msgid "Batch"
msgstr ""
#: build/templates/build/detail.html:119
#: order/templates/order/order_base.html:111
#: order/templates/order/sales_order_base.html:113
-#: templates/js/translated/build.js:910
+#: templates/js/translated/build.js:933
msgid "Created"
-msgstr ""
+msgstr "已创建"
#: build/templates/build/detail.html:130
msgid "No target date set"
-msgstr ""
+msgstr "无预计日期"
-#: build/templates/build/detail.html:135 templates/js/translated/build.js:888
+#: build/templates/build/detail.html:135 templates/js/translated/build.js:911
msgid "Completed"
msgstr ""
@@ -1225,32 +1254,32 @@ msgstr ""
msgid "Auto Allocate"
msgstr ""
-#: build/templates/build/detail.html:175 templates/js/translated/build.js:778
+#: build/templates/build/detail.html:175 templates/js/translated/build.js:801
msgid "Unallocate stock"
msgstr ""
#: build/templates/build/detail.html:176 build/views.py:318 build/views.py:638
msgid "Unallocate Stock"
-msgstr ""
+msgstr "未分配库存"
#: build/templates/build/detail.html:179
msgid "Order required parts"
-msgstr ""
+msgstr "订单所需部件"
#: build/templates/build/detail.html:180
-#: company/templates/company/detail.html:33
-#: company/templates/company/detail.html:75 order/views.py:679
+#: company/templates/company/detail.html:32
+#: company/templates/company/detail.html:72 order/views.py:679
#: part/templates/part/category.html:140
msgid "Order Parts"
-msgstr ""
+msgstr "订单部件"
#: build/templates/build/detail.html:186
msgid "Untracked stock has been fully allocated for this Build Order"
-msgstr ""
+msgstr "未跟踪的库存已完全分配给此生产订单"
#: build/templates/build/detail.html:190
msgid "Untracked stock has not been fully allocated for this Build Order"
-msgstr ""
+msgstr "未跟踪的库存尚未完全分配给此生产订单"
#: build/templates/build/detail.html:197
msgid "This Build Order does not have any associated untracked BOM items"
@@ -1258,7 +1287,7 @@ msgstr ""
#: build/templates/build/detail.html:206
msgid "Incomplete Build Outputs"
-msgstr ""
+msgstr "未完成的生产产出"
#: build/templates/build/detail.html:211
msgid "Create new build output"
@@ -1288,8 +1317,8 @@ msgstr ""
#: build/templates/build/navbar.html:45 order/templates/order/po_navbar.html:35
#: order/templates/order/sales_order_detail.html:43
#: order/templates/order/so_navbar.html:29 part/templates/part/detail.html:173
-#: part/templates/part/navbar.html:102 part/templates/part/navbar.html:105
-#: stock/templates/stock/item.html:87 stock/templates/stock/navbar.html:47
+#: part/templates/part/navbar.html:114 part/templates/part/navbar.html:117
+#: stock/templates/stock/item.html:88 stock/templates/stock/navbar.html:47
#: stock/templates/stock/navbar.html:50
msgid "Attachments"
msgstr ""
@@ -1298,48 +1327,48 @@ msgstr ""
msgid "Build Notes"
msgstr ""
-#: build/templates/build/detail.html:261 build/templates/build/detail.html:397
-#: company/templates/company/detail.html:173
-#: company/templates/company/detail.html:200
+#: build/templates/build/detail.html:261 build/templates/build/detail.html:398
+#: company/templates/company/detail.html:169
+#: company/templates/company/detail.html:196
#: order/templates/order/purchase_order_detail.html:62
#: order/templates/order/purchase_order_detail.html:95
#: order/templates/order/sales_order_detail.html:58
#: order/templates/order/sales_order_detail.html:85
-#: part/templates/part/detail.html:109 stock/templates/stock/item.html:102
-#: stock/templates/stock/item.html:187
+#: part/templates/part/detail.html:109 stock/templates/stock/item.html:103
+#: stock/templates/stock/item.html:188
msgid "Edit Notes"
msgstr ""
#: build/templates/build/detail.html:357
#: order/templates/order/po_attachments.html:79
-#: order/templates/order/purchase_order_detail.html:156
-#: order/templates/order/sales_order_detail.html:145
-#: part/templates/part/detail.html:802 stock/templates/stock/item.html:251
+#: order/templates/order/purchase_order_detail.html:157
+#: order/templates/order/sales_order_detail.html:146
+#: part/templates/part/detail.html:920 stock/templates/stock/item.html:253
#: templates/attachment_table.html:6
msgid "Add Attachment"
msgstr ""
-#: build/templates/build/detail.html:375
+#: build/templates/build/detail.html:376
#: order/templates/order/po_attachments.html:51
-#: order/templates/order/purchase_order_detail.html:128
-#: order/templates/order/sales_order_detail.html:118
-#: part/templates/part/detail.html:756 stock/templates/stock/item.html:219
+#: order/templates/order/purchase_order_detail.html:129
+#: order/templates/order/sales_order_detail.html:119
+#: part/templates/part/detail.html:874 stock/templates/stock/item.html:221
msgid "Edit Attachment"
msgstr ""
-#: build/templates/build/detail.html:382
+#: build/templates/build/detail.html:383
#: order/templates/order/po_attachments.html:58
-#: order/templates/order/purchase_order_detail.html:135
-#: order/templates/order/sales_order_detail.html:124
-#: part/templates/part/detail.html:765 stock/templates/stock/item.html:228
+#: order/templates/order/purchase_order_detail.html:136
+#: order/templates/order/sales_order_detail.html:125
+#: part/templates/part/detail.html:883 stock/templates/stock/item.html:230
msgid "Confirm Delete Operation"
msgstr ""
-#: build/templates/build/detail.html:383
+#: build/templates/build/detail.html:384
#: order/templates/order/po_attachments.html:59
-#: order/templates/order/purchase_order_detail.html:136
-#: order/templates/order/sales_order_detail.html:125
-#: part/templates/part/detail.html:766 stock/templates/stock/item.html:229
+#: order/templates/order/purchase_order_detail.html:137
+#: order/templates/order/sales_order_detail.html:126
+#: part/templates/part/detail.html:884 stock/templates/stock/item.html:231
msgid "Delete Attachment"
msgstr ""
@@ -1372,7 +1401,7 @@ msgid "Build Order Details"
msgstr ""
#: build/templates/build/navbar.html:15 order/templates/order/po_navbar.html:15
-#: templates/js/translated/stock.js:1414
+#: templates/js/translated/stock.js:1555
msgid "Details"
msgstr ""
@@ -1501,9 +1530,9 @@ msgstr ""
msgid "Stock item is over-allocated"
msgstr ""
-#: build/views.py:705 templates/js/translated/bom.js:250
-#: templates/js/translated/build.js:705 templates/js/translated/build.js:1000
-#: templates/js/translated/build.js:1179
+#: build/views.py:705 templates/js/translated/bom.js:269
+#: templates/js/translated/build.js:728 templates/js/translated/build.js:1019
+#: templates/js/translated/build.js:1196
msgid "Available"
msgstr ""
@@ -1539,7 +1568,7 @@ msgstr ""
msgid "Error reading file (data could be corrupted)"
msgstr ""
-#: common/forms.py:34 templates/js/translated/attachment.js:42
+#: common/forms.py:34 templates/js/translated/attachment.js:54
msgid "File"
msgstr ""
@@ -1556,546 +1585,594 @@ msgstr ""
msgid "Select {name} file to upload"
msgstr ""
-#: common/models.py:322 common/models.py:815 common/models.py:962
+#: common/models.py:308 common/models.py:839 common/models.py:986
msgid "Settings key (must be unique - case insensitive"
msgstr ""
-#: common/models.py:324
+#: common/models.py:310
msgid "Settings value"
msgstr ""
-#: common/models.py:359
+#: common/models.py:345
msgid "Must be an integer value"
msgstr ""
-#: common/models.py:382
+#: common/models.py:368
msgid "Value must be a boolean value"
msgstr ""
-#: common/models.py:393
+#: common/models.py:379
msgid "Value must be an integer value"
msgstr ""
-#: common/models.py:416
+#: common/models.py:402
msgid "Key string must be unique"
msgstr ""
-#: common/models.py:523
+#: common/models.py:509
msgid "InvenTree Instance Name"
msgstr ""
-#: common/models.py:525
+#: common/models.py:511
msgid "String descriptor for the server instance"
msgstr ""
-#: common/models.py:529
+#: common/models.py:515
msgid "Use instance name"
msgstr ""
-#: common/models.py:530
+#: common/models.py:516
msgid "Use the instance name in the title-bar"
msgstr ""
-#: common/models.py:536 company/models.py:97 company/models.py:98
+#: common/models.py:522 company/models.py:99 company/models.py:100
msgid "Company name"
msgstr ""
-#: common/models.py:537
+#: common/models.py:523
msgid "Internal company name"
msgstr ""
-#: common/models.py:542
+#: common/models.py:528
msgid "Base URL"
msgstr ""
-#: common/models.py:543
+#: common/models.py:529
msgid "Base URL for server instance"
msgstr ""
-#: common/models.py:549
+#: common/models.py:535
msgid "Default Currency"
msgstr ""
-#: common/models.py:550
+#: common/models.py:536
msgid "Default currency"
msgstr ""
-#: common/models.py:556
+#: common/models.py:542
msgid "Download from URL"
msgstr ""
-#: common/models.py:557
+#: common/models.py:543
msgid "Allow download of remote images and files from external URL"
msgstr ""
-#: common/models.py:563
+#: common/models.py:549
msgid "Barcode Support"
msgstr ""
-#: common/models.py:564
+#: common/models.py:550
msgid "Enable barcode scanner support"
msgstr ""
-#: common/models.py:570
+#: common/models.py:556
msgid "IPN Regex"
msgstr ""
-#: common/models.py:571
+#: common/models.py:557
msgid "Regular expression pattern for matching Part IPN"
msgstr ""
-#: common/models.py:575
+#: common/models.py:561
msgid "Allow Duplicate IPN"
msgstr ""
-#: common/models.py:576
+#: common/models.py:562
msgid "Allow multiple parts to share the same IPN"
msgstr ""
-#: common/models.py:582
+#: common/models.py:568
msgid "Allow Editing IPN"
msgstr ""
-#: common/models.py:583
+#: common/models.py:569
msgid "Allow changing the IPN value while editing a part"
msgstr ""
-#: common/models.py:589
+#: common/models.py:575
msgid "Copy Part BOM Data"
msgstr ""
-#: common/models.py:590
+#: common/models.py:576
msgid "Copy BOM data by default when duplicating a part"
msgstr ""
-#: common/models.py:596
+#: common/models.py:582
msgid "Copy Part Parameter Data"
msgstr ""
-#: common/models.py:597
+#: common/models.py:583
msgid "Copy parameter data by default when duplicating a part"
msgstr ""
-#: common/models.py:603
+#: common/models.py:589
msgid "Copy Part Test Data"
msgstr ""
-#: common/models.py:604
+#: common/models.py:590
msgid "Copy test data by default when duplicating a part"
msgstr ""
-#: common/models.py:610
+#: common/models.py:596
msgid "Copy Category Parameter Templates"
msgstr ""
-#: common/models.py:611
+#: common/models.py:597
msgid "Copy category parameter templates when creating a part"
msgstr ""
-#: common/models.py:617 part/models.py:2236 report/models.py:187
-#: stock/forms.py:224 templates/js/translated/table_filters.js:25
-#: templates/js/translated/table_filters.js:329
+#: common/models.py:603 part/models.py:2252 report/models.py:187
+#: stock/forms.py:224 templates/js/translated/table_filters.js:38
+#: templates/js/translated/table_filters.js:342
msgid "Template"
msgstr ""
-#: common/models.py:618
+#: common/models.py:604
msgid "Parts are templates by default"
msgstr ""
-#: common/models.py:624 part/models.py:803
-#: templates/js/translated/table_filters.js:133
-#: templates/js/translated/table_filters.js:341
+#: common/models.py:610 part/models.py:805
+#: templates/js/translated/table_filters.js:146
+#: templates/js/translated/table_filters.js:354
msgid "Assembly"
msgstr ""
-#: common/models.py:625
+#: common/models.py:611
msgid "Parts can be assembled from other components by default"
msgstr ""
-#: common/models.py:631 part/models.py:809
-#: templates/js/translated/table_filters.js:345
+#: common/models.py:617 part/models.py:811
+#: templates/js/translated/table_filters.js:358
msgid "Component"
msgstr ""
-#: common/models.py:632
+#: common/models.py:618
msgid "Parts can be used as sub-components by default"
msgstr ""
-#: common/models.py:638 part/models.py:820
+#: common/models.py:624 part/models.py:822
msgid "Purchaseable"
msgstr ""
-#: common/models.py:639
+#: common/models.py:625
msgid "Parts are purchaseable by default"
msgstr ""
-#: common/models.py:645 part/models.py:825
-#: templates/js/translated/table_filters.js:353
+#: common/models.py:631 part/models.py:827
+#: templates/js/translated/table_filters.js:366
msgid "Salable"
msgstr ""
-#: common/models.py:646
+#: common/models.py:632
msgid "Parts are salable by default"
msgstr ""
-#: common/models.py:652 part/models.py:815
-#: templates/js/translated/table_filters.js:33
-#: templates/js/translated/table_filters.js:357
+#: common/models.py:638 part/models.py:817
+#: templates/js/translated/table_filters.js:46
+#: templates/js/translated/table_filters.js:370
msgid "Trackable"
msgstr ""
-#: common/models.py:653
+#: common/models.py:639
msgid "Parts are trackable by default"
msgstr ""
-#: common/models.py:659 part/models.py:835
-#: part/templates/part/part_base.html:61
-#: templates/js/translated/table_filters.js:29
+#: common/models.py:645 part/models.py:837
+#: part/templates/part/part_base.html:66
+#: templates/js/translated/table_filters.js:42
msgid "Virtual"
msgstr ""
-#: common/models.py:660
+#: common/models.py:646
msgid "Parts are virtual by default"
msgstr ""
-#: common/models.py:667
+#: common/models.py:653
msgid "Show Quantity in Forms"
msgstr ""
-#: common/models.py:668
+#: common/models.py:654
msgid "Display available part quantity in some forms"
msgstr ""
-#: common/models.py:674
+#: common/models.py:660
msgid "Show Import in Views"
msgstr ""
-#: common/models.py:675
+#: common/models.py:661
msgid "Display the import wizard in some part views"
msgstr ""
-#: common/models.py:681
+#: common/models.py:667
msgid "Show Price in Forms"
msgstr ""
-#: common/models.py:682
+#: common/models.py:668
msgid "Display part price in some forms"
msgstr ""
-#: common/models.py:688
+#: common/models.py:674
msgid "Show related parts"
msgstr ""
-#: common/models.py:689
+#: common/models.py:675
msgid "Display related parts for a part"
msgstr ""
-#: common/models.py:695
+#: common/models.py:681
msgid "Create initial stock"
msgstr ""
-#: common/models.py:696
+#: common/models.py:682
msgid "Create initial stock on part creation"
msgstr ""
-#: common/models.py:702
+#: common/models.py:688
msgid "Internal Prices"
msgstr ""
-#: common/models.py:703
+#: common/models.py:689
msgid "Enable internal prices for parts"
msgstr ""
-#: common/models.py:709
+#: common/models.py:695
msgid "Internal Price as BOM-Price"
msgstr ""
-#: common/models.py:710
+#: common/models.py:696
msgid "Use the internal price (if set) in BOM-price calculations"
msgstr ""
-#: common/models.py:716 templates/stats.html:25
+#: common/models.py:702 templates/stats.html:25
msgid "Debug Mode"
msgstr ""
-#: common/models.py:717
+#: common/models.py:703
msgid "Generate reports in debug mode (HTML output)"
msgstr ""
-#: common/models.py:723
+#: common/models.py:709
msgid "Page Size"
msgstr ""
-#: common/models.py:724
+#: common/models.py:710
msgid "Default page size for PDF reports"
msgstr ""
-#: common/models.py:734
+#: common/models.py:720
msgid "Test Reports"
msgstr ""
-#: common/models.py:735
+#: common/models.py:721
msgid "Enable generation of test reports"
msgstr ""
-#: common/models.py:741
+#: common/models.py:727
msgid "Stock Expiry"
msgstr ""
-#: common/models.py:742
+#: common/models.py:728
msgid "Enable stock expiry functionality"
msgstr ""
-#: common/models.py:748
+#: common/models.py:734
msgid "Sell Expired Stock"
msgstr ""
-#: common/models.py:749
+#: common/models.py:735
msgid "Allow sale of expired stock"
msgstr ""
-#: common/models.py:755
+#: common/models.py:741
msgid "Stock Stale Time"
msgstr ""
-#: common/models.py:756
+#: common/models.py:742
msgid "Number of days stock items are considered stale before expiring"
msgstr ""
-#: common/models.py:758
+#: common/models.py:744
msgid "days"
msgstr ""
-#: common/models.py:763
+#: common/models.py:749
msgid "Build Expired Stock"
msgstr ""
-#: common/models.py:764
+#: common/models.py:750
msgid "Allow building with expired stock"
msgstr ""
-#: common/models.py:770
+#: common/models.py:756
msgid "Stock Ownership Control"
msgstr ""
-#: common/models.py:771
+#: common/models.py:757
msgid "Enable ownership control over stock locations and items"
msgstr ""
-#: common/models.py:777
+#: common/models.py:763
msgid "Group by Part"
msgstr ""
-#: common/models.py:778
+#: common/models.py:764
msgid "Group stock items by part reference in table views"
msgstr ""
-#: common/models.py:784
+#: common/models.py:770
msgid "Build Order Reference Prefix"
msgstr ""
-#: common/models.py:785
+#: common/models.py:771
msgid "Prefix value for build order reference"
msgstr ""
-#: common/models.py:790
+#: common/models.py:776
msgid "Build Order Reference Regex"
msgstr ""
-#: common/models.py:791
+#: common/models.py:777
msgid "Regular expression pattern for matching build order reference"
msgstr ""
-#: common/models.py:795
+#: common/models.py:781
msgid "Sales Order Reference Prefix"
msgstr ""
-#: common/models.py:796
+#: common/models.py:782
msgid "Prefix value for sales order reference"
msgstr ""
-#: common/models.py:801
+#: common/models.py:787
msgid "Purchase Order Reference Prefix"
msgstr ""
-#: common/models.py:802
+#: common/models.py:788
msgid "Prefix value for purchase order reference"
msgstr ""
-#: common/models.py:826
+#: common/models.py:794
+msgid "Enable build"
+msgstr ""
+
+#: common/models.py:795
+msgid "Enable build functionality in InvenTree interface"
+msgstr ""
+
+#: common/models.py:800
+msgid "Enable buy"
+msgstr ""
+
+#: common/models.py:801
+msgid "Enable buy functionality in InvenTree interface"
+msgstr ""
+
+#: common/models.py:806
+msgid "Enable sell"
+msgstr ""
+
+#: common/models.py:807
+msgid "Enable sell functionality in InvenTree interface"
+msgstr ""
+
+#: common/models.py:812
+msgid "Enable stock"
+msgstr ""
+
+#: common/models.py:813
+msgid "Enable stock functionality in InvenTree interface"
+msgstr ""
+
+#: common/models.py:818
+msgid "Enable SO"
+msgstr ""
+
+#: common/models.py:819
+msgid "Enable SO functionality in InvenTree interface"
+msgstr ""
+
+#: common/models.py:824
+msgid "Enable PO"
+msgstr ""
+
+#: common/models.py:825
+msgid "Enable PO functionality in InvenTree interface"
+msgstr ""
+
+#: common/models.py:850
msgid "Show starred parts"
msgstr ""
-#: common/models.py:827
+#: common/models.py:851
msgid "Show starred parts on the homepage"
msgstr ""
-#: common/models.py:832
+#: common/models.py:856
msgid "Show latest parts"
msgstr ""
-#: common/models.py:833
+#: common/models.py:857
msgid "Show latest parts on the homepage"
msgstr ""
-#: common/models.py:838
+#: common/models.py:862
msgid "Recent Part Count"
msgstr ""
-#: common/models.py:839
+#: common/models.py:863
msgid "Number of recent parts to display on index page"
msgstr ""
-#: common/models.py:845
+#: common/models.py:869
msgid "Show unvalidated BOMs"
msgstr ""
-#: common/models.py:846
+#: common/models.py:870
msgid "Show BOMs that await validation on the homepage"
msgstr ""
-#: common/models.py:851
+#: common/models.py:875
msgid "Show recent stock changes"
msgstr ""
-#: common/models.py:852
+#: common/models.py:876
msgid "Show recently changed stock items on the homepage"
msgstr ""
-#: common/models.py:857
+#: common/models.py:881
msgid "Recent Stock Count"
msgstr ""
-#: common/models.py:858
+#: common/models.py:882
msgid "Number of recent stock items to display on index page"
msgstr ""
-#: common/models.py:863
+#: common/models.py:887
msgid "Show low stock"
msgstr ""
-#: common/models.py:864
+#: common/models.py:888
msgid "Show low stock items on the homepage"
msgstr ""
-#: common/models.py:869
+#: common/models.py:893
msgid "Show depleted stock"
msgstr ""
-#: common/models.py:870
+#: common/models.py:894
msgid "Show depleted stock items on the homepage"
msgstr ""
-#: common/models.py:875
+#: common/models.py:899
msgid "Show needed stock"
msgstr ""
-#: common/models.py:876
+#: common/models.py:900
msgid "Show stock items needed for builds on the homepage"
msgstr ""
-#: common/models.py:881
+#: common/models.py:905
msgid "Show expired stock"
msgstr ""
-#: common/models.py:882
+#: common/models.py:906
msgid "Show expired stock items on the homepage"
msgstr ""
-#: common/models.py:887
+#: common/models.py:911
msgid "Show stale stock"
msgstr ""
-#: common/models.py:888
+#: common/models.py:912
msgid "Show stale stock items on the homepage"
msgstr ""
-#: common/models.py:893
+#: common/models.py:917
msgid "Show pending builds"
msgstr ""
-#: common/models.py:894
+#: common/models.py:918
msgid "Show pending builds on the homepage"
msgstr ""
-#: common/models.py:899
+#: common/models.py:923
msgid "Show overdue builds"
msgstr ""
-#: common/models.py:900
+#: common/models.py:924
msgid "Show overdue builds on the homepage"
msgstr ""
-#: common/models.py:905
+#: common/models.py:929
msgid "Show outstanding POs"
msgstr ""
-#: common/models.py:906
+#: common/models.py:930
msgid "Show outstanding POs on the homepage"
msgstr ""
-#: common/models.py:911
+#: common/models.py:935
msgid "Show overdue POs"
msgstr ""
-#: common/models.py:912
+#: common/models.py:936
msgid "Show overdue POs on the homepage"
msgstr ""
-#: common/models.py:917
+#: common/models.py:941
msgid "Show outstanding SOs"
msgstr ""
-#: common/models.py:918
+#: common/models.py:942
msgid "Show outstanding SOs on the homepage"
msgstr ""
-#: common/models.py:923
+#: common/models.py:947
msgid "Show overdue SOs"
msgstr ""
-#: common/models.py:924
+#: common/models.py:948
msgid "Show overdue SOs on the homepage"
msgstr ""
-#: common/models.py:930
+#: common/models.py:954
msgid "Inline label display"
msgstr ""
-#: common/models.py:931
+#: common/models.py:955
msgid "Display PDF labels in the browser, instead of downloading as a file"
msgstr ""
-#: common/models.py:937
+#: common/models.py:961
msgid "Inline report display"
msgstr ""
-#: common/models.py:938
+#: common/models.py:962
msgid "Display PDF reports in the browser, instead of downloading as a file"
msgstr ""
-#: common/models.py:944
+#: common/models.py:968
msgid "Search Preview Results"
msgstr ""
-#: common/models.py:945
+#: common/models.py:969
msgid "Number of results to show in search preview window"
msgstr ""
-#: common/models.py:1002 company/forms.py:43
+#: common/models.py:1026 company/forms.py:43
msgid "Price break quantity"
msgstr ""
-#: common/models.py:1009 company/templates/company/supplier_part.html:231
-#: templates/js/translated/part.js:1153
+#: common/models.py:1033 company/templates/company/supplier_part.html:231
+#: templates/js/translated/part.js:1322
msgid "Price"
msgstr ""
-#: common/models.py:1010
+#: common/models.py:1034
msgid "Unit price at specified quantity"
msgstr ""
-#: common/models.py:1103
+#: common/models.py:1127
msgid "Default"
msgstr ""
@@ -2123,7 +2200,7 @@ msgstr ""
#: order/templates/order/po_navbar.html:19
#: order/templates/order/po_navbar.html:22
#: order/templates/order/purchase_order_detail.html:26 order/views.py:290
-#: part/templates/part/bom_upload/upload_file.html:45
+#: part/templates/part/bom_upload/upload_file.html:65
#: part/templates/part/import_wizard/part_upload.html:45 part/views.py:268
#: part/views.py:882
msgid "Upload File"
@@ -2154,7 +2231,7 @@ msgstr ""
#: order/templates/order/order_wizard/po_upload.html:40
#: 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:43
+#: part/templates/part/bom_upload/upload_file.html:63
#: 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:43
@@ -2169,244 +2246,249 @@ msgstr ""
msgid "Image URL"
msgstr ""
-#: company/models.py:102
+#: company/models.py:104
msgid "Company description"
msgstr ""
-#: company/models.py:103
+#: company/models.py:105
msgid "Description of the company"
msgstr ""
-#: company/models.py:109 company/templates/company/company_base.html:70
-#: templates/js/translated/company.js:303
+#: company/models.py:111 company/templates/company/company_base.html:70
+#: templates/js/translated/company.js:348
msgid "Website"
msgstr ""
-#: company/models.py:110
+#: company/models.py:112
msgid "Company website URL"
msgstr ""
-#: company/models.py:114 company/templates/company/company_base.html:88
+#: company/models.py:116 company/templates/company/company_base.html:88
msgid "Address"
msgstr ""
-#: company/models.py:115
+#: company/models.py:117
msgid "Company address"
msgstr ""
-#: company/models.py:118
+#: company/models.py:120
msgid "Phone number"
msgstr ""
-#: company/models.py:119
+#: company/models.py:121
msgid "Contact phone number"
msgstr ""
-#: company/models.py:122 company/templates/company/company_base.html:102
+#: company/models.py:124 company/templates/company/company_base.html:102
msgid "Email"
msgstr ""
-#: company/models.py:122
+#: company/models.py:124
msgid "Contact email address"
msgstr ""
-#: company/models.py:125 company/templates/company/company_base.html:109
+#: company/models.py:127 company/templates/company/company_base.html:109
msgid "Contact"
msgstr ""
-#: company/models.py:126
+#: company/models.py:128
msgid "Point of contact"
msgstr ""
-#: company/models.py:128 company/models.py:345 company/models.py:513
-#: order/models.py:160 part/models.py:712
+#: company/models.py:130 company/models.py:347 company/models.py:563
+#: order/models.py:160 part/models.py:714
#: report/templates/report/inventree_build_order_base.html:165
-#: templates/js/translated/company.js:486
-#: templates/js/translated/company.js:768 templates/js/translated/part.js:819
+#: templates/js/translated/company.js:535
+#: templates/js/translated/company.js:823 templates/js/translated/part.js:972
msgid "Link"
msgstr ""
-#: company/models.py:128
+#: company/models.py:130
msgid "Link to external company information"
msgstr ""
-#: company/models.py:136 part/models.py:722
+#: company/models.py:138 part/models.py:724
msgid "Image"
msgstr ""
-#: company/models.py:141
+#: company/models.py:143
msgid "is customer"
msgstr ""
-#: company/models.py:141
+#: company/models.py:143
msgid "Do you sell items to this company?"
msgstr ""
-#: company/models.py:143
+#: company/models.py:145
msgid "is supplier"
msgstr ""
-#: company/models.py:143
+#: company/models.py:145
msgid "Do you purchase items from this company?"
msgstr ""
-#: company/models.py:145
+#: company/models.py:147
msgid "is manufacturer"
msgstr ""
-#: company/models.py:145
+#: company/models.py:147
msgid "Does this company manufacture parts?"
msgstr ""
-#: company/models.py:149 company/serializers.py:245
-#: company/templates/company/company_base.html:76
+#: company/models.py:151 company/serializers.py:264
+#: company/templates/company/company_base.html:76 stock/serializers.py:155
msgid "Currency"
msgstr ""
-#: company/models.py:152
+#: company/models.py:154
msgid "Default currency used for this company"
msgstr ""
-#: company/models.py:317 company/models.py:484 stock/models.py:448
+#: company/models.py:319 company/models.py:534 stock/models.py:454
#: stock/templates/stock/item_base.html:237
msgid "Base Part"
msgstr ""
-#: company/models.py:321 company/models.py:488 order/views.py:1082
+#: company/models.py:323 company/models.py:538 order/views.py:1082
msgid "Select part"
msgstr ""
-#: company/models.py:332 company/templates/company/company_base.html:116
+#: company/models.py:334 company/templates/company/company_base.html:116
#: company/templates/company/manufacturer_part.html:89
#: company/templates/company/supplier_part.html:98 part/bom.py:170
#: part/bom.py:241 stock/templates/stock/item_base.html:366
-#: templates/js/translated/company.js:287
-#: templates/js/translated/company.js:463
-#: templates/js/translated/company.js:739
+#: templates/js/translated/company.js:332
+#: templates/js/translated/company.js:512
+#: templates/js/translated/company.js:794 templates/js/translated/part.js:222
msgid "Manufacturer"
msgstr ""
-#: company/models.py:333
+#: company/models.py:335 templates/js/translated/part.js:223
msgid "Select manufacturer"
msgstr ""
-#: company/models.py:339 company/templates/company/manufacturer_part.html:93
-#: company/templates/company/supplier_part.html:106
-#: order/templates/order/purchase_order_detail.html:331 part/bom.py:171
-#: part/bom.py:242 templates/js/translated/company.js:479
-#: templates/js/translated/company.js:757
+#: company/models.py:341 company/templates/company/manufacturer_part.html:93
+#: company/templates/company/supplier_part.html:106 part/bom.py:171
+#: part/bom.py:242 templates/js/translated/company.js:528
+#: templates/js/translated/company.js:812 templates/js/translated/order.js:505
+#: templates/js/translated/part.js:233
msgid "MPN"
msgstr ""
-#: company/models.py:340
+#: company/models.py:342 templates/js/translated/part.js:234
msgid "Manufacturer Part Number"
msgstr ""
-#: company/models.py:346
+#: company/models.py:348
msgid "URL for external manufacturer part link"
msgstr ""
-#: company/models.py:352
+#: company/models.py:354
msgid "Manufacturer part description"
msgstr ""
-#: company/models.py:406 company/models.py:507
+#: company/models.py:408 company/models.py:557
#: company/templates/company/manufacturer_part.html:6
#: company/templates/company/manufacturer_part.html:23
#: stock/templates/stock/item_base.html:376
msgid "Manufacturer Part"
msgstr ""
-#: company/models.py:413
+#: company/models.py:415
msgid "Parameter name"
msgstr ""
-#: company/models.py:419
+#: company/models.py:421
#: report/templates/report/inventree_test_report_base.html:90
-#: stock/models.py:1808 templates/InvenTree/settings/header.html:8
-#: templates/js/translated/company.js:589 templates/js/translated/part.js:480
-#: templates/js/translated/stock.js:505
+#: stock/models.py:1819 templates/InvenTree/settings/header.html:8
+#: templates/js/translated/company.js:642 templates/js/translated/part.js:612
+#: templates/js/translated/stock.js:576
msgid "Value"
msgstr ""
-#: company/models.py:420
+#: company/models.py:422
msgid "Parameter value"
msgstr ""
-#: company/models.py:426 part/models.py:797 part/models.py:2204
-#: templates/js/translated/company.js:595 templates/js/translated/part.js:486
+#: company/models.py:428 part/models.py:799 part/models.py:2220
+#: templates/js/translated/company.js:648 templates/js/translated/part.js:618
msgid "Units"
msgstr ""
-#: company/models.py:427
+#: company/models.py:429
msgid "Parameter units"
msgstr ""
-#: company/models.py:494 company/templates/company/company_base.html:121
+#: company/models.py:501
+msgid "Linked manufacturer part must reference the same base part"
+msgstr ""
+
+#: company/models.py:544 company/templates/company/company_base.html:121
#: company/templates/company/supplier_part.html:88 order/models.py:260
#: order/templates/order/order_base.html:92
#: order/templates/order/order_wizard/select_pos.html:30 part/bom.py:175
#: part/bom.py:286 stock/templates/stock/item_base.html:383
-#: templates/js/translated/company.js:291
-#: templates/js/translated/company.js:713 templates/js/translated/order.js:254
+#: templates/js/translated/company.js:336
+#: templates/js/translated/company.js:768 templates/js/translated/order.js:328
+#: templates/js/translated/part.js:203
msgid "Supplier"
msgstr ""
-#: company/models.py:495
+#: company/models.py:545 templates/js/translated/part.js:204
msgid "Select supplier"
msgstr ""
-#: company/models.py:500 company/templates/company/supplier_part.html:92
-#: order/templates/order/purchase_order_detail.html:318 part/bom.py:176
-#: part/bom.py:287
+#: company/models.py:550 company/templates/company/supplier_part.html:92
+#: part/bom.py:176 part/bom.py:287 templates/js/translated/order.js:492
+#: templates/js/translated/part.js:214
msgid "SKU"
msgstr ""
-#: company/models.py:501
+#: company/models.py:551 templates/js/translated/part.js:215
msgid "Supplier stock keeping unit"
msgstr ""
-#: company/models.py:508
+#: company/models.py:558
msgid "Select manufacturer part"
msgstr ""
-#: company/models.py:514
+#: company/models.py:564
msgid "URL for external supplier part link"
msgstr ""
-#: company/models.py:520
+#: company/models.py:570
msgid "Supplier part description"
msgstr ""
-#: company/models.py:525 company/templates/company/supplier_part.html:120
-#: part/models.py:2352 report/templates/report/inventree_po_report.html:93
+#: company/models.py:575 company/templates/company/supplier_part.html:120
+#: part/models.py:2368 report/templates/report/inventree_po_report.html:93
#: report/templates/report/inventree_so_report.html:93
msgid "Note"
msgstr ""
-#: company/models.py:529 part/models.py:1590
+#: company/models.py:579 part/models.py:1599
msgid "base cost"
msgstr ""
-#: company/models.py:529 part/models.py:1590
+#: company/models.py:579 part/models.py:1599
msgid "Minimum charge (e.g. stocking fee)"
msgstr ""
-#: company/models.py:531 company/templates/company/supplier_part.html:113
-#: stock/models.py:472 stock/templates/stock/item_base.html:324
-#: templates/js/translated/company.js:789 templates/js/translated/stock.js:1086
+#: company/models.py:581 company/templates/company/supplier_part.html:113
+#: stock/models.py:478 stock/templates/stock/item_base.html:324
+#: templates/js/translated/company.js:844 templates/js/translated/stock.js:1057
msgid "Packaging"
msgstr ""
-#: company/models.py:531
+#: company/models.py:581
msgid "Part packaging"
msgstr ""
-#: company/models.py:533 part/models.py:1592
+#: company/models.py:583 part/models.py:1601
msgid "multiple"
msgstr ""
-#: company/models.py:533
+#: company/models.py:583
msgid "Order multiple"
msgstr ""
@@ -2420,7 +2502,7 @@ msgstr ""
#: company/templates/company/company_base.html:9
#: company/templates/company/company_base.html:35
-#: templates/InvenTree/search.html:304 templates/js/translated/company.js:276
+#: templates/InvenTree/search.html:304 templates/js/translated/company.js:321
msgid "Company"
msgstr ""
@@ -2435,7 +2517,7 @@ msgid "Download image from URL"
msgstr ""
#: company/templates/company/company_base.html:46
-#: templates/js/translated/order.js:83
+#: templates/js/translated/order.js:117
msgid "Create Purchase Order"
msgstr ""
@@ -2460,16 +2542,16 @@ msgstr ""
msgid "Phone"
msgstr ""
-#: company/templates/company/company_base.html:126 order/models.py:544
-#: order/templates/order/sales_order_base.html:94 stock/models.py:490
-#: stock/models.py:491 stock/templates/stock/item_base.html:276
-#: templates/js/translated/company.js:283 templates/js/translated/order.js:351
-#: templates/js/translated/stock.js:1467
+#: company/templates/company/company_base.html:126 order/models.py:550
+#: order/templates/order/sales_order_base.html:94 stock/models.py:496
+#: stock/models.py:497 stock/templates/stock/item_base.html:276
+#: templates/js/translated/company.js:328 templates/js/translated/order.js:692
+#: templates/js/translated/stock.js:1608
msgid "Customer"
msgstr ""
#: company/templates/company/company_base.html:193
-#: part/templates/part/part_base.html:405
+#: part/templates/part/part_base.html:418
msgid "Upload Image"
msgstr ""
@@ -2490,8 +2572,8 @@ msgstr ""
msgid "New Supplier Part"
msgstr ""
-#: company/templates/company/detail.html:28
-#: company/templates/company/detail.html:70
+#: company/templates/company/detail.html:27
+#: company/templates/company/detail.html:67
#: company/templates/company/manufacturer_part.html:112
#: company/templates/company/manufacturer_part.html:136
#: part/templates/part/category.html:135 part/templates/part/detail.html:292
@@ -2499,106 +2581,106 @@ msgstr ""
msgid "Options"
msgstr ""
-#: company/templates/company/detail.html:33
-#: company/templates/company/detail.html:75
+#: company/templates/company/detail.html:32
+#: company/templates/company/detail.html:72
#: part/templates/part/category.html:140
msgid "Order parts"
msgstr ""
-#: company/templates/company/detail.html:36
-#: company/templates/company/detail.html:78
+#: company/templates/company/detail.html:35
+#: company/templates/company/detail.html:75
msgid "Delete parts"
msgstr ""
-#: company/templates/company/detail.html:36
-#: company/templates/company/detail.html:78
+#: company/templates/company/detail.html:35
+#: company/templates/company/detail.html:75
msgid "Delete Parts"
msgstr ""
-#: company/templates/company/detail.html:56 templates/InvenTree/search.html:149
+#: company/templates/company/detail.html:54 templates/InvenTree/search.html:149
msgid "Manufacturer Parts"
msgstr ""
-#: company/templates/company/detail.html:64
+#: company/templates/company/detail.html:62
msgid "Create new manufacturer part"
msgstr ""
-#: company/templates/company/detail.html:65 part/templates/part/detail.html:312
+#: company/templates/company/detail.html:63 part/templates/part/detail.html:312
msgid "New Manufacturer Part"
msgstr ""
-#: company/templates/company/detail.html:97
+#: company/templates/company/detail.html:93
msgid "Supplier Stock"
msgstr ""
-#: company/templates/company/detail.html:106
-#: company/templates/company/navbar.html:40
-#: company/templates/company/navbar.html:43
+#: company/templates/company/detail.html:102
+#: company/templates/company/navbar.html:46
+#: company/templates/company/navbar.html:49
#: order/templates/order/purchase_orders.html:8
#: order/templates/order/purchase_orders.html:13
-#: part/templates/part/detail.html:50 part/templates/part/navbar.html:71
-#: part/templates/part/navbar.html:74 templates/InvenTree/index.html:260
+#: part/templates/part/detail.html:50 part/templates/part/navbar.html:82
+#: part/templates/part/navbar.html:85 templates/InvenTree/index.html:260
#: templates/InvenTree/search.html:325
#: templates/InvenTree/settings/navbar.html:107
-#: templates/InvenTree/settings/navbar.html:109 templates/navbar.html:37
+#: templates/InvenTree/settings/navbar.html:109 templates/navbar.html:44
#: users/models.py:45
msgid "Purchase Orders"
msgstr ""
-#: company/templates/company/detail.html:112
+#: company/templates/company/detail.html:108
#: order/templates/order/purchase_orders.html:20
msgid "Create new purchase order"
msgstr ""
-#: company/templates/company/detail.html:113
+#: company/templates/company/detail.html:109
#: order/templates/order/purchase_orders.html:21
msgid "New Purchase Order"
msgstr ""
-#: company/templates/company/detail.html:128
-#: company/templates/company/navbar.html:49
-#: company/templates/company/navbar.html:52
+#: company/templates/company/detail.html:124
+#: company/templates/company/navbar.html:55
+#: company/templates/company/navbar.html:58
#: order/templates/order/sales_orders.html:8
#: order/templates/order/sales_orders.html:13
-#: part/templates/part/detail.html:71 part/templates/part/navbar.html:79
-#: part/templates/part/navbar.html:82 templates/InvenTree/index.html:291
+#: part/templates/part/detail.html:71 part/templates/part/navbar.html:91
+#: part/templates/part/navbar.html:94 templates/InvenTree/index.html:291
#: templates/InvenTree/search.html:345
#: templates/InvenTree/settings/navbar.html:113
-#: templates/InvenTree/settings/navbar.html:115 templates/navbar.html:46
+#: templates/InvenTree/settings/navbar.html:115 templates/navbar.html:55
#: users/models.py:46
msgid "Sales Orders"
msgstr ""
-#: company/templates/company/detail.html:134
+#: company/templates/company/detail.html:130
#: order/templates/order/sales_orders.html:20
msgid "Create new sales order"
msgstr ""
-#: company/templates/company/detail.html:135
+#: company/templates/company/detail.html:131
#: order/templates/order/sales_orders.html:21
msgid "New Sales Order"
msgstr ""
-#: company/templates/company/detail.html:151
-#: company/templates/company/navbar.html:55
-#: company/templates/company/navbar.html:58
-#: templates/js/translated/build.js:597
+#: company/templates/company/detail.html:147
+#: company/templates/company/navbar.html:61
+#: company/templates/company/navbar.html:64
+#: templates/js/translated/build.js:620
msgid "Assigned Stock"
msgstr ""
-#: company/templates/company/detail.html:169
+#: company/templates/company/detail.html:165
msgid "Company Notes"
msgstr ""
#: company/templates/company/detail.html:364
#: company/templates/company/manufacturer_part.html:200
-#: part/templates/part/detail.html:826
+#: part/templates/part/detail.html:357
msgid "Delete Supplier Parts?"
msgstr ""
#: company/templates/company/detail.html:365
#: company/templates/company/manufacturer_part.html:201
-#: part/templates/part/detail.html:827
+#: part/templates/part/detail.html:358
msgid "All selected supplier parts will be deleted"
msgstr ""
@@ -2609,17 +2691,17 @@ msgstr ""
#: company/templates/company/manufacturer_part.html:40
#: company/templates/company/supplier_part.html:40
#: company/templates/company/supplier_part.html:146
-#: part/templates/part/detail.html:55 part/templates/part/part_base.html:109
+#: part/templates/part/detail.html:55 part/templates/part/part_base.html:116
msgid "Order part"
msgstr ""
#: company/templates/company/manufacturer_part.html:45
-#: templates/js/translated/company.js:511
+#: templates/js/translated/company.js:560
msgid "Edit manufacturer part"
msgstr ""
#: company/templates/company/manufacturer_part.html:49
-#: templates/js/translated/company.js:512
+#: templates/js/translated/company.js:561
msgid "Delete manufacturer part"
msgstr ""
@@ -2634,9 +2716,9 @@ msgstr ""
#: company/templates/company/manufacturer_part.html:103
#: company/templates/company/manufacturer_part_navbar.html:21
-#: company/views.py:49 part/templates/part/navbar.html:65
-#: part/templates/part/navbar.html:68 part/templates/part/prices.html:144
-#: templates/InvenTree/search.html:316 templates/navbar.html:35
+#: company/views.py:49 part/templates/part/navbar.html:75
+#: part/templates/part/navbar.html:78 part/templates/part/prices.html:163
+#: templates/InvenTree/search.html:316 templates/navbar.html:41
msgid "Suppliers"
msgstr ""
@@ -2649,8 +2731,8 @@ msgstr ""
#: company/templates/company/manufacturer_part.html:138
#: company/templates/company/manufacturer_part.html:239
#: part/templates/part/detail.html:214 part/templates/part/detail.html:294
-#: part/templates/part/detail.html:317 templates/js/translated/company.js:377
-#: users/models.py:194
+#: part/templates/part/detail.html:317 templates/js/translated/company.js:424
+#: templates/js/translated/helpers.js:31 users/models.py:194
msgid "Delete"
msgstr ""
@@ -2659,8 +2741,8 @@ msgstr ""
#: company/templates/company/manufacturer_part_navbar.html:14
#: part/templates/part/category_navbar.html:38
#: part/templates/part/category_navbar.html:41
-#: part/templates/part/detail.html:155 part/templates/part/navbar.html:14
-#: part/templates/part/navbar.html:17
+#: part/templates/part/detail.html:155 part/templates/part/navbar.html:20
+#: part/templates/part/navbar.html:23
msgid "Parameters"
msgstr ""
@@ -2676,7 +2758,7 @@ msgid "Delete parameters"
msgstr ""
#: company/templates/company/manufacturer_part.html:176
-#: part/templates/part/detail.html:719
+#: part/templates/part/detail.html:834
msgid "Add Parameter"
msgstr ""
@@ -2693,18 +2775,18 @@ msgid "Manufacturer Part Stock"
msgstr ""
#: company/templates/company/manufacturer_part_navbar.html:29
-#: company/templates/company/navbar.html:34
+#: company/templates/company/navbar.html:39
#: company/templates/company/supplier_part_navbar.html:15
-#: part/templates/part/navbar.html:31 stock/api.py:53
+#: part/templates/part/navbar.html:38 stock/api.py:54
#: stock/templates/stock/loc_link.html:7 stock/templates/stock/location.html:36
#: stock/templates/stock/stock_app_base.html:10
#: templates/InvenTree/index.html:150 templates/InvenTree/search.html:196
#: templates/InvenTree/search.html:232
#: templates/InvenTree/settings/navbar.html:95
#: templates/InvenTree/settings/navbar.html:97
-#: templates/js/translated/part.js:401 templates/js/translated/part.js:626
-#: templates/js/translated/part.js:786 templates/js/translated/stock.js:133
-#: templates/js/translated/stock.js:935 templates/navbar.html:26
+#: templates/js/translated/part.js:529 templates/js/translated/part.js:758
+#: templates/js/translated/part.js:934 templates/js/translated/stock.js:202
+#: templates/js/translated/stock.js:850 templates/navbar.html:32
msgid "Stock"
msgstr ""
@@ -2717,41 +2799,41 @@ msgstr ""
msgid "Orders"
msgstr ""
-#: company/templates/company/navbar.html:13
-#: company/templates/company/navbar.html:16
+#: company/templates/company/navbar.html:17
+#: company/templates/company/navbar.html:20
msgid "Manufactured Parts"
msgstr ""
-#: company/templates/company/navbar.html:22
-#: company/templates/company/navbar.html:25
+#: company/templates/company/navbar.html:26
+#: company/templates/company/navbar.html:29
msgid "Supplied Parts"
msgstr ""
-#: company/templates/company/navbar.html:31 part/templates/part/navbar.html:28
+#: company/templates/company/navbar.html:36 part/templates/part/navbar.html:35
#: stock/templates/stock/location.html:119
#: stock/templates/stock/location.html:134
#: stock/templates/stock/location.html:148
#: stock/templates/stock/location_navbar.html:18
#: stock/templates/stock/location_navbar.html:21
-#: templates/InvenTree/search.html:198 templates/js/translated/stock.js:1366
+#: templates/InvenTree/search.html:198 templates/js/translated/stock.js:1507
#: templates/stats.html:93 templates/stats.html:102 users/models.py:43
msgid "Stock Items"
msgstr ""
#: company/templates/company/supplier_part.html:7
-#: company/templates/company/supplier_part.html:24 stock/models.py:457
+#: company/templates/company/supplier_part.html:24 stock/models.py:463
#: stock/templates/stock/item_base.html:388
-#: templates/js/translated/company.js:729 templates/js/translated/stock.js:1058
+#: templates/js/translated/company.js:784 templates/js/translated/stock.js:1014
msgid "Supplier Part"
msgstr ""
#: company/templates/company/supplier_part.html:44
-#: templates/js/translated/company.js:802
+#: templates/js/translated/company.js:857
msgid "Edit supplier part"
msgstr ""
#: company/templates/company/supplier_part.html:48
-#: templates/js/translated/company.js:803
+#: templates/js/translated/company.js:858
msgid "Delete supplier part"
msgstr ""
@@ -2775,13 +2857,13 @@ msgid "Order Part"
msgstr ""
#: company/templates/company/supplier_part.html:158
-#: part/templates/part/navbar.html:58 part/templates/part/prices.html:7
+#: part/templates/part/navbar.html:67 part/templates/part/prices.html:7
msgid "Pricing Information"
msgstr ""
#: company/templates/company/supplier_part.html:164
#: company/templates/company/supplier_part.html:265
-#: part/templates/part/prices.html:253 part/views.py:1722
+#: part/templates/part/prices.html:271 part/views.py:1730
msgid "Add Price Break"
msgstr ""
@@ -2789,11 +2871,11 @@ msgstr ""
msgid "No price break information found"
msgstr ""
-#: company/templates/company/supplier_part.html:199 part/views.py:1784
+#: company/templates/company/supplier_part.html:199 part/views.py:1792
msgid "Delete Price Break"
msgstr ""
-#: company/templates/company/supplier_part.html:213 part/views.py:1770
+#: company/templates/company/supplier_part.html:213 part/views.py:1778
msgid "Edit Price Break"
msgstr ""
@@ -2817,8 +2899,8 @@ msgstr ""
msgid "New Supplier"
msgstr ""
-#: company/views.py:55 part/templates/part/prices.html:148
-#: templates/InvenTree/search.html:306 templates/navbar.html:36
+#: company/views.py:55 part/templates/part/prices.html:167
+#: templates/InvenTree/search.html:306 templates/navbar.html:42
msgid "Manufacturers"
msgstr ""
@@ -2827,7 +2909,7 @@ msgid "New Manufacturer"
msgstr ""
#: company/views.py:61 templates/InvenTree/search.html:336
-#: templates/navbar.html:45
+#: templates/navbar.html:53
msgid "Customers"
msgstr ""
@@ -2929,6 +3011,10 @@ msgstr ""
msgid "Part query filters (comma-separated value of key=value pairs)"
msgstr ""
+#: order/api.py:302
+msgid "Destination location must be specified"
+msgstr ""
+
#: order/forms.py:30 order/templates/order/order_base.html:47
msgid "Place order"
msgstr ""
@@ -2978,11 +3064,11 @@ msgstr ""
msgid "Order notes"
msgstr ""
-#: order/models.py:247 order/models.py:534
+#: order/models.py:247 order/models.py:540
msgid "Order reference"
msgstr ""
-#: order/models.py:252 order/models.py:549
+#: order/models.py:252 order/models.py:555
msgid "Purchase order status"
msgstr ""
@@ -2991,7 +3077,7 @@ msgid "Company from which the items are being ordered"
msgstr ""
#: order/models.py:264 order/templates/order/order_base.html:98
-#: templates/js/translated/order.js:263
+#: templates/js/translated/order.js:337
msgid "Supplier Reference"
msgstr ""
@@ -3023,7 +3109,7 @@ msgstr ""
msgid "Date order was completed"
msgstr ""
-#: order/models.py:313 stock/models.py:345 stock/models.py:1060
+#: order/models.py:313 stock/models.py:351 stock/models.py:1072
msgid "Quantity must be greater than zero"
msgstr ""
@@ -3031,150 +3117,182 @@ msgstr ""
msgid "Part supplier must match PO supplier"
msgstr ""
-#: order/models.py:416
+#: order/models.py:421
msgid "Lines can only be received against an order marked as 'Placed'"
msgstr ""
-#: order/models.py:420
+#: order/models.py:425
msgid "Quantity must be an integer"
msgstr ""
-#: order/models.py:422
+#: order/models.py:427
msgid "Quantity must be a positive number"
msgstr ""
-#: order/models.py:545
+#: order/models.py:551
msgid "Company to which the items are being sold"
msgstr ""
-#: order/models.py:551
+#: order/models.py:557
msgid "Customer Reference "
msgstr ""
-#: order/models.py:551
+#: order/models.py:557
msgid "Customer order reference code"
msgstr ""
-#: order/models.py:556
+#: order/models.py:562
msgid "Target date for order completion. Order will be overdue after this date."
msgstr ""
-#: order/models.py:559 templates/js/translated/order.js:392
+#: order/models.py:565 templates/js/translated/order.js:733
msgid "Shipment Date"
msgstr ""
-#: order/models.py:566
+#: order/models.py:572
msgid "shipped by"
msgstr ""
-#: order/models.py:610
+#: order/models.py:616
msgid "SalesOrder cannot be shipped as it is not currently pending"
msgstr ""
-#: order/models.py:707
+#: order/models.py:713
msgid "Item quantity"
msgstr ""
-#: order/models.py:713
+#: order/models.py:719
msgid "Line item reference"
msgstr ""
-#: order/models.py:715
+#: order/models.py:721
msgid "Line item notes"
msgstr ""
-#: order/models.py:745 order/models.py:823 templates/js/translated/order.js:442
+#: order/models.py:751 order/models.py:835 templates/js/translated/order.js:785
msgid "Order"
msgstr ""
-#: order/models.py:746 order/templates/order/order_base.html:9
+#: order/models.py:752 order/templates/order/order_base.html:9
#: order/templates/order/order_base.html:24
#: report/templates/report/inventree_po_report.html:77
#: stock/templates/stock/item_base.html:338
-#: templates/js/translated/order.js:232 templates/js/translated/stock.js:1037
-#: templates/js/translated/stock.js:1448
+#: templates/js/translated/order.js:306 templates/js/translated/stock.js:991
+#: templates/js/translated/stock.js:1589
msgid "Purchase Order"
msgstr ""
-#: order/models.py:767
+#: order/models.py:773
msgid "Supplier part"
msgstr ""
-#: order/models.py:770 order/templates/order/order_base.html:131
-#: order/templates/order/purchase_order_detail.html:388
+#: order/models.py:780 order/templates/order/order_base.html:131
#: order/templates/order/receive_parts.html:22
#: order/templates/order/sales_order_base.html:133
+#: templates/js/translated/order.js:573
msgid "Received"
msgstr ""
-#: order/models.py:770
+#: order/models.py:781
msgid "Number of items received"
msgstr ""
-#: order/models.py:776 part/templates/part/prices.html:157 stock/models.py:582
-#: stock/templates/stock/item_base.html:345
-#: templates/js/translated/stock.js:1081
+#: order/models.py:788 part/templates/part/prices.html:176 stock/models.py:588
+#: stock/serializers.py:147 stock/templates/stock/item_base.html:345
+#: templates/js/translated/stock.js:1045
msgid "Purchase Price"
msgstr ""
-#: order/models.py:777
+#: order/models.py:789
msgid "Unit purchase price"
msgstr ""
-#: order/models.py:785
+#: order/models.py:797
msgid "Where does the Purchaser want this item to be stored?"
msgstr ""
-#: order/models.py:831 part/templates/part/part_pricing.html:97
-#: part/templates/part/prices.html:97 part/templates/part/prices.html:266
+#: order/models.py:843 part/templates/part/part_pricing.html:112
+#: part/templates/part/prices.html:116 part/templates/part/prices.html:284
msgid "Sale Price"
msgstr ""
-#: order/models.py:832
+#: order/models.py:844
msgid "Unit sale price"
msgstr ""
-#: order/models.py:911 order/models.py:913
+#: order/models.py:923 order/models.py:925
msgid "Stock item has not been assigned"
msgstr ""
-#: order/models.py:917
+#: order/models.py:929
msgid "Cannot allocate stock item to a line with a different part"
msgstr ""
-#: order/models.py:919
+#: order/models.py:931
msgid "Cannot allocate stock to a line without a part"
msgstr ""
-#: order/models.py:922
+#: order/models.py:934
msgid "Allocation quantity cannot exceed stock quantity"
msgstr ""
-#: order/models.py:932
+#: order/models.py:944
msgid "Quantity must be 1 for serialized stock item"
msgstr ""
-#: order/models.py:937
+#: order/models.py:949
msgid "Line"
msgstr ""
-#: order/models.py:948
+#: order/models.py:960
msgid "Item"
msgstr ""
-#: order/models.py:949
+#: order/models.py:961
msgid "Select stock item to allocate"
msgstr ""
-#: order/models.py:952
+#: order/models.py:964
msgid "Enter stock allocation quantity"
msgstr ""
-#: order/serializers.py:139
+#: order/serializers.py:166
msgid "Purchase price currency"
msgstr ""
-#: order/serializers.py:360
+#: order/serializers.py:201
+msgid "Line Item"
+msgstr ""
+
+#: order/serializers.py:207
+msgid "Line item does not match purchase order"
+msgstr ""
+
+#: order/serializers.py:217 order/serializers.py:276
+msgid "Select destination location for received items"
+msgstr ""
+
+#: order/serializers.py:234
+msgid "Barcode Hash"
+msgstr ""
+
+#: order/serializers.py:235
+msgid "Unique identifier field"
+msgstr ""
+
+#: order/serializers.py:250
+msgid "Barcode is already in use"
+msgstr ""
+
+#: order/serializers.py:289
+msgid "Line items must be provided"
+msgstr ""
+
+#: order/serializers.py:299
+msgid "Supplied barcode values must be unique"
+msgstr ""
+
+#: order/serializers.py:514
msgid "Sale price currency"
msgstr ""
@@ -3227,14 +3345,12 @@ msgid "Edit Purchase Order"
msgstr ""
#: order/templates/order/order_base.html:196
-#: order/templates/order/purchase_order_detail.html:265
-#: stock/templates/stock/location.html:250
+#: stock/templates/stock/location.html:250 templates/js/translated/order.js:437
msgid "New Location"
msgstr ""
#: order/templates/order/order_base.html:197
-#: order/templates/order/purchase_order_detail.html:266
-#: stock/templates/stock/location.html:42
+#: stock/templates/stock/location.html:42 templates/js/translated/order.js:438
msgid "Create new stock location"
msgstr ""
@@ -3336,7 +3452,7 @@ msgid "Upload File for Purchase Order"
msgstr ""
#: order/templates/order/order_wizard/po_upload.html:18
-#: part/templates/part/bom_upload/upload_file.html:24
+#: part/templates/part/bom_upload/upload_file.html:34
#: part/templates/part/import_wizard/ajax_part_upload.html:10
#: part/templates/part/import_wizard/part_upload.html:21
#, python-format
@@ -3369,7 +3485,7 @@ msgstr ""
#: order/templates/order/order_wizard/select_parts.html:65
#, python-format
-msgid "Select a supplier for %(name)s"
+msgid "Select a supplier for %(name)s"
msgstr ""
#: order/templates/order/order_wizard/select_parts.html:77
@@ -3386,7 +3502,7 @@ msgid "Select existing purchase orders, or create new orders."
msgstr ""
#: order/templates/order/order_wizard/select_pos.html:31
-#: templates/js/translated/order.js:289 templates/js/translated/order.js:397
+#: templates/js/translated/order.js:363 templates/js/translated/order.js:738
msgid "Items"
msgstr ""
@@ -3425,9 +3541,9 @@ msgid "Purchase Order Items"
msgstr ""
#: order/templates/order/purchase_order_detail.html:23
-#: order/templates/order/purchase_order_detail.html:202
+#: order/templates/order/purchase_order_detail.html:203
#: order/templates/order/sales_order_detail.html:23
-#: order/templates/order/sales_order_detail.html:176
+#: order/templates/order/sales_order_detail.html:177
msgid "Add Line Item"
msgstr ""
@@ -3436,49 +3552,6 @@ msgstr ""
msgid "Order Notes"
msgstr ""
-#: order/templates/order/purchase_order_detail.html:238
-#: order/templates/order/sales_order_detail.html:518
-msgid "Edit Line Item"
-msgstr ""
-
-#: order/templates/order/purchase_order_detail.html:248
-#: order/templates/order/sales_order_detail.html:528
-msgid "Delete Line Item"
-msgstr ""
-
-#: order/templates/order/purchase_order_detail.html:279
-msgid "No line items found"
-msgstr ""
-
-#: order/templates/order/purchase_order_detail.html:307
-#: order/templates/order/sales_order_detail.html:353
-msgid "Total"
-msgstr ""
-
-#: order/templates/order/purchase_order_detail.html:360
-#: order/templates/order/sales_order_detail.html:376
-#: templates/js/translated/part.js:1128 templates/js/translated/part.js:1317
-msgid "Unit Price"
-msgstr ""
-
-#: order/templates/order/purchase_order_detail.html:367
-#: order/templates/order/sales_order_detail.html:383
-msgid "Total price"
-msgstr ""
-
-#: order/templates/order/purchase_order_detail.html:431
-#: order/templates/order/sales_order_detail.html:489
-msgid "Edit line item"
-msgstr ""
-
-#: order/templates/order/purchase_order_detail.html:432
-msgid "Delete line item"
-msgstr ""
-
-#: order/templates/order/purchase_order_detail.html:437
-msgid "Receive line item"
-msgstr ""
-
#: order/templates/order/purchase_orders.html:24
#: order/templates/order/sales_orders.html:24
msgid "Print Order Reports"
@@ -3486,18 +3559,18 @@ msgstr ""
#: order/templates/order/receive_parts.html:8
#, python-format
-msgid "Receive outstanding parts for %(order)s - %(desc)s"
+msgid "Receive outstanding parts for %(order)s - %(desc)s"
msgstr ""
-#: order/templates/order/receive_parts.html:14 part/api.py:49
-#: part/models.py:296 part/templates/part/cat_link.html:7
+#: order/templates/order/receive_parts.html:14 part/api.py:54
+#: part/models.py:298 part/templates/part/cat_link.html:7
#: part/templates/part/category.html:108 part/templates/part/category.html:122
#: part/templates/part/category_navbar.html:21
#: part/templates/part/category_navbar.html:24
#: templates/InvenTree/index.html:102 templates/InvenTree/search.html:114
#: templates/InvenTree/settings/navbar.html:83
#: templates/InvenTree/settings/navbar.html:85
-#: templates/js/translated/part.js:987 templates/navbar.html:23
+#: templates/js/translated/part.js:1154 templates/navbar.html:29
#: templates/stats.html:80 templates/stats.html:89 users/models.py:41
msgid "Parts"
msgstr ""
@@ -3511,7 +3584,7 @@ msgid "Order Code"
msgstr ""
#: order/templates/order/receive_parts.html:21
-#: part/templates/part/part_base.html:160 templates/js/translated/part.js:802
+#: part/templates/part/part_base.html:167 templates/js/translated/part.js:949
msgid "On Order"
msgstr ""
@@ -3540,7 +3613,7 @@ msgid "Sales Order Details"
msgstr ""
#: order/templates/order/sales_order_base.html:100
-#: templates/js/translated/order.js:364
+#: templates/js/translated/order.js:705
msgid "Customer Reference"
msgstr ""
@@ -3563,71 +3636,102 @@ msgstr ""
msgid "Sales Order Items"
msgstr ""
-#: order/templates/order/sales_order_detail.html:225
-#: templates/js/translated/bom.js:378 templates/js/translated/build.js:759
-#: templates/js/translated/build.js:1202
+#: order/templates/order/sales_order_detail.html:226
+#: templates/js/translated/bom.js:394 templates/js/translated/build.js:782
+#: templates/js/translated/build.js:1219
msgid "Actions"
msgstr ""
-#: order/templates/order/sales_order_detail.html:232
-#: templates/js/translated/build.js:645 templates/js/translated/build.js:1011
+#: order/templates/order/sales_order_detail.html:233
+#: templates/js/translated/build.js:668 templates/js/translated/build.js:1030
msgid "Edit stock allocation"
msgstr ""
-#: order/templates/order/sales_order_detail.html:233
-#: templates/js/translated/build.js:647 templates/js/translated/build.js:1012
+#: order/templates/order/sales_order_detail.html:234
+#: templates/js/translated/build.js:670 templates/js/translated/build.js:1031
msgid "Delete stock allocation"
msgstr ""
-#: order/templates/order/sales_order_detail.html:306
+#: order/templates/order/sales_order_detail.html:307
msgid "No matching line items"
msgstr ""
-#: order/templates/order/sales_order_detail.html:336
+#: order/templates/order/sales_order_detail.html:337
msgid "ID"
msgstr ""
-#: order/templates/order/sales_order_detail.html:404
-#: templates/js/translated/build.js:710 templates/js/translated/build.js:1007
+#: order/templates/order/sales_order_detail.html:354
+#: templates/js/translated/order.js:481
+msgid "Total"
+msgstr ""
+
+#: order/templates/order/sales_order_detail.html:377
+#: templates/js/translated/order.js:534 templates/js/translated/part.js:1296
+#: templates/js/translated/part.js:1507
+msgid "Unit Price"
+msgstr ""
+
+#: order/templates/order/sales_order_detail.html:384
+#: templates/js/translated/order.js:543
+msgid "Total price"
+msgstr ""
+
+#: order/templates/order/sales_order_detail.html:405
+#: templates/js/translated/build.js:733 templates/js/translated/build.js:1026
msgid "Allocated"
msgstr ""
-#: order/templates/order/sales_order_detail.html:406
+#: order/templates/order/sales_order_detail.html:407
msgid "Fulfilled"
msgstr ""
-#: order/templates/order/sales_order_detail.html:443
+#: order/templates/order/sales_order_detail.html:444
msgid "PO"
msgstr ""
-#: order/templates/order/sales_order_detail.html:473
+#: order/templates/order/sales_order_detail.html:474
msgid "Allocate serial numbers"
msgstr ""
-#: order/templates/order/sales_order_detail.html:476
-#: templates/js/translated/build.js:773
+#: order/templates/order/sales_order_detail.html:477
+#: templates/js/translated/build.js:796
msgid "Allocate stock"
msgstr ""
-#: order/templates/order/sales_order_detail.html:479
+#: order/templates/order/sales_order_detail.html:480
msgid "Purchase stock"
msgstr ""
-#: order/templates/order/sales_order_detail.html:483
-#: templates/js/translated/build.js:766 templates/js/translated/build.js:1210
+#: order/templates/order/sales_order_detail.html:484
+#: templates/js/translated/build.js:789 templates/js/translated/build.js:1227
msgid "Build stock"
msgstr ""
-#: order/templates/order/sales_order_detail.html:486
-#: order/templates/order/sales_order_detail.html:605
+#: order/templates/order/sales_order_detail.html:487
+#: order/templates/order/sales_order_detail.html:606
msgid "Calculate price"
msgstr ""
#: order/templates/order/sales_order_detail.html:490
+#: templates/js/translated/order.js:616
+msgid "Edit line item"
+msgstr ""
+
+#: order/templates/order/sales_order_detail.html:491
msgid "Delete line item "
msgstr ""
-#: order/templates/order/sales_order_detail.html:611
+#: order/templates/order/sales_order_detail.html:519
+#: templates/js/translated/order.js:403
+msgid "Edit Line Item"
+msgstr ""
+
+#: order/templates/order/sales_order_detail.html:529
+#: templates/js/translated/order.js:415
+msgid "Delete Line Item"
+msgstr ""
+
+#: order/templates/order/sales_order_detail.html:612
msgid "Update Unit Price"
msgstr ""
@@ -3814,12 +3918,28 @@ msgstr ""
msgid "Updated {part} unit-price to {price} and quantity to {qty}"
msgstr ""
-#: part/bom.py:133 part/models.py:73 part/models.py:731
-#: part/templates/part/category.html:75 part/templates/part/part_base.html:282
+#: part/api.py:700
+msgid "Must be greater than zero"
+msgstr ""
+
+#: part/api.py:704
+msgid "Must be a valid quantity"
+msgstr ""
+
+#: part/api.py:719
+msgid "Specify location for initial part stock"
+msgstr ""
+
+#: part/api.py:750 part/api.py:754 part/api.py:769 part/api.py:773
+msgid "This field is required"
+msgstr ""
+
+#: part/bom.py:133 part/models.py:75 part/models.py:733
+#: part/templates/part/category.html:75 part/templates/part/part_base.html:290
msgid "Default Location"
msgstr ""
-#: part/bom.py:134 part/templates/part/part_base.html:149
+#: part/bom.py:134 part/templates/part/part_base.html:156
msgid "Available Stock"
msgstr ""
@@ -3879,7 +3999,7 @@ msgstr ""
msgid "Include part supplier data in exported BOM"
msgstr ""
-#: part/forms.py:96 part/models.py:2234
+#: part/forms.py:96 part/models.py:2250
msgid "Parent Part"
msgstr ""
@@ -3923,391 +4043,391 @@ msgstr ""
msgid "Input quantity for price calculation"
msgstr ""
-#: part/models.py:74
+#: part/models.py:76
msgid "Default location for parts in this category"
msgstr ""
-#: part/models.py:77
+#: part/models.py:79
msgid "Default keywords"
msgstr ""
-#: part/models.py:77
+#: part/models.py:79
msgid "Default keywords for parts in this category"
msgstr ""
-#: part/models.py:87 part/models.py:2280
+#: part/models.py:89 part/models.py:2296
#: part/templates/part/part_app_base.html:10
msgid "Part Category"
msgstr ""
-#: part/models.py:88 part/templates/part/category.html:32
+#: part/models.py:90 part/templates/part/category.html:32
#: part/templates/part/category.html:103 templates/InvenTree/search.html:127
#: templates/stats.html:84 users/models.py:40
msgid "Part Categories"
msgstr ""
-#: part/models.py:381
+#: part/models.py:383
msgid "Invalid choice for parent part"
msgstr ""
-#: part/models.py:433 part/models.py:445
+#: part/models.py:435 part/models.py:447
#, python-brace-format
msgid "Part '{p1}' is used in BOM for '{p2}' (recursive)"
msgstr ""
-#: part/models.py:542
+#: part/models.py:544
msgid "Next available serial numbers are"
msgstr ""
-#: part/models.py:546
+#: part/models.py:548
msgid "Next available serial number is"
msgstr ""
-#: part/models.py:551
+#: part/models.py:553
msgid "Most recent serial number is"
msgstr ""
-#: part/models.py:630
+#: part/models.py:632
msgid "Duplicate IPN not allowed in part settings"
msgstr ""
-#: part/models.py:655
+#: part/models.py:657
msgid "Part name"
msgstr ""
-#: part/models.py:662
+#: part/models.py:664
msgid "Is Template"
msgstr ""
-#: part/models.py:663
+#: part/models.py:665
msgid "Is this part a template part?"
msgstr ""
-#: part/models.py:673
+#: part/models.py:675
msgid "Is this part a variant of another part?"
msgstr ""
-#: part/models.py:674
+#: part/models.py:676
msgid "Variant Of"
msgstr ""
-#: part/models.py:680
+#: part/models.py:682
msgid "Part description"
msgstr ""
-#: part/models.py:685 part/templates/part/category.html:82
-#: part/templates/part/part_base.html:251
+#: part/models.py:687 part/templates/part/category.html:82
+#: part/templates/part/part_base.html:259
msgid "Keywords"
msgstr ""
-#: part/models.py:686
+#: part/models.py:688
msgid "Part keywords to improve visibility in search results"
msgstr ""
-#: part/models.py:693 part/models.py:2279
+#: part/models.py:695 part/models.py:2295
#: part/templates/part/set_category.html:15
#: templates/InvenTree/settings/settings.html:167
-#: templates/js/translated/part.js:773
+#: templates/js/translated/part.js:916
msgid "Category"
msgstr ""
-#: part/models.py:694
+#: part/models.py:696
msgid "Part category"
msgstr ""
-#: part/models.py:699 part/templates/part/part_base.html:227
-#: templates/js/translated/part.js:389 templates/js/translated/part.js:617
+#: part/models.py:701 part/templates/part/part_base.html:235
+#: templates/js/translated/part.js:517 templates/js/translated/part.js:749
msgid "IPN"
msgstr ""
-#: part/models.py:700
+#: part/models.py:702
msgid "Internal Part Number"
msgstr ""
-#: part/models.py:706
+#: part/models.py:708
msgid "Part revision or version number"
msgstr ""
-#: part/models.py:707 part/templates/part/part_base.html:244
-#: report/models.py:200 templates/js/translated/part.js:393
+#: part/models.py:709 part/templates/part/part_base.html:252
+#: report/models.py:200 templates/js/translated/part.js:521
msgid "Revision"
msgstr ""
-#: part/models.py:729
+#: part/models.py:731
msgid "Where is this item normally stored?"
msgstr ""
-#: part/models.py:776 part/templates/part/part_base.html:289
+#: part/models.py:778 part/templates/part/part_base.html:297
msgid "Default Supplier"
msgstr ""
-#: part/models.py:777
+#: part/models.py:779
msgid "Default supplier part"
msgstr ""
-#: part/models.py:784
+#: part/models.py:786
msgid "Default Expiry"
msgstr ""
-#: part/models.py:785
+#: part/models.py:787
msgid "Expiry time (in days) for stock items of this part"
msgstr ""
-#: part/models.py:790
+#: part/models.py:792
msgid "Minimum Stock"
msgstr ""
-#: part/models.py:791
+#: part/models.py:793
msgid "Minimum allowed stock level"
msgstr ""
-#: part/models.py:798
+#: part/models.py:800
msgid "Stock keeping units for this part"
msgstr ""
-#: part/models.py:804
+#: part/models.py:806
msgid "Can this part be built from other parts?"
msgstr ""
-#: part/models.py:810
+#: part/models.py:812
msgid "Can this part be used to build other parts?"
msgstr ""
-#: part/models.py:816
+#: part/models.py:818
msgid "Does this part have tracking for unique items?"
msgstr ""
-#: part/models.py:821
+#: part/models.py:823
msgid "Can this part be purchased from external suppliers?"
msgstr ""
-#: part/models.py:826
+#: part/models.py:828
msgid "Can this part be sold to customers?"
msgstr ""
-#: part/models.py:830 templates/js/translated/table_filters.js:21
-#: templates/js/translated/table_filters.js:69
-#: templates/js/translated/table_filters.js:255
-#: templates/js/translated/table_filters.js:324
+#: part/models.py:832 templates/js/translated/table_filters.js:34
+#: templates/js/translated/table_filters.js:82
+#: templates/js/translated/table_filters.js:268
+#: templates/js/translated/table_filters.js:337
msgid "Active"
msgstr ""
-#: part/models.py:831
+#: part/models.py:833
msgid "Is this part active?"
msgstr ""
-#: part/models.py:836
+#: part/models.py:838
msgid "Is this a virtual part, such as a software product or license?"
msgstr ""
-#: part/models.py:841
+#: part/models.py:843
msgid "Part notes - supports Markdown formatting"
msgstr ""
-#: part/models.py:844
+#: part/models.py:846
msgid "BOM checksum"
msgstr ""
-#: part/models.py:844
+#: part/models.py:846
msgid "Stored BOM checksum"
msgstr ""
-#: part/models.py:847
+#: part/models.py:849
msgid "BOM checked by"
msgstr ""
-#: part/models.py:849
+#: part/models.py:851
msgid "BOM checked date"
msgstr ""
-#: part/models.py:853
+#: part/models.py:855
msgid "Creation User"
msgstr ""
-#: part/models.py:1592
+#: part/models.py:1601
msgid "Sell multiple"
msgstr ""
-#: part/models.py:2080
+#: part/models.py:2096
msgid "Test templates can only be created for trackable parts"
msgstr ""
-#: part/models.py:2097
+#: part/models.py:2113
msgid "Test with this name already exists for this part"
msgstr ""
-#: part/models.py:2117 templates/js/translated/part.js:1038
-#: templates/js/translated/stock.js:485
+#: part/models.py:2133 templates/js/translated/part.js:1205
+#: templates/js/translated/stock.js:556
msgid "Test Name"
msgstr ""
-#: part/models.py:2118
+#: part/models.py:2134
msgid "Enter a name for the test"
msgstr ""
-#: part/models.py:2123
+#: part/models.py:2139
msgid "Test Description"
msgstr ""
-#: part/models.py:2124
+#: part/models.py:2140
msgid "Enter description for this test"
msgstr ""
-#: part/models.py:2129 templates/js/translated/part.js:1047
-#: templates/js/translated/table_filters.js:241
+#: part/models.py:2145 templates/js/translated/part.js:1214
+#: templates/js/translated/table_filters.js:254
msgid "Required"
msgstr ""
-#: part/models.py:2130
+#: part/models.py:2146
msgid "Is this test required to pass?"
msgstr ""
-#: part/models.py:2135 templates/js/translated/part.js:1055
+#: part/models.py:2151 templates/js/translated/part.js:1222
msgid "Requires Value"
msgstr ""
-#: part/models.py:2136
+#: part/models.py:2152
msgid "Does this test require a value when adding a test result?"
msgstr ""
-#: part/models.py:2141 templates/js/translated/part.js:1062
+#: part/models.py:2157 templates/js/translated/part.js:1229
msgid "Requires Attachment"
msgstr ""
-#: part/models.py:2142
+#: part/models.py:2158
msgid "Does this test require a file attachment when adding a test result?"
msgstr ""
-#: part/models.py:2153
+#: part/models.py:2169
#, python-brace-format
msgid "Illegal character in template name ({c})"
msgstr ""
-#: part/models.py:2189
+#: part/models.py:2205
msgid "Parameter template name must be unique"
msgstr ""
-#: part/models.py:2197
+#: part/models.py:2213
msgid "Parameter Name"
msgstr ""
-#: part/models.py:2204
+#: part/models.py:2220
msgid "Parameter Units"
msgstr ""
-#: part/models.py:2236 part/models.py:2285 part/models.py:2286
+#: part/models.py:2252 part/models.py:2301 part/models.py:2302
#: templates/InvenTree/settings/settings.html:162
msgid "Parameter Template"
msgstr ""
-#: part/models.py:2238
+#: part/models.py:2254
msgid "Data"
msgstr ""
-#: part/models.py:2238
+#: part/models.py:2254
msgid "Parameter Value"
msgstr ""
-#: part/models.py:2290 templates/InvenTree/settings/settings.html:171
+#: part/models.py:2306 templates/InvenTree/settings/settings.html:171
msgid "Default Value"
msgstr ""
-#: part/models.py:2291
+#: part/models.py:2307
msgid "Default Parameter Value"
msgstr ""
-#: part/models.py:2325
+#: part/models.py:2341
msgid "Select parent part"
msgstr ""
-#: part/models.py:2333
+#: part/models.py:2349
msgid "Sub part"
msgstr ""
-#: part/models.py:2334
+#: part/models.py:2350
msgid "Select part to be used in BOM"
msgstr ""
-#: part/models.py:2340
+#: part/models.py:2356
msgid "BOM quantity for this BOM item"
msgstr ""
-#: part/models.py:2342 templates/js/translated/bom.js:236
-#: templates/js/translated/bom.js:298
+#: part/models.py:2358 templates/js/translated/bom.js:256
+#: templates/js/translated/bom.js:314
msgid "Optional"
msgstr ""
-#: part/models.py:2342
+#: part/models.py:2358
msgid "This BOM item is optional"
msgstr ""
-#: part/models.py:2345
+#: part/models.py:2361
msgid "Overage"
msgstr ""
-#: part/models.py:2346
+#: part/models.py:2362
msgid "Estimated build wastage quantity (absolute or percentage)"
msgstr ""
-#: part/models.py:2349
+#: part/models.py:2365
msgid "BOM item reference"
msgstr ""
-#: part/models.py:2352
+#: part/models.py:2368
msgid "BOM item notes"
msgstr ""
-#: part/models.py:2354
+#: part/models.py:2370
msgid "Checksum"
msgstr ""
-#: part/models.py:2354
+#: part/models.py:2370
msgid "BOM line checksum"
msgstr ""
-#: part/models.py:2358 templates/js/translated/bom.js:315
-#: templates/js/translated/bom.js:322
-#: templates/js/translated/table_filters.js:55
+#: part/models.py:2374 templates/js/translated/bom.js:331
+#: templates/js/translated/bom.js:338
+#: templates/js/translated/table_filters.js:68
msgid "Inherited"
msgstr ""
-#: part/models.py:2359
+#: part/models.py:2375
msgid "This BOM item is inherited by BOMs for variant parts"
msgstr ""
-#: part/models.py:2364 templates/js/translated/bom.js:307
+#: part/models.py:2380 templates/js/translated/bom.js:323
msgid "Allow Variants"
msgstr ""
-#: part/models.py:2365
+#: part/models.py:2381
msgid "Stock items for variant parts can be used for this BOM item"
msgstr ""
-#: part/models.py:2450 stock/models.py:335
+#: part/models.py:2466 stock/models.py:341
msgid "Quantity must be integer value for trackable parts"
msgstr ""
-#: part/models.py:2459 part/models.py:2461
+#: part/models.py:2475 part/models.py:2477
msgid "Sub part must be specified"
msgstr ""
-#: part/models.py:2464
+#: part/models.py:2480
msgid "BOM Item"
msgstr ""
-#: part/models.py:2583
+#: part/models.py:2599
msgid "Part 1"
msgstr ""
-#: part/models.py:2587
+#: part/models.py:2603
msgid "Part 2"
msgstr ""
-#: part/models.py:2587
+#: part/models.py:2603
msgid "Select Related Part"
msgstr ""
-#: part/models.py:2619
+#: part/models.py:2635
msgid "Error creating relationship: check that the part is not related to itself and that the relationship is unique"
msgstr ""
@@ -4317,17 +4437,17 @@ msgstr ""
#: part/templates/part/bom.html:14
#, python-format
-msgid "The BOM for %(part)s has changed, and must be validated.
"
+msgid "The BOM for %(part)s has changed, and must be validated.
"
msgstr ""
#: part/templates/part/bom.html:16
#, python-format
-msgid "The BOM for %(part)s was last checked by %(checker)s on %(check_date)s"
+msgid "The BOM for %(part)s was last checked by %(checker)s on %(check_date)s"
msgstr ""
#: part/templates/part/bom.html:20
#, python-format
-msgid "The BOM for %(part)s has not been validated."
+msgid "The BOM for %(part)s has not been validated."
msgstr ""
#: part/templates/part/bom.html:27
@@ -4374,33 +4494,34 @@ msgstr ""
msgid "Select Part"
msgstr ""
-#: part/templates/part/bom_upload/upload_file.html:7
-msgid "Upload BOM File"
+#: part/templates/part/bom_upload/upload_file.html:13
+#: part/templates/part/bom_upload/upload_file.html:16
+msgid "Return To BOM"
msgstr ""
-#: part/templates/part/bom_upload/upload_file.html:12
+#: part/templates/part/bom_upload/upload_file.html:27
msgid "Upload Bill of Materials"
msgstr ""
-#: part/templates/part/bom_upload/upload_file.html:16
+#: part/templates/part/bom_upload/upload_file.html:46
msgid "Requirements for BOM upload"
msgstr ""
-#: part/templates/part/bom_upload/upload_file.html:18
+#: part/templates/part/bom_upload/upload_file.html:48
msgid "The BOM file must contain the required named columns as provided in the "
msgstr ""
-#: part/templates/part/bom_upload/upload_file.html:18
+#: part/templates/part/bom_upload/upload_file.html:48
msgid "BOM Upload Template"
msgstr ""
-#: part/templates/part/bom_upload/upload_file.html:19
+#: part/templates/part/bom_upload/upload_file.html:49
msgid "Each part must already exist in the database"
msgstr ""
#: part/templates/part/bom_validate.html:6
#, python-format
-msgid "Confirm that the Bill of Materials (BOM) is valid for:
%(part)s"
+msgid "Confirm that the Bill of Materials (BOM) is valid for:
%(part)s"
msgstr ""
#: part/templates/part/bom_validate.html:9
@@ -4435,7 +4556,7 @@ msgstr ""
msgid "Category Description"
msgstr ""
-#: part/templates/part/category.html:88 part/templates/part/category.html:174
+#: part/templates/part/category.html:88 part/templates/part/category.html:175
#: part/templates/part/category_navbar.html:14
#: part/templates/part/category_navbar.html:17
msgid "Subcategories"
@@ -4449,7 +4570,7 @@ msgstr ""
msgid "Export Part Data"
msgstr ""
-#: part/templates/part/category.html:127 part/templates/part/category.html:141
+#: part/templates/part/category.html:127 part/templates/part/category.html:142
msgid "Export"
msgstr ""
@@ -4470,26 +4591,30 @@ msgid "Set Category"
msgstr ""
#: part/templates/part/category.html:141
+msgid "Print Labels"
+msgstr ""
+
+#: part/templates/part/category.html:142
msgid "Export Data"
msgstr ""
-#: part/templates/part/category.html:145
+#: part/templates/part/category.html:146
msgid "View list display"
msgstr ""
-#: part/templates/part/category.html:148
+#: part/templates/part/category.html:149
msgid "View grid display"
msgstr ""
-#: part/templates/part/category.html:164
+#: part/templates/part/category.html:165
msgid "Part Parameters"
msgstr ""
-#: part/templates/part/category.html:253
+#: part/templates/part/category.html:254
msgid "Create Part Category"
msgstr ""
-#: part/templates/part/category.html:279
+#: part/templates/part/category.html:281
msgid "Create Part"
msgstr ""
@@ -4533,7 +4658,7 @@ msgstr ""
msgid "Import Parts"
msgstr ""
-#: part/templates/part/copy_part.html:9 templates/js/translated/part.js:224
+#: part/templates/part/copy_part.html:9 templates/js/translated/part.js:352
msgid "Duplicate Part"
msgstr ""
@@ -4554,7 +4679,7 @@ msgstr ""
#: part/templates/part/create_part.html:17
#, python-format
-msgid "%(full_name)s - %(desc)s (%(match_per)s%% match)"
+msgid "%(full_name)s - %(desc)s (%(match_per)s%% match)"
msgstr ""
#: part/templates/part/detail.html:16
@@ -4563,10 +4688,10 @@ msgstr ""
#: part/templates/part/detail.html:21
#, python-format
-msgid "Showing stock for all variants of %(full_name)s"
+msgid "Showing stock for all variants of %(full_name)s"
msgstr ""
-#: part/templates/part/detail.html:30 part/templates/part/navbar.html:87
+#: part/templates/part/detail.html:30 part/templates/part/navbar.html:99
msgid "Part Test Templates"
msgstr ""
@@ -4586,7 +4711,7 @@ msgstr ""
msgid "Sales Order Allocations"
msgstr ""
-#: part/templates/part/detail.html:130 part/templates/part/navbar.html:21
+#: part/templates/part/detail.html:130 part/templates/part/navbar.html:27
msgid "Part Variants"
msgstr ""
@@ -4602,8 +4727,8 @@ msgstr ""
msgid "Add new parameter"
msgstr ""
-#: part/templates/part/detail.html:182 part/templates/part/navbar.html:95
-#: part/templates/part/navbar.html:98
+#: part/templates/part/detail.html:182 part/templates/part/navbar.html:107
+#: part/templates/part/navbar.html:110
msgid "Related Parts"
msgstr ""
@@ -4611,8 +4736,8 @@ msgstr ""
msgid "Add Related"
msgstr ""
-#: part/templates/part/detail.html:228 part/templates/part/navbar.html:35
-#: part/templates/part/navbar.html:38
+#: part/templates/part/detail.html:228 part/templates/part/navbar.html:43
+#: part/templates/part/navbar.html:46
msgid "Bill of Materials"
msgstr ""
@@ -4644,50 +4769,50 @@ msgstr ""
msgid "Delete manufacturer parts"
msgstr ""
-#: part/templates/part/detail.html:402
+#: part/templates/part/detail.html:502
msgid "Delete selected BOM items?"
msgstr ""
-#: part/templates/part/detail.html:403
+#: part/templates/part/detail.html:503
msgid "All selected BOM items will be deleted"
msgstr ""
-#: part/templates/part/detail.html:454
+#: part/templates/part/detail.html:554
msgid "Create BOM Item"
msgstr ""
-#: part/templates/part/detail.html:589
+#: part/templates/part/detail.html:699
msgid "Add Test Result Template"
msgstr ""
-#: part/templates/part/detail.html:607
+#: part/templates/part/detail.html:716
msgid "Edit Test Result Template"
msgstr ""
-#: part/templates/part/detail.html:619
+#: part/templates/part/detail.html:728
msgid "Delete Test Result Template"
msgstr ""
-#: part/templates/part/detail.html:670
+#: part/templates/part/detail.html:784
msgid "Edit Part Notes"
msgstr ""
-#: part/templates/part/detail.html:903
+#: part/templates/part/detail.html:936
#, python-format
msgid "Purchase Unit Price - %(currency)s"
msgstr ""
-#: part/templates/part/detail.html:915
+#: part/templates/part/detail.html:948
#, python-format
msgid "Unit Price-Cost Difference - %(currency)s"
msgstr ""
-#: part/templates/part/detail.html:927
+#: part/templates/part/detail.html:960
#, python-format
msgid "Supplier Unit Cost - %(currency)s"
msgstr ""
-#: part/templates/part/detail.html:1016
+#: part/templates/part/detail.html:1049
#, python-format
msgid "Unit Price - %(currency)s"
msgstr ""
@@ -4701,19 +4826,19 @@ msgstr ""
msgid "Import Parts from File"
msgstr ""
-#: part/templates/part/navbar.html:24
+#: part/templates/part/navbar.html:30
msgid "Variants"
msgstr ""
-#: part/templates/part/navbar.html:51 part/templates/part/navbar.html:54
+#: part/templates/part/navbar.html:59 part/templates/part/navbar.html:62
msgid "Used In"
msgstr ""
-#: part/templates/part/navbar.html:61
+#: part/templates/part/navbar.html:70
msgid "Prices"
msgstr ""
-#: part/templates/part/navbar.html:90
+#: part/templates/part/navbar.html:102
msgid "Test Templates"
msgstr ""
@@ -4721,195 +4846,204 @@ msgstr ""
msgid "Part List"
msgstr ""
-#: part/templates/part/part_base.html:30
+#: part/templates/part/part_base.html:35
msgid "Part is a template part (variants can be made from this part)"
msgstr ""
-#: part/templates/part/part_base.html:33
+#: part/templates/part/part_base.html:38
msgid "Part can be assembled from other parts"
msgstr ""
-#: part/templates/part/part_base.html:36
+#: part/templates/part/part_base.html:41
msgid "Part can be used in assemblies"
msgstr ""
-#: part/templates/part/part_base.html:39
+#: part/templates/part/part_base.html:44
msgid "Part stock is tracked by serial number"
msgstr ""
-#: part/templates/part/part_base.html:42
+#: part/templates/part/part_base.html:47
msgid "Part can be purchased from external suppliers"
msgstr ""
-#: part/templates/part/part_base.html:45
+#: part/templates/part/part_base.html:50
msgid "Part can be sold to customers"
msgstr ""
-#: part/templates/part/part_base.html:52 part/templates/part/part_base.html:60
+#: part/templates/part/part_base.html:57 part/templates/part/part_base.html:65
msgid "Part is virtual (not a physical part)"
msgstr ""
-#: part/templates/part/part_base.html:53 templates/js/translated/company.js:454
-#: templates/js/translated/company.js:704 templates/js/translated/part.js:304
-#: templates/js/translated/part.js:381
+#: part/templates/part/part_base.html:58 templates/js/translated/company.js:503
+#: templates/js/translated/company.js:759 templates/js/translated/part.js:432
+#: templates/js/translated/part.js:509
msgid "Inactive"
msgstr ""
-#: part/templates/part/part_base.html:68
+#: part/templates/part/part_base.html:73
msgid "Star this part"
msgstr ""
-#: part/templates/part/part_base.html:75
+#: part/templates/part/part_base.html:80
#: stock/templates/stock/item_base.html:75
#: stock/templates/stock/location.html:51
msgid "Barcode actions"
msgstr ""
-#: part/templates/part/part_base.html:77
+#: part/templates/part/part_base.html:82
#: stock/templates/stock/item_base.html:77
#: stock/templates/stock/location.html:53 templates/qr_button.html:1
msgid "Show QR Code"
msgstr ""
-#: part/templates/part/part_base.html:78
+#: part/templates/part/part_base.html:83
#: stock/templates/stock/item_base.html:93
#: stock/templates/stock/location.html:54
msgid "Print Label"
msgstr ""
-#: part/templates/part/part_base.html:83
+#: part/templates/part/part_base.html:89
msgid "Show pricing information"
msgstr ""
-#: part/templates/part/part_base.html:88
+#: part/templates/part/part_base.html:95
#: stock/templates/stock/item_base.html:142
#: stock/templates/stock/location.html:62
msgid "Stock actions"
msgstr ""
-#: part/templates/part/part_base.html:95
+#: part/templates/part/part_base.html:102
msgid "Count part stock"
msgstr ""
-#: part/templates/part/part_base.html:101
+#: part/templates/part/part_base.html:108
msgid "Transfer part stock"
msgstr ""
-#: part/templates/part/part_base.html:118
+#: part/templates/part/part_base.html:125
msgid "Part actions"
msgstr ""
-#: part/templates/part/part_base.html:121
+#: part/templates/part/part_base.html:128
msgid "Duplicate part"
msgstr ""
-#: part/templates/part/part_base.html:124
+#: part/templates/part/part_base.html:131
msgid "Edit part"
msgstr ""
-#: part/templates/part/part_base.html:127
+#: part/templates/part/part_base.html:134
msgid "Delete part"
msgstr ""
-#: part/templates/part/part_base.html:139
+#: part/templates/part/part_base.html:146
#, python-format
msgid "This part is a variant of %(link)s"
msgstr ""
-#: part/templates/part/part_base.html:154
-#: templates/js/translated/table_filters.js:153
+#: part/templates/part/part_base.html:161
+#: templates/js/translated/table_filters.js:166
msgid "In Stock"
msgstr ""
-#: part/templates/part/part_base.html:167 templates/InvenTree/index.html:186
+#: part/templates/part/part_base.html:174 templates/InvenTree/index.html:186
msgid "Required for Build Orders"
msgstr ""
-#: part/templates/part/part_base.html:174
+#: part/templates/part/part_base.html:181
msgid "Required for Sales Orders"
msgstr ""
-#: part/templates/part/part_base.html:181
+#: part/templates/part/part_base.html:188
msgid "Allocated to Orders"
msgstr ""
-#: part/templates/part/part_base.html:196 templates/js/translated/bom.js:336
+#: part/templates/part/part_base.html:203 templates/js/translated/bom.js:352
msgid "Can Build"
msgstr ""
-#: part/templates/part/part_base.html:202 templates/js/translated/part.js:633
-#: templates/js/translated/part.js:806
+#: part/templates/part/part_base.html:209 templates/js/translated/part.js:765
+#: templates/js/translated/part.js:953
msgid "Building"
msgstr ""
-#: part/templates/part/part_base.html:275
+#: part/templates/part/part_base.html:223
+#: part/templates/part/part_base.html:524
+#: part/templates/part/part_base.html:550
+msgid "Show Part Details"
+msgstr ""
+
+#: part/templates/part/part_base.html:283
msgid "Latest Serial Number"
msgstr ""
-#: part/templates/part/part_base.html:383 part/templates/part/prices.html:125
+#: part/templates/part/part_base.html:396 part/templates/part/prices.html:144
msgid "Calculate"
msgstr ""
-#: part/templates/part/part_base.html:426
+#: part/templates/part/part_base.html:439
msgid "No matching images found"
msgstr ""
-#: part/templates/part/part_base.html:506
-#: part/templates/part/part_base.html:531
+#: part/templates/part/part_base.html:519
+#: part/templates/part/part_base.html:544
msgid "Hide Part Details"
msgstr ""
-#: part/templates/part/part_base.html:511
-#: part/templates/part/part_base.html:537
-msgid "Show Part Details"
-msgstr ""
-
#: part/templates/part/part_pricing.html:22 part/templates/part/prices.html:21
msgid "Supplier Pricing"
msgstr ""
#: part/templates/part/part_pricing.html:26
#: part/templates/part/part_pricing.html:52
-#: part/templates/part/part_pricing.html:85
-#: part/templates/part/part_pricing.html:100 part/templates/part/prices.html:25
-#: part/templates/part/prices.html:52 part/templates/part/prices.html:84
-#: part/templates/part/prices.html:101
+#: part/templates/part/part_pricing.html:100
+#: part/templates/part/part_pricing.html:115 part/templates/part/prices.html:25
+#: part/templates/part/prices.html:52 part/templates/part/prices.html:103
+#: part/templates/part/prices.html:120
msgid "Unit Cost"
msgstr ""
#: part/templates/part/part_pricing.html:32
#: part/templates/part/part_pricing.html:58
-#: part/templates/part/part_pricing.html:89
-#: part/templates/part/part_pricing.html:104 part/templates/part/prices.html:32
-#: part/templates/part/prices.html:59 part/templates/part/prices.html:89
-#: part/templates/part/prices.html:106
+#: part/templates/part/part_pricing.html:104
+#: part/templates/part/part_pricing.html:119 part/templates/part/prices.html:32
+#: part/templates/part/prices.html:59 part/templates/part/prices.html:108
+#: part/templates/part/prices.html:125
msgid "Total Cost"
msgstr ""
#: part/templates/part/part_pricing.html:40 part/templates/part/prices.html:40
-#: templates/js/translated/bom.js:291
+#: templates/js/translated/bom.js:307
msgid "No supplier pricing available"
msgstr ""
#: part/templates/part/part_pricing.html:48 part/templates/part/prices.html:49
-#: part/templates/part/prices.html:225
+#: part/templates/part/prices.html:243
msgid "BOM Pricing"
msgstr ""
-#: part/templates/part/part_pricing.html:66 part/templates/part/prices.html:67
+#: part/templates/part/part_pricing.html:65 part/templates/part/prices.html:69
+msgid "Unit Purchase Price"
+msgstr ""
+
+#: part/templates/part/part_pricing.html:71 part/templates/part/prices.html:76
+msgid "Total Purchase Price"
+msgstr ""
+
+#: part/templates/part/part_pricing.html:81 part/templates/part/prices.html:86
msgid "Note: BOM pricing is incomplete for this part"
msgstr ""
-#: part/templates/part/part_pricing.html:73 part/templates/part/prices.html:74
+#: part/templates/part/part_pricing.html:88 part/templates/part/prices.html:93
msgid "No BOM pricing available"
msgstr ""
-#: part/templates/part/part_pricing.html:82 part/templates/part/prices.html:83
+#: part/templates/part/part_pricing.html:97 part/templates/part/prices.html:102
msgid "Internal Price"
msgstr ""
-#: part/templates/part/part_pricing.html:113
-#: part/templates/part/prices.html:115
+#: part/templates/part/part_pricing.html:128
+#: part/templates/part/prices.html:134
msgid "No pricing information is available for this part."
msgstr ""
@@ -4919,7 +5053,7 @@ msgstr ""
#: part/templates/part/partial_delete.html:7
#, python-format
-msgid "Are you sure you want to delete part '%(full_name)s'?"
+msgid "Are you sure you want to delete part '%(full_name)s'?"
msgstr ""
#: part/templates/part/partial_delete.html:12
@@ -4963,53 +5097,53 @@ msgstr ""
msgid "Show BOM cost"
msgstr ""
-#: part/templates/part/prices.html:98
+#: part/templates/part/prices.html:117
msgid "Show sale cost"
msgstr ""
-#: part/templates/part/prices.html:99
+#: part/templates/part/prices.html:118
msgid "Show sale price"
msgstr ""
-#: part/templates/part/prices.html:121
+#: part/templates/part/prices.html:140
msgid "Calculation parameters"
msgstr ""
-#: part/templates/part/prices.html:136 templates/js/translated/bom.js:285
+#: part/templates/part/prices.html:155 templates/js/translated/bom.js:301
msgid "Supplier Cost"
msgstr ""
-#: part/templates/part/prices.html:137 part/templates/part/prices.html:158
-#: part/templates/part/prices.html:183 part/templates/part/prices.html:213
-#: part/templates/part/prices.html:239 part/templates/part/prices.html:267
+#: part/templates/part/prices.html:156 part/templates/part/prices.html:177
+#: part/templates/part/prices.html:201 part/templates/part/prices.html:231
+#: part/templates/part/prices.html:257 part/templates/part/prices.html:285
msgid "Jump to overview"
msgstr ""
-#: part/templates/part/prices.html:162
+#: part/templates/part/prices.html:181
msgid "Stock Pricing"
msgstr ""
-#: part/templates/part/prices.html:172
+#: part/templates/part/prices.html:190
msgid "No stock pricing history is available for this part."
msgstr ""
-#: part/templates/part/prices.html:182
+#: part/templates/part/prices.html:200
msgid "Internal Cost"
msgstr ""
-#: part/templates/part/prices.html:197 part/views.py:1793
+#: part/templates/part/prices.html:215 part/views.py:1801
msgid "Add Internal Price Break"
msgstr ""
-#: part/templates/part/prices.html:212
+#: part/templates/part/prices.html:230
msgid "BOM Cost"
msgstr ""
-#: part/templates/part/prices.html:238
+#: part/templates/part/prices.html:256
msgid "Sale Cost"
msgstr ""
-#: part/templates/part/prices.html:278
+#: part/templates/part/prices.html:296
msgid "No sale pice history available for this part."
msgstr ""
@@ -5017,8 +5151,8 @@ msgstr ""
msgid "Set category for the following parts"
msgstr ""
-#: part/templates/part/stock_count.html:7 templates/js/translated/bom.js:259
-#: templates/js/translated/part.js:623 templates/js/translated/part.js:810
+#: part/templates/part/stock_count.html:7 templates/js/translated/bom.js:278
+#: templates/js/translated/part.js:755 templates/js/translated/part.js:957
msgid "No Stock"
msgstr ""
@@ -5032,10 +5166,10 @@ msgstr ""
#: part/templates/part/variant_part.html:10
#, python-format
-msgid "Create a new variant of template '%(full_name)s'."
+msgid "Create a new variant of template '%(full_name)s'."
msgstr ""
-#: part/templatetags/inventree_extras.py:105
+#: part/templatetags/inventree_extras.py:106
msgid "Unknown database"
msgstr ""
@@ -5116,51 +5250,51 @@ msgstr ""
msgid "Part Pricing"
msgstr ""
-#: part/views.py:1429
+#: part/views.py:1437
msgid "Create Part Parameter Template"
msgstr ""
-#: part/views.py:1439
+#: part/views.py:1447
msgid "Edit Part Parameter Template"
msgstr ""
-#: part/views.py:1446
+#: part/views.py:1454
msgid "Delete Part Parameter Template"
msgstr ""
-#: part/views.py:1494 templates/js/translated/part.js:179
+#: part/views.py:1502 templates/js/translated/part.js:303
msgid "Edit Part Category"
msgstr ""
-#: part/views.py:1532
+#: part/views.py:1540
msgid "Delete Part Category"
msgstr ""
-#: part/views.py:1538
+#: part/views.py:1546
msgid "Part category was deleted"
msgstr ""
-#: part/views.py:1547
+#: part/views.py:1555
msgid "Create Category Parameter Template"
msgstr ""
-#: part/views.py:1648
+#: part/views.py:1656
msgid "Edit Category Parameter Template"
msgstr ""
-#: part/views.py:1704
+#: part/views.py:1712
msgid "Delete Category Parameter Template"
msgstr ""
-#: part/views.py:1726
+#: part/views.py:1734
msgid "Added new price break"
msgstr ""
-#: part/views.py:1802
+#: part/views.py:1810
msgid "Edit Internal Price Break"
msgstr ""
-#: part/views.py:1810
+#: part/views.py:1818
msgid "Delete Internal Price Break"
msgstr ""
@@ -5266,17 +5400,17 @@ msgid "Test Results"
msgstr ""
#: report/templates/report/inventree_test_report_base.html:88
-#: stock/models.py:1796
+#: stock/models.py:1807
msgid "Test"
msgstr ""
#: report/templates/report/inventree_test_report_base.html:89
-#: stock/models.py:1802
+#: stock/models.py:1813
msgid "Result"
msgstr ""
#: report/templates/report/inventree_test_report_base.html:92
-#: templates/js/translated/order.js:279 templates/js/translated/stock.js:1382
+#: templates/js/translated/order.js:353 templates/js/translated/stock.js:1523
msgid "Date"
msgstr ""
@@ -5288,51 +5422,51 @@ msgstr ""
msgid "Fail"
msgstr ""
-#: stock/api.py:145
+#: stock/api.py:146
msgid "Request must contain list of stock items"
msgstr ""
-#: stock/api.py:153
+#: stock/api.py:154
msgid "Improperly formatted data"
msgstr ""
-#: stock/api.py:161
+#: stock/api.py:162
msgid "Each entry must contain a valid integer primary-key"
msgstr ""
-#: stock/api.py:167
+#: stock/api.py:168
msgid "Primary key does not match valid stock item"
msgstr ""
-#: stock/api.py:177
+#: stock/api.py:178
msgid "Invalid quantity value"
msgstr ""
-#: stock/api.py:182
+#: stock/api.py:183
msgid "Quantity must not be less than zero"
msgstr ""
-#: stock/api.py:210
+#: stock/api.py:211
#, python-brace-format
msgid "Updated stock for {n} items"
msgstr ""
-#: stock/api.py:246 stock/api.py:279
+#: stock/api.py:247 stock/api.py:280
msgid "Specified quantity exceeds stock quantity"
msgstr ""
-#: stock/api.py:269
+#: stock/api.py:270
msgid "Valid location must be specified"
msgstr ""
-#: stock/api.py:289
+#: stock/api.py:290
#, python-brace-format
msgid "Moved {n} parts to {loc}"
msgstr ""
-#: stock/forms.py:79 stock/forms.py:307 stock/models.py:550
+#: stock/forms.py:79 stock/forms.py:307 stock/models.py:556
#: stock/templates/stock/item_base.html:395
-#: templates/js/translated/stock.js:1025
+#: templates/js/translated/stock.js:967
msgid "Expiry Date"
msgstr ""
@@ -5384,258 +5518,266 @@ msgstr ""
msgid "Confirm removal of installed stock items"
msgstr ""
-#: stock/models.py:57 stock/models.py:587
+#: stock/models.py:57 stock/models.py:593
msgid "Owner"
msgstr ""
-#: stock/models.py:58 stock/models.py:588
+#: stock/models.py:58 stock/models.py:594
msgid "Select Owner"
msgstr ""
-#: stock/models.py:316
+#: stock/models.py:322
msgid "StockItem with this serial number already exists"
msgstr ""
-#: stock/models.py:352
+#: stock/models.py:358
#, python-brace-format
msgid "Part type ('{pf}') must be {pe}"
msgstr ""
-#: stock/models.py:362 stock/models.py:371
+#: stock/models.py:368 stock/models.py:377
msgid "Quantity must be 1 for item with a serial number"
msgstr ""
-#: stock/models.py:363
+#: stock/models.py:369
msgid "Serial number cannot be set if quantity greater than 1"
msgstr ""
-#: stock/models.py:385
+#: stock/models.py:391
msgid "Item cannot belong to itself"
msgstr ""
-#: stock/models.py:391
+#: stock/models.py:397
msgid "Item must have a build reference if is_building=True"
msgstr ""
-#: stock/models.py:398
+#: stock/models.py:404
msgid "Build reference does not point to the same part object"
msgstr ""
-#: stock/models.py:440
+#: stock/models.py:446
msgid "Parent Stock Item"
msgstr ""
-#: stock/models.py:449
+#: stock/models.py:455
msgid "Base part"
msgstr ""
-#: stock/models.py:458
+#: stock/models.py:464
msgid "Select a matching supplier part for this stock item"
msgstr ""
-#: stock/models.py:463 stock/templates/stock/stock_app_base.html:8
+#: stock/models.py:469 stock/templates/stock/stock_app_base.html:8
msgid "Stock Location"
msgstr ""
-#: stock/models.py:466
+#: stock/models.py:472
msgid "Where is this stock item located?"
msgstr ""
-#: stock/models.py:473
+#: stock/models.py:479
msgid "Packaging this stock item is stored in"
msgstr ""
-#: stock/models.py:478 stock/templates/stock/item_base.html:284
+#: stock/models.py:484 stock/templates/stock/item_base.html:284
msgid "Installed In"
msgstr ""
-#: stock/models.py:481
+#: stock/models.py:487
msgid "Is this item installed in another item?"
msgstr ""
-#: stock/models.py:497
+#: stock/models.py:503
msgid "Serial number for this item"
msgstr ""
-#: stock/models.py:509
+#: stock/models.py:515
msgid "Batch code for this stock item"
msgstr ""
-#: stock/models.py:513
+#: stock/models.py:519
msgid "Stock Quantity"
msgstr ""
-#: stock/models.py:522
+#: stock/models.py:528
msgid "Source Build"
msgstr ""
-#: stock/models.py:524
+#: stock/models.py:530
msgid "Build for this stock item"
msgstr ""
-#: stock/models.py:535
+#: stock/models.py:541
msgid "Source Purchase Order"
msgstr ""
-#: stock/models.py:538
+#: stock/models.py:544
msgid "Purchase order for this stock item"
msgstr ""
-#: stock/models.py:544
+#: stock/models.py:550
msgid "Destination Sales Order"
msgstr ""
-#: stock/models.py:551
+#: stock/models.py:557
msgid "Expiry date for stock item. Stock will be considered expired after this date"
msgstr ""
-#: stock/models.py:564
+#: stock/models.py:570
msgid "Delete on deplete"
msgstr ""
-#: stock/models.py:564
+#: stock/models.py:570
msgid "Delete this Stock Item when stock is depleted"
msgstr ""
-#: stock/models.py:574 stock/templates/stock/item.html:98
+#: stock/models.py:580 stock/templates/stock/item.html:99
#: stock/templates/stock/navbar.html:54
msgid "Stock Item Notes"
msgstr ""
-#: stock/models.py:583
+#: stock/models.py:589
msgid "Single unit purchase price at time of purchase"
msgstr ""
-#: stock/models.py:1051
-msgid "Part is not set as trackable"
+#: stock/models.py:599
+msgid "Scheduled for deletion"
msgstr ""
-#: stock/models.py:1057
-msgid "Quantity must be integer"
+#: stock/models.py:600
+msgid "This StockItem will be deleted by the background worker"
msgstr ""
#: stock/models.py:1063
+msgid "Part is not set as trackable"
+msgstr ""
+
+#: stock/models.py:1069
+msgid "Quantity must be integer"
+msgstr ""
+
+#: stock/models.py:1075
#, python-brace-format
msgid "Quantity must not exceed available stock quantity ({n})"
msgstr ""
-#: stock/models.py:1066
+#: stock/models.py:1078
msgid "Serial numbers must be a list of integers"
msgstr ""
-#: stock/models.py:1069
+#: stock/models.py:1081
msgid "Quantity does not match serial numbers"
msgstr ""
-#: stock/models.py:1076
+#: stock/models.py:1088
#, python-brace-format
msgid "Serial numbers already exist: {exists}"
msgstr ""
-#: stock/models.py:1234
+#: stock/models.py:1246
msgid "StockItem cannot be moved as it is not in stock"
msgstr ""
-#: stock/models.py:1716
+#: stock/models.py:1727
msgid "Entry notes"
msgstr ""
-#: stock/models.py:1773
+#: stock/models.py:1784
msgid "Value must be provided for this test"
msgstr ""
-#: stock/models.py:1779
+#: stock/models.py:1790
msgid "Attachment must be uploaded for this test"
msgstr ""
-#: stock/models.py:1797
+#: stock/models.py:1808
msgid "Test name"
msgstr ""
-#: stock/models.py:1803 templates/js/translated/table_filters.js:231
+#: stock/models.py:1814 templates/js/translated/table_filters.js:244
msgid "Test result"
msgstr ""
-#: stock/models.py:1809
+#: stock/models.py:1820
msgid "Test output value"
msgstr ""
-#: stock/models.py:1816
+#: stock/models.py:1827
msgid "Test result attachment"
msgstr ""
-#: stock/models.py:1822
+#: stock/models.py:1833
msgid "Test notes"
msgstr ""
-#: stock/templates/stock/item.html:16
+#: stock/templates/stock/item.html:17
msgid "Stock Tracking Information"
msgstr ""
-#: stock/templates/stock/item.html:29
+#: stock/templates/stock/item.html:30
msgid "New Entry"
msgstr ""
-#: stock/templates/stock/item.html:42
+#: stock/templates/stock/item.html:43
msgid "Child Stock Items"
msgstr ""
-#: stock/templates/stock/item.html:49
+#: stock/templates/stock/item.html:50
msgid "This stock item does not have any child items"
msgstr ""
-#: stock/templates/stock/item.html:57 stock/templates/stock/navbar.html:19
+#: stock/templates/stock/item.html:58 stock/templates/stock/navbar.html:19
#: stock/templates/stock/navbar.html:22
msgid "Test Data"
msgstr ""
-#: stock/templates/stock/item.html:65
+#: stock/templates/stock/item.html:66
msgid "Delete Test Data"
msgstr ""
-#: stock/templates/stock/item.html:69
+#: stock/templates/stock/item.html:70
msgid "Add Test Data"
msgstr ""
-#: stock/templates/stock/item.html:72 stock/templates/stock/item_base.html:95
+#: stock/templates/stock/item.html:73 stock/templates/stock/item_base.html:95
msgid "Test Report"
msgstr ""
-#: stock/templates/stock/item.html:119 stock/templates/stock/navbar.html:27
+#: stock/templates/stock/item.html:120 stock/templates/stock/navbar.html:27
msgid "Installed Stock Items"
msgstr ""
-#: stock/templates/stock/item.html:124 stock/views.py:534
+#: stock/templates/stock/item.html:125 stock/views.py:534
msgid "Install Stock Item"
msgstr ""
-#: stock/templates/stock/item.html:299 stock/templates/stock/item.html:324
+#: stock/templates/stock/item.html:301 stock/templates/stock/item.html:326
msgid "Add Test Result"
msgstr ""
-#: stock/templates/stock/item.html:344
+#: stock/templates/stock/item.html:346
msgid "Edit Test Result"
msgstr ""
-#: stock/templates/stock/item.html:358
+#: stock/templates/stock/item.html:360
msgid "Delete Test Result"
msgstr ""
#: stock/templates/stock/item_base.html:33
#: stock/templates/stock/item_base.html:399
-#: templates/js/translated/table_filters.js:212
+#: templates/js/translated/table_filters.js:225
msgid "Expired"
msgstr ""
#: stock/templates/stock/item_base.html:43
#: stock/templates/stock/item_base.html:401
-#: templates/js/translated/table_filters.js:218
+#: templates/js/translated/table_filters.js:231
msgid "Stale"
msgstr ""
#: stock/templates/stock/item_base.html:80
-#: templates/js/translated/barcode.js:309
-#: templates/js/translated/barcode.js:314
+#: templates/js/translated/barcode.js:331
+#: templates/js/translated/barcode.js:336
msgid "Unlink Barcode"
msgstr ""
@@ -5768,7 +5910,7 @@ msgid "next page"
msgstr ""
#: stock/templates/stock/item_base.html:303
-#: templates/js/translated/build.js:628
+#: templates/js/translated/build.js:651
msgid "No location set"
msgstr ""
@@ -5795,7 +5937,7 @@ msgid "This StockItem expires on %(item.expiry_date)s"
msgstr ""
#: stock/templates/stock/item_base.html:408
-#: templates/js/translated/stock.js:1032
+#: templates/js/translated/stock.js:980
msgid "Last Updated"
msgstr ""
@@ -5825,7 +5967,7 @@ msgstr ""
#: stock/templates/stock/item_delete.html:12
#, python-format
-msgid "This will remove %(qty)s units of %(full_name)s from stock."
+msgid "This will remove %(qty)s units of %(full_name)s from stock."
msgstr ""
#: stock/templates/stock/item_install.html:8
@@ -5975,7 +6117,7 @@ msgstr ""
#: stock/templates/stock/stockitem_convert.html:8
#, python-format
-msgid "This stock item is current an instance of %(part)s"
+msgid "This stock item is current an instance of %(part)s"
msgstr ""
#: stock/templates/stock/stockitem_convert.html:9
@@ -6039,7 +6181,7 @@ msgstr ""
msgid "Uninstall Stock Items"
msgstr ""
-#: stock/views.py:780 templates/js/translated/stock.js:282
+#: stock/views.py:780 templates/js/translated/stock.js:353
msgid "Confirm stock adjustment"
msgstr ""
@@ -6059,7 +6201,7 @@ msgstr ""
msgid "Serialize Stock"
msgstr ""
-#: stock/views.py:1143 templates/js/translated/build.js:365
+#: stock/views.py:1143 templates/js/translated/build.js:392
msgid "Create new Stock Item"
msgstr ""
@@ -6171,11 +6313,11 @@ msgstr ""
msgid "Enter a search query"
msgstr ""
-#: templates/InvenTree/search.html:268 templates/js/translated/stock.js:629
+#: templates/InvenTree/search.html:268 templates/js/translated/stock.js:699
msgid "Shipped to customer"
msgstr ""
-#: templates/InvenTree/search.html:271 templates/js/translated/stock.js:639
+#: templates/InvenTree/search.html:271 templates/js/translated/stock.js:709
msgid "No stock location set"
msgstr ""
@@ -6240,7 +6382,7 @@ msgstr ""
#: templates/InvenTree/settings/navbar.html:27
#: templates/InvenTree/settings/navbar.html:29
-#: templates/js/translated/tables.js:351 templates/search_form.html:6
+#: templates/js/translated/tables.js:366 templates/search_form.html:6
#: templates/search_form.html:8
msgid "Search"
msgstr ""
@@ -6257,7 +6399,7 @@ msgstr ""
#: templates/InvenTree/settings/navbar.html:46
#: templates/InvenTree/settings/navbar.html:48
-#: templates/InvenTree/settings/settings.html:8 templates/navbar.html:84
+#: templates/InvenTree/settings/settings.html:8 templates/navbar.html:94
msgid "Settings"
msgstr ""
@@ -6332,16 +6474,16 @@ msgid "No category parameter templates found"
msgstr ""
#: templates/InvenTree/settings/settings.html:174
-#: templates/InvenTree/settings/settings.html:271
+#: templates/InvenTree/settings/settings.html:273
msgid "Edit Template"
msgstr ""
#: templates/InvenTree/settings/settings.html:175
-#: templates/InvenTree/settings/settings.html:272
+#: templates/InvenTree/settings/settings.html:274
msgid "Delete Template"
msgstr ""
-#: templates/InvenTree/settings/settings.html:251
+#: templates/InvenTree/settings/settings.html:253
msgid "No part parameter templates found"
msgstr ""
@@ -6358,6 +6500,7 @@ msgid "Account Settings"
msgstr ""
#: templates/InvenTree/settings/user.html:15
+#: templates/js/translated/helpers.js:26
msgid "Edit"
msgstr ""
@@ -6436,65 +6579,69 @@ msgstr ""
msgid "InvenTree Version"
msgstr ""
-#: templates/about.html:26
+#: templates/about.html:27
+msgid "Development Version"
+msgstr ""
+
+#: templates/about.html:30
msgid "Up to Date"
msgstr ""
-#: templates/about.html:28
+#: templates/about.html:32
msgid "Update Available"
msgstr ""
-#: templates/about.html:34
-msgid "API Version"
-msgstr ""
-
-#: templates/about.html:39
-msgid "Python Version"
-msgstr ""
-
-#: templates/about.html:44
-msgid "Django Version"
-msgstr ""
-
-#: templates/about.html:51
+#: templates/about.html:42
msgid "Commit Hash"
msgstr ""
-#: templates/about.html:58
+#: templates/about.html:49
msgid "Commit Date"
msgstr ""
-#: templates/about.html:63
+#: templates/about.html:55
msgid "InvenTree Documentation"
msgstr ""
-#: templates/about.html:68
+#: templates/about.html:60
+msgid "API Version"
+msgstr ""
+
+#: templates/about.html:65
+msgid "Python Version"
+msgstr ""
+
+#: templates/about.html:70
+msgid "Django Version"
+msgstr ""
+
+#: templates/about.html:75
msgid "View Code on GitHub"
msgstr ""
-#: templates/about.html:73
+#: templates/about.html:80
msgid "Credits"
msgstr ""
-#: templates/about.html:78
+#: templates/about.html:85
msgid "Mobile App"
msgstr ""
-#: templates/about.html:83
+#: templates/about.html:90
msgid "Submit Bug Report"
msgstr ""
-#: templates/about.html:90 templates/clip.html:4
+#: templates/about.html:97 templates/clip.html:4
msgid "copy to clipboard"
msgstr ""
-#: templates/about.html:90
+#: templates/about.html:97
msgid "copy version information"
msgstr ""
-#: templates/about.html:100 templates/js/translated/modals.js:33
-#: templates/js/translated/modals.js:567 templates/js/translated/modals.js:661
-#: templates/js/translated/modals.js:957 templates/modals.html:29
+#: templates/about.html:107 templates/js/translated/modals.js:50
+#: templates/js/translated/modals.js:584 templates/js/translated/modals.js:678
+#: templates/js/translated/modals.js:971 templates/modals.html:29
#: templates/modals.html:54
msgid "Close"
msgstr ""
@@ -6515,1358 +6662,1390 @@ msgstr ""
msgid "Remote image must not exceed maximum allowable file size"
msgstr ""
-#: templates/js/report.js:47 templates/js/translated/report.js:47
+#: templates/js/report.js:47 templates/js/translated/report.js:67
msgid "items selected"
msgstr ""
-#: templates/js/report.js:55 templates/js/translated/report.js:55
+#: templates/js/report.js:55 templates/js/translated/report.js:75
msgid "Select Report Template"
msgstr ""
-#: templates/js/report.js:70 templates/js/translated/report.js:70
+#: templates/js/report.js:70 templates/js/translated/report.js:90
msgid "Select Test Report Template"
msgstr ""
-#: templates/js/report.js:98 templates/js/translated/label.js:10
-#: templates/js/translated/report.js:98 templates/js/translated/stock.js:244
+#: templates/js/report.js:98 templates/js/translated/label.js:29
+#: templates/js/translated/report.js:118 templates/js/translated/stock.js:313
msgid "Select Stock Items"
msgstr ""
-#: templates/js/report.js:99 templates/js/translated/report.js:99
+#: templates/js/report.js:99 templates/js/translated/report.js:119
msgid "Stock item(s) must be selected before printing reports"
msgstr ""
#: templates/js/report.js:116 templates/js/report.js:169
#: templates/js/report.js:223 templates/js/report.js:277
-#: templates/js/report.js:331 templates/js/translated/report.js:116
-#: templates/js/translated/report.js:169 templates/js/translated/report.js:223
-#: templates/js/translated/report.js:277 templates/js/translated/report.js:331
+#: templates/js/report.js:331 templates/js/translated/report.js:136
+#: templates/js/translated/report.js:189 templates/js/translated/report.js:243
+#: templates/js/translated/report.js:297 templates/js/translated/report.js:351
msgid "No Reports Found"
msgstr ""
-#: templates/js/report.js:117 templates/js/translated/report.js:117
+#: templates/js/report.js:117 templates/js/translated/report.js:137
msgid "No report templates found which match selected stock item(s)"
msgstr ""
-#: templates/js/report.js:152 templates/js/translated/report.js:152
+#: templates/js/report.js:152 templates/js/translated/report.js:172
msgid "Select Builds"
msgstr ""
-#: templates/js/report.js:153 templates/js/translated/report.js:153
+#: templates/js/report.js:153 templates/js/translated/report.js:173
msgid "Build(s) must be selected before printing reports"
msgstr ""
-#: templates/js/report.js:170 templates/js/translated/report.js:170
+#: templates/js/report.js:170 templates/js/translated/report.js:190
msgid "No report templates found which match selected build(s)"
msgstr ""
-#: templates/js/report.js:205 templates/js/translated/label.js:115
-#: templates/js/translated/report.js:205
+#: templates/js/report.js:205 templates/js/translated/label.js:134
+#: templates/js/translated/report.js:225
msgid "Select Parts"
msgstr ""
-#: templates/js/report.js:206 templates/js/translated/report.js:206
+#: templates/js/report.js:206 templates/js/translated/report.js:226
msgid "Part(s) must be selected before printing reports"
msgstr ""
-#: templates/js/report.js:224 templates/js/translated/report.js:224
+#: templates/js/report.js:224 templates/js/translated/report.js:244
msgid "No report templates found which match selected part(s)"
msgstr ""
-#: templates/js/report.js:259 templates/js/translated/report.js:259
+#: templates/js/report.js:259 templates/js/translated/report.js:279
msgid "Select Purchase Orders"
msgstr ""
-#: templates/js/report.js:260 templates/js/translated/report.js:260
+#: templates/js/report.js:260 templates/js/translated/report.js:280
msgid "Purchase Order(s) must be selected before printing report"
msgstr ""
#: templates/js/report.js:278 templates/js/report.js:332
-#: templates/js/translated/report.js:278 templates/js/translated/report.js:332
+#: templates/js/translated/report.js:298 templates/js/translated/report.js:352
msgid "No report templates found which match selected orders"
msgstr ""
-#: templates/js/report.js:313 templates/js/translated/report.js:313
+#: templates/js/report.js:313 templates/js/translated/report.js:333
msgid "Select Sales Orders"
msgstr ""
-#: templates/js/report.js:314 templates/js/translated/report.js:314
+#: templates/js/report.js:314 templates/js/translated/report.js:334
msgid "Sales Order(s) must be selected before printing report"
msgstr ""
-#: templates/js/translated/api.js:161 templates/js/translated/modals.js:1027
+#: templates/js/translated/api.js:174 templates/js/translated/modals.js:1041
msgid "No Response"
msgstr ""
-#: templates/js/translated/api.js:162 templates/js/translated/modals.js:1028
+#: templates/js/translated/api.js:175 templates/js/translated/modals.js:1042
msgid "No response from the InvenTree server"
msgstr ""
-#: templates/js/translated/api.js:167
+#: templates/js/translated/api.js:181
msgid "Error 400: Bad request"
msgstr ""
-#: templates/js/translated/api.js:168
+#: templates/js/translated/api.js:182
msgid "API request returned error code 400"
msgstr ""
-#: templates/js/translated/api.js:171 templates/js/translated/modals.js:1037
+#: templates/js/translated/api.js:186 templates/js/translated/modals.js:1051
msgid "Error 401: Not Authenticated"
msgstr ""
-#: templates/js/translated/api.js:172 templates/js/translated/modals.js:1038
+#: templates/js/translated/api.js:187 templates/js/translated/modals.js:1052
msgid "Authentication credentials not supplied"
msgstr ""
-#: templates/js/translated/api.js:175 templates/js/translated/modals.js:1042
+#: templates/js/translated/api.js:191 templates/js/translated/modals.js:1056
msgid "Error 403: Permission Denied"
msgstr ""
-#: templates/js/translated/api.js:176 templates/js/translated/modals.js:1043
+#: templates/js/translated/api.js:192 templates/js/translated/modals.js:1057
msgid "You do not have the required permissions to access this function"
msgstr ""
-#: templates/js/translated/api.js:179 templates/js/translated/modals.js:1047
+#: templates/js/translated/api.js:196 templates/js/translated/modals.js:1061
msgid "Error 404: Resource Not Found"
msgstr ""
-#: templates/js/translated/api.js:180 templates/js/translated/modals.js:1048
+#: templates/js/translated/api.js:197 templates/js/translated/modals.js:1062
msgid "The requested resource could not be located on the server"
msgstr ""
-#: templates/js/translated/api.js:183 templates/js/translated/modals.js:1052
+#: templates/js/translated/api.js:201 templates/js/translated/modals.js:1066
msgid "Error 408: Timeout"
msgstr ""
-#: templates/js/translated/api.js:184 templates/js/translated/modals.js:1053
+#: templates/js/translated/api.js:202 templates/js/translated/modals.js:1067
msgid "Connection timeout while requesting data from server"
msgstr ""
-#: templates/js/translated/api.js:187
+#: templates/js/translated/api.js:205
msgid "Unhandled Error Code"
msgstr ""
-#: templates/js/translated/api.js:188
+#: templates/js/translated/api.js:206
msgid "Error code"
msgstr ""
-#: templates/js/translated/attachment.js:16
+#: templates/js/translated/attachment.js:27
msgid "No attachments found"
msgstr ""
-#: templates/js/translated/attachment.js:56
+#: templates/js/translated/attachment.js:91
msgid "Upload Date"
msgstr ""
-#: templates/js/translated/attachment.js:69
+#: templates/js/translated/attachment.js:104
msgid "Edit attachment"
msgstr ""
-#: templates/js/translated/attachment.js:76
+#: templates/js/translated/attachment.js:111
msgid "Delete attachment"
msgstr ""
-#: templates/js/translated/barcode.js:8
+#: templates/js/translated/barcode.js:30
msgid "Scan barcode data here using wedge scanner"
msgstr ""
-#: templates/js/translated/barcode.js:10
+#: templates/js/translated/barcode.js:32
msgid "Enter barcode data"
msgstr ""
-#: templates/js/translated/barcode.js:14
+#: templates/js/translated/barcode.js:36
msgid "Barcode"
msgstr ""
-#: templates/js/translated/barcode.js:32
+#: templates/js/translated/barcode.js:54
msgid "Enter optional notes for stock transfer"
msgstr ""
-#: templates/js/translated/barcode.js:33
+#: templates/js/translated/barcode.js:55
msgid "Enter notes"
msgstr ""
-#: templates/js/translated/barcode.js:71
+#: templates/js/translated/barcode.js:93
msgid "Server error"
msgstr ""
-#: templates/js/translated/barcode.js:92
+#: templates/js/translated/barcode.js:114
msgid "Unknown response from server"
msgstr ""
-#: templates/js/translated/barcode.js:119
-#: templates/js/translated/modals.js:1017
+#: templates/js/translated/barcode.js:141
+#: templates/js/translated/modals.js:1031
msgid "Invalid server response"
msgstr ""
-#: templates/js/translated/barcode.js:212
+#: templates/js/translated/barcode.js:234
msgid "Scan barcode data below"
msgstr ""
-#: templates/js/translated/barcode.js:270
+#: templates/js/translated/barcode.js:281 templates/navbar.html:65
+msgid "Scan Barcode"
+msgstr ""
+
+#: templates/js/translated/barcode.js:292
msgid "No URL in response"
msgstr ""
-#: templates/js/translated/barcode.js:288
+#: templates/js/translated/barcode.js:310
msgid "Link Barcode to Stock Item"
msgstr ""
-#: templates/js/translated/barcode.js:311
+#: templates/js/translated/barcode.js:333
msgid "This will remove the association between this stock item and the barcode"
msgstr ""
-#: templates/js/translated/barcode.js:317
+#: templates/js/translated/barcode.js:339
msgid "Unlink"
msgstr ""
-#: templates/js/translated/barcode.js:376 templates/js/translated/stock.js:220
+#: templates/js/translated/barcode.js:398 templates/js/translated/stock.js:289
msgid "Remove stock item"
msgstr ""
-#: templates/js/translated/barcode.js:418
+#: templates/js/translated/barcode.js:440
msgid "Check Stock Items into Location"
msgstr ""
-#: templates/js/translated/barcode.js:422
-#: templates/js/translated/barcode.js:547
+#: templates/js/translated/barcode.js:444
+#: templates/js/translated/barcode.js:571
msgid "Check In"
msgstr ""
-#: templates/js/translated/barcode.js:462
-#: templates/js/translated/barcode.js:586
+#: templates/js/translated/barcode.js:486
+#: templates/js/translated/barcode.js:610
msgid "Error transferring stock"
msgstr ""
-#: templates/js/translated/barcode.js:481
+#: templates/js/translated/barcode.js:505
msgid "Stock Item already scanned"
msgstr ""
-#: templates/js/translated/barcode.js:485
+#: templates/js/translated/barcode.js:509
msgid "Stock Item already in this location"
msgstr ""
-#: templates/js/translated/barcode.js:492
+#: templates/js/translated/barcode.js:516
msgid "Added stock item"
msgstr ""
-#: templates/js/translated/barcode.js:499
+#: templates/js/translated/barcode.js:523
msgid "Barcode does not match Stock Item"
msgstr ""
-#: templates/js/translated/barcode.js:542
+#: templates/js/translated/barcode.js:566
msgid "Check Into Location"
msgstr ""
-#: templates/js/translated/barcode.js:605
+#: templates/js/translated/barcode.js:629
msgid "Barcode does not match a valid location"
msgstr ""
-#: templates/js/translated/bom.js:195 templates/js/translated/build.js:1152
+#: templates/js/translated/bom.js:215 templates/js/translated/build.js:1169
msgid "Open subassembly"
msgstr ""
-#: templates/js/translated/bom.js:269
+#: templates/js/translated/bom.js:287
msgid "Purchase Price Range"
msgstr ""
-#: templates/js/translated/bom.js:277
+#: templates/js/translated/bom.js:294
msgid "Purchase Price Average"
msgstr ""
-#: templates/js/translated/bom.js:326 templates/js/translated/bom.js:412
+#: templates/js/translated/bom.js:342 templates/js/translated/bom.js:428
msgid "View BOM"
msgstr ""
-#: templates/js/translated/bom.js:386
+#: templates/js/translated/bom.js:402
msgid "Validate BOM Item"
msgstr ""
-#: templates/js/translated/bom.js:388
+#: templates/js/translated/bom.js:404
msgid "This line has been validated"
msgstr ""
-#: templates/js/translated/bom.js:390 templates/js/translated/bom.js:555
+#: templates/js/translated/bom.js:406 templates/js/translated/bom.js:569
msgid "Edit BOM Item"
msgstr ""
-#: templates/js/translated/bom.js:392 templates/js/translated/bom.js:539
+#: templates/js/translated/bom.js:408 templates/js/translated/bom.js:554
msgid "Delete BOM Item"
msgstr ""
-#: templates/js/translated/bom.js:483 templates/js/translated/build.js:458
-#: templates/js/translated/build.js:1250
+#: templates/js/translated/bom.js:499 templates/js/translated/build.js:483
+#: templates/js/translated/build.js:1267
msgid "No BOM items found"
msgstr ""
-#: templates/js/translated/build.js:42
+#: templates/js/translated/build.js:69
msgid "Edit Build Order"
msgstr ""
-#: templates/js/translated/build.js:68
+#: templates/js/translated/build.js:95
msgid "Create Build Order"
msgstr ""
-#: templates/js/translated/build.js:100
+#: templates/js/translated/build.js:127
msgid "Auto-allocate stock items to this output"
msgstr ""
-#: templates/js/translated/build.js:108
+#: templates/js/translated/build.js:135
msgid "Unallocate stock from build output"
msgstr ""
-#: templates/js/translated/build.js:118
+#: templates/js/translated/build.js:145
msgid "Complete build output"
msgstr ""
-#: templates/js/translated/build.js:127
+#: templates/js/translated/build.js:154
msgid "Delete build output"
msgstr ""
-#: templates/js/translated/build.js:222
+#: templates/js/translated/build.js:249
msgid "No build order allocations found"
msgstr ""
-#: templates/js/translated/build.js:260 templates/js/translated/order.js:471
+#: templates/js/translated/build.js:287 templates/js/translated/order.js:813
msgid "Location not specified"
msgstr ""
-#: templates/js/translated/build.js:364 templates/stock_table.html:20
+#: templates/js/translated/build.js:391 templates/stock_table.html:20
msgid "New Stock Item"
msgstr ""
-#: templates/js/translated/build.js:679
+#: templates/js/translated/build.js:702
msgid "Required Part"
msgstr ""
-#: templates/js/translated/build.js:700
+#: templates/js/translated/build.js:723
msgid "Quantity Per"
msgstr ""
-#: templates/js/translated/build.js:770 templates/js/translated/build.js:1214
+#: templates/js/translated/build.js:793 templates/js/translated/build.js:1231
#: templates/stock_table.html:59
msgid "Order stock"
msgstr ""
-#: templates/js/translated/build.js:823
+#: templates/js/translated/build.js:846
msgid "No builds matching query"
msgstr ""
-#: templates/js/translated/build.js:840 templates/js/translated/part.js:711
-#: templates/js/translated/part.js:956 templates/js/translated/stock.js:883
-#: templates/js/translated/stock.js:1336
+#: templates/js/translated/build.js:863 templates/js/translated/part.js:845
+#: templates/js/translated/part.js:1123 templates/js/translated/stock.js:783
+#: templates/js/translated/stock.js:1477
msgid "Select"
msgstr ""
-#: templates/js/translated/build.js:860
+#: templates/js/translated/build.js:883
msgid "Build order is overdue"
msgstr ""
-#: templates/js/translated/build.js:924 templates/js/translated/stock.js:1558
+#: templates/js/translated/build.js:944 templates/js/translated/stock.js:1696
msgid "No user information"
msgstr ""
-#: templates/js/translated/build.js:939
+#: templates/js/translated/build.js:956
msgid "No information"
msgstr ""
-#: templates/js/translated/build.js:989
+#: templates/js/translated/build.js:1007
msgid "No parts allocated for"
msgstr ""
-#: templates/js/translated/company.js:34
+#: templates/js/translated/company.js:65
msgid "Add Manufacturer"
msgstr ""
-#: templates/js/translated/company.js:47 templates/js/translated/company.js:136
+#: templates/js/translated/company.js:78 templates/js/translated/company.js:176
msgid "Add Manufacturer Part"
msgstr ""
-#: templates/js/translated/company.js:59
+#: templates/js/translated/company.js:99
msgid "Edit Manufacturer Part"
msgstr ""
-#: templates/js/translated/company.js:68
+#: templates/js/translated/company.js:108
msgid "Delete Manufacturer Part"
msgstr ""
-#: templates/js/translated/company.js:124 templates/js/translated/order.js:58
+#: templates/js/translated/company.js:164 templates/js/translated/order.js:86
msgid "Add Supplier"
msgstr ""
-#: templates/js/translated/company.js:152
+#: templates/js/translated/company.js:192
msgid "Add Supplier Part"
msgstr ""
-#: templates/js/translated/company.js:162
+#: templates/js/translated/company.js:207
msgid "Edit Supplier Part"
msgstr ""
-#: templates/js/translated/company.js:172
+#: templates/js/translated/company.js:217
msgid "Delete Supplier Part"
msgstr ""
-#: templates/js/translated/company.js:219
+#: templates/js/translated/company.js:264
msgid "Edit Company"
msgstr ""
-#: templates/js/translated/company.js:240
+#: templates/js/translated/company.js:285
msgid "Add new Company"
msgstr ""
-#: templates/js/translated/company.js:317
+#: templates/js/translated/company.js:362
msgid "Parts Supplied"
msgstr ""
-#: templates/js/translated/company.js:326
+#: templates/js/translated/company.js:371
msgid "Parts Manufactured"
msgstr ""
-#: templates/js/translated/company.js:339
+#: templates/js/translated/company.js:385
msgid "No company information found"
msgstr ""
-#: templates/js/translated/company.js:357
+#: templates/js/translated/company.js:404
msgid "The following manufacturer parts will be deleted"
msgstr ""
-#: templates/js/translated/company.js:374
+#: templates/js/translated/company.js:421
msgid "Delete Manufacturer Parts"
msgstr ""
-#: templates/js/translated/company.js:427
+#: templates/js/translated/company.js:475
msgid "No manufacturer parts found"
msgstr ""
-#: templates/js/translated/company.js:446
-#: templates/js/translated/company.js:696 templates/js/translated/part.js:288
-#: templates/js/translated/part.js:373
+#: templates/js/translated/company.js:495
+#: templates/js/translated/company.js:751 templates/js/translated/part.js:416
+#: templates/js/translated/part.js:501
msgid "Template part"
msgstr ""
-#: templates/js/translated/company.js:450
-#: templates/js/translated/company.js:700 templates/js/translated/part.js:292
-#: templates/js/translated/part.js:377
+#: templates/js/translated/company.js:499
+#: templates/js/translated/company.js:755 templates/js/translated/part.js:420
+#: templates/js/translated/part.js:505
msgid "Assembled part"
msgstr ""
-#: templates/js/translated/company.js:574 templates/js/translated/part.js:462
+#: templates/js/translated/company.js:626 templates/js/translated/part.js:593
msgid "No parameters found"
msgstr ""
-#: templates/js/translated/company.js:610 templates/js/translated/part.js:503
+#: templates/js/translated/company.js:663 templates/js/translated/part.js:635
msgid "Edit parameter"
msgstr ""
-#: templates/js/translated/company.js:611 templates/js/translated/part.js:504
+#: templates/js/translated/company.js:664 templates/js/translated/part.js:636
msgid "Delete parameter"
msgstr ""
-#: templates/js/translated/company.js:630 templates/js/translated/part.js:521
+#: templates/js/translated/company.js:683 templates/js/translated/part.js:653
msgid "Edit Parameter"
msgstr ""
-#: templates/js/translated/company.js:641 templates/js/translated/part.js:533
+#: templates/js/translated/company.js:694 templates/js/translated/part.js:665
msgid "Delete Parameter"
msgstr ""
-#: templates/js/translated/company.js:677
+#: templates/js/translated/company.js:731
msgid "No supplier parts found"
msgstr ""
-#: templates/js/translated/filters.js:167
-#: templates/js/translated/filters.js:404
+#: templates/js/translated/filters.js:178
+#: templates/js/translated/filters.js:402
msgid "true"
msgstr ""
-#: templates/js/translated/filters.js:171
-#: templates/js/translated/filters.js:405
+#: templates/js/translated/filters.js:182
+#: templates/js/translated/filters.js:403
msgid "false"
msgstr ""
-#: templates/js/translated/filters.js:193
+#: templates/js/translated/filters.js:204
msgid "Select filter"
msgstr ""
-#: templates/js/translated/filters.js:268
+#: templates/js/translated/filters.js:279
msgid "Reload data"
msgstr ""
-#: templates/js/translated/filters.js:270
+#: templates/js/translated/filters.js:281
msgid "Add new filter"
msgstr ""
-#: templates/js/translated/filters.js:273
+#: templates/js/translated/filters.js:284
msgid "Clear all filters"
msgstr ""
-#: templates/js/translated/filters.js:303
+#: templates/js/translated/filters.js:312
msgid "Create filter"
msgstr ""
-#: templates/js/translated/forms.js:289 templates/js/translated/forms.js:302
-#: templates/js/translated/forms.js:314 templates/js/translated/forms.js:326
+#: templates/js/translated/forms.js:323 templates/js/translated/forms.js:336
+#: templates/js/translated/forms.js:348 templates/js/translated/forms.js:360
msgid "Action Prohibited"
msgstr ""
-#: templates/js/translated/forms.js:290
+#: templates/js/translated/forms.js:324
msgid "Create operation not allowed"
msgstr ""
-#: templates/js/translated/forms.js:303
+#: templates/js/translated/forms.js:337
msgid "Update operation not allowed"
msgstr ""
-#: templates/js/translated/forms.js:315
+#: templates/js/translated/forms.js:349
msgid "Delete operation not allowed"
msgstr ""
-#: templates/js/translated/forms.js:327
+#: templates/js/translated/forms.js:361
msgid "View operation not allowed"
msgstr ""
-#: templates/js/translated/forms.js:865 templates/modals.html:21
+#: templates/js/translated/forms.js:889 templates/modals.html:21
#: templates/modals.html:47
msgid "Form errors exist"
msgstr ""
-#: templates/js/translated/forms.js:1258
+#: templates/js/translated/forms.js:1379
msgid "Searching"
msgstr ""
-#: templates/js/translated/forms.js:1423
+#: templates/js/translated/forms.js:1593
msgid "Clear input"
msgstr ""
-#: templates/js/translated/label.js:11
-msgid "Stock item(s) must be selected before printing labels"
+#: templates/js/translated/helpers.js:19
+msgid "YES"
msgstr ""
-#: templates/js/translated/label.js:29 templates/js/translated/label.js:79
-#: templates/js/translated/label.js:134
-msgid "No Labels Found"
+#: templates/js/translated/helpers.js:21
+msgid "NO"
msgstr ""
#: templates/js/translated/label.js:30
+msgid "Stock item(s) must be selected before printing labels"
+msgstr ""
+
+#: templates/js/translated/label.js:48 templates/js/translated/label.js:98
+#: templates/js/translated/label.js:153
+msgid "No Labels Found"
+msgstr ""
+
+#: templates/js/translated/label.js:49
msgid "No labels found which match selected stock item(s)"
msgstr ""
-#: templates/js/translated/label.js:61
+#: templates/js/translated/label.js:80
msgid "Select Stock Locations"
msgstr ""
-#: templates/js/translated/label.js:62
+#: templates/js/translated/label.js:81
msgid "Stock location(s) must be selected before printing labels"
msgstr ""
-#: templates/js/translated/label.js:80
+#: templates/js/translated/label.js:99
msgid "No labels found which match selected stock location(s)"
msgstr ""
-#: templates/js/translated/label.js:116
+#: templates/js/translated/label.js:135
msgid "Part(s) must be selected before printing labels"
msgstr ""
-#: templates/js/translated/label.js:135
+#: templates/js/translated/label.js:154
msgid "No labels found which match the selected part(s)"
msgstr ""
-#: templates/js/translated/label.js:209
+#: templates/js/translated/label.js:228
msgid "stock items selected"
msgstr ""
-#: templates/js/translated/label.js:217
+#: templates/js/translated/label.js:236
msgid "Select Label"
msgstr ""
-#: templates/js/translated/label.js:232
+#: templates/js/translated/label.js:251
msgid "Select Label Template"
msgstr ""
-#: templates/js/translated/modals.js:59 templates/js/translated/modals.js:103
-#: templates/js/translated/modals.js:593
+#: templates/js/translated/modals.js:76 templates/js/translated/modals.js:120
+#: templates/js/translated/modals.js:610
msgid "Cancel"
msgstr ""
-#: templates/js/translated/modals.js:60 templates/js/translated/modals.js:102
-#: templates/js/translated/modals.js:660 templates/js/translated/modals.js:956
+#: templates/js/translated/modals.js:77 templates/js/translated/modals.js:119
+#: templates/js/translated/modals.js:677 templates/js/translated/modals.js:970
#: templates/modals.html:30 templates/modals.html:55
msgid "Submit"
msgstr ""
-#: templates/js/translated/modals.js:101
+#: templates/js/translated/modals.js:118
msgid "Form Title"
msgstr ""
-#: templates/js/translated/modals.js:380
+#: templates/js/translated/modals.js:397
msgid "Waiting for server..."
msgstr ""
-#: templates/js/translated/modals.js:539
+#: templates/js/translated/modals.js:556
msgid "Show Error Information"
msgstr ""
-#: templates/js/translated/modals.js:592
+#: templates/js/translated/modals.js:609
msgid "Accept"
msgstr ""
-#: templates/js/translated/modals.js:649
+#: templates/js/translated/modals.js:666
msgid "Loading Data"
msgstr ""
-#: templates/js/translated/modals.js:907
+#: templates/js/translated/modals.js:922
msgid "Invalid response from server"
msgstr ""
-#: templates/js/translated/modals.js:907
+#: templates/js/translated/modals.js:922
msgid "Form data missing from server response"
msgstr ""
-#: templates/js/translated/modals.js:920
+#: templates/js/translated/modals.js:934
msgid "Error posting form data"
msgstr ""
-#: templates/js/translated/modals.js:1017
+#: templates/js/translated/modals.js:1031
msgid "JSON response missing form data"
msgstr ""
-#: templates/js/translated/modals.js:1032
+#: templates/js/translated/modals.js:1046
msgid "Error 400: Bad Request"
msgstr ""
-#: templates/js/translated/modals.js:1033
+#: templates/js/translated/modals.js:1047
msgid "Server returned error code 400"
msgstr ""
-#: templates/js/translated/modals.js:1056
+#: templates/js/translated/modals.js:1070
msgid "Error requesting form data"
msgstr ""
-#: templates/js/translated/model_renderers.js:38
+#: templates/js/translated/model_renderers.js:40
msgid "Company ID"
msgstr ""
-#: templates/js/translated/model_renderers.js:78
+#: templates/js/translated/model_renderers.js:82
msgid "Location ID"
msgstr ""
-#: templates/js/translated/model_renderers.js:95
+#: templates/js/translated/model_renderers.js:99
msgid "Build ID"
msgstr ""
-#: templates/js/translated/model_renderers.js:114
+#: templates/js/translated/model_renderers.js:119
msgid "Part ID"
msgstr ""
-#: templates/js/translated/model_renderers.js:163
+#: templates/js/translated/model_renderers.js:171
msgid "Category ID"
msgstr ""
-#: templates/js/translated/model_renderers.js:199
+#: templates/js/translated/model_renderers.js:208
msgid "Manufacturer Part ID"
msgstr ""
-#: templates/js/translated/model_renderers.js:227
+#: templates/js/translated/model_renderers.js:237
msgid "Supplier Part ID"
msgstr ""
-#: templates/js/translated/order.js:17
+#: templates/js/translated/order.js:45
msgid "Add Customer"
msgstr ""
-#: templates/js/translated/order.js:42
+#: templates/js/translated/order.js:70
msgid "Create Sales Order"
msgstr ""
-#: templates/js/translated/order.js:222
+#: templates/js/translated/order.js:295
msgid "No purchase orders found"
msgstr ""
-#: templates/js/translated/order.js:246 templates/js/translated/order.js:341
+#: templates/js/translated/order.js:320 templates/js/translated/order.js:682
msgid "Order is overdue"
msgstr ""
-#: templates/js/translated/order.js:318
+#: templates/js/translated/order.js:452
+msgid "No line items found"
+msgstr ""
+
+#: templates/js/translated/order.js:617
+msgid "Delete line item"
+msgstr ""
+
+#: templates/js/translated/order.js:621
+msgid "Receive line item"
+msgstr ""
+
+#: templates/js/translated/order.js:658
msgid "No sales orders found"
msgstr ""
-#: templates/js/translated/order.js:355
+#: templates/js/translated/order.js:696
msgid "Invalid Customer"
msgstr ""
-#: templates/js/translated/order.js:432
+#: templates/js/translated/order.js:774
msgid "No sales order allocations found"
msgstr ""
-#: templates/js/translated/part.js:10
-msgid "YES"
-msgstr ""
-
-#: templates/js/translated/part.js:12
-msgid "NO"
-msgstr ""
-
-#: templates/js/translated/part.js:22
-msgid "Add Part Category"
-msgstr ""
-
-#: templates/js/translated/part.js:53
+#: templates/js/translated/part.js:49
msgid "Part Attributes"
msgstr ""
-#: templates/js/translated/part.js:96
+#: templates/js/translated/part.js:53
msgid "Part Creation Options"
msgstr ""
-#: templates/js/translated/part.js:102
-msgid "Initial Stock Quantity"
-msgstr ""
-
-#: templates/js/translated/part.js:103
-msgid "Initialize part stock with specified quantity"
-msgstr ""
-
-#: templates/js/translated/part.js:109
-msgid "Copy Category Parameters"
-msgstr ""
-
-#: templates/js/translated/part.js:110
-msgid "Copy parameter templates from selected part category"
-msgstr ""
-
-#: templates/js/translated/part.js:120
+#: templates/js/translated/part.js:57
msgid "Part Duplication Options"
msgstr ""
-#: templates/js/translated/part.js:131
-msgid "Copy Image"
+#: templates/js/translated/part.js:61
+msgid "Supplier Options"
msgstr ""
-#: templates/js/translated/part.js:132
-msgid "Copy image from original part"
+#: templates/js/translated/part.js:75
+msgid "Add Part Category"
msgstr ""
-#: templates/js/translated/part.js:138
-msgid "Copy BOM"
+#: templates/js/translated/part.js:159
+msgid "Create Initial Stock"
msgstr ""
-#: templates/js/translated/part.js:139
-msgid "Copy bill of materials from original part"
+#: templates/js/translated/part.js:160
+msgid "Create an initial stock item for this part"
msgstr ""
-#: templates/js/translated/part.js:145
-msgid "Copy Parameters"
+#: templates/js/translated/part.js:167
+msgid "Initial Stock Quantity"
msgstr ""
-#: templates/js/translated/part.js:146
-msgid "Copy parameter data from original part"
+#: templates/js/translated/part.js:168
+msgid "Specify initial stock quantity for this part"
msgstr ""
-#: templates/js/translated/part.js:158
-msgid "Parent part category"
+#: templates/js/translated/part.js:175 templates/js/translated/stock.js:330
+msgid "Select destination stock location"
+msgstr ""
+
+#: templates/js/translated/part.js:186
+msgid "Copy Category Parameters"
+msgstr ""
+
+#: templates/js/translated/part.js:187
+msgid "Copy parameter templates from selected part category"
+msgstr ""
+
+#: templates/js/translated/part.js:195
+msgid "Add Supplier Data"
msgstr ""
#: templates/js/translated/part.js:196
+msgid "Create initial supplier data for this part"
+msgstr ""
+
+#: templates/js/translated/part.js:252
+msgid "Copy Image"
+msgstr ""
+
+#: templates/js/translated/part.js:253
+msgid "Copy image from original part"
+msgstr ""
+
+#: templates/js/translated/part.js:260
+msgid "Copy BOM"
+msgstr ""
+
+#: templates/js/translated/part.js:261
+msgid "Copy bill of materials from original part"
+msgstr ""
+
+#: templates/js/translated/part.js:268
+msgid "Copy Parameters"
+msgstr ""
+
+#: templates/js/translated/part.js:269
+msgid "Copy parameter data from original part"
+msgstr ""
+
+#: templates/js/translated/part.js:282
+msgid "Parent part category"
+msgstr ""
+
+#: templates/js/translated/part.js:323
msgid "Edit Part"
msgstr ""
-#: templates/js/translated/part.js:280 templates/js/translated/part.js:365
+#: templates/js/translated/part.js:408 templates/js/translated/part.js:493
msgid "Trackable part"
msgstr ""
-#: templates/js/translated/part.js:284 templates/js/translated/part.js:369
+#: templates/js/translated/part.js:412 templates/js/translated/part.js:497
msgid "Virtual part"
msgstr ""
-#: templates/js/translated/part.js:296
+#: templates/js/translated/part.js:424
msgid "Starred part"
msgstr ""
-#: templates/js/translated/part.js:300
+#: templates/js/translated/part.js:428
msgid "Salable part"
msgstr ""
-#: templates/js/translated/part.js:414
+#: templates/js/translated/part.js:543
msgid "No variants found"
msgstr ""
-#: templates/js/translated/part.js:601 templates/js/translated/part.js:840
+#: templates/js/translated/part.js:732 templates/js/translated/part.js:994
msgid "No parts found"
msgstr ""
-#: templates/js/translated/part.js:779
+#: templates/js/translated/part.js:921
msgid "No category"
msgstr ""
-#: templates/js/translated/part.js:797
-#: templates/js/translated/table_filters.js:337
+#: templates/js/translated/part.js:944
+#: templates/js/translated/table_filters.js:350
msgid "Low stock"
msgstr ""
-#: templates/js/translated/part.js:981 templates/js/translated/stock.js:1360
+#: templates/js/translated/part.js:1148 templates/js/translated/stock.js:1501
msgid "Path"
msgstr ""
-#: templates/js/translated/part.js:1024
+#: templates/js/translated/part.js:1191
msgid "No test templates matching query"
msgstr ""
-#: templates/js/translated/part.js:1075 templates/js/translated/stock.js:443
+#: templates/js/translated/part.js:1242 templates/js/translated/stock.js:514
msgid "Edit test result"
msgstr ""
-#: templates/js/translated/part.js:1076 templates/js/translated/stock.js:444
+#: templates/js/translated/part.js:1243 templates/js/translated/stock.js:515
msgid "Delete test result"
msgstr ""
-#: templates/js/translated/part.js:1082
+#: templates/js/translated/part.js:1249
msgid "This test is defined for a parent part"
msgstr ""
-#: templates/js/translated/part.js:1107
+#: templates/js/translated/part.js:1274
#, python-brace-format
msgid "No ${human_name} information found"
msgstr ""
-#: templates/js/translated/part.js:1160
+#: templates/js/translated/part.js:1329
#, python-brace-format
msgid "Edit ${human_name}"
msgstr ""
-#: templates/js/translated/part.js:1161
+#: templates/js/translated/part.js:1330
#, python-brace-format
msgid "Delete ${human_name}"
msgstr ""
-#: templates/js/translated/part.js:1261
+#: templates/js/translated/part.js:1431
msgid "Single Price"
msgstr ""
-#: templates/js/translated/part.js:1280
+#: templates/js/translated/part.js:1450
msgid "Single Price Difference"
msgstr ""
-#: templates/js/translated/stock.js:9
+#: templates/js/translated/stock.js:66
msgid "Parent stock location"
msgstr ""
-#: templates/js/translated/stock.js:39
+#: templates/js/translated/stock.js:96
msgid "Export Stock"
msgstr ""
-#: templates/js/translated/stock.js:42
+#: templates/js/translated/stock.js:99
msgid "Format"
msgstr ""
-#: templates/js/translated/stock.js:43
+#: templates/js/translated/stock.js:100
msgid "Select file format"
msgstr ""
-#: templates/js/translated/stock.js:55
+#: templates/js/translated/stock.js:124
msgid "Include Sublocations"
msgstr ""
-#: templates/js/translated/stock.js:56
+#: templates/js/translated/stock.js:125
msgid "Include stock items in sublocations"
msgstr ""
-#: templates/js/translated/stock.js:98
+#: templates/js/translated/stock.js:167
msgid "Transfer Stock"
msgstr ""
-#: templates/js/translated/stock.js:99
+#: templates/js/translated/stock.js:168
msgid "Move"
msgstr ""
-#: templates/js/translated/stock.js:105
+#: templates/js/translated/stock.js:174
msgid "Count Stock"
msgstr ""
-#: templates/js/translated/stock.js:106
+#: templates/js/translated/stock.js:175
msgid "Count"
msgstr ""
-#: templates/js/translated/stock.js:110
+#: templates/js/translated/stock.js:179
msgid "Remove Stock"
msgstr ""
-#: templates/js/translated/stock.js:111
+#: templates/js/translated/stock.js:180
msgid "Take"
msgstr ""
-#: templates/js/translated/stock.js:115
+#: templates/js/translated/stock.js:184
msgid "Add Stock"
msgstr ""
-#: templates/js/translated/stock.js:116 users/models.py:190
+#: templates/js/translated/stock.js:185 users/models.py:190
msgid "Add"
msgstr ""
-#: templates/js/translated/stock.js:120 templates/stock_table.html:63
+#: templates/js/translated/stock.js:189 templates/stock_table.html:63
msgid "Delete Stock"
msgstr ""
-#: templates/js/translated/stock.js:209
+#: templates/js/translated/stock.js:278
msgid "Quantity cannot be adjusted for serialized stock"
msgstr ""
-#: templates/js/translated/stock.js:209
+#: templates/js/translated/stock.js:278
msgid "Specify stock quantity"
msgstr ""
-#: templates/js/translated/stock.js:245
+#: templates/js/translated/stock.js:314
msgid "You must select at least one available stock item"
msgstr ""
-#: templates/js/translated/stock.js:261
-msgid "Select destination stock location"
-msgstr ""
-
-#: templates/js/translated/stock.js:269
+#: templates/js/translated/stock.js:339
msgid "Stock transaction notes"
msgstr ""
-#: templates/js/translated/stock.js:406
+#: templates/js/translated/stock.js:477
msgid "PASS"
msgstr ""
-#: templates/js/translated/stock.js:408
+#: templates/js/translated/stock.js:479
msgid "FAIL"
msgstr ""
-#: templates/js/translated/stock.js:413
+#: templates/js/translated/stock.js:484
msgid "NO RESULT"
msgstr ""
-#: templates/js/translated/stock.js:439
+#: templates/js/translated/stock.js:510
msgid "Add test result"
msgstr ""
-#: templates/js/translated/stock.js:465
+#: templates/js/translated/stock.js:536
msgid "No test results found"
msgstr ""
-#: templates/js/translated/stock.js:513
+#: templates/js/translated/stock.js:584
msgid "Test Date"
msgstr ""
-#: templates/js/translated/stock.js:621
+#: templates/js/translated/stock.js:691
msgid "In production"
msgstr ""
-#: templates/js/translated/stock.js:625
+#: templates/js/translated/stock.js:695
msgid "Installed in Stock Item"
msgstr ""
-#: templates/js/translated/stock.js:633
+#: templates/js/translated/stock.js:703
msgid "Assigned to Sales Order"
msgstr ""
-#: templates/js/translated/stock.js:709
-msgid "No stock items matching query"
-msgstr ""
-
-#: templates/js/translated/stock.js:729
-msgid "items"
-msgstr ""
-
-#: templates/js/translated/stock.js:821
-msgid "batches"
-msgstr ""
-
-#: templates/js/translated/stock.js:848
-msgid "locations"
-msgstr ""
-
-#: templates/js/translated/stock.js:850
-msgid "Undefined location"
-msgstr ""
-
-#: templates/js/translated/stock.js:951
+#: templates/js/translated/stock.js:865
msgid "Stock item is in production"
msgstr ""
-#: templates/js/translated/stock.js:956
+#: templates/js/translated/stock.js:870
msgid "Stock item assigned to sales order"
msgstr ""
-#: templates/js/translated/stock.js:959
+#: templates/js/translated/stock.js:873
msgid "Stock item assigned to customer"
msgstr ""
-#: templates/js/translated/stock.js:963
+#: templates/js/translated/stock.js:877
msgid "Stock item has expired"
msgstr ""
-#: templates/js/translated/stock.js:965
+#: templates/js/translated/stock.js:879
msgid "Stock item will expire soon"
msgstr ""
-#: templates/js/translated/stock.js:969
+#: templates/js/translated/stock.js:883
msgid "Stock item has been allocated"
msgstr ""
-#: templates/js/translated/stock.js:973
+#: templates/js/translated/stock.js:887
msgid "Stock item has been installed in another item"
msgstr ""
-#: templates/js/translated/stock.js:980
+#: templates/js/translated/stock.js:894
msgid "Stock item has been rejected"
msgstr ""
-#: templates/js/translated/stock.js:984
+#: templates/js/translated/stock.js:896
msgid "Stock item is lost"
msgstr ""
-#: templates/js/translated/stock.js:987
+#: templates/js/translated/stock.js:898
msgid "Stock item is destroyed"
msgstr ""
-#: templates/js/translated/stock.js:991
-#: templates/js/translated/table_filters.js:148
+#: templates/js/translated/stock.js:902
+#: templates/js/translated/table_filters.js:161
msgid "Depleted"
msgstr ""
-#: templates/js/translated/stock.js:1020
+#: templates/js/translated/stock.js:956
msgid "Stocktake"
msgstr ""
-#: templates/js/translated/stock.js:1073
+#: templates/js/translated/stock.js:1029
msgid "Supplier part not specified"
msgstr ""
-#: templates/js/translated/stock.js:1223
+#: templates/js/translated/stock.js:1067
+msgid "No stock items matching query"
+msgstr ""
+
+#: templates/js/translated/stock.js:1088 templates/js/translated/stock.js:1136
+msgid "items"
+msgstr ""
+
+#: templates/js/translated/stock.js:1176
+msgid "batches"
+msgstr ""
+
+#: templates/js/translated/stock.js:1203
+msgid "locations"
+msgstr ""
+
+#: templates/js/translated/stock.js:1205
+msgid "Undefined location"
+msgstr ""
+
+#: templates/js/translated/stock.js:1364
msgid "Stock Status"
msgstr ""
-#: templates/js/translated/stock.js:1238
+#: templates/js/translated/stock.js:1379
msgid "Set Stock Status"
msgstr ""
-#: templates/js/translated/stock.js:1252
+#: templates/js/translated/stock.js:1393
msgid "Select Status Code"
msgstr ""
-#: templates/js/translated/stock.js:1253
+#: templates/js/translated/stock.js:1394
msgid "Status code must be selected"
msgstr ""
-#: templates/js/translated/stock.js:1392
+#: templates/js/translated/stock.js:1533
msgid "Invalid date"
msgstr ""
-#: templates/js/translated/stock.js:1439
+#: templates/js/translated/stock.js:1580
msgid "Location no longer exists"
msgstr ""
-#: templates/js/translated/stock.js:1458
+#: templates/js/translated/stock.js:1599
msgid "Purchase order no longer exists"
msgstr ""
-#: templates/js/translated/stock.js:1477
+#: templates/js/translated/stock.js:1618
msgid "Customer no longer exists"
msgstr ""
-#: templates/js/translated/stock.js:1495
+#: templates/js/translated/stock.js:1636
msgid "Stock item no longer exists"
msgstr ""
-#: templates/js/translated/stock.js:1518
+#: templates/js/translated/stock.js:1659
msgid "Added"
msgstr ""
-#: templates/js/translated/stock.js:1526
+#: templates/js/translated/stock.js:1667
msgid "Removed"
msgstr ""
-#: templates/js/translated/stock.js:1570
+#: templates/js/translated/stock.js:1708
msgid "Edit tracking entry"
msgstr ""
-#: templates/js/translated/stock.js:1571
+#: templates/js/translated/stock.js:1709
msgid "Delete tracking entry"
msgstr ""
-#: templates/js/translated/stock.js:1715
+#: templates/js/translated/stock.js:1833
msgid "No installed items"
msgstr ""
-#: templates/js/translated/stock.js:1738
+#: templates/js/translated/stock.js:1856
msgid "Serial"
msgstr ""
-#: templates/js/translated/stock.js:1766
+#: templates/js/translated/stock.js:1884
msgid "Uninstall Stock Item"
msgstr ""
-#: templates/js/translated/table_filters.js:43
+#: templates/js/translated/table_filters.js:56
msgid "Trackable Part"
msgstr ""
-#: templates/js/translated/table_filters.js:47
+#: templates/js/translated/table_filters.js:60
msgid "Assembled Part"
msgstr ""
-#: templates/js/translated/table_filters.js:51
+#: templates/js/translated/table_filters.js:64
msgid "Validated"
msgstr ""
-#: templates/js/translated/table_filters.js:59
+#: templates/js/translated/table_filters.js:72
msgid "Allow Variant Stock"
msgstr ""
-#: templates/js/translated/table_filters.js:79
-#: templates/js/translated/table_filters.js:143
+#: templates/js/translated/table_filters.js:92
+#: templates/js/translated/table_filters.js:156
msgid "Include sublocations"
msgstr ""
-#: templates/js/translated/table_filters.js:80
+#: templates/js/translated/table_filters.js:93
msgid "Include locations"
msgstr ""
-#: templates/js/translated/table_filters.js:90
-#: templates/js/translated/table_filters.js:91
-#: templates/js/translated/table_filters.js:314
+#: templates/js/translated/table_filters.js:103
+#: templates/js/translated/table_filters.js:104
+#: templates/js/translated/table_filters.js:327
msgid "Include subcategories"
msgstr ""
-#: templates/js/translated/table_filters.js:101
-#: templates/js/translated/table_filters.js:178
+#: templates/js/translated/table_filters.js:114
+#: templates/js/translated/table_filters.js:191
msgid "Is Serialized"
msgstr ""
-#: templates/js/translated/table_filters.js:104
-#: templates/js/translated/table_filters.js:185
+#: templates/js/translated/table_filters.js:117
+#: templates/js/translated/table_filters.js:198
msgid "Serial number GTE"
msgstr ""
-#: templates/js/translated/table_filters.js:105
-#: templates/js/translated/table_filters.js:186
+#: templates/js/translated/table_filters.js:118
+#: templates/js/translated/table_filters.js:199
msgid "Serial number greater than or equal to"
msgstr ""
-#: templates/js/translated/table_filters.js:108
-#: templates/js/translated/table_filters.js:189
+#: templates/js/translated/table_filters.js:121
+#: templates/js/translated/table_filters.js:202
msgid "Serial number LTE"
msgstr ""
-#: templates/js/translated/table_filters.js:109
-#: templates/js/translated/table_filters.js:190
+#: templates/js/translated/table_filters.js:122
+#: templates/js/translated/table_filters.js:203
msgid "Serial number less than or equal to"
msgstr ""
-#: templates/js/translated/table_filters.js:112
-#: templates/js/translated/table_filters.js:113
-#: templates/js/translated/table_filters.js:181
-#: templates/js/translated/table_filters.js:182
+#: templates/js/translated/table_filters.js:125
+#: templates/js/translated/table_filters.js:126
+#: templates/js/translated/table_filters.js:194
+#: templates/js/translated/table_filters.js:195
msgid "Serial number"
msgstr ""
-#: templates/js/translated/table_filters.js:117
-#: templates/js/translated/table_filters.js:199
+#: templates/js/translated/table_filters.js:130
+#: templates/js/translated/table_filters.js:212
msgid "Batch code"
msgstr ""
-#: templates/js/translated/table_filters.js:128
-#: templates/js/translated/table_filters.js:304
+#: templates/js/translated/table_filters.js:141
+#: templates/js/translated/table_filters.js:317
msgid "Active parts"
msgstr ""
-#: templates/js/translated/table_filters.js:129
+#: templates/js/translated/table_filters.js:142
msgid "Show stock for active parts"
msgstr ""
-#: templates/js/translated/table_filters.js:134
+#: templates/js/translated/table_filters.js:147
msgid "Part is an assembly"
msgstr ""
-#: templates/js/translated/table_filters.js:138
+#: templates/js/translated/table_filters.js:151
msgid "Is allocated"
msgstr ""
-#: templates/js/translated/table_filters.js:139
+#: templates/js/translated/table_filters.js:152
msgid "Item has been allocated"
msgstr ""
-#: templates/js/translated/table_filters.js:144
+#: templates/js/translated/table_filters.js:157
msgid "Include stock in sublocations"
msgstr ""
-#: templates/js/translated/table_filters.js:149
+#: templates/js/translated/table_filters.js:162
msgid "Show stock items which are depleted"
msgstr ""
-#: templates/js/translated/table_filters.js:154
+#: templates/js/translated/table_filters.js:167
msgid "Show items which are in stock"
msgstr ""
-#: templates/js/translated/table_filters.js:158
+#: templates/js/translated/table_filters.js:171
msgid "In Production"
msgstr ""
-#: templates/js/translated/table_filters.js:159
+#: templates/js/translated/table_filters.js:172
msgid "Show items which are in production"
msgstr ""
-#: templates/js/translated/table_filters.js:163
+#: templates/js/translated/table_filters.js:176
msgid "Include Variants"
msgstr ""
-#: templates/js/translated/table_filters.js:164
+#: templates/js/translated/table_filters.js:177
msgid "Include stock items for variant parts"
msgstr ""
-#: templates/js/translated/table_filters.js:168
+#: templates/js/translated/table_filters.js:181
msgid "Installed"
msgstr ""
-#: templates/js/translated/table_filters.js:169
+#: templates/js/translated/table_filters.js:182
msgid "Show stock items which are installed in another item"
msgstr ""
-#: templates/js/translated/table_filters.js:174
+#: templates/js/translated/table_filters.js:187
msgid "Show items which have been assigned to a customer"
msgstr ""
-#: templates/js/translated/table_filters.js:194
-#: templates/js/translated/table_filters.js:195
+#: templates/js/translated/table_filters.js:207
+#: templates/js/translated/table_filters.js:208
msgid "Stock status"
msgstr ""
-#: templates/js/translated/table_filters.js:203
+#: templates/js/translated/table_filters.js:216
msgid "Has purchase price"
msgstr ""
-#: templates/js/translated/table_filters.js:204
+#: templates/js/translated/table_filters.js:217
msgid "Show stock items which have a purchase price set"
msgstr ""
-#: templates/js/translated/table_filters.js:213
+#: templates/js/translated/table_filters.js:226
msgid "Show stock items which have expired"
msgstr ""
-#: templates/js/translated/table_filters.js:219
+#: templates/js/translated/table_filters.js:232
msgid "Show stock which is close to expiring"
msgstr ""
-#: templates/js/translated/table_filters.js:250
+#: templates/js/translated/table_filters.js:263
msgid "Build status"
msgstr ""
-#: templates/js/translated/table_filters.js:269
-#: templates/js/translated/table_filters.js:286
+#: templates/js/translated/table_filters.js:282
+#: templates/js/translated/table_filters.js:299
msgid "Order status"
msgstr ""
-#: templates/js/translated/table_filters.js:274
-#: templates/js/translated/table_filters.js:291
+#: templates/js/translated/table_filters.js:287
+#: templates/js/translated/table_filters.js:304
msgid "Outstanding"
msgstr ""
-#: templates/js/translated/table_filters.js:315
+#: templates/js/translated/table_filters.js:328
msgid "Include parts in subcategories"
msgstr ""
-#: templates/js/translated/table_filters.js:319
+#: templates/js/translated/table_filters.js:332
msgid "Has IPN"
msgstr ""
-#: templates/js/translated/table_filters.js:320
+#: templates/js/translated/table_filters.js:333
msgid "Part has internal part number"
msgstr ""
-#: templates/js/translated/table_filters.js:325
+#: templates/js/translated/table_filters.js:338
msgid "Show active parts"
msgstr ""
-#: templates/js/translated/table_filters.js:333
+#: templates/js/translated/table_filters.js:346
msgid "Stock available"
msgstr ""
-#: templates/js/translated/table_filters.js:349
+#: templates/js/translated/table_filters.js:362
msgid "Starred"
msgstr ""
-#: templates/js/translated/table_filters.js:361
+#: templates/js/translated/table_filters.js:374
msgid "Purchasable"
msgstr ""
-#: templates/js/translated/tables.js:342
+#: templates/js/translated/tables.js:357
msgid "Loading data"
msgstr ""
-#: templates/js/translated/tables.js:345
+#: templates/js/translated/tables.js:360
msgid "rows per page"
msgstr ""
-#: templates/js/translated/tables.js:348
+#: templates/js/translated/tables.js:363
msgid "Showing"
msgstr ""
-#: templates/js/translated/tables.js:348
+#: templates/js/translated/tables.js:363
msgid "to"
msgstr ""
-#: templates/js/translated/tables.js:348
+#: templates/js/translated/tables.js:363
msgid "of"
msgstr ""
-#: templates/js/translated/tables.js:348
+#: templates/js/translated/tables.js:363
msgid "rows"
msgstr ""
-#: templates/js/translated/tables.js:354
+#: templates/js/translated/tables.js:369
msgid "No matching results"
msgstr ""
-#: templates/js/translated/tables.js:357
+#: templates/js/translated/tables.js:372
msgid "Hide/Show pagination"
msgstr ""
-#: templates/js/translated/tables.js:360
+#: templates/js/translated/tables.js:375
msgid "Refresh"
msgstr ""
-#: templates/js/translated/tables.js:363
+#: templates/js/translated/tables.js:378
msgid "Toggle"
msgstr ""
-#: templates/js/translated/tables.js:366
+#: templates/js/translated/tables.js:381
msgid "Columns"
msgstr ""
-#: templates/js/translated/tables.js:369
+#: templates/js/translated/tables.js:384
msgid "All"
msgstr ""
-#: templates/navbar.html:13
+#: templates/navbar.html:19
msgid "Toggle navigation"
msgstr ""
-#: templates/navbar.html:33
+#: templates/navbar.html:39
msgid "Buy"
msgstr ""
-#: templates/navbar.html:43
+#: templates/navbar.html:51
msgid "Sell"
msgstr ""
-#: templates/navbar.html:55
-msgid "Scan Barcode"
-msgstr ""
-
-#: templates/navbar.html:77 users/models.py:39
+#: templates/navbar.html:87 users/models.py:39
msgid "Admin"
msgstr ""
-#: templates/navbar.html:79
+#: templates/navbar.html:89
msgid "Logout"
msgstr ""
-#: templates/navbar.html:81 templates/registration/login.html:89
+#: templates/navbar.html:91 templates/registration/login.html:89
msgid "Login"
msgstr ""
-#: templates/navbar.html:104
+#: templates/navbar.html:114
msgid "About InvenTree"
msgstr ""